基于vc的图像的几何变换的实现毕业设计内容摘要:
要,因此选择合适的语言进行算法的描述显得尤为重要。 本文选择 Visual C++,其主要优势在于以下三个方面: ( 1)执行效率高。 C++的执行代码经过编译后生成的是汇编语言,它可以直接在处理器上运行,因此它的执行效率较高。 ( 2)较高的灵活度。 指针是 C++的一种特殊的数据类型,能够获取和直接操纵地址,实现动态存储分配内存。 掌握指针就能更有效地使用内存空间, C++中指 8 针的使用,很大幅度上提高了编程的灵活度。 ( 3)提高了内存使用效率。 对于图形图像数据的处理而言,大量信息的图像数据处理需要占用较大的内存,而计算机内存是有限的。 在相对有限的内存空间,必须更有效的使用才能比较好地完成数 据处理运算。 由于 C++语言支持对内存的直接分配和释放,提高了内存的使用效率,也大大提高了图像处理效率。 2 数字图像处理的简介 什么是数字图像 简单地说,数字图像就是能够在计算机上显示和处理的图像,根据其特性可以分为两大类 —— 位图和矢量图。 位图通常使用数字阵列来表示,常见格式有 BMP、JPG、 GIF 等;矢量图由矢量数据库表示。 我们接触的最多的就是 PNG 图形。 我们可以将一幅图像视为一个二维函数 f( x, y),其中 x 和 y 是空间坐标,而在 xy 平面中的任意一对空间坐标( x, y)上的幅值 f 称为该点图像的灰度 、亮度或强度。 此时,如果 f、 x、 y 均为非负有限离散,则称该图像为数字图像(位图)。 一个大小为 M N 的数字图像是由 M 行 N 列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。 这些元素称为图像元素或像素。 数字图像的显示 不论是 CRT 显示器还是 LCD 显示器,都是由许多点构成的,显示图像时这些点对应图像的像素,显示器被称为位映像设备。 所谓位映像,就是一个二维的像素矩阵,而位图则采用位映像方法显示和存储的图像。 当一幅数字图像被放大后就可以明显看出图像是由很多 方格形状的像素构成的。 数字图像的分类 根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、 RGB 图像以及索引图像等。 ( 1)二值图像 每个像素只有黑、白两种颜色的图像称为二值图像。 在二值图像中,像素只有0和 1两种取值,一般用 0来表示黑色,用 1表示白色。 9 ( 2)灰度图像 在二值图像中进一步加入许多介于黑色和白色之间的颜色深度,就构成了 灰度图像。 这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)成为一个灰度级,通常用 L 表示。 在灰度图像中,像素可以取 0~L— 1 之间的整数值,根 据保存灰度数值所使用的数据类型的不同,可能有 256种取值或者 k2种取值,当 k=1 时即退化为二值图像。 ( 3) RGB 图像 众所周知,自然界中几乎所有颜色都可以由红( Red, R) 、绿( Green, G) 、蓝( Blue, B) 3 种颜色组合而成,通常称它们为 RGB 三原色。 计算机显示彩色图像时采用最多的就是 RGB 模型。 对于每个像素,通过控制 R、 G、 B 三原色的合成比例则可决定该像素的最终显示颜色。 对于三原色 RGB 中的每一种颜色,可以像灰度图那 样使用 L 个等级来表示含有这种颜色成分的多少。 例如对于含有 256 个等级的红色, 0 表示不含红色成分,255表示含有 100%的红色成分。 同样绿色和蓝色也可以划分为 256 个等级。 这样每种原色可以用 8位二进制数据表示,于是 3 原色总共需要 24 位二进制数,这样能够表示出的颜色种类数目为 256 256 256=242 ,大约有 1600 万种,已经远远超过普通人所能分辨出的颜色数目。 未经压缩的原始 BMP 文件就是使用 RGB 标准给出的 3 个数值来存储图像数 据的,称为 RGB 图像。 在 RGB 图像中每个像素都是用 24 位二进制数表示,故也称为 24 位真色彩图像。 ( 4)索引图像 如果对每个像素都直接使用 24位二进制数表示,图像文件的体积将变得十分庞大。 举个例子,对一个长、宽各为 200 像素,颜色数为 16 的彩色图像,每个像素都用 RGB 3 个分量表示,这样每个像素由 3 个字节表示,整个图像就是200 200 3=120kB。 这种完全未经压缩的表达方式,浪费了大量的存储空间,下面介绍一种更节省空间的存储方式:索引图像。 同样还是 200 像素 200 像素的 16 色图像,由于这张图片中最 多只有 16 种颜色,那么可以使用一张颜色表 (16 3的二维数组 )保存这 16种颜色对应的 RGB 值, 10 在表示图像的矩阵中使用这 16种颜色在颜色表中的索引(偏移量 ) 作为数据写入相应的行列位置。 3 VC++的图像处理简介 位图文件及其 C++操 作 Windows 操作系统中使用最多的图形文件格式就是位图格式,最常见的位图文件的扩展名为 BMP。 BMP 是英文 Bitmap(位图)的简写,这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,因此占用的磁盘空间较大。 设备无关位图 以后的 BMP 位图文件格式与显示设备无关,因此把这种 BMP 位图文件称为设备无关位图( device independent bitmap, DIB)。 DIB 自带颜色信息,因此调色板管理非常简单。 现在,任何 Windows 操作系统的计算机都能够显示和处理 DIB,它通常以 BMP 文件的形式被把保存在磁盘中。 BMP 图像文件数据结构 典型的 BMP 图像文件由以下 4 部分组成,如图 所示。 ( 1)位图文件头数据结构 BITMAPFILEHEADER,包含 BMP 图像文件的类型、显示内容等信息。 ( 2)位图信息头数据结构 BITMAPINFOHEADER,包含有 BMP 图像的宽、高、压缩方法以及定义颜色等信息。 ( 3)调色板,即颜色索引表。 ( 4)实际的位图数据。 1.位图文件 BITMAPFILEHEADER 结构 位图文件头 BITMAPFILEHEADER 的定义可以再 MFC Library 中找到,这部分文件头包含了文件的类型、大小以及设备无关位图的图像文件布局。 11 单色 D IB 有 2 个表项 16 色 D IB 有 16 个表项或更少 256 色 D IB 有 256 个表项或更少 真彩色 D IB 没有调色板 每个表项长度为 4 字节( 32 位) 像素按照每行每列的顺序排列 每一行的字节数必须是 4 的整数倍 b i S i z e b i W i d t h b i H e i g h t b i P l a n e s b i Bit Co u n t b i Co m p re s s i o n b i S i z e Im a g e b i X P e l s P e rM e t e r b i Y P e l s P e rM e t e r b i ClrU s e d b i ClrIm p o rta n t b f T y p e = ” BM ” b f S i z e b f Re s e rv e d 1 b f Re s e rv e d 2 b f O f f Bit s BI TM A PF I LE H EA D ER 位图文件头 (只用于 BM P 文件) BI TM A PI N FO H EA D ER 位图信息头 Pa l e tt e 调色板 D I B Pi x e l s D I B 图像数据 图 BMP文件的组成 the position of BMP file BITMAPFILEHEADER 结构体长度固定,为 14 字节,其定义和描述如下: typedef struct tagBITMAPFILEHEADER{ WORD bfType。 DWORD bfSize。 WORD bfReserved1。 WORD bfReserved2。 DWORD bfOffBits。 }BITMAPFILEHEADER, *PBITMAPFILEHEADER; 各个域的说明如下: 12 bfType:指定 文件类型,必须是 0x424D,即字符串“ BM”,也就是说所有“ .bmp”文件的头两个字节都是“ BM”。 bfSize:指定文件大小,包括这 14 个字。 bfReserved1, bfReserved2:为保留字,不用考虑。 bfOffBits:为从文件头到实际的位图数据的偏移字节数,即下图中前三个部分的和。 2.位图信息头 BITMAPINFOHEADER 结构 BITMAPINFOHEADER 结构体包含了设备无关位图关于颜色维度和色彩格式的信息,其定义和描述如下: 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 该结构的长度也是固定的,为 40 个字节。 各个域的说明如下: biSize:指定这个结构的长度,为 40字节。 biWidth:指定图像的宽度,单位是像素。 biHeight:指定图像的高度,单位是像素。 biPlanes:必须是 1,不用考虑。 biBitCount:指定表示颜色时要用到的位数,常用的值为 1(黑白二色图)、 4( 16 13 色图)、 8( 256 色)、 24(真彩色),新的“ .bmp”格式支持 32 位色,这里就不做讨论了。 biCompression:指定位图是否压缩,有效的值为 BIRGB, BIRLE8, BIRLE4,BIBITFIELDS(都是 Windows 定义好的常量)。 要说明的是, Windows 位图可以采用 RLE4 和 RLE8 的压缩格式,但用的不多。 今后所讨论的只有第一种不压缩的情况,即 biCompression 为 BIRGB 的情况。 biSizeImage:指定实际的位图数据占用的字节数。 biXPelsPerMeter:指定目标设备的水平分辨率,单位是像素 /米。 biYPelsPerMeter:指定目标设备的垂直分辨率,单位 是像素 /米。 biClrUsed:指定本图像实际用到的颜色数,如果该项为 0,则用到的颜色数为2的 biCompression 次幂。 biClrImportant:指定本图像中重要的颜色数,如果该值为 0,则认为所有的颜色都是重要的。 3.调色板结构 有些位图需要调色板,有些位图,如真彩色图,不需要调色板,它们的BITMAPINFOHEADER 后面直接是位图数据。 调色板实际上是一个数组,共有 biClrUsed 个元素(如果该值为 0,则有 2 的biBitCount 次幂个元素)。 数组中每个元素的类型是一个 RGBQUAD 结构,占 4 个字节,其定义如下: typedef struct tagRGBQUAD BYTE rgbBlue。 BYTE rgbGreen。 BYTE rgbRed。基于vc的图像的几何变换的实现毕业设计
相关推荐
要求来产生计费,本设计重点就在计费控制模式模块和计费模块这两大模块的设计,则 根据出租车计费器的工作过程, 其主要原理框图如图 13 所示。 本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。 其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。 . .
lay 的地址是一个 URL 字符串,由如下格式构成: xdirectplay:/[data string] 在不同的网络连接上,它包含发送消息方和接受方这样的元素。 DirectPlay 对象之间的通信 DirectPlay 是基于 COM 的,而各个组件管理不同的方面,例如, DirectPlay点 (peer)对象 (CLSID_DirectPlay8Peer)就是负责管理点对点游戏的。
ument()来获取其所对应的 Document 文档数据。 (三)文挡操作 由于 MFC 机制设计出文档类对象专门负责数据的 I/O 存取和数据的运算和操作等。 一般来说 ,数据运算是通过 Document 类里面的扩展功能来实现的 ,这样做可以 形成一种密集数据处理 ,达到方便易用和管理的好处。 对于一个文件而言 ,如果文件内对象的排列顺序是固定的
83。 26 参考文献 27 附录 29 附录 1 中文概述 29 附录 2 译文 33 本科毕业设计(论文) 1 绪 论 温度与人们的生存生活生产息息相关 .从古人类的烧火取暖 ,到今天的工业温度控制 ,处处都体现了温度控制 . 温度是工业生产中常见的工艺参数之一 ,任何物理变化和化学反应过程都与温度密切相关 .在科学研究和生产实践的诸多领 域中 ,温度控制占有着极为重要的地位 ,特别是在冶金
” 属性改为 “ 是一个按钮 ” ,然后看看 “ 窗体设计区域 ” 的按钮上显示的文字是不是改变了 [5]。 如下图 24: 图 24 属性窗口示意图 调整程序运行时,程序窗体 在屏幕中的初始位置,把鼠标移到左图屏幕中的窗体上,这时鼠标会变成移动形状,拖动窗体,就设置好了运行时此窗体的位置。 工具箱实际上是一个窗口,称为工具箱窗口,可以通过单击其右上角的“ X” 关闭,如果想打开工具箱
TAL25XTAL1678VDD9AVDD10NC11AVSS12NC1314NC15NC16NC17NC18PLLF19D20D+21VREF22NC23EA24ALE25PSEN262728293031NC32NC33NC34353637383940NC41VSS4243RST444546NC47NC48NC495051525354555657585960616263NC64AT89C5131