《基于VC数字图像处理课程设计说明书含源程序教学内容.doc》由会员分享,可在线阅读,更多相关《基于VC数字图像处理课程设计说明书含源程序教学内容.doc(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。基于VC数字图像处理课程设计说明书含源程序-课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:初始条件:要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要2第一章 引言.31.1基础知识.31.2本数字图像处理界面处理内容介绍.41.2.1启动界面.41.2.2主界面.4第二章系统分析.42.1设计要求.42.2系统处理流程分析.5第三章系统设计.53.1系统的设计语言.53.2系统总体结构设计
2、.53.2.1系统总体结构图.53.2.2系统模块设计.6第四章系统详细设计.74.1基类的设计.74.2各模块的详细设计.84.2.1欢迎界面设计84.2.2主界面设计.9第五章结论与心得体会19第六章参考文献.20第七章关键代码21基于VC+平台简单数字图像处理界面设计摘要:该数字图像处理界面是基于MicrosoftVisualC+6.0MFC多文档编程的图像处理界面,实现.bmp格式图像的浏览与编辑,导入和导出,图像特效显示,边缘检测,旋转和翻转图片,图片增强优化,以及打印输出图片。是一款功能较简洁的数字图像管理界面,实现对.bmp格式图像的操作。该界面包含两部分:启动界面和主界面。BM
3、P文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,一般来说BMP文件分成4个部分:位图头文件,位图信息头,颜色表,位图数据.同时BMP文件文件可以分为DIB格式和DDB格式,其中DIB格式是与设备无关的BMP文件,通用性很强.Windows支持一些重要的DIB访问函数,但都没有封装到MFC中,这里我们封装了一个DIB类,其包含DIB文图处理所需要的基本成员变量和成员函数,进而以该类为基类派生其他类,实现程序的维护和移植,从而利用面向对象的方式实现图像的可视化编程。关键词:BMP文件图像处理DIB位图界面Abstract:
4、ThedigitalimageprocessinginterfaceisbasedonMicrosoftVisualC+6.0MFCmulti-documentimageprocessingprogramminginterface,toachieve.Bmpformatforimagebrowsingandediting,importandexport,imageeffectsshowedthatedgedetection,rotateandflipimages,picturesenhancetheoptimization,aswellasprintoutputpicture.Isafunct
5、ionofthedigitalimagethanthesimplemanagementinterface,toachieve.Bmpformatimagesoftheoperation.Theinterfacecontainstwoparts:interfaceandthemaininterfacetostart.BMPfileisaWindowsoperatingsystemandsupporttherecommendedimagefileformat,isamemoryordisplaythecompressedimagedataisnotdirectlybasedondigitalarc
6、hivingoffileformats,BMPfilesaregenerallydividedintofourparts:thefirstbitmapdocuments,BITMAPINFOHEADER,colortable,thebitmapdata.Atthesametime,BMPfileformatsandcanbedividedintoDIBformatDDB,DIBformatwhichhasnothingtodowiththeequipmentoftheBMPfiles,astrongGM.WindowsinsupportoftheDIBtovisitanumberofimpor
7、tantfunction,butarenotpackagedintheMFC,wherewehaveapackagetypeDIB,theDIBincludesVenturaneededtodealwithmembersofthebasicvariablesandmemberfunctions,andsuchabaseclassforothertypesofderivatives,therealizationoftheproceduremaintenanceandtransplantation,andthustheuseofobject-orientedwayofprogrammingthev
8、isualimage.Keywords:BMPfileImageprocessingDIBbitmapInterface1引言数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。随着计算机的发展,数字图像处理技术也不断的进步,实现了对图像图像增强、复原、编码、压缩等,在空间和军事高科技中扮演越来越重要的角色。随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。近几十年来由于计
9、算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、可视电话、网络传输等等领域,成为各个学科学习和研究对象。随着图像处理技术的广泛应用,学习和掌握这门科学显得格外重要,图像处理已经成为信息技术相关领域的核心课程。本课题主要实现图像的一些简单特效显示,图像的旋转和镜像、图像的增强处理,图像灰度变换,图像边缘检测等。1.1基础知识组成数字图像的基本单位是像素(Pixel),也就是说数字图像是像素的集合。显示器在显示图像时采用电子枪从左到右扫描一行,为每个像素着色,然后从上倒下扫描整个屏
10、幕的方式,由于人眼的视觉停留,可以显示出完整的画面.为了防止闪烁,每秒电子枪要重复扫描几十次的扫描过程,人眼感受不到因屏幕刷新也产生的闪烁,这种显示器称为位映像设备。所谓位映像,是指一个二维的像素矩阵,矩阵的元素值就是像素的灰度值,而位图就是采用位映像方法显示和存储的图像。彩色图像和灰度图像:灰度图像是数字图像最基本形式,可以从黑白照片数字化得到或则通过对彩色图像去色处理得到,灰度图像只表示图像的亮度信息而没有颜色信息,灰度图像的每个像素点上只包含一个量化的灰度级(0-255)来表示该点的亮度水平,计算机一般用1个字节(8个二进制位)来存储。彩色图像的数据不仅包含亮度信息,还包含颜色信息,图像
11、中每一个像素由RGB(红绿蓝)三个分量组成,计算机一般用3个字节(24位二进制)来存储像素的颜色信息。BMP位图文件结构位图头文件位图信息头颜色表位图数据图1.1BMP图像文件结构如图1.1所示BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。在编程时它们以结构体类型在计算机中存储。1、位图文件头:主要包含文件类型(必须是0x424D,即字符串“BM”),文件大小以及文件头到实际的位图数据的偏移字节数;2、位图信息头:包含图象的尺寸信息、每个像素所占位数(bit)、图像是否压缩、图像所用的颜色数等信息,颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板;3、调色
12、板(Palette:调色板实际上是一个数组存有RGB信息的表;4、位图数据:对于用到调色板的位图,图像数据就是该象素颜在调色板中的索引值。对于24位真彩色图,图像数据就是实际的R、G、B三个分量的值。1.2本数字图像处理界面处理内容介绍1.2.1启动界面为了追求该图像处理的界面的美观性,在设计主界面前,先设计一个欢迎界面,即以一个经过photoshop处理过的图像作为对话框,在运行主界面程序前,先显示该对话框。1.2.2主界面该数字图像处理界面是基于VC+6.0MFC多文档编程的界面程序,实现数字图像的简单查看与编辑操作。主界面主要内容有:图像文件浏览:实现对.bmp格式图像文件的浏览。图像特
13、效显示:主要有自上而下扫描显示,从左至右的滑动显示和渐进显示。视图-文档的设置:实现了执行操作后新旧图像在不同视图中显示设置。图像的灰度变换:包括图像的二值化,彩色图像转换灰度图像,灰度图像转换8位图像。图像的镜像与旋转变换:包括水平镜像,垂直镜像,顺时针旋转90度,逆时针旋转90度,图像旋转180度。图像的增强处理:主要是图像锐化处理。图像的边缘检测和形态学处理:包括罗伯茨算子边缘检测,图像轮廓提取该界面主要实现了.bmp格式图像的浏览、编辑、打印、特效设置、视图设置、变换等几大功能。2系统需求分析需求分析简单地说就是分析用户的需求。需求分析是设计数据库的起点,需求分析的结果是否准确地反映了
14、用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。2.1设计要求根据设计内容,设计的主要要求有:(1)设计欢迎界面并在程序中实现欢迎界面先于主界面显示;(2)实现主界面的功能设计:图像文件浏览(.bmp格式图像的导入),图像特效显示,视图-文档的设置,图像的灰度变换,图像的镜像与旋转变换,图像的增强处理,图像的边缘检测和形态学处理。2.2系统处理流程分析通过对系统的组织结构和功能进行分析,画出业务流程图,它非常易于阅读和理解,可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分。通过对系统的需求分析,系统的基本
15、功能已经确定。整个系统各个模块的业务流,如图2.1所示:开始欢迎界面主界面图像特效显示图像的灰度变换图像边缘检测和形态学处理图像的增强处理图像的镜像与旋转变换图2.1业务流程图3系统设计本阶段的主要任务是设计程序的体系结构,确定程序组成模块,以及各模块之间的关系。3.1系统的设计语言数字图像处理系统采用MicrosoftVisualC+6.0MFC作为开发平台。3.2系统总体结构设计3.2.1系统总体结构图数字图像处理界面的总体结构设计如图3.1所示:主界面文件操作镜像与旋转灰度变换另存为操作打开操作关闭操作保存操作垂直镜像变换顺时针旋转90度新建操作水平镜像变换灰值化打印操作二值化特效显示扫
16、描显示渐进显示滑动显示逆时针旋转90度启动界面数字图像处理界面256色-8位图图像锐化图3.1数字图像处理界面总体结构设计3.2.2系统模块设计模块设计是对处理流程图的注释性书面文件,以帮助程序设计人员进一步了解模块的功能和设计要求数字图像处理系统主要分为两大模块,即欢迎界面和主界面,其中主界面又分为文件操作模块,特效显示模块,图像镜像与旋转模块,图像增强处理模块,图像边缘检测和形态学处理模块。具体的模块设计如下:1.欢迎界面:该模块实现以一个经过photoshop处理过的图像作为对话框,在运行主界面程序前,先显示该对话框。2.主界面:(1)文件操作模块:该模块主要实现图像的文件操作,包括新建
17、操作,打开操作.保存操作,另存为操作,关闭操作,打印操作等。(2)特效显示模块:该模块实现了图像在视图中的显示方式,包括自上而下扫描显示,从左至右的滑动显示和渐进显示。(3)图像镜像与旋转模块:该模块实现了图像的镜像变换和图像旋转显示,包括水平镜像,垂直镜像,顺时针旋转90度,逆时针旋转90度,图像旋转180度。(4)图像增强处理模块:该模块主要实现了图像锐化效果。(5)图像边缘检测模块:该模块实现了图像边缘轮廓检测,包括罗伯茨算子边缘检测,图像轮廓提取。(6)图像灰度变换模块:该模块实现了彩色图像变灰度格式,灰度图像变彩色格式和二值化操作。4系统详细设计4.1基类的设计BMP文件是Windo
18、ws操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,同时BMP文件文件可以分为DIB格式和DDB格式,其中DIB格式是与设备无关的BMP文件,通用性很强。Windows支持一些重要的DIB访问函数,但都没有封装到MFC中,这里我们封装了一个DIB类,其包含DIB位图处理所需要的基本成员变量和成员函数,进而以该类为基类派生其他类,实现程序的维护和移植。在这里我们命名这个基类为ImgCenterDib,各种算法的实现都是以ImgCenterDib类为基类派生出来。根据前面预备知识和程序编写的需要,这里定义ImgCenterDib类代码如下:cl
19、assImgCenterDibpublic:unsignedchar*m_pImgData;/图像数据指针LPRGBQUADm_lpColorTable;/图像颜色表指针intm_nBitCount;/每像素占的位数private:LPBYTEm_lpDib;/指向DIB的指针HPALETTEm_hPalette;/逻辑调色板句柄intm_nColorTableLength;/颜色表长度(多少个表项)protected:intm_imgWidth;/图像的宽,像素为单位intm_imgHeight;/图像的高,像素为单位LPBITMAPINFOHEADERm_lpBmpInfoHead;/图像
20、信息头指针public:ImgCenterDib();/不带参数的构造函数ImgCenterDib(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData);/带参数的构造函数ImgCenterDib();/析构函数CSizeGetDimensions();/获取DIB的尺寸(宽高)BOOLRead(LPCTSTRlpszPathName);/DIB读函数BOOLWrite(LPCTSTRlpszPathName);/DIB写函数BOOLDraw(CDC*pDC,CPointorigin,CSizesize);/显示
21、DIBvoidReplaceDib(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData);/用新的数据替换DIBintComputeColorTabalLength(intnBitCount);/计算颜色表的长度private:voidMakePalette();/创建逻辑调色板voidEmpty();/清理空间;同时将各个模块函数封装起来成为一个类,这些类都以ImgCenterDib类共有继承,在主程序中调用,减少代码的重复性,提高利用率。派生关系如图4.1:基类ImgCenterDib(public)派生的特
22、效显示类:SpecialEffectShow派生的灰度变换类:GrayTrans派生的图像增强类:Pic_Enhance派生的几何变换类:GeometryTrans派生的图像边缘检测类:Pic_Segment图4.1基类与派生类结构关系图4.2各模块的详细设计4.2.1欢迎界面设计用photoshop软件根据内容的需要处理一张图片,并保存为.bmp格式,然后在MicrosoftVisualC+6.0中载入该图片。设计思想:欢迎界面在程序运行时是以图形式显现的,这里要封装一个位图的类Cbtmap(派生于位图类CBitmap),获取图像的宽,高,创建逻辑调色板等等;之后创建一个启动窗口类,名为Cs
23、plash(派生于窗口基类CWnd),这两个类均封装了一些函数,它们之间通过参数传递和函数调用,在主程序代码中声明Splash类的对象,调用Csplash类中函数从而实现设计目标。启动窗口类的主要代码如下:classCsplash:publicCWndpublic:Csplash();/构造函数public:voidCreate(UINTnBitmapID);/调用CreateEx创建窗口public:virtualCsplash();/析构函数protected:/AFX_MSG(CWzdSplash)afx_msgvoidOnPaint();/AFX_MSGDECLARE_MESSAGE_
24、MAP()private:Cbtmapm_bitmap;/私有成员变量;位图类的主要代码如下:classCbtmap:publicCBitmappublic:DECLARE_DYNAMIC(Cbtmap)Cbtmap();voidLoadBitmapEx(UINTnID,BOOLbIconBkgrd);CPalette*GetPalette()returnm_pPalette;public:virtualCbtmap();intm_Width;intm_Height;private:CPalette*m_pPalette;在CPicture_sysView:CPicture_sysView()
25、函数中加入如下代码:CsplashwndSplash;/声明Splash类的对象wndSplash.Create(IDB_WZDSPLASH);/调用Create()wndSplash.UpdateWindow();Sleep(2000);/定时2秒程序运行截图如下:(欢迎界面)4.2.2主界面设计(1)文件操作模块文件操作模块是整个系统中最基本的组成成分,该模块主要实现图像的文件操作,包括新建操作,打开操作.保存操作,另存为操作,关闭操作,打印操作。通过对用户的需求分析得出文件操作模块的功能结构图,文件操作模块的功能结构图如图4.2所示:文件操作模块打开操作新建操作图像保存图像打印另存为操作
26、关闭操作图4.2文件操作模块功能结构图在文件操作模块,新建操作,关闭操作和图像打印操作可以直接调用系统提供的不需要重载的函数很容易就实现,其他操作都需要将文件下的.bmp格式的图像数据读进计算机内存中生成DIB,存放在m_lpDib(指向DIB的指针)所指向的缓冲区。文件打开操作的伪代码描述如下所示:文件的另存为操作伪代码如下:取得文件路径名称;调用ImgCenterDib的write函数读图形入内存中;判断读操作是否成功,若成功设置标记并返回True,否则返回FALSE取得文件路径名称;调用ImgCenterDib的Read函数读图形入内存中;判断读操作是否成功,若成功设置标记并返回True
27、,否则返回FALSE功能截图如下:菜单栏:另存为操作:(2)特效显示模块特效显示模块实现了图像在视图中的显示方式,包括自上而下扫描显示,从左至右的滑动显示和渐进显示。经过分析图像特效显示功能,得出图像处理的功能模块图如图4.3所示:特效显示模块扫描显示渐进显示滑动显示图4.3特效显示模块功能结构图特效显示类SpecialEffectShow是在基类ImgCenterDib基础上派生出来的,特效显示类设计代码如下:classSpecialEffectShow:publicImgCenterDibpublic:SpecialEffectShow(CSizesize,intnBitCount,LPR
28、GBQUADlpColorTable,unsignedchar*pImgData);/带参数的构造函数voidScan(CDC*pDC);/扫描特效显示voidSlide(CDC*pDC);/滑动特效显示voidFadeIn(CDC*pDC);/渐进特效显示virtualSpecialEffectShow();protected:SpecialEffectShow();/防止从外部访问无参数的构造函数;利用类向导,给相应的控件定义消息处理函数,如下表表1主要的消息处理函数表序号ID号及类名消息处理函数函数功能1ID_scanOnscan扫描显示2ID_slideOnslide滑动显示3ID_F
29、adeinOnFadein渐进显示在picture_sysView.cpp重载消息处理函数,这三个消息处理函数代码基本相似,共同操作伪代码如下:获取文档类中m_dib的指针,访问当前DIB数据;定义SpecialEffectShow类的对象SpShow,用当前DIB数据为其初始化;获得设备环境变量;传递设备环境指针,调用滑动/扫描/渐进显示程序;功能截图如下:扫描显示:滑动显示:渐进显示(3)图像灰度变换模块图像灰度变换模块实现了彩色图像变灰度格式,灰度图像变彩色格式和二值化操作。经过分析图像灰度变换功能,得出图像处理的功能模块图如图4.4所示:灰度变换模块块二值化灰度变彩色格式彩色变灰度格式
30、图4.4灰度变换模块功能结构图灰度变换类GrayTrans是在基类ImgCenterDib基础上派生出来的,灰度变换类设计代码如下:classGrayTrans:publicImgCenterDibpublic:intm_nBitCountOut;/输出图像每像素位数unsignedchar*m_pImgDataOut;/输出图像位图数据指针LPRGBQUADm_lpColorTableOut;/输出图像颜色表private:intm_imgWidthOut;/图像的宽,像素为单位intm_imgHeightOut;/图像的高intm_nColorTableLengthOut;/输出图像颜色表
31、长度public:GrayTrans();/不带参数的构造函数GrayTrans(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData);/带参数的构造函数GrayTrans();CSizeGetDimensions();/以像素为单位返回输出图像的宽和高voidColorToGray();/彩色变灰度格式voidGrayToColor();/灰度变彩色格式voidBinary(intthreshold=128);/二值化;利用类向导,给相应的控件定义消息处理函数,如下表表2主要的消息处理函数表序号ID号及类名消息
32、处理函数函数功能1ID_TOGRAYOnTogray彩色变灰度格式2ID_GraytocolorOnGraytocolor灰度变彩色格式3ID_BinTwoOnBinTwo二值化在picture_sysView.cpp重载消息处理函数,这三个消息处理函数代码基本相似,共同操作伪代码如下:获取文档类中m_dib的指针,访问当前DIB数据;判断灰度图像还是彩色图像;分别定义GrayTrans类的对象,调用相应的函数;建立一个新视图,显示分割结果;功能截图如下:彩色变灰度格式:灰度变彩色格式:二值化:(4)图像镜像与旋转模块镜像与旋转模块图像镜像与旋转模块实现了图像的镜像变换和图像旋转显示,包括水平
33、镜像,垂直镜像,顺时针旋转90度,逆时针旋转90度,图像旋转180度。其功能模块图如图4.5所示:旋转180度水平镜像垂直镜像顺时针旋转90逆时针旋转9090图4.5图像镜像与旋转模块功能结构图镜像与旋转类GeometryTrans是在基类ImgCenterDib基础上派生出来的。该类与灰度变换类GrayTrans有相同的成员变量,其成员函数除CSizeGetDimensions()函数外变为:GeometryTrans();GeometryTrans(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData);/带参
34、数的构造函数GeometryTrans();voidMove(intoffsetX,intoffsetY);/平移voidMirrorHori();/水平镜像voidMirrorVerti();/垂直镜像voidClockwise90();/顺时针旋转90度voidAnticlockwise90();/逆时针旋转90度voidRotate180();/旋转180利用类向导,给相应的控件定义消息处理函数,如下表表3主要的消息处理函数表序号ID号及类名消息处理函数函数功能1ID_XmirrorOnXmirror水平镜像2ID_YmirrorOnYmirror垂直镜像3ID_Clock90OnClo
35、ck90顺时针旋转90度4D_AnticClock90OnAnticClock90逆时针旋转90度5ID_Clock180OnClock180旋转180度在picture_sysView.cpp重载消息处理函数,这五个消息处理函数代码基本相似,共同操作伪代码如下:获取文档类中m_dib的指针,访问当前DIB数据;判断灰度图像或者彩色图像;分别定义GeometryTrans类的对象,调用相应的函数;建立一个新视图,显示分割结果;功能截图如下:水平镜像:垂直镜像:顺时针旋转90度:逆时针旋转90度:旋转180度:(5)图像增强处理模块图像增强处理模块主要实现了图像锐化效果,是模糊的图像变得更加清晰
36、,颜色变得鲜明突出,更适合人眼观察和识别。图像增强处理类Pic_Enhance是在基类ImgCenterDib基础上派生出来的,图像增强处理类设计代码如下:classPic_Enhance:publicImgCenterDibpublic:intm_nBitCountOut;unsignedchar*m_pImgDataOut;LPRGBQUADm_lpColorTableOut;intm_nColorTableLengthOut;public:Pic_Enhance();Pic_Enhance(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsi
37、gnedchar*pImgData);Pic_Enhance();voidGradSharp(BYTEbThre);/梯度锐化;利用类向导,给相应的控件定义消息处理函数,如下表表4主要的消息处理函数表序号ID号消息处理函数函数功能1ID_RuihuaOnRuihua图像锐化获取文档类中m_dib的指针,访问当前DIB数据;判断是否是灰度图像,若是进行下一步,否则警告;定义Pic_Enhance类的对象,调用GradSharp函数;建立一个新视图,显示操作结果;在picture_sysView.cpp重载消息处理函数,伪代码叙述如下:功能截图如下:(6)图像边缘检测模块图像边缘检测模块实现了图像
38、边缘轮廓检测,包括罗伯茨算子边缘检测,图像轮廓提取,其功能模块图如图4.6所示:图像边缘检测模块图像轮廓提取罗伯茨算子边缘检测图4.6图像边缘检测模块功能结构图图像边缘检测类Pic_Segment是在基类ImgCenterDib基础上派生出来的。该类与灰度变换类GrayTrans有相同的成员变量,其成员函数除CSizeGetDimensions()函数相同,其他的成员函数如下:Pic_Segment();Pic_Segment(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData);/带参数的构造函数Pic_Seg
39、ment();voidRoberts();/Roberts算voidContourExtract();/轮廓提取利用类向导,给相应的控件定义消息处理函数,如下表表5主要的消息处理函数表序号ID号消息处理函数函数功能1ID_RobertsOnRoberts罗伯茨算子2ID_OutlineOnOutline轮廓提取在picture_sysView.cpp重载消息处理函数,这2个消息处理函数代码基本相似,共同操作伪代码叙述如下:获取文档类中m_dib的指针,访问当前DIB数据;判断是否是灰度图像(二值图像),若是进行下一步,否则警告;在消息函数定义Pic_Segment类的1个对象segmen,调用
40、Roberts(或ContourExtract)函数;建立一个新视图,显示操作结果;功能截图如下:罗伯茨算子:轮廓提取:5结论与心得体会这次课程设计是以MicrosoftVisualC+6.0文档视图编程为基础实现的,这就要求对MFC文档视图操作有一定的了解和操作编程能力,在做课程设计前,我查阅了该方面相关的书籍,对我完成欢迎界面和主界面的设计有很大的帮助。编程中在不同类之间函数参数和变量的传递和函数的调用出了问题,但是理清函数的编译编译顺序和变量的类型这些问题都逐一解决,同时增强了对工具栏,菜单栏的手动操作能力。另外一点是对.bmp图像处理的实现,数字图像处理关键是算法的设计思想和算法的实现
41、,通过这次课程设计,使我了解到了算法设计的重要性(算法设计是编程实现的前提),提高了自己动手编程的能力和汲取一些先进算法的思想,这对以后图像处理的深入学习大有帮助。该数字图像界面是基于MicrosoftVisualC+6.0的MFC多文档实现的,在界面设计上看起来过于单调,界面设计简单,但易于操作;VisualC+6.0的MFC对话框的编程是界面看起来更加美观,更接近软件系统,给人不一样的感觉,提高了工具栏和菜单栏的编程实现难度和设计的复杂度,这是今后学习的方向。6.参考文献1郑莉董渊张瑞丰,C+语言程序设计(第三版),清华大学出版社20032DavidJ.Kruglinski(美)等,Vis
42、ualC+6.0技术内幕,北京希望电子出版社,20023谢凤英赵丹培,VisualC+数字图像处理,电子工业出版社,20084求是科技张宏林,精通VisualC+数字图像处理典型算法及实现,人民邮电出版社,20085刘锐宁宋坤等,VisualC+从入门到精通,清华大学出版社,2008关键源代码:/ImgCenterDib.cpp/ImgCenterDib:ImgCenterDib()/缺省变量的构造函数m_lpDib=NULL;/初始化m_lpDib为空。m_lpColorTable=NULL;/颜色表指针为空m_pImgData=NULL;/图像数据指针为空m_lpBmpInfoHead=N
43、ULL;/图像信息头指针为空m_hPalette=NULL;/调色板为空ImgCenterDib:ImgCenterDib(CSizesize,intnBitCount,LPRGBQUADlpColorTable,unsignedchar*pImgData)if(pImgData=NULL)/没有位图数据传入,DIB为空m_lpDib=NULL;m_lpColorTable=NULL;m_pImgData=NULL;m_lpBmpInfoHead=NULL;m_hPalette=NULL;elsem_imgWidth=size.cx;m_imgHeight=size.cy;m_nBitCount=nBitCount;m_nColorTableLength=ComputeColorTabalLength(nBitCount);/根据每像素位数,计算颜色表长度intlineByte=(m_imgWidth*nBitCount/8+3)/4*4;intimgBufSize=m_imgHeight*lineByte;/位图数据缓冲区