我得到的图像有“斑点噪声”,我的任务是分别在每一层中删除然后重新组合干净的图像。我不允许使用med2flt()只使用中值滤波器。我已经将3个不同的图层分开了红色,绿色和蓝色,但我不知道如何对它们应用中值滤镜。我该怎么做?
答案 0 :(得分:4)
使用nlfilter
如果您被允许使用nlfilter
,则可以尝试使用flt = @(x) median(x(:))
作为其过滤功能。如果您输入doc nlfilter
,则可以找到有关此内容的更多信息。
编写自己的
可能是练习是关于如何自己实现过滤操作。首先,您可能希望使用imf = zeros(size(im, 1) - 2, size(im, 2) - 2);
为过滤后的图像分配内存。该图像稍微小一点,因为处理边缘的一种方法是丢弃它们。然后,考虑for
和x
上的两个y
循环,用于图像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个强度值的中位数。