图像增强算法.docx
《图像增强算法.docx》由会员分享,可在线阅读,更多相关《图像增强算法.docx(11页珍藏版)》请在冰点文库上搜索。
图像增强算法
图像增强算法
图像增强算法
摘要:
本文简要介绍图像增强的概念和图像增强算法的分类,说明了图像增强技术的应用和前景展望。
并简要的介绍了灰度变换和直方图均衡化处理方法。
结合实际,重点对维纳滤波的代码和去噪效果进行了研究。
关键词:
图像增强;灰度变化;直方图均衡化;维纳滤波;代码
1.概述
1.1研究的目的和意义
近年来,随着电子计算机技术的进步,计算机图像处理得到了飞跃的发展,己经成功的应用于几乎所有与成像有关的领域,并正发挥着相当重要的作用。
它利用计算机对数字图像进行系列操作,从而获得某种预期的结果。
对图像进行处理时,经常运用图像增强技术以改善图像的质量增强对某种信息的辨识能力,以更好的应用于现代各种科技领域,图像增强技术的快速发展同它的广泛应用是分不开的,发展的动力来自稳定涌现的新的应用,我们可以预料,在未来社会中图像增强技术将会发挥更为重要的作用。
在图像处理过程中,图像增强是十分重要的一个环节。
因此,对图像增强技术和方法进行研究对国计民生有着十分重要的作用。
本文拟通过对部分图像增强方法的研究,起到巩固书本知识,拓展个人解决问题的能力。
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.