3

私がやりたいことは、既知の物理サイズと既知の正方形の数の白黒の市松模様のボードを含むソース画像を取得し、そのボードの境界とそれが存在する角度を特定することです観察されている(完全に平らであると仮定して)そしてどのくらいの距離から。

ボードの 4 つのコーナーを確実に識別できれば、角度と距離を計算する方法がわかるので、タスクはチェス ボードを識別することになります。

私がこれまでに試したのは、画像をグレースケールしてコントラストを上げることで、最終的には真っ白な白黒画像になります(目には、白い四角だけで黒さが含まれています)-そして、境界を識別することができます黒→白→黒からの変化の頻度を測定することにより、トップダウンの観点からボードを細かく調整できますが、どの角度でもこれを行う方法がわかりません。

名目上、私はこれを C# で行っていますが、実際の回答に関する限り、c のような構文のコード例には満足しています。

4

1 に答える 1

3

3D ワールド内で一般的な 2D オブジェクトを見つけるには、多くの場合、SIFT または SURF を使用します。

2 つのステップがあります。

  • 画像内の管理可能な数のローカル フィーチャ (強いコーナーなど) を見つける
  • 画像内のポイントと検索パターンとの相関関係を見つける

OpenCV には、そのため の実装があります: この Stackoverflow の回答も参照してください。


これは非常に一般的な方法であり、チェッカーボードでどの程度うまく機能するかはわかりません。

しかし、チェス盤のパターンには特定のアプローチがあります: openCV 関数 cvFindChessboardCorners (チュートリアル) など

私はそれを使用したことはありませんが、このアルゴリズムの説明を見つけました: (ソースはファイル cvcalibinit.cpp にあります)

  • 黒と白の正方形をセグメント化するためのしきい値処理による画像の 2 値化
  • 黒い四角の角を見つける:
    • 黒い領域の境界の輪郭を見つける
    • 適切な形状の輪郭を選択
    • これらの輪郭を 4 頂点ポリゴンで近似します
  • これらの中から、キャリブレーション パターンの正方形に似た四角形を選択します
  • 少なくとも 1 つのコーナーが近くにある、選択した四角形のコーナーを抽出します
  • キャリブレーション オブジェクトのサイズに従って、選択した四角形の角を線でグループ化します
于 2012-09-20T18:56:00.773 に答える