Matlab中的Prewitt滤波器

时间:2012-03-28 02:53:10

标签: matlab gradient

我正在尝试使用Prewitt过滤器拍摄图像的渐变。你能告诉我这种方法是否正确吗?

我= 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) imshow(d)

这是对的吗?是否有更简洁的方法(不需要两次调用conv2)? conv2(I,Gx)与conv2(Gx,I)相同吗? (即可交换?)

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的维基百科判断,看起来你应该做的是:

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