重要度マップやそこで広く使われている顕著性マップは、「多くの人なら、この領域だけを縦横比を保持しておけば、リターゲティング処理後も不自然な画像見えない」という前提の元で計算した、「主観的な」元画像の視覚的重要度マップです。これを裏返すと、人間全員の平均的視覚感覚をモデル化した「客観的な」視覚モデルで重要度マップを計算しているので、必ずしも特定のユーザーの主観を反映したものにはなっていません。
そこで重要度マップに主観を反映する場合には、自動計算により出力された重要度マップを手作業で調整してからリターゲティング処理を行う、という処理手順を追加します。例えば、視線計測システムなどを用いて実際の視線から計測した顕著性の高い領域を顕著性マップに追加したり、画像上に重要度の高い領域を手作業でユーザーが指定する、という感じの操作で実現します(既出の動画では、後者の様子が含まれていますので参照してみてください)。
リターゲティング手法1:「シーム・カービング(Seam Curving)」
一番人気でよく使われているリターゲティング方法が、この「シーム・カービング」です。シーム・カービングは、「シーム(=縫い目)」と呼ばれる「重要度マップ中の重要度の低いところを結んだ1本の線(つまりは最小重要度となる経路)」を作り、その線ピクセルを除去する動作を、画像が目標のサイズになるまで繰り返すというリターゲティング手法です。
以下の動画は、以前にリターゲティングの最初の回で紹介した動画の再掲です。この動画はシーム・カービングを最初に提案した研究グループが、論文発表当時に公開したデモ動画です(2007年のSIGGRAPHで発表)。
動画:Image Resizing by Seam Carving |
シーム・カービングでは、まず画像の幅(もしくは高さ)を1ピクセル減らすために1つのシームを作ります。次に、そのシーム上のピクセルを全て削除し、画像の幅(もしくは高さ)が1ピクセル減った画像を作ります。この動作を目標とする画像のサイズになるまで繰り返す事で、リターゲティング処理が達成されます。
以下の図の赤線がシームの例です。シームは8方向のどことつながっているかで連結したピクセルのグラフで、画像の幅を減らしたい場合は画像の一番上から下につないだシームを作成し、一方画像の高さを減らしたいときは画像の左から右でつないだシームを作成し、その作成したシーム上のピクセルを削除します。(上記の動画中の2:03ごろ以降、毎回の繰り返しで算出されたシームの可視化)
各繰り返しにおいて、シームは「どのような経路でシームを画像の上から下(もしくは左から下)につなげいでいけば、シーム上の各ピクセルにおける重要度の和値が一番低くなるか」という基準を用いて、最適なシームの経路を探索して自動決定します。
こうして全自動でシーム・カービングを行ってもよいのですが、リターゲティングの概要の回でも紹介したように、「人の感覚に沿った重要度マップ」を用いたい場合は、手作業による重要度マップの編集処理を行い、それを用いてシーム・カービングを行うということも考えられます。
例えば、自動作成した重要度マップだと画像中の顔の領域がつぶれてしまったりしますが、画像中の顔領域を指定することで保持する処理(上記の動画中3:19ごろから)や、逆に必要のない人物を重要度の高い領域であると指定することで消去する処理(上記の動画中3:58ごろから)により、より良いリターゲティングが行われやすい重要度マップをマニュアルで編集することも可能なわけです。シーム・カービングの発表当初(2007年)では、このように手作業で重要度マップの編集をしていますが、以前紹介したように「物体性マップ」を自動作成すれば、これらの物体の存在する領域を自動的に重要度マップに反映するという手法も近年では実現されています。
ここまでの話は実際の例で見るとわかりやすいので、以下の図のようにエッジ画像を重要度マップに採用した場合、自動的に選ばれたシームがどのような経路になるかをみておきましょう。
この例では、エッジを重要度と見なしているので、エッジの値が大きい人物領域や山の輪郭、道路の境界線などがなるべく避けられた経路がシームとして選択されていることがわかります。さらに言うと、人と自転車の影も、エッジが強いのでシームの経路からは避けられることが多いので、リターゲット後にも影領域が保持されていることがわかります。