VC数字图像处理编程讲座全程

上传人:m**** 文档编号:559538839 上传时间:2023-10-26 格式:DOC 页数:35 大小:216KB
返回 下载 相关 举报
VC数字图像处理编程讲座全程_第1页
第1页 / 共35页
VC数字图像处理编程讲座全程_第2页
第2页 / 共35页
VC数字图像处理编程讲座全程_第3页
第3页 / 共35页
VC数字图像处理编程讲座全程_第4页
第4页 / 共35页
VC数字图像处理编程讲座全程_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《VC数字图像处理编程讲座全程》由会员分享,可在线阅读,更多相关《VC数字图像处理编程讲座全程(35页珍藏版)》请在金锄头文库上搜索。

1、VC 数字图像处理编程讲座之一、/. 前言数字图像处理技术与理论是计算机应用的一个重要领域, 许多工 程应用都涉及到图像处理, 一直有一个强烈的愿望, 想系统的写一个 关于数字图像处理的讲座, 由于工作学习很忙, 时至今日才得以实现。 “图”是物体透射光或反射光的分布, “像 ”是人的视觉系统对图的接收 在大脑中形成的印象或认识。 图像是两者的结合。 人类获取外界信息 是靠听觉、视觉、触觉、嗅觉、味觉等,但绝大部分(约 80% 左右) 来自视觉所接收的图像信息。图像处理就是对图像信息进行加工处 理,以满足人的视觉心理和实际应用的需要。简单的说, 依靠计算机 对图像进行各种目的的处理我们就称之为

2、数字图像处理。 早期的数字 图像处理的目的是以人为对象, 为了满足人的视觉效果而改善图像的 质量,处理过程中输入的是质量差的图像,输出的是质量好的图像, 常用的图像处理方法有图像增强、复原等。随着计算机技术的发展, 有一类图像处理是以机器为对象, 处理的目的是使机器能够自动识别 目标, 这称之为图像的识别, 因为这其中要牵涉到一些复杂的模式识 别的理论, 所以我们后续的讲座只讨论其中最基本的内容。 由于在许 多实际应用的编程中往往都要涉及到数字图像处理, 涉及到其中的一 些算法, 这也是许多编程爱好者感兴趣的一个内容, 我们这个讲座就是讨论如何利用微软的 Visual C+ 开发工具来实现一些

3、常用的数字 图像处理算法, 论述了图像处理的理论,同时给出了 VC 实现的源代 码。本讲座主要的内容分为基础篇、 中级篇和高级篇,具体包含的主 要内容有:1 图像文件的格式;2 图像编程的基础 -操作调色板;3 图像数据的读取、存储和显示、如何获取图像的尺寸等;4 利用图像来美化界面;5 图像的基本操作:图像移动、图像旋转、图像镜像、图像的 缩放、图像的剪切板操作;6 图像显示的各种特技效果;7 图像的基本处理:图像的二值化、 图像的亮度和对比度的调 整、图像的边缘增强、如何得到图像的直方图、图像直方图的修正、 图像的平滑、图像的锐化等、 图像的伪彩色、彩色图像转换为黑白图 像、物体边缘的搜索

4、等等;8 二值图像的处理:腐蚀、膨胀、细化、距离变换等;9 图像分析:直线、圆、特定物体的识别;10JEPG 、GIF、PCX 等格式文件相关操作;11图像文件格式的转换;12 图像的常用变换:付利叶变换、 DCT 变换、沃尔什变换等;13 AVI 视频流的操作;图像处理技术博大精深, 不仅需要有很强的数学功底, 还需要熟 练掌握一门计算机语言,在当前流行的语言中,我个人觉的 Visual C+ 这个开发平台是图像开发人员的首选工具。 本讲座只是起到抛砖 引玉的作用,希望和广大读者共同交流VC 数字图像处理编程讲座之二第一节 图像的文件格式要利用计算机对数字化图像进行处理, 首先要对图像的文件

5、格式要有清楚的 认识,因为我们前面说过, 自然界的图像以模拟信号的形式存在, 在用计算机进 行处理以前,首先要数字化,比如 摄像头(CCD )摄取的信号在送往计算机处 理前, 一般情况下要经过数模转换, 这个任务常常由图像采集卡完成, 它的输出 一般为裸图的形式; 如果用户想要生成目标图像文件, 必须根据文件的格式做相 应的处理。随着科技的发展, 数码像机、数码摄像机已经进入寻常百姓家, 我们 可以利用这些设备作为图像处理系统的输入设备来为后续的图像处理提供信息 源。无论是什么设备, 它总是提供按一定的图像文件格式来提供信息, 比较常用 的有 BMP 格式、 JPEG 格式、 GIF 格式等等

6、,所以我们在进行图像处理以前, 首先要对图像的格式要有清晰的认识, 只有在此基础上才可以进行进一步的开发 处理。在讲述图像文件格式前, 先对图像作一个简单的分类。 除了最简单的图像外, 所 有的图像都有颜色, 而单色图像则是带有颜色的图像中比较简单的格式, 它一般 由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1表”示黑色, “0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。我们也可以用 8 个比特(一个字节)表示一个像素,相当于把黑和白等分为 256 个级别, “0表” 示为黑, “255表”示为白,该字节的数值表示相应像素值的灰度值或亮度值,数 值越接近 “0,”对应

