0

houghlines2で線を検出しようとしていますが、線がピクセル化されているため、houghlines2はそれを線として認識できません。何が起こるかというと、私は線の一部を検出しますが、完全な線は検出しません-赤い線が線のより多くを埋めているように示されています

ここに画像の説明を入力してください

私は少し線をぼかそうとしましたが、今のところ運がありません。

コード: http: //pastebin.com/zmsCFucM

誰かがこれを修正する方法を知っていますか?私も運が悪かったキャニーと一緒に仕事をしました。

編集

次にペイントで線を測定するとき、それが30であるとしましょう(これはsqrt(lengthx ^ 2 + lengthy ^ 2)で行います)。次に、houghlines2probalisticのminLengthを短くする必要があります。これが私の問題だと思いますが、なぜもっと短くしなければならないのかわかりません。何か案は?

4

2 に答える 2

0

画像の縮小を試みることができます...そのおかげで、線は 1 ピクセル幅になります! 理論的には、ラインを検出するハフ変換パラメーターのセットを見つけることができます。

コード内で CV_HOUGH_PROBABILISTIC を CV_HOUGH_MULTI_SCALE に置き換えてみることができます。これにより、異なるスケールで行を見つけようとします。

于 2012-03-09T12:21:35.003 に答える
0

以下の回答は、私があなたの質問から集めたものに基づいています。

1行ではなく2行を検出していますよね?検出された 2 つ (確率フラグを使用) のうち、4 つの線の終点のセットを比較します (各線には 2 つあります)。距離が最小になる 2 つのポイントがあります。これら 2 つをマージして 3 つのポイントを取得します。ここで、残りの 2 点を考慮して線を引きます。

または、Hough Line 検出から取得した 4 つのエンドポイントでライン フィッティング関数 (OpenCV には 1 つある) を使用します。cvFitLine() は、線のベクトル表現を返します - 端点はありません。したがって、互いに最も離れているハフ線の終点の座標で、その適合線を切り取ります。

于 2012-03-09T17:04:49.777 に答える