数字图像锐化算法研究_第1页
数字图像锐化算法研究_第2页
数字图像锐化算法研究_第3页
数字图像锐化算法研究_第4页
数字图像锐化算法研究_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 .PAGE15 / NUMPAGES15数字图像锐化算法研究 郭志标 指导老师:江健生摘要: 目前,图像锐化是数字图像处理的最基本的方法之一,它是为了突出图像总的细节或者增强被模糊地细节,这种模糊不是由于错误操作,就是特殊获取方法的固有影响。图像锐化处理的方法多种多样,其也包括多种应用,从电子印象和医学成像到工业检测和军事系统的的制导,等等.图像锐化的主要目的有两个:一是增强图像边缘,使模糊的图像变得更加清晰,颜色变得鲜明突出,图像的质量有所改善,产生更适合人眼观察和识别的图像;二是希望经过锐化处理后,目标物体的边缘鲜明,以便于提取目标的边缘、对图像进行分割、目标区域识别、区域形状提取等,为

2、进一步的图像理解与分析奠定基础。图像锐化一般有两种方法:一是微分法,二是高通滤波法。高通滤波法的工作原理和低通滤波相似,这里不再赘述。下面主要介绍一下两种常用的微分锐化方法:梯度锐化和拉普拉斯锐化。但由于锐化使噪声受到比信号还要强的增强,所以要求锐化处理的图像有较高的信噪比;否则,锐化后图像的信噪比更低。Abstract:At present, image sharpening the digital image processing is one of the basic methods, it is in order to highlight the image total detail

3、or enhancement was vague details, this kind of fuzzy is not due to erroneous operation, is a special method of obtaining inherent influence. Image sharpening method is varied, which also includes a wide variety of applications, from the electronic image and medical imaging to industrial detection an

4、d military system guidance, etc.Image sharpening has two main objectives : one is to enhance the image edge, so that the fuzzy image clarity, color is distinctive, the image quality is improved somewhat, produce more suitable for human observation and image recognition; two is the hope that through

5、the sharpening processing, the edge of the object is bright, in order to extract target edge, image segmentation, target region identification, regional shape extraction, for further image analysis and lay the foundation for. Image sharpening generally has two kinds of methods: one is the differenti

6、al method, two is high-pass filtering method. High pass filtering method and the working principle of low pass filtering similarity, here no longer. Here mainly introduce two kinds of commonly used differential sharpening method: gradient sharpening sharpening and Laplasse. But due to noise by sharp

7、ening than the strong signal enhancement, so the requirements of sharpening image with high signal to noise ratio; otherwise, after sharpening the image signal to noise ratio is lower.关键字:图像锐化,微分法,高通滤波法1微分法图像锐化1.1梯度锐化1基本理论邻域平均法或加权平均法可以平滑图像,反过来利用对应的微分方法可以锐化图像。微分运算是求信号的变化率,有加强高频率分量的作用,从而使图像轮廓清晰。由于图像模糊

8、的实质是图像受到平均或积分运算造成的,所以为了把图像中任何方向伸展的边缘和模糊的轮廓变得清晰,可以对图像进行逆运算如微分运算,从而使图像清晰化。在图像处理中,一阶微分是通过梯度法来实现的。对于一幅图像用函数f(x,f)表示,定义 f(x,f)在点(x,f)处的梯度是一个矢量,定义为:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634090.jpgHYPERLINK :/images.51cto /files/uploadimg/20060921/153223104.gif(5-5)梯度的方向在函数f(x,f)最大变化率的方向上,梯度的幅度G

9、f(x,f) 可由下式算出:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634090.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/164542416.jpg(5-6)由上式可知,梯度的数值就是f(x,f)在其最大变化率方向上的单位距离所增加的量。对于数字图像而言,微分 和 可用差分来近似。式(5-6)按差分运算近似后的梯度表达式为:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634090.jpgHYPERLINK :/new.51

10、cto /files/uploadimg/20080810/164542416.jpg(5-7)为便于编程和提高运算速度,在计算精度允许的情况下,可采用绝对差算法近似为:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634090.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/164542416.jpg(5-8)这种梯度法又称为水平垂直差分法,另一种梯度法是交叉地进行差分计算,称为罗伯特梯度法(Robert Gradient),表示为:HYPERLINK :/new.51cto /file

11、s/uploadimg/20080810/1634090.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/164542416.jpg(5-9)同样,可以采用绝对差算法近似为:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634090.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/164542416.jpg(5-10)运用以上两种梯度近似算法,在图像的最后一行或最后一列无法计算像素的梯度时,一般用前一行或前一列的梯度值近似代替。为了在不

