【画像処理】最近傍補間法の原理・計算式

この記事では、画像を拡大・縮小・回転したときなどに利用する補間法の1つである「最近傍法補間法」の原理や計算方法についてまとめました。

【はじめに】最近傍法(Nearest neighbor)

最近傍法(Nearest neighbor・ニアレストネイバー法)は、画像を拡大した際に最近傍にある画素をそのまま使う線形補間法です。
単純なアルゴリズムなので、他の補間法と比較して処理速度が速い反面、画質が劣化しやすくなります。

【計算方法】最近傍法の仕組み

拡大前の元画像をI、拡大率\alphaで拡大後の画像をI'とします。
このとき、拡大後の画素値は次の式で求めます。

(1)   \begin{eqnarray*} I'(x, y)=I([\frac{x}{\alpha}], [\frac{y}{\alpha}]) \end{eqnarray*}

[]は四捨五入を表しています。
つまり、「拡大後の座標÷拡大率」を四捨五入して得られた座標にある元画像の画素値をそのまま利用します。

計算例

次のような入力画像Iを1.5倍に拡大した画像I'について考えます。

(2)   \begin{eqnarray*} I= \left[ \begin{array}{ccccc} 50 & 100 \\ 150 & 200 \\ \end{array} \right] \end{eqnarray*}

拡大後の画素値を最近傍法で求まると次のようになります。

(3)   \begin{eqnarray*} I'(0,0)=I([\frac{0}{1.5}], [\frac{0}{1.5}])=I(0,0)=50 \\ I'(1,0)=I([\frac{1}{1.5}], [\frac{0}{1.5}])=I(1,0)=100 \\ I'(2,0)=I([\frac{2}{1.5}], [\frac{0}{1.5}])=I(1,0)=100 \\ I'(0,1)=I([\frac{0}{1.5}], [\frac{1}{1.5}])=I(0,1)=150 \\ I'(1,1)=I([\frac{1}{1.5}], [\frac{1}{1.5}])=I(1,1)=200 \\ I'(2,1)=I([\frac{2}{1.5}], [\frac{1}{1.5}])=I(1,1)=200 \\ I'(0,2)=I([\frac{0}{1.5}], [\frac{2}{1.5}])=I(0,1)=150 \\ I'(1,2)=I([\frac{1}{1.5}], [\frac{2}{1.5}])=I(1,1)=200 \\ I'(2,2)=I([\frac{2}{1.5}], [\frac{2}{1.5}])=I(1,1)=200 \\ \end{eqnarray*}

よってI'

(4)   \begin{eqnarray*} I= \left[ \begin{array}{ccccc} 50 & 100 & 100 \\ 150 & 200 & 200 \\ 150 & 200 & 200 \\ \end{array} \right] \end{eqnarray*}

となります。

【注意】
拡大率によっては四捨五入した際に存在しない座標になる場合もあります。
その場合、近傍にある利用可能な画素で代用するなど対策を考える必要があります。

【画像処理入門】アルゴリズム&プログラミング
この記事では、画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。

コメント