基于VC++的数字图像处理软件的开发
数字图像处理实验报告 (图像编码)

实验三图像编码一、实验内容:用Matlab语言、C语言或C++语言编制图像处理软件,对某幅图像进行时域和频域的编码压缩。
二、实验目的和意义:1. 掌握哈夫曼编码、香农-范诺编码、行程编码2.了解图像压缩国际标准三、实验原理与主要框架:3.1实验所用编程环境:Visual C++6.0(简称VC)3.2实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:(如图3.1)图3.1 位图的文件结构具体组成图:单色DIB 有2个表项16色DIB 有16个表项或更少 256色DIB 有256个表项或更少 真彩色DIB 没有调色板每个表项长度为4字节(32位) 像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍biSize biWidth biHeight biPlanes biBitCount biCompression biSizeImagebiXPelsPerMeter biYPelsPerMeter biClrUsedbiClrImportantbfType=”BM ” bfSizebfReserved1 bfReserved2 bfOffBits BITMAPFILEHEADER位图文件头 (只用于BMP 文件)BITMAPINFOHEADER位图信息头Palette 调色板DIB Pixels DIB 图像数据3.3 数字图像基本概念数字图像是连续图像(,)f x y 的一种近似表示,通常用由采样点的值所组成的矩阵来表示:(0,0)(0,1)...(0,1)(1,0)(1,1)...(1,1).........(1,0)(1,1)...(1,1)f f f M f f f M f N f N f N M -⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥----⎣⎦每一个采样单元叫做一个像素(pixel ),上式(2.1)中,M 、N 分别为数字图像在横(行)、纵(列)方向上的像素总数。
Vc++数字图像处理Matlab语音信号及信号处理

数字图像处理设计一、设计题目基于Visual C++的图像平滑、锐化处理 二、设计要求基于Visual C++的MFC 程序设计,实现对灰度图像简单的平滑处理与拉普拉斯锐化处理。
并能得到处理后所需的图像。
三、设计原理 (一)、图像平滑1 图像平滑的基本概述图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。
2 图像平滑的基本方法 (1)线性滤波(领域平均法)对一些图像进行线性滤波可以去除图像中某些类型的噪声。
领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。
领域平均法是空间域平滑噪声技术。
对于给定的图像()j i f ,中的每个像素点()n m ,,取其领域S 。
设S 含有M 个像素,取其平均值作为处理后所得图像像素点()n m ,处的灰度。
用一像素领域内各像素灰度平均值来代替该像素原来的灰度,即领域平均技术。
领域S 的形状和大小根据图像特点确定。
一般取的形状是正方形、矩形及十字形等,S 的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局部统计特性而变化,点(m,n)一般位于S 的中心。
如S 为3×3领域,点(m,n)位于S 中心,则()()∑∑-=-=++=1111,91,i j j n i m f n m f假设噪声n 是加性噪声,在空间各点互不相关,且期望为0,方差为2σ,图像g 是未受污染的图像,含有噪声图像f 经过加权平均后为()()()()∑∑∑+==j i n M j i g M j i f M n m f ,1,1,1,由上式可知,经过平均后,噪声的均值不变,方差221σσM=,即方差变小,说明噪声强度减弱了,抑制了噪声。
(2)中值滤波中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。
但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。
基于VC#的图像处理算法集成软件设计

