《《线性滤波器》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《线性滤波器》PPT课件.ppt(36页珍藏版)》请在三一办公上搜索。
1、第五章 线性滤波器和热传导方程,针对均值滤波器,在局部性和迭代条件下,推导出:算术平均滤波器经局部化和迭代作用的极限状态是热传导方程初值问题的解,且所有的线性滤波器都具有同样的特性。,5.1 线性滤波器根据前面的内容知道,滤波T的过程可以看做其中,滤波器系数为 w(i,j),i,j=-n,-n+1,-1,0,1,n-1,n在连续模型下,相应的变换是 Tu(x)=u(x)j(x),其中j(x)是事先定义的一个关于原点对称的,且满足归一化条件的函数,即通常,把上面的图像变换T称为线性滤波器,因为对于任意两幅图像f,g和任意的实数a,b,T满足 T(af+bg)=aT(f)+bT(g),线性滤波器的
2、频率分析通常认为噪声是由图像中的高频信号引起的,因此在许多情况下,采用傅立叶变换的方法对图像进行滤波,即先把一副空间形式下的图像u0(x,y)通过傅立叶变换变成频率域中的形式再通过一个低通滤波器 H(x,h)去掉 U0(x,h)的高频分量,得到 U(x,h)=H(x,h)U0(x,h)其中低通滤波器H(x,m)满足x或h足够大时 H(x,m)=0,最后再通过一个傅立叶逆变换,把U(x,h)变换成空间中的图像形式u1(x,y)。若记h(x,y)为 H(x,h)的傅立叶逆变换,对参数t0,作核函数定义如下线性滤波器 Mt:u0 htu0其中*表示卷积。操作结果:u0经过滤波后得到u1,就是当t=1
3、时,经过滤波器M1滤波后的图像。,5.2 算术均值滤波器迭代和热传导方程连续模型下,记算术均值滤波器算子为Mh,滤波操作为且积分区域选择一x为圆心,h为半径的圆。此时,只有在x点的h邻域D(x,h)中的值才对滤波的结果起作用。假设u0在x点附近C2连续,不失一般性,令 由Taylor展式,其中D表示微分算子,因此,第一项:,第二项:,第三项:,第四项同理:,第五项:,最后一项:,所以有,即,对事先确定的t,如果有序列hn和nn满足hn0,nn,并且nnh2n=t,记un=Mnhu0。若将Mn-1hu0看作原图像,Mnhu0看作滤波后图像,且nh2=t,(n-1)h2=s,则由上式有,取极限得,
4、5.3 线性滤波器和热传导方程一般的线性滤波器Mr(r为参数),经过n次迭代后的结果图像为Mnru0。可以证明,在一些适当的条件下,当滤波器的参数r逐渐缩小到0,而滤波器迭代次数n逐渐增加到,并且满足nr2=t时,滤波所得的结果图像也是上述热传导方程初值问题的解,因此,从迭代的角度看,所有的线性滤波器本质上都是算术均值滤波器。,定理:令g(x)是一个正的、有紧支集且3次连续可微的实函数,即gC30(RN)。同时还满足以下几个正规化条件:(1)(2)对于任何的 i,j=1,N则对于 t0和任意实数列h以及整数n,当t=nh2且n时,有,这个收敛在L2(RN)空间是逐点适用的。其中,(g)n*表示
5、ggggg,卷积n次。所以,对于每个原始有界图像u0(x),定义 Lhu0=gh u0进一步可得(Lh)nu0Ttu0,这里,(Ttu0)(x)=u(t,x)且u(t,x)是个热传导方程初值问题的解,这个定理的证明需要下面的两个引理和两个推论引理1:如果g满足上述条件,同时那么(x)是一个C函数,并且,引理2:g 满足定理的条件,并且如果 x0,有|(x)1|,x 0则存在常数c0,满足|(x)|1(1+c|x|2),推论1:当n时,收敛到,即推论2:当n时,,5.4 用热传导方程对图像进行去噪根据定理,如果把需要去噪的图像u0看做是热传导方程在0时刻的初值问题,那么对于任何一个t,解u(x,
6、t)都是某一个线性滤波图像序列的极限,这个序列可以取为 Mhnu0 其中将热传导方程初值问题的解作为滤波的结果,被滤波的图像作为方程在0时刻的初值,称这个滤波器为热传导方程滤波器,t是滤波器的尺度参数,如图,随t的增大,边缘出现了模糊。,滤波过程要通过计算机来实现,所以并不要求求出方程的解析解,是通过数值解来实现的。在离散算法中,先将 u t=u的左边转化为差分的形式(ut-u0)t=u0即 ut=u0+tu0离散情况下,计算是针对每一个像素(i,j)进行(ut)i,j=(u0)i,j+t(u0)i,j(u0)i,j=(uxx)i,j+(uyy)i,j=(ux)x)i,j+(uy)y)i,j,
7、原图 噪声图像,热传导方程在迭代次数为10,5,2的去噪结果,Image=imread(other.bmp);subplot(2,2,1),imshow(Image);I=imnoise(Image,gaussian,0.01);subplot(2,2,2),imshow(I);w,h=size(I);I=double(I);t=0.1;N=10;for k=1:N D=zeros(w,h);for i=2:w-1 for j=2:h-1 D(i,j)=-4*I(i,j)+I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1);end end I=I+t*D;end subpl
8、ot(2,2,4),imshow(uint8(I);,Image=imread(other.bmp);subplot(2,2,1),imshow(Image);I=imnoise(Image,gaussian,0.01);subplot(2,2,2),imshow(I);I=double(I);h=0,1,0;1,-4,1;0,1,0*0.1;for N=1:10I=I+filter2(h,I);endsubplot(2,2,4),imshow(uint8(I);,二维差分运算的定义是在一维差分的基础上组合而成的。为了保持数值计算的稳定性,我们选择下面的差分格式(ux)i,j=2(ui+1,j
9、-ui-1,j)+ui+1,j+1-ui-1,j+1 ui+1,j-1-ui-1,j-1 8(uy)i,j=2(ui,j+1-ui,j-1)+ui+1,j+1 ui+1,j-1 ui-1,j+1-ui-1,j-1 8,5.5 线性滤波器的应用5.5.1 反热传导方程和图像锐化图像在光滑过程中会出现模糊的情况,例如利用热传导方程来滤波,随参数t的增大,图像变得越来越模糊;或图像在获取、传输过程中导致图像模糊。可以通过图像锐化来强化边缘,突出被模糊部分的界线。Gabor用反热传导方程来锐化图像。将模糊图像v(x)看做下面方程在t时刻的解,即v(x)=u(t,x),可以通过还原u0(x)来进行锐化。
10、Gabor认为,下面的反热传导方程在t时刻的解可以近似作为图像锐化的结果。从离散角度看,在作图像模糊的时候,原图像为u0,模糊的图像为ut,若果t足够小,那么 v=ut u0+tu0,虽然图像在滤波后发生了一定的变化,但因为t足够小,两幅图像可以看做是近似的,即 ut u0所以 utu0+tut也就是 u0ut+t(-ut)那么如果t足够小,离散意义下,反热传导方程在t时刻的解为 vt v+t(-v)即有 u0=vt,但上述锐化要使用两个假设:(1)模糊图像是原图像被热传导方程滤波器作用的结果。(2)参数t足够小。,被模糊的图像 锐化后图像,Matlab源码:I=imread(fuzzy.bm
11、p);subplot(1,2,1),imshow(I);I=double(I);h=0,1,0;1,-4,1;0,1,0*0.1;for i=1:5I=I-filter2(h,I);endsubplot(1,2,2),imshow(uint8(I);,5.5.2 线性滤波器在二值图像中的应用在灰度图像中的一类特殊的图像,灰度值只由0,1(连续模型)或者0,255(离散模型)两个值组成,称为二值图像,也被称为像形状(shape),因为二值图像的信息实际等同于图像支撑集W中的一个子集XW。任何二值图像都具有1x这样的形式,其中1x表示定义在X上的特征函数,具体定义是,为去除二值图像中的多余信息,使
12、经过处理后可以使形状变得规则,Koenderind和Van Dorn于1986年提出了动态边界(dynamic shape)方法总体思想是先求出图像1x经过热传导方程滤波器作用后的结果,选择参数为t,得到的解为1x,t。很显然1x,t不在是二值图像,再采用二值化的方法将其生成二值图像,仍然记为Xt,定义如下,N=20,50,150,250,400处理的结果,Matlab源码:I=imread(dynamic.bmp);subplot(1,2,1),imshow(I);I=double(I);h=0,1,0;1,-4,1;0,1,0*0.1;for N=1:400I=I+filter2(h,I)
13、;endI=im2bw(uint8(I),0.5);subplot(1,2,2),imshow(I);,从结果可以看出,随着t的增加,图像的细节信息越来越少,但没有实现保留重要信息的目的,因为图像的内容的拓扑结构发生了变化,两个物体变成了一个物体。为解决上面的问题,介绍Bence-Merrman-Osher算法(BMO),整个过程是一个迭代过程,描述如下:(1)求1x,t,选择参数t足够小至于(2)作用后不影响形状的拓扑结构;(2)定义X1=x|1x,t(x)1/2,得到二值图像 1X1;(3)令X=X1,再回到(1)。随着迭代次数的增加,细节信息越来越少,同时还保留了形状的拓扑结构。,N=2,5,10,20,30处理的结果,Matlab源码:I=imread(dynamic.bmp);subplot(1,2,1),imshow(I);I=double(I);h=0,1,0;1,-4,1;0,1,0*0.1;for M=1:30 for N=1:50 I=I+filter2(h,I);endI=im2bw(uint8(I),0.5)*255;endsubplot(1,2,2),imshow(I);,