基于VC++的图像的几何变换的实现毕业设计

上传人:少*** 文档编号:67956642 上传时间:2022-04-01 格式:DOC 页数:31 大小:386KB
收藏 版权申诉 举报 下载
基于VC++的图像的几何变换的实现毕业设计_第1页
第1页 / 共31页
基于VC++的图像的几何变换的实现毕业设计_第2页
第2页 / 共31页
基于VC++的图像的几何变换的实现毕业设计_第3页
第3页 / 共31页
资源描述:

《基于VC++的图像的几何变换的实现毕业设计》由会员分享,可在线阅读,更多相关《基于VC++的图像的几何变换的实现毕业设计(31页珍藏版)》请在装配图网上搜索。

1、目 录摘要1Abstract20 文献综述30.1本文的研究背景30.2 国内外图像几何变换的研究现状31 引言51.1数字图像概述51.1.1数字图像51.1.2数字图像处理51.2数字图像处理的特点及目的61.2.1数字图像处理的特点61.2.2数字图像处理的目的71.3开发语言的选择72 数字图像处理的简介82.1什么是数字图像82.2数字图像的显示82.3数字图像的分类83 VC+的图像处理简介103.1位图文件及其C+操作103.1.1 设备无关位图103.1.2 BMP图像文件数据结构103.2 CImg类144 图像的几何变换154.1解决几何变换的一般思路154.2图像平移16

2、4.2.1图像平移的变换公式164.2.2图像平移的Visual C+实现174.3图像镜像194.3.1图像镜像的变换公式194.3.2图像镜像的Visual C+实现194.4图像转置214.4.1图像转置的变换公式214.4.2图像转置的Visual C+实现224.5图像缩放234.5.1图像缩放的变换公式234.5.2图像缩放的Visual C+实现244.6图像旋转254.6.1图像旋转的变换公式254.6.2图像旋转的Visual C+实现255 结论26参考文献28致谢29 基于VC+的图像的几何变换的实现摘要:几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以

3、得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。目前数字图像处理的应用越来越广泛,已经渗透到工业、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。作为数字图像处理的一个重要部分,本文介绍的是如何用Visual C+编程工具设计一个完整的应用程序,实现经典的图像几何变换功能。程序大概分为两大部分:读写BMP图像,和数字图像的几何变换。即首先用Visual C+创建一个多文档应用程序框架,在实现任意BMP图像的读写,打印,以及剪贴板操作的基础上,完成经典的图像几何变换功能。程序已在VC+ 6.0下运行通过。关键词:图像处理;几何变

4、换;BMP图像;Visual C+The Implementation Of Geometrical Transformation Based on VC+Abstract:The geometrical transformation is the most popular image processing method. We can get an exact image from a distorted image through the geometrical emendation. The transforming methods in common use including tra

5、nslation, mirror, rotation, or transpose an image. Since the domain of digital image processing application has becoming wider and wider, it penetrates into many fields. Such as industry, aviation, military, and has become much more important in every aspects of our life.Being an important part of d

6、igital image processing, the work introduced in this article is about how to design an integrated application program using Visual C+ to implement the classic geometrical transformation. The program can be divided into two parts: read or write a BMP image, and the geometrical transformation for it.

7、So I designed a multiple document interface first, on the basic of read, write, print, and the clipboard operation of an image, then carry out the function of geometrical transformation finally.Key Words:Image processing; Geometrical transformation; BMP image; Visual C+0 文献综述0.1本文的研究背景当今社会是信息社会,各种媒体

8、交互存在,而图像在其中又占据了重要的地位。图像具有包容信息量大、直观、容易理解以及吸引人注意力等优点,是人们感知外部世界的最主要的载体,人们的生活和工作已经离不开图像。图像有模拟图像和数字图像之分1。模拟图像一般用摄像机、传统的照相机等获取,模拟图像大多可以用一个连续函数来描述,所以模拟图像处理也称为“连续图像处理”,其处理过程主要借助于光学、化学等技术方法和相应的设备,对图像进行加工和处理。例如在暗房中对底片进行变形矫正、放大、遮拦、着色、虚化、浮雕化、剪裁等。模拟图像处理精度较差,处理方式不够灵活,处理时间过长。数字图像是用二进制来表示图像的,是离散的数据集,可以通过数码相机等数字设备来获

