テンプレートマッチングの前に必要な画像処理操作


13

まあ、これは私が画像処理クラスを取っていないことを示しているかもしれません。

画像内のオブジェクトに一致するこのテンプレートがあります。しかし、たとえば画像内の実際のオブジェクトは、2番目の画像ではなく、そのように見えます。2番目のような画像をテンプレートマッチングの準備ができるようにするには、どのような操作が必要ですか?参考までに、3番目の画像は理想的なマッチングを示しています。

別のアイデアでは、テンプレートを画像に合わせます。つまり、テンプレートの座標と一致するように、画像の4つのコーナー座標を指定します。次に、テンプレートを領域に合わせる方法を計算します。

更新:問題は解決しました。以下で選択した回答に感謝します。画像にテンプレートを適用することに成功しました。最後の画像は結果を示しています。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください ここに画像の説明を入力してください


あなたはその白いグリッドと一致しませんよね?2番目の画像の実際のカラフルなグリッドと一致させたいですか?
endolith

@endolithどちらの方法でもいいと思います。
泰-宋新

アルゴリズムの基本概念を共有できますか?チャートについても同じことをする必要があります。
ギラッド

回答:


8

投稿したサンプル画像には比較的強い遠近感があり(表面法線の方向からまっすぐに画像化されていない)、ブロック処理を使用するテンプレートマッチング技術で問題を引き起こす可能性があります。強い遠近法で画像を撮影する必要があると思いますので、最初に行うことは、遠近法投影を削除し、補正された画像(「直線画像」)を生成する画像変換を推定することです。

形状がわかっている場合の透視投影の修正

前処理の最終的な目標は、カラーチャートの背景である灰色の長方形の角を見つけることです。私は、単に一定の値でしきい値処理することから始めました。文献/ウェブには、画像に不均一な照明がある場合にしきい値を設定する方法に関する多くの情報がありますが、可能であれば、照明が比較的均等になるようにイメージング設定を修正してください。

定値でしきい値設定

カラーチャートは画面のかなりの部分を占めると想定したため、おそらく画像の最大の連続領域です。多くの白黒のラベル付け関数が存在し(MATLABs bwlabel、IPPs LabelMarkers、OpenCVには外部ライブラリcvblobがあります)、それぞれの個別の接続された領域に独自のインデックスを与えます。ラベル付け後、ヒストグラムを使用して接続コンポーネントの面積を計算し、面積が最大のコンポーネントを選択できます。

最大のブロブを見つける

通常、コンポーネントに穴がないようにコンポーネントを塗りつぶすことをお勧めします。これにより、エッジピクセルの数が減ります。

ブロブを埋める

エッジ検索演算子を使用して(グラデーションベースの方法を使用しましたが、黒ピクセルに接続された白ピクセルをたどってエッジをトレースすることもできます)、境界に属するピクセルを取得します。

エッジを見つける

関心のあるオブジェクトは長方形なので、ロバストラインフィッティング(RANSAC)を使用して4つのラインをエッジピクセルに合わせました。新しいラインを見つけた後、見つかったラインに近いポイントをすべて削除しました。これにより、後続のフィット操作でオブジェクトの他のエッジが強制的に返されます。最後に、すべてのエッジが見つかったら、一連の線の間のすべての可能な交差を計算しました。結果のポイントのセットから、画像の外側のすべてのポイントを削除しました。

HH

バツ=Hバツ

次に、この変換マトリックスを使用して、カラーチャートが表面法線の方向からまっすぐに画像化されるように、元の画像を変換できます。

線を端に合わせる

H

それでもテンプレートマッチングを行いたい場合は、適切なテンプレートマッチング方法を使用できます。画像はすでに修正されているため、メソッドは回転/スケール不変である必要はありません。

正しい視点


1

エッジ検出から始めます。次に、ハフ変換を使用して直線を検出します。次に、どの線が平行で、どの線が垂直であるかを把握します。次に、射影変換を推定して、垂直になるはずの線が実際に垂直になるようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.