私は画像処理に慣れていません。文書画像のラインを検出する作業をしています。私はハフライン変換の理論を読んだが、なぜ多くのチュートリアルで言われているようにopencvでその関数を呼び出す前にCannyを使わなければならないのか分からない。この場合、エッジを見つけるのは何ですか?事実、私がHoughLines()の前にCannyやthresholdを使用しないと、結果が非常に乱雑になります。誰かが私に理由を説明することを願っています。あなたはboolean
マトリックス画像(またはバイナリ)で作業する必要がある行を検出するために、すべてのHoughLines(opencv)より前のCannyの使い方は?
答えて
短い答え
cvCannyは、エッジを検出、並びに、コントラストを高め、画像のノイズを除去するために使用されます。 Hough Transformを使用するHoughLinesを使用して、これらのエッジがラインであるかどうかを判断します。ハフ変換では、効率的で意味のある結果を得るためにエッジを適切に検出する必要があります。 Hough Transformの
ロング回答
制限はウィキペディアに詳細に記載されています。ハフ変換(Hough Transform)の効率は、累積された画素のビン(bin)が別個であることに依存している(例えば、特許文献1参照)。画素とその周辺の隣接画素との間の直接コントラスト、またはマスク領域と画素領域とその周辺領域とを使用する場合には、すべてのピクセルが類似した値を持つ場合、線や円としては何も目立たないでしょう。これは、契約を増やすために色(グレースケールからグレースケール、黒と白まで)を減らすことにつながります。
ハフ変換のパラメータ数は、ピクセルビン内の投票の広がりを増加させ、変換の複雑さを増加させます。これは、通常、3つ未満のパラメータを持つため、線や円のみが確実に検出される。
ハフ変換を実行する前にエッジを検出する必要があります。そうでないと、効率がさらに悪くなります。また、ノイズが手前で除去されない限り、ノイズの多い画像はハフ変換でうまく動作しません。
私は参照してください。私は私の悪い英語を残念に思っています。あなたの非常に分かりやすい答えをありがとう。 – Risa
まず、私が読んだのチュートリアルの
2つまり、色は黒または白です。グレースケールはありません。
HoughLines()
正しく動作させるには、この種の画像を入力する必要があります。これはのブール値に変換されたイメージマトリックスをに変換するために、Canny
またはTreshold
を使用する必要がある理由です。
ハフ変換
つのピクチャの行は、実際のエッジです。ハフ変換は画像全体をスキャンし、すべてを変換する変換を使用します白極座標のデカルト座標です。 ブラックピクセルは除外されます。 HoughLines()
はグレースケールがあるときの振る舞いを知らないので、最初にエッジを検出しないと線を得ることができません。
私は今それを得る。ありがとうございます:> – Risa
全ては、バイナリデータの処理について
複素データである - >(バイナリデータ、Bバイナリデータ、バイナリデータC、...)()(キャニー、ソーベル()などを使用して)
バイナリデータ - >はfunction1()(使用houghlines())バイナリデータB
- >機能2()
バイナリデータC - >関数3()..
バイナリデータ-X - > functi ON2()..
複雑なデータ-X->はfunction1()..
HTH
理論的には、あなたは正しいです。ハフラインアルゴリズムが機能するには、エッジを見つけることは絶対に必要なわけではありません。
ハフの仕組みは、基本的にあらゆる点を取り、それを他のすべての点に接続します。そして、どの点にも最も多くの線が通っていれば、それらの線が残ります。このためには、ポイントが必要です。キャニーはこれらのポイントを作成します。理論的には、あらゆる種類のフィルターを使用することができます - 青色または紫色の点をすべて分離し、それらを接続しますが、エッジはうまく機能します。
ハフはまた、その線や点を重み付けしません。ハフには、イメージはバイナリです - 1または0のポイント、またはポイントではありません。グレースケールの必要はなく、便利なことにバイナリイメージが返されます。
したがって、ハニーのCannyは常にこの部分です。
- 1. C++でのOpenCVのCanny Edge検出
- 2. OpenCV :: Canny Edge Detectionの結果を処理する方法
- 3. Python OpenCVを使ってHoughLinesで画像の縦線と横線を検出する方法は?
- 4. OpenCV canny;出力画像は純粋な灰色です
- 5. Cannyの輪郭を輪郭に変換するOpenCV
- 6. は、私は、このソースイメージを持っている水平線のためHoughLinesは(Pythonの、OpenCVの)を検出
- 7. OpenCV MatchTemplateの使い方は?
- 8. OpencvでCanny Edge検出を使用して画像内のテキストを認識
- 9. openCV pythonでHoughLines transformを使って正確に行を検出する方法は?
- 10. cv2 houghlinesのためのハフスペース
- 11. Cannyエッジ検出器の結果を入力してくださいopencv
- 12. AndroidアプリでOpencv cannyエッジ検出がクラッシュする
- 13. opencv cannyで雑音/検出ネットを削除する
- 14. OpenCVのcannyは、グレースケールイメージの単一チャネルとカラーイメージの3チャネルの両方を扱うことができますか?
- 15. opencv canny関数のガウス関数の分散を設定します
- 16. OpenCV triangulatePointsの使い方
- 17. EmguCV(OpenCV in C#)の使い方は?
- 18. opencv Mat reserveの使い方は?一back
- 19. opencv setOpenGlDrawCallback関数の使い方は?
- 20. GDB debug OpenCVプログラムの使い方は?
- 21. OCRでのOpencvによる文書認識の使い方
- 22. SikuliのPython OpenCV関数の使い方
- 23. Opencv xamarin findContours - 階層の使い方
- 24. OpenCV cvProjectPoints2関数の使い方
- 25. OpencVの背景と前景
- 26. C#とEmguCVのイテレータの使い方は? OpenCVので
- 27. Canny Edge Detector - 実装上の問題
- 28. cannyメソッドを使用してある程度のエッジ検出
- 29. カメラキャリブレーション(OpenCV 2.3) - 歪みパラメータの使い方は?
- 30. opencv pythonでビデオの前のフレームを取得する方法
あなたが参照する「多くのチュートリアル」の1つに、最小の実例とリンクを提供してください。 – Unapiedra
リンクありがとうございます! – Unapiedra