A、变换量化过程总体介绍

  经过帧内(16x16和4x4亮度、8x8色度)和帧间(4x4~16x16亮度、4x4~8x8色度)像素块预测之后,得到预测块的残差,为了压缩残差信息的统计冗余,需要对残差数据进行变换和量化操作。变换和量化的总体操作过程如下图:

        

  对于Intra_16x16的亮度块,通过16(4x4)个4x4的前向DCT变换,然后对得到的16个DC系数再进行4x4的Hadamard变换,然后对于16个DC系数和240个AC系数进行量化(DC和AC的量化公式略有不同,为了控制量化死区大小,详见量化器设计)。

  对于8x8的色度块(帧内、帧间),进行4x4的DCT变换后,得到4个DC和60个AC系数,同样对于DC系数先进行2x2的Hadamard变换后,分别对DC和AC系数进行量化。

  由于变换块越大,编码的效率越高,且图像的细节信息越能得以保留。所以H.264在HD档次中,支持进行8x8的DCT变换(设置标志transform_size_8x8_flag=1),且不需要对DC系数进行Hadamard变换,DCT变换后对DC和AC系数进行统一的量化处理。

  然后对于其他尺寸的变换块(不是Intra_16x16、8x8色度,没有transform_size_8x8_flag=1标志),则简单采用4x4的DCT变换,然后直接对DC和AC系数进行统一量化。

B、量化介绍

  量化是通过多对一的映射,降低比特率。主要有均匀量化、非均匀量化和自适应量化。根据最优量化器设计准则:最佳量化区间的边界值为相邻两个最佳量化值的平均数,最佳量化值为所在量化区间的均值。

  1、简单的定长标量量化器公式如下:

    Z = int(|W|/S) * sng(W)。

  其中W表示输入值,S是量化步长,int(x)表示小于等于x的最大整数,sng(x)表示x的符号,取值-1、0、+1。

  反量化公式:

    W = S * Z;

    

  如图:在量化区间[n*S, n*S+S)中,残差量化值为n*S。量化不长S决定了量化的效果,S越大,量化器的压缩效率越高,但是相应的图像的失真越高。但是对于上述量化器,对于区间[0,S)的残差值,被量化成0,明显不符合最优量化器设计准则,所以引入量化偏移量f。

  2、变形量化器:引入量化偏移量f,公式如下:

    Z = int((|W| + f ) / S) * sng(W);

  反量化公式如下:

    W = S * Z;

      

  如图:在量化区间(F-S,S-F)中,量化值是0;在[S-F, 2S-F)中,量化值为S。由于区间(f-S, S-f)的残差量化为0,[S-f, 2S-f)的残差量化为S,所以此量化器就可以通过调节f的值,调节量化区间的最佳量化值,使得最佳量化值满足是该区间的均值(W是非均匀分布时也可以调节f达到最佳量化器的要求),因此f可以控制量化区间的偏移量。H.264的参考模型建议对于帧间预测时,f=S/6;对于帧内预测是,f=S/2。

  对于残差值属于(f-S, S-f)时,量化值是0,所以区间(f-S, S-f)被称为量化死区,通过f可以控制量化死区的大小。由于经过DCT变换后,残差值大量处于量化死区,且量化死区的残值值往往对应高频细节信息,在实际应用中,往往需要对量化死区的高频或者大量出现的残差信息特殊处理,所以需要根据实际控制量化死区的大小。但是由于f同时控制着量化偏移量和量化死区,具有耦合性,所以为了解耦合,在JVT-K026中提出一种解耦合的量化器。

  3、变形量化器:引入参数t控制量化死区,公式如下:

    Z = int( (|W| + f + t) / S) * sng(W);

  反量化公式:

    W = (S * |Z| - t )* sng(Z)。

    

  如图:在量化区间(t+f-S, S-t-f)中,量化值是-t;在区间[S-t-f,2S-t-f)中,量化值是S-t。该量化器通过f控制量化值(即:量化值相对于量化区间断点的偏移量),确定量化偏移量满足最优量化器后,通过t控制量化死区的大小。

