【Python/OpenCV】画像の拡大・縮小(最近傍補間法、バイリニア補間法、バイキュービック補間法)

Python版OpenCVのcv2resizeで最近傍補間法、バイリニア補間法、バイキュービック補間法を実装し、画像のサイズを変更(拡大・縮小)する方法をソースコード付きで解説します。

## 【画像の拡大・縮小】最近傍補間法

画像を拡大・縮小するときの画素の埋め方の1つに「最近傍補間法」があります。
原理については「最近傍補間法による画像拡大の原理」で紹介しています。

今回は、以下の2通りの方法で処理を実装してみました。

方法①・・・NumPyでアルゴリズムを書いて実装
方法②・・・OpenCV(cv2.resize)で実装

動画解説

cv2.resize

dst = cv2.resize(src, dsize[, interpolation])
パラメータ名 説明
src 入力画像
dsize 変更後の画像サイズ
interpolation 補間法(最近傍補間ならcv2.INTER_NEAREST)
dst 出力画像

サンプルコード

サンプルプログラムのソースコードです。(画像サイズを2倍)

方法①


方法①


サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)

## 【画像の拡大・縮小】バイリニア補間法

画像を拡大・縮小するときの画素の埋め方の1つに「バイリニア補間法」があります。
原理については「バイリニア補間法による画像拡大の原理」で紹介しています。

今回は、以下の2通りの方法で処理を実装してみました。

方法①・・・NumPyでアルゴリズムを書いて実装
方法②・・・OpenCV(cv2.resize)で実装

動画解説

cv2.resize

dst = cv2.resize(src, dsize[, interpolation])
パラメータ名 説明
src 入力画像
dsize 変更後の画像サイズ
interpolation 補間法(バイリニア補間ならcv2.INTER_LINEAR)
dst 出力画像

ソースコード

サンプルプログラムのソースコードです。(画像サイズを2倍)

方法①


方法①


実行結果

サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)

最近傍補間法でリサイズした時に比べて輪郭のギザギザが滑らかになります。

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

## 【画像の拡大・縮小】バイキュービック補間法

画像を拡大・縮小するときの画素の埋め方の1つに「バイキュービック補間法」があります。
原理については「バイキュービック補間法による画像拡大の原理」で紹介しています。

今回は、以下の2通りの方法で処理を実装してみました。

方法①・・・NumPyでアルゴリズムを書いて実装
方法②・・・OpenCV(cv2.resize)で実装

動画解説

cv2.resize

dst = cv2.resize(src, dsize[, interpolation])
パラメータ名 説明
src 入力画像
dsize 変更後の画像サイズ
interpolation 補間法(バイキュービック補間ならcv2.INTER_CUBIC)
dst 出力画像

サンプルコード

サンプルプログラムのソースコードです。(画像サイズを2倍)

方法①


方法①


実行結果

サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)

最近傍補間法でリサイズした時に比べて輪郭のギザギザが滑らかになっていることがわかります。

【Python/OpenCV】画像の拡大・縮小【バイキュービック補間法】
Python版OpenCVのcv2resizeでバイキュービック補間法を実装し、画像のサイズを変更(拡大・縮小)する方法をソースコード付きで解説します。
【PythonでOpenCV入門】使い方とサンプル集
OpenCV(Intel Open Source Computer Vision Library)とは、インテル社で開発された画像処理・画像認識用のオープンソースライブラリです。Python/C++/Java/Android/Node.js...
【PythonでOpenCV入門】使い方とサンプル集
OpenCV(Intel Open Source Computer Vision Library)とは、インテル社で開発された画像処理・画像認識用のオープンソースライブラリです。Python/C++/Java/Android/Node.js...

コメント