自适应中值滤波

174(30天)
(SANJEEV库马尔
(SANJEEV库马尔 2011年11月27日
回答: 为副总经理 2023年1月8日
clc;
清晰的所有;
关闭所有;
一个= imread (“cameraman.tif”);
图(1)中,imshow (a)、标题(“origanal形象”);
b = imnoise (a,的盐和胡椒02)
图(2)中,imshow (b)、标题(“嘈杂的图像”);
Smax = 9;
i = 1:254
j = 1:254
n = b(我+ 2,j: + 2)
Zmin = min (n (:));
Zmax = max (n (:));
zm评选=值(n (:));
sx = 3;
sy = 3;
A1 = Zmed-Zmin;
A2 = Zmed-Zmax;
如果(A1 > 0) & & (A2 < 0)
B1 = Zxy-Zmin;
B2 = Zxy-Zmax;
如果(B1 > 0) & & (B2 < 0)
b(我+ 2,j: + 2) = n (i, j);
打破;
其他的
b(我+ 2,j: + 2) = zm评选;
打破;
结束
其他的
sx = sx + 2;
sy = sy + 2;
如果(sx > Smax) & & (sy > Smax)
b(我+ 2,j: + 2) = n (i, j);
结束
结束
结束
结束
图(3)中,imshow (b)、标题(”“去噪图像);
我想实现下面的算法,但上面的职业。是错误的,我无法找到. .
请帮我.......
自适应中值滤波器的大小变化Sxy(社区)的大小在操作。
符号
Zmin =最低灰色在Sxy水平值
Zmax =最大灰色在Sxy水平值
zm评选=值灰色的水平Sxy
Zxy =灰度在坐标(x, y)
Smax =最大允许Sxy大小
算法
水平答:A1 = zm评选- Zmin
A2 = zm评选- Zmax
如果A1 > 0,A2 < 0,去到B级
其他的增加窗口大小
如果窗口大小< Smax,重复一个水平
其他的输出Zxy
水平B: B1 = Zxy - Zmin
B2 = Zxy - Zmax
如果B1 > 0,B2 < 0、输出Zxy
其他的输出zm评选
3评论

登录置评。

接受的答案

图像分析
图像分析 2011年11月27日
你需要的内容“如果”和使它成为一个功能块的中心位置和窗口大小作为输入参数。然后在“其他”阻止你需要增加窗口大小和调用该函数。类似的
%确定窗口大小。
如果(A1 > 0) & & (A2 < 0)
windowSize = standardSize;% 3之类的
其他的
windowSize =%你的公式更大的窗口
结束
%的任务。
newImage (x, y) = GetMedian (x, y, windowSize)
2的评论
伊恩Wildemann
伊恩Wildemann 2021年9月29日
如何让这个函数有帮助吗?原始代码不是已经没有这个函数做这些事情?

登录置评。

答案(1)

为副总经理
为副总经理 2023年1月8日
同步性是奇怪的。在看到这一个问题一个月前,在接下来的几天我一直看到类似的线程。有很多不完整,poorly-working或缺少文档的实现。我发现最好的之一 一个。我想我也可以把一个在一起工作并且是可读的。
MIMT amedfilt()中描述的概念类似于上面的pdf,虽然我把它改为有更广泛的实用程序。为了比较,我也实现了一个更典型的固定窗平均噪声去除过滤器,fmedfilt ()。
让我们先从一个非常嘈杂的图像。
%一个图像
inpict0 = imread (“circuit.tif”);
%的噪音
inpict = imnoise (inpict0,的盐和胡椒,0.6);
%使用固定窗过滤和默认值
%,第二个参数是滤波器的宽度
op1 = fmedfilt (inpict 11);
%使用自适应滤波器
%,第二个参数是最大过滤半径
《凤凰社》第2章= amedfilt (inpict 5);
虽然这是一个极端的例子,我们可以看到,这两个过滤器的工作。自适应滤波器往往是更好地留住对比。固定过滤结果不错,但有点吵着,特别是在边缘。
固定过滤器的违约是类似于其他好 例子 在论坛上分享。噪音的歧视是一个简单的测试,看看当前的像素是饱和(例如uint8 0或255)。如果由于某种原因(如某些中间处理或压缩),噪声像素不是完全饱和,他们将不被取代。虽然这可以解决通过添加一些公差参数固定滤波器,自适应滤波器是不受影响。
%降低噪声像素极端(1%)
可= inpict ~ = inpict0;
inpict(可)= imadjust (inpict(可),[0,1],[0.01 - 0.99]);
%失败完全紧公差
op1 = fmedfilt (inpict 11);
%更宽容了噪音
《凤凰社》第2章= fmedfilt (inpict 11 0.015);
% amedfilt()不受影响
op3 = amedfilt (inpict 5);
至于amedfilt的方式()偏离规定的算法或期望,有两件事提。第一,因为我已经包括了这些MIMT,这些工具都是编写独立于图像处理工具箱,但他们可能依靠MIMT工具代替。我把它作为练习留给学生。
第二个改变是一个懒散的尝试对有损压缩使滤波器更加健壮。它并不少见,测试图像在完全不恰当的运输像JPG格式。如果这种脉冲噪声是图像压缩,很有点更困难比之前的例子可能建议过滤器。这种变化引入了一个额外的参数控制顺序统计量用于窗口调整和噪声测试的歧视。默认情况下,这是当地的最小/最大,但可以调整。自窗口大小是可变的,这些都是指定的修改相对的方式。
%一个图像
inpict0 = imread (“circuit.tif”);
%添加噪声
inpict = imnoise (inpict0,的盐和胡椒,0.1);
%主题图像有损压缩
%这是MIMT便利的工具,只是保存图像和读取
inpict = jpeg (inpict, 70);
%需要广泛的宽容;嘈杂的
op1 = fmedfilt (inpict 11 0.15);
%,但表现不佳
《凤凰社》第2章= amedfilt (inpict 5);
%改进
op3 = amedfilt (inpict 5 1);
%比较结果和原始
inpict0 err1 = immse(凤凰社第一章)
inpict0 err2 = immse(《凤凰社》第2章)
err3 = immse (op3 inpict0)
err1 =
140.1061
err2 =
329.9459
err3 =
43.4217
我肯定有其他规范的方法来处理这样一个形象,但我对这额外的特性是功利主义和很大程度上的兴趣无关的原始动机。一旦我有一个工作噪声去除过滤器,我发现自己不知道多久会之前我需要把它应用到一个截图,有人发布到论坛。为此,我相信我的修改就足够了。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!