【Python】テンプレートマッチング(SSD)の実装例

スポンサーリンク
ビッグバナー(上2)

この記事では、Pythonで画像のテンプレートマッチング(類似度尺度SSD)を行う方法をソースコード付きで解説します。

テンプレートマッチング(SSD)

テンプレートマッチング(Template matching)とは、入力画像中からテンプレート画像(部分画像)と最も類似する箇所を探索する処理です。
原理については下記事で解説しています。
【参考】テンプレートマッチングの原理・計算式・例題(SAD, SSD, NCC)

■SSD
SSD(Sum of Absolute Difference)では、「画素値の差分の二乗値の和」で類似度を評価します。
この場合も値が最小になる場所が類似度が最も高いことになります。

今回はSSDを類似度尺度とするテンプレートマッチングをPythonで実装しました。
画像の読み書きの部分に「OpenCV」を使っています。
OpenCVにはテンプレートマッチングを行うメソッドがありますが、原理の理解を深めるためにSSDの計算部分はNumPyで実装しています。

ソースコード(Python3)

サンプルプログラムのソースコードです。

※動作には、OpenCVとNumPyライブラリが必要です。
■ライブラリの導入方法・Pythonの基礎はこちら。
【Python3】OpenCV3をインストール(Windows編)
NumPyのインストール (Windows、Linux、Ubuntu)
Python入門 サンプル集

実行結果

サンプルプログラムの実行結果です。

■左から入力画像(input.jpg)、テンプレート画像(temp.jpg)、出力画像(result.jpg)

お借りした画像:プロ生ちゃん(暮井 慧)

【関連記事】
【画像処理入門】アルゴリズム&プログラミング

スポンサーリンク
レクタングル(下2)
レクタングル(下2)

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