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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整版图像处理本科毕业设计.docx

1、完整版图像处理本科毕业设计摘 要本文以VC+6.0做为编程语言,对图像降噪技术进行研究。本文通过介绍位图的基本操作以及在图像中加入椒盐噪声的操作,从而进一步引出几种降噪方法。本文分别介绍“均值滤波”、“中值滤波”以及“傅里叶降噪”和“小波降噪”四种算法,实现图像降噪。详细介绍了其基本原理、实现方法以及具体算法,并对降噪效果加以比较与分析。“均值滤波”把每个像素都用周围的8个像素来做均值操作,可以平滑图像,速度快,算法简单。“中值滤波”是常用的非线性滤波方法 ,也是图像处理技术中最常用的预处理技术。同时在“低通滤波”及“小波降噪”中分别引入“快速傅里叶变换”和“Mallat 算法”,使得其取得更

2、快速的计算,有效地解决了其计算量太大,运算时间过长的弊端,从而达到更好的综合降噪效果。 关键词:图像降噪;滤波;傅里叶降噪;小波降噪AbstractTaking VC+6.0 as the programming language, this paper is a study about image noise reduction technology. Furthermore, introducing several noise reducing measures through the introduction of the basic processing and the operati

3、on to put the salt and pepper noise into the image.The paper introduces Averaging Filter, Median Filter,Fourier Lowpass Filtering and Wavelet Filter to achieve image noise reducing. Here we introduce the basic principles, implement methods, detailed arithmetic, and make comparison and analysis the n

4、oise reducing effects.Averaging Filter operates every pixel by using 8 pixels meanly. It can make the images smoothing, fast and easy to calculate. Median Filter Fourier is a common nonlinear filtering way and also common preprocessing technique when processing images. Introducing FFT and Mallat Alg

5、orithm separately into Lowpass Filtering and Wavelet Filter, and then we can make faster calculating and solve the massive calculating more efficiently. Therefore, we can have a more effective noise reducing.Keywords:Image Noise Reduction;Filter;Fourier Filter;Wavelet filter毕业设计(论文)原创性声明和使用授权说明原创性声明

6、本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩

7、印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 1 绪论1.1 VC+6.0简介VC+6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头

8、设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。1.2 数字图像处理基本概念数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求

9、的增长。20世纪20年代,图像处理首次应用于改善伦敦和纽约之间海底电缆发送的图片质量。到20世纪50年代,数字计算机发展到一定的水平后,数字图像处理才真正引起人们的兴趣。1964年美国喷气推进实验室用计算机对“徘徊者七号”太空船发回的大批月球照片进行处理,收到明显的效果。20世纪60年代末,数字图像处理具备了比较完整的体系,形成了一门新兴的学科。20世纪70年代,数字图像处理技术得到迅猛的发展,理论和方法进一步完善,应用范围更加广泛。在这一时期,图像处理主要和模式识别及图像理解系统的研究相联系,如文字识别、医学图像处理、遥感图像的处理等。20世纪70年代后期到现在,各个应用领域对数字图像处理提

10、出越来越高的要求,促进了这门学科向更高级的方向发展。特别是在景物理解和计算机视觉(即机器视觉)方面,图像处理已由二维处理发展到三维理解或解释。近年来,随着计算机和其它各有关领域的迅速发展,例如在图像表现、科学计算可视化、多媒体计算技术等方面的发展,数字图像处理已从一个专门的研究领域变成了科学研究和人机界面中的一种普遍应用的工具。1.3 图像降噪技术研究背景及意义随着计算机科学和图像处理技术的迅速发展,图像在医学成像、模式识别等方面取得了广泛应用。但是,图像在形成、传输过程中,不可避免会受到噪声的干扰,而且有些图像的噪声非常严重,图像中的噪声往往和信号交织在一起,会使图像本身的细节如边界轮廓、线

