文档详情

中值滤波 - 图文

鑫**
实名认证
店铺
DOCX
36.66KB
约27页
文档ID:256421119
中值滤波 - 图文_第1页
1/27

中值滤波 - 图文 数学号:专业: 字 图 像 处 理姓名:XXXXXXXXXXXXXXXXXXXXXXXXXX XX非线性平滑——中值滤波一. 试验目的1. 了解统计排序滤波器在数字图象处理中的作用; 2. 理解中值滤波的原理、特点、适用对象; 3. 驾驭中值滤波的各种方法二. 试验原理中值滤波是一种非线性信号处理方法,与其对应的中值滤波器是一种统计排序滤波器,用象素邻域内各灰度级排序的中值来代替该象素的灰度级〔用一个奇数点的移动窗口,将窗口中心点的值用窗口内的中值代替〕,必须条件下,可以克制线性滤波器〔如邻域平滑滤波等〕所带来的图象细微环节模糊,而且对滤除脉冲干扰及图象扫描噪声最为有效〔中值滤波的输出与输入噪声的密度分布有关,对随机噪声的抑制实力,中值滤波比平均值滤波要差一些;但对脉冲干扰,特殊是脉冲宽度小于窗口一半、相距较远的窄脉冲干扰,中值滤波的效果较好〕设有一个一维序列f1, f2, …, fn,取窗口长度〔点数〕为m〔m为奇数〕,对其进展中值滤波,就是从输入序列中相继抽出m个数fi-v, …, fi-1, fi, fi+1, …, fi+v〔其中fi为窗口中心点值,v=(m-1)/2〕,再将这m个点按其数值大小排序,取其序号为中心点的那个数作为滤波输出。

用数学公式表示为:yi?Med{fi?v,?,fi,?fi?v}m?1i?N,v?〔4—1〕2这样处理的特点是:周期小于m/2〔窗口一半〕的脉冲会被抑制,而周期大于m/2〔窗口一半〕的脉冲得到保存,在窗口内单调增加或单调削减的序列,中值滤波输出信号仍保持输入信号不变〔利用这个特点,可以使中值滤波既能去除图象中的噪声,又能保持图象中一些物体的边缘〕同理,二维中值滤波可由下式表示:yij?Med{fij}〔4—2〕A式中:A为窗口; {fij}为二维数据序列这样处理的特点是:当在窗口内,被噪声污染的象素不超过滤波器区域的一半时,噪声会被抑制;当在窗口内,被噪声污染的象素超过滤波器区域的一半时,噪声会得到保存二维中值滤波的窗口形态和尺寸对滤波效果影响较大,不同的图象内容和不同的应用要求,往往采纳不同的窗口形态和尺寸常用的二维中值滤波窗口有线状、十字形、方形等窗口尺寸一般先用3×3,再取5×5渐渐增大,直到滤波效果满足为止就一般经历来讲,对于有缓变的较长轮廓线物体的图象,采纳方形窗口为宜对于包含有尖顶物体的图象,用十字形窗口;而窗口大小那么以不超过图象中最小有效物体的尺寸为宜假如图象中点、线、尖角细微环节较多,那么不宜采纳中值滤波。

