【问题标题】:circular median filter matlab圆形中值滤波matlab
【发布时间】:2013-02-25 12:58:52
【问题描述】:

如何定义一个类似于中值滤波器 (medfilt2) 的圆形滤波器,而不是 [n n] 的正方形邻域,而是在半径为 r 的圆形邻域上执行中值? 我需要对 2d 图像执行此操作。 (而且最好当然应该快速工作)。 谢谢

【问题讨论】:

    标签: matlab image-processing filter computer-vision median


    【解决方案1】:

    ordfilt2 与循环域一起使用。例如,

    B = ordfilt2(A, order, domain)
    

    将 A 中的每个元素替换为由 domain 中的非零元素指定的已排序邻居集合中的第一个元素。在您的情况下,使用类似

    的内容创建一个循环域
    domain=fspecial('disk',10)>0;
    

    这会生成一个不错的二进制磁盘(21x21 矩阵),这可能对您的需要来说太大了,因此可以使用fspecialimresize 重新调整大小以适应您的需要。那么中位数就是域的排序后的非零元素得到的中间值,所以:

    B = ordfilt2(A,round(0.5*numel(find(domain)))),domain);
    

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 2011-10-02
      • 2014-05-19
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 2012-05-16
      • 2015-07-12
      相关资源
      最近更新 更多