数据压缩实验二bmp to yuv
来源:互联网 发布:淘宝闲置网 编辑:程序博客网 时间:2024/05/17 05:58
一 实验原理
BMP(全称Bitmap)是Windows操作系统中标准图像文件格式:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,在绝大多数应用中不采用其他任何压缩。
BMP当中数据的色彩空间是RGB。
典型的BMP图像由以下四部分组成:
1. 位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息
2. 位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。
3. 调色板,可选。真彩色图(24位)不需要调色板
4.位图数据,根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他小于24位的需要在调色板中颜色索引值。
BITMAPFILEHEADER数据结构:
typedef struct tagBITMAPFILEHEADER { WORD bfType;/* 说明文件的类型 */ DWORD bfSize;/* 说明文件的大小,用字节为单位 */ WORD bfReserved1; /* 保留,设置为0 */ WORD bfReserved2; /* 保留,设置为0 */ DWORD bfOffBits; /* 说明从BITMAPFILEHEADER结构开始到实际的图像数据之间的字节偏移量 */ } BITMAPFILEHEADER;
BITMAPINFOHEADER数据结构
typedef struct tagBITMAPINFOHEADER { DWORD biSize; /* 说明结构体所需字节数 */ LONG biWidth; /* 以像素为单位说明图像的宽度 */ LONG biHeight; /* 以像素为单位说明图像的高速 */ WORD biPlanes; /* 说明位面数,必须为1 */ WORD biBitCount; /* 说明位数/像素,1、2、4、8、24 */ DWORD biCompression; /*说明图像是否压缩及压缩类型BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS */ DWORD biSizeImage; /* 以字节为单位说明图像大小 ,必须是4的整数倍*/ LONG biXPelsPerMeter; /* 目标设备的水平分辨率,像素/米 */ LONG biYPelsPerMeter; /*目标设备的垂直分辨率,像素/米 */ DWORD biClrUsed; /* 说明图像实际用到的颜色数,如果为0则颜色数为2的biBitCount次方 */ DWORD biClrImportant; /*说明对图像显示有重要影响的颜色 索引的数目,如果是0,表示都重要。*/} BITMAPINFOHEADER;
调色板数据结构
typedef struct tagRGBQUAD { BYTE rgbBlue; /*指定蓝色分量*/ BYTE rgbGreen; /*指定绿色分量*/ BYTE rgbRed; /*指定红色分量*/ BYTE rgbReserved; /*保留,指定为0*/} RGBQUAD;
二 实验流程分析
程序初始化(打开两个文件、定义变量和缓冲区等)2.读取BMP文件,抽取或生成RGB数据写入缓冲区
关于第二步的具体操作:
3.调用RGB2YUV的函数实现RGB到YUV数据的转换4.写YUV文件5.程序收尾工作(关闭文件,释放缓冲区)
三 部分代码
main.cpp
阅读全文
0 0
- 数据压缩实验二bmp to yuv
- 数据压缩实验二:BMP转YUV
- 数据压缩实验二:bmp转yuv格式实验报告
- 数据压缩实验二:bmp转yuv格式实验报告
- 数据压缩实验报告2-bmp转yuv
- 数据压缩第二次实验报告——用C语言实现bmp to yuv的图片格式转化
- 数据压缩实验二 图像文件的读写和转换(bmp转yuv)
- 数据压缩原理与应用 BMP转YUV
- 实验二 图像文件的读写和转换(BMP转YUV)
- test_02:BMP to YUV
- 【数据压缩】实验二 BMP2YUV
- 数据压缩实验二:bmp2yuv
- 数据压缩实验一:yuv转rgb
- 数据压缩实验一:YUV转RGB
- 【数据压缩】实验一 YUV转RGB
- 数据压缩实验一:yuv转rgb格式实验报告
- 实验二 图像文件的读写和转换(BMP转YUV)
- 《数据压缩》实验报告二·BMP2YUV实验
- static块
- Netty系列之Netty高性能之道
- python算法题:输出2~100之间的素数
- 创建爬虫----爬取大众点评数据并存入mongoDB数据库
- 将r中的数据导出为excel文件
- 数据压缩实验二bmp to yuv
- 机器学习之numpy和matplotlib学习(十五)
- 【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(二)
- jQuery面试题-2017年7月1日
- thinkphp中的一些坑(foreach和volist)
- 调研TCP定时器
- 扒扒我的微信朋友圈
- 前端优化的方法有哪些
- CSS中的id和class