H.264学习笔记4——变换量化的更多相关文章

  1. H.264学习笔记5——熵编码之CAVLC

    H.264中,4x4的像素块经过变换和量化之后,低频信号集中在左上角,大量高频信号集中在右下角.左边的低频信号相对数值较大,而右下角的大量高频信号都被量化成0.1和-1:变换量化后的残差信息有一定的统 ...

  2. H.264学习笔记1——相关概念

    此处记录学习AVC过程中的一些基本概念,不定时更新. frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵. field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶 ...

  3. H.264学习笔记3——帧间预测

    帧间预测主要包括运动估计(运动搜索方法.运动估计准则.亚像素插值和运动矢量估计)和运动补偿. 对于H.264,是对16x16的亮度块和8x8的色度块进行帧间预测编码. A.树状结构分块 H.264的宏 ...

  4. H.264学习笔记

    1.帧和场的概念 视频的一场或一帧可用来产生一个编码图像.通常,视频帧可以分成两种类型:连续或隔行视频帧.我们平常看的电视是每秒25帧,即每秒更换25个图像,由于视觉暂留效应,所以人眼不会感到闪烁.每 ...

  5. 02:H.264学习笔记

    H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...

  6. H.264学习笔记之一(层次结构,NAL,SPS)

    一 H.264句法 1.1元素分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 图1 H.264分层结构由五层组成,分 ...

  7. H.264学习笔记6——指数哥伦布编码

    一.哥伦布码 哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id. >对于Group Id采用二元码编码: >对于Group内的编码对 ...

  8. H.264学习笔记2——帧内预测

    帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...

  9. H.264编码之DCT变换原理

    DCT变换是一种与FFT变换紧密相连的数学运算,当函数为偶函数是,其傅立叶展开式只有余弦项,因些称为余弦变换,其离散化的过程称为DCT(离散余弦)变换.下面我们就推导下H.264的4x4整数DCT公式 ...

随机推荐

  1. TF-IDF(term frequency–inverse document frequency)

    TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. TF- ...

  2. C++中各大有名的科学计算库

    在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决 的问题也是极其广泛,库从轻量 ...

  3. ZFIND_EXIT_BADI

    *&---------------------------------------------------------------------* *& Report  ZFIND_EX ...

  4. Android Studio配置完毕Genymotion 看不到Genymotion图标

    没有打开toolBar想要看到genymotion插件图标,AndroidStudio单击视图(view)>工具栏显示工具栏(toolbar)

  5. 有关MAC、PHY和MII

    这是一篇转载,原文链接:http://www.cppblog.com/totti1006/archive/2008/04/22/47829.html 以太网(Ethernet)是一种计算机局域网组网技 ...

  6. linux网络socket 接口转

    linux网络socket 接口 1.socket函数:一个进程必须做的第一件事就是调用socket函数获得一个文件描述符. ------------------------------------- ...

  7. 以太坊客户端geth的基本操作命令

    以太坊客户端geth的基本操作命令搭建了私有链环境之后,整理了一下客户端的一些基本的操作命令: 启动命令重复上篇博客步骤,先将区块链客户端启动,命令如下: geth –datadir “%cd%\ch ...

  8. BZOJ_3476_[Usaco2014 Mar]The Lazy Cow_扫描线+切比雪夫距离

    BZOJ_3476_[Usaco2014 Mar]The Lazy Cow_扫描线+切比雪夫距离 Description It's a hot summer day, and Bessie the c ...

  9. 《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》论文笔记

    参考 http://blog.csdn.net/u011534057/article/details/55052304 代码 https://github.com/yusuketomoto/chain ...

  10. 分布式缓存一致性hash算法

    当服务器不多,并且不考虑扩容的时候,可直接使用简单的路由算法,用服务器数除缓存数据KEY的hash值,余数作为服务器下标即可. 但是当业务发展,网站缓存服务需要扩容时就会出现问题,比如3台缓存服务器要 ...