9、取。数字图像处理对象是数字图像,是由一组具有颜色、亮度等被称为像素的点组成的集合2。数字图像的特点决定了数字图像处理的灵活性,并且以其强大的功能成为当今图像处理技术的主流。由于以前获取的大部分都是模拟图像,如果想把这些模拟图像转化为数字图像,并用现在先进的数字图像处理技术进行处理,可以通过模数转化器(ADC)将模拟图像信号转换为数字图像信号存储到计算机中进行各种处理和显示,这称为模拟图像数字化,例如可以通过扫描仪把普通照片数字化并存储到计算机中。通过模拟数字化可以将以前宝贵的模拟图像转化为数字图像,这样就可以利用现在多样的数字图像处理技术进行处理,避免了资源的浪费。数字图像处理技术研究内容很多

10、,包括以下几个方面:图像变换、图像编码压缩、图像增强和复原、图像分割、图像描述、图像识别等。数字图像处理具有再现性好、处理精度高、适用面广、灵活性高、成本低等优点。数字图像的应用领域涉及到人类生活的方方面面,例如航天和航空领域、生物医学领域、通信工程、工业和工程、军事与安全、文化艺术等。0.2 国内外图像几何变换的研究现状我们在处理图像时往往会遇到需要对图像进行几何变换的一些问题。图像的几何变换时图像处理和图像分析的基础内容之一,它不仅提供了产生某些图像的可能,而且还可以使图像处理和分析的程序简单化,特别是图像具有一定的规律性时,一个图像可以由另一个图像通过几何变换来实现。所以,为了提高图像处

11、理和分析程序设计的速度和质量,开拓图像程序应用范围的新领域,对图像进行几何变换是十分必要的。图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置3。从变换的性质分,图像的几何变换有图像的位置变换(平移、镜像、旋转)、图像的形状变换(放大、缩小、错切)等基本变换以及图像的复合变换等。其中使用最频繁的是图像的缩放和旋转,不论照片、图画、书报,还是医学X光和卫星遥感图像都会用到这两项技术。在图像几何变换中的平移、转置、镜像操作变换中,输出图像的每一个像素点在输入图像中都有一个具体的像素点与之对应。但是,在缩放操作中,输出图像像素点坐标可能对应于输入图像上几个像素点之间的位置,这个时候就需要通

12、过灰度差值处理来计算出该输出点的灰度值。图像差值是图像超分辨处理的重要环节,不同的插值算法有不同的精度,插值算法的好坏也直接影响到图像的失真程度。数字图像放大的方法多种多样,常用的有Dube、COK、bilinear、bicubie、KR和NEDI等等,KR、NRDI和Dube算法虽然放大效果优秀,但是算法复杂度高,很难在实时应用中使用,COV和bilinear等算法虽然较为简单,但是效果差,难以满足要求。所以,如何在保证一定的放大效果的情况下降低图像放大算法的复杂度,使之在实时应用中得到使用,是数字图像处理领域的一个研究目标。1 引言1.1数字图像概述1.1.1数字图像用计算机进行图像处理的

13、前提是图像必须以数字格式存储,我们把以数字格式存放的图像称之为数字图像。常见的各种照片、图片、海报、广告画等均属模拟图像,要将模拟图像数字化后生成数字图像,需要利用数字化设备。目前,将模拟图像数字化的主要设备是扫描仪,将视频画面数字化的设备有图像采集卡。当然,也可以利用数码照相机直接拍摄以数字格式存放的数字图像。模拟图像经扫描仪进行数字化或由数码相机拍摄的自然景物图像,在计算机中均是以数字格式存储的。既然是数字,计算机当然可以方便地进行各种处理,以达到视觉效果和特殊效果。在计算机中,图像被分割成如下所示的像素(Pixel),各像素的灰度值用整数表示。一幅个像素的数字图像,其像素灰度值可以用行、

14、列的矩阵表示:1.1.2数字图像处理数字计算机最擅长的莫过于处理各种数据,数字化的图像可以看成是存储在计算机中的有序数据,当然可以通过计算机对数字图像进行处理。我们把利用计算机对图像进行去除噪声、增强、复原、分割、提取特征等的理论、方法、和技术称为数字图像处理(Digital Image Processing)。一般,图像处理是用计算机和实时硬件实现的,因此也称为计算机图像处理(Computer Digital Image Processing)。在日常生活中,图像处理已经得到广泛应用。例如,电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的

