编解码总结

Huffman编码

Huffman Coding (霍夫曼编码)是一种无失真编码的编码方式,Huffman 编码是可变字长编码(VLC)的一种。Huffman 编码基于信源的概率统计模型,它的基本思路是,出现概率大的信源符号编短码,出现概率小的信源符号编长码,从而使平均码长最小。

举例:

“this is an example of a huffman tree”,共得132bit的码字

字母spaceaefhimnstloprux
频率7443222222111111
编码1110100001101101010000111001010110110110010011010011110000011110010
img

图像编码

RGB

RGB 图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用 8 bit,也就是一个字节,那么一个像素点也就占用 24 bit,也就是三个字节。RGB每个元素的取值范围为:0~255。那么三色组合起来256x256x256=16777216(约1600w种)颜色。由于人眼的解析度有限,以3个字节来描述颜色以及完全够用了,甚至有点多余。 用三字节表示颜色的方式通常称为真彩色

Adobe RGB色彩空间- 维基百科,自由的百科全书

BMP

BMP文件采用位映射存储格式,大多只通过选择位的大小进行压缩,因此会占用比较大的空间,BMP 文件的图像深度(每个像素用几bit表示)可选 lbit、4bit、8bit、16bit 及 24bit。BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。(8bit及以下要调色板)BMP文件由4部分组成:

  1. 位图文件头(bitmap-file header)
typedef struct tagBITMAPFILEHEADER {
        WORD       bfType;        /* 说明文件的类型  */
        DWORD      bfSize;          /* 说明文件的大小,用字节为单位  */
                                    /*注意此处的字节序问题*/
        WORD       bfReserved1;   /* 保留,设置为0 */
        WORD       bfReserved2;   /* 保留,设置为0 */
        DWORD      bfOffBits;        /* 说明从BITMAPFILEHEADER结构开始到实际的图像数据之间的字节偏移量 */
}   BITMAPFILEHEADER;
  1. 位图信息头(bitmap-informationheader)
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;
  1. 颜色表(color table)

  2. 颜色点阵数据(bits data)

24位真彩色位图没有颜色表,所以只有1、2、4这三部分。

YUV

  • Y 表示明亮度(Luminance,Luma或brightness),也就是灰阶值
  • U 和 V 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
    YUV像素格式来源于RGB像素格式,通过公式运算,YUV 三分量可以还原出 RGB,YUV 转 RGB 的公式如下:
    R = Y + 1.403V
    G = Y - 0.344U - 0.714V
    B = Y + 1.770U

YUV的采样方式

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,如何根据其采样格式来从码流中还原每个像素点的YUV值,因为只有正确地还原了每个像素点的YUV值,才能通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。

用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。

在这里插入图片描述

  • YUV 4:4:4采样,每一个Y对应一组UV分量,每像素32位
  • YUV 4:2:2采样,每两个Y共用一组UV分量,每像素16位
  • YUV 4:2:0采样,每四个Y共用一组UV分量,每像素16位

 

音频编码

音频特性

声音信号的冗余

时域:幅度非均匀分布,小幅度的样值比大幅度的样值出现的概率高;

频域:功率谱密度非均匀:低频能量高、高频能量低。

听觉特性

**人耳的听觉特性: ** 声音中听不到的东西可以不采样、不编码、不传输。

人耳的听觉掩蔽效应: 一个强纯音会掩蔽在其附近(频率附近)同时发声的弱纯音,听觉阈随声音频率的变化而变化,也随声音的响度变化而变化。

img

掩蔽效应的利用:去除被掩蔽的信号分量,不理会可能被掩蔽的量化噪声(选择使量化噪声小于最小掩蔽值时的最小量化比特数)

临界频带

当某个纯音被以它为中心频率、且具有一定带宽的连续噪声所掩蔽时,如果该纯音刚好被听到时的功率等于这一频带内的噪声功率,这个带宽为临界频带宽度。

人类听觉系统相当于一个在0KHz~20KHz范围内一个由25个重叠的带通滤波器组成的滤波器组。人耳不能区分同一个频带内同时发生的不同声音。临界频带的宽度用bark来衡量,500Hz以下临界频带宽度约为100Hz,从500Hz起临界频带带宽线性增加。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkmYDm3R-1661135013418)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801143334841.png)]

说明:

  • 理想的频带分割应该模仿临界频带,即各子带的宽度不一致,随频率的升高而增加。

  • 每个子带根据各自的信号掩蔽比确定相应的量化级数,分配比特使量化噪声和掩蔽阈值越接近,数据压缩越充分。

 

MPEG音频编码

img

 

动态比特分配

在调整到固定的码率之前先确定可用于样值编码的有效比特数,这个数值取决于比例因子、比例因子选择信息、比特分配信息 以及辅助数据所需比特数。比特分配的过程: 对每个子带计算掩蔽-噪声比MNR,是信噪比SNR – 信掩比 SMR,即:MNR = SNR – SMR

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cA1zSxmE-1661135013419)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801143553652.png)]

 

视频编码

帧内编码

色度亚采样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YB54I2ch-1661135013419)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801144657854.png)]
 

 

帧间预测编码

视频结构

image-20220801145005370

I、P、B帧

image-20220801145221724

宏块搜索

image-20220801145352853

 

基于运动估计和运动补偿的帧间预测编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmXF5S8J-1661135013419)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801145110931.png)]

 

 

H.264

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1F1MbNXW-1661135013420)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801143740374.png)]

整体结构为 变换+预测+量化+熵编码

块匹配法: 在搜索范围内按块计算欧式距离,欧氏距离最小的则为匹配块。

运动估计: 通过对运动部分用更精细的像素维度进行编码,提升运动部分的预测精度。

多参考帧预测估计

img

 

SVC

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CW2EoHXn-1661135013420)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801145548542.png)]

可分级编码类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zgs1hOVK-1661135013420)(C:\Users\z00598330\AppData\Roaming\Typora\typora-user-images\image-20220801145621667.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值