これを試してみましょう... 私は今年の夏、C++ で OpenCV の Hough Transform を使用してきましたが、HOUGH_PROBABILISTIC.
標準のハフ変換で線が検出されないことがある理由については、一般的な考えがあり、これが機能しない理由も説明できるかもしれません。この方法を適用するときは、 rhoとtheta引数HoughLines2を指定する必要があります。ここで、この引数が正しく設定されていない場合 (ビンの間隔が広すぎる、シータが大きすぎるなど)、線の一部が「見落とされる」可能性があります。
あなたはいくつかの読書をしたと言ったので、あなたは一般的な考えを知っています. (0, 0)ここで、 からにまたがる線を想像してみてください(500, 1)。デジタル的に直線がどのように描かれるかを知っていれば、これは通常、 から への線と から から への線(0, 0)のように表示されることがわかります。ハフ角が大きい場合 (たとえば、ラインが下にある角度よりも大きい場合)、実際には同じビン内のすべてのポイントを「キャッチ」することはなく、基本的に長さ250の 2 つのラインを検出します。「少し」小さいだけでなく、実際にはたくさんあります。以来、(250, 0)(250, 1)(500, 1)HOUGH_PROBABILISTICピクセルが同じ「ビン」に入る必要があるだけでなく、元の画像で多かれ少なかれ連続している必要があるため、おそらくこのストーリーにさらに別の複雑さの層が追加されます。
線分のみを検出することを検討する場合に適用できるその他の説明は、最小の長さは実際のピクセル数ではなく、同じビンに入るピクセル数によって決定されるということです。ここで、上記と同じ理由で、77 ピクセルのすべてが実際にはビンに含まれていない可能性があり、したがって短くなっています。
もちろん、これはすべて、問題を引き起こしている可能性があると私が考える基本原則にすぎません。それが役立つことを願っています。私のアドバイスは次のとおりです。「rho」および「theta」パラメーターをいじってみるか、そうでなければ、通常の線を検出してください。これらのメソッドは、このバージョンの IMO よりも OpenCV で実装されています。