微网站怎么做的好名字,装修设计网站哪个平台最好,如何设计制作一般企业网站,外贸推广网站建设变化编码的基础知识
定义#xff1a;变换编码是将以空间域像素形式描述的图像转换至变换域#xff0c;以变换系数的形式加以表示。
大部分图像都包含较多平坦区域和内容变化缓慢的区域#xff0c;使得图像能量在空间域的分散转换为变换域的相对集中分布#xff0c;从而达…变化编码的基础知识
定义变换编码是将以空间域像素形式描述的图像转换至变换域以变换系数的形式加以表示。
大部分图像都包含较多平坦区域和内容变化缓慢的区域使得图像能量在空间域的分散转换为变换域的相对集中分布从而达到空间去冗余的目的。
变换概述
选用DCT变换的原因DCT形式与输入信号无关并且存在快速实现算法并且性能接近K-L变换。
H.264第一次使用了整数DCTH.265沿用了整数DCT进行了不同尺寸的变换形式还引入了离散正弦变换H.266同时采用了DCT和DST并且采用了多种基函数的变换形式拓展了变换的尺寸可分为8种类型但是DCT-2因其较低的计算复杂度和相对高的编码效率一直是核心变换技术
离散余弦变换
下图给出了二维4X4的DCT-2基图像。当k0,l0的时候水平分量和垂直分量的频率都等于10此时图像平坦在任何地方上都没有灰度值的变化。右下角表示像素灰度在水平方向和垂直方向发生连续变化。不同类型的DCT其基图像不同与原图像越相似变换性能越好。 如果像素块包含较多细节纹理信息则较多能量分布在高频区域。
实际上大多数图像包含更多的低频分量并且可以利用人眼对图像高频信息相对不敏感的特性对低频系数进行较为精细的量化和处理更好的压缩图像。
整数离散余弦变换
余弦函数的使用使DCT过程必须处理浮点数这样不可避免会带来舍入误差导致编解码失配。并且整型使得DCT处理速度大大提高。
二维DCT 可以分解为两个一维DCT将变换矩阵整数化同时为了保持正交性对整数化后的元素进行微调。同时乘以修正系数防止值的扩大。乘法操作在量化中实现。
VVC中使用了8、16、32、64这四种DCT-24、8、16、32这四种DCT-8
蝶形算法
哈达玛变换
H.264种规定了哈达玛变换与离散余弦变换相比哈达玛变换仅包含加法运算可使用递归形式快速实现并且正反变换具有相同的形式算法复杂度低且容易实现。
但自H.265起标准不在使用该变换但其在图像编码中有其他的应用常用于计算残差信号的SATD指将残差信号进行哈达玛变换后再求各元素的绝对值之和。根据实验发现残差的SATD与其经过DCT后的系数的绝对值之和十分的接近说明SATD能在一定程度上反映残差再频域中的大小。因此被广泛使用在快速模式的选择上。
VVC中的变换编码
VVC摒弃了独立于编码单元CU的变换但与TU即TU与CU一致除非CU尺寸大于最大变换块尺寸。并且支持MxN的变换块。
采用的新技术
多核选择MTS4种变换核的组合以适应图像的不同残差特性子块变换SBT只针对CU的子块进行变换和后续处理其他部分残差信号直接设置为0色度残差联合编码JCCR针对两个色度分量进行旋转变换处理去除局部性低频不可分变换LFNST采用特定的变换矩阵对变换系数进行二次变换
主变换
多核变换选择
收预测模式的影响预测残差会有不同的特性。通常情况下帧内残差随着与参考点距离的增大而增大越接近CU边缘越大。用不同的变换核处理不同的残差。
多核变换选择引入了4种变换核组合与传统DCT-2一起作为主变换的候选以适应不同内容特性。
高频调零
将变换后的部分高频系数设置为0仅保留低频系数。
子块变换
当同一CU包含不同内容的时候哦运动补偿不同包含的残差信息不同。所以允许只对部分区域的预测残差进行变换。将CU划分为两个TU只对其中一个进行变换、量化另一个预测残差强制设置为0。总共有8种SBT模式。
色度残差联合编码
在传统变换之前先对CB\CR分量使用分量间变换技术对相同位置的两个色度分量进行变换去除色度分量间的相关性。旋转变换。
二次变换
二次变换只针对帧内模式并且主变换为DCT-2的情形只对主变换系数的低频分量进行不可分变换。因为随着预测模式的变化尤其是使用方向预测的时候预测残差具有方向性变换后的低频分量依旧具有
H.266引入了一种低频不可分变换LFNST技术。
不可分变换只处理主变换系数的低频部分剩余主变换系数被置0为了降低计算复杂度、减少存储变换矩阵所需要的空间采用了简化不可分变换的方法RT将一个N维向量映射到不同空间的R维向量上变换核是通过离线训练的方式得到的。因为不同的预测模式有不同的变换集所以需要对35个帧内预测模式进行训练。最终采用了4个变换集每个包含2个变换核的方案。
VVC变换编码的标准设计与相关参数
主变换的标准实现
多核变换选择
多核变换选择MTS分为隐式MTS和显式MTS区别在于隐式MTS根据固定规则判断确定MTS变换核。
显式MTS
sps层上sps_mts_enabled_flag表示是否允许使用MTS
sps_explicit_mts_intra_enabled_flag帧内显式MTS
sps_explicit_mts_inter_enabled_flag帧间显式MTS
隐式MTS
满足下列3个条件种任意一个就会启用隐式MTS
当前CU的ISP为水平划分或垂直划分
当前CU使用了SBT并且CU的宽和高最大值不超过32
帧内显示MTS被禁用CU预测模式为帧内预测模式不启用低频不可分变换且不启用帧内MIP。 启用隐式MTS的时候使用的变换核也按照一定规则选取。
启用显示MTSCU层的mts_idx标识MTS所选最优变换核。 相关语法元素
sps_transform_skip_enabled_flag是否启用变换跳过模式
sps_log2_transform_skip_max_size_minus2变换跳过模式的变换块最大尺寸为以2为底的对数值减2取值范围0-3
sps_max_luma_transform_size_64_flag亮度块最大变换尺寸式64还是32
transform_skip_flag当前变换块是否启用变换跳过模式
子块变换
sps_sbt_enabled_flag子块变换SBT启用标识
CU层的cu_sbt_flag标识当前CU是否进行SBT
子块划分具有垂直划分SBT-V和水平划分(SBT-H)两种方式。有12、13、22的划分。划分后的TU有两种位置即position0左块和上块和position1右块和下块。 22的划分宽度要大于等于813的CU要大于等于16。连读块的SBT变换核由子块划分方式和所选位置决定。
相关语法元素
cu_sbt_quad_flag标识当前子块的划分方式1表示13划分0表示22划分
cu_sbt_pos_flag标识当前选择的子块位置1表示第2个子块0表示第一个子块
cu_sbt_horizontal_flag当前子块划分当时1表示水平划分0表示垂直划分
色度残差联合编码
sps_joint_cbcr_enabled_flag表示视频序列是否启用色度残差俩呢编码JCCR。帧内CU的tu_cb_coded_flag\tu_cr_coded_flag至少一个为1如果都为1传输tu_joint_cbcr_residual_flag。
VVC支持6种旋转变换用m来定义6种角度模式。旋转角度的正负由ph_joint_cbcr_sign_flag表示。
二次变换的标准实现
VVC支持8x8\4x4两种尺寸的LFNST
使用哪种尺寸的LFNST由TU尺寸隐式判断变换集的选择由帧内预测模式隐式判断变换核的选择由显式信号1fnst_idx决定标识是否使用LFNST及使用时的变换核索引
选择流程如下 帧内预测模式与变换集一一对应给出索引PredModeIntra标志帧内预测模式取值为【-1480】时的对应变换集。如果包含宽角度在内为【-1483】。
在sps层上sps_1fnst_enabled_flag标识是否使用LFNST1表示启用。