【画像処理】バイリニア補間法の原理・計算式

画像を拡大・縮小・回転したときなどに利用する補間法の1つである「バイリニア補間法」の原理や計算方法についてまとめました。

バイリニア補間法(Bi-linear interpolation)とは

本ページの内容は以下動画で解説しています。

バイリニア補間法(Bi-linear interpolation)は、周囲の4つの画素を用いた補間法です。
最近傍法よりも計算処理は重いですが、画質の劣化を抑えることが出来ます。

バイリニア補間法を用いて、拡大画像の座標(x', y')における画素値を求める手順は以下の通りです。

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

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

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

④距離によって重み付け(0~1)を行います。(距離が小さいほど重みは大きい)

⑤周囲4画素の画素値の加重平均を拡大画像の座標(x', y')における画素値とします。

(1)   \begin{eqnarray*} I'(x', y')&=&(1-dx)(1-dy)I(x,y)+dx(1-dy)I(x+1,y)\\ &+&(1-dx)dyI(x,y+1)+dxdyI(x+1,y+1)\\ \end{eqnarray*}

関連ページ

PythonとOpenCVを用いてバイリニア補間法を実装する方法について以下ページで解説しています。

【Python/OpenCV】バイリニア補間法で画像の拡大・縮小(cv2.resize)
Python版OpenCVのcv2.resizeでバイリニア補間法を実装し、画像のサイズを変更(拡大・縮小)する方法をソースコード付きで解説します。

PythonとOpenCVを用いた画像処理全般については以下ページで解説しています。

【Python版OpenCV入門】画像処理の基礎〜応用例までサンプルコード付きで徹底解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。

他の画像処理アルゴリズムについては、以下ページでまとめています。

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

コメント