2016-09-09 4 views
-1

私は画像処理の初心者ですが、opencvで5つのタイプの "縦"、 "横"、 "診断45"、 "診断135"、 "無指向"のエッジをどのように抽出できますか?opencvで5方向のエッジを抽出するには?

+1

は聞かないでください二度、してください:[sobからの戻り値の意味はなんですか? opencvのel演算子?](http://stackoverflow.com/questions/39418840/whats-the-meaning-of-the-return-value-from-sobel-operator-in-opencv)を参照してください。私はこの質問を閉じるように投票しました。 – Berriel

+0

申し訳ありません@Berriel、私は画像処理の初心者です、私の質問は同じではありません。私はopencvのsobel演算子の戻り値を非常によく理解していなかったので、他の質問をしました。このスレッドを除いて、誰にも答えられないようです。しかし、あなたが望むように、私は既に他の話題を削除しました。 – xirururu

答えて

1

まず、ソベルフィルタを画像に適用したいと思うでしょう。いくつかのコード例については、OpenCV documentationを参照してください。

あなたはXとYであなたのグラデーション画像を得たら、あなたは、式theta = atan2(Gy,Gx)と大きさM = sqrt(Gx*Gx + Gy*Gy)を使用して、エッジの向きを計算することができます(私はそれらGxGyを呼ぶことにします)。 GxGytheta、およびMを取得したら、次の数式を使用して、各ピクセルで方向付けられたエッジの大きさを計算することができます。

垂直エッジ:abs(Gy)

水平エッジ:abs(Gx)

45度エッジ:M*abs(cos(theta - pi/4))

135度エッジ:M*abs(cos(theta - 3*pi/4))

非方向エッジ:M

+0

こんにちは@jodagお返事ありがとうございました。あなたが言ったように私はそれをしました。だから私は5つの行列を得た。しかし、どのカテゴリがポイントであるのか、私はどのように知ることができますか?たとえば、画像の最初のピクセルは、5つの値から5つの値をとります。 – xirururu

+0

'Gx'と' Gy'がゼロでない限り、画像内のすべての辺に方向(シータ)を割り当てることができます。そのため、正確に「無方向エッジ」が何であるか分かりません。場合によっては、Sobelフィルタの適用は無指向性エッジフィルタとして知られています。これは、Mを与える大きさがエッジ方向に依存しないためです。必要に応じて、ある閾値より小さいマグニチュード「M」のピクセルを「無方向」に割り当て、残りのピクセルについては、残りの4つのカテゴリのいずれか大きい方のいずれかに割り当てることができます。 – jodag

+0

ローカルエッジヒストグラム記述子を作成しようとしていますか?このペーパーのように:https://www.dcc.fc.up.pt/~mcoimbra/lectures/VC_1415/VC_1415_P8_LEH.pdf – jodag

関連する問題