2

スキャンされたパーツのすべての可能性をディレクトリ内の画像として取得するパーツ スキャナーを C で作成しています。私のコードは現在、そのディレクトリからすべての画像を取得し、それらをベクターにダンプします。次に、すべての画像の輪郭のグループを作成します。その後、プログラムは while ループに陥り、Web カメラから絶えず画像を取得し、それらの輪郭も生成します。パーツを載せる治具を用意したので、向きやサイズは問題ありませんが、マシンのキャリブレーションはしたくないので、テンプレート画像と撮影したパーツ画像の間に動きがあるかもしれません。

輪郭を比較する最良の方法は何ですか? 輪郭のない matchTemplate を含むいくつかの方法を試しましたが、以下の 2 つの部分を見ると、これら 2 つが互いに非常に近いことがわかります。彼ら。cvMatchShapes の使い方もわかりません。画像を一致する形状に直接ロードするだけで機能しますが、結果は決定的ではありません. 輪郭が進むべき道だと思いますが、比較フェーズを実装する方法がわかりません。どんな助けでも素晴らしいでしょう。

ここでテンプレートを表示できます: http://www.cryogendesign.com/partDetection.html "

4

2 に答える 2

1

日曜大工の準備ができている場合、1つのアプローチは、「距離画像」を計算することです(すべてのピクセルに、参照として使用される輪郭に最小のユークリッド距離を割り当てます)。http://en.wikipedia.org/wiki/Distance_transformを参照してください。

この距離画像を使用すると、新しい輪郭から参照画像までの平均距離をすばやく計算できます(輪郭ピクセルごとに、距離画像から距離を取得します)。平均距離は、適合度を示し、一連の参照テンプレートに最適なものを見つけることができます。

パーツにある程度の移動の自由がある場合、状況は少し難しくなります。平均距離を計算する前に、新しい輪郭を参照輪郭に合わせる必要があります。適切な変換(平行移動、回転、場合によってはスケーリング)を適用し、平均距離を最小化するパラメーターを見つける必要があります。

于 2012-05-07T10:55:05.387 に答える
1

2 つのコンター間の面取り距離を計算できます。

面取り

TEは、テンプレートと画像のエッジのxセットであり、2 つのエッジのセットを比較し始める基準点です。したがって、それぞれに対してx異なる値が得られます。

DT は、イメージの距離変換です。Matlab はここでアルゴリズムを提供します。

面取り距離の計算方法のより詳細なバージョンが必要な場合は、こちらをご覧ください。

于 2013-05-03T18:32:06.267 に答える