基于VC#的图像处理算法集成软件设计摘要:数字图像处理技术是目前研究的一个热门领域,而算法的管理仍然是一个较为困难的问题。
将常用的处理算法改写为统一的规范格式,通过软件进行集成管理,是解决这个问题的较好途径。
对算法集成软件功能进行了设计,主要包括算法演示、多算法合成与代码添加引导,并阐述了软件的基本结构和处理流程,对该类软件的开发有很好的参考价值。
关键词:图像处理算法;集成;计算机应用;算法添加;C#1 背景与需求分析现代社会对图像处理技术的需求越来越广泛。
近年来,图像处理技术的研究在各个高校和研究机构日益兴盛,并卓有成效。
在相关研究中,图像处理算法的计算机实现是极其重要的一步。
现阶段,对图像处理算法主要的实现方式是通过VC\+\{++\}或MATLAB,编写程序代码对图像进行处理,缺乏专门的图像处理软件。
以C\+\{++\}和MATLAB为主的实现方法不管是在教学上,还是在科研上,都存在着以下问题。
首先,这种实现方法缺乏易用性。
对VC\+\{++\}和MATLAB的学习在无形中提高了初学者进入图像处理领域的门槛。
其次,目前的图像实现方法缺乏系统性。
开发的源文件缺乏与外部环境的联系,如果不进行必要管理和技术处理,就无法实现相互调用。
最后,目前的实现方法缺乏传承性。
每个开发人员实现算法的程序有很强的多样性,程序很难被其他人员加以应用或改进。
专用的图像处理算法集成软件可以较好地解决这些问题,本着利于基本算法的学习和掌握,采用统一的规范格式,规定源码格式等原则构建该软件,方便使用者应用和改进。
2 软件开发环境与功能设计目前主流的桌面软件开发工具有VC#,VC\+\{++\}与Java等。
在图像处理算法中,C\+\{++\}是应用得最多算法实验、工程实践语言。
而VC#是一种简单、易用、功能强大的桌面软件开发工具。
C#作为.NET平台的主打语言,综合了Java与C\+\{++\}的优点,并可以调用C\+\{++\}开发的动态运行库。
数字图像处理毕业设计

安徽建筑大学毕业设计(论文)毕业设计 (论文)专业电子信息工程班级学生姓名学号课题数字图像处理方法研究与实现——基于VC++的图像增强实现指导教师摘要图像在传送和转换时会造成图像的某些降质,所以有必要对降质的图像进行改善处理。
其中的一种方法是不考虑图像质量降低的原因,只将图像中感兴趣的特征有选择的突出,从而衰减次要信息。
这种方法能够提高图像的可读性,改善后的图像不一定逼近原始图像,但能够突出目标的轮廓、衰减各种噪声、将黑白图像转换成色彩图形等。
这类方法通常称为图像增强技术。
图像增强技术通常有两种方法:空间域法和频率域法。
空间域法主要是在空间域中对图像像素灰度值直接进行运算处理。
本文围绕空间域法,对数字图像的增强处理进行了研究,着重介绍其中的直方图、直方图均衡化及图像平滑处理中的邻域平均和中值滤波。
并利用VC++实现上述方法对图像的处理。
关键词:图像增强;直方图;图像平滑;邻域平均;中值滤波AbstractThe image in the transmission and conversion cases will cause some blurred image, so,it is necessary for the image to have an improved treatment. One way is to not consider the reasons for degradation of image quality, the characteristics of the image selected outstanding, thereby attenuating less important information. This method can improve the readability of the image, the image after improvement is not necessarily approximate to the original image, such as highlighting the outline of the target, the attenuation of noise, the black and white images into color graphics. This kind of method is usually called the image enhancement technology.Image enhancement technology usually has two kinds of methods: spatial domain and frequency domain method. The spatial domain method is direct computation of pixel gray values in the spatial domain. This paper focuses on the spatial domain method, enhancement of digital image processing are studied, emphatically introduces the histogram equalization and histogram of image smoothing, neighborhood averaging and median filtering. And VC++ is used to realize the method for image processing.Keywords:Image Enhancement; Histogram; Image smooth; Neighborhood averaging; Median filtering目录摘要 (II)Abstract (III)1 绪论 (1)1.1课题背景 (1)1.2 图像增强的研究及发展现状 (2)1.3 论文组织结构 (3)2 图像增强的基本理论 (4)2.1 数字图像的基本理论 (4)2.1.1数字图像的表示 (4)2.1.2图像的灰度 (4)2.1.3灰度直方图 (4)2.2 数字图像增强概述 (4)2.3 图像增强概述 (6)2.3.1图像增强的定义 (6)2.3.2常用的图像增强方法 (6)2.4 图像增强流程图 (8)2.5本章小结 (8)3 图像增强方法与原理 (9)3.1 直方图变换 (9)3.1.1直方图修正基础 (9)3.1.2直方图均衡化 (10)3.2 图像平滑 (11)3.2.1图像平滑 (11)3.2.2邻域平均 (11)3.2.3中值滤波 (12)3.4本章小结 (12)4 VC++6.0以及图像增强的实现 (13)4.1 VC++6.0简介 (13)4.1.1 VC++6.0 简介 (13)4.1.2开发环境 (13)4.1.3 图片应用程序的创建 (14)4.2图像增强实现方法 (14)4.2.1灰度修正的实现 (14)4.2.2邻域平均的实现 (18)4.2.3中值滤波的实现 (19)4.3本章小结 (21)5总结与展望 (22)5.1总结 (22)5.2展望 (22)参考文献 (23)致谢 (24)附录 (25)部分程序代码 (25)1.读入图片 (25)2.绘制直方图 (25)3.灰度直方图 (26)4.直方图均衡化 (27)安徽建筑大学毕业设计(论文)数字图像处理方法研究与实现——基于VC++的图像增强实现电子与信息工程学院电子信息工程 10电子1班胡水清 10205010107指导老师宋杨1 绪论数字图像处理是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。
利用VB与VC混合编程实现数字印花的图像处理