7、像素点越黑,相反,则对应像素点越白,此种图像我们一般 称之为灰度图像。 单色图像和灰度图像又统称为黑白图像, 与之对应存在着彩色 图像,这种图像要复杂一些,表示图像时,常用的图像彩色模式有 RGB 模式、 CMYK模式和HIS模式,一般情况下我们只使用 RGB模式,R对应红色,G对 应绿色, B 对应蓝色,它们统称为三基色,这三中色彩的不同搭配,就可以搭配 成各种现实中的色彩, 此时彩色图像的每一个像素都需要 3 个样本组成的一组数 据表示,其中每个样本用于表示该像素的一个基本颜色。对于现存的所有的图像文件格式, 我们在这里主要介绍 BMP 图像文件格式, 并且文件里的图像数据是未压缩的, 因

8、为图像的数字化处理主要是对图像中的各 个像素进行相应的处理,而未压缩的 BMP 图像中的像素数值正好与实际要处理 的数字图像相对应, 这种格式的文件最合适我们对之进行数字化处理。 请读者记住,压缩过的图像是无法直接进行数字化处理的, 如 JPEG、GIF 等格式的文件, 此时首先要对图像文件解压缩, 这就要涉及到一些比较复杂的压缩算法。 后续章 节中我们将针对特殊的文件格式如何转换为 BMP 格式的文件问题作专门的论 述,经过转换,我们就可以利用得到的未压缩的 BMP 文件格式进行后续处理。 对于 JPEG、 GIF 等格式,由于涉及到压缩算法,这要求读者掌握一定的信息论 方面的知识, 如果展

9、开的话, 可以写一本书, 限于篇幅原因, 我们只作一般性的 讲解,有兴趣的朋友可以参考相关书籍资料。一、 BMP 文件结构1. BMP 文件组成BMP 文件由文件头、位图信息头、颜色信息和图形数据四部分组成。文件头主要包含文件的大小、 文件类型、 图像数据偏离文件头的长度等信息; 位图信息头包含图象的尺寸信息、 图像用几个比特数值来表示一个像素、 图像是否压缩、图像所用的颜色数等信息。 颜色信息包含图像所用到的颜色表, 显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用 24 个比特来表示, 文件中就没有这一块信息, 也就不需要操作调色板。 文件中的数据块表示图像的

10、相应的像素值, 需要注意的是: 图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在 BMP 文件中首先存放的是图像的最后一行像素, 最后才存储图像的第一行像素, 但对与同一行的像素, 则是按照先左边后右边的的顺序存储的; 另外一个需要读者朋友关注的细节是: 文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为 4 的倍数,则正常存储,否则,需要在后端补 0,凑足 4 的倍数。2. BMP 文件头BMP 文件头数据结构含有 BMP 文件的类型、文件大小和位图起始位置等信息。其结构定义如下 :typedef struct tagBITMAPFILEHEADERWORD bf

11、Type; /位图文件的类型,必须为 “BMDWORD bfSize; /位图文件的大小,以字节为单位WORD bfReserved1; /位图文件保留字,必须为 0WORD bfReserved2; /位图文件保留字,必须为 0DWORD bfOffBits; /位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER ;该结构占据14个字节。3. 位图信息头BMP位图信息头数据用于说明位图的尺寸等信息。其结构如下:typedef struct tagBITMAPINFOHEADERDWORD biSize; /本结构所占用字节数LONG biWid

12、th; /位图的宽度,以像素为单位LONG biHeight; /位图的高度,以像素为单位WORD biPlanes; /目标设备的平面数不清,必须为 1WORD biBitCount每个像素所需的位数,必须是 1(双色),4(16色),8(256色)或24(真彩色)之一DWORD biCompression; /位图压缩类型,必须是 0(不压缩),1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORD biSizeImage; /位图的大小,以字节为单位LONG biXPelsPerMeter; /位图水平分辨率,每米像素数LONG biYPelsPerMeter; /位图

13、垂直分辨率,每米像素数DWORD biCIrUsed;/位图实际使用的颜色表中的颜色数DWORD biClrImportant;位图显示过程中重要的颜色数 BITMAPINFOHEADER ;该结构占据 40个字节。注意:对于BMP文件格式,在处理单色图像和真彩色图像的时候,无论图象数据多么庞大,都不对图象数据进行任何压缩处理, 一般情况下,如果位图采用压缩格式,那么16色图像采用RLE4压缩算法,256色图像采用RLE8压缩算法。4. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。 RGBQUAD结构的定义如下typedef str

14、uct tagRGBQUAD BYTErgbBlue;/蓝色的亮度(值范围为0-255)BYTErgbGreen; /绿色的亮度(值范围为0-255)BYTErgbRed; /红色的亮度(值范围为0-255)BYTErgbReserved;/ 保留,必须为 0 RGBQUAD;颜色表中RGBQUAD结构数据的个数由 BITMAPINFOHEADER 中的 biBitCount项来确定,当biBitCount=1,4,8时,分别有2,16,256个颜色表项,当 biBitCount=24时,图像为真彩色,图像中每个像素的颜色用三个字节表示,分 别对应R、G、B值,图像文件没有颜色表项。位图信息头

15、和颜色表组成位图信息,BITMAPINFO 结构定义如下:typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; / 位图信息头RGBQUAD bmiColors1; / 颜色表 BITMAPINFO;注意:RGBQUAD数据结构中,增加了一个保留字段 rgbReserved它不代表任何颜色,必须取固定的值为“0”同时,RGBQUAD结构中定义的颜色值中, 红色、绿色和蓝色的排列顺序与一般真彩色图像文件的颜色数据排列顺序恰好相 反,既:若某个位图中的一个像素点的颜色的描述为“00 00,ff,00”,则表示该点为红色,而不是蓝色。5. 位图数据位图数据记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。这种格式我们又称 为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序 是从上到下的,对于这种形式的位图,也不存在压缩形式。位图的一个像素值所 占的字节数:当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2 个像素占1个字节;当biBitCount=8时,1个像素占1个字节;当biBitCount=24 时,1个像素占3个字节,此

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号