matlab - 不支持使用 conv2 N-D 数组时出错

标签 matlab matlab-figure

我编写了这段代码,通过将图像与水平和垂直导数滤波器进行卷积来计算每个像素的梯度向量,然后计算每个像素的梯度幅度,但我在 conv2 中得到以下错误:

Error using conv2 N-D arrays are not supported. Error in X (line 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');

最佳答案

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

要将图像转换为灰度,请使用 rgb2gray功能。

关于matlab - 不支持使用 conv2 N-D 数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49542805/

相关文章:

matlab - 具有不同颜色图的子图 matlab

matlab - 在 Matlab 中抑制转义字符

python - 需要帮助将 python 代码(使用 Numpy)翻译成 Matlab 等价物

matlab - 如何在 Matlab 中将颜色与热图中的值明确关联?

matlab - 显示多个数据时更好的错误栏

matlab - quiver3 返回长度不正确的向量

image - 在 MATLAB 中反转旋转图像的问题

matlab - nargin vs 存在

matlab - 如何绘制(半)对数 3d 图? (Matlab)

matlab : suppress legend entry without removing from Plot Browser