はじめに
CenSurE(Center Surround Extrema)検出器は、画像内の特徴点を効率的に検出するためのアルゴリズムです。scikit-imageライブラリのskimage.feature.CENSUREモジュールを使用することで、スケール不変の特徴点検出を行うことができます。本記事では、CenSurE検出器の基本原理と、Pythonでの実装方法について解説します。
コード

解説
モジュールのインポートなど
画像の読み込み
サンプル画像を指定のウェブサイトからダウンロードし、plt.imread()関数で読み込みました。その後、rgb2gray関数を使用して画像をグレースケールに変換しました。


収縮、回転、移動した画像の生成
上記のコードにより、収縮、回転、移動した画像を取得できます。
CENSURE による特徴点検出
CENSURE()をdetectorとしてセットし、detector.detect(画像)メソッドを使用することで画像内の特徴点を検出できます。
結果の表示

各画像の特徴点を散布図で表示しました。特徴点の座標(x,y)は、(detector.keypoints[:, 1], detector.keypoints[:, 0])で取得できます。 散布図の点の大きさは、2 ** detector.scalesという計算式を使い、scalesの値に応じて変化させています。
また、facecolors=’none’で散布図の点の内部を透明にし、edgecolors=’m’,linewidths=10で点の輪郭の色をマゼンタに、線幅を10に設定しました。
CENSUREのmodeを’Octagon’にしたときの結果

CENSUREのmodeを’STAR’にしたときの結果

まとめ
scikit-imageのCENSURE検出器を使用することで、画像内の特徴点を効率的に検出できることがわかりました。異なるスケールでの検出が可能であり、パラメータ調整によって検出精度を向上させることができます。画像認識や特徴量抽出など、様々な画像処理タスクにおいて有用なツールとなるでしょう。
コメント