BMP 转 YUV (BMP2YUV)
来源:互联网 发布:linux kvm虚拟化 编辑:程序博客网 时间:2024/06/06 05:43
本文介绍BMP 转 YUV。其实这是以前“数据压缩”实验课上的内容,前几天有人问我相关的问题,突然发现自己有一段时间没有接触BMP也有些生疏了,因此翻出资料总结一下。
BMP文件格式解析
位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。BMP位图文件默认的文件扩展名是bmp或者dib。BMP文件大体上分为四个部分:
位图信息头主要包括:
调色板实际上是一个数组,它所包含的元素与位图所具有的颜色数相同,决定于biClrUsed和biBitCount字段。数组中每个元素的类型是一个RGBQUAD结构。真彩色无调色板部分。
紧跟在调色板之后的是图像数据字节阵列。对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值(逻辑色)。对于真彩色图,图像数据就是实际的R、G、B值。图像的每一扫描行由表示图像像素的连续的字节组成,每一行的字节数取决于图像的颜色数目和用像素表示的图像宽度。规定每一扫描行的字节数必需是4的整倍数,也就是DWORD对齐的。扫描行是由底向上存储的,这就是说,阵列中的第一个字节表示位图左下角的像素,而最后一个字节表示位图右上角的像素。
读取BMP文件,提取RGB数据的流程
流程如下图所示:
在这里需要注意的的是,根据BMP每像素所占的比特数不同(8,16,32 bpp),分为不同的处理方法,如下图所示。
下面看看16bpp的BMP文件操作:
R,G,B在16bit中所占的位数如下图所示
BMP转换为YUV
RGB到色差信号的转换如下所示:
Y=0.2990R+0.5870G+0.1140B
R-Y=0.7010R-0.5870G-0.1140B
B-Y=-0.2990R-0.5870G+0.8860B
为了使色差信号的动态范围控制在0.5之间,需要进行归一化,对色差信号引入压缩系数。归一化后的色差信号为:
U=-0.1684R-0.3316G+0.5B
V=0.5R-0.4187G-0.0813B
YUV文件的格式
转换后的YUV数据需要存成YUV文件(在这里是YUV420P格式)。YUV文件的格式很简单,先连续存Y,然后U,然后V,如图所示。
BMP 转 YUV程序下载地址:http://download.csdn.net/detail/leixiaohua1020/6469807
0 0
- BMP 转 YUV (BMP2YUV)
- BMP 转 YUV (BMP2YUV)
- BMP 转 YUV (BMP2YUV)
- BMP 转 YUV (BMP2YUV)+ YUV 转RGB
- BMP 转 YUV (BMP2YUV)+ YUV 转RGB
- BMP转YUV
- BMP转yuV
- yuv转bmp说明
- yuv转rgb写入bmp
- yuv转bmp说明2
- bmp转YUV RGB转YUV HM学习
- 一个yuv转bmp的程序
- bmp转yuv格式的视频
- 数据压缩原理与应用 BMP转YUV
- 数据压缩实验报告2-bmp转yuv
- 数据压缩实验二:BMP转YUV
- bmp2yuv
- bmp2yuv
- 团队建设系列—制定流程规范
- iOS海哥开发笔记 (海哥原创,常用的设计模式MVC,单例,代理,KVO)
- PHP学习笔记1-基础知识
- IS 函数判断变量类型
- iOS 缓存机制
- BMP 转 YUV (BMP2YUV)
- js 集合去重,交集,并集,差集
- PHP学习笔记2-基础知识
- 前端优化的小结
- 【SDOI2013】项链
- PHP学习笔记3-表单
- jsp页面传递数组参数到后台
- BMP 转 YUV (BMP2YUV)+ YUV 转RGB
- java io流