多媒体信息处理技术报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.BMP图像的结构与显示BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为BMP,故称为BMP文件格式,简称BMP文件。BMP图像文件被分成4个部分:位图文件头(BitmapFileHeader)、位图信息头(BitmapInfoHeader)、颜色表(ColorMap)和位图数据(即图像数据,DataBits或DataBody)。为了实现BMP图像的各种处理(如显示,平滑,锐化等),我们必须清楚BMP图像文件的组成,下面将详细介绍一下BMP图像的文件格式。1.1BMP图像的文件格式BMP图像文件由文件头、文件信息头、调色板和图像数据组成。(1)文件头文件头是一个结构,长度为14个字节,各组成部分如下:WORDbfType//2个字节表示文件类型,其值为“BMDWORDbfSize//4个字节表示文件的大小。WORDbfReserved1//2个字节保留,其值为0。WORDbfReserved1//2个字节保留,其值为0。DWORDbfOffBits//4个字节表示第一个像素的偏移量由文件头可以获得该文件型、小及第一个像素的偏移地址。(2)文件信息头文件信息头也是一个结构体,长度为40个字节,各组成部分如下:DWORLDbiSize//4个字节存放文件信息头的长度,其值为40。LONGbiWidth//4个字节存放位图的宽度。LONGbiHeight//4个字节存放位图的高度。WORDbiplanes//2个字节存放平面的数目,其值为1。WORDbiBitcount//两个字节存放每个像素所占的位数,其值可以是1,4,8,24等。DWORDbiCompression//4个字节指定位图是否压缩,其值可以是常值BI_RGB,BI_RLE8,BI_RLE4等。如果没有压缩则为BI_RGB(即0)。DWORDbiSizeImage//4个字节表示位图的实际大小。LONGbiXPelsPerMeter//4个字节指定目标设备的水平分辨率,通常不用将其设为0。LONGbiYPelsPerMeter//4个字节指定目标设备的垂直分辨率,通常不用将其设为0。DWORDbiClrUsed//4个字节指定图像实际用到的颜色数,若使用所有颜色则值为0。DWORDbiClrImportant//4个字节指定图像中重要的颜色数,若全部重要则值为0。由文件信息头可以获得有关位图的详细信息,位图的实际大小并不等于biWidth和biHeight的乘积。因为在保存位图时要求每一行的字数必须是4的整数倍,如果不是,则需要补齐。(3)颜色表颜色表实际上是一个RGBQUAD结构的数组,数组的长度由biClrUsed指定(如果该值为零,则由biBitCount指定,即2的biBitCount次幂个元素)。RGBQUAD结构是一个结构体类型,占4个字节,其定义如下:BYTErgbRed//红色分量BYTErgbGreen//绿色分量BYTErgbBlue//蓝色分量BYTErgbReserved//保留位有些位图需要颜色表;有些位图(如真彩色图)则不需要颜色表,颜色表的长度由BITMAPINFOHEADER结构中biBitCount分量决定。对于biBitCount值为1的二值图像,每像素占1bit,图像中只有两种(如黑白)颜色,颜色表也就有21=2个表项,整个颜色表的大小为2*sizeof(RGBQUAD)=2*4=8个字节;对于biBitCount值为8的灰度图像,每像素占8bit,图像中有28=256种颜色,颜色表也就有256个表项,且每个表项的R、G、B分量相等,整个颜色表的大小为256*sizeof(RGBQUAD)=256*4=1024个字节;而对于biBitCount=24的真彩色图像,由于每像素3个字节中分别代表了R、G、B三分量的值,此时不需要颜色表,因此真彩色图的BITMAPINFOHEADER结构后面直接就是位图数据。(4)位图数据紧跟在颜色表之后的是图像数据字节阵列,即图像数据,记录了图像的每一个像素值。对于有颜色表的位图,位图数据就是该像素颜色在调色板中的索引值;对于真彩色图,位图数据就是实际的R、G、B值(三个分量的存储顺序是B、G、R)。相应地,对于2色图象,用1位表示颜色,因此一个字节表示8个像素;对于16色图象,用4位表示一个像素的颜色,一个字节表示2个像素;对于256色图象,用8位表示一个像素的颜色,一个字节只表示1个像素。图像的每一扫描行由表示图像的像素的连素字节组成,每一行的字节数取决于图像的颜色数目和用像素表示的图像宽度。扫描行是由底向上存储的,这就是说,阵列中的每一个字节表示位图左下角的像素,而最后一个字节表示位图右上角的像素。1.2BMP图象文件显示在VC++的的应用程序中显示图像,通常有两种方法。一种方法是在应用程序中加入固定的位图,为该图指定ID,使用静态图片控件或ActiveX控件来显示图象。另一种方法是使用位图类Cbitmap,利用LoadImage函数动态地从系统盘的文件中载入位图图像,将载入的图像句柄和Cbitmap类相关连。使用BitBlt函数把位图拷贝到能够显示图像的设备场境中。设备场境中包含有关于系统、应用程序和绘图窗口的信息。我们还可以使用StretchBlt函数拷贝图像,并调整图像的大小,使之适合在特定的设备场境中显示。各函数的用法如下所示:HBITMAPhbitmap;/*加载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.1RGB模型RGB模式是基于自然界中3种基色光的混合原理,将R、G、B三种基色按照从0(黑)到255(白色)的亮度值在每个色阶中分配,从而指定其色彩,当不同亮度的基色混合后共产生242=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色图像进行结果的验证分析。程序运行结果图如下:图1为程序运行打开的原图,图2为程序运行获得的颜色表。图3为修改颜色表的对话框,这次修改颜色表目的是突出蓝色效果,变化后的结果为图4。图5为修改颜色表突出蓝色效果后,获得的颜色表,在这幅颜色表截图中可以很明显的看到颜色表中蓝色的颜色条增加了许多。同理可获得绿色和红色的突出效果。如图6,图7,图8,图9所示。图1原图图2原图的颜色表图3修改颜色表对话框图4蓝色突出效果图5蓝色效果颜色表4.总结本文讨论了基于VC++6.0集成开发环境,打开一幅256色BMP图像,通过修改其颜色表获得相应的颜色突出效果。本文对BMP图像的结构特点和显示做了简单的介绍,着重于颜色表的修改。本次的实现,方法总体来说是比较快速和灵活的。能很快的完成想要的色彩突出效果,最终的结果也是令人比较满意的。能够完整的保持图像的形态,只要简单的改变R、G、B三基色0到255间的值,就能得到色彩突出效果,从实验结果来看,基本上完成了本次作业的任务要求。通过本次实验,使我对BMP图像的结构有了更深刻的了解,并且学会了如何针对BMP图像进行一些相关的数字图像的分析和处理,以达到我们处理数字图像的最终目的,为以后的学习研究打下了坚实的基础。图6绿色突出效果图7绿色效果颜色表图8红色突出效果图9红色效果颜色表

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功