【画像処理】バイキュービック補間法の原理・計算式

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

バイキュービック補間法(Bicubic interpolation)

前回記事「バイリニア補間法による画像拡大の原理」では、バイリニア補間法について紹介しました。
バイキュービック補間法では、周囲16画素の画素値を利用します。
そして、距離に応じて関数を使い分け、加重平均を求めます。

最近傍法やバイリニア補間法よりも計算処理は重いですが、画質の劣化を抑えることが出来ます。

計算方法

拡大画像の座標(x', y')における画素値を求める手順は以下の通りです。

①拡大画像の座標(x', y')を拡大率\alphaで割り、(x'/\alpha ,y'/\alpha )を求めます。

②元画像における(x'/\alpha ,y'/\alpha )の周囲16画素の画素値を取得します。

③周囲16画素それぞれと(x'/\alpha ,y'/\alpha )との距離dを求めます。

④周囲16画素の画素値の加重平均を拡大画像の座標(x', y')における画素値とします。
このとき、加重平均の計算に用いる各画素に対する重みkは、距離dに応じて以下の式で求めます。

(1) \begin{eqnarray*} k = \begin{cases} 1-(a+3)d^2+(a+2)d^3 \hspace{20px} (0\leq d<1)\\ -4a+8ad-5ad^2+d^3 \hspace{25px} (1\leq d<2)\\ 0 \hspace{75px} (d \geq 2.0 ) \end{cases} \end{eqnarray*}

a-0.5\sim -1.0の値を与えます。
aが小さくなるほど、シャープ化が強くなります。

関連記事
1 【画像処理入門】アルゴリズム&プログラミング
2 【Python/OpenCV】バイキュービック補間法で拡大・縮小

シェア&フォローお願いします!