多媒体信息处理课程设计报告--YUV文件转换为BMP文件

时间:2019-05-15 09:35:21下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《多媒体信息处理课程设计报告--YUV文件转换为BMP文件》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《多媒体信息处理课程设计报告--YUV文件转换为BMP文件》。

第一篇:多媒体信息处理课程设计报告--YUV文件转换为BMP文件

目录

摘要...........................................................................................................................................1 1 引言.......................................................................................................................................1 2 颜色空间概述.......................................................................................................................2 2.1 RGB颜色空间.................................................................................................................2 2.2 YUV颜色空间.................................................................................................................2 3 YUV 420采样格式及其存储方式......................................................................................3 4 YUV 转换为RGB 以BMP位图文件保存............................................................................3 4.1 YUV与RGB转换关系....................................................................................................3 4.2 BMP图像保存................................................................................................................4 5 结语.......................................................................................................................................6 参考文献...................................................................................................................................6 附录...........................................................................................................................................7

YUV文件转换为BMP文件

xxx

摘要

本文首先对RGB、YUV颜色空间作了简要的介绍,介绍了YUV 420采样格式及其存储方式。简述了YUV 与RGB 的关系, 并且给出了换算公式。最后对YUV文件进行RGB转换,以BMP位图格式把结果保存。

关键词:颜色空间;BMP;YUV;RGB 1 引言

颜色是人的视觉系统对光谱中可见区域的感知效果。它仅存在于人的眼睛和大脑中。为了准确地描述颜色, 必须引入色彩空间的概念。正如几何上用坐标空间来描述坐标集合, 色彩空间用数学方式来描述颜色集合。常见的3 个基本色彩模型是RGB, CMYK 和YUV。

RGB(Red, Green, Blue)是计算机中最常见的色彩空间。它通过红、绿、蓝3 基色的相加来产生其他的颜色。由于其设备的独立性, 它被广泛应用于计算机图形、成像系统和彩色电视之中。而CMYK(Cyan, Magenta, Yellow, Black)色彩空间,则是通过颜色相减来产生其他的颜色, 实现方便,它被广泛应用于印刷工业。而YUV 或YIQ 或YCb-Cr 色彩空间则描述灰度和色差的概念, 由于易于实现压缩, 方便传输和处理, 它被广泛应用于广播和电视系统。正是由于这一点, 它也被广泛应用于计算机视频和图像处理之中, 如JPEG 图像和MPEG 均使用YUV 作为存储像素的格式。在获得显示硬件支持的情况下, 使用YUV 还可以减少和消 除色彩变换处理, 极大地加快图像的显示速度。颜色空间概述

2.1 RGB颜色空间

在色度学中,为了确切表示某一种彩色,采用亮度、色调和色饱和度三个基本参量。彩 色视觉是人眼对这个三个参量的总体感觉[1]。亮度是光作用于人眼所引起的明亮程度的感 觉。色调是反映了彩色的类别。也就是通常所说的红,绿,蓝等就指的是色调。色和度是指彩 色光所呈现彩色的深浅程度。对于同一中颜色的彩色光,彩色越浓,色饱和度越高。根据色度学的介绍,不同波长的单色光会引起不同的彩色感觉,但相同的彩色感觉却可

以来源于不同的光谱成分组合。自然界中几乎所有的颜色都能用三种基本彩色混合配出,在 彩色电视技术中选择红色、绿色、和蓝色作为三基色。其他的颜色都可以用红色、绿色和蓝 色按照不同的比例混合而成。所选取的红色、绿色和蓝色三基色空间。简称为RGB颜色空 间。

2.2 YUV颜色空间

YUV 是一种基本色彩空间, 被欧洲的电视系统所采用。它被PAL(Phase Alternat ion Line), NTSC(Nat ional Television System Committee)和SECAM(Sequent ielCouleur Avec Memoire or Sequential Colorwith Memory)用作复合色彩视频标准。其中Y 指颜色的明视度(Luminance), 即亮度(Brightness), 其实Y 就是图像的灰度值(Gray value), 而U 和V 则是指色调(Chrominance), 即描述图像色彩及饱和度的属性。黑白系统只使用Y 信息, 因为U 和V 是附加上去的, 所以黑白系统仍能正常显示。YUV 420采样格式及其存储方式 YUV 转换为RGB 以BMP位图文件保存

4.1 YUV与RGB转换关系

RGB在计算机领域有着举足轻重的地位, 由于色彩显示器使用红、绿、蓝3 色来产生需要的颜色, 所以被广泛用于计算机图形和成像之中。

