8

私は、エッジに沿ってカーブを検索するターゲット画像と、カーブを含むテンプレート画像を持っています。私が達成する必要があるのは、ターゲット画像内のテンプレート画像内の曲線と、スコアに基づいて、マッチがあるかどうかを調べることです。これには、カーブの回転とサイズ変更も含まれます。ターゲット画像は、Canny Edge検出器の出力となります。画像のエッジにカーブパターンを一致させる

私はOpenCVを使うことを考えています(PythonやProcessing/Javaを使って、あるいはC言語を使って必要な機能にアクセスすることが制限されていれば実用的で効率的です)このジョブを実行するために使用できるOpenCVの関数(またはそれらの組み合わせ)。私はOpenCVのドキュメントを読んでいて、最初にContoursがこの仕事をすることができると考えましたが、すべての例では開いた曲線とエッジの一部を一致させる必要がある私の場合とは対照的に、

OpenCVを使用するか、または既知のコードやアルゴリズムを使用してこれを行う方法はありますか?

は、ここではいくつかの画像は、問題を説明するために、次のとおりです。

Template image containing the curve to be searched for

Input image to be searched for the template curve and to be matched to its edges; this can also be an edge-image, the output of a Canny Edge detector rather than the unprocessed input image

Resulting match - includes rotation and resizing

答えて

2

私が最初に考えたのはGeneralized Hough Transformました。しかし、私はそのための良い実装を知らない。

私は、キャニーエッジ画像で最初にSIFTまたはSURFを試してみます。通常は1d等高線ではなく2d区域を見つけるのに使用されますが、輪郭線の周りに最小限の境界ボックスを置き、それを検索パターンとして使用すると機能します。 Features2D + Homography to find a known object

問題は、良好なエッジ画像を取得することができる、バック業者黒形状は邪魔かもしれない:

OpenCVのは、そのための実装を有しています。

はまた、このstackoverflowの答えを参照してください。 Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition

+0

おかげで、私はこれらを試してみて、私の結果や成果に関する情報を与えるためにここに戻ってくるだろう。 – ali

+1

幸運、アリ? あなたも参照しているこの質問も参照してください: http://stackoverflow.com/questions/14530790/image-processing-match-curves-from-one-image-to-another – Rethunk

+0

ありがとうRehunk、今までコメントする。長い時間...私には本当の解決策はありませんでしたが、仕事をやり直す部分的な解決策でした。ゆっくりと回転しない:私は単純な相関マッチングを使用して、異なるサイズにテンプレートをリサイズするが、イメージ上のカーブではなく、各エッジポイントがそのスロープに対応する色を持つカラーコード付きエッジイメージ上で同様に使用したテンプレート曲線は、各点の曲線の傾きに基づいて色分けされた。そして、それらの色を相関によって比較したところ、結果は限られた/実用的な解決策では大丈夫でした... – ali

関連する問題