【问题标题】:Creating a median filter创建中值过滤器
【发布时间】:2013-11-10 15:12:37
【问题描述】:

我得到一张具有“散斑噪声”的图像,我的任务是分别删除每一层,然后重新组合干净的图像。我不允许只使用 med2flt() 中值滤波器。我已经分离了红色、绿色和蓝色 3 个不同的层,但我不知道如何将中值滤波器应用于它们。我该怎么做?

【问题讨论】:

  • 你可以使用colfiltnlfilter吗?有了这些函数,问题就很简单了。

标签: matlab image-processing filter median


【解决方案1】:

使用nlfilter

如果你被允许使用nlfilter,你可以试试flt = @(x) median(x(:))作为它的过滤功能。如果您输入doc nlfilter,您会找到更多信息。

自己编写

这个练习可能是关于如何自己实现过滤操作。首先,您可能希望使用imf = zeros(size(im, 1) - 2, size(im, 2) - 2); 为过滤后的图像分配内存,该图像要小一些,因为处理边缘的一种方法是丢弃它们。然后,考虑两个for 循环在xy 上用于图像im,如

for x = 1 : size(im, 2) - 2
    for y = 1 : size(im, 1) - 2
        roi = im(y : y + 2, x : x + 2);
        imf(y, x) = median(roi(:));
    end
end

roi 保留 im 的局部 3x3 邻域,median(roi(:)) 允许您计算这 9 个强度值的中值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多