1

そこで、添付の写真のような画像の縞模様の回転角度を見つけようとしています。唯一の仮定は、線が平行であり、それらの方向がおよそ 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}}

これらのアルゴリズムの改善やまったく新しいアプローチについて、どんなアイデアでも受け入れます。必要に応じて、さらに画像をアップロードできます。

ここに画像の説明を入力

4

2 に答える 2

1

1 つの線の点のリストを取得できる場合、線形回帰により、点に最も適合する直線の式が得られます。簡単な三角関数操作で、直線の式を角度に変換できます。

おそらく、線を細くする操作を使用して、ストライプをポイントのリストに変換できます。

于 2013-02-27T17:21:09.760 に答える
0

さまざまな角度に沿って空間導関数のアキュムレータを実行できます。0.5 度の精度と 5 ラインのサンプルが必要な場合、最大 10*5*1500 = 7.5m の反復があります。ラインに沿ってサンプリング レートを安全に 10 倍に減らすことができます。これにより、サンプルあたり 150 ポイントのサンプル サイズが得られ、反復回数が 100 万未満に減少します。そのあたりで、画像をまっすぐにする操作がボトルネックになるはずです。

于 2013-02-27T19:49:31.763 に答える