C语言与程序设计第17章图形图像处理程序设计.ppt

C语言与程序设计第17章图形图像处理程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学计算机学院C语言课程组 C语言与程序设计 The C Programming Language 本章讲授内容 图形图像处理是研究和探索计算机图形学和图像处理领域的前沿技术及其应用。本章介绍: 图像编程的基础知识 图像放大、缩小、旋转等典型算法原理及C语言编程实现 简要介绍OpenCV视觉库及常用函数 通过电子钟的设计说明OpenCV库函数的应用和动画设计方法 17.1 位图文件格式 17.1.1 位图图像与调色板 位图图像(bitmap), 也称为点阵图像,是由称作像素(Pixel)的单个点组成的。也就是说,数字图像是像素的集合。这些像素可以进行不同的排列和染色以构成图样。 位图图像是与分辨率有关的,图像分辨率是指单位图像线性尺寸中所包含的像素数目,通常以像素/英寸(ppi)来表示,简写成ppi(Pixel per inch)。 三基色RGB 自然界中的所有颜色都可以由红、绿、蓝(三基色RGB)组合而成,每个基色又被分成256级,因此,RGB不同的组合就能表示出256×256×256(约1600万)种颜色。当一幅图中每个像素被赋予不同的RGB值时,能呈现出五彩缤纷的颜色,这样就形成了彩色图。 24位色图 真彩色图像是指颜色数高达256×256×256种的图像,即最多可以包含RGB颜色表示方法中所有的颜色。表示真彩色图时,每个像素直接用RGB三个分量表示,像素值就是颜色值。每个分量要用8位(bit),所以每个像素需要用24位(3个字节),它又叫做24位色图。 调色板技术 16色或256色图像的每个像素值并不是颜色值,而是颜色在调色板查找表中的索引号。 16色图最多包含16种颜色,可以用一个颜色表,表中每一行记录一种颜色的RGB值。表示一个像素的颜色时,只需要指出该颜色在表中的索引值(行号)。例如,如果颜色表的第0行为(255,0,0)(红色),那么当某个像素为红色时,只需要标明0即可。 这张RGB的颜色表,就是调色板,也叫颜色查找表LUT(Look Up Table)。根据该像素的索引值可查找出实际RGB颜色值,这种用查找映射的方法产生的色彩称为伪彩色。许多图像文件格式如pcx、tif、gif等都用到调色板技术。 17.1.2 bmp文件格式 BMP文件就是位图文件,文件扩展名为BMP,它是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式。 BMP文件由4个部分组成:文件信息头、位图信息头 、颜色表和位图像素数据。 文件信息头 第1部分为文件信息头,用于识别位图文件,是BITMAPFILEHEADER结构类型,长度是14B typedef struct tagBITMAPFILEHEADER { WORD bfType;? DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; WORD为无符号16位整数,DWORD为无符号32位整数,各个成员的详细说明如表17.1所示。 位图信息头 第2部分为位图信息头,是BITMAPINFOHEADER结构类型,长度为40B 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 ; 各个成员的详细说明如表17.2所示。 颜色表 第3部分为颜色表。颜色表实际上是一个RGBQUAD结构数组,共有biClrUsed个元素(如果该值为零,则有2biBitCount个元素)。RGBQUAD结构占4B. typedef struct tagRGBQUAD { ? BYTE rgbBlue; /* 蓝色分量 */ ? BYTE rgbGreen; /* 绿色分量 */ ? BYTE rgbRed; /* 红色分量 */ ? BYTE rgbReserved; /* 保留, 暂不用 */ } RGBQUAD; RGBQUAD结构中的颜色顺序是BGR,而不是平常的RGB。

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档