自适应中值滤波
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• •
否则扩大窗口 继续扫描 继续选择
• • •
8位的无符号整形数据,取值 范围从0到255 0是黑 255是白 输出过滤后图像
% i横坐标 %j纵坐标 • for i=1:H %大循环 • for j=1:L %大循环 • omiga=2; • %%%%%%%%确定窗口 • while flag(i,j)==1 • zuo=i-omiga; • xia=j-omiga; • you=i+omiga; • shang=j+omiga; • if zuo<1 • zuo=1; • end • if xia<1 • xia=1; • end • if you>L • you=L; • end • if shang>H • shang=H; • end • %%%%%%%窗口确定结束
给smin、smax初始化 totalshi放大后的像素点的个 数 zuo:you xia:shang 为横纵 向扫描 “与” 00、01、10 满足if 把灰度值赋给vect1
%%nanmin 包含缺失值的样 本的最小值 nanmax 包含缺失值的样本 的最大值 %%nanmedian 包含缺失值 的样本的中值
• omiga=2 是最大滤波半 径 • 恒为一 一直执行 • 左右上下扩大窗口
• • • • 滤窗的最大值Smax 要随着噪声的空间密度大 小的变化而进行调整,一般来 说,噪声的空间密度大,选择 Smax也要适当地大一些
• • • •
扩大窗口 但不出边界 i为1、2、3时zuo都是1 , 便是为了不出边界 xia、shang、you同理
中值滤波的基本原理是把数字图 像或数字序列中一点的值用 该点的一个邻域中各点值的 中值代替,让周围的像素值 接近的真实值,从而消除孤 立的噪声点。
• • • • • • • • •
清除工作空间的变量 输入图像 加入椒盐噪声点 密度0.7 显示图像 控制窗口数量 先显示一个 赋给M 确定精度 提高精度 11 是(1,1)是开始的点 H为高,L为长 像素512*512
%%%%%%%%%%%确定最大最小 值 smin=I(i,j); smax=I(i,j); total=(you-zuo+1)*(shang-xia+1); vect1=zeros(1,total-1); kn=1; for in=zuo:you for jn=xia:shang if ((in==i&jn==j)==0) vect1(1,kn)=I(in,jn); kn=kn+1; end end end smin=nanmin(vect1); smax=nanmax(vect1); smed=nanmedian(vect1);
I(i,j)=smed;
flag(i,j)=0; end
得到清晰地像素点 过滤掉噪 声点
来自百度文库
• • • • • • • • • • • • • • • •
else omiga=omiga+2; if omiga>=5 flag11=0; end if omiga>=17 flag11=0; M(i,j)=smed; flag(i,j)=0; end end end%while end%大循环 end%大循环 I=uint8(M); imshow(I);
• • • • • • • • • • • • • • • • •
clear; I=imread('I3_256.bmp'); I=imnoise(I,'salt & pepper', 0.7); imshow(I) figure; M=I; num=1; I=double(I); M=double(M); flag11=1; H=512; L=512; for i=1:H for j=1:L flag(i,j)=1; end end
if (smed-smin)>0&(smax-smed)>0
• v
if smin<M(i,j)&M(i,j)<smax flag(i,j)=0; else M(i,j)=smed;
如果像素点的灰度值介于 最大最小之间 则 flag 标记为零 值不变
else 把中值赋给像素点 输出 flag标记为零