そこで、添付の写真のような画像の縞模様の回転角度を見つけようとしています。唯一の仮定は、線が平行であり、それらの方向がおよそ 90 度であるということです [たとえば、5 度の公差]。結果画像のストライプ ラインが 100 % 垂直になるようにする必要があります。画像の品質は、ヒストグラム/グレースケール値と同様に異なります。そのため、非適応しきい値に基づく方法は、私のケースではすでに失敗しています [適応にできない場合、しきい値ベースの方法には興味がありません]。また、ストライプ ラインの上にランダムな黒いクラスターがいくつかある場合があります。
これまでに行ったこと: 1) もちろん、HoughLines が最初のオプションですが、すべての画像で機能させることはできませんでした。この素晴らしい記事に従っても、部分的に成功しました: http://felix.abecassis.me/ 2011/09/opencv-detect-skew-angle/ . 私の理解に失敗した主な理由は、さまざまな画像のパラメーターを微調整する必要があったことです。Canny/BW/Morphological エッジ検出などのパラメータ (必要な場合) | minLinelength/maxLineGap/etc のパラメーター。確かにこれをハックして機能させる方法はありますが、私にとってこれは脆弱な解決策です!
2) 私が今取り組んでいるのは、画像を上のスライスと下のスライスに分割し、各スライスの山と谷を見つけることです。次に、基本的に画像の幅とピークの移動を使用して角度を見つけます。ストリップラインの上に黒/白のクラスターが存在するため、計算にいくつかの偽陽性のピークがあるため、現在、上のスライスのどのピークが下のスライスのどのピークに属しているかを見つけることに取り組んでいます。
例: スライスのピークの位置: Top Slice = { 1, 33,67,90,110} BottomSlice = { 3, 14, 35,63,90,104}
ピークを抽出するときに、実際に同様のベクトルを取得しています。ご覧のとおり、ベクトルの長さは異なる場合があります。次のようなグループを取得するにはどうすればよいでしょうか。
{{1,3},{33,35},{67,63},{90,90},{110,104}}
これらのアルゴリズムの改善やまったく新しいアプローチについて、どんなアイデアでも受け入れます。必要に応じて、さらに画像をアップロードできます。