1

角度 205 度、長さ 77 ピクセルの線があります。(sqrt(x^2+y^2)で発見)こんな感じ。この画像の測定値は正しくありません。これは、私が何を意味するかを示すためのものです。 ここに画像の説明を入力

私は次のように houghlines2 を実行しています:

image.HoughLines2(storage, HoughLinesMethod.Probalistic, 2, Cv.PI / 90, 1, lineLength, 0);

行を検出することを確認するために、for ループを追加しました。lineLength が 44 のとき、最終的に houghlines2 メソッドで線を見つけます - 下の画像を参照してください。

ここに画像の説明を入力

なぜ私は44までずっと行かなければならないのですか?「ほぼ」正しい長さでそれを見つけることができる必要があります。+-10 は問題ありませんが、-33 は長すぎます。

さまざまな読み方へのリンクではなく、houghtransform の実行方法についての回答が必要です。たくさんのページを読んでいますが、わかりません。

4

1 に答える 1

1

これを試してみましょう... 私は今年の夏、C++ で OpenCV の Hough Transform を使用してきましたが、HOUGH_PROBABILISTIC.

標準のハフ変換で線が検出されないことがある理由については、一般的な考えがあり、これが機能しない理由も説明できるかもしれません。この方法を適用するときは、 rhotheta引数HoughLines2を指定する必要があります。ここで、この引数が正しく設定されていない場合 (ビンの間隔が広すぎる、シータが大きすぎるなど)、線の一部が「見落とされる」可能性があります。

あなたはいくつかの読書をしたと言ったので、あなたは一般的な考えを知っています. (0, 0)ここで、 からにまたがる線を想像してみてください(500, 1)。デジタル的に直線がどのように描かれるかを知っていれば、これは通常、 から への線と から から への線(0, 0)のように表示されることがわかります。ハフ角が大きい場合 (たとえば、ラインが下にある角度よりも大きい場合)、実際には同じビン内のすべてのポイントを「キャッチ」することはなく、基本的に長さ250の 2 つのラインを検出します。「少し」小さいだけでなく、実際にはたくさんあります。以来、(250, 0)(250, 1)(500, 1)HOUGH_PROBABILISTICピクセルが同じ「ビン」に入る必要があるだけでなく、元の画像で多かれ少なかれ連続している必要があるため、おそらくこのストーリーにさらに別の複雑さの層が追加されます。

線分のみを検出することを検討する場合に適用できるその他の説明は、最小の長さは実際のピクセル数ではなく、同じビンに入るピクセル数によって決定されるということです。ここで、上記と同じ理由で、77 ピクセルのすべてが実際にはビンに含まれていない可能性があり、したがって短くなっています。

もちろん、これはすべて、問題を引き起こしている可能性があると私が考える基本原則にすぎません。それが役立つことを願っています。私のアドバイスは次のとおりです。「rho」および「theta」パラメーターをいじってみるか、そうでなければ、通常の線を検出してください。これらのメソッドは、このバージョンの IMO よりも OpenCV で実装されています。

于 2012-03-20T13:40:28.610 に答える