11、条等变的模糊不清。引起噪声的原因很多,噪声的种类也很多。因此,需要对图像进行降噪处理,便于更高层次的图像分析与理解。如何既对图像中出现的噪声进行合理的抑制、衰减以及去除不需要的信息,又能使有用的信息得到加强,从而便于目标区分或对象解释,是图像去噪主要研究的主要任务。1.4 图像降噪的国内外研究现状图像降噪是图像处理的一个重要环节。目前图像噪声的取出在数字图像处理技术中的重要性愈加明显。近年来,在小波基础上发展起来的图像去噪仍是一个值得关注的问题,在理论和实践上都具有重大的研究意义。其中,基于中值滤波和小波变换的图像去噪小波变换是近年来兴起的信号处理技术,它具有良好的局部化分析特性和多分辨率分析

12、特性,非常适合于图像处理。1.5 关于图像噪声噪声是不可预测的随机信号,通常采用概率统计方法对其进行分析。噪声对图像处理十分重要,它影响图像处理的、采集、处理的各个环节以及输出结果的全过程。特别是图像的输入、采集噪声的抑制是十分关键的问题,若输入伴有较大的噪声,必然影响处理全过程及输出的结果。噪声可以理解为“妨碍人们感觉器官,对所接收的信源信息理解的因素”。 噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。但在很多情况下,这样的描述方法是很复杂的

13、,甚至是不可能的。而实际应用往往也不必要。通常是用其数字特征,即均值方差,相关函数等。因为这些数字特征都可以从某些方面反映出噪声的特征。除此之外,噪声的灰度值与其周围的灰度之间有着明显的灰度差,也正式这些明显的灰度差才造成了视觉障碍。因此一个良好的图像处理系统,不论是模拟处理还是用计算机进行的数字处理,无不把减少最前一级的噪声作为主攻目标。特此根据噪声性质的不同,消除噪声的方法也不同,本文将介绍“均值滤波”、“中值滤波”、“傅里叶降噪”、“小波变换”四种降噪方法。根据噪声产生的来源,大致可以分为外部噪声和内部噪声两大类。外部噪声是指从处理系统外来的影响,如天线干扰或电磁波从电源线窜入系统的噪声

14、。内部噪声则有一下几种最常见形式:(1)由光和电的基本性质引起的噪声。例如电流可看作电子或空穴运动,这些例子运动产生随机散粒噪声,导体中电子流动的热噪声,光量子运动的光量子噪声等。(2)由机械运动引起的噪声。例如,接头振动使电流不稳,磁头或磁带、磁盘抖动等。(3)元器件期检噪声。如光学底片的颗粒噪声,磁带、磁盘缺陷噪声,光盘的疵点噪声等。(4)系统内部电流的噪声。从噪声的分类方法来看是多种多样的。但综合来说,噪声是随机产生的量,所以又可以从统计数学的观点来定义噪声。凡是统计特性不随时间变化的噪声称为平稳的噪声,而统计特性随时间变化的噪声称作非平稳噪声。以上所讨论的各种类型的噪声反映在图像画面上

15、,大致可以分为两种经典的图像噪声。若噪声的幅值基本相同,但是噪声出现的位置是随意的,称这类噪声为椒盐噪声。若从噪声幅值大小的分布统计来看,其密度函数有高斯型、瑞利型,分别称为高斯噪声和瑞利噪声,又如频谱均匀分布的噪声称为白噪声等等。本文着重讨论椒盐噪声。2 位图操作基本知识2.1 CDIB类的介绍大多数图像处理都是基于与设备无关位图(DIB)来进行讨论的,而MFC中没有处理DIB位图的类,这就给编程带来了很大困难。所以需要建立一个处理DIB位图的专用类,CDIB类,在其中封装必要而有效的处理函数,该类具有的功能如下: Void LoadFile(Cstring m_fileName); /装载

16、BMP位图文件 Char*GetFileName(); /返回位图文件名 DWORD GetSize(); /返回位图文件的大小 UINT GetWidth(); /返回位图的宽度 UINT GetHeight(); /返回位图的高度 UINT GetNumberOfColors(); /返回位图颜色数目 RGBQUAD*GetRGB(); /返回颜色表首地址 BITMAPINFO*GetInfo(); /返回图像信息结构首地址 BYTE*GetData(); /返回图像数据首地址根据对DIB操作的分析,以及参照Cbitmap的功能设计,CDIB类的基本操作功能应包括:(1)DIB文件的读写操

