Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing Skimage filters.sobel_v结果没有意义。为什么?_Image Processing_Edge Detection_Scikit Image_Sobel - Fatal编程技术网

Image processing Skimage filters.sobel_v结果没有意义。为什么?

Image processing Skimage filters.sobel_v结果没有意义。为什么?,image-processing,edge-detection,scikit-image,sobel,Image Processing,Edge Detection,Scikit Image,Sobel,其中提到,检测垂直线的内核是: 1 0 -1 2 0 -2 1 0 -1 如果我这样做: img = np.array([[1.0, 2.0, 3.0], [4, 5, 6], [7, 8, 9]]) Lx = filters.sobel_v(img) 然后打印Lx,我得到: Lx 0.0000 0.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 0.0000 这没有任何意义,因为结果应该是: 1*(-1) + 3*1 +

其中提到,检测垂直线的内核是:

1   0  -1
2   0  -2
1   0  -1
如果我这样做:

img = np.array([[1.0, 2.0, 3.0], [4, 5, 6], [7, 8, 9]])
Lx = filters.sobel_v(img)
然后打印
Lx
,我得到:

Lx
0.0000 0.0000 0.0000 
0.0000 2.0000 0.0000 
0.0000 0.0000 0.0000
这没有任何意义,因为结果应该是:

1*(-1) + 3*1 + 4*(-2) + 6*2 + 7*(-1) + 9*1 = -16 + 24 = 8
而不是位于中央位置的
2


发生了什么?

这种差异是由于比例因子造成的

用于垂直边缘检测的Sobel核通常定义为:

该内核可以分解为平滑内核和派生内核的乘积,如下所示:

为了使平滑核成为一个真正的平均滤波器,它应该按系数
1/(1+2+1)=1/4进行缩放。这样,Sobel内核就变成:


尽管文档中没有提到比例因子,但它实际上是在实现中使用的(请查看以说服您自己)。

谢谢您的回答。非常有用。谢谢你修复我的卷积:)