この記事では、画像を拡大・縮小・回転したときなどに利用する補間法の1つである「バイキュービック補間法」の原理や計算方法についてまとめました。
バイキュービック補間法(Bicubic interpolation)
本ページの内容は以下動画で解説しています。
前回記事「バイリニア補間法による画像拡大の原理」では、バイリニア補間法について紹介しました。
バイキュービック補間法では、周囲16画素の画素値を利用します。
そして、距離に応じて関数を使い分け、加重平均を求めます。
最近傍法やバイリニア補間法よりも計算処理は重いですが、画質の劣化を抑えることが出来ます。
【計算方法】バイキュービック補間法の仕組み
拡大画像の座標における画素値を求める手順は以下の通りです。
①拡大画像の座標を拡大率で割り、を求めます。
②元画像におけるの周囲16画素の画素値を取得します。
③周囲16画素それぞれととの距離を求めます。
④周囲16画素の画素値の加重平均を拡大画像の座標における画素値とします。
このとき、加重平均の計算に用いる各画素に対する重みは、距離に応じて以下の式で求めます。
(1)
はの値を与えます。
が小さくなるほど、シャープ化が強くなります。
関連ページ
PythonとOpenCVを用いてバイキュービック補間法を実装する方法について以下ページで解説しています。
【Python/OpenCV】バイキュービック補間法で画像の拡大・縮小【cv2.resize】
Python版OpenCVのcv2resizeでバイキュービック補間法を実装し、画像のサイズを変更(拡大・縮小)する方法をソースコード付きで解説します。
PythonとOpenCVを用いた画像処理全般については以下ページで解説しています。
【Python版OpenCV入門】画像処理の基礎〜応用例までサンプルコード付きで徹底解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
他の画像処理アルゴリズムについては、以下ページでまとめています。
【画像処理入門】アルゴリズム&プログラミング
この記事では、画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。
コメント
いつも参考にさせて頂いています。ありがとうございます。
式(1)の2行目は
-4a + 8ad – 5ad^2 + ad^3 …(+d^3 -> +ad^3)
ではないでしょうか?