图像增强算法.docx
《图像增强算法.docx》由会员分享,可在线阅读,更多相关《图像增强算法.docx(11页珍藏版)》请在冰豆网上搜索。
图像增强算法
图像增强算法
摘要:
本文简要介绍图像增强的概念和图像增强算法的分类,说明了图像增强技术的应用和前景展望。
并简要的介绍了灰度变换和直方图均衡化处理方法。
结合实际,重点对维纳滤波的代码和去噪效果进行了研究。
关键词:
图像增强;灰度变化;直方图均衡化;维纳滤波;代码
1.概述
1.1研究的目的和意义
近年来,随着电子计算机技术的进步,计算机图像处理得到了飞跃的发展,己经成功的应用于几乎所有与成像有关的领域,并正发挥着相当重要的作用。
它利用计算机对数字图像进行系列操作,从而获得某种预期的结果。
对图像进行处理时,经常运用图像增强技术以改善图像的质量增强对某种信息的辨识能力,以更好的应用于现代各种科技领域,图像增强技术的快速发展同它的广泛应用是分不开的,发展的动力来自稳定涌现的新的应用,我们可以预料,在未来社会中图像增强技术将会发挥更为重要的作用。
在图像处理过程中,图像增强是十分重要的一个环节。
因此,对图像增强技术和方法进行研究对国计民生有着十分重要的作用。
本文拟通过对部分图像增强方法的研究,起到巩固书本知识,拓展个人解决问题的能力。
2.1本文的框架结构
本文一共分为五章,第一章是概述,对全文容进行一次提纲性的概括,起到总领的作用。
第二章是图像增强概述。
第三章是图像增强算法。
第四章是维纳滤波代码的研究。
2.图像增强概述
2.1图像增强的基本定义
图像增强是数字图像处理的基本容之一。
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,削弱或去除某些不需要的信息的处理方法,同时也是提高图像质量的过程。
图像增强的目的是为了某种应用目的去改善图像质量,处理的结果使图像的某些特性方面更加鲜明、突出,使处理的结果更适合于人的视觉特性或机器识别分析,以便于实现对图像的更高级处理和分析。
图像增强处理并不能增加原始图像的信息,而只能增强对某种信息的辨识能力,使处理后的图像对某些特定的应用比原来的图像更加有效。
2.2图像增强方法
图像增强方法从增强的作用域出发可分为空间域增强和频率域增强两种。
常见的图像增强方法有:
对比度增强法、直方图均衡化、平滑噪声和锐化等。
2.3图像增强的历史和应用
近年来,随着计算机信息技术的不断发展,图像增强技术得到了长足的发展,广泛地应用到了诸如军事、地质、海洋、森林、医学、微生物和刑侦等领域,发挥着重要的作用,对国计民生的作用不可低估。
图像增强处理始于20世纪60年代,由美国加州理工学院的喷气推进实验室,对徘徊者7号太空飞船发回的月球照片进行处理,标志着图像处理技术得到了实际的应用。
目前,21世纪的图像增强处理技术已向高质量化方面发展,实现了图像的实时处理,采用的数字全息技术使图像包含最为完整和丰富的信息,实现图像的智能生产、处理、理解和识别。
3.图像增强算法
图像增强方法从增强的作用域出发,可分为空间域增强和频率域增强两种。
频率域方法在图像的某个频率域中对变换系数进行处理,然后通过逆变换获得增强图像。
空间域方法对图像进行点运算,是一种既简单又重要的图像处理技术,它能让用户改变图像上像素点的灰度值,这样通过点运算处理将产生一幅新图像。
本节主要介绍灰度变换和直方图均衡变换。
3.1灰度变换
灰度变换是图像增强的重要方法之一,它不改变图像的空间关系,可使图像动态围增大,对比度得到扩展,使图像特征明显,更加清晰。
可表示为:
根据变换函数的形式,灰度变换分为线性变换,分段性变换和非线性变换。
3.1.1线性变换
假定图像f(x,y)的灰度围为[a,b],变换后的图像g(x,y)的灰度围线性的扩展至[c,d],其数学表达式如下:
在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的围。
这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。
采用线性变换对图像每一个像素灰度作线性拉伸,可有效地改善图像视觉效果。
这种线性变换使灰度小于a和灰度大于b的像素灰度强度强行变换成c和d,增强了图像中绝大多数像素的灰度层次感。
原始图像变换结果
3.1.2分段线性变换
为了突出感兴趣目标所在的灰度区间,相对抑制那些不感兴趣的灰度区间,可采用分段线性变换。
设原图像f(x,y)在[0,Mf],感兴趣目标的灰度围在[a,b],欲使其灰度围拉伸到[c,d],则对应的分段线性变换表达式为:
3.1.3非线性变换
当用某些非线性函数如对数函数、指数函数等,作为映射函数时,可实现图像灰度的非线性变换。
⑴对数变换
对数变换的一般表达式为
这里a,b,c是为了调整曲线的位置和形状而引入的参数。
当希望对图像的低灰度区较大的拉伸而对高灰度区压缩时,可采用这种变换,它能使图像灰度分布与人的视觉特性相匹配。
(2)指数变换
指数变换的一般表达式为
这里参数a,b,c用来调整曲线的位置和形状。
这种变换能对图像的高灰度区给予较大的拉伸。
3.2直方图均衡化
直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。
直方图均衡化算法是图像增强空域法中的最常用、最重要的算法之一。
它以概率理论作基础,运用灰度点运算来实现直方图的变换,从而达到图像增强的目的。
这些方法是不以图像保真为原则的,它们是通过增强处理设法有选择地突出某些对人或机器分析感兴趣地信息,抑制一些无用信息,以提高图像地使有价值。
在实际应用中,应针对不同的图像应采用不同的图像增强方法,或同时采用几种适当的增强算法进行实验,从中选出视觉效果较好的、计算不复杂的、又合乎应用要求的一种算法。
3.2.1直方图均衡化的原理
为了改善图像质量,可以对灰度分布进行变换改变,其中一种方法称为直方图均衡化处理。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为
式中ω是积分变量,而T(r)就是r的累积分布函数。
这里,累积分布函数是r的函数,并且单调地从0增加到1,所以这个变换函数满足T(r)在0≤r≤1单值单调增加。
可以证明,用r的累积分布函数作为变换函数可产生一幅灰度级分布具有均匀概率密度的图像。
其结果扩展了像素取值的动态围。
通常把为得到均匀直方图的图像增强技术叫做直方图均衡化处理或直方图线性化处理。
用离散形式表示累积分布函数为:
3.2.2直方图均衡化步骤
(1)列出原始图像灰度级fj,j=0,1,…,k,…,L-1;
(2)统计各灰度级的象素数目,nj,j=0,1,,…,k,…,L-1;
(3)计算原始图像直方图Pf(fj)=nj/n,n为原始图像总的象素数目;
(4)计算累积分布函数c(f);
(5)应用转移函数,计算映射后的灰度级,gi=INT[(gmax-gmin)c(f)+gmin+0.5]
(6)统计映射后各灰度级的象素数目ni,i=0,1,…,p-1;
(7)计算输出图像直方图Pg(gi)=nj/n,i=0,1,…,p-1;
(8)用fj和gi的映射关系,修改原始图像灰度级,获得直方图近似均匀分布的输出图像。
图直方图均衡化对比示意图
4.维纳滤波图像去噪方法的研究
4.1wiener2c++代码
BOOLWienerFilter(WORD*pData,intiWid,intiHgh,intihoodW,intihoodH)
{
if(pData==NULL)
{
returnFALSE;
}
intiSize=iWid*iHgh;
float*pKernel=newfloat[ihoodW*ihoodH];
for(inti=0;ifloat*pMean=newfloat[iSize];
float*pVal=newfloat[iSize];
for(i=0;i{pMean[i]=(float)(pData[i]*pData[i]);}
Filter2(pVal,pMean,iWid,iHgh,pKernel,ihoodW,ihoodH);
Filter2(pMean,pData,iWid,iHgh,pKernel,ihoodW,ihoodH);
for(i=0;i{pVal[i]=pVal[i]-(pMean[i]*pMean[i]);}
//tempformean
doubledMean=0;
for(i=0;i{
dMean+=(double)pVal[i]/iHgh;
}
dMean=dMean/iWid;
for(i=0;i{
pVal[i]=(pVal[i]-(float)dMean)>0?
(pVal[i]-(float)dMean):
0;
floatftemp=(pData[i]-pMean[i])*pVal[i]/(pVal[i]+(float)dMean)+pMean[i];
if(ftemp<0){ftemp=0;}
if(ftemp>(GRAYLEVEL-1)){ftemp=GRAYLEVEL-1;}
pData[i]=(WORD)ftemp;
}
deletepKernel;
deletepMean;
deletepVal;
returnTRUE;
}
voidFilter2(float*pRes,WORD*pData,intiWid,intiHgh,float*pKernel,intiKWid,intiKHgh)
{
floatftemp=0;
for(intj=0;j{
for(inti=0;i{
ftemp=0;
for(intx=0;x{
for(inty=0;y{
intix=(x-iKWid/2+i)<0?
0:
(x-iKWid/2+i);
intiy=(y-iKHgh/2+j)<0?
0:
(y-iKHgh/2+j);
if((ix+1)>iWid){ix=iWid-1;}
if((iy+1)>iHgh){iy=iHgh-1;}
ftemp+=pData[ix+iy*iWid]*pKernel[x+y*iKWid];
}
}
pRes[j*iWid+i]=ftemp;
}
}
}
voidFilter2(float*pRes,float*pData,intiWid,intiHgh,float*pKernel,intiKWid,intiKHgh)
{
floatftemp=0;
for(intj=0;j{
for(inti=0;i{
ftemp=0;
for(intx=0;x{
for(inty=0;y{
intix=(x-iKWid/2+i)<0?
0:
(x-iKWid/2+i);
intiy=(y-iKHgh/2+j)<0?
0:
(y-iKHgh/2+j);
if((ix+1)>iWid){ix=iWid-1;}
if((iy+1)>iHgh){iy=iHgh-1;}
ftemp+=pData[ix+iy*iWid]*pKernel[x+y*iKWid];
}
}
pRes[j*iWid+i]=ftemp;
}
}
}
Relatedposts:
4.2二维自适应维纳滤波对高斯噪声的滤除
I=imread('C:
\桌面\1.gif');%读取图像
J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声
K2=wiener2(J,[33]);%对加噪图像进行二维自适应维纳滤波
K2=wiener2(J,[55]);%对加噪图像进行二维自适应维纳滤波
K2=wiener2(J,[77]);%对加噪图像进行二维自适应维纳滤波
K2=wiener2(J,[99]);%对加噪图像进行二维自适应维纳滤波
subplot(2,3,1);imshow(I);
title('原始图像');
subplot(2,3,2);imshow(J);
title('加噪图像');
subplot(2,3,3);imshow(K1);
title('恢复图像1');
subplot(2,3,4);imshow(K2);
title('恢复图像2');
subplot(2,3,5);imshow(K3);
title('恢复图像3');
subplot(2,3,6);imshow(K4);
title('恢复图像3');
维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能,deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise。
imnoise的语法格式为
J=imnoise(I,type)
J=imnoise(I,type,parameters)
其中J=imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。
参数type和parameters用于确定噪声的类型和相应的参数。
下面命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如下:
图去噪效果图
参考文献
[1]弼程,天强等编著.智能图像处理技术[M].:
电子工业,2004.
[2]阮秋琦.数字图像处理学[M].:
电子工业,2003.
[3]徐飞.Matlab应用图像处理[M].:
电子科技大学,2002.
[4]传波,金先级.数字图像处理[M].:
机械工业,2004.
[5]清枝.基于直方图修正的图像增强技术[J].公安科技,2004.(9).
[6]书海,傅录祥.实用数字图像处理[M].:
科学,2005.