17、作;(2)提供位图宽度、高度、颜色数目等位图相关信息;(3)提供有关位图占据内存空间的信息,包括:图像数据区首地址、颜色表首地址、位图信息结构首地址等信息。2.2 位图操作2.2.1 图像读取 N Y 图2.1 图像读取流程图2.2.2 图像显示 N Y N 图2.2 图像显示流程图2.3程序源代码2.3.1 图像读取通过ReadDIBFile()函数实现对函数的读取,参数CFile& file,返回值HDIB。HDIB CDIB:ReadDIBFile(CFile& file) BITMAPFILEHEADER bmfHeader; HDIB hDIB; LPBYTE lpDIB; / 获取

18、DIB(文件)长度(字节) DWORD dwBitsSize = file.GetLength(); / 尝试读取DIB文件头 if (file.Read(LPBYTE)&bmfHeader, sizeof(bmfHeader) != sizeof(bmfHeader) / 大小不对,返回NULL。 return NULL; / 判断是否是DIB对象,检查头两个字节是否是BM if (bmfHeader.bfType != DIB_HEADER_MARKER) / 非DIB对象,返回NULL。 return NULL; / 为DIB分配内存 hDIB = (HDIB) :GlobalAlloc

19、(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); if (hDIB = 0) / 内存分配失败,返回NULL。 return NULL; / 锁定 lpDIB = (LPBYTE) :GlobalLock(HGLOBAL) hDIB); / 读象素 if (file.ReadHuge(lpDIB, dwBitsSize - sizeof(BITMAPFILEHEADER) != dwBitsSize - sizeof(BITMAPFILEHEADER) ) / 大小不对。 / 解除锁定 :GlobalUnlock(HGLOBAL) hDIB); / 释放

20、内存 :GlobalFree(HGLOBAL) hDIB); / 返回NULL。 return NULL; / 解除锁定 :GlobalUnlock(HGLOBAL) hDIB); / 返回DIB句柄 return hDIB;2.3.2 图像保存通过ReadDIBFile()函数实现将DIB保存到指定文件中,参数HDIB hDib、CFile& file,返回值BOOL.BOOL CDIB:SaveDIB(HDIB hDib, CFile& file) / Bitmap文件头 BITMAPFILEHEADER bmfHdr; / 指向BITMAPINFOHEADER的指针 LPBITMAPIN

21、FOHEADER lpBI; if (hDib = NULL) / 如果DIB为空,返回FALSE return FALSE; / 读取BITMAPINFO结构,并锁定 lpBI = (LPBITMAPINFOHEADER) :GlobalLock(HGLOBAL) hDib); if (lpBI = NULL) / 为空,返回FALSE return FALSE; / 判断是否是WIN3.0 DIB if (!IS_WIN30_DIB(lpBI) / 不支持其它类型的DIB保存 / 解除锁定 :GlobalUnlock(HGLOBAL) hDib); / 返回FALSE return FAL

22、SE; / 填充文件头 / 文件类型BM bmfHdr.bfType = DIB_HEADER_MARKER; / 计算DIB大小时,最简单的方法是调用GlobalSize()函数。但是全局内存大小并 / 不是DIB真正的大小,它总是多几个字节。这样就需要计算一下DIB的真实大小。 / 文件头大小颜色表大小 / (BITMAPINFOHEADER和BITMAPCOREHEADER结构的第一个DWORD都是该结构的大小) DWORD dwDIBSize = *(LPDWORD)lpBI + PaletteSize(LPBYTE)lpBI); / 计算图像大小 if (lpBI-biCompres

23、sion = BI_RLE8) | (lpBI-biCompression = BI_RLE4) / 对于RLE位图,没法计算大小,只能信任biSizeImage内的值 dwDIBSize += lpBI-biSizeImage; else / 大小为Width * Height DWORD dwBmBitsSize = WIDTHBYTES(lpBI-biWidth)*(DWORD)lpBI-biBitCount) * lpBI-biHeight; / 计算出DIB真正的大小 dwDIBSize += dwBmBitsSize; / 更新biSizeImage(很多BMP文件头中biSize

24、Image的值是错误的) lpBI-biSizeImage = dwBmBitsSize; / 计算文件大小:DIB大小BITMAPFILEHEADER结构大小 bmfHdr.bfSize = dwDIBSize + sizeof(BITMAPFILEHEADER); / 两个保留字 bmfHdr.bfReserved1 = 0; bmfHdr.bfReserved2 = 0; / 计算偏移量bfOffBits,它的大小为Bitmap文件头大小DIB头大小颜色表大小 bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + lpBI-biSize

