不支持使用conv2 N-D阵列时出错

时间:2018-03-28 19:37:04

标签: matlab matlab-figure

我编写了这段代码,通过将图像与水平和垂直导数滤波器进行卷积,然后计算每个像素的梯度幅度,计算每个像素的渐变矢量,但我在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');

1 个答案:

答案 0 :(得分:3)

对于彩色图像,imread返回一个3D数组,其中第三维有3个R,G,B元素。您需要先将图像转换为灰度值。或者使用convn对彩色图像进行卷积。