数据压缩原理与应用 BMP转YUV

本文介绍了RGB到YUV颜色空间转换的原理,详细讲解了BMP文件格式,包括位深度、存储方式和文件头结构。通过实验流程分析,展示了24Bit BMP图像的处理,包括读取、转换和写入YUV文件的过程。实验结果验证了转换的正确性,并指出了可能的错误和解决方案。
摘要由CSDN通过智能技术生成

1.实验原理

RGB转YUV的公式
  • Y=0.30 * R+0.59 * G+0.11 * B
  • U=0.493 * (B-Y)
  • V=0.877 * (R-Y)
位深度和存储方式

BMP 文件的图像深度可选 lbit、4bit、8bit、16bit 及 24bit,8位图像可以是索引彩色图像外,也可以是灰阶图像。
如果图像是16位、24位,则图像文件中不保存调色板,则不存在调色板数据给出。如果图像是1位、4位或者8位,则紧跟其后的是位图数据,位图数据是指向调色板的索引序号。
BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。
n位2n种颜色的位图近似字节数可以用下面的公式计算:BMP文件大小约等于  54+42n+(whn)/8 ,其中高度和宽度都是像素数。需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板将小于计算的值。

bmp文件格式

这里写图片描述

  • bmp位图文件头
    typedef struct tagBITMAPFILEHEADER {
            WORD  bfType; /* 说明文件的类型  */
            DWORD  bfSize; /* 说明文件的大小,用字节为单位  */                                                                    
                                           /*注意此处的字节序问题
            WORD  bfReserved1; /* 保留,设置为0 */
            WORD  bfReserved2; /* 保留,设置为0 */
            DWORD  bfOffBits; /* 说明从BITMAPFILEHEADER结构开始到实际的图像数据之间的字节偏移量 */
    }   BITMAPFILEHEADER;
  • bmp位图信息头
    typedef struct tagBITMAPINFOHEADER { 
            DWORD  biSize; /* 说明结构体所需字节数 */
            LONG  biWidth; /* 以像素为单位说明图像的宽度 */
            LONG  biHeight; 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值