我知道在x上找到梯度的sobel滤波器是1/8。* [-1 0 1; -2 0 2; -1 0 1]。
所以,我没有使用imgradientxy来获得x和y的渐变,而是尝试直接使用sobelx滤镜将滤镜与图像相关联。但是,结果看起来完全不同,如下所示。
注意:我首先将原始图像标准化为范围[-1,1]而不是[0,255]
我知道normxcorr2正在将内核与图像相关联,如果我如上所述在x上使用sobel滤镜,那么它应该给我类似于使用imgradientxy的结果。
我的理解有什么问题?
Sobel滤波器使用normxcorr2与图像相关:
Image 1: Sobel filter correlated with the image using normxcorr2
使用imgradientxy对x进行渐变:
答案 0 :(得分:1)
imgradientxy(I)使用Sobel滤波器的卷积计算X和Y方向的梯度,而不对内核运行的每个位置进行规范化。
normxcorr2(I,模板)规范化模板和模板下的区域,并且仅计算相关性。
因此,如果您想实现imgradientxy,您可以使用以下代码
sobelX = [-1 0 1;-2 0 2;-1 0 1];
gradX = conv2(double(I),sobelX,'same');