15、身份识别等。在医学领域,很早以前就采用X射线透视、显微镜照片等来诊断疾病。现在,计算机图像处理已成为疾病诊断的重要手段,用一般摄影方法不能获取的身体内部的状况,也能由特殊的图像处理装置获取,最具代表性的就是X射线CT(Computerized Tomograph)。数字图像处理的产生和迅速发展主要受如下三个方面的影响。一是计算机的发展。早期的计算机无论在计算速度或存储容量方面,难于满足对庞大图像数据进行实时处理的要求。随着计算机硬件技术及数字化技术的发展,计算机、内存及外围设备的价格急剧下降,而其性能却有了大幅度提高。过去只能用大型计算机完成的庞大处理,现在,在个人计算机上也能够轻而易举地实现

16、。二是数学的发展,特别是离散数学理论的创立和完善,为数字图像处理奠定了理论基础。三是军事、医学和工业等方面应用需求的不断增长。自20世纪20年代以来,图像处理首次应用于改善伦敦和纽约之间海底电缆发送的图片质量以来,经过几十年的研究与发展,数字图像处理的理论和方法进一步完善,应用范围更加广阔,已经成为一门新兴的学科,并在向更高级的方向发展。如在景物理解和计算机视觉(机器视觉)方面,图像处理已由二维处理发展到三维理解或解释。近几年来,随着计算机和各个相关领域研究的迅速发展,科学计算可视化、多媒体技术等研究和应用的兴起,数字图像处理从一个专门领域的学科,变成了一种新型的科学研究和人机界面的工具。目前

17、数字图像处理技术已成为计算机科学、信息科学、生物学、医学等学科研究的热点。这是因为图像处理学科不仅可以促进人类的进步,还可以带来巨大的经济和社会效益。1.2数字图像处理的特点及目的1.2.1数字图像处理的特点数字图像处理是利用计算机的计算功能,实现与光学系统模拟处理相同效果的过程。数字图像处理具有如下特点:(1)处理精度高,再现性好。利用计算机进行图像处理,其实质是对图像数据进行各种运算。由于计算机技术的飞速发展,计算精度和计算的正确性都毋庸置疑;另外,对同一图像用相同的方法处理多次,也可得到完全相同的效果,具有良好的再现性。(2)易于控制处理效果。在图像处理程序中,可以任意设定或变动各种参数

18、,能有效控制处理过程,达到预期处理效果。这一特点在改善图像质量的处理中表现更为突出。(3)处理的多样性。由于图像处理是通过运行程序进行的,因此,设计不同的图像处理程序,可以实现各种不同的处理目的。(4)图像数据量庞大。图像中包含有丰富的信息,可以通过图像处理技术获取图像中包含的游泳的信息,但是,数字图像的数据量具大,一幅数字图像是由图像矩阵中的像素组成的,通常每个像素用红、绿、蓝三种颜色表示,每种颜色用8bit表示灰度级。则一幅10241024不经压缩的真彩色图像,数据量达3MB(即102410248bit3=24Mb)。如此庞大的数据量给存储、传输和处理都带来巨大的困难。如果精度及分辨率再提

19、高,所需处理时间将大幅度增加。(5)处理费时。由于图像数据量大,因此处理比较费时。特别是处理结果与中心像素邻域有关的处理过程花费时间更多。(6)图像处理技术综合性强。数字图像处理涉及的技术领域相当广泛,如通信技术、计算机技术、电子技术、电视技术等,当然,数学、物理学等领域更是数字图像处理的基础。1.2.2数字图像处理的目的一般来说,对图像进行加工和分析主要有如下三方面的目的:(1)提高图像的视感质量,以达到赏心悦目的目的。如去除图像中的噪声,改变图像的亮度、颜色,增强图像中的某些成份、抑制某些成份,对图像进行几何变换等,从而改善图像的质量,以达到或真实的、或清晰的、或色彩丰富的、或意想不到的艺

20、术效果。(2)提取图像中所包含的某些特征或特殊信息,以便于计算机分析,例如,常用作模式识别、计算机视觉的预处理等。这些特征包括很多方面,如频域特性、灰度/颜色特性、边界/区域特性、纹理特性、形状/拓扑特性以及关系结构。(3)对图像数据进行变换、编码和压缩,以便于图像的存储和传输。1.3开发语言的选择图形图像的处理的时间消耗较一般算法多,提高处理效率很有必要,因此选择合适的语言进行算法的描述显得尤为重要。本文选择Visual C+,其主要优势在于以下三个方面:(1)执行效率高。C+的执行代码经过编译后生成的是汇编语言,它可以直接在处理器上运行,因此它的执行效率较高。(2)较高的灵活度。指针是C+

