基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx

上传人:b****4 文档编号:5038795 上传时间:2022-12-12 格式:DOCX 页数:37 大小:1.93MB
下载 相关 举报
基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx_第1页
第1页 / 共37页
基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx_第2页
第2页 / 共37页
基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx_第3页
第3页 / 共37页
基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx_第4页
第4页 / 共37页
基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx

《基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx》由会员分享,可在线阅读,更多相关《基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx(37页珍藏版)》请在冰豆网上搜索。

基于VC课程设计基于VC++平台简单数字图像处理界面设计.docx

基于VC课程设计基于VC++平台简单数字图像处理界面设计

 

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

题目:

初始条件:

 

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

 

时间安排:

 

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

目录

摘要…………………………………………………………………………………………2

第一章引言……………………………………………………………………………..3

1.1基础知识……………………………………………………………………….3

1.2本数字图像处理界面处理内容介绍………………………………………….4

1.2.1启动界面……………………………………………………………….4

1.2.2主界面………………………………………………………………….4

第二章系统分析……………………………………………………………………….4

2.1设计要求…………………………………………………………………….4

2.2系统处理流程分析………………………………………………………...5

第三章系统设计……………………………………………………………………..5

3.1系统的设计语言…………………………………………………………….5

3.2系统总体结构设计………………………………………………………….5

3.2.1系统总体结构图…………………………………………………….5

3.2.2系统模块设计……………………………………………………….6

第四章系统详细设计………………………………………………………………….7

4.1基类的设计………………………………………………………………..7

4.2各模块的详细设计………………………………………………………..8

4.2.1欢迎界面设计…………………………………………………………8

4.2.2主界面设计…………………………………………………………..9

第五章结论与心得体会………………………………………………………………19

第六章参考文献……………………………………………………………………….20

第七章关键代码…………………………………………………………………………21

 

基于VC++平台简单数字图像处理界面设计

摘要:

该数字图像处理界面是基于MicrosoftVisualC++6.0MFC多文档编程的图像处理界面,实现.bmp格式图像的浏览与编辑,导入和导出,图像特效显示,边缘检测,旋转和翻转图片,图片增强优化,以及打印输出图片。

是一款功能较简洁的数字图像管理界面,实现对.bmp格式图像的操作。

该界面包含两部分:

启动界面和主界面。

BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,一般来说BMP文件分成4个部分:

位图头文件,位图信息头,颜色表,位图数据.同时BMP文件文件可以分为DIB格式和DDB格式,其中DIB格式是与设备无关的BMP文件,通用性很强.Windows支持一些重要的DIB访问函数,但都没有封装到MFC中,这里我们封装了一个DIB类,其包含DIB文图处理所需要的基本成员变量和成员函数,进而以该类为基类派生其他类,实现程序的维护和移植,从而利用面向对象的方式实现图像的可视化编程。

关键词:

BMP文件图像处理DIB位图界面

Abstract:

ThedigitalimageprocessinginterfaceisbasedonMicrosoftVisualC++6.0MFCmulti-documentimageprocessingprogramminginterface,toachieve.Bmpformatforimagebrowsingandediting,importandexport,imageeffectsshowedthatedgedetection,rotateandflipimages,picturesenhancetheoptimization,aswellasprintoutputpicture.Isafunctionofthedigitalimagethanthesimplemanagementinterface,toachieve.Bmpformatimagesoftheoperation.Theinterfacecontainstwoparts:

interfaceandthemaininterfacetostart.

   BMPfileisaWindowsoperatingsystemandsupporttherecommendedimagefileformat,isamemoryordisplaythecompressedimagedataisnotdirectlybasedondigitalarchivingoffileformats,BMPfilesaregenerallydividedintofourparts:

thefirstbitmapdocuments,BITMAPINFOHEADER,colortable,thebitmapdata.Atthesametime,BMPfileformatsandcanbedividedintoDIBformatDDB,DIBformatwhichhasnothingtodowiththeequipmentoftheBMPfiles,astrongGM.WindowsinsupportoftheDIBtovisitanumberofimportantfunction,butarenotpackagedintheMFC,wherewehaveapackagetypeDIB,theDIBincludesVenturaneededtodealwithmembersofthebasicvariablesandmemberfunctions,andsuchabaseclassforothertypesofderivatives,therealizationoftheproceduremaintenanceandtransplantation,andthustheuseofobject-orientedwayofprogrammingthevisualimage.

Keywords:

BMPfileImageprocessingDIBbitmapInterface

 

1引言

数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。

