6

次のパラメーターを使用して、openCVでSobelエッジ検出を実行しています。

cv.Sobel(mat, edgemat, 1, 1)
# mat -> source image
# edgemat -> taget output image 
# 1 -> xorder (int) – Order of the derivative x
# 1 -> yorder (int) – Order of the derivative y
# apertureSize (int) – Size of the extended Sobel kernel -> its by default set to 3

また、GIMPを使用して画像のソーベルエッジ検出を行いました。

ソースイメージは次ソース画像 のとおりです。openCVによる出力は次のとおりです。GIMPによる出力は次のとおりですopenCV出力GIMP出力

openCVとGIMPによる出力の間になぜこんなに大きな違いがあるのか​​。GIMPによる出力の品質は、openCVを光年上回っています。

4

1 に答える 1

9

簡単な答え:あなたはそれを間違っています。ドキュメントを参照してください-あなたがしているのは、画像の導関数を計算することですd^2/(dx dy)-これは、「水平方向のエッジが垂直方向にどのように変化するか」(または、同等に、「垂直方向のエッジが水平方向にどのように変化するか」)を意味します。水平エッジはゼロの出力を期待します(それに垂直な方向に変化しないため)。したがって、opencvラインで行っているのは、エッジ検出ではありません。1, 0おそらく、パラメータとしてsobelのようなものが必要であり0, 1、次にそれらの結果を2乗して合計し、結果の平方根を取ります。その結果、GIMPが行っているようなことが起こる可能性があります。

于 2011-06-03T12:55:03.240 に答える