然而, 在处理现实世界的图像时, RGB并非很有效, 因为它对所有颜色都用等长像素点的R、G、B 3色加以合成。这就使得每个像素在R、G、B 3个成分上拥有相同的像素深度和显示分辨率。而且处理RGB颜色空间的图像也不是最有效的。由于上述原因,很多地方采用YUV颜色空间。可以说在计算机领域, YUV 颜色空间同样占据着重要地位。

RGB与YUV之间可以相互转化。由RGB转化的公式如下: Y=INT(16.5+(0.257R+0.504G+0.098B))Cb=INT(128.5+(-0.148R-0.291G+0.439B))Cr=INT(128.5+(0.439R-0.368G-0.071B))由上述公式可推导出YUV转换为RGB公式如下:

R=1.1665*(Y-16.5)-0.0483*(Cb-128.5)+1.6455*(Cr-128.5)G=1.1665*(Y-16.5)-0.3922*(Cb-128.5)-0.8151*(Cr-128.5)B=1.1665*(Y-16.5)+2.0218*(Cb-128.5)-0.0013*(Cr-128.5)

4.2 BMP图像保存

数字图像在计算机中都是以文件的形式存储和记录的,一般的图像文件主要包含文件头、文件体、文件尾三部分。BMP图像文件格式是Miscrosoft公司为其Windows环境设置的标准图像文件格式。BMP图像文件主要由位图文件头、位图信息头、位图调色板和位图数据四部分组成,其数据结构定义如下: 1.位图文件头: typedefstruct {

WORD bfType;DWORD bfSize;

//文件大小 WORD bfReserved1;

//保留字,不考虑 bfReserved2;

//保留字,同上 WORD DWORD bfOffBits;

//实际位图数据的偏移字节数,即前三个部分长度之和

}HEAD;

2.位图信息头: typedefstruct {

DWORD

biSize;

//指定此结构体的长度,为40

LONG

biWidth;

//位图宽 LONG

biHeight;

//位图高

WORD

biPlanes;

//平面数,为1

WORD

biBitCount;

//采用颜色位数,可以是1,2,4,8,16,24,新的可以是32

DWORD

biCompression

//压缩方式,可以是0,1,2,其中0表示不压缩 DWORD

biSizeImage;

//实际位图数据占用的字节数 LONG

biXPelsPerMeter;

//X方向分辨率 LONG

biYPelsPerMeter;

//Y方向分辨率

DWORD

biClrUsed;

//使用的颜色数,如果为0,则表示默认值(2^颜色

位数)

DWORD

biClrImportant;

//重要颜色数,如果为0,则表示所有颜色都是重要的

}INFO;

3.位图调色板:

typedefstruct {

BYTE rgbBlue;//该颜色的蓝色分量 BYTE rgbGreen;//该颜色的绿色分量 BYTE rgbRed;//该颜色的红色分量 BYTE rgbReserved;//保留值

}RGBQUAD;BMP文件保存的详细实现详见附录。转换后BMP文件如下:

bmp2.bmp

bmp5.bmp 结语

这次课程设计实现了最基本的YUV文件转换为BMP文件,对YUV 420的采样格式及其存储有了进一步的认识,对多媒体信息处理有了进一步的了解,对以后的学习有一定的帮助。这次课程设计有很大的收获,在学习多媒体的道路上还要更加努力。

参考文献

[1]卢官明,焦良葆.多媒体信息处理技术[M].人民邮电出版社,2011.[2] R.C.Conzalez编,阮秋琦等译.数字图像处理[M].电子工业出版社,2003.[3] 黎洪松.数字视频处理[M].北京邮电大学出版社,2006.[4] 谭浩强.C语言程序设计[M].清华大学出版社,2006 [5] 周长发.精通Visual C++图像编程[M].电子工业出版社,2000.附录

附录清单:

1.2.//bmp.h

#include #include #define

WIDTHBYTES(bits)(((bits)+31)/32*4)typedef unsigned int

DWORD;typedef unsigned char

uchar;typedef unsigned char

BYTE;typedef unsigned short

WORD;typedef long #pragma pack(2)typedefstruct {

WORD DWORD WORD WORD DWORD bfType;bfSize;

//文件大小 bfReserved1;

//保留字,不考虑 bfReserved2;

//保留字gf,同上

bfOffBits;

//实际位图数据的偏移字节数,即前三个部分长度之和

LONG;bmp.h cjw.cpp }HEAD;#pragma pack()#pragma pack(2)typedefstruct { DWORD

biSize;

//指定此结构体的长度,为40

LONG

biWidth;

//位图宽 LONG

biHeight;

//位图高

WORD

biPlanes;

//平面数,为1

WORD

