- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计
学 号:130085210002
学生所在学院:信息工程学院
学 生 姓 名 :邵丽群
任 课 教 师 :熊邦书
教师所在学院:信息工程学院
2013级
实现图像的几何变换
电子信息工程
信息工程学院
摘要:几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。目前数字图像处理的应用越来越广泛,已经渗透到工业、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。作为数字图像处理的一个重要部分,本文接受的工作是如何Visual?C++编程工具设计一个完整的应用程序,实现经典的图像几何变换功能。程序大概分为两大部分:读写BMP图像,和数字图像的几何变换。即首先用Visual?C++创建一个单文档应用程序框架,在实现任意BMP图像的读写,打印,以及剪贴板操作的基础上,完成经典的图像几何变换功能。图像几何变换的Visual?C++编程实现,为校内课题的实现提供了一个实例。??
关键字:图像处理;几何变换(图像的平移、缩放、转置、旋转和镜像变换);BMP图像;Visual?C++
一、引言
图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化的方法。在实际场景拍摄到的一幅图像,如果画面过大或过小,都需要进行缩小或放大。如果拍摄时景物与摄像头不成相互平行关系的时候,会发生一些几何畸变,例如会把一个正方形拍摄成一个梯形等。这就需要进行一定的畸变校正。在进行目标物的匹配时,需要对图像进行旋转、平移等处理。在进行三维景物显示时,需要进行三维到二维平面的投影建模。因此,图像几何变换是图像处理及分析的基础。?
图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得深讨的一个重要课题。在图像几何变换中主要包括图像的放缩、图像的旋转、图像的移动、图像的镜像、图像的块操作等内容,几何变换不改变图像的像素值,只改变像素所在的几何位置。从广义上说,图像是自然界景物的客观反映,是人类认识世界和人类本身的重要源泉。图像对我们并不陌生。我们生活在一个信息时代,科学研究和统计表明,人类从外界获得的信息约有75%来自视觉系统,也就是从图像中获得的。所以对数字图像的处理便显得尤为重要了。
本文主要深讨了图像的几何变换(主要包括图像的平移、转置、缩放、旋转、镜像等)理论,并在此基础上用Visual C++实现的过程。
1.3.2研究方法
方法一:
利用 Windows 本身就提供了一个API函数SetWorldTransForm来实现图片旋转、位移及其他变形,这个函数是对一个设备上下文DC进行操作,通过坐标转换来实现各种功能的。
方法二:
通过图像进行平移、旋转、转置、镜像、缩放后重新计算各点新像素完成几何变换。自定义一个图像处理的Cdibapi类,把一般处理图像时要用到的函数实现封装在这个类中,该类用于实现DIB对象的绘制,DIB对象调色板的创建,DIB对象的读取与存储,图像线性变换,图像灰度拉伸等。然后把在视类中实现图像平移,图像镜像,图像转置,图像缩放及图像旋转的函数调用和实现。
二、正文
2.1灰度图
灰度图(Grayscale)是指只含亮度信息,不含色彩信息的图像。因此,要表示灰度图,就需要把亮度值进行量化。通常划分为0到255共256个级别,0最暗(全黑),255最亮(全白)。BMP格式的文件中并没有灰度图这个概念,但是可以很容易的用BMP文件来表示灰度图。方法是用256色的调色板,只不过这个调色板有点特殊,每一项的RGB值都是相同的。也就是说RGB值从(0,0,0),(1,1,1)一直到(255,255,255)。(0,0,0)是全黑色,(255,255,255)是全白色,中间的是灰色。
2.2调色板
调色板结构LOGPALETTE,该结构定义如下:
typedef struct tagLOGPALETTE{ WORD palVersion; //调色板的板本号,应该指定该值为0x300; WORD palNumEntries;//调色板中的表项数,对于灰度图像该值为256; PALETEENTRY palPalEntry[1];//调色板中的颜色表项,由于该表项的数
目不一定,所以这里数组长度定义为1,灰度图像对应的该数组的长度为256
}LOGPALETTE;
颜色表项结构PALETTEENTRY定义了调色板中的每一个颜色表项的颜色和使用方式,定义如下:
typedef struct tagPALETTEENTR
文档评论(0)