画像モーフィング特論

画像が気楽に使えないはてなでの解説は困難を極めることに気付いた(笑
御用かお急ぎのある方は東大新領域創成科学研究科西田研 小磯さんのページのリンク集をどうぞ.私はそこから辿れるG. Wolberg先生のサーヴェイが一番とっかかりによいと思った.
2つの(同じ大きさの)モノクロ画像があったとき,単にpixel毎に両者の「中間の明るさ」を求めることは容易だ.この処理を「ディゾルヴィングdisolving」と呼ぶ.例えば mid[row][col] = t*src[row][col] + (1-t)*dst[row][col]; のようなコードを書けば次のような結果を得る*1

         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■
         一一一一一一一一 三三三三三三三三 轟轟轟轟轟轟轟轟 ■■■■■■■■ 

カラー画像に対応させるには,単にR成分,G成分,B成分各々について同様の処理を行うだけだ.
もちろんこれだけではモーフィングとは言えない.次のようなものを見せられても大して面白くない.

  ■■■■     轟轟轟轟     三三三三     一一一一           
  ■  ■     轟  轟     三  三     一  一           
  ■  ■   一一■一一■一一 三三■三三■三三 轟轟■轟轟■轟轟 ■■■■■■■■
  ■  ■   一 轟  轟 一 三 三  三 三 轟 一  一 轟 ■      ■
  ■  ■   一 轟  轟 一 三 三  三 三 轟 一  一 轟 ■      ■
  ■  ■   一一■一一■一一 三三■三三■三三 轟轟■轟轟■轟轟 ■■■■■■■■
  ■  ■     轟  轟     三  三     一  一           
  ■■■■     轟轟轟轟     三三三三     一一一一            

ま,いわゆる「フェードイン/アウト」はこれ(だけ)により実現される.それなりの使い道はあるという訳だ.しかしモーフィングを実現するには,これを「ワーピングwarping」と組み合わせなければならない.難しいのはそちらの方だ.

*1:「一」や「轟」は単に{白,黒}っぽい字を選んだだけ.遠くから見てほしい.