我对图像处理比较新,想使用一个更大的Prewitt核进行过滤。问题是我在维基百科上找不到比3x3核更大的。我也看到过一个4x4的核,在课堂演示中出现过,但是我完全不知道它是如何评估的。能否有人帮助我?
我对图像处理比较新,想使用一个更大的Prewitt核进行过滤。问题是我在维基百科上找不到比3x3核更大的。我也看到过一个4x4的核,在课堂演示中出现过,但是我完全不知道它是如何评估的。能否有人帮助我?
或
2)4x4
所以我猜测没有一个单一的7x7核可以计算。由于Sobel和Prewitt非常相似,文件交换中有一个提交可能会引起您的兴趣。这是代码,相当简短。它创建了任何大小的广义Sobel滤波器(我对此没有任何贡献,只是粘贴代码,这样你就更容易理解:)。
%Program for creating generalised Sobel operator
%Authors : Jeny Rajan, K.Kannan
%Medical Imaging Research Group, NeST, Trivandrum
%http://jenyrajan.googlepages.com/
%http://kannan.keizer.googlepages.com/kannankeizer
%This program can be used to generate sobel filter of any order
% Usage [E Mx My]=Gsobel(img,Wsize)
% eg. [E Mx My]=Gsobel(img,5)
% E - Resultant Edge image generated with sobel filter of window size Wsize
% Mx & My - Horizontal and Vertical Masks
% img - input image
% Wsize - Filter window size
function [E Mx My]= GSobel(img,Wsize)
for i=1:Wsize
Sx(i)=factorial((Wsize-1))/((factorial((Wsize-1)-(i-1)))*(factorial(i-1)));
Dx(i)=Pasc(i-1,Wsize-2)-Pasc(i-2,Wsize-2);
end
Sy=Sx';
Dy=Dx';
Mx=Sy(:)*Dx;
My=Mx';
Ey=imfilter(double(img),My,'symmetric');
Ex=imfilter(double(img),Mx,'symmetric');
E=sqrt(Ex.^2+Ey.^2);
figure,imshow(img,[]),title('Original Image');
figure,imshow(E,[]),title('Edge Image');
function P=Pasc(k,n)
if (k>=0)&&(k<=n)
P=factorial(n)/(factorial(n-k)*factorial(k));
else
P=0;
end
非常抱歉我的回答有点长,可能并没有完全解决你的问题,但是显然评论不够长!希望这能在某种程度上有所帮助。