21、的一种特殊的数据类型,能够获取和直接操纵地址,实现动态存储分配内存。掌握指针就能更有效地使用内存空间,C+中指针的使用,很大幅度上提高了编程的灵活度。(3)提高了内存使用效率。对于图形图像数据的处理而言,大量信息的图像数据处理需要占用较大的内存,而计算机内存是有限的。在相对有限的内存空间,必须更有效的使用才能比较好地完成数据处理运算。由于C+语言支持对内存的直接分配和释放,提高了内存的使用效率,也大大提高了图像处理效率。2 数字图像处理的简介2.1什么是数字图像简单地说,数字图像就是能够在计算机上显示和处理的图像,根据其特性可以分为两大类位图和矢量图。位图通常使用数字阵列来表示,常见格式有BM

22、P、JPG、GIF等;矢量图由矢量数据库表示。我们接触的最多的就是PNG图形。我们可以将一幅图像视为一个二维函数f(x,y),其中x和y是空间坐标,而在x-y平面中的任意一对空间坐标(x,y)上的幅值f称为该点图像的灰度、亮度或强度。此时,如果f、x、y均为非负有限离散,则称该图像为数字图像(位图)。一个大小为MN的数字图像是由M行N列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素或像素。2.2数字图像的显示不论是CRT显示器还是LCD显示器,都是由许多点构成的,显示图像时这些点对应图像的像素,显示器被称为位映像设备。

23、所谓位映像,就是一个二维的像素矩阵,而位图则采用位映像方法显示和存储的图像。当一幅数字图像被放大后就可以明显看出图像是由很多方格形状的像素构成的。2.3数字图像的分类根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像以及索引图像等。(1)二值图像每个像素只有黑、白两种颜色的图像称为二值图像。在二值图像中,像素只有0和1两种取值,一般用0来表示黑色,用1表示白色。(2)灰度图像在二值图像中进一步加入许多介于黑色和白色之间的颜色深度,就构成了灰度图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)成为一个灰度级,通常用L表示。在灰度图像中,像素可以取0L

24、1之间的整数值,根据保存灰度数值所使用的数据类型的不同,可能有256种取值或者种取值,当k=1时即退化为二值图像。(3)RGB图像众所周知,自然界中几乎所有颜色都可以由红(Red,R)、绿(Green,G)、蓝(Blue,B)3种颜色组合而成,通常称它们为RGB三原色。计算机显示彩色图像时采用最多的就是RGB模型。对于每个像素,通过控制R、G、B三原色的合成比例则可决定该像素的最终显示颜色。对于三原色RGB中的每一种颜色,可以像灰度图那样使用L个等级来表示含有这种颜色成分的多少。例如对于含有256个等级的红色,0表示不含红色成分,255表示含有100%的红色成分。同样绿色和蓝色也可以划分为25

25、6个等级。这样每种原色可以用8位二进制数据表示,于是3原色总共需要24位二进制数,这样能够表示出的颜色种类数目为256256256=,大约有1600万种,已经远远超过普通人所能分辨出的颜色数目。未经压缩的原始BMP文件就是使用RGB标准给出的3个数值来存储图像数据的,称为RGB图像。在RGB图像中每个像素都是用24位二进制数表示,故也称为24位真色彩图像。(4)索引图像如果对每个像素都直接使用24位二进制数表示,图像文件的体积将变得十分庞大。举个例子,对一个长、宽各为200像素,颜色数为16的彩色图像,每个像素都用RGB 3个分量表示,这样每个像素由3个字节表示,整个图像就是2002003=1

26、20kB。这种完全未经压缩的表达方式,浪费了大量的存储空间,下面介绍一种更节省空间的存储方式:索引图像。同样还是200像素200像素的16色图像,由于这张图片中最多只有16种颜色,那么可以使用一张颜色表(163的二维数组)保存这16种颜色对应的RGB值,在表示图像的矩阵中使用这16种颜色在颜色表中的索引(偏移量)作为数据写入相应的行列位置。3 VC+的图像处理简介3.1位图文件及其C+操作Windows操作系统中使用最多的图形文件格式就是位图格式,最常见的位图文件的扩展名为BMP。BMP是英文Bitmap(位图)的简写,这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,因此占用的磁盘空间较