现代制造工程2007年第1期CAD/CAE/CAPP/CAM利用VB与VC混合编程实现数字印花的图像处理詹白勺,梅顺齐,陈小兰(武汉科技学院,武汉430073)摘要:织物吸收墨水能力的差异、经向和纬向的属性不同,造成数字印花过程中出现偏色和不期望条纹的现象,达不到理想的印花效果。
针对这种问题提出在印花之前对图像进行合理的处理方案,即调整图像各种颜色的灰度值,将调整后的误差按不同的比例分配到经向和纬向的点上,使得在经向和纬向的点得到不同程度的补偿。
介绍用VC编写动态连接库(DLL)、在VB中调用的方法来开发对数字印花的图像处理软件,以适应不同的织物,从而提高印花质量。
关键词:图像处理;数字印花;动态连接库中图分类号:TP391 文献标识码:A 文章编号:1671—3133(2007)01—0050—03Usi n g VB and VC m i x2programm i n g to rea li ze i m ageprocessi n g for d i g ita l fabr i c pr i n ti n gZhan Bai2shao,Mei Shun2qi,Chen Xiao2lan(W uhan University of Science and Engineering,W uhan430073,CHN) Abstract:Because the differences of fabric abs orbing ink and attribute of war p and woof result in the leaning col or and unexpected stri pe,which appear in the digital dye p rinting p r ocess,the dye p rinting effect is not ideal.Pr oposes the reas onable s oluti on t o i m2 age p r ocessing ai m ing at this kind of questi on before the dye p rinting,na mely it is that adjusting each kind of col or gradati on value of i m age and distributing the err or t o the war p and woof s pots according t o the different p r oporti onal.Then the war p and woof s pots will be co mpensated differently.And intr oduces the way that p r ogra mm ing Dyna m ic L inking L ibrary(DLL)in VC,called in VB co m2 p iles t o the digital dye p rinting i m agery p r ocessing s oft w are t o adap t the different fabric,thus i m p r oves the dye p rinting quality.Key words:I m age p r ocessing;D igital dye p rinting;DLL 数字印花是一种集机械、计算机、电子信息技术、纺织、化工等为一体的高新技术,其先进的生产原理及手段,给纺织印染带来了前所未有的发展机遇。
基于MFC的图片浏览器的设计与实现-毕业论文

