内挿法
ようやく画像処理の授業が幾何学変換に入り、
面白くなってきたので、ちょっとメモ書き。
画像の拡大処理について考えてみます。
拡大をする場合には、
- 拡大後のサイズを持った画像のバッファを作る
- そのサイズで(x,y)のループをする
- 元の画像に対応する色をセットする
という流れになるのですが、
ポイントは、
「元の画像に対応する色をセットする」
というところですね。
画像を拡大することを「順変換」というのですが、
拡大後の画像から元の画像に変換することを「逆変換」といいます。
先ほどのループの
「元の画像に対応する色をセットする」
という部分は、
言い換えると、
「拡大後の画像の座標から、それに対応する元の画像の座標にある色を取得する」
という処理と言えるます。
つまり「逆変換」だったのです!
で、ようやく「内挿法」についてなのですが…(やっとかい!
以上の方法で、拡大画像から単純に「逆変換」を行うと、
ちょっと問題があります。
例えば、2倍に拡大後の座標で、
(0, 0)であれば、(0/2, 0/2)で(0, 0)にある色をセットすればいいことになります。
しかし、(1, 1)を逆変換すると(1/2, 1/2)で(0.5, 0.5)となり、
例のように歯抜けの画像になってしまいます。
これは見苦しいので、この歯抜けをなんとかしなければなりませんよね。
そこで発明されたのが、「内挿法」なのです!(シャキーン)
内挿法には、
- 最近隣内挿法
- 共一次内挿法
という方法があります。
なんだか立派な名前がついていますが、
最近隣内挿法は、小数を四捨五入する方法で、
共一次内挿法は、周りの色の重みを取る方法です。
(なーんだ)
共一次内挿法について説明すると、
例えば、逆変換後の座標が(1.3, 1.6)であった場合、
元画像の(1, 1)にある色に、重み[0.3*0.6]を掛け、
(2, 1)に[(1-0.3)*0.6]
(1, 2)に[0.3*(1-0.6)]
(2, 2)に[(1-0.3)*(1-0.6)]
という計算により求めた色を全て足した色が、変換後の色となる方法です。
ようは、切捨て・切り上げした値を重みとする方法です。
ということで、次回は回転処理についてです。
(つづく)