学習記録

たまには誰かの役にたったらいいな

バイリニア補間法 OpenCV with C++

バイリニア補間法をOpenCVを使ってC++で実装した.
ソースコードGithub上にあげてある.

バイリニア補間法とは

コンピューターによる画像処理で、画像の回転・拡大・変形を行うときの画素補間法の一。求めたい画素の周辺の2×2画素(4画素)の輝度値を参照し、その加重平均値を用いて補間する。双線形補間法 参考

コードの実行

CLion のプロジェクトとなっているので, CLionがあればすぐに実行できる. 無い場合はCMakeやあるいはコードだけコピペしてコンパイルすることでもできるはず.

コードの流れ

  1. 画像の読み込み (as image)
  2. 入力画像のグレースケール化 (as gray)
  3. グレースケール化画像を 1 /1.25 に縮小 (as output)
  4. それぞれの画像を出力

意外な盲点

Matlab便利すぎてすごいけど, OpenCVと併用する場合とか, 書き換える時とかに注意しないといけない. MatlabOpenCVでは若干デフォルトの設定が違う. OpenCVではアンチエイリアシングが実行されていないのである.

Matlab imresize() : イメージのサイズ変更

イメージ縮小時のアンチエイリアシングの実行。'Antialiasing' と論理ブール値 true または false で構成されるコンマ区切りのペアとして指定します。既定値は内挿法に依存します。メソッドが最近傍 ('nearest') の場合、既定値は false です。その他すべての内挿法の場合、既定値は true です。

参考 : MATLAB vs C++ vs OpenCV - imresize - Stack Overflow

main.cpp