9

この画像処理の問題を解決するための適切なアルゴリズムのセットを探しています。

  • 歪んだ四角形を含む歪んだバイナリ イメージがあります。
  • この長方形の四隅の点の適切な近似値を見つける必要があります

OpenCV を使用して輪郭を計算できますが、画像が歪んでいるため、4 つ以上のコーナー ポイントが含まれることがよくあります。バイナリ イメージまたは輪郭の記述を使用して四角形のコーナー ポイントを見つけるための適切な近似アルゴリズム (できれば OpenCV 操作を使用) はありますか?

画像は次のようになります。

ここに画像の説明を入力

ありがとう!

デニス

4

6 に答える 6

6

cvApproxPoly関数を使用して輪郭のノード数を除去し、ノードが多すぎるか、角度が 90 度と大きく異なる輪郭を除外します。同様の回答も参照してください

于 2011-06-15T12:48:20.023 に答える
2

少し違う答え、参照してください

http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html

于 2011-06-18T12:52:50.710 に答える
1

ハリスコーナー検出器を試してください。OpenCVパッケージに例があります。画像のパラメータを操作する必要があります。

そして、他のOpenCVアルゴリズムを参照してください:http://www.comp.leeds.ac.uk/vision/opencv/opencvref_cv.html#cv_imgproc_features

于 2011-06-15T13:32:44.137 に答える
1

opencv関数のApproxPolyを見てください。輪郭から多角形を近似します。

于 2011-06-15T12:44:26.497 に答える
0

一般化されたハフ変換を試してみます。少し遅いですが、歪んだ/不完全な形状をうまく処理します。

http://en.wikipedia.org/wiki/Hough_transform

于 2011-06-15T11:31:35.523 に答える
0
  1. これは、いくつかの欠陥から始めた場合でも機能します。つまり、approxPolly 呼び出しが pent/hexagons を返します。輪郭、たとえばtransContoursをクワッド、または任意のポリゴンに縮小します。
  2. vector<Point> cardPoly;// Quad storage
    int PolyLines = 0;//PolyPoly counter ;)
    double simplicity = 0.5;//Increment of adjustment, lower numbers may be more precise vs. high numbers being faster to cycle.
    while(PolyLines != 4)//Adjust this 
    {
        approxPolyDP(transContours, Poly, simplicity, true);
        PolyLines = Poly.size();
        simplicity += 0.5;
    }
    
于 2014-06-26T11:18:04.913 に答える