没有合适的资源?快使用搜索试试~ 我知道了~
多媒体信息处理技术报告.docx
0 下载量 113 浏览量
2022-10-13
19:26:53
上传
评论
收藏 627KB DOCX 举报
温馨提示
试读
37页
多媒体信息处理技术报告
资源推荐
资源详情
资源评论
1.BMP 图像的结构与显示
BMP 文件是 Windows 操作系统所推荐和支持的图像文件格式,是一种将
内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为
位图(bitmap)文件,因其文件扩展名为 BMP,故称为 BMP 文件格式,简称 BMP
文件。BMP 图像文件被分成 4 个部分:位图文件头(Bitmap File Header)、
位图信息头(Bitmap Info Header)、颜色表(Color Map)和位图数据(即
图像数据,Data Bits 或 Data Body)。
为了实现 BMP 图像的各种处理(如显示 ,平滑 ,锐化等),我们必须清楚
BMP 图像文件的组成 ,下面将详细介绍一下 BMP 图像的文件格式。
1.1 BMP 图像的文件格式
BMP 图像文件由文件头、文件信息头、调色板和图像数据组成。
(1)文件头
文件头是一个结构 ,长度为 14 个字节 ,各组成部分如下:
WORD bfType // 2 个字节表示文件类型 ,其值为“BM
DWORD bfSize // 4 个字节表示文件的大小。
WORD bfReserved1 // 2 个字节保留 ,其值为 0。
WORD bfReserved1 // 2 个字节保留 ,其值为 0。
DWORD bfOffBits // 4 个字节表示第一个像素的偏移量
由文件头可以获得该文件型、小及第一个像素的偏移地址。
(2)文件信息头
文件信息头也是一个结构体,长度为 40 个字节,各组成部分如下:
DWORLD biSize // 4 个字节存放文件信息头的长度,其值为 40。
LONG biWidth // 4 个字节存放位图的宽度。
LONG biHeight // 4 个字节存放位图的高度。
WORD biplanes // 2 个字节存放平面的数目,其值为 1。
WORD biBitcount //两个字节存放每个像素所占的位数,其值可
以是 1,4,8,24 等。
DWORD biCompression // 4 个字节指定位图是否压缩,其值可以
是常值 BI_RGB,BI_RLE8,BI_RLE4 等。如果没有压缩则为 BI_RGB(即 0)。
DWORD biSizeImage // 4 个字节表示位图的实际大小。
LONG biXPelsPerMeter // 4 个字节指定目标设备的水平分辨率,通
常不用将其设为 0。
LONG biYPelsPerMeter // 4 个字节指定目标设备的垂直分辨率,通
常不用将其设为 0。
DWORD biClrUsed // 4 个字节指定图像实际用到的颜色数,
若使用所有颜色则值为 0。
DWORD biClrImportant // 4 个字节指定图像中重要的颜色数,若
全部重要则值为 0。
由文件信息头可以获得有关位图的详细信息,位图的实际大小并不等于
biWidth 和 biHeight 的乘积。因为在保存位图时要求每一行的字数必须是 4
的整数倍,如果不是,则需要补齐。
(3) 颜色表
颜色表实际上是一个 RGBQUAD 结构的数组,数组的长度由 biClrUsed 指
定(如果该值为零,则由 biBitCount 指定,即 2 的 biBitCount 次幂个元
素)。RGBQUAD 结构是一个结构体类型,占 4 个字节,其定义如下:
BYTE rgbRed //红色分量
BYTE rgbGreen //绿色分量
BYTE rgbBlue //蓝色分量
BYTE rgbReserved //保留位
有些位图需要颜色表;有些位图(如真彩色图)则不需要颜色表,颜色
表的长度由 BITMAPINFOHEADER 结构中 biBitCount 分量决定。对于 biBitCou
nt 值为 1 的二值图像,每像素占 1bit,图像中只有两种(如黑白)颜色,
颜色表也就有 2
1
=2 个表项,整个颜色表的大小为 2*sizeof(RGBQUAD)=2*4=8
个字节;对于 biBitCount 值为 8 的灰度图像,每像素占 8bit,图像中有 2
8
=256
种颜色,颜色表也就有 256 个表项,且每个表项的 R、G、B 分量相等,整个
颜色表的大小为 256*sizeof(RGBQUAD)=256*4=1024 个字节;而对于 biBitCo
unt=24 的真彩色图像,由于每像素 3 个字节中分别代表了 R、G、B 三分量的
值,此时不需要颜色表,因此真彩色图的 BITMAPINFOHEADER 结构后面直接
就是位图数据。
(4)位图数据
紧跟在颜色表之后的是图像数据字节阵列,即图像数据,记录了图像的每
一个像素值。对于有颜色表的位图,位图数据就是该像素颜色在调色板中的
索引值;对于真彩色图,位图数据就是实际的 R、G、B 值(三个分量的存储
顺序是 B、G、R)。相应地,对于 2 色图象,用 1 位表示颜色,因此一个字
节表示 8 个像素;对于 16 色图象,用 4 位表示一个像素的颜色,一个字节
表示 2 个像素;对于 256 色图象,用 8 位表示一个像素的颜色,一个字节只
表示 1 个像素。图像的每一扫描行由表示图像的像素的连素字节组成,每一
行的字节数取决于图像的颜色数目和用像素表示的图像宽度。扫描行是由底
向上存储的,这就是说,阵列中的每一个字节表示位图左下角的像素,而最
后一个字节表示位图右上角的像素。
1.2 BMP 图象文件显示
在 VC++的的应用程序中显示图像 ,通常有两种方法。一种方法是在应用
程序中加入固定的位图,为该图指定 ID,使用静态图片控件或 ActiveX 控件
来显示图象。另一种方法是使用位图类 Cbitmap,利用 LoadImage 函数动态
地从系统盘的文件中载入位图图像 ,将载入的图像句柄和 Cbitmap 类相关连。
使用 BitBlt 函数把位图拷贝到能够显示图像的设备场境中。设备场境中包
含有关于系统、应用程序和绘图窗口的信息。我们还可以使用 StretchBlt
函数拷贝图像 ,并调整图像的大小 ,使之适合在特定的设备场境中显示。各
函数的用法如下所示:
HBITMAP hbitmap;
/*加载 BMP 文件,filename 为 BMP 文件名*/
Hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),filename,
IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
/*Bitmap 为 Cbitmap 类的一个对象,实现图象句柄和类相关连*/
Bitmap.Attach(hbitmap);
/*拷贝位图到屏幕*/
BitBlt(10,10,width,height,&dc,0,0,SRCCOPY);
/*拷贝图象并调整显示大小*/
StrwtchBlt(10,10,Rwidth,Rheight,&dc,width,height,SRCCOPY);
实际上,由 BMP 图象文件格式可以很方便地从文件中读出各部分信息,
在获得调色板和图象数据后,利用 SetDIBitsToDevice 函数或 StrechDIBits
函数来显示图象或打印图象。
2.颜色表的修改
2.1 RGB 模型
RGB 模式是基于自然界中 3 种基色光的混合原理,将 R、G、B 三种基色
按照从 0(黑)到 255(白色)的亮度值在每个色阶中分配,从而指定其色彩,
当不同亮度的基色混合后共产生
24
2
=16777216 种颜色。在理想条件下,加
色原理 R+G=Y,R+B=M,G+B=C。当 3 种基色的亮度值相等时,产生灰色,当 3
种亮度值都是 255 时,产生纯白色;而当所有亮度值都是 0 时,产生纯黑色。
当 3 种色光混合生成的颜色一般比原来的颜色亮度值高,所以 RGB 模式产生
颜色的方法又被称为加色混合。
2.2 颜色表的修改
一幅图像有众多的事物,为了按照人们的意愿,传达某种信息,突出自
己最想表达的信息,可以用色彩来完成!那么,在我们的图像中如何完成这
样的任务呢?
256 色的 BMP 格式的图像是有颜色表的。颜色表分 R,G,B 三种基色。
首先,我们应该把颜色表找到并提取出来。根据 BMP 图像数据存储的特点,
我们很容易找到颜色表。找到颜色表之后,按照我们的需要,我们所想表达
突出的色彩就可以通过修改颜色表的 R,G,B 三基色的值来完成。将三基色提
取出来,并恰当的更改三基色在 0 到 255 间的值的大小,使得某种颜色变得
突出,以来表达我们想要突出的色彩!例如我们想使花变的更红一些,我们
就可以适当的增加 R 基色在 0 到 255 间的值,减小 G,B 两种基色的大小,
也就是改变 G、B 基色在 0 到 255 间的值,那么红色的像素点就会增加红的
级数,这样就会使图像的红色更加突出。同理,适当增加 G 基色在 0 到 255
间的值,减小 R,B 两种基色在 0 到 255 间的值,绿色的像素点也就相应的
增加了级数,那么就可以使图像的绿色更加突出。例如在一幅春天草地的图
像中,增加 G 基色的级数,就可以使小草显得生机勃勃,以表达春意盎然的
景象和情感,完成我们的表达重点了!
我们更改了 256 色的 BMP 格式的颜色表,让原有的图像的某种颜色更加
突出,来实现我们所需要的色彩的突出。我们更改某种基色,或者更改几种
基色,即重新给某种基色在 0 到 255 间赋值,使得图像的像素都随之适当变
化,达到我们所需的效果。
3.实验结果与分析
以 512*512 的 256 色图像进行结果的验证分析。程序运行结果图如下:
剩余36页未读,继续阅读
资源评论
猫一样的女子245
- 粉丝: 95
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功