G(u,v) =F(u,v)+N(u, v)⑶实验名称:图像退化与复原 实验目的1. 了解光电图像的退化原因;2. 掌握和理解基本的噪声模型,并能对图像进行加噪处理;3. 了解点扩展函数(PSF)与光学传递函数(OTF)的关系,熟悉几种经典的退化模 型的模拟试验和OTF 估计方法;4. 熟悉和掌握几种经典的图像复原方法及其基本原理;5. 能熟练利用MATLAB 或C/C++工具进行图像的各种退化处理, 并能编程实现 退化图像的复原。
三. 实验原理光电成像系统出现图像退化的过程是复杂多变的,为了研究的需要,通常情 况下都把退化简化为化为一个线性移不变过程,见下图1所示。
障质过稈 | 屯原图1光电图像退化与复原原理图因此,在空域中退化过程可以表示如下:g (x,y) = f (x,y) * h(x,y) + h(x,y)(1)只有加性噪声不存在情况下,退化过程可以模型化如下表达式:g(x,y) = f (x,y) + h(x,y)(2)其频域表达式为:针对这种退化图像的复原,除了周期噪声以外,通常都可以采用空间域滤波 的方法进行图像复原,此时图像复原与图像增强几乎是没有区别的。
常见的空间 域滤波方法有均值滤波器和统计排序滤波器。
当退化图像存在线性移不变退化时,图像的复原不能采用简单空间域滤波器来实现,要实现线性移不变退化图像的复原, 必须知道退化系统的退化函数,即 点扩展函数h(x,y)。
在点扩展函数已知的情况下,常见图像复原方法有逆滤波 和维纳滤波两种。
在考虑噪声的情况下,逆滤波的原理可以表示如下:通常情况下,N (u,v)是未知的,因此即使知道退化模型也不能复原图像 此外,当H (u,v )的任何元素为零或者值很小时,N (u,v )/H (u,v )的比值决定 着复原的结果,从而导致图像复原结果出现畸变。
对于这种情况, 通常采用限制滤波频率使其难以接近原点值,从而减少遇到零值的可能性。
维纳滤波则克服了逆滤波的缺点,其数学模型表示如下:然而,为退化图像的功率谱很少是已知的,因此常常用下面表达式近似:因此,本实验的内容就是利用上述经典图像复原的原理,对降质退化图像进 行复原。
四. 实验步骤本次实验主要包括光电图像的退化模型和复原方法实现两大部分内容。
(一)图像的退化图像 1、大气湍流的建模°F(u,v) = G(u,v) UF(u,v) =G(u,v) H(u,v) F(u,v) +N(u,v)H(u,v)°犏 F (u,v)=犏 J _________(u,v) H (u,v) H *(u,v)2+ S h (u,v)/S f (u,v)G(u,v)1) 湍流引起图像退化的光学传递函数(OTF 生成。
已知湍流退化模型的 OTF 表达式如下:H (u,v) = exp[-k(u 2+ v 2)5/6 ](7)其中,k 为一个常数,反映了大气湍流的严重程度。
(u,v)分别代表了(x,y )方向的频率坐标。
为了生成中心化的 OTF 可以考虑将式(7)改写为:H (u,v)= exp[-k ((u- M /2)2 + (v- N/2)2)5"](8)其中,M ,N 为图像的长和宽。
2) 读入一幅灰度图像,设定式(8)中k= 0.0025,进行退化试验。
分别显示 原始图像、退化模型和退化图像。
3) 设定k= 0.001、0.00025重复上一步的试验。
2、运动模糊的图像退化试验1)匀速直线运动引起图像退化的光学传递函数(OTF )生成。
已知相机匀速直线运动的OTF 表达式如下:对原图形进行灰度处理由FP 与H 进行相关处理,读入原始图像V显示原图像将上述结果进行 fft 处理得到FP设计退化湍流模型为 H 显示传递函数显示退化图像结束图2大气湍流的退化过程结束图3运动模糊的图像退化(二)图像复原试验 1、逆滤波1) 根据试验(一)设计一幅退化图像(包括噪声污染+模糊退化两部分), 其中模糊退化可选高斯模糊、大气湍流模糊或运动模糊(方向可任意指定,如10度、20度、45度等),噪声模型可自行设定。
H (u,v) =sin[p(ua+ vb)]e - jp(ua+vb)p(ua + vb)(9)其中,T 为相机曝光时间,a ,b 分别表示(x,y )方向的速度;(u,v )分别对应(x, y )方向的频率坐标。
2)读入一幅灰度图像,设定式(9)中T = 1.0, a=b=0.1,编写MATLAB 代码进行模糊退化试验。
要求分别显示原始图像、退化模型和退化图像。
3)设定不同的值,a ,b 值,重复上一步的试验。
4)利用数字显微镜或其它图像采集设备,移动物体过程中,采集图像。
读入原始图像对原图形进行灰度处理显示原图像将上述结果进行fft 处理得到FP设计运动模糊模型为 H 显示传递函数由FP 与H 进行相关处理,显示退化图像2) 利用MATLAB 编程实现利用全逆滤波方法对退化图像的复原。
要求在同 一个窗口下显示原始退化图像、复原结果及复原结果与理想图像的差值图共 3个图,并对复原 结果进行必要的分析。
逆滤波复原公式如下:其中,G(u,v)为退化图像的傅立叶变换,H (u,v)为退化系统的光学传递函数 (OTF 。
3) 伪逆滤波:为了防止逆滤波中H(u,v)过小,使得复原后的图像数据过大和放大噪声,可采用频谱半径(阈值)限制下的逆滤波方法,即其中,R 为中心化频谱 H(u,v)中某点到原点(零频)的距离或半径。
另一种替代方法是直 接限制H(u,v)的值,即其中,c 为一个阈值,用于限制频谱的幅度值。
这种方法被称为伪逆滤波。
实验要求利用式(11)方式的伪逆滤波重复实验步骤内容 2)所涉及的图像。
2、Wiener 滤波1)针对以上逆滤波设计的退化图,编程实现利用Wiener 滤波对其进行复原。
滤波原理如下:F (u,v)= A^<G(u,v)(13)I(u,v)H (u,v) + kUF(u,v) =G(u,v) H(u,v)(10)9.P(u,v) =J0,H (u, v) £ s H (u, v) > s(12)1 1I其中,G(u,v)为退化图像的傅立叶变换,H (u,v)为退化系统的光学传递函数 (OTF , k 为一个与信噪比有关的调节因子。
要求在同一个窗口下显示理想图 像(退化前)、退化图像、复原结果等共3个图,并对复原结果进行必要的分析。
2)改变k 值,重复试验内容1 )。
以上应根据原理自行编写代码,不允许直接调用MATLAB!带的deconvwnr() 函数。
读入原始图像由实验一对fi 进行运动退 显示原始 化处理得f2 ( a=b=0.1 )退化图像对f2进行fft ,fftshift 处理得G1分别利用逆滤波,伪逆滤波, wiener 滤波对G1进行复原处理得到F1分别显示三种:]> J 方式下的复原结果 F 1^F将复原结果F1与理想图像做减法,得到差值F2分别显示三种V 七&方式下的差值结束图4全逆,伪逆,wiener 滤波复原过程五. 实验结果及分析1、大气湍流的建模图6图7分析:由上述结果可知,大气湍流会使图像变得模糊,而k值越大,其模糊效果越明显。
2、运动模糊的图像退化试验分析:由上述结果可知,随着 a , b 的值变大,图像模糊变得明显,人眼看起来好像是由于运动速度过快造成的模糊。
图8图93、图像复原试验原皓土址国* 屋值园图10:图11-图12分析:图10,图11,图12分别为全逆,伪逆,wiener对运动模糊(a=b=0.1)滤波的结果,从中可以看出wiener是三者中对运动模糊复原效果最好的滤波方式,且wiener中k值越小复原效果越好。
六.实验心得体会和建议心得体会:通过这次实验使我了解了图像退化的原因,以及相关的退化模型,并学会以matlab 为平台利用退化模型对图像进行退化处理以及退化图像的 复原处理建议:可以要求利用C 或C+世行图像的退化与复原处理七. 程序源代码% title : atmosphere% explain :本程序利用大气湍流模型对理想图像进行退化 f=imread('3.jpg'); figure(1)subplot(131),imshow(f),title(' 原始图像') f=rgb2gray(f); Fp=fft2(f);[m, n]=size(f);% 绘制网格点 [v,u]=meshgrid(1: n,1:m); u=u-floor(m/2); v=v-floor( n/2); k=0.00025; Duv=u.A 2+v.A 2;H=exp(-k.*Duv4(5/6)); G=H.*fftshift(Fp); f1=abs(ifft2(G));n char = nu m2str(k);ltext = strcat('k=', n char);% subplot(132),imshow(H),title(['subplot(133),imshow(f1,[]),title(' % title : move% explain :本程序利用运动模糊模型对理想图像进行退化 f=imread('3.jpg'); figure(1)subplot(131),imshow(f),title(' 原始图像') f=rgb2gray(f);[m, n]=size (f); [v,u]=meshgrid(1: n,1:m); u=u-floor(m/2); v=v-floor( n/2);标题注释传递函数',ltext]);退化图像');T=1.0; a=0.3;b=0.3;% a=0.1,b=0.1;% a=0.01,b=0.01;z=pi*(u*a+v*b)+eps;H=T./z.*si n(z) .*exp(-1j*z);Fp=fft2(f);G=H.*fftshift(Fp);f1=abs(ifft2(G));n char = nu m2str(a);ltext = strcat('a=b=', n char);subplot(132),imshow(H),title([' 传递函数:ltext]);subplot(133),imshow(f1,[]),title(' 退化图像');% title : recovery% explain :本程序利用运动模糊对加入椒盐噪声的理想图像进行退化,之后分别用全逆滤波%伪逆滤波,wiener滤波对设计的退化图进行处理,观察三种滤波的复原效果。