ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:78.81KB ,
资源ID:22233341      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22233341.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Visual+C++实现数字图像增强处理Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Visual+C++实现数字图像增强处理Word文件下载.docx

1、pWnd=GetDlgItem(IDC_Graphic);/得到ZFT对话框内的Frame控件的指针;file:/(IDC_Graphic为放置在对话框上的一个Picture控件,并讲类型设置为)。pWnd-GetClientRect(&rect);/得到控件窗口的视区域;int i;CPaintDC dc(pWnd);控件的设备上下文;/画直方图的x、y轴;dc.MoveTo(0,rect.Height();dc.LineTo(rect.Width(),rect.Height();dc.LineTo(0,0);/画直方图,num是的内部数组变量,存放的是图像各个灰度级出现的概率;该数组的各个

2、分量在显示具体图像的直方图时设置;for(i=0;iSetWindowText(LPCTSTR)string);CDialog:OnMouseMove(nFlags, point);/void CDibView:OnImagehorgm()file:/在程序的类对象内处理显示图像直方图的函数;CDibDoc *pDoc=GetDocument();HDIB hdib;hdib=pDoc-GetHDIB();BITMAPINFOHEADER *lpDIBHdr;/位图信息头结构指针;BYTE *lpDIBBits;/指向位图像素灰度值的指针;lpDIBHdr=( BITMAPINFOHEADER

3、 *)GlobalLock(hdib);/得到图像的位图头信息lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);/获取图像像素值 ZFT dialog;/直方图对话框模板对象;int i,j;int wImgWidth=lpDIBHdr-biWidth;int wImgHeight=lpDIBHdr-biHeight;/a数组用来存放各个灰度级出现的概率;float a256;i+)/初始化数组; ai=0; /统计各个灰度级出现的次数;WIMGHEIGHT;I+)for(j=0;jint Width=

4、lpDIBHdr-HEIGHT;for(j=30;WIDTH-20;num*(lpDIBBits+WIDTHBYTES(Width*8)*i+j)+;/p存放图像各个灰度级的出现概率;pi=numi/(Width*Height);/p1存放各个灰度级之前的概率和,用于直方图变换; for(k=0;kbiWidth,lpDIBHdr-biHeight,0,0,lpDIBHdr-biHeight,lpDIBBits,(LPBITMAPINFO)lpDIBHdr,DIB_RGB_COLORS,SRCCOPY);/显示图像;(a)LENA原图 (b)直方图均衡化后的效果图 (c)原始图象的直方图(d)

5、均衡化后的直方他图 图 二从上述效果图可以看出,经过直方图均衡化处理后,图像变的清晰了,从直方图来看,处理后的LENA的图像直方图分布更均匀了,在每个灰度级上图像都有像素点。但是直方图均衡化存在着两个缺点:1)变换后图像的灰度级减少,某些细节消失;2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。为此M.Kamel和Lian Guan等人从图像相邻像素一般高度相关这一事实出发,将灰度概率分布和空间相关性联系在一起,提出了用二维条件概率密度函数取代一维概率密度函数作为均衡化条件,很好的解决了这个问题,有兴趣的朋友可以参阅一些图像处理书籍和资料。2图像平滑图像平滑主要是为了消除噪声。噪

6、声并不限于人眼所能看的见的失真和变形,有些噪声只有在进行图像处理时才可以发现。图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。图像中的噪声往往和信号交织在一起,尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,如何既平滑掉噪声有尽量保持图像细节,是图像平滑主要研究的任务。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时系统中所要提取的汽车边缘信息也主要集中在其高频部分,因此,如何去掉高频干扰又同时保持边缘信息,是我们研究的内容。为了去除噪声,有必要对图像进行平滑,可以采用低通滤波的方法去除高频干扰。图像平滑包括空域法和频域法两大类,

7、在空域法中,图像平滑的常用方法是采用均值滤波或中值滤波,对于均值滤波,它是用一个有奇数点的滑动窗口在图像上滑动,将窗口中心点对应的图像像素点的灰度值用窗口内的各个点的灰度值的平均值代替,如果滑动窗口规定了在取均值过程中窗口各个像素点所占的权重,也就是各个像素点的系数,这时候就称为加权均值滤波;对于中值滤波,对应的像素点的灰度值用窗口内的中间值代替。实现均值或中值滤波时,为了简便编程工作,可以定义一个n*n的模板数组。另外,读者需要注意一点,在用窗口扫描图像过程中,对于图像的四个边缘的像素点,可以不处理;也可以用灰度值为的像素点扩展图像的边缘。下面给出了采用加权均值滤波的图像平滑函数代码和效果图

8、:OnImagePh() HANDLE data1handle;LPBITMAPINFOHEADER lpBi;unsigned char *hData;unsigned char *data;BeginWaitCursor();lpBi=(LPBITMAPINFOHEADER)GlobalLock(HGLOBAL)hdib);hData=(unsigned char*)FindDIBBits(LPSTR)lpBi);pDoc-SetModifiedFlag(TRUE);data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi-biWidth*8)*