biBitCount;

//采用颜色位数,可以是1,2,4,8,16,24,新的可以是32

DWORD

biCompression;

//压缩方式,可以是0,1,2,其中0表示不压缩 DWORD

biSizeImage;

//实际位图数据占用的字节数 LONG

biXPelsPerMeter;

//X方向分辨率 LONG

biYPelsPerMeter;

//Y方向分辨率

DWORD

biClrUsed;

//使用的颜色数,如果为0,则表示默认值(2^颜色位数)

DWORD

biClrImportant;

//重要颜色数,如果为0,则表示所有颜色都是重要的

}INFO;#pragma pack()typedefstruct {

BYTE rgbBlue;//该颜色的蓝色分量 BYTE rgbGreen;//该颜色的绿色分量 BYTE rgbRed;//该颜色的红色分量 BYTE rgbReserved;//保留值

}RGBQUAD;intBMPwrite(const char*filename,uchar* buffer,intwidth,int height){

intLineByte = WIDTHBYTES(width*24);uchar* image =(uchar*)malloc(height*LineByte);for(int i=0;i

for(int j=0;j

} image[i*LineByte+3*j+2]=buffer[(height-i-1)*width*3+3*j];image[i*LineByte+3*j+1]=buffer[(height-i-1)*width*3+3*j+1];image[i*LineByte+3*j+0]=buffer[(height-i-1)*width*3+3*j+2];

unsigned char header[54] ={

0x42, 0x4d, 0, 0, 0, 0, 0, 0, 0, 0,54, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0

};

longfile_size = width * LineByte + 54;header[2] =(uchar)(file_size&0x000000ff);header[3] =(uchar)(file_size>> 8)& 0x000000ff;header[4] =(uchar)(file_size>> 16)& 0x000000ff;header[5] =(uchar)(file_size>> 24)& 0x000000ff;header[18] = width & 0x000000ff;header[19] =(width >> 8)&0x000000ff;header[20] =(width >> 16)&0x000000ff;header[21] =(width >> 24)&0x000000ff;header[22] = height &0x000000ff;header[23] =(height >> 8)&0x000000ff;header[24] =(height >> 16)&0x000000ff;header[25] =(height >> 24)&0x000000ff;

FILE *fp;if(!(fp = fopen(filename, “wb”)))return-1;fwrite(header, sizeof(unsigned char), 54, fp);fwrite(image, sizeof(unsigned char), LineByte*height, fp);fclose(fp);

} free(image);return 0;

//cjw.cpp #include #include #include #include #include “bmp.h”

#define WIDTH 176 #define HEIGHT 144 //转换矩阵

doubleYuvToRgb[3][3] = {1,0, 1.4022,1,-0.3456,-0.7145,1,1.771,0};//转换函数

int Convert(char *file, int width, int height, int n)

{

//变量声明

int temp = 0;

int x = 0;

int y = 0;

intfReadSize = 0;

intImgSize = width*height;

FILE *fp = NULL;

unsigned char* yuv = NULL;

unsigned char* cTemp[6];

char *BmpFileName=(char*)malloc(256*sizeof(char));intFrameSize = ImgSize +(ImgSize>> 1);

yuv =(unsigned char *)malloc(FrameSize*sizeof(uchar));

//读取指定文件中的指定帧 if((fp = fopen(file, “rb”))== NULL)

return 0;

//申请空间 //4:2:0 , 1.5倍长度

}

fseek(fp, FrameSize*(n-1), SEEK_CUR);

//SEEK_CUR=1,对应当前位置 fReadSize = fread(yuv, 1, FrameSize, fp);

if(fReadSize

{ printf(“已超出文件中的帧数!”);return 0;

} else {

//转换指定帧

cTemp[0] = yuv;

//y分量地址 cTemp[1] = yuv + ImgSize;

//u分量地址 cTemp[2] = cTemp[1] +(ImgSize>>2);

//v分量地址 uchar *imgdata =(uchar *)malloc(height*width*3*sizeof(uchar));for(y=0;y < height;y++)

for(x=0;x < width;x++)

{

//r分量,根据公式转换

temp = cTemp[0][y*width+x] +(cTemp[2][(y/2)*(width/2)+x/2]-128)* YuvToRgb[0][2];

imgdata[y*width*3+x*3] = temp<0 ? 0 :(temp>255 ? 255 : temp);//条件判断,像素值应该在0-255之间 //g分量

temp = cTemp[0][y*width+x] +(cTemp[1][(y/2)*(width/2)+x/2]-128)* YuvToRgb[1][1]

+(cTemp[2][(y/2)*(width/2)+x/2]-128)* YuvToRgb[1][2];

imgdata[y*width*3+x*3+1] = temp<0 ? 0 :(temp>255 ? 255 : temp);

//b分量

temp = cTemp[0][y*width+x] +(cTemp[1][(y/2)*(width/2)+x/2]-128)* YuvToRgb[2][1];

imgdata[y*width*3+x*3+2] = temp<0 ? 0 :(temp>255 ? 255 : temp);

sprintf(BmpFileName, “%s%d%s”,“bmp”, n,“.bmp”);BMPwrite(BmpFileName,imgdata,width, height);free(yuv);

fclose(fp);

return n;

}

} void main()

{ char m[100];int n;printf(“选择所要转换的文件:”);scanf(“%s”,&m);printf(“请输入要转换的帧数:”);scanf(“%d”,&n);Convert(m, WIDTH, HEIGHT, n);//调用上面的Convert,获取文件的第i帧 ,Convert(“foreman_qcif.yuv”, WIDTH, HEIGHT, i);strcat(m,n)连接2个字符串

} printf(“图像转换完成!n”);

第二篇:如何把WORD文档转换为演示文件

文章标题:如何把WORD文档转换为演示文件

找文章到xiexiebang.com更多原创-(http://www.xiexiebang.com/)

如何把WORD文档转换为演示文件

制作幻灯片大多数人习惯在PowerPoint环

境中,如果有一个现成的Word文稿讲义,只需简单的操作就可将其转换成为一个PowerPoint演示文稿,PowerPoint和Word两个软件提供了这一功能。本文提供两种转换方法供选择。

导入Word文档

创建一个Word大纲文件,存盘。然后打开PowerPoint程序,单击菜单栏上的“插入”,选“幻灯片(从大纲)”,在打开的插入大纲对话框中选中刚才存盘的Word大纲文档,单击[插入],这样,Word大纲文档就变成了PowerPoint演示文稿。二者的对应关系是:Word大纲文档的一级标题变为PowerPoint演示文稿页面的标题,Word大纲文档的二级标题变为PowerPoint演示文稿页面的第一级正文,Word大纲文档的三级标题变为PowerPoint演示文稿页面第一级正文下的主要内容,其余依次类推。这个途径要求你在Word大纲视图下编辑文档,对于习惯于Word页面视图的朋友来说有些不太方便,那么请看下法。

直接创建演示文稿

如果你在Word的页面视图下已写好了内容或者是以前用Word编的一篇文章,想把它们制成幻灯片,就可以在Word中应用“样式”和快捷键来直接创建演示文稿。先解释一下什么是样式:样式是Word中早就有的功能,只不过我们很少用到它,使用样式功能可以使文档的创建和管理易如反掌。样式工具栏就在操作界面的左上端,通常都写着“正文”两个字。点击右侧的向下箭头,会出现“标题

1、标题

2、标题3……正文”等内容。您还可以按住“Shift”键的同时点击向下箭头,看看会出现什么情况?

请先把你认为要作为一张幻灯片标题的地方选中,然后选择“标题1”,其他也依次类推。然后在菜单栏上选择“工具/自定义”,再在弹出的对话框中选“命令”选项卡,从左窗口中选“所有命令”,从右窗口中找到“PresentIt”命令。用鼠标左键按住并拖动“PresentIt”至Word的菜单栏或工具栏均可。用此快捷键可直接调用PowerPoint程序,并把当前的Word文档直接转换为PowerPoint演示文稿,以大纲视图显示。点击“PresentIt”后你会发现,用标题1样式定义过的标题全都作为独立的一页幻灯片。如果你没给Word文档定义样式,点击[PresentIt]后,PowerPoint会把文档的每一段落作为一张幻灯片,是不是很简单啊?以后你尽可以在你习惯的Word下编排文章,然后轻松地转为PowerPoint演示文稿。

当然,你也可以把任何以前的Word文档或你找来的文章转换为你需要的PowerPoint演示文稿。文稿转换好了以后,剩下的修饰想必你肯定自己会料理了。

《如何把WORD文档转换为演示文件》来源于xiexiebang.com,欢迎阅读如何把WORD文档转换为演示文件。

第三篇:如何将CORELDRAW文件转换为PS分图层文件

1、首先打开CorelDRAW软件,双击图标打开或者右击图标;打开。

2、出现新建页面,进入绘图界面。

3、执行窗口;泊坞窗;对象管理器命令,在右侧弹出的对话框可以查看图层,你可以鼠标右击,在弹出的快速列表中选择新建图层或者单击泊坞窗底下的新建图层按钮,你希望所绘制的图形导出几个图层就新建几个图层。

4、开始绘制图形物件,我这里边新建六个图层,然后把绘制的不同物件放置在不同图层中,当然图层顺序要搞清楚,跟PS一样,对象管理器中的图层在上边的也会显示在绘图界面的顶层。点击图层页面前边的眼睛可以隐藏该图层,以此方法来做检验。

5、单击对象管理器中的+号图标,可以查看图层包含的详细信息。如果图层顺序错误,还可以选中错误图层里面的群组元素,将它移动到正确图层位置,想要精细的psd分层文件的话,单击群组前面的加号,一个个元素移动到其他新建的图层里面,按shift键可选择多个。

6、执行文件;导出,导出格式为PSD格式,即PS源文件格式,导出在选定的文件夹。

7、在弹出的转换为位图对话框中设置参数,分辨率复选框中勾选保持原始大小、颜色模式设置为RGB色、最重要的是在选项复选框中一定记得勾选保持图层。

8、选择导出图片,右击打开方式为ps,在PS里打开它就能看到我们在cdr软件中对它所分图层的操作了。上面说的图层顺序错误问题,当然,你是可以在这里面更改的,PS的图层一目了然。

第四篇:好-如何把WORD文档转换为演示文件

好范文:如何把WORD文档转换为演

示文件

制作幻灯片大多数人习惯在PowerPoint环境中,如果有一个现成的Word文稿讲义,只需简单的操作就可将其转换成为一个PowerPoint演示文稿,PowerPoint和Word两个软件提供了这一功能。本文提供两种转换方法供选择。

导入Word文档

创建一个Word大纲文件,存盘。然后打开PowerPoint程序,单击菜单栏上的“插入”,选“幻灯片”,在打开的插入大纲对话框中选中刚才存盘的Word大纲文档,单击[插入],这样,Word大纲文档就变成了PowerPoint演示文稿。

二者的对应关系是:Word大纲文档的一级标题变为PowerPoint演示文稿页面的标题,Word大纲文档的二级标题变为PowerPoint演示文稿页面的第一级正文,Word大纲文档的三级标题变为PowerPoint演示文稿页面第一级正文下的主要内容,其余依次类推。这个途径要求你在Word大纲视图下文档,对于习惯于Word页面视图的朋友来说有些不太方便,那么请看下法。

直接创建演示文稿

如果你在Word的页面视图下已写好了内容或者是以前用Word编的一篇文章,想把它们制成幻灯片,就可以在Word中应用“样式”和快捷键来直接创建演示文稿。

先解释一下什么是样式:样式是Word中早就有的功能,只不过我们很少用到它,使用样式功能可以使文档的创建和管理易如反掌。样式工具栏就在操

作界面的左上端,通常都写着“正文”两个字。点击右侧的向下箭头,会出现“标题

1、标题

2、标题3……正文”等内容。您还可以按住“Shift”键的同时点击向下箭头,看看会出现什么情况?

请先把你认为要作为一张幻灯片标题的地方选中,然后选择“标题1”,其他也依次类推。然后在菜单栏上选择“工具/自定义”,再在弹出的对话框中选“命令”选项卡,从左窗口中选“所有命令”,从右窗口中找到“Present It”命令。用鼠标左键按住并拖动“Present It”至Word的菜单栏或工具栏均可。用此快捷键可直接调用PowerPoint程序,并把当前的Word文档直接转换为PowerPoint演示文稿,以大纲视图显示。点击“PresentIt”后你会发现,用标题1样式定义过的标题全都作为独立的一页幻灯片。如果你没给Word文档定义样式,点击[Present It]后,PowerPoint会把文档的每一段落作为一张幻灯片,是不是很

简单啊?以后你尽可以在你习惯的Word下编排文章,然后轻松地转为PowerPoint演示文稿。

当然,你也可以把任何以前的Word文档或你找来的文章转换为你需要的PowerPoint演示文稿。文稿转换好了以后,剩下的修饰想必你肯定自己会料理了。

第五篇:win7系统下怎样把IFOX文件转换为MP4文件

win7系统下怎样把IFOX文件转换为MP4文件

1、win7系统下设置显示隐藏文件及文件名后缀

双击桌面的”计算机”,在(左边)组织-》文件夹和搜索选项-》查看>高级设施选项里找“隐藏已知文件扩展名”前面的”“√”去掉。

2、win7系统下怎样把IFOX文件转换为MP4文件

点视频文件,直接把IFOX为MP4就可以了。

下载多媒体信息处理课程设计报告--YUV文件转换为BMP文件word格式文档
下载多媒体信息处理课程设计报告--YUV文件转换为BMP文件.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