27、大。3.1.1 设备无关位图Windows3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件称为设备无关位图(device independent bitmap,DIB)。DIB自带颜色信息,因此调色板管理非常简单。现在,任何Windows操作系统的计算机都能够显示和处理DIB,它通常以BMP文件的形式被把保存在磁盘中。3.1.2 BMP图像文件数据结构典型的BMP图像文件由以下4部分组成,如图3.1所示。(1)位图文件头数据结构BITMAPFILEHEADER,包含BMP图像文件的类型、显示内容等信息。(2)位图信息头数据结构BITMAPINFOHEADER,包含有BMP

28、图像的宽、高、压缩方法以及定义颜色等信息。(3)调色板,即颜色索引表。(4)实际的位图数据。1位图文件BITMAPFILEHEADER结构位图文件头BITMAPFILEHEADER的定义可以再MFC Library中找到,这部分文件头包含了文件的类型、大小以及设备无关位图的图像文件布局。图3.1 BMP文件的组成Fig.3.1 the composition of BMP fileBITMAPFILEHEADER结构体长度固定,为14字节,其定义和描述如下:typedef struct tagBITMAPFILEHEADER WORD bfType; DWORD bfSize; WORD bf

29、Reserved1; WORD bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER, *PBITMAPFILEHEADER;各个域的说明如下:bfType:指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有“.bmp”文件的头两个字节都是“BM”。bfSize:指定文件大小,包括这14个字。bfReserved1,bfReserved2:为保留字,不用考虑。bfOffBits:为从文件头到实际的位图数据的偏移字节数,即下图中前三个部分的和。2位图信息头BITMAPINFOHEADER结构BITMAPINFOHEADER结构体包含了设备无关

30、位图关于颜色维度和色彩格式的信息,其定义和描述如下:typedef struct tagBITMAPINFOHEADER DWORD biSize; LONG biWidth; LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant;BITMAPINFOHEADER, *PBITMAPINFOHEADER该结构的长度也是固定

31、的,为40个字节。各个域的说明如下:biSize:指定这个结构的长度,为40字节。biWidth:指定图像的宽度,单位是像素。biHeight:指定图像的高度,单位是像素。biPlanes:必须是1,不用考虑。biBitCount:指定表示颜色时要用到的位数,常用的值为1(黑白二色图)、4(16色图)、8(256色)、24(真彩色),新的“.bmp”格式支持32位色,这里就不做讨论了。biCompression:指定位图是否压缩,有效的值为BI-RGB,BI-RLE8,BI-RLE4,BI-BITFIELDS(都是Windows定义好的常量)。要说明的是,Windows位图可以采用RLE4和R

32、LE8的压缩格式,但用的不多。今后所讨论的只有第一种不压缩的情况,即biCompression为BI-RGB的情况。biSizeImage:指定实际的位图数据占用的字节数。biXPelsPerMeter:指定目标设备的水平分辨率,单位是像素/米。biYPelsPerMeter:指定目标设备的垂直分辨率,单位是像素/米。biClrUsed:指定本图像实际用到的颜色数,如果该项为0,则用到的颜色数为2的biCompression次幂。biClrImportant:指定本图像中重要的颜色数,如果该值为0,则认为所有的颜色都是重要的。3调色板结构有些位图需要调色板,有些位图,如真彩色图,不需要调色板,

