画像モーフィング特論

前回でちらっと匂わせたのだが,「x座標を2倍に」という変換をするとき,実際に元の画像のpixelのx座標を2倍にして変換先画像のpixelを決定していくとギャップが生じてしまう.ここは実は逆関数を使う必要がある.先画像の各pixelについて「x座標を1/2にして」元画像のどのpixelに対応していたのかを調べ,そこに従って色を決める.すなわち先画像の(x, y)=(2, 1)なるpixelの色を決める基準は元画像の(1, 1)で...という具合だ.
すると当然先画像のpixel (3, 1)は元画像のpixel (1.5, 1)で決めるのか? 何じゃそりゃ.... ということになる.ここではとりあえず小数点第1位の四捨五入で(2, 1)から決めることにしよう.

 12345678 12345678 
1 ■    ■ 1  ■■    1
2 ■    ■ 2  ■■    2
3 ■    ■ 3  ■■    3
4  ■  ■  4    ■■  4
5  ■  ■  5    ■■  5
6  ■  ■  6    ■■  6
7  ■  ■  7    ■■  7
8   ■■   8      ■■8
 12345678 12345678 

千切れてはいない.しかし四捨五入の結果,先画像のpixel (3, 1)と(4, 1)の両方とも元画像のpixel (2, 1)から色が決まり,"" で塗りつぶした点が増えて線の太さが倍になってしまった.