2

私は 1 枚の紙を引き裂き、その破片は次のようになります。

破れた紙

そして、この紙の破片を回収したいのです。

私はopencvを使って何かをしました:

  1. これらの断片の写真を撮り、コンピューターのディスクに保存します
  2. 各フラグメントを読み取り、輪郭線を取得します
  3. フラグメントの各等高線の類似度を計算します
  4. ???

これらの断片を、紙のように破れない 1 つの完全な「紙」に復元したい場合はどうすればよいですか?

任意の提案や方法をいただければ幸いです。どうもありがとうございました!

4

1 に答える 1

1

これは検索の問題に似ていますが。多数の点と方向からくる無数の状態のため、深さ優先探索のようなものを実装することは不可能です。これらの状態数を減らすには、適切なビジョン アルゴリズムが必要です。

「等高線」をどのように比較しましたか?これらの行はどこにありますか? 輪郭が円形で、非常に多くの「線」が含まれている可能性があります。「他の輪郭の一部を結合して、この輪郭を作成するにはどうすればよいですか」を探す必要があります

「この境界は別の境界と類似性がありますか?境界のどの部分が最も類似性がありますか?」

これらの質問は両方とも、私の頭に浮かんだ 1 つの解決策につながります。人間の方法で解決します。それは、輪郭を選択することです。ある地点から別のものを接続します。当たるまで回します。間に黒いスペースがある場合は、接続ポイントを変更します。すべてのポイントを試してください。「黒いスペースがない」という接続点が見つかった場合は、これらの輪郭を 1 つの輪郭に接続して、操作を続行します。点が存在しない場合は、別の輪郭を試してください。

編集:このメソッドは検索以外は何もしませんが; 黒いスペース(輪郭の検出)とヒット(座標の比較)のある状態の数を減らします

強化: 「単純な近似」(CV_APPROX_SIMPLE) を使用して輪郭を見つける方法を使用して、紙の直線を推定します。次に、これらのポイントを紙の側面として書き留めることで、試行するポイントの数を減らすことができます.

EDIT2:コーナー検出とステッチング方法を見たいと思うかもしれません:

http://tobw.net/index.php?cat_id=2&project=Panorama%20Stitching%20Demo%20in%20Matlab

http://docs.opencv.org/modules/stitching/doc/introduction.html

于 2013-09-13T12:16:29.363 に答える