【问题标题】:Prewitt filter in MatlabMatlab中的Prewitt滤波器
【发布时间】:2026-01-09 14:50:01
【问题描述】:

我正在尝试使用 Prewitt 滤镜对图像进行渐变。你能告诉我这种方法是否正确吗?

I = imread('image.jpg') Gx = [-1 0 1; -1 0 1; -1 0 1]; Gy = [1 1 1; 0 0 0; 1 1 1]; D = conv2(conv2(I, Gx), Gy) 显示(D)

正确吗?有没有更清洁的方法(无需调用 conv2 两次)? conv2(I, Gx) 和 conv2(Gx, I) 一样吗? (即可交换?)

谢谢。

【问题讨论】:

    标签: matlab gradient


    【解决方案1】:

    根据我的*判断,您应该做的是:

    I = imread('image.jpg')
    Gx = [-1 0 1; -1 0 1; -1 0 1];
    Gy = [1 1 1; 0 0 0; -1 -1 -1];
    
    A = sqrt( conv2(I,Gx).^2 + conv2(I,Gy).^2 );
    imshow(A);
    

    Link to Wikipedia Article

    【讨论】: