图像处理本科毕业论文.doc

上传人:laozhun 文档编号:4022020 上传时间:2023-04-01 格式:DOC 页数:88 大小:4.82MB
返回 下载 相关 举报
图像处理本科毕业论文.doc_第1页
第1页 / 共88页
图像处理本科毕业论文.doc_第2页
第2页 / 共88页
图像处理本科毕业论文.doc_第3页
第3页 / 共88页
图像处理本科毕业论文.doc_第4页
第4页 / 共88页
图像处理本科毕业论文.doc_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《图像处理本科毕业论文.doc》由会员分享,可在线阅读,更多相关《图像处理本科毕业论文.doc(88页珍藏版)》请在三一办公上搜索。

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 operation to put the

3、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 noise reducing

4、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 Algorithm separat

5、ely 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 绪论11.1 VC+6.0简介11.2 数字图像处理基本概念11.3 图像降噪技术研究背景及意义21.4 图像降噪的国内外研究现状21.5 关于图像噪声22 位图操作基本知识42.1 CDIB类的介绍42.2 位图操作42.2.1 图像读取42.2.2 图像显示52.3程序源代码62.3.1 图像读取62.3.2 图像保存83 噪声的添加133.1 基本原理133.2 实现步骤133.3 程序源代码133.3.1 添加响应函数133.3.2 添加成员函数133.4 输出结果164 均值滤波184.1

8、 基本原理184.2实现方法184.3程序源代码204.3.1 添加响应函数204.3.2 添加成员函数204.4 结果输出及分析234.4.1 结果输出234.4.2 结果分析255 中值滤波265.1 基本原理265.2 实现方法265.3 程序源代码265.3.1 添加响应函数265.3.2 添加成员函数275.4结果输出及分析325.4.1结果输出325.4.2结果分析336 傅立叶降噪346.1 基本概念346.1.1 二维傅里叶变换346.1.2 二维离散傅里叶变换346.1.3 快速傅里叶变换356.2 相关原理356.3 程序源代码356.3.1 快速傅里叶变换366.3.2快

9、速傅里叶逆变换386.3.3低通滤波406.4 结果输出及分析436.4.1 结果输出436.4.2结果分析467 小波降噪477.1 基本概念477.1.1 二维离散小波变换477.2.2 Mallat算法487.2 相关原理497.3 程序源代码507.3.1 LPass_Filter函数527.3.2 HPass_Filter函数537.3.3 DWT_Inverse函数557.4 结果输出及分析567.4.1 结果输出567.4.2 结果分析59结 论60致 谢61参考文献62附录A 英文原文63附录B 中文翻译741 绪论1.1 VC+6.0简介VC+6.0是Microsoft公司推

10、出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供

11、的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。1.2 数字图像处理基本概念数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。20世纪20年代,图像处理首次应用于改善伦敦和纽约之间海底电缆发送的图片质量。到20世纪50年代,数字计算机发展到一定的水平后,数字图像处理才真正引起人们的兴趣。1964年美国

12、喷气推进实验室用计算机对“徘徊者七号”太空船发回的大批月球照片进行处理,收到明显的效果。20世纪60年代末,数字图像处理具备了比较完整的体系,形成了一门新兴的学科。20世纪70年代,数字图像处理技术得到迅猛的发展,理论和方法进一步完善,应用范围更加广泛。在这一时期,图像处理主要和模式识别及图像理解系统的研究相联系,如文字识别、医学图像处理、遥感图像的处理等。20世纪70年代后期到现在,各个应用领域对数字图像处理提出越来越高的要求,促进了这门学科向更高级的方向发展。特别是在景物理解和计算机视觉(即机器视觉)方面,图像处理已由二维处理发展到三维理解或解释。近年来,随着计算机和其它各有关领域的迅速发

13、展,例如在图像表现、科学计算可视化、多媒体计算技术等方面的发展,数字图像处理已从一个专门的研究领域变成了科学研究和人机界面中的一种普遍应用的工具。1.3 图像降噪技术研究背景及意义随着计算机科学和图像处理技术的迅速发展,图像在医学成像、模式识别等方面取得了广泛应用。但是,图像在形成、传输过程中,不可避免会受到噪声的干扰,而且有些图像的噪声非常严重,图像中的噪声往往和信号交织在一起,会使图像本身的细节如边界轮廓、线条等变的模糊不清。引起噪声的原因很多,噪声的种类也很多。因此,需要对图像进行降噪处理,便于更高层次的图像分析与理解。如何既对图像中出现的噪声进行合理的抑制、衰减以及去除不需要的信息,又

14、能使有用的信息得到加强,从而便于目标区分或对象解释,是图像去噪主要研究的主要任务。1.4 图像降噪的国内外研究现状图像降噪是图像处理的一个重要环节。目前图像噪声的取出在数字图像处理技术中的重要性愈加明显。近年来,在小波基础上发展起来的图像去噪仍是一个值得关注的问题,在理论和实践上都具有重大的研究意义。其中,基于中值滤波和小波变换的图像去噪小波变换是近年来兴起的信号处理技术,它具有良好的局部化分析特性和多分辨率分析特性,非常适合于图像处理。1.5 关于图像噪声噪声是不可预测的随机信号,通常采用概率统计方法对其进行分析。噪声对图像处理十分重要,它影响图像处理的、采集、处理的各个环节以及输出结果的全

15、过程。特别是图像的输入、采集噪声的抑制是十分关键的问题,若输入伴有较大的噪声,必然影响处理全过程及输出的结果。噪声可以理解为“妨碍人们感觉器官,对所接收的信源信息理解的因素”。 噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。但在很多情况下,这样的描述方法是很复杂的,甚至是不可能的。而实际应用往往也不必要。通常是用其数字特征,即均值方差,相关函数等。因为这些数字特征都可以从某些方面反映出噪声的特征。除此之外,噪声的灰度值与其周围的灰度之间有着明显

16、的灰度差,也正式这些明显的灰度差才造成了视觉障碍。因此一个良好的图像处理系统,不论是模拟处理还是用计算机进行的数字处理,无不把减少最前一级的噪声作为主攻目标。特此根据噪声性质的不同,消除噪声的方法也不同,本文将介绍“均值滤波”、“中值滤波”、“傅里叶降噪”、“小波变换”四种降噪方法。根据噪声产生的来源,大致可以分为外部噪声和内部噪声两大类。外部噪声是指从处理系统外来的影响,如天线干扰或电磁波从电源线窜入系统的噪声。内部噪声则有一下几种最常见形式:(1)由光和电的基本性质引起的噪声。例如电流可看作电子或空穴运动,这些例子运动产生随机散粒噪声,导体中电子流动的热噪声,光量子运动的光量子噪声等。(2

17、)由机械运动引起的噪声。例如,接头振动使电流不稳,磁头或磁带、磁盘抖动等。(3)元器件期检噪声。如光学底片的颗粒噪声,磁带、磁盘缺陷噪声,光盘的疵点噪声等。(4)系统内部电流的噪声。从噪声的分类方法来看是多种多样的。但综合来说,噪声是随机产生的量,所以又可以从统计数学的观点来定义噪声。凡是统计特性不随时间变化的噪声称为平稳的噪声,而统计特性随时间变化的噪声称作非平稳噪声。以上所讨论的各种类型的噪声反映在图像画面上,大致可以分为两种经典的图像噪声。若噪声的幅值基本相同,但是噪声出现的位置是随意的,称这类噪声为椒盐噪声。若从噪声幅值大小的分布统计来看,其密度函数有高斯型、瑞利型,分别称为高斯噪声和

18、瑞利噪声,又如频谱均匀分布的噪声称为白噪声等等。本文着重讨论椒盐噪声。2 位图操作基本知识2.1 CDIB类的介绍大多数图像处理都是基于与设备无关位图(DIB)来进行讨论的,而MFC中没有处理DIB位图的类,这就给编程带来了很大困难。所以需要建立一个处理DIB位图的专用类,CDIB类,在其中封装必要而有效的处理函数,该类具有的功能如下:Void LoadFile(Cstring m_fileName); /装载BMP位图文件Char*GetFileName(); /返回位图文件名DWORD GetSize(); /返回位图文件的大小UINT GetWidth(); /返回位图的宽度UINT G

19、etHeight(); /返回位图的高度UINT GetNumberOfColors(); /返回位图颜色数目RGBQUAD*GetRGB(); /返回颜色表首地址BITMAPINFO*GetInfo(); /返回图像信息结构首地址BYTE*GetData(); /返回图像数据首地址根据对DIB操作的分析,以及参照Cbitmap的功能设计,CDIB类的基本操作功能应包括:(1) DIB文件的读写操作;(2) 提供位图宽度、高度、颜色数目等位图相关信息;(3) 提供有关位图占据内存空间的信息,包括:图像数据区首地址、颜色表首地址、位图信息结构首地址等信息。2.2 位图操作2.2.1 图像读取得到

20、文件的完整路径名打开位图文件读取BITMAPFILEHEADER结构文件是BMP格式吗?计算得到bmp文件除文件头以外的大小把bmp文件除文件头以外的部分读入内存返回DIB句柄结束开始 N Y 图2.1 图像读取流程图2.2.2 图像显示开始设定显示参数,显示位图恢复原调色板结束从DOC对象中得到位图数据起始位置指针,并得到图像的宽、高等信息把新创建的调色板作为设备环境的调色板,并保留原调色板使用文件中颜色表数据创建调色板位图是8位? N Y N 图2.2 图像显示流程图2.3程序源代码2.3.1 图像读取通过ReadDIBFile()函数实现对函数的读取,参数CFile& file,返回值H

21、DIB。HDIB CDIB:ReadDIBFile(CFile& file)BITMAPFILEHEADER bmfHeader;HDIB hDIB;LPBYTE lpDIB;/ 获取DIB(文件)长度(字节)DWORD dwBitsSize = file.GetLength();/ 尝试读取DIB文件头if (file.Read(LPBYTE)&bmfHeader, sizeof(bmfHeader) != sizeof(bmfHeader)/ 大小不对,返回NULL。return NULL;/ 判断是否是DIB对象,检查头两个字节是否是BMif (bmfHeader.bfType != D

22、IB_HEADER_MARKER)/ 非DIB对象,返回NULL。return NULL;/ 为DIB分配内存hDIB = (HDIB) :GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);if (hDIB = 0)/ 内存分配失败,返回NULL。return NULL;/ 锁定lpDIB = (LPBYTE) :GlobalLock(HGLOBAL) hDIB);/ 读象素if (file.ReadHuge(lpDIB, dwBitsSize - sizeof(BITMAPFILEHEADER) !=dwBitsSize - siz

23、eof(BITMAPFILEHEADER) )/ 大小不对。/ 解除锁定:GlobalUnlock(HGLOBAL) hDIB);/ 释放内存: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文

24、件头BITMAPFILEHEADER bmfHdr;/ 指向BITMAPINFOHEADER的指针LPBITMAPINFOHEADER lpBI;if (hDib = NULL)/ 如果DIB为空,返回FALSEreturn FALSE;/ 读取BITMAPINFO结构,并锁定lpBI = (LPBITMAPINFOHEADER) :GlobalLock(HGLOBAL) hDib);if (lpBI = NULL)/ 为空,返回FALSEreturn FALSE;/ 判断是否是WIN3.0 DIBif (!IS_WIN30_DIB(lpBI)/ 不支持其它类型的DIB保存/ 解除锁定:Glo

25、balUnlock(HGLOBAL) hDib);/ 返回FALSEreturn FALSE;/ 填充文件头/ 文件类型BMbmfHdr.bfType = DIB_HEADER_MARKER;/ 计算DIB大小时,最简单的方法是调用GlobalSize()函数。但是全局内存大小并/ 不是DIB真正的大小,它总是多几个字节。这样就需要计算一下DIB的真实大小。/ 文件头大小颜色表大小/ (BITMAPINFOHEADER和BITMAPCOREHEADER结构的第一个DWORD都是该结构的大小)DWORD dwDIBSize = *(LPDWORD)lpBI + PaletteSize(LPBYT

26、E)lpBI);/ 计算图像大小if (lpBI-biCompression = BI_RLE8) | (lpBI-biCompression = BI_RLE4)/ 对于RLE位图,没法计算大小,只能信任biSizeImage内的值dwDIBSize += lpBI-biSizeImage;else/ 大小为Width * HeightDWORD dwBmBitsSize = WIDTHBYTES(lpBI-biWidth)*(DWORD)lpBI-biBitCount) * lpBI-biHeight;/ 计算出DIB真正的大小dwDIBSize += dwBmBitsSize;/ 更新b

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

28、DER) + lpBI-biSize + 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);/ 返回TRUEreturn TRUE;3

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

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

31、的指针LPSTRlpSrc;/循环变量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(lWidth * 8);for(i=0;ilL

32、ineBytes;i+)/存储标准图像象素信息for(j=0;jlHeight;j+)BMP_stdDatai*lLineBytes+j=*(BYTE *)lpDIBBits + lLineBytes * i + j);if (m_add.DIBBitCount(lpDIB) != 8)/promptMessageBox(This program can only process 8bits image., Prompt , MB_ICONINFORMATION | MB_OK);/unlock:GlobalUnlock(HGLOBAL) hDIB);/生成伪随机种子srand(unsigne

33、d)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,噪声象素点个数为:%d,tem);/MessageBox(ctem);3.4 输出结果图3.1 原图像图3.2 加入椒盐噪声后的图像4 均值滤波4.1 基本原理所谓均值滤波实际上就是用均值替代原图像中的各个像素值。均值滤波的方