33、它们的BITMAPINFOHEADER后面直接是位图数据。调色板实际上是一个数组,共有biClrUsed个元素(如果该值为0,则有2的biBitCount次幂个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节,其定义如下:typedef struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved;RGBQUAD;其中:rgbBlue:该颜色的蓝色分量。rgbGreen:该颜色的绿色分量。rgbRed:该颜色的红色分量。rgbReserved:保留值。4实际位图结构实际位图数据是一片连续

34、的存储区域,其中保存着图像中每个像素的灰度(颜色)信息。对于256色灰度图像,图像数据就是该像素的实际灰度,1个像素需要1个字节来表示;对于索引图像,图像数据就是该像素颜色在调色板中的索引值;而对于真色彩图,图像数据就是实际的RGB值,1个像素需要3个字节来表示。3.2 CImg类CImg类的主要成员如表3.1所示。CImg类拥有两个公有成员:BITMAPINFOHEADER *m_pBMIH;LPBYTE *m_lpData;其中,m_pBMIH中保存的是图像的信息头,而m_lpData中保存实际的图像数据。CImg类的主要成员如表3.1表3.1 CImg类的主要成员Tab.3.1 the

35、main members of CImg class函数原型功能CImg();构造函数BOOL IsValidate();判断位图是否有效Void InitPixel(BYTE color);将所有像素的值初始化为灰度值colorBOOLAttachFromFile(LPCTSTRlpcPathName);BOOL AttachFromFile(CFile & file);从文件加载位图BOOL SaveToFile(LPCTSTR lpcPathName);BOOL SaveToFile(CFile & file);将位图保存到文件BOOL Draw(CDC*pDC);将位图绘制到设备平面v

36、oid SetPixel(int x.int y,COLORREF color);设置指定位置像素的值COLORREF GetPixel(int x,int y);获取指定位置像素的颜色值BYTE GetGray9int x,int y);获取指定位置像素的灰度值int GetWidthByte();获取图像数据矩阵一行的字节数int GetWidthPixel();获取图像数据矩阵一行的像素数int GetHeight();获取图像数据矩阵的高度(行数)void ImResize(int nHeight,int nWidth);改变位图的尺寸BOOL IsBinaryImg();判断当前对象

37、中存储的是否为二值图像BOOL IsIndexedImg(void);判断当前对象中存储的是否为索引图像bool Index2Gray();256色素引图像转灰度图像LPVOID GetColorTable();取得颜色索引表数据4 图像的几何变换包含相同内容的两幅图像可能由于成像角度、透视关系乃至镜头自身原因所造成的几何失真而呈现出截然不同的外观,这就给观测者或是图像识别程序带来了困扰。通过适当的几何变换可以最大程度地消除这些几何失真所产生的负面影响,有利于我们在后续的处理和识别工作中将注意力集中于图像内容本身,更确切地说是图像中的对象,而不是该对象的角度和位置等。因此,几何变换常常作为其他

38、图像处理应用的预处理步骤。4.1解决几何变换的一般思路图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变换参数。几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、旋转和镜像等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。设原图像经过几何变换产生的目标图像为,则该空间变换(映射)关系可表示为: (

39、41) (42)其中,和为由到的坐标变换函数。对于几何失真图像的复原(校正)过程是上述变换的逆过程: (43) (44)式4-3和式4-4表示相应的由到的逆变换。此时,经过某种几何变换而失真图像是我们要复原的对象,原始图像是我们复原的目标。4.2图像平移图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。4.2.1图像平移的变换公式设(x0,y0)为原图像上的一点,图像水平平移量为tx,垂直平移量为ty,则平移后点(x0,y0)坐标将变为(x1,y1):用矩阵表示如下:对变换矩阵求逆,可以得到逆变换: 即 这样,平移后的目标图像中的每一点都可以在原图像中找到对应的点。例如,对于新图中

