资源描述:
《vc实现对退化图像的恢复》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、VC++实现对退化图像的恢复摘要:本文以VC++6.0为编程工具,讲述了采取逆滤波和维纳滤波两种图像恢复算法对退化图像的恢复实现过程。 引言 图像恢复技术是图像处理领域一类重要的处理技术,与图像增强等其他基本图像处理技术类似,该技术也是以获取视觉质量得到某种程度改善为目的的,所不同的是图像恢复过程需要根据指定的图像退化模型来完成,根据这个退化模型对在某种情况下退化或恶化了的退化图像进行恢复,以获取到原始的、未经过退化的原始图像。换句话说,图像恢复的处理过程实际是对退化图像品质的提升,并通过图像品质的提升来达到图像在视觉上的改善。本文以VC++作为
2、开发工具,讲述了对退化图像进行逆滤波和维纳滤波处理算法。 逆滤波处理 对图像进行恢复处理通常需要根据一定的图像退化模型来进行,一个简单的通用图像退化模型可将图像的退化过程模型化为一个作用在原始图像f(x,y)上的退化系统H,作用结果与一个加性噪声n(x,y)的联合作用导致产生出了退化图像g(x,y),表现为数学形式为g(x,y)=H[f(x,y)]+n(x,y)。根据上述退化系统H可以从给定的退化图像g(x,y)得到原始图像f(x,y)的一个近似结果。逆滤波处理就是其中一种无约束恢复的图像恢复技术,其恢复过程的数学形式可表示为F(u,v)=G(u
3、,v)/H(u,v)(u,v=0,1,…,M-1),其中F(u,v)和G(u,v)分别为图像f(x,y)和g(x,y)的频域变换,H(u,v)可看作是一个滤波函数。由于图像在退化过程中存在噪声的干扰,因此通常情况下的滤波器往往不是正好的1/H(u,v),而是关于u和v的某个非线形的恢复转移函数M(u,v)。经过以上的分析,图像的退化和恢复过程(模型)大致可用下图来表示: 一种简便的恢复方法是在选取恢复转移函数M(u,v)时,如果u2+v2≤w2,则取值1/H(u,v),否则为1。这样处理虽然简单,但是恢复后的图像往往存在较明显的振铃现象,通常为了消
4、除振铃现象,以H(u,v)的值作为判据,如不大于d(05、1,……,N-1)F(u,v)=(1/N)*F(x,v)exp[-j2πux/N](u,v=0,1,……,N-1) 类似也可以得出二维离散傅立叶变换逆变换用一维变换计算的表达式:F(x,v)=F(u,v)exp[j2πux/N](x,y=0,1,……,N-1)f(x,y)=(1/N)*F(x,v)exp[j2πvy/N]](y=0,1,……,N-1) 在分布进行一维傅立叶变换时,多采用"蝴蝶图"的快速算法(详见信号处理方面资料),其核心算法如下:intN=(int)pow(2,M);file://N:序列长度(2的整数次幂)ReverseOrde
6、r(A,N);file://对空间序列进行倒序for(inti=1;i<=M;i++){ intb=(int)pow(2,(i-1)); for(intj=0;j<=(b-1);j++){ floatp=(float)(pow(2,(M-i))*j*2.0*PI/(float)N); for(intk=j;k<=(N-1);){ floattr=(float)(A[k+b].Re*cos(p)+A[k+b].Im*sin(p));file://计算复数运算A*U floatti=(float)(A[k+b].Im*cos(p)-A[k+b
7、].Re*sin(p)); A[k+b].Re=A[k].Re-tr;file://复数运算A-tr A[k+b].Im=A[k].Im-ti; A[k].Re+=tr;file://复数运算A+tr A[k].Im+=ti; k+=b*2; } }} 傅立叶逆变换的同傅立叶变换比较相似,只是在计算exp[j2πvy/N]时同正变换有符号的区别,以及在计算完成后逆变换需要将值除以N,因此不难写出一维傅立叶逆变换的实现代码。在进行二维傅立叶变换将图像由空域变换到频域之前,首先需要通过补0的手段将点数非2的整数次幂的非正方型网格采
8、样构造为一个长宽均为2的整数次幂的正方型网格:intWM=(int)(log(W)/log(2)+1.0f)