25、 + PaletteSize(LPBYTE)lpBI); / 尝试写文件 TRY / 写文件头 file.Write(LPBYTE)&bmfHdr, sizeof(BITMAPFILEHEADER); / 写DIB头和象素 file.WriteHuge(lpBI, dwDIBSize); CATCH (CFileException, e) / 解除锁定 :GlobalUnlock(HGLOBAL) hDib); / 抛出异常 THROW_LAST(); END_CATCH / 解除锁定 :GlobalUnlock(HGLOBAL) hDib); / 返回TRUE return TRUE;3 噪

26、声的添加3.1 基本原理定义Saltnoising(HDIB hDIB)类,用以封装实现添加噪声的相关函数。设置指向源图像的指针,设置表示行、列的循环变量i,j。在加噪过程中,存储标准图像象素信息后,生成一个为随机种子,可以为任意数或系统时间。当dTemp31500时,指向源图像倒数第j行,第i个象素的指针,将图像中当前点置为黑。即完成一次噪声的添加。3.2 实现步骤(1)取得图像大小、数据区,并把数据区复制到缓冲区;(2)循环取得各点像素值;(3)若产生的随机数大于特定值,把该点置黑;(4)把缓冲区中改动的数据复制到原数据区中。3.3 程序源代码3.3.1 添加响应函数CDIBview中添加

27、“加入椒盐噪声”的响应函数:oid CDIPSView:OnAddnoisingSalt() / TODO: Add your command handler code here CDIPSDoc* pDoc=GetDocument(); CAddNoising addSALT; addSALT.Saltnoising(pDoc-GetHDIB(); Invalidate(); pDoc-SetModifiedFlag(TRUE); 3.3.2 添加成员函数建立CaddNoising类,其成员函数执行具体操作:void CAddNoising:Saltnoising(HDIB hDIB) /

28、指向源图像的指针 LPSTR lpSrc; /循环变量 long i; long j; / 图像每行的字节数 LONG lLineBytes; / 计算图像每行的字节数 LPBYTE lpDIB=(LPBYTE) :GlobalLock(HGLOBAL) hDIB); LPBYTE lpDIBBits; CDIB m_add; LONG lWidth=m_add.DIBWidth(lpDIB); LONG lHeight=m_add.DIBHeight(lpDIB); lpDIBBits=m_add.FindDIBBits(lpDIB); lLineBytes = WIDTHBYTES(lWi

29、dth * 8); for(i=0;ilLineBytes;i+)/存储标准图像象素信息 for(j=0;jlHeight;j+) BMP_stdDatai* lLineBytes+j=*(BYTE *)lpDIBBits + lLineBytes * i + j); if (m_add.DIBBitCount(lpDIB) != 8) /prompt MessageBox(This program can only process 8bits image., Prompt , MB_ICONINFORMATION | MB_OK); /unlock :GlobalUnlock(HGLOBAL) hDIB); /生成伪随机种子 srand(unsigned)2); int tem=0; /在图像中加噪 for (j = 0;j lHeight ;j+) for(i = 0;i 31500) / 指向源图像倒数第j行,第i个象素的指针 lpSrc = (char *)lpDIBBits + lLineBytes * j + i; /图像中当前点置为黑 *lpSrc = 0; / tem+; / char ctem20; / sprintf(ctem,

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

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