毕业设计论文题目基于MFC的图片浏览器的设计与实现摘要本文详细介绍了使用Visual C++ 6.0(以下简称VC6)设计图片浏览器的方法,通过对图像格式的分析,了解其算法,并根据自身的需要实现相应功能,设计出一个具有特色和个性的基于MFC的图片浏览器。
本论文对图片浏览器的常用功能进行设计开发,包括对图片进行读、写、显示等功能,以及图像处理中一些常用的变换算法,如图像的放大、缩小、旋转及百叶窗、马赛克等显示特效,并将这些功能集成,在Microsoft Windows 2000/XP下测试通过,其中重点对图片浏览器的各种格式图像编码和解码进行详细研究。
通过本文,可以初步掌握图形图像编程的方法与技巧。
关键词:图片浏览器编码解码 MFC目录1 绪论 (1)2 软件开发平台及编程模式 (2)2.1 开发平台的选择 (2)2.2 Microsoft Visual C++及编程模式简介 (3)2.2.1 Visual C++可视化编程 (3)2.2.2 MFC(Microsoft Foundation Classes)应用程序框架 (4)2.2.3 Win32编程 (5)2.2.4 消息映射 (5)3 系统的设计与实现 (8)3.1 需求分析 (8)3.1.1功能需求 (8)3.1.2 性能需求 (9)3.2 总体设计 (9)3.2.1 模块划分 (9)3.2.2 软件界面设计 (10)3.3 详细设计 (11)3.3.1 软件核心数据结构LanImage类 (12)3.3.2 BMP解码/编码模块 (14)3.3.3 PCX解码/编码模块 (15)3.3.4 TGA解码/编码模块 (17)3.3.5 JPEG、GIF解码/编码模块 (20)3.3.6 图像显示模块 (20)3.3.7 全屏浏览模块 (22)3.3.8 图像缩放模块 (23)3.3.9 图像旋转模块 (24)3.3.10 图像特效显示 (25)4 系统的关键技术及难点 (27)4.1 资源的分配和释放 (27)4.2 使用JPEG和GIF读写库时缓冲区格式的转换 (28)4.3 实现旋转时对内存的位操作 (30)4.4 直接对内存中图像数据进行操作实现的特效 (32)4.5 右键菜单的实现 (33)4.6 浏览功能的实现 (34)5 软件测试与改进思想 (36)5.1 软件测试 (36)5.2 改进思想 (36)6 结束语 (37)参考文献 (38)Abstract (39)致谢 (40)仲恺农业工程学院毕业论文(设计)成绩评定表 (41)1 绪论数字图像处理的英文名称是“Digital Image Processing”。
数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告1一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.具体要求如下:1.编程实现图像平移,要求平移后的图像大小不变;2.编程实现图像的镜像;3.编程实现图像的转置;4.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的缩放效果;5.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的旋转效果.二.实验目的和意义:本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.三.实验原理与主要框架:3.1 实验所用编程环境:Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.3.2 实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:具体组成图: BITMAPFILEHEADER位图文件头(只用于BMP文件) bfType=BM bfSize bfReserved1bfReserved2bfOffBitsbiSizebiWidthbiHeightbiPlanesbiBitCountbiCompressionbiSizeImagebi_PelsPerMeterbiYPelsPerMeterbiClrUsedbiClrImportant单色DIB有2个表项16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板每个表项长度为4字节(32位)像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍BITMAPINFOHEADER 位图信息头 Palette 调色板 DIB Pi_els DIB图像数据1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.2. BMP文件头BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图文件头的偏移量表示)等信息.3. 位图信息头BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是 0)等信息.4. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为0-255)位图信息头和颜色表组成位图信息5. 位图数据位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上.Windows规定一个扫描行所占的字节数必须是 4的倍数(即以long为单位),不足的以0填充.3.3 BMP(BIT MAP )位图的显示:①一般显示方法:1. 申请内存空间用于存放位图文件2. 位图文件读入所申请内存空间中3. 在函数中用创建显示用位图, 用函数创建兼容DC,用函数选择显示删除位图但以上方法的缺点是: 1)显示速度慢; 2) 内存占用大; 3) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 4) 在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.②BMP位图缩放显示 :用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:1. 打开视频函数,一般放在在构造函数中2. 申请内存空间用于存放位图文件3. 位图文件读入所申请内存空间中4. 在函数中显示位图5. 关闭视频函数 ,一般放在在析构函数中以上方法的优点是: 1)显示速度快; 2) 内存占用少; 3) 缩放显示时图形失真小,4) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 5) 通过直接处理位图数据,可以制作简单动画.3.4 程序中用到的访问函数Windows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:1. SetDIBitsToDevice函数:该函数可以直接在显示器或打印机上显示DIB. 在显示时不进行缩放处理.2. StretchDIBits函数:该函数可以缩放显示DIB于显示器和打印机上.3. GetDIBits函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.4. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI位图.5. CreateDIBSection函数:该函数能创建一种特殊的DIB,称为DIB项,然后返回一个GDI位图句柄.6. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB句柄.7. DrawDibDraw函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB的速度,缺点是必须将VFW代码连接到进程中.3.5 图像的几何变换图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.一、实验的目的和意义实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。
VC6和MATCOM来开发图像处理程序

