精华内容
下载资源
问答
  • 多描述编码的原理及其应用 多描述编码的原理及其应用
  • 从CDN(内容分发网络)技术角度出发,分析了描述视频编码在CDN中的应用,提出了三种应用于CDN的...实验表明,基于时间相关性的奇偶帧分解多描述编码方案的性能优于基于空间相关性的奇偶行、奇偶列分解多描述编码方案。
  • 在视频编码中,分层编码用来解决网络传输异构性问题,多描述编码是解决传输可靠性的有效手段,而描述视频分层编码则是二者的结合。在分层编码技术的基础上,结合基于宏块分裂的多描述编码,提出了基于宏块分裂的...
  • AV1编码标准-算法描述

    千次阅读 2020-10-15 22:35:22
    AV1编码标准 本文档介绍了相关编解码器中包含的编码工具的技术方面。本文档不是相关编解码器的规范。相反,它总结了针对新开发人员的编码工具的突出功能。 缩略语 CfL: Chroma from Luma IntraBC: Intra block ...

    AV1编码标准

    块划分

    编码块划分

    变换块划分

    帧内预测

    定向帧内预测模式

    非定向帧内预测模式

    递归滤波模式

    从亮度预测色度

    帧间预测

    运动矢量预测

    空间运动矢量预测

    时间运动矢量预测

    运动矢量编码

    插补滤波器用于运动补偿

    扭曲运动补偿

    全局扭曲运动

    局部扭曲运动

    重叠块运动补偿

    参考框架

    复合预测

    复合楔形预测

    差分调制的掩盖预测

    基于帧距的复合预测

    复合帧内预测

    变换

    量化

    熵编码

    熵编码引擎

    系数编码

    循环过滤和后处理

    去块

    约束方向增强滤波器

    边缘方向估计

    定向滤波器

    非线性滤波

    回路恢复过滤器

    可分离的对称维纳滤波器

    双自导滤波器

    帧超分辨率

    薄膜颗粒合成

    屏幕内容编码

    块内复制

    调色板模式

    参考文献


    AV1编码标准

    本文档介绍了相关编解码器中包含的编码工具的技术方面。本文档不是相关编解码器的规范。相反,它总结了针对新开发人员的编码工具的突出功能。

    缩略语

    CfL: Chroma from Luma

    IntraBC: Intra block copy

    LCU: Largest coding unit

    OBMC: Overlapped Block Motion Compensation

    CDEF: Constrained Directional Enhancement Filter

    块划分

    编码块划分

    此编解码器中应用的最大编码块单位(LCU)为128×128。除无划分模式(PARTITION_NONE)外,分区树还支持9种不同的分区模式,如下图所示。

    根据子分区的数目,分区9种模式被概括如下:

    1.四个分区:PARTITION_SPLIT、PARTITION_VERT_4、PARTITION_HORZ_4

    2.三个分区(T形):PARTITION_HORZ_A、PARTITION_HORZ_B、PARTITION_VERT_A、 PARTITION_HORZ_B

    3.两个分区:PARTITION_HORZ、PARTITION_VERT

    在所有9种分区模式中,只有PARTITION_SPLIT模式支持递归分区,即子分区可以进一步划分,其他分区模式无法进一步划分。特别的,对于8×8和128×128块,PARTITION_VERT_4,PARTITION_HORZ_4不使用,而对于8×8,T形分区也不使用。

    变换块划分

    对于帧内和帧间编码块,可以将编码块进一步划分为多个变换单元,划分深度最多为2级。下表1中显示了从当前深度的变换大小到下一个深度的变换大小的映射。

    此外,对于帧内编码块,以所有变换块具有相同大小的方式来完成变换分区,并且以光栅扫描顺序对变换块进行编码。图2显示了帧内编码块的变换块分区示例。

    对于帧间编码块,可以以递归的方式完成变换单元的划分,划分深度最多为2级。变换分区支持1:1(正方形),1:2/2:1和1:4/4:1变换单位大小,范围从4×4到64×64。如果编码块小于或等于64x64,则变换块划分只能应用于亮度分量,对于色度块,变换块的大小与编码块的大小相同,不使用变换块划分。否则,如果编码块的宽度或高度大于64,则亮度和色度编码块都将隐式拆分为min(W,64)x min(H,64)和min(W,32)x min的倍数(H,32)个变换块。

    帧内预测

    定向帧内预测模式

    定向帧内预测模式应用于帧内预测,​​该模式使用给定的方向模式对局部纹理进行建模。定向帧内预测模式由标称模式(nominal mode)和角度增量(angle delta)表示。标称模式是VP9中使用的帧内预测角度的相似集合,其中包括8个角度。角度增量的指标值在-3〜+3的范围内,零增量角度表示标称模式。预测角度由标称帧内角度加角度增量表示。总共有56种方向性帧内预测模式,如下图所示。在下图中,实线箭头表示方向帧内预测模式,而虚线箭头表示非零角度增量。

    标称模式索引和角度增量索引分别进行编码,标称模式索引在相关的角度增量索引之前编码。注意,对于小块尺寸,其中来自扩展帧内预测角的编码增益可能饱和,仅使用标称模式并且不对角度增量索引进行编码。

    非定向帧内预测模式

    除了定向帧内预测模式外,还包括四个模拟平滑纹理的非定向帧内模式。这四个非定向帧内模式包括SMOOTH_V,SMOOTH_H,SMOOTH和PAETH predictor。

    在SMOOTH_V,SMOOTH_H并且SMOOTH模式,预测值是使用沿垂直方向、水平方向或其平均值的二次插值生成的。二次内插中使用的样本包括来自顶部和左侧相邻块的重建样本以及来自右侧和底部边界的样本,这些样本由顶部重建样本和左侧重建样本近似。

    在PAETH predictor模式下,每个样本的预测被指定为一个来自上(T)、左(L)和左上(TL)的参考样本,其值最接近PAETH predictor值,即T+L-TL。PAETH predictor下图中说明了所使用的样本。

    递归滤波模式

    定义了五个帧内滤波模式,每个模式指定一组八个7抽头滤波器。给定选定的滤波模式索引(0〜4),当前块被分为4x2子块。对于一个4×2子块,使用7个顶部和左侧相邻样本作为输入,通过7抽头内插法预测每个样本。将不同的滤波器应用于位于4×2子块内不同坐标处的样本。可以在单元4x2子块中递归地完成预测过程,这意味着为一个4x2预测块生成的预测样本可用于预测另一个4x2子块。

    从亮度预测色度

    来自亮度的色度(CfL)是色度帧内预测模式,该模式将色度样本建模为位于同一位置的重建亮度样本的线性函数。为了针对不同的色度采样格式(例如4:2:0和4:2:2)在亮度和色度采样之间对齐分辨率,可能需要在CfL模式下使用之前对重建亮度像素进行下采样。另外,使用AC贡献减去DC分量。在CfL模式下,指定两个颜色分量之间线性函数的模型参数被编码器通过在比特流中用信号发送。

    帧间预测

    运动矢量预测

    运动矢量由相邻块预测,该相邻块可以是空间相邻块,也可以是位于参考帧中的时间相邻块。将通过检查所有这些块来识别一组MV预测器,并将其用于编码运动矢量信息。

    空间运动矢量预测

    有两组空间相邻块可用于查找空间MV预测值,包括当前块的直接上,左相邻块的相邻空间相邻块,以及与当前块相邻但不直接相邻的第二外部空间相邻块块。在图8所示的示例中说明了两组空间相邻块。

    对于每组空间相邻块,将从左到右检查第一行,然后从上到下检查左列。对于相邻的空间邻居,在检查左列的相邻块之后,还将检查一个额外的右上块。对于非相邻的空间邻块,将首先检查位于(-1,-1)位置的左上块,然后以与相邻邻居相似的方式检查顶部行和左侧列。将首先检查空间相邻的块,然后再检查将在下一个小节中描述的时间临时MV预测器,此后,将检查不相邻的空间相邻块。

    对于利用一对参考帧的复合预测,不使用非相邻空间相邻块来推导MV预测器。

    时间运动矢量预测

    除了空间相邻块外,还可以使用位于同一位置的参考图片块(即时间MV预测器)导出MV预测器。为了生成时间MV预测器,首先将参考帧的MV与与参考帧相关联的参考索引一起存储。然后,对于当前帧的每个8×8块,识别通过8×8块的参考帧的MV,并将其与参考帧索引一起存储在时间MV缓冲器中。在图9所示的示例中,标识了从R1指向R1的参考帧的参考帧1(R1)的MV,即MVref,它通过了当前帧的8x8块(以蓝色圆点阴影)。然后,将该MVref存储在与此8×8块相关联的时间MV缓冲器中。

                                                                                 图9:通过线性投影估算运动场

    最后,给定几个预定义的块坐标,存储在时间MV缓冲区中的相关MV会被识别并进行相应的投影,以得出从当前块指向其参考帧的时间MV预测变量,例如,图9中的MV0。在图10中,示出了用于导出16×16块的时间MV预测器的预定义块位置,并且将检查多达7个块以找到有效的时间MV预测器。

                                                     图10:推导时间MV预测值的块位置在最近的空间MV预测值

    之后但在不相邻的空间MV预测值之前检查时间MV预测值。

    所有空间和时间MV候选者将被放在一起,每个预测变量与在空间和时间相邻块的扫描期间确定的权重相关联。基于相关的权重,对候选项进行排序和排名,并且最多四个候选项将用作列表MV预测变量列表。

    运动矢量编码

    插补滤波器用于运动补偿

    暂无

    扭曲运动补偿

    全局扭曲运动

    在每个帧间信号通知全局运动信息,其中包括全局运动类型和运动参数。下表列出了全局运动类型和相关参数的数量。

    全局运动类型

    参数数量

    Identity (zero motion)

    0

    Translation

    2

    Rotzoom

    4

    General affine

    6

    对于帧间编码块,在发送参考帧索引之后,如果将当前块的运动指示为全局运动,则给定参考的全局运动类型和关联参数将用于当前块。

    局部扭曲运动

    对于帧间编码块,当满足以下条件时,将允许局部扭曲运动:

    1. 当前块是单个预测
    2. 宽度或高度大于或等于8个样本
    3. 至少一个直接相邻块使用与当前块相同的参考帧

    如果将局部扭曲运动用于当前块,而不是用信号发送仿射参数,则根据当前块及其直接邻居的运动矢量,通过使用参考投影和建模投影之间距离的均方最小化来估算仿射参数。为了估计局部扭曲运动的参数,如果相邻块使用与当前块相同的参考帧,则收集相邻块中的中心像素及其参考帧中的对应像素的投影样本对。此后,通过将中心位置在一个或两个维度上移动四分之一的样本来创建3个额外的样本,这些样本也被视为投影样本对,以确保模型参数估计过程的稳定性。

    重叠块运动补偿

    对于帧间编码块,当完全满足以下条件时,允许重叠块运动补偿(OBMC)。

    1. 当前块是单个预测
    2. 宽度或高度大于或等于8个样本
    3. 相邻块中的至少一个是帧间编码块

    当OBMC应用于当前块时,首先利用当前块的指定运动矢量生成初始帧间预测样本,然后将当前块的帧间预测样本和基于上述和左侧块的运动矢量的帧间预测样本混合,生成最终的预测样本。根据当前块的大小限制相邻运动矢量的最大数目,在当前块的OBMC过程中,上、左两块的运动矢量最多可包含4个。

    下图显示了相邻块的处理顺序的一个示例,其中每个块中标记的值表示当前块和相邻块的运动矢量的处理顺序。具体而言,首先将当前块的运动矢量应用于生成帧间预测样本P0(x,y)。然后,将块1的运动矢量应用于生成预测样本p1(x,y)。之后,在块0与块1之间的重叠区域中的预测样本是p0(x,y)和p1(x,y)的加权平均值。下图用灰色标记了块1和块0的重叠区域。块2、3、4的运动矢量以相同的方式进一步应用和混合。

    参考框架

    暂无

    复合预测

    复合楔形预测

    暂无

    差分调制的掩盖预测

    暂无

    基于帧距的复合预测

    暂无

    复合帧内预测

    暂无

    变换

    可分离的2D变换过程被应用于预测残差。对于正向变换,首先对输入残差块的每一列执行一维垂直变换,然后对垂直变换输出的每一行执行水平变换。对于反换,首先对输入的反量化系数块的每一行执行一维水平变换,然后对水平变换输出的每一列进行垂直变换。主要的一维变换包括四种不同类型的变换:

    a)4点,8点,16点,32点,64点DCT-2;

    b)4点,8点,16点非对称DST(DST-4,DST-7)和)其翻转版本;

    d)4点,8点,16点,32点identity transforms。

    当变换大小为4点时,ADST引用DST-7,否则,当变换大小大于4点时,ADST引用DST-4。

    对于亮度分量,每个变换块可以在给定一组预定义的变换类型候选的情况下选择一对水平和垂直变换组合,并且将选择结果明确地发送到比特流中。但是,当Max(width,height)为64时,不会发出选择信号。当变换块宽度和高度的最大值大于或等于32时,变换类型候选集取决于预测模式,如表3所示否则,当变换块宽度和高度的最大值小于32时,变换类型候选集取决于预测模式,如表4中所述。

    表5中定义了变换类型候选集(即变换集)。

    对于色度分量,以隐式方式完成变换类型的选择。对于帧内预测残差,按照表中的指定,根据帧内预测模式选择变换类型。对于帧间预测残差,根据同位亮度块的变换类型选择来选择变换类型。因此,对于色度分量,在比特流中没有变换类型信令。

     

    在以下两种情况通过将其区域外的所有系数归零,可以进一步减少大尺寸(例如64点)变换的计算成本:

    1. 64×64/64×32/32×64 DCT_DCT组合变换的左上角32×32
    2. DCT_DCT组合变换用于64×16的左32×16区域和用于16×64的顶部16×32。

    DCT-2和ADST(DST-4,DST-7)都是使用蝶形结构[1]实现的,该结构包括蝶形操作的多个阶段。每个蝶形运算可以并行计算,并且不同阶段按顺序层叠。

    量化

    变换系数的量化可以对DC和AC变换系数应用不同的量化步长,并且对于亮度和色度变换系数可以应用不同的量化步长。为了指定量化步长,首先在帧头中用信号通知base_q_idx语法元素,它是一个8位固定长度代码,用于指定亮度AC系数的量化步长。base_q_idx的有效范围是[0,255]。

    此后,进一步用信号表示亮度DC系数相对于base_q_idx的增量值,表示为DeltaQYDc。此外,如果存在一个以上的颜色平面,则发信号标记diff_uv_delta以指示Cb和Cr颜色分量是否应用了不同的量化指标值。如果diff_uv_delta的信号为0,则仅发送相对于base_q_idx的色度DC系数(表示为DeltaQUDc)和AC系数(表示为DeltaQUAc)的增量值。否则,用信号发送相对于Cb和Cr DC系数(表示为DeltaQUDcDeltaQVDc)和AC系数(表示为DeltaQUAcDeltaQVAc)的相对于base_q_idx的增量值。

    将上面解码的DeltaQYDcDeltaQUAcDeltaQUDcDeltaQVAcDeltaQVDc添加到base_q_idx以得出量化索引。然后,根据两个表将这些量化指标进一步映射到量化步长。对于DC系数,由查找表Dc_Qlookup [3] [256]指定8位,10位和12位内部位深度的从量化索引到量化步长的映射,以及从量化索引到量化的映射。查找表Ac_Qlookup [3] [256]指定8位,10位和12位的步长。

    给定量化步长,表示为Q_step,使用以下公式进一步对输入量化系数进行去量化:

    F = sign * ( (f * Q_step) % 0xFFFFFF ) / deNorm

    其中f是输入量化系数,F是输出反量化系数,deNorm是从变换块区域大小得出的常数,如下表所示:

    deNorm

    Tx block area size

    1

    Less than 512 samples

    2

    512 or 1024 samples

    4

    Greater than 1024 samples

    当量化索引为0时,使用等于1的量化步长来执行量化,这是无损编码模式。

    熵编码

    熵编码引擎

    暂无

    系数编码

    对于每个变换单元,系数编码以对跳过符号进行编码开始,如果不跳过变换编码,则紧跟着主要变换内核类型和块末(EOB)位置的信号。此后,以多级映射方式加上符号值来编码系数值。层次图被编码为三个层次平面,即较低层次,中间层次和较高层次的平面,符号被编码为另一个单独的平面。下层,中层和上层平面对应于对应于系数幅度的不同范围。较低的平面对应于0–2的范围,中间的平面对应于3–14的范围,而较高的平面覆盖15和更高的范围。

    这三个水平平面编码如下。在对EOB位置进行编码之后,将低级和中级平面按向后扫描顺序一起编码,并且扫描顺序是指在整个变换单元的基础上应用的之字形扫描。然后,将符号平面和更高级别的平面按正向扫描顺序一起编码。此后,使用Exp-Golomb码对其余部分(系数水平减去14)进行熵编码。

    应用于较低级别平面的上下文模型取决于主要变换方向,包括:双向,水平和垂直以及变换大小,并且最多使用五个相邻(在频域中)系数来导出上下文。中层平面使用类似的上下文模型,但是上下文邻居系数的数量从5减少到2。较高层的平面通过Exp-Golomb代码进行编码,而无需使用上下文模型。对于符号平面,除了使用来自其相邻变换单元的DC符号编码的DC符号外,其他系数的符号值都直接编码,而无需使用上下文模型。

    循环过滤和后处理

    去块

    选择去块滤波器级别时有以下四种方法:

    • LPF_PICK_FROM_FULL_IMAGE:搜索具有不同值的完整图像
    • LPF_PICK_FROM_Q:根据量化器和帧类型估计滤波器级别
    • LPF_PICK_FROM_SUBIMAGE:从图像的一部分估计水平
    • LPF_PICK_MINIMAL_LPF:将滤波器级别设置为0并禁用去块

    当从完整图像或子图像估计滤波器级别时,搜索从上一帧滤波器级别开始,在滤波器步长小于或等于零时结束。除了滤波器级别之外,还有一些控制去块滤波器的其他参数,例如清晰度级别,模式增量和参考增量。

    去块化以128x128超级块级别执行,并且垂直边缘和水平边缘分别进行过滤。对于128x128超级块,首先过滤与每个8x8块对齐的垂直/水平边缘。如果使用4x4变换,则与4x4块对齐的内部边缘将被进一步过滤。过滤器长度可以从4抽头,6抽头,8抽头,14抽头和0抽头之间切换(不过滤)。基于滤波器抽头的数量来标识滤波器抽头的位置,以便计算滤波器掩码。最终执行滤波时,如果边缘变化较大,则添加外部抽头。

    约束方向增强滤波器

    边缘方向估计

    在CDEF中,边缘方向搜索以8x8块级别执行。总共有八个边缘方向,如图13所示。

    最佳边缘方向d_opt通过最大化以下项[3]来找到:

    其中x_p是像素p的值,P_ {d,k}是沿方向d沿线k的像素集合,N_ {d,k}是P_ {d,k}的基数。

    定向滤波器

    CDEF包含两个滤波器抽头:一次抽头和二次抽头。一次抽头沿边缘方向工作(如图14所示),而二次抽头与边缘方向成45度定向(如图15所示)。

    CDEF可用以下等式描述:

    其中x(i,j)和y(i,j)是CDEF的输入和输出重构值。p表示一次抽头,s表示二次抽头,w是一次抽头和二次抽头之间的权重。f(d,S,D)是非线性滤波函数,S表示滤波强度,D是阻尼参数。对于8位内容,S ^ p的范围是0到15,S ^ s可以是0、1、2或4。D的值对于亮度范围是3到6,对于色度的范围是2到4。

    非线性滤波

    CDEF使用非线性滤波功能来防止在边缘上应用时过度模糊。这是通过忽略与当前要过滤的像素差异太大的像素来实现的。当当前像素与其相邻像素d之间的差异在阈值内时,f(d,S,D)= d,否则f(d,S,D)=0。具体而言,强度S确定允许的最大差异,并且阻尼D决定了忽略滤波器抽头的点。

    回路恢复过滤器

    可分离的对称维纳滤波器

    令F为一个w x w的 2D滤波器抽头,围绕要滤波的像素,表示为一个w ^ 2 x 1列向量。与传统的维纳滤波器相比,可分离对称维纳滤波器具有以下三个约束,以节省信令比特并降低复杂度[4]:

    1. w x w滤波器窗口分为水平和垂直w-tap卷积。
    2. 水平和垂直滤波器被限制为对称的。
    3. 假设水平/垂直滤波器系数的总和为1。

    结果,对于i,F可以写为F = column_vectorize [ab ^ T],服从a(i)= a(w-1-i),b(i)= b(w-1-i) = [0,r-1],并且sum(a(i))= sum(b(i))= 1,其中a是垂直滤波器,b是水平滤波器。滤波器a和b的推导是从对水平和垂直滤波器的初始猜测开始的,从而在保持另一个固定的同时优化了两者中的一个。因此,在实现中w = 7,需要分别为滤波器a和b发送3个抽头。当发信号通知滤波器系数时,前三个滤波器抽头使用4、5和6位,其余的则从归一化和对称约束中获得。垂直和水平滤波器总共传输30位。

    双自导滤波器

    设计双自导滤波器,首先获得degraded frame X的两个粗略还原X1和X2,然后将最终样本Xr作为退化样本的组合,以及退化样本与粗还原之间的差[4]来获得:

    在编码器端,使用以下公式计算alpha和beta:

    其中A = {X1-X,X2-X},b = Y-X,Y是原始来源。

    X1和X2是使用引导滤波获得的,并且滤波是由半径r和噪声参数e控制的,其中r越大,空间方差越大,e越大,范围方差越大[4]。X1和X2分别由{r1,e1}和{r2,e2}来描述。

    编码器将六元组{r1,e1,r2,e2,alpha,beta}发送到解码器。在实现中,{r1,e1,r2,e2}使用3位码本,而{alpha,beta}由于精度更高而各使用7位,因此总共17位。r始终小于或等于3 [4]。

    引导滤波可以通过局部线性模型来描述:

    其中x和y是输入和输出样本,F和G由要过滤像素的相邻区域中的统计信息确定。当引导图像与降级图像相同时,称为自引导滤波[4]。

    推导自导滤波的F和G时,需要执行以下三个步骤:

    1. 在要过滤的像素周围的(2r +1)x(2r +1)窗口中计算像素的均值u和方差d。
    2. 对于每个像素,计算f = d /(d + e); g =(1-f)u。
    3. 将每个像素的F和G计算为像素周围3 x 3窗口中f和g值的平均值,以用于步骤2。

    帧超分辨率

    为了提高解码图片的感知质量,在低比特率下应用了超分辨率处理[5]。首先,在编码器端,源视频按非规范过程进行缩小。其次,对缩小的视频进行编码,然后进行去块和CDEF处理。第三,将线性放大过程用作规范过程,以将编码的视频恢复到其原始空间分辨率。最后,采用环路恢复来解决部分高频损耗。最后两个步骤一起称为超分辨过程[5]。类似地,在解码器侧以较低的空间分辨率应用解码,解块和CDEF处理。然后,帧经历超分辨过程。为了减少有关硬件实现的行缓冲区的开销,

    薄膜颗粒合成

    在编码器侧,作为去噪处理,胶片颗粒会从输入视频中删除。然后,通过康尼边缘检测器分析输入视频的结构和强度,并使用平滑区域估计胶片颗粒的强度。一旦强度被估计,去噪的视频和胶片颗粒参数被发送到解码器侧。这些参数用于合成颗粒并将其添加回解码的视频中,从而生成最终的输出视频。

    为了重建胶片颗粒,将以下参数发送到解码器端:滞后值,自回归系数,色度分量的预计算查找表索引的值以及分段线性缩放函数的一组点[6 ]。这些参数以量化的整数表示,包括用于缩放函数的64个字节和用于自回归系数的74个字节。一旦接收到参数,就以光栅扫描顺序应用自回归过程,以生成一个64x64亮度和两个32x32色度胶片颗粒模板[6]。这些模板用于为图片的其余部分生成纹理。

    屏幕内容编码

    为了提高屏幕内容编码的编码性能,相关的视频编解码器结合了多种编码工具,例如,使用内部块复制(IntraBC)处理屏幕图片中的重复图案,使用调色板模式处理屏幕块具有有限数量的不同颜色。

    块内复制

    块内复制(IntraBC)[2]是类似于图片间预测的编码工具。主要区别在于,在IntraBC中,由当前图片的重构样本(在应用环路滤波之前)形成预测块。因此,可以将IntraBC视为当前图片中的“运动补偿”。

    对块向量(BV)进行了编码,以指定预测变量的位置。B精度是整数。由于解码器需要BV来定位预测变量,因此将在比特流中用信号通知BV。对于当前块,标志首先使用IntraBC来指示当前块是否处于IntraBC模式,该标志是在位流中发送的。然后,如果当前块是IntraBC模式,则通过从当前BV减去参考BV来获得BV差diff,然后根据水平分量和垂直分量的diff值将diff分类为四种类型。需要将类型信息发送到比特流中,之后,可以基于类型信息用信号发送两个分量的diff值。

    IntraBC对于屏幕内容编码非常有效,但也给硬件设计带来了很多困难。为了简化硬件设计,采用了以下修改。

    1. 当允许IntraBC时,将禁用环路滤波器,即去块滤波器,CDEF(约束方向增强滤波器)和环路恢复。通过这样做,可以在IntraBC和帧间预测之间共享重构样本的图片缓冲器。
    2. 为了促进并行解码,预测不能超出限制区域。对于一个超级块,如果其左上角位置的坐标为(x0,y0),则如果y <y0且x <x0 + 2 *(y0- y)
    3. 为了允许硬件回写延迟,IntraBC预测无法访问立即重建的区域。受限制的立即重建区域可以是1到n个超级块。因此,在修改2的顶部,如果一个超级块的左上角位置的坐标为(x0,y0),则当y <y0且x <x0 + 2时,IntraBC可以访问位置(x,y)的预测*(y0-y)-D,其中D表示受限立即重建区域。当D是一个超级块时,预测区域如下图所示。

    调色板模式

    暂无

    参考文献

    [1] J. Han, Y. Xu and D. Mukherjee, "A butterfly structured design of the hybrid

    transform coding scheme," 2013 Picture Coding Symposium (PCS), San Jose, CA,

    2013, pp. 17-20.\

    [2] J. Li, H. Su, A. Converse, B. Li, R. Zhou, B. Lin, J. Xu, Y. Lu, and R.

    Xiong, "Intra Block Copy for Screen Content in the Emerging AV1 Video Codec,"

    2018 Data Compression Conference, Snowbird, Utah, USA.\

    [3] S. Midtskogen and J.M. Valin. "The AV1 constrained directional enhancement

     filter (CDEF)." In 2018 IEEE International Conference on Acoustics, Speech

      and Signal Processing (ICASSP), pp. 1193-1197. IEEE, 2018.\

    [4] D. Mukherjee, S. Li, Y. Chen, A. Anis, S. Parker, and

    J. Bankoski. "A switchable loop-restoration with side-information framework

    for the emerging AV1 video codec." In 2017 IEEE International Conference on

    Image Processing (ICIP), pp. 265-269. IEEE, 2017.\

    [5] Y. Chen, D. Murherjee, J. Han, A. Grange, Y. Xu, Z. Liu,... & C.H.Chiang,

    (2018, June). "An overview of core coding tools in the AV1 video codec.""

    In 2018 Picture Coding Symposium (PCS) (pp. 41-45). IEEE.\

    [6] A. Norkin, & N. Birkbeck, (2018, March). "Film grain synthesis for AV1

    video codec." In 2018 Data Compression Conference (pp. 3-12). IEEE.

    展开全文
  • 第十一届蓝桥杯省赛 第一场试题 I: 字符串编码   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,...【问题描述】 小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大 写字

    第十一届蓝桥杯省赛 第一场试题 I: 字符串编码

      大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

    本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

    博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客


    在这里插入图片描述

    试题 I: 字符串编码

    时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分

    【问题描述】

    小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大

    写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →

    26。

    这样一个字符串就能被转化成一个数字序列:

    比如 ABCXYZ → 123242526。

    现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样

    的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字

    符串。

    【输入格式】

    一个数字序列。

    【输出格式】

    一个只包含大写字母的字符串,代表答案

    【样例输入】

    123242526

    【样例输出】

    LCXYZ

    【评测用例规模与约定】

    对于 20% 的评测用例,输入的长度不超过 20。

    对于所有评测用例,输入的长度不超过 200000。

    C++解法地址为:C/C++/Python描述 第十一届蓝桥杯省赛 第一场(2020.7.5) 试题 I: 字符串编码 题目+题解

    Python解法

    a = input()
    len = a.__len__()
    # 末尾加个字符,但是len还是之前的len,这样可以防止处理之后越界
    a = a + 'Z'
    i = 0
    re = ""
    while( i < len):
        temp = int(a[i]) * 10 + int(a[i+1])
        # 连续两个无法连续
        if(temp > 26):
            re = re + chr(int(a[i]) + 65 -1)
            i = i + 1
        else:
            re = re + chr(temp + 65 -1)
            i = i + 2
    print(re)
    
    展开全文
  • 在当前项目中历史原因,物料编码和物料描述都存在小写的问题,字段区分大小写的本质是所在域是否勾选大小写标识,勾选则区分,反之亦然,物料编码不区分大小写,物料描述区分大小写,但也有一个物料描...

     

    在当前项目中历史原因,物料编码和物料描述都存在小写的问题,字段区分大小写的本质是所在域是否勾选大小写标识,勾选则区分,反之亦然,物料编码不区分大小写,物料描述区分大小写,但也有一个物料描述字段不区分大小写,以MAKT为例看一下DD03M、DD01L可以得到以上结论:

    1、DD03M查看MAKT3个字段的域

    2、DD01L查看域区分大小写标识

     

    展开全文
  • Speex之二-编码描述及相关概念解析

    千次阅读 2012-04-24 17:01:09
    编码描述 这一章节将描述Speex更为详细特征 1. 概念 在介绍全部Speex特征之前,这里有一些语音编码的概念以帮助更好地理解本手册。虽然有一些是语音/音频处理的概念,其它是特殊于Speex的(译得怪怪的)  采样率 ...


    编码描述

    这一章节将描述Speex更为详细特征

    1. 概念

    在介绍全部Speex特征之前,这里有一些语音编码的概念以帮助更好地理解本手册。虽然有一些是语音/音频处理的概念,其它是特殊于Speex的(译得怪怪的)

     采样率

    采样率使用赫茲(hz)表示,是每一秒钟信号采样的个数。以采样率Fs kHz为例,其最高频率等于Fs/2 kHz(Fs/2 被称为Nyquist频率)。这是信号处理的基本属性,也通过采样定理被描述。Speex 主要被设计为三个不同的采样率:8kHz,16kHz,32kHz。这些分别称为窄带、宽带、超宽带。

     质量(可变的)

    Speex是一种有损编解码器,这意味着它压缩开支在输入语音信号的保真度。不像其它语音编解码器,Speex是可以权衡质量与比特率的。很多时候通过一个从0到10的质量参数来控制Speex编码器。在固定比特率(CBR)操作,质量参数是一个整形,而可变比特率(VBR)其质量参数为浮点型。

     复杂度(可变的)

    Speex编码器复杂度是可变的。这是用一个从1到10的整形来完成对它的控制,这类似于使用-1到-9设置gzip和bzip2压缩工具。复杂度1的噪声水平在1到2分贝之间要高于复杂度10,但复杂度10的CPU要求大约是复杂度1的5倍。在实践中,最好的折衷是在复杂度2到4,尽管当非讲话声音如DTMF,更高的设置经常是有用的。

     可变比特率(VBR)

    可变比特率允许一个编解码器根据不同的语音动态自适应地变化比特率。以Speex为例,声音像元音和高能量瞬时要求一个更高的比特率去达到好的质量,而编码摩擦音(如 s,f发音)会适当较少比特。因此VBR能达到在相同的质量下更低的比特率,或者在相同的比特率下更好的质量。尽管有以上的优点,但VBR有两个主要的缺点:一个是只能指定质量,但不能保证最终平均比特率。另一个是在一些实时应用中像VOIP,最大比特率必须满足通讯通道。

     平均比特率(ABR)

    平均比特率解决了VBR其中的一个问题,为了满足一个明确的目标比特率,用它来动态调节VBR质量。因为质量/比特率是实时调节的,所以全局质量将会稍微低于设置满足于目标平均比特率的VBR质量。

     语音活动性检测(VAD)

    当使能语音活动性检测功能,将检测被编码的语音是讲话或静音/背景噪声。当编码为VBR时VAD总是暗中活动,所以设置只在非VBR有效。在这种情况,Speex在检测非讲话周期和足够的比特率下重建背景噪声,这称为舒适噪声生成(GNG)

     间断传输(DTX)

    间断传输是除了VAD/VBR的一个操作,它允许当只有固定背景噪声时完全停止传输。在文本模式操作,由于我们不能停止写文件,所以每帧只能使用5比特(相当于250bps)

     感知加强

    感知加强是解码器的一部分,开启该功能时试图通过编码/解码处理降低噪声的感知。在很多情况下,感知加强从客观上会使声音与源声音相关更大(只从信噪比角度考虑),但最终声音从主观上会更好。

     延迟与算法延迟

    第一个语音编解码都会介绍传输的时延。Speex的时延等于一帧时间加上处理每一帧向前看需要的时间。窄带(8kHz)的时延是30ms,而宽带(16kHz)是34ms。这些值不计编码或解码所花费CPU的时间。

     3. 预处理器

    这部分参考预处理模型介绍1.1.x分支。预处理器的设计是运行于编码器之前的。预处理器提供了三个

    主要的功能:

    (1)噪声抑制(NS)

    (2)自动增益控制(AGC)

    (3)活动性检测(VAD)

                       插图1 回音消除模型

    噪声抑制(NS)

    噪声抑制器能被用于在发送之前降低输入信号的背景噪声的数量。提供更高质量的语音是否噪声抑制信号或者是根本。无论怎样使用降噪信号是有益的。一般语音编解码(包括Speex)对噪声输入的处理是不足的,会趋向于放大噪声。噪声抑制器很大地降低了这一影响。

     自动增益控制(AGC)

    自动增益控制是处理面对录音因为大量不同设置而导致音量变化。AGC提供了一种方式去调整参考音量。这在VOIP中是很有用的,因为不需再手动调节麦克风的增益。还有另外一个优点是麦克风增益在一个比较保守的水平,它更容易避免削波、失真。

     语音活动性检测(VAD)

    通过预处理提供的语音活动性检测(VAD)会比直接由编解码器提供的更为高级。

     4 自适应抖动缓冲

    当使用UDP或RTP传输语音时,包可能会有丢包、不同时延甚至错序。抖动缓冲的目的就是重排包和缓冲,它们是足够长的(但又不能超过所需),所以他们被发送去解码。

     5. 语音回音消除器

    在任何一个免提通讯系统中(插图1),远端的语音被本地场声播放,传播到整个房间并且被麦克风所采集。如果抓取麦克风的语音直接发送给麦克风,那么远端用户会听到他自己的回声。一个语音回音消除器的设计是在发送去远端之前移除回声。去理解回声消除器意味着改善远端质量是很重要的。

     6. 重采样

    有些情况,转换一个语音的采样率是很有用的。这有很多原因。比如,它能混合不合采样率的流,支持声卡不支持的采样率。这是为什么重采样是Speex工程的一部分。这个重采样能用于转换两个任意采样率(比例必须只能是有理数),而且可以通过权衡质量与复杂度去控制它。

     

     

    原文

    2 Codec description

    This section describes Speex and itsfeatures into more details.

     

    2.1 Concepts

    Before introducing all the Speex features,here are some concepts in speech coding that help better understand the rest ofthe manual. Although some are general concepts in speech/audio processing,others are specific to Speex.

     

    Sampling rate

    The sampling rate expressed in Hertz (Hz)is the number of samples taken from a signal per second. For a sampling rate ofFs kHz, the highest frequency that can be represented is equal to Fs/2 kHz(Fs/2 is known as the Nyquist frequency).

    This is a fundamental property in signalprocessing and is described by the sampling theorem. Speex is mainly designedfor three different sampling rates: 8 kHz, 16 kHz, and 32 kHz. These arerespectively refered to as narrowband, wideband and ultra-wideband.

     

    Bit-rate

    When encoding a speech signal, the bit-rateis defined as the number of bits per unit of time required to encode thespeech. It is measured in bits per second (bps), or generally kilobits persecond. It is important to make the distinction between kilobits per second(kbps) and kilobytes per second (kBps).

     

    Quality (variable)

    Speex is a lossy codec, which means that itachives compression at the expense of fidelity of the input speech signal.Unlike some other speech codecs, it is possible to control the tradeoff madebetween quality and bit-rate. The Speex encoding process is controlled most ofthe time by a quality parameter that ranges from 0 to 10. In constant bit-rate(CBR) operation, the quality parameter is an integer, while for variable bit-rate(VBR), the parameter is a float.

     

    Complexity (variable)

    With Speex, it is possible to vary thecomplexity allowed for the encoder. This is done by controlling how the searchis performed with an integer ranging from 1 to 10 in a way that’s similar to the-1 to -9 options to gzip and bzip2 compression utilities. For normal use, thenoise level at complexity 1 is between 1 and 2 dB higher than at complexity 10,but the CPU requirements for complexity 10 is about 5 times higher than forcomplexity 1. In practice, the best trade-off is between complexity 2 and 4,though higher settings are often useful when encoding non-speech sounds likeDTMF tones.

     

    Variable Bit-Rate (VBR)

    Variable bit-rate (VBR) allows a codec tochange its bit-rate dynamically to adapt to the “difficulty” of the audio beingencoded. In the example of Speex, sounds like vowels and high-energy transientsrequire a higher bit-rate to achieve good quality, while fricatives (e.g. s,fsounds) can be coded adequately with less bits. For this reason, VBR can achivelower bit-rate for the same quality, or a better quality for a certainbit-rate. Despite its advantages, VBR has two main drawbacks: first, by onlyspecifying quality, there’s no guaranty about the final average bit-rate.Second, for some real-time applications like voice over IP (VoIP), what countsis the maximum bit-rate, which must be low enough for the communicationchannel.

     

    Average Bit-Rate (ABR)

    Average bit-rate solves one of the problemsof VBR, as it dynamically adjusts VBR quality in order to meet a specifictarget bit-rate. Because the quality/bit-rate is adjusted in real-time(open-loop), the global quality will be slightly lower than that obtained byencoding in VBR with exactly the right quality setting to meet the target averagebit-rate.

     

    Voice Activity Detection (VAD)

    When enabled, voice activity detectiondetects whether the audio being encoded is speech or silence/background noise.VAD is always implicitly activated when encoding in VBR, so the option is onlyuseful in non-VBR operation. In this case, Speex detects non-speech periods andencode them with just enough bits to reproduce the background noise. This iscalled “comfort noise generation” (CNG).

     

    Discontinuous Transmission (DTX)

    Discontinuous transmission is an additionto VAD/VBR operation, that allows to stop transmitting completely when thebackground noise is stationary. In file-based operation, since we cannot juststop writing to the ?le, only 5 bits are used for such frames (corresponding to250 bps).

     

    Perceptual enhancement

    Perceptual enhancement is a part of thedecoder which, when turned on, attempts to reduce the perception of thenoise/distortion produced by the encoding/decoding process. In most cases,perceptual enhancement brings the sound further from the

    original objectively (e.g. considering onlySNR), but in the end it still sounds better (subjective improvement).

     

    Latency and algorithmic delay

    Every speech codec introduces a delay inthe transmission. For Speex, this delay is equal to the frame size, plus someamount of “look-ahead” required to process each frame. In narrowband operation(8 kHz), the delay is 30 ms, while for wideband (16kHz), the delay is 34 ms.These values don’t account for the CPU time it takes to encode or decode theframes.

     

    3. Preprocessor

    This part refers to the preprocessor moduleintroduced in the 1.1.x branch. The preprocessor is designed to be used on theaudio before running the encoder. The preprocessor provides three mainfunctionalities:

    • noise suppression

    • automatic gain control (AGC)

    • voice activity detection (VAD)

     

    The denoiser can be used to reduce theamount of background noise present in the input signal. This provides higherquality speech whether or not the denoised signal is encoded with Speex (or atall). However, when using the denoised signal with the codec, there is anadditional benefit. Speech codecs in general (Speex included) tend to performpoorly on noisy input, which tends to amplify the noise. The denoiser greatlyreduces this effect.

     

    Automatic gain control (AGC) is a featurethat deals with the fact that the recording volume may vary by a large amountbetween different setups. The AGC provides a way to adjust a signal to areference volume. This is useful for voice over IP because it removes the needfor manual adjustment of the microphone gain. A secondary advantage is that bysetting the microphone gain to a conservative (low) level, it is easier toavoid clipping.

     

    The voice activity detector (VAD) providedby the preprocessor is more advanced than the one directly provided in thecodec.

     

     

    2.4  Adaptive Jitter Buffer

    When transmitting voice (or any content forthat matter) over UDP or RTP, packet may be lost, arrive with differentdelay,or even out of order. The purpose of a jitter buffer is to reorderpackets and buffer them long enough (but no longer than necessary) so they can besent to be decoded.

     

    2.5 Acoustic Echo Canceller

    In any hands-free communication system(Fig. 2.1), speech from the remote end is played in the local loudspeaker,propagates in the room and is captured by the microphone. If the audio capturedfrom the microphone is sent directly to the remote end,then the remove userhears an echo of his voice. An acoustic echo canceller is designed to removethe acoustic echo before it is sent to the remote end. It is important tounderstand that the echo canceller is meant to improve the quality on theremote end.

     

    2.6 Resampler

    In some cases, it may be useful to convertaudio from one sampling rate to another. There are many reasons for that. Itcan be for mixing streams that have different sampling rates, for supportingsampling rates that the soundcard doesn’t support, for transcoding, etc. That’swhy there is now a resampler that is part of the Speex project. This resamplercan be used to convert between any two arbitrary rates (the ratio must only bea rational number) and there is control over the quality/complexity tradeoff。

     

     

    展开全文
  • 文章目录数据校验字符编码本质字符编码类别介绍多媒体格式 本篇主要是对计算机常识中的信息编码方面的知识进行学习的总结的第二部分 上一篇传送门 数据校验 后面再补齐 字符编码 本质 计算机存储介质中实际存储的都...
  • 哈夫曼编码

    万次阅读 2016-05-20 18:25:26
    哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为...
  • Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道) 可以在非地图视图下直接获取,只要传入当前位置的经纬度 当然也可以在地图模式下获取详细信息 在非第三方地图集成下(系统自带功能)获取当前位置...
  • 编码:算术编码

    万次阅读 2020-02-10 11:29:53
    算术编码不是简单的将每个信源符号映射成一个码字,而是对整个输入序列分配一个码字,所以平均意义上可以为每个信源符号分配长度小于1的码字。 算术编码操作简单,下面以一个实例讲解算术编码的原理: 设信源有a,b...
  • 格雷编码

    千次阅读 2016-06-01 12:55:20
    题目描述:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖...
  • 地理编码

    千次阅读 2019-01-23 22:43:47
    地理编码是指将坐标对、地址或地名等位置描述转换为地球表面上某位置的过程。 2.地理编码与逆地理编码的比较。 3.地理编码的过程 ① 构建或获取参考数据 ② 确定地址定位器样式 ③ 构建地址定位器 ④ ...
  • matlab实现DPCM编码和游长编码

    千次阅读 2017-01-12 13:06:01
    一、问题描述   使用matlab实现对lena灰度图像和二值图像的DPCM编码和解码,以及游长编码的实现。   二、问题分析 在进行编码之前,首先应该理解两种编码方式的原理、过程,梳理好之后再落实到代码上。 将...
  • 编码

    千次阅读 多人点赞 2019-07-04 16:49:57
    编码器是一种机电装备, 可以用来测量机械运动或者目标位置。 大多数编码器都使用光学传感器来提供脉冲序列形式的电信号, 这些信号可以依次转换成运动、方向或位置信息。 编码器依运动方式可分为旋转编码器或是线性...
  • Python 中文编码

    千次阅读 2016-09-08 23:15:47
    现象描述我们用 Python 输出 “Hello, World!”,英文没有问题,但是如果你输出中文字符”你好,世界”就有可能会碰到中文编码问题。Python 文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/python print ...
  • CSDN GitHub Ubuntu下apache的安装与配置 AderXCoding/system/tools ...1. 问题描述–(linux下经常遇到的编码问题)师兄在 windows 下写的一段程序(C/C++ 编写), 传给我在 Linux 下面运行, 编译和运行的时候输出
  • 信源编码与信道编码

    万次阅读 多人点赞 2017-03-26 17:02:44
    但现代通信应用中常见的信源编码方式有:Huffman编码、算术编码、L-Z编码,这三种都是无损编码,另外还有一些有损的编码方式。信源编码的目标就是使信源减少冗余,更加有效、经济地传输,最常见的应用形式就是压缩。...
  • 我的 Python 编码规范

    万次阅读 多人点赞 2018-12-11 16:35:19
    说起编码规范,很文章都会提到PEP8这个规范。PEP是Python Enhancement Proposal(Python 增强建议书)的简写。PEP8整个文档引用了很其他标准,看起来挺复杂的,我从来没有完整读下来过。好在龟叔说过,A Foolish...
  • 信源编码和信道编码

    千次阅读 2018-12-06 15:14:59
    但现代通信应用中常见的信源编码方式有:Huffman编码、算术编码、L-Z编码,这三种都是无损编码,另外还有一些有损的编码方式。信源编码的目标就是使信源减少冗余,更加有效、经济地传输,最常见的应用形式就是压缩。...
  • 视频压缩编码和音频压缩编码的基本原理

    万次阅读 多人点赞 2014-06-03 00:01:20
    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。
  • prufer编码

    万次阅读 2017-08-25 09:28:45
    prufer编码是用另外一种形式来描述一棵树,这棵树是无根树,它可以和无根树之间形成一一对应关系。 编码方式是: 这是一颗无根树,这课树的prufer编码为5,5,4,4,4,6。 首先选这棵树叶子中编号最小的点,将这...
  • 高德地理编码和逆地理编码区别

    千次阅读 2016-05-27 09:13:42
    地理编码又称地址匹配,指的是从已知的地址描述到对应的经纬 度坐标的转换,即根据地址信息,获取地址所对应的点坐标等。 逆地理编码即地址解析服务,具体是指从已知的经纬度坐标到对 应的地址描述(如省市、街区、...
  • 稀疏编码

    千次阅读 2013-02-03 14:31:37
    而每个神经元对这些刺激的表达则采用了稀疏编码(Sparse Coding, SC)原则,将图像在边缘、端点、条纹等方面的特性以稀疏编码的形式进行描述.从数学的角度来说,稀疏编码是一种多维数据描述方法,数据经稀疏编码后仅有...
  • url完整编码,防止冒号被编码

    千次阅读 2015-06-05 18:33:14
    问题描述:有时候我们需要将一整条url编码,但如果直接整体编码的话,冒号都会被编码; 例如:http://192.168.1.85:8080/Files/1\\Paper\\2015-06-05\\150602 高分子网站论文投稿BUG-20150605164633294.doc这条字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 611,441
精华内容 244,576
关键字:

多描述编码