12、破坏图像背景的前提下更好地增强边缘,也可以对上述直接用梯度值代替灰度值的方法进行改进,即利用门限判断来改进梯度锐化方法。具体公式如下: 的计算方法可以采用式(5-8)或式(5-9)。对于图像而言,物体和物体之间、背景和背景之间的梯度变化很小,灰度变化较大的地方一般集中在图像的边缘上,也就是物体和背景交接的地方。当我们设定一个阈值时,大于阈值就认为该像素点处于图像的边缘,对结果加上常数C,以使边缘变亮;而对于 不大于阈值就认为该像素点是同类像素,即为物体或背景,常数C的选取可以根据具体的图像特点。这样,即增亮了物体的边界,同时又保留了图像背景原来的状态,比传统的梯度锐化方法具有更好的增强效果和适

13、用性。2算法实现CImgEnhance类中的成员函数GradSharp()实现梯度锐化操作,本算法程序是根据门限判断的梯度锐化方法编写的,阈值设为20,如果梯度加100大于255,则将其置为255。在对灰度图像进行梯度锐化时直接调用GradSharp()函数即可,以下是GradSharp()函数的代码实现。/* 函数名称:* GradSharp()* 参数:* BYTE threshold-阈值* 返回值:* BOOL - 成功返回TRUE,否则返回FALSE* 说明:该函数用来对图像进行梯度锐化* /*/void CImgEnhance:GradSharp(unsigned char thr

14、eshold) unsigned char *pSrc, *pDst, *pSrc1, *pSrc2;LONG i,j; /循环变量int bTemp;if(m_pImgDataOut != NULL)delete m_pImgDataOut;m_pImgDataOut = NULL; int lineByte = (m_imgWidth *m_nBitCount / 8 + 3) / 4 * 4;if(m_nBitCount != 8)AfxMessageBox(只能处理8位灰度图像!);return ;/创建要复制的图像区域m_nBitCountOut = m_nBitCount;int

15、lineByteOut = (m_imgWidth *m_nBitCountOut / 8 + 3) / 4 * 4;if (!m_pImgDataOut)m_pImgDataOut = new unsigned charlineByteOut * m_imgHeight;int pixelByte = m_nBitCountOut / 8;for(i = 0; i m_imgHeight; i+)for(j = 0; j m_imgWidth * pixelByte; j+)*(m_pImgDataOut + i * lineByteOut + j)= *(m_pImgData + i *

16、lineByteOut + j);for(i = 0; i m_imgHeight; i+) /每行 for(j = 0; j m_imgWidth; j+) /每列/指向新DIB第i行第j列像素的指针pDst = m_pImgDataOut + lineByte *(m_imgHeight -1 - i) + j;/进行梯度运算/指向DIB第i行第j列像素的指针pSrc = (unsigned char*)m_pImgData +lineByte * (m_imgHeight - 1 - i) + j;/指向DIB第i+1行第j列像素的指针pSrc1 = (unsigned char*)m_

17、pImgData +lineByte * (m_imgHeight - 2 - i) + j;/指向DIB第i行第j+1列像素的指针pSrc2 = (unsigned char*)m_pImgData +lineByte * (m_imgHeight - 1 - i)+ j + 1;bTemp = abs(*pSrc)-(*pSrc1) + abs(*pSrc)-(*pSrc2);/判断是否小于阈值if (bTemp+120) = threshold)*pSrc = (bTemp+120);else*pSrc = 255;/生成新的DIB像素值*pDst = *pSrc;3函数调用在视图类CD