随着计算机的发展,数字图像处理技术也不断的进步,实现了对图像图像增强、复原、编码、压缩等,在空间和军事高科技中扮演越来越重要的角色。

随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。

近几十年来由于计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。

目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、可视电话、网络传输等等领域,成为各个学科学习和研究对象。

随着图像处理技术的广泛应用,学习和掌握这门科学显得格外重要,图像处理已经成为信息技术相关领域的核心课程。

本课题主要实现图像的一些简单特效显示,图像的旋转和镜像、图像的增强处理,图像灰度变换,图像边缘检测等。

1.1基础知识

组成数字图像的基本单位是像素(Pixel),也就是说数字图像是像素的集合。

显示器在显示图像时采用电子枪从左到右扫描一行,为每个像素着色,然后从上倒下扫描整个屏幕的方式,由于人眼的视觉停留,可以显示出完整的画面.为了防止闪烁,每秒电子枪要重复扫描几十次的扫描过程,人眼感受不到因屏幕刷新也产生的闪烁,这种显示器称为位映像设备。

所谓位映像,是指一个二维的像素矩阵,矩阵的元素值就是像素的灰度值,而位图就是采用位映像方法显示和存储的图像。

彩色图像和灰度图像:

灰度图像是数字图像最基本形式,可以从黑白照片数字化得到或则通过对彩色图像去色处理得到,灰度图像只表示图像的亮度信息而没有颜色信息,灰度图像的每个像素点上只包含一个量化的灰度级(0-255)来表示该点的亮度水平,计算机一般用1个字节(8个二进制位)来存储。

彩色图像的数据不仅包含亮度信息,还包含颜色信息,图像中每一个像素由RGB(红绿蓝)三个分量组成,计算机一般用3个字节(24位二进制)来存储像素的颜色信息。

图1.1BMP图像文件结构

如图1.1所示BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。

在编程时它们以结构体类型在计算机中存储。

1、位图文件头:

主要包含文件类型(必须是0x424D,即字符串“BM”),文件大小以及文件头到实际的位图数据的偏移字节数;

2、位图信息头:

包含图象的尺寸信息、每个像素所占位数(bit)、图像是否压缩、图像所用的颜色数等信息,颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板;

