31

OpenCV ライブラリを使用して草に塗られた白い線を検出するコードをいくつか書きました。私が使用したアプローチについて誰かの意見が必要です(私よりもはるかに良い方法があると確信しているため)。また、得られる結果は期待したほど良くはありません。これは、画像のわずかな変化にパラメーターを微調整する必要があるためです (固定パラメーターで操作する必要があります)。

これまでの私のアプローチ:

  1. ウェブカメラから画像を取得します(明らかにグレースケールに変換します)
  2. しきい値フィルターを介して実行します (THRESH_TO_ZERO モードを使用して、しきい値を下回るピクセルをすべてゼロにします)。
  3. 画像をぼかす
  4. エロージョンフィルターに通す
  5. Canny エッジ検出器で実行する
  6. 最後に、この処理された画像を取得し、確率的ハフ変換 HoughLinesP を使用して線を見つけます

フィルタの順序を変更する必要がありますか?

PS 処理能力についてはあまり気にしていません。GPU で HoughLinesP を実行しています B-)

また、サンプル画像は次のとおりです。 元の画像

私が得ている結果: with canny キャニー付き WITHOUT canny (わずかに微調整されたパラメーター) 今回はキャニーなし

ヘルプやガイダンスをいただければ幸いです。改善するために何をすればいいのかわからない!

更新 選択した回答に従って、非常に迅速なスケルトン実装(大量のぼかしを使用)を使用した後、次のようになりました。 できます!

4

5 に答える 5

22

画像のスケルトン表現を使用してみます。ここでのキャニーの問題は、線の幅のために基本的に2つの線になることです.

次に、ハフ変換を適用します。

于 2013-05-22T06:16:14.857 に答える
5

考えられる解決策の 1 つは、キャニー エッジ検出から取得したすべてのエッジ ポイントを取得し、これらのポイントで線形最小二乗法 (おそらく反復) を使用して直線を当てはめることです。このようにして、常にエッジ ポイントに「最適」な 1 本の線が得られます。この方法に関連するパラメーター化は事実上ありません。

于 2013-05-21T09:58:49.243 に答える
5

屋内の画像には Canny を使用していましたが、屋外の画像には、確率論的ハフ線変換 (PHT) を適用するよりも、ラプラス フィルターとソーベル フィルターが適していることがわかりました。

線を太くしたい場合は、ラプラスの後にソーベル演算子を試し、最後に PHT を試してください。あなたのイメージがうるさすぎると、悪化する可能性があります。

于 2013-11-24T17:22:29.587 に答える