7x7 Prewitt卷积核

3

我对图像处理比较新,想使用一个更大的Prewitt核进行过滤。问题是我在维基百科上找不到比3x3核更大的。我也看到过一个4x4的核,在课堂演示中出现过,但是我完全不知道它是如何评估的。能否有人帮助我?


你确定7x7 Prewitt核有固定的定义吗?这个帖子询问了关于7x7 Sobel核的问题,表明这些核的较大版本是基于用户的临时定义的。 - AnonSubmitter85
2
请查看此 .pdf 文件以获取一个 5x5 的程序相关内容。祝您将其扩展到 7x7,好运! - Wooly Jumper
@AnonSubmitter85,老实说我不确定它是否存在。但我猜想应该是有的。我确实读过获取更大的Sorbel核的方法,但不确定是否可以用同样的方法扩展Prewitt。 - Mathews_M_J
1个回答

1
这并不是直接回答你的问题,但我之前遇到过这个问题,可能会对你有所帮助,因为它遵循了@AnonSubmitter85的评论。基于一篇论文,可以在此处找到,有许多“方法”来定义给定大小的内核,因为它们用于描述多项式(或多项式的线性组合),这些多项式描述从中计算图像的方向导数的函数。我承认我不理解所有内容,无论如何,以下是可以为内核大小生成的可能窗口:1)3x3

enter image description here

2)4x4

enter image description here

所以我猜测没有一个单一的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

非常抱歉我的回答有点长,可能并没有完全解决你的问题,但是显然评论不够长!希望这能在某种程度上有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接