VC6.0和MATCOM来开发图像处理程序作者:彭军(心の诚)博客:/pengjun一、软件环境1、MA TLAB安装的版本没有什么限制,可以安装也可以不安装。
但是最好知道一些MA TLAB函数的调用方式和数据类型等,对于你使用MA TCOM有很好的帮助。
2、MA TCOM4.5这个软件可厉害了,可以让你在VC6.0中使用类似与MA TLAB的语句,只是做一些稍微的更改就可以了。
不过,他支持的函数是有限的,可以查看帮助来看支持的文件。
他生成的exe可执行文件可以在没有安装MA TLAB的地方运行,只是需要几个dll文件而已。
如果用MA TLAB的Depolyment Tool来生成的exe可执行文件,在没有安装MA TLAB的机子上运行时需要安装MCR,而MCR现在有200M多,所以很不方便。
3、VC++6.0这个就没什么可说的了,安装就可以了。
注意的是最好选择注册环境变量(Registed Enviroment variables)。
二、MATCOM4.5的安装1、下载地址:/yunbo/matcom4.5.rar2、MA TCOM4.5在安装时需要你输入口令,Matcom4.5的口令为FREE-4.5-1193046-802951113、第一次运行MA TCOM时会有提示是否自动搜索VC6.0的cl.exe,如果你已经安装了VC6.0的话,那么它会自动找到。
这个VC6.0是必须安装的,如果你先安装的MA TCOM,后安装的VC6也没关系,只用安装VC6之后启动MA TCOM就可以了。
然后会提示是否安装了MA TLAB,如果安装了就点“是”,否则就点“否”。
4、如果安装了MA TLAB的话,会有下面的操作:点击“是”之后,启动MA TLAB,输入下面的命令:cd c:\matcom45 % MA Tcom的安装路径diary mpathmatlabpathdiary off用上面的目的是为了让MA TCOM能记录MA TLAB的路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VC++的数字图像处理软件的开发摘要:随着科学技术的飞速发展,计算机使用领域的不断开拓,一种全新的图像处理方法——数字图像处理技术应运而生,即利用计算机设备将图像转变成数字信息来进行保存、处理、传输和显示。
目前,数字图像处理技术被广泛使用在众多的领域,而且其处理精度比较高,所以,开发一个好的数字图像处理软件至关重要。
本文设计了一个基于VC++的数字图像处理系统,系统中包括图像处理技术的各个方面,涵盖了数字图像处理领域的大部分算法,并对相应的算法进行了实现。
本系统具有很强的可移植性和扩展性。
本文以BMP文件的读写为切入点,相继介绍了图像处理领域的大部分算法:图像几何变换、正交变换、图像增强、边缘检测,并详细论述了各个算法的实现过程,对主要算法的实际使用效果进行了分析。
实验结果表明系统能够满足图像处理的基本要求,而且还可以针对不同的处理目的,灵活地对图像处理算法进行改进,从而选择出最优处理算法,达到期望的处理效果。
为了方便用户观察处理结果,更好的理解算法,本文设计了一个友好的图形用户界面,此界面操作简单,使用方便,为数字图像处理处理算法的研究人员提供了一个很好的图像处理平台。
关键词:数字图像处理,VC++,BMP一、前言图像是人类获取信息、表达信息和传递信息的重要手段。
人出生以后第一次睁开眼睛,首先接收的就是各种各样的图像信息,因此有人说,图像和生俱来是人类生活中最直观、最丰富和最生动的信息表示形式。
国外学者曾做过统计,人们从外界所获取的信息有70%以上来自于视觉摄取的图像,和文字或者语言信息相比,图像包含的信息量更大,具有更广泛的适用性和更高的使用效率。
在当今科学技术迅速发展的时代,人们越来越多的利用图像信息来认识和判断事物,解决实际问题。
既然图像处理如此重要,那么开发一个好的数字图像处理软件也是十分必要的。
MATLAB软件虽然能够对数字图像进行方便的处理,并且其制作的界面也比较友好,但是由于其过于庞大,移植性和速度方面也很难和VC++相比。
另外,由于商业化的VC++数字图像处理软件价格比较昂贵,而且不便于二次开发,所以自己利用VC++集成开发环境开发一套简单的数字图像处理软件系统,本系统界面友好,不但能对现代光学测量中散斑和条纹图像进行良好的处理,而且还能够满足一些简单的数字图像处理的需求,为以后的学习和研究奠定了基础。
二、软件界面设计用户界面是指用户和计算机之间进行交互通信联系的平台,并出现了多种形式的人机交互方式,从早期计算机使用的命令行的交互方式到以图形界面(GUI)为主的交互形式。
GUI的广泛使用极大的方便了非专业用户的使用,人们不再需要死记硬背大量的命令,取而代之的是可用通过窗口、菜单、按钮等方式来方便的进行操作。
图形界面给用户带来了操作和控制的方便和灵活性,所以它在人机交互方式中占主导地位。
考虑到图像处理操作的简单方便,本系统采用多重文档界面(MDI),它的特点是允许多个框架窗口存在,每次能创建和拥有多个文档对象,也允许打开多个文档。
根据Windows的界面标准和本软件的功能设计,软件的主菜单中包括文件、编辑、查看、窗口、几何变换、点运算、图像增强、形态学变换、边缘和轮廓、帮助等菜单项,本系统软件界面如图2-1所示。
每一个主菜单相应的会有几个子菜单,同时,通过对话框操作可实现图像的交互处理。
下面我们以边缘和轮廓处理中的轮廓提取为例,通过主菜单、子菜单、对话框来实现图像的轮廓提取操作。
图2-1软件界面示意图三、图像处理软件设计软件本身功能包括五个模块,分别是:几何变换模块、点运算模块、图像增强模块、形态学变换模块、边缘和轮廓模块。
几何变换模块包括:图像旋转、图像缩放、图像转置、水平镜像、垂直镜像。
点运算模块包括:灰度化、灰度直方图。
图像增强模块包括:图像平滑、梯度锐化、拉普拉斯锐化。
形态学变换模块包括:腐蚀、膨胀、开运算、闭运算。
边缘和轮廓模块包括:边缘检测、轮廓提取、轮廓跟踪。
功能结构图如图3-1。
本文将就重要部分进行介绍。
几何变换图像旋转水平镜像图像转置图像缩放灰度化图像平移垂直镜像点运算梯度锐化腐蚀膨胀拉普拉斯锐化图像平滑灰度直方图边缘检测闭运算开运算Gauss-Laplace 算子轮廓跟踪轮廓提取Sobel 算子点运算点运算图像增强图3-1 软件功能结构图3.1 VC++图像格式3.1.1位图结构BMP 位图文件格式是Windows 系统交换图像数据的一种标准图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。
Windows 3.0以前的BMP 位图文件格式和显示设备有关,因此把它称为DDB 文件格式,Windows 3.0以后的 BMP 位图格式和显示设备无关,因此把它称为DIB 文件格式,目的是为了让Windows 能够在任何类型的显示设备上显示BMP 位图文件。
一个BMP 文件由4个部分组成:位图文件头、位图信息头、调色板和像素数据。
如图3-2 所示。
图3-2 BMP 图像文件结构示意图1. BMP 文件头BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
其定义如下:typedef struct tagBITMAPFILEHEADER{WORD bfTypeDWORD bfSizeWORD bfReserved1WORD bfReserved2DWORD bfOffBits} BITMAPFILEHEADER;参数bfType 指定位图文件类型的识别代码,例如BMP为BM 等,该参数必须为BM。
参数bfSize 指定位图文件的大小,以字节为单位。
参数bfReserved1和bfReserved2为保留字,需要将其设为0 。
参数bfOffBits 指定位图数据的起始位置,以相对于位图文件头的偏移量并以字节为单位来表示。
2. 位图信息头BMP位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数以及图像的压缩格式。
第二部分为位图信息头BITMAPINFOHEADER,也是一个结构,该结构的定义如下:typedef struct tagBITMAPINFOHEADER{DWORD biSizeLONG biWidthLONG biHeightWORD biPlanesWORD biBitCountDWORD biCompressionDWORD biSizeImageLONG biXPelsPerMeterLONG biYPelsPerMeterDWORD biClrUsedDWORD biClrImportant} BITMAPINFOHEADER;参数biSize 指定结构的字节数。
参数biWidth和biHeight 指定位图的宽度和高度,以像素为单位。
参数biPlanes 表示目标设备的级别,必须是1 。
参数biBitCount 指定每个像素所需的位数,其值必须为 1(黑白二色图)、4(16色图)、 8(256 色)、24(真彩色图)。
参数biCompression指定位图压缩类型,其值必须是 0,1 或2 ,其中0 为不压缩,1 代表BI_RLE8 压缩类型,2 为BI_RLE4 压缩类型。
参数biSizeImage指定实际的位图数据占用的字节数。
3. 调色版调色板实际上定义为是一个数组,用于说明位图中的颜色,它包含biClrUsed个元素,每个元素代表一种颜色,并由一个RGBQUAD类型的结构来表示,RGBQUAD结构的定义如下:typedef struct tagRGBQUAD{BYTE rgbBlue //该颜色的蓝色分量BYTE rgbGreen // 该颜色的绿色分量BYTE rgbRed //该颜色的红色分量BYTE rgbReserved //保留值} RGBQUAD;调色板中RGBQUAD 结构数据的个数由位图信息头中参数biBitCount 来确定。
4. 位图数据位图数据记录了位图的每一个像素值,记录顺序在扫描行内是从左到右,扫描行之间从上到下,Windows规定一个扫描行所占的字节数必须是4 的倍数,不足的以0填充。
位图的一个像素值所占的字节数如下:当biBitCount=1 时,8个像素占一个字节。
当biBitCount=4 时,2个像素占一个字节。
当biBitCount=8 时,1个像素占一个字节。
当biBitCount=24时,1个像素占3个字节。
3.1.2设备无关位图Windows 系统使用的位图常分为设备相关位图(DDB)和设备无关位图(DIB)两种。
其中DDB依赖于具体的图像输出设备,它只能存在于视频内存或系统内存中,其颜色模式必须和输出设备相一致。
因此我们不会把DDB图像存储成文件,而是更多地使用DIB。
DIB 不依赖于具体输出设备,和所有显示设备兼容,因为 DIB 的颜色模式和设备无关,而且它自带颜色信息。
DIB的设备无关性使得其可以被用来永久地保存图像,因此DIB既可以保存在内存中,也可以以文件形式保存在磁盘上。
DIB 通常以BMP为文件扩展名的形式保存在磁盘中的。
3.2 几何变换模块图像几何变换又称为图像空间变换,它是数字图像处理的重要内容之一。
通过几何变换,可以根据使用的需要使原图像产生大小、形状和位置等各方面的变化。
从变换性质来分,几何变换可以分为图像的旋转、缩放、转置、镜像、平移等等。
在这里我们只介绍基本的图像的旋转。
3.2.1 图像的旋转图像的旋转变换是几何变换中研究的重要内容之一。
一般情况下,图像的旋转是指将图像围绕某一指定点旋转一定的角度。
旋转通常也会改变图像的大小,和图像平移一样,可以把转出显示区域的图像截去,也可以改变输出图形的大小以扩展显示范围。
以任意点为中心的图像旋转即是将图像平移和旋转操作相结合,先进行坐标系平移,再以新的坐标原点为中心旋转,然后将新原点平移回原坐标系的原点。
这一过程可分为以3个步骤:(1)将坐标系Ⅰ变成Ⅱ。
(2)将该点顺时针旋转θ角。
(3)将坐标系Ⅱ变回Ⅰ。
下面我们以围绕图像中心的旋转为例,具体说明上述的变换过程。
坐标系Ⅰ以图像左上角点为坐标原点,向右为x轴正方向,向下为y轴正方向;而坐标系Ⅱ是以图像的中心为原点,向右为x轴正方向,向上为y轴正方向。
如图 3-3 所示。
图3-3 图像旋转示意图本软件进行图像旋转功能如图3-4:图3-4 图像旋转3.3点运算模块点运算模块包括图片的灰度化、灰度直方图功能。
这里只介绍灰度直方图功能。
3.3.1灰度直方图灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度级内容。
任何一幅图像的直方图都包含了客观的信息,某些类型的图像还可由其直方图完全描述。
灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数。