2016-07-23 63 views
0

我知道在x上找到梯度的sobel滤波器是1/8。* [-1 0 1; -2 0 2; -1 0 1]。使用matlab进行边缘检测normxcorr2

所以,我没有使用imgradientxy来获得x和y的梯度,而是直接使用sobel filter直接使用normxcorr2来将滤波器与图像相关联。但是,结果看起来完全不同,如下所示。

注:我第一归一化的原始图像,以范围[-1,1]代替[0255]

我明白normxcorr2与图像内核相关联,并且如果使用索贝尔滤波器上x作为如上所示,那么它应该给我与使用imgradientxy类似的结果。

我的理解有什么问题?

Sobel滤波器使用normxcorr2与图像相关联:x上

Image 1: Sobel filter correlated with the image using normxcorr2

梯度使用imgradientxy:

Image 2: Gradient on x using imgradientxy

+0

去尝试标准化图像范围为[0,1]。 – Rotem

回答

1

imgradientxy(I),使用计算在X和Y方向的梯度与Sobel滤波器进行卷积而不对内核运行的每个位置进行归一化。

normxcorr2(I,模板)规范化模板和模板下的区域,只计算相关性。

所以,如果你想实现imgradientxy你自己使用下面的代码

sobelX = [-1 0 1;-2 0 2;-1 0 1]; 
gradX = conv2(double(I),sobelX,'same');