对一些内容困难的图象,可以运用复合型中值滤波,如中值滤波的线性组合,即将几种窗口尺寸大小和形态不同的中值滤波器复合运用,只要各窗口都与中心对称,滤波输出可保持几个方向上的边缘跳变,而且跳变幅度可调整;其线性组合方程如下:Yij??akMed{fij}〔4—3〕k?1AkN式中:ak为不同中值滤波的系数,Ak为窗口三. 程序代码1. 方形模板滤波clear;I=imread('f:00.tif');figure,imshow(I),title('原始图象'); J=imnoise(I,'salt& pepper',0.02);figure,subplot(1,2,1),imshow(J); title('椒盐噪声干扰图像') X=J;k=5; %中值k=5[M,N]=size(X); %求出输入图像的行数M和列数N p=M+2; q=N+2;g=zeros(p,q); %产生一个大一圈的零矩阵 fori=2:p-1 for j=2:q-1 g(i,j)=X(i-1,j-1);%外围为零的X矩阵 end end for i=2:p-1 %进展中值滤波 for j=2:q-1 B=g(i-1:i+1,j-1:j+1); %把图像中的一个3*3领域赋给B temp=B(:); %把领域中的元素变成一维并赋给temp for m=1:9 %利用冒泡法排序 for n=2:9 if temp(n-1)>temp(n) t=temp(n-1); temp(n-1)=temp(n); temp(n)=t; end end end %tempSort=sort(temp);%对其中的像素值进展排序 y(i-1,j-1)=temp(k);%将模板的中值〔k=5)赋给模板中心位置的元素 end; end; Y=uint8(y); %图像是八位灰度级,matlab读入图像的函数是uint8 subplot(1,2,2),imshow(Y);title('3×3中值滤波图像') 滤波结果截图 程序代码clear;I=imread('f:00.tif');figure,imshow(I),title('原始图象'); J=imnoise(I,'salt& pepper',0.02);figure,subplot(1,2,1),imshow(J); title('椒盐噪声干扰图像') X=J;k=13; %中值k=13[M,N]=size(X); %求出输入图像的行数M和列数N p=M+4; q=N+4;g=zeros(p,q); %产生一个大两圈的零矩阵 fori=3:p-2 for j=3:q-2 g(i,j)=X(i-2,j-2);%外围为零的X矩阵 end end for i=3:p-2 %进展中值滤波 for j=3:q-2 B=g(i-2:i+2,j-2:j+2); %把图像中的一个5*5领域赋给B temp=B(:); %把领域中的元素变成一维并赋给temp for m=1:25 %利用冒泡法排序 for n=2:25 if temp(n-1)>temp(n) t=temp(n-1); temp(n-1)=temp(n); temp(n)=t; end end end %tempSort=sort(temp);%对其中的像素值进展排序 y(i-2,j-2)=temp(k);%将模板的中值〔k=5)赋给模板中心位置的元素 end; end; Y=uint8(y); %图像是八位灰度级,matlab读入图像的函数是uint8 subplot(1,2,2),imshow(Y);title('5×5中值滤波图像') 结果截图 程序代码clear;I=imread('f:00.tif');figure,imshow(I),title('原始图象');J=imnoise(I,'gaussian'); %默认值为零均值,方差为0.01figure,subplot(1,2,1),imshow(J);title('参加高斯噪声图像'); X=J;k=5; %中值k=5[M,N]=size(X); %求出输入图像的行数M和列数N p=M+2; q=N+2;g=zeros(p,q); %产生一个大一圈的零矩阵 fori=2:p-1 for j=2:q-1 g(i,j)=X(i-1,j-1);%外围为零的X矩阵 end end for i=2:p-1 %进展中值滤波 for j=2:q-1 B=g(i-1:i+1,j-1:j+1); %把图像中的一个3*3领域赋给B temp=B(:); %把领域中的元素变成一维并赋给temp for m=1:9 %利用冒泡法排序 for n=2:9 if temp(n-1)>temp(n) t=temp(n-1); temp(n-1)=temp(n); temp(n)=t; end end end %tempSort=sort(temp);%对其中的像素值进展排序 y(i-1,j-1)=temp(k);%将模板的中值〔k=5)赋给模板中心位置的元素 end; end;Y=uint8(y); %图像是八位灰度级,matlab读入图像的函数是uint8 subplot(1,2,2),imshow(Y);title('3×3中值滤波图像') 结果截图 程序代码clear;I=imread('f:00.tif');figure,imshow(I),title('原始图象');J=imnoise(I,'gaussian'); %默认值为零均值,方差为0.01figure,subplot(1,2,1),imshow(J);title('参加高斯噪声图像'); X=J;k=13; %中值k=13[M,N]=size(X); %求出输入图像的行数M和列数N p=M+4; q=N+4;g=zeros(p,q); %产生一个大两圈的零矩阵 fori=3:p-2 for j=3:q-2 g(i,j)=X(i-2,j-2);%外围为零的X矩阵 end end for i=3:p-2 %进展中值滤波 for j=3:q-2 B=g(i-2:i+2,j-2:j+2); %把图像中的一个5*5领域赋给B temp=B(:); %把领域中的元素变成一维并赋给temp for m=1:25 %利用冒泡法排序 for n=2:25 if temp(n-1)>temp(n) t=temp(n-1); temp(n-1)=temp(n); temp(n)=t; end end end %tempSort=sort(temp);%对其中的像素值进展排序 y(i-2,j-2)=temp(k);%将模板的中值〔k=5)赋给模板中心位置的元素 end; end; Y=uint8(y); %图像是八位灰度级,matlab读入图像的函数是uint8 subplot(1,2,2),imshow(Y);title('5×5中值滤波图像') 结果截图 程序代码clear;J=imread('f:00.Bmp');subplot(1,2,1),imshow(J); title('瑞利噪声干扰图像') X=J;k=5; %中值k=5[M,N]=size(X); %求出输入图像的行数M和列数N p=M+2; q=N+2;g=zeros(p,q); %产生一个大一圈的零矩阵 fori=2:p-1 for j=2:q-1 g(i,j)=X(i-1,j-1);%外围为零的X矩阵 end end for i=2:p-1 %进展中值滤波 for j=2:q-1 B=g(i-1:i+1,j-1:j+1); %把图像中的一个3*3领域赋给B temp=B(:); %把领域中的元素变成一维并赋给temp for m=1:9 %利用冒泡法排序 for n=2:9 if temp(n-1)>temp(n) t=temp。

下载提示
相似文档
正为您匹配相似的精品文档