9、lpBi-biHeight);data=(unsigned char*)GlobalLock(HGLOBAL)data1handle);AfxGetApp()-BeginWaitCursor();int i,j,s,t,ms=1;int sum=0,sumw=0;int mask33=1,1,1,1,2,1,1,1,1;/定义的3x3加权平滑模板; ibiHeight; i+)for(j=0; jbiWidth; j+) sumw=0; sum=0;for(s=(-ms); s=ms; s+)for(t=(-ms); t=0)&(j+t)(i+s)biHeight)&(j+t)biWidth)

10、sumw += mask1+s1+t; sum+=*(hData+(i+s)*WIDTHBYTES(lpBi-biWidth*8)+(j+t)*mask1+s1+t;if(sumw=0) sumw=1;sum/=sumw;if(sum255)sum=255;if(sumbiWidth*8)+j)=sum;for( j=0; jbiHeight; j+)ibiWidth;i+) *(hData+i*WIDTHBYTES(lpBi-biWidth*8)+j)=*(data+i*WIDTHBYTES(lpBi-biWidth*8)+j);StretchDIBits (hDC,0,0,lpBi-biW

11、idth,lpBi-lpBi-hData,(LPBITMAPINFO)lpBi,(a)LENA原图(b)平滑后的效果图 图三中值或均值平滑有时处理图像的效果并不是很好,它虽然去除了一定的噪声,但同时使图像中的边缘变的模糊,这主要和所选取的窗口大小有关,为此下面介绍了一种既能保持边缘清晰又能消除噪声的方法,其算法如图四所示:(a)(b) (c) 图 四 图像平滑模板上图的含义是在图像中取5*5的区域,包含点(i,j)的五边形和六边形各四个,3*3的区域一个,计算这九个区域的标准差和灰度的平均值,取标准差最小区域的灰度平均值作为点(i,j)的灰度。由于该算法的实现代码和上述代码大同小异,所以代码部

12、分就不再赘述。3图像锐化图像平滑往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响,这就需要利用图像鋭化技术,使图像的边缘变的清晰。图像銳化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。为了要把图像中间任何方向伸展的的边缘和轮廓线变得清晰,我们希望对图像的某种运算是各向同性的。可以证明偏导平方和的运算是各向同性的,既:式中( )是图像旋转前的坐标,( )是图像旋转

13、后的坐标。梯度运算就是在这个式子的基础上开方得到的。图像(x,y)点的梯度值:为了突出物体的边缘,常常采用梯度值的改进算法,将图像各个点的梯度值与某一阈值作比较,如果大于阈值,该像素点的灰度用梯度值表示,否则用一个固定的灰度值表示。我们在对图像增强的过程中,采用的是一种简单的高频滤波增强方法:式中f,g分别为锐化前后的图像, 是与扩散效应有关的系数。 表示对图像f进行二次微分的拉普拉斯算子。这表明不模糊的图像可以由模糊的图像减去乘上系数的模糊图像拉普拉斯算子来得到。 可以用下面的模板H=1,4,1,4,-20,4,1,4,1来近似。在具体实现时,上述模板H中的各个系数可以改变, 这个系数的选择也很重要,太大了会使图像的轮廓过冲,太小了则图像锐化不明显。实验表明, 选取2-8之间往往可以达到比较满意的效果。下面给出 等于4的情况下的实现代码和效果图:OnMenuitem32785() CClientDC pDC(this);HDC hDC=pDC.GetSafeHdc();SetStretchBltMode(hDC,COLORONCOLOR);CDibDoc *pDoc=GetDocument();HDIB hdib;hdib=pDoc-BITMAPINFOHEADER *lpDIBHdr;BYTE *lpD

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1