40、的(i,j)像素,代入上面的方程组,可以求出对应原图中的像素(i-tx,j-ty)。如果tx大于i或ty大于j,则(i- tx,j- ty)超出了原图的范围,可以直接将它的像素值统一设置为0或者255。4.2.2图像平移的Visual C+实现void CImgProcess:ImMove(CImgProcess*pTo,int x,int y) int nHeight=pTo-GetHeight(); int nWidth=pTo-GetWidthPixel(); int i,j; if(xnWidth | ynHeight) MessageBox(NULL,“超过图片大小”,“错误”,MB

41、_OK|MB_ICONERROR); return;for(i=0;inWidth;i+) for(j=0;j0 & i-x0 & j-ySetPixel(i,j,GetPixel(i-x,i-y); else pTo-SetPixel(i,j,RGB(255,255,255); /for j/for i图4.1 原图像Fig.4.1 original image图4.2 平移图像Fig.4.2 translation image4.3图像镜像镜像变换又分为水平镜像和竖直镜像。水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中

42、轴线为中心轴进行对换。4.3.1图像镜像的变换公式设图像高度为lHeight,宽度为lWidth,原图中(x0,y0)经过水平镜像后坐标将变为(lWidth-x0,y0),其矩阵表达式为:逆运算矩阵表达式为: 即同样,(x0,y0)经过垂直镜像后坐标将变为(x0,lHeight-y0),其矩阵表达式为:逆运算矩阵表达式为: 即4.3.2图像镜像的Visual C+实现(1)水平镜像的Visual C+实现void CImgProcess:HorMirror(CImgProcess* pTo)int nHeight = pTo-GetHeight();int nWidth = pTo-GetWi

43、dthPixel();int i,j;int u;for(i=0;inWidth;i+)u=nWidth-i-1;for(j=0;jSetPixel(i,j,GetPixel(u,j); /for j/for i(2)竖直镜像的Visual C+实现void CImgProcess:VerMirror(CImgProcess* pTo)int nHeight = pTo-GetHeight();int nWidth = pTo-GetWidthPixel();int i,j;int u=0;for(i=0;inWidth;i+)for(j=0;jSetPixel(i,j,GetPixel(i,

44、u); /for j/for i图4.3 竖直镜像Fig.4.3 vertical mirror图4.4 水平镜像Fig.4.4 level mirror4.4图像转置图像转置是将图像像素的x坐标和y坐标互换,图像的大小会随之改变:高度和宽度将互换。4.4.1图像转置的变换公式转置的变换公式如下:它的逆矩阵表达式是: 即4.4.2图像转置的Visual C+实现void CImgProcess:Transpose(CImgProcess* pTo)int nHeight = pTo-GetHeight();int nWidth = pTo-GetWidthPixel();int i,j;for

45、(i=0;inWidth;i+)for(j=0;jnHeight;j+) if(jnWidth & iSetPixel(i,j,GetPixel(j,i) else pTo-SetPixel(i,j,RGB(255,255,255); /for j/for i图4.5 图像转置Fig.4.5 image transpose4.5图像缩放图像缩放是指图像大小按照指定的比率放大或者缩小。4.5.1图像缩放的变换公式假设图像x轴方向缩放比率为fx,y轴方向缩放比率为fy,那么原图中点(x0,y0)对应与新图中的点(x1,y1)的转换矩阵为:其逆运算如下: 即 直接根据缩放公式得到的目标图像中,某些映

46、射源坐标可能不是整数,从而找不到对应的像素位置。例如,当fx=fy=2时,图像放大2倍,放大图像中的像素(0,1)对应于原图像中的(0,0.5),这不是整数坐标位置,自然也就无法提取其灰度值。因此我们必须进行某种近似处理,这里介绍一种简单的策略即直接将它最邻近的整数坐标位置(0,0)或者(0,1)处的像素灰度值赋给它,这就是所谓的最近邻插法。4.5.2图像缩放的Visual C+实现void CImgProcess:Transpose(CImgProcess* pTo,double times)int nHeight = pTo-GetHeight();int nWidth = pTo-Get

47、WidthPixel();int i,j;for(i=0;inWidth;i+)for(j=0;jnHeight;j+) if(int(i*1/times+0.5)nWidth & int(j*1/times+0.5)SetPixel(i,j,GetPixel(int(i*1/times+0.5),int j*1/times+0.5); else pTo-SetPixel(i,j,RGB(255,255,255); /for j/for i 图4.6 图像缩放 Fig.4.6 image scaling4.6图像旋转旋转一般是指将图像围绕某一指定点旋转一定的角度。旋转通常也会改变图像的大小,和

48、4.2节中图像平移的处理一样,可以把转出显示区域的图像截去,也可以改变输出图像的大小以扩展显示范围。4.6.1图像旋转的变换公式可以推导一下旋转运算的变换公式。如下图所示,点(x0,y0)经过旋转度后坐标变成(x1,y1)。在旋转前:旋转后: 写成矩阵表达式为:其逆运算如下:4.6.2图像旋转的Visual C+实现void CImgProcess:Rotate(CImgProcess* pTo,float ang)int nHeight = pTo-GetHeight();int nWidth = pTo-GetWidthPixel();int i,j;int u,v;for(i=0;inW

49、idth;i+)for(j=0;jnHeight;j+) u=int(i*cos(ang*PI/180)+j*sin(ang*PI/180)+0.5); v=int(j*cos(ang*PI/180)-i*sin(ang*PI/180)+0.5); if(unWidth & v=0 & v=0) pTo-SetPixel(i,j,GetPixel(u,v); else pTo-SetPixel(i,j,RGB(255,255,255); /for j/for i图4.7 图像旋转Fig.4.7 image rotation5 结论数字图像处理数据量大,处理速度相对较慢。为了简化操作,本例只针对

50、256级灰度图进行处理。由于本程序首先要实现任意BMP图像的读写,打印,以及剪贴板操作,故用Visual C+创建一个多文档应用程序框架,然后根据BMP图像的结构定义自己的函数库,函数库中包括经常要用到的功能,例如创建DIB对象调色板,返回DIB宽度和高度等,这样在要使用DIB时,只需要对它进行调用就可以了。最后,在对BMP图像各种基础操作实现的基础上,完成经典的图像几何变换功能。本程序作为数字图像处理的一个重要组成部分,具有高度的稳定性和灵活性。各个模块独立性高,可扩充性好。通过它,作者对计算机图像处理的基础理论和操作有了初步认识,对Visual C+开发应用程序的流程、消息映射机制、应用程

51、序执行过程等有了进一步的理解,深刻体会到了C+高效和简洁的特点,为以后的学习打下了坚实的基础。参考文献1左飞,万晋森,刘航. Visual C+数字图像处理开发入门与编程实践M. 北京:电子工业出版社,2008.2.2张铮,王艳平,薛桂香. 数字图像处理与机器视觉M.北京:人民邮电出版社,2010. 4.3张海燕,吴芳. 几种插值算法的比较研究J. 计算机技术与发展,2012,22(2):234.4 何斌,马天予,王运坚,朱红莲. Visual C+数字图像处理(第二版)M. 北京:人民邮电出版社,2002.237,298.5 张铮,王艳平,薛桂香. 数字图像处理与机器视觉M.北京:人民邮电出

52、版社,2010. 1,140.6 杨淑莹. VC+图像处理程序设计 M. 北京:清华大学出版社,2005. 60。103.7邓志勇. 开放性图像处理系统的设计思想J. 现代计算机,2002,151:23,26.8杨永杰,刘浩学.JJ数字图像处理系统的研制J.北京印刷学院学报,2002,10(2):18,22.9贾光斌. 数字图像处理技术的应用研究J. 计算机光盘软件与应用,2011,11(2):36,38.10朱睿.数字图像处理技术现状与展望J. 中国科技博览,2011,9(14):268,272.11张义青. 计算机数字图像处理技术J. 电脑编程技巧与维护,2012,6(6:80,83.12

53、 章毓晋.图像处理和分析 M. 北京:清华大学出版社,1999. 45,107.13 朱虹.数字图像处理基础 M. 北京:科学出版社,2005. 27,59.14 贾永红.计算机处理与分析 M. 武汉:武汉大学出版社,2001. 79,167.15 何东健.数字图像处理(第二版) M. 出版地:出版者,出版年. 起止页码.26 刘海波. Visual C+数字图像处理技术详解M. 北京:机械工业出版社,2010. 45,79.17 Yao-chi Wu,Jun-feng Zhang,Shi-sheng Li. Clinical effect and infrared thermogram on

54、 electroacupuncture for acute lumbar sprain J.Journal of Acupuncture and Tuina Science,2009,8(6):380,383.18 EFeig. Image Processing Algorithms and Techniques J. Santa Clara,1990,12(44):2,13.19陈明刚. 数字图像处理的算法研究D. 北京:北京石油大学,2008.致谢在毕业论文完成之际,我首先要感谢彭生祥老师的悉心指导,他严谨的治学态度,一丝不苟的敬业精神给我留下了深刻的印象。感谢他在百忙之中一直督促关心着我的本科论文的写作。他的博学、勤勉以及平和的为人,使我油然而生敬意。再次感谢彭生祥老师给我这个机会加入到数字图像处理项目中来,使我能够学习到许多图像处理学科前沿的知识,而且通过实际项目开发,积累了宝贵的实践经验,提高了我用Visual C+编程的能力。感谢刘苗苗同学,在与她的交流和讨论中我受益匪浅,同时也被她刻苦钻研的精神所深深感染。她乐于助人,耐心的解答我提出的问题,对我的论文提出了许多中肯的修改意见,并对一些技术上的细节给予了很大的帮助。感谢我的父母,是他们给予了我无私的奉献、支持和鼓励。29

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!