圆形中值滤波器matlab

mat*_*bit 1 matlab image-processing filter computer-vision median

如何定义一个像中值滤波器(medfilt2)一样的圆形滤波器,而不是[nn]的平方邻域,在半径为r的圆形邻域上执行中值?我需要在2d-image上执行此操作.(最好当然应该快速工作).谢谢

bla*_*bla 5

使用ordfilt2圆形域.例如,

B = ordfilt2(A, order, domain)
Run Code Online (Sandbox Code Playgroud)

用域中非零元素指定的有序邻居集合中的order-th元素替换A中的每个元素.在您的情况下,创建一个类似的圆形域

domain=fspecial('disk',10)>0;
Run Code Online (Sandbox Code Playgroud)

这会产生一个漂亮的二进制磁盘(21x21矩阵),这可能对您的需求来说太大了,因此可以使用fspecial或重新调整大小imresize.然后,中位数是从域的排序的非零元素获得的中间值,因此:

B = ordfilt2(A,round(0.5*numel(find(domain)))),domain);
Run Code Online (Sandbox Code Playgroud)