34、法如下:设被噪声污染后的信号为,原始信号为,噪声为,则。均值滤波公式如下: (4.1)经过均值滤波后的图像,可以看到噪声明显的被抑制了。下面推导均值滤波对抑制的原理。因为 (4.2)等式两边取数学期望(即统计中),得 (4.3)如果噪声椒盐噪声,则有 (4.4)所以 (4.5)按照如上的定义可知,因为出现的为椒盐噪声,其幅值基本相同,但是数据中,还存在一些点没有噪声,这样,可以将未输出的噪声的点等同的认为噪声幅值为0,这样就有 (4.6)所以,经过均值滤波之后,中所包含的噪声强度值低于。椒盐噪声的抑制,只是将某点出现的噪声强度,让周围的数据平均分担了。4.2 实现方法根据上述对以为均值滤波的原

35、理介绍,将其宽展到二维信号的处理,就可以事先对图像噪声的抑制。均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其近邻的若干像素组成,用模板中像素的均值来替代原像素的方法。如图123804765图4.1 均值滤波原理示意图序号为0的是当前像素,序号为18的像素是其模板中的邻家像素。求模板中所有像素的均值,再把该均值赋予当前像素点,作为处理后图像在该点上的灰度,即 (4.7)其中,s为模板,M为该模板中包含当前像素在内的像素总个数。考虑到数据分布的平衡性,本文中模板选择为33,待处理像素放在模板的中心。为了使输出像素值保持在原理的灰度值范围内,模板的权值总和应该维持为1。模板与模板像素的

36、乘积要除以一个系数(通常是模板系数之和),这个过程也被称为模板的归一化。模板的描述还可以采用矩阵的形式,入33的均值滤波可以描述如下: (4.8)该模板的响应计算为 (4.9)以式(4.8)对椒盐噪声图片进行均值滤波后,所得到的结果可知,均值滤波器对椒盐噪声的滤波效果不是很理想。因为椒盐噪声的幅值都是基本相同的,只是出现噪声点的位置是随机的,所以在统计意义下的噪声均值也不为0,因此,即使是理想情况也无法完全去除。但是从模板的含义来理解,经过均值处理之后,噪声部分被弱化到周围像素点上,所以得到的结果是噪声幅值减小,但是噪声点的颗粒面积同时变大。另外,均值滤波有一个非常致命的缺点,就是在求均值的计

37、算中,会同时将景物的边缘也同时进行均值处理,这样就使得景物的清晰度降低,画面变的模糊。4.3 程序源代码4.3.1 添加响应函数在CDIPSView类中,得到均指滤波响应函数OnDenoisingAveraging():void CDIPSView:OnDenoisingAveraging() / TODO: Add your command handler code hereCDIPSDoc* pDoc = GetDocument();/ call class CDeNoisingCDeNoising clsDeNoising;clsDeNoising.AveragingFilter(pDo

38、c-GetHDIB();/refresh the viewInvalidate();/set flag in order to indicate modificationpDoc-SetModifiedFlag(TRUE);4.3.2 添加成员函数建立类CdeNoising,其成员函数AveragingFilter(HDIB hDIB)执行具体算法:void CDeNoising:AveragingFilter(HDIB hDIB)/ variables definitionLONG i,j;int intensity1,intensity2,intensity3,intensity4,int

39、ensity5,intensity6,intensity7,intensity8,intensity;/ a pointer to BitMapFileHeaderLPBYTE lpDIB;/ a point to start of BitMapDataLPBYTE lpDIBBits;/Lock and get pointer Of DIB lpDIB = (LPBYTE) :GlobalLock(HGLOBAL) hDIB);/Get pointer of BitMapDatalpDIBBits = m_clsDIB.FindDIBBits(lpDIB);/If DIBBitCount e

40、qual 24,then give a prompt and exit this programif (m_clsDIB.DIBBitCount(lpDIB) != 8)/promptMessageBox(This program can only process 8bits image., Prompt , MB_ICONINFORMATION | MB_OK);/unlock:GlobalUnlock(HGLOBAL) hDIB);/exitreturn;/let cursor in wait statusBeginWaitCursor();/get width of the imageLONG lWidth = m_clsDIB.DIBWidth(lpDIB);/get height of the imageLONG lHeight = m_cls

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号