3、调色板(Palette:

调色板实际上是一个数组存有RGB信息的表;

4、位图数据:

对于用到调色板的位图,图像数据就是该象素颜在调色板中的索引值。

对于24位真彩色图,图像数据就是实际的R、G、B三个分量的值。

1.2本数字图像处理界面处理内容介绍

1.2.1启动界面

为了追求该图像处理的界面的美观性,在设计主界面前,先设计一个欢迎界面,即以一个经过photoshop处理过的图像作为对话框,在运行主界面程序前,先显示该对话框。

1.2.2主界面

该数字图像处理界面是基于VC++6.0MFC多文档编程的界面程序,实现数字图像的简单查看与编辑操作。

主界面主要内容有:

图像文件浏览:

实现对.bmp格式图像文件的浏览。

图像特效显示:

主要有自上而下扫描显示,从左至右的滑动显示和渐进显示。

视图-文档的设置:

实现了执行操作后新旧图像在不同视图中显示设置。

图像的灰度变换:

包括图像的二值化,彩色图像转换灰度图像,灰度图像转换8位图像。

图像的镜像与旋转变换:

包括水平镜像,垂直镜像,顺时针旋转90度,逆时针旋转90度,图像旋转180度。

图像的增强处理:

主要是图像锐化处理。

图像的边缘检测和形态学处理:

包括罗伯茨算子边缘检测,图像轮廓提取

该界面主要实现了.bmp格式图像的浏览、编辑、打印、特效设置、视图设置、变换等几大功能。

2系统需求分析

需求分析简单地说就是分析用户的需求。

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。

2.1设计要求

根据设计内容,设计的主要要求有:

(1)设计欢迎界面并在程序中实现欢迎界面先于主界面显示;

(2)实现主界面的功能设计:

图像文件浏览(.bmp格式图像的导入),图像特效显示,视图-文档的设置,图像的灰度变换,图像的镜像与旋转变换,图像的增强处理,图像的边缘检测和形态学处理。

2.2系统处理流程分析

通过对系统的组织结构和功能进行分析,画出业务流程图,它非常易于阅读和理解,可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分。

通过对系统的需求分析,系统的基本功能已经确定。

整个系统各个模块的业务流,如图2.1所示:

图2.1业务流程图

3系统设计

本阶段的主要任务是设计程序的体系结构,确定程序组成模块,以及各模块之间的关系。

3.1系统的设计语言

数字图像处理系统采用MicrosoftVisualC++6.0MFC作为开发平台。

3.2系统总体结构设计

3.2.1系统总体结构图

数字图像处理界面的总体结构设计如图3.1所示:

图3.1数字图像处理界面总体结构设计

3.2.2系统模块设计

模块设计是对处理流程图的注释性书面文件,以帮助程序设计人员进一步了解模块的功能和设计要求数字图像处理系统主要分为两大模块,即欢迎界面和主界面,其中主界面又分为文件操作模块,特效显示模块,图像镜像与旋转模块,图像增强处理模块,图像边缘检测和形态学处理模块。

具体的模块设计如下:

1.欢迎界面:

该模块实现以一个经过photoshop处理过的图像作为对话框,在运行主界面程序前,先显示该对话框。

2.主界面:

(1)文件操作模块:

该模块主要实现图像的文件操作,包括新建操作,打开操作.保存操作,另存为操作,关闭操作,打印操作等。

(2)特效显示模块:

该模块实现了图像在视图中的显示方式,包括自上而下扫描显示,从左至右的滑动显示和渐进显示。

(3)图像镜像与旋转模块:

该模块实现了图像的镜像变换和图像旋转显示,包括水平镜像,垂直镜像,顺时针旋转90度,逆时针旋转90度,图像旋转180度。

(4)图像增强处理模块:

该模块主要实现了图像锐化效果。

(5)图像边缘检测模块:

该模块实现了图像边缘轮廓检测,包括罗伯茨算子边缘检测,图像轮廓提取。

(6)图像灰度变换模块:

该模块实现了彩色图像变灰度格式,灰度图像变彩色格式和二值化操作。

4系统详细设计

4.1基类的设计

BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,同时BMP文件可以分为DIB格式和DDB格式,其中DIB格式是与设备无关的BMP文件,通用性很强。

Windows支持一些重要的DIB访问函数,但都没有封装到MFC中,这里我们封装了一个DIB类,其包含DIB位图处理所需要的基本成员变量和成员函数,进而以该类为基类派生其他类,实现程序的维护和移植。

在这里我们命名这个基类为ImgCenterDib,各种算法的实现都是以ImgCenterDib类为基类派生出来。

根据前面预备知识和程序编写的需要,这里定义ImgCenterDib类代码如下:

classImgCenterDib

{public:

unsignedchar*m_pImgData;//图像数据指针

LPRGBQUADm_lpColorTable;//图像颜色表指针

intm_nBitCount;//每像素占的位数

private:

LPBYTEm_lpDib;//指向DIB的指针

HPALETTEm_hPalette;//逻辑调色板句柄

intm_nColorTableLength;//颜色表长度(多少个表项)

protected:

intm_imgWidth;//图像的宽,像素为单位

intm_imgHeight;//图像的高,像素为单位

LPBITMAPINFOHEADERm_lpBmpInfoHead;//图像信息头指针

public:

ImgCenterDib();//不带参数的构造函数

ImgCenterDib(CSizesize,intnBitCount,LPRGBQUADlpColorTable,

unsignedchar*pImgData);//带参数的构造函数

~ImgCenterDib();//析构函数

CSizeGetDimensions();//获取DIB的尺寸(宽高)

BOOLRead(LPCTSTRlpszPathName);//DIB读函数

BOOLWrite(LPCTSTRlpszPathName);//DIB写函数

BOOLDraw(CDC*pDC,CPointorigin,CSizesize);//显示DIB

voidReplaceDib(CSizesize,intnBitCount,LPRGBQUADlpColorTable,

unsignedchar*pImgData);//用新的数据替换DIB

intComputeColorTabalLength(intnBitCount);//计算颜色表的长度

private:

voidMakePalette();//创建逻辑调色板

voidEmpty();//清理空间};

同时将各个模块函数封装起来成为一个类,这些类都以ImgCenterDib类共有继承,在主程序中调用,减少代码的重复性,提高利用率。

派生关系如图4.1:

图4.1基类与派生类结构关系图

4.2各模块的详细设计

4.2.1欢迎界面设计

用photoshop软件根据内容的需要处理一张图片,并保存为.bmp格式,然后在MicrosoftVisualC++6.0中载入该图片。

设计思想:

欢迎界面在程序运行时是以图形式显现的,这里要封装一个位图的类Cbtmap(派生于位图类CBitmap),获取图像的宽,高,创建逻辑调色板等等;之后创建一个启动窗口类,名为Csplash(派生于窗口基类CWnd),这两个类均封装了一些函数,它们之间通过参数传递和函数调用,在主程序代码中声明Splash类的对象,调用Csplash类中函数从而实现设计目标。

启动窗口类的主要代码如下:

classCsplash:

publicCWnd

{public:

   Csplash();//构造函数

public:

   voidCreate(UINTnBitmapID);//调用CreateEx创建窗口

public:

   virtual~Csplash();//析构函数

protected:

   //{{AFX_MSG(CWzdSplash)

   afx_msgvoidOnPaint();

   //}}AFX_MSG

   DECLARE_MESSAGE_MAP()

private:

   Cbtmapm_bitmap;//私有成员变量

};

位图类的主要代码如下:

classCbtmap:

publicCBitmap

{public:

   DECLARE_DYNAMIC(Cbtmap)

Cbtmap();

voidLoadBitmapEx(UINTnID,BOOLbIconBkgrd);

   CPalette*GetPalette(){returnm_pPalette;};

public:

   virtual~Cbtmap();

intm_Width;

   intm_Height;

private:

   CPalette*m_pPalette;

};

在CPicture_sysView:

:

CPicture_sysView()函数中加入如下代码:

CsplashwndSplash;//声明Splash类的对象

wndSplash.Create(IDB_WZDSPLASH);//调用Create()

wndSplash.UpdateWindow();

Sleep(2000);//定时2秒

程序运行截图如下:

(欢迎界面)

4.2.2主界面设计

(1)文件操作模块

文件操作模块是整个系统中最基本的组成成分,该模块主要实现图像的文件操作,包括新建操作,打开操作.保存操作,另存为操作,关闭操作,打印操作。

通过对用户的需求分析得出文件操作模块的功能结构图,文件操作模块的功能结构图如图4.2所示:

图4.2文件操作模块功能结构图

在文件操作模块,新建操作,关闭操作和图像打印操作可以直接调用系统提供的不需要重载的函数很容易就实现,其他操作都需要将文件下的.bmp格式的图像数据读进计算机内存中生成DIB,存放在m_lpDib(指向DIB的指针)所指向的缓冲区。

文件打开操作的伪代码描述如下所示:

文件的另存为操作伪代码如下:

 

 

功能截图如下:

菜单栏:

另存为操作:

(2)特效显示模块

特效显示模块实现了图像在视图中的显示方式,包括自上而下扫描显示,从左至右的滑动显示和渐进显示。

经过分析图像特效显示功能,得出图像处理的功能模块图如图4.3所示:

 

图4.3特效显示模块功能结构图

特效显示类SpecialEffectShow是在基类ImgCenterDib基础上派生出来的,特效显示类设计代码如下:

classSpecialEffectShow:

publicImgCenterDib

{public:

SpecialEffectShow(CSizesize,intnBitCount,

LPRGBQUADlpColorTable,unsignedchar*pImgData);

//带参数的构造函数voidScan(CDC*pDC);//扫描特效显示

voidSlide(CDC*pDC);//滑动特效显示

voidFadeIn(CDC*pDC);//渐进特效显示

virtual~SpecialEffectShow();

protected:

SpecialEffectShow();//防止从外部访问无参数的构造函数

};

利用类向导,给相应的控件定义消息处理函数,如下表

表1主要的消息处理函数表

序号

ID号及类名

消息处理函数

函数功能

1

ID_scan

Onscan

扫描显示

2

ID_slide

Onslide

滑动显示

3

ID_Fadein

OnFadein

渐进显示

在picture_sysView.cpp重载消息处理函数,这三个消息处理函数代码基本相似,共同操作伪代码如下:

 

功能截图如下:

扫描显示:

滑动显示:

渐进显示

(3)图像灰度变换模块

图像灰度变换模块实现了彩色图像变灰度格式,灰度图像变彩色格式和二值化操作。

经过分析图像灰度变换功能,得出图像处理的功能模块图如图4.4所示:

 

图4.4灰度变换模块功能结构图

灰度变换类GrayTrans是在基类ImgCenterDib基础上派生出来的,灰度变换类设计代码如下:

classGrayTrans:

publicImgCenterDib

{

public:

intm_nBitCountOut;//输出图像每像素位数

unsignedchar*m_pImgDataOut;//输出图像位图数据指针

LPRGBQUADm_lpColorTableOut;//输出图像颜色表

priva

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

当前位置:首页 > 求职职场 > 简历

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

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