18、emoView中映射“梯度锐化”事件的处理函数OnGradesharp()。以下是CDemoView: OnGradesharp()函数的代码实现。 void CDemoView:OnGradesharp()CDemoDoc *pDoc=GetDocument();ImgCenterDib *pDib=pDoc-GetPDib();if(pDib-m_nBitCount!=8&:MessageBox(0,只处理灰度图像,MB_OK,0);return ;CImgEnhance imgnoise(pDib-GetDimensions(),pDib-m_nBitCount,pDib-m_lpCol

19、orTable, pDib-m_pImgData);unsigned char bThre=30;imgnoise.GradSharp(bThre);CMainFrame* pFrame = (CMainFrame *)(AfxGetApp()-m_pMainWnd);pFrame-SendMessage(WM_COMMAND, ID_FILE_NEW);CDemoView* pView=(CDemoView*)pFrame-MDIGetActive()-GetActiveView();CDemoDoc* pDocNew=pView-GetDocument();ImgCenterDib *di

20、bNew=pDocNew-GetPDib();dibNew-ReplaceDib(imgnoise.GetDimensions(),imgnoise.m_nBitCountOut,imgnoise.m_lpColorTable, imgnoise.m_pImgDataOut);pDocNew-SetModifiedFlag(TRUE);pDocNew-UpdateAllViews(pView);Invalidate();4实验结果与分析图5-8(a)显示了一幅花朵的图片,图5-8(b)显示了用门限判断梯度锐化方法对该图像滤波后的结果。由图可以看出,经过锐化处理后的图像既增强了目标的边界,也保留

21、了图像背景原来的状态。HYPERLINK :/book.51cto /files/uploadimg/20060921/153223104.gif(点击查看大图)图5-8 梯度锐化方法的增强结果2.2.1 拉普拉斯掩模锐化1基本理论拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性。一个二维图像函数 的拉普拉斯变换是各向同性的二阶导数,定义为:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634460.jpgHYPERLINK :/images.51cto /files/uploadimg/20060921/153223104.gif(5

22、-11)为了更适合于数字图像处理,将该方程表示为离散形式:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634460.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/165749739.jpgHYPERLINK :/images.51cto /files/uploadimg/20060921/153223104.gif(5-12)另外,拉普拉斯算子还可以表示成模板的形式,如图5-9所示。图5-9(a)表示离散拉普拉斯算子的模板,图5-9(b)表示其扩展模板,图5-9(c)则分别表示其他两种

23、拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。HYPERLINK :/new.51cto /files/uploadimg

24、/20080810/1634460.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/165749739.jpgHYPERLINK :/images.51cto /files/uploadimg/20060921/153223104.gif图5-9 拉普拉斯的4种模板图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到平均运算或积分运算,因此可以对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐

25、化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。拉普拉斯锐化的基本方法可以由下式表示:HYPERLINK :/new.51cto /files/uploadimg/20080810/1634460.jpgHYPERLINK :/new.51cto /files/uploadimg/20080810/165749739.jpg这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提

26、下,突现出图像中小的细节信息。2算法实现CImgEnhance类中的成员函数LapTemplate()实现拉普拉斯锐化操作,在对灰度图像进行梯度锐化时直接调用LapTemplate()函数即可。以下是LapTemplate()函数的代码实现。 /* 函数名称:* LapTemplate(int inputH, intinputW, int inputX0, int inputY0, float* pTemplate, float fCoef)* 参数:* int inputH-模板的高度* int inputW-模板的宽度* int inputX0-模板的中心元素X坐标* int inputY

27、0-模板的中心元素Y坐标* float *pTemplate-指向模板数组的指针* float f-模板系数* 返回值:* void* 说明:* 该函数用指定的模板(任意大小)来对图像进行操作,参数inputH指定模板* 的高度,参数inputW指定模板的宽度,参数inputX0和iinputY0指定模板的中心* 元素坐标,参数pTemplate指定模板元素,f指定系数* 拉普拉斯锐化*/void CImgEnhance:LapTemplate(intinputH, int inputW, int inputX0, intinputY0, float *pTemplate, float f)u

28、nsigned char *pSrc, *pDst;int i,j,k,l;float value;if(m_pImgDataOut != NULL)delete m_pImgDataOut;m_pImgDataOut = NULL; int lineByte = (m_imgWidth *m_nBitCount / 8 + 3) / 4 * 4;if(m_nBitCount != 8)AfxMessageBox(只能处理8位灰度图像!);return ;/创建要复制的图像区域m_nBitCountOut = m_nBitCount;int lineByteOut = (m_imgWidth

29、*m_nBitCountOut / 8 + 3) / 4 * 4;if (!m_pImgDataOut)m_pImgDataOut = new unsigned charlineByteOut * m_imgHeight;int pixelByte = m_nBitCountOut / 8;for(i = 0; i m_imgHeight; i+)for(j = 0; j m_imgWidth * pixelByte; j+)*(m_pImgDataOut + i * lineByteOut + j)= *(m_pImgData + i * lineByteOut + j);/行处理for (

30、i = inputY0; i m_imgHeight -inputH + inputY0 + 1; i+)/列处理for (j = inputX0; j inputW + inputX0 + 1; j+)/指向新DIB第i行第j列像素的指针pDst = m_pImgDataOut + lineByte *(m_imgHeight -1 - i) + j;value=0;/计算for (k = 0; k inputH; k+)for (l = 0; l 255)*pDst = 255;else*pDst = (unsigned char)(value+0.5);3函数调用在视图类CDemoView中映射“拉普拉斯锐化”事件的处理函数:OnLaplacienSharp(),以下是CDemoView: :OnLaplacienSharp()函数的代码实现。void CDemoView:OnLaplacienSharp()CDemoDoc *pDoc=GetDocument();ImgCenterDib *pDib=pDoc-GetPDib();if(pDib-m_nBitCount!=8&:MessageBox(0,只处理灰度图像,MB_OK,0);return ;CImgEnhance imgnoise(pDib-GetDimensions(),pDib-m_n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论