我编写了这段代码,通过将图像与水平和垂直导数滤波器进行卷积,然后计算每个像素的梯度幅度,计算每个像素的渐变矢量,但我在conv2
中得到以下错误:
不支持使用conv2 N-D数组时出错。 X中的错误(第7行)Gx = conv2(A,Sx)
A=imread('peppers.png');
figure,imshow(A); title('Sobel Gradient Before');
V= double (A);
Sx = [1,0,-1;2,0,-2;1,0,-1];
Gx=Conv2(A,Sx);
figure
imshow(Gx); title('x-direction');
Sy = [1,2,1;0,0,0;-1,-2,-1];
Gy=Conv2(A,Sy);
figure
imshow(Gy); title('y-direction');
G=sqrt(Gx.^2+Gy.^2);
figure,imshow(G); title('Sobel Gradient After');
答案 0 :(得分:3)
对于彩色图像,imread
返回一个3D数组,其中第三维有3个R,G,B元素。您需要先将图像转换为灰度值。或者使用convn
对彩色图像进行卷积。