CN104735460A - 视频图像采样点自适应偏移处理方法及装置 - Google Patents

视频图像采样点自适应偏移处理方法及装置 Download PDF

Info

Publication number
CN104735460A
CN104735460A CN201310722073.7A CN201310722073A CN104735460A CN 104735460 A CN104735460 A CN 104735460A CN 201310722073 A CN201310722073 A CN 201310722073A CN 104735460 A CN104735460 A CN 104735460A
Authority
CN
China
Prior art keywords
self adaptation
sampled point
video image
pixel
point self
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310722073.7A
Other languages
English (en)
Other versions
CN104735460B (zh
Inventor
李洁珺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201310722073.7A priority Critical patent/CN104735460B/zh
Publication of CN104735460A publication Critical patent/CN104735460A/zh
Application granted granted Critical
Publication of CN104735460B publication Critical patent/CN104735460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视频图像采样点自适应偏移处理方法及装置。其中方法包括如下步骤:以视频图像当前编码树单元的一个角为基准,偏移预设数量的像素点后,构成与当前编码树单元大小相同的当前编码树处理单元;将当前编码树处理单元划分为每列包含第三数目像素点的多个列;以当前编码树处理单元的偏移角的像素作为起点,计算第一行每个像素点的采样点自适应偏移;计算第一行的下一行所有像素点的采样点自适应偏移,直至完成当前列的所有像素点的采样点自适应偏移,并转计算当前列的下一列的每一行的所有像素点的采样点自适应偏移,直至完成当前编码树处理单元的所有像素点的采样点自适应偏移。其可用硬件实现SAO计算,有利于视频图像实时性的需求。

Description

视频图像采样点自适应偏移处理方法及装置
技术领域
本发明涉及视频图像处理领域,尤其涉及一种视频图像采样点自适应偏移处理方法及装置。
背景技术
随着数字视频应用产业链的快速发展,视频应用不断向高清晰度、高帧率、高压缩率方向发展的趋势愈加明显,当前主流的视频压缩标准协议H.264(AVC)的局限性不断凸显。为了面对以上发展趋势,2010年1月,ITU-T VCEG(VideoCoding Experts Group)和ISO/IEC MPEG(Moving Picture Experts Group)联合成立JCT-VC(Joint Collaborative Team on Video Coding)的联合组织,统一制定下一代编码标准:HEVC(High Efficiency Video Coding,又称为H.265视频压缩标准),该协议标准于2013年1月正式在业界发布。
SAO(Sample Adaptive Offset,采样点自适应偏移)为H.265视频压缩标准中新提出的一项技术方案,位于H.265编解码环路内、Deblock(去除块效应)滤波之后,通过对重建图像的分类,对每一类图像像素值加减一个偏移,达到减少失真的目的,从而提高压缩率,减少码流。采用SAO后,平均可以减少2%~6%的码流,而编码器和解码器的性能消耗仅仅增加了约2%。此技术是下一代视频压缩标准中新提案的一项专有技术算法,目前开源的代码给出了C语言下的软件实现方法。
然而对于视频编解码的实时性需求,采用硬件电路设计是其必然趋势。而当前还没有一种适合于硬件实现的计算方法或硬件结构。
发明内容
基于此,有必要提供一种适用于硬件实现的视频图像采样点自适应偏移处理方法及装置。
为实现本发明目的提供的一种视频图像采样点自适应偏移处理方法,其特征在于,包括以下步骤:
以视频图像当前编码树单元的一个角为基准,偏移预设数量的像素点后,构成与所述当前编码树单元大小相同的当前编码树处理单元;
将所述当前编码树处理单元划分为每列包含第三数目像素点的多个列;
以所述当前编码树处理单元的偏移角的像素作为起点,读取所述偏移角的像素所在列的第一行所有每个像素点及所述每个像素点周围相邻的八个像素点的参数值,并计算每个像素点的采样点自适应偏移;
计算所述第一行的下一行所有像素点的采样点自适应偏移,直至完成当前列的所有像素点的采样点自适应偏移,并转计算所述当前列的下一列的每一行的所有像素点的采样点自适应偏移,直至完成所述当前编码树处理单元的所有像素点的采样点自适应偏移。
作为一种视频图像采样点自适应偏移处理方法的可实施方式,所述偏移预设数量的像素点包括如下步骤:
亮度区块向所述当前编码树单元的第一边偏移第一数目像素点,向所述第一边的临边偏移第二数目像素点;色度区块向所述当前编码树单元的第一边偏移二分之一第一数目像素点,向所述第一边的临边偏移二分之一第二数目像素点。
作为一种视频图像采样点自适应偏移处理方法的可实施方式,所述第一数目等于第二数目等于第三数目为四。
作为一种视频图像采样点自适应偏移处理方法的可实施方式,计算像素点的采样点自适应偏移包括以下步骤:
读取所述像素点的标志信息,当所述标志信息为第一类型标志时,当前像素点不计算采样点自适应偏移;
当所述标志信息为第二类型时,根据当前像素点的带位置参数和当前像素点右移3比特后的值确定当前像素点的采样点自适应偏移;
当所述标志信息为第三类型时,根据当前像素周围相邻的八个像素点的参数值确定当前像素点的采样点自适应偏移。
基于相同发明构思的一种视频图像采样点自适应偏移处理装置,包括控制模块、计算模块、存储接口模块及存储模块,其中:
所述控制模块与所述计算模块及所述存储模块电连接,用于接收所述计算模块的状态信息,发送控制信号到所述计算模块及所述存储模块;
所述计算模块与所述控制模块及所述存储模块电连接,用于计算视频图像像素点的采样点自适应偏移,并与所述存储模块进行数据存取;
所述存储接口模块与所述控制模块及所述存储模块电连接,用于根据所述控制模块的控制指令完成对存储模块的读写控制;
所述存储模块与所述计算模块及所述存储接口模块电连接,用于存储采样点自适应偏移计算相关的参数及计算结果。
作为一种视频图像采样点自适应偏移处理装置的可实施方式,所述存储模块包括标志信息存储子模块、邻域信息存储子模块、滤波重构值存储子模块及结果存储子模块,其中:
所述标志信息存储子模块,用于存储视频图像中每个编码单元是否需要做采样点偏移计算的标志信息;
所述邻域信息存储子模块,用于存储当前编码树单元相邻编码树单元的信息;
所述滤波重构值存储子模块,用于存储已得到的视频图像的滤波重构值;
所述结果存储子模块,用于存储计算得到的视频图像的采样点自适应偏移。
作为一种视频图像采样点自适应偏移处理装置的可实施方式,所述邻域信息存储子模块存储当前编码树单元上一行编码树单元的信息,当前编码树单元左边的一个编码树单元的信息,以及当前编码树单元左上角的一个编码树单元的信息。
作为一种视频图像采样点自适应偏移处理装置的可实施方式,所述计算模块包括四个像素点采样点自适应偏移计算单元,可同时计算四个像素点的采样点自适应偏移。
作为一种视频图像采样点自适应偏移处理装置的可实施方式,所述滤波重构值存储子模块和所述结果存储子模块每个地址存放视频图像中同一行连续16个像素的信息。
作为一种视频图像采样点自适应偏移处理装置的可实施方式,所述标志信息存储子模块、邻域信息存储子模块、滤波重构值存储子模块及结果存储子模块各为一块固态存储单元。
本发明的有益效果包括:
本发明提供的一种视频图像采样点自适应偏移处理方法及装置,对当前CTU位置进行适当像素点的偏移之后计算偏移后区域的SAO,整个计算过程可完全使用硬件实现,有利于实现视频图像实时性的需求。其装置可以置于原有的基于CTU的deblock功能模块之后使用,满足硬件资源的需求,易于集成。
附图说明
图1为本发明一种视频图像采样点自适应偏移处理方法的一具体实施例的流程图;
图2为本发明一种视频图像采样点自适应偏移处理方法的一具体实施例中读取像素点示意图;
图3为本发明一种视频图像采样点自适应偏移处理方法的一具体实施例中一偏移量索引参数求取电路图;
图4为本发明一种视频图像采样点自适应偏移处理方法的一具体实施例中另一偏移量索引参数求取电路图;
图5为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例的系统结构示意图;
图6为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例的参数存数示意图;
图7为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中标志信息存储子模块存储示意图;
图8为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中邻域信息存储子模块存储示意图;
图9为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中SAO计算亮度区块列划分示意图;
图10为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中SAO计算色度区块列划分示意图;
图11为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中双数型控制时序示意图;
图12为本发明一种视频图像采样点自适应偏移处理装置的一具体实施例中单数型控制时序示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例的视频图像采样点自适应偏移处理方法的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的视频图像采样点自适应偏移处理方法,如图1所示,包括以下步骤:
S100,以视频图像当前编码树单元(coding tree unit,CTU)的一个角为基准,偏移预设数量的像素点后,构成与所述当前编码树单元大小相同的当前编码树处理单元。对于每一要进行处理的编码树单元,在处理过程中向其左上方做一定的偏移得到当前编码树处理单元。所述当前编码树处理单元的大部分为当前编码树单元中的像素,还包括其上方CTU,左方CTU,以及左上方CTU中的部分像素。而当前CTU中剩余的部分像素点留待后续其他CTU采样点自适应偏移(Sample Adaptive Offset,SAO)中计算。
S200,将所述当前编码树处理单元划分为每列包含第三数目像素点的多个列。例如可设置每列中每行可包含4个像素、8个像素,或者更多。
S300,以所述当前编码树处理单元的偏移角的像素作为起点,读取所述偏移角的像素所在列的第一行所有每个像素点及所述每个像素点周围相邻的八个像素点的参数值,并计算每个像素点的采样点自适应偏移。所述参数值为进行SAO计算前已经获得的视频图像像素点的滤波重构值。所述偏移角是指当前CTU作为偏移基准的角偏移之后对应的角。
S400,计算所述第一行的下一行所有像素点的采样点自适应偏移,直至完成当前列的所有像素点的采样点自适应偏移,并转计算所述当前列的下一列的每一行的所有像素点的采样点自适应偏移,直至完成所述当前编码树处理单元的所有像素点的采样点自适应偏移。计算当前行的SAO之后,对已计算出的参数进行存储,以便后续计算中用作参考。且用于硬件实现时,已读取的像素行的信息可用于下一行的像素点SAO的计算。当前CTU的SAO计算完成之后继续计算后续的CTU的SAO,直至完成视频图像所有像素点的SAO计算。
本发明实施例的视频图像采样点自适应偏移处理方法,对当前CTU位置进行适当像素点的偏移之后计算偏移后区域的SAO,整个计算过程可完全使用硬件实现,有利于实现视频图像实时性的需求。
在其中一个视频图像采样点自适应偏移处理方法的实施例中,所述偏移预设数量的像素点包括如下步骤:
亮度区块向所述当前编码树单元的第一边偏移第一数目像素点,向所述第一边的临边偏移第二数目像素点;色度区块向所述当前编码树单元的第一边偏移二分之一第一数目像素点,向所述第一边的临边偏移二分之一第二数目像素点。
本发明实施例的处理过程以一个CTU为单位,重复对整幅图像的所有CTU进行相同的处理便可计算出整帧视频图像的SAO结果。每个CTU包含一个亮度luma单元以及对应的两个色度单元cb、cr。根据编码图像规格,一副图像的CTU尺寸是固定值,亮度单元可取64x64、32x32、16x16大小,对应在4:2:0采样图像下的色度单元为32x32、16x16、8x8大小。因此进行偏移时亮度区块偏移的像素点多于色度区块偏移的像素点数。
在其中一个视频图像采样点自适应偏移处理方法的实施例中,所述第一数目等于第二数目为四。本发明实施例针对利于硬件实现的方式,以CTU为工作单元进行SAO计算,整体在硬件deblock模块后面而方便使用,所以采取了亮度每次计算当前CTU及其左边、上边各扩展四像素邻域值、色度每次扩展两像素邻域值的方式;如果不考虑配合deblock模块,而单独完成SAO计算功能的话,可以设计成扩展任意像素的邻域值也是类似的做法。
较佳地,在其中一个视频图像采样点自适应偏移处理方法的实施例中,所述第三数目为四。
在其中一个视频图像采样点自适应偏移处理方法的实施例中,计算像素点的采样点自适应偏移包括以下步骤:
S101,读取所述像素点的标志信息,当所述标志信息为第一类型标志时,当前像素点不计算采样点自适应偏移。
S102,当所述标志信息为第二类型时,根据当前像素点的带位置参数和当前像素点右移3比特后的值确定当前像素点的采样点自适应偏移。
S103,当所述标志信息为第三类型时,根据当前像素周围相邻的八个像素点的参数值确定当前像素点的采样点自适应偏移。
例如,如图2所示,待计算SAO的点称为pix_0,其输入的3x3像素点分别称为pix_a、pix_b、pix_c、pix_g、pix_0、pix_1、pix_i、pix_j、pix_k。当SaoTypeIdx[cIdx]=0时,当前pix_0不做SAO计算、当SaoTypeIdx[cIdx]=1时,使用bandidx作为SaoOffsetVal[cIdx][idx]的idx索引、当SaoTypeIdx[cIdx]=2时,使用edgeidx作为SaoOffsetVal[cIdx][idx]的idx索引,pix_0的SAO结果=pix_0+SaoOffsetVal[cIdx][idx]。然后对这个结果限定到[0,255]之间即可得到pix_0的SAO结果。
下面需要分别求出bandidx或者edgeidx的值。
(a)求bandidx
bandidx的求法采取图3所示的电路图实现。
使用pix_0经过右移3bit后的值与sao_band_position[cIdx]的差值,作为选择器的选通select信号选出bandidx的取值,选取规律:如果差值小于0,则bandidx=0,否则(差值大于等于0),当差值等于0时,bandidx=1;差值等于1时,bandidx=2;差值等于2时,bandidx=3;差值等于3时,bandidx=4;其他差值时bandidx=0。
(b)求edgeidx
edgeidx的求法采取图4所示的电路图实现。
首先根据SaoEoClass[cIdx]的取值使用选择器选取pix_0的pix0_l(图中选择器MUX0)、pix0_r(图中选择器MUX1)值,根据H.265标准中定义的SaoEoClass与偏移值位置关系如表1所示,当SaoEoClass[cIdx]=0时,pix0_l=pix_g,pix0_r=pix_1;当SaoEoClass[cIdx]=1时,pix0_l=pix_b,pix0_r=pix_j;当SaoEoClass[cIdx]=2时,pix0_l=pix_a,pix0_r=pix_k;当SaoEoClass[cIdx]=3时,pix0_l=pix_c,pix0_r=pix_i;使用pix0_l、pix0_r分别与pix_0做减法,获取其符号位,送入图中选择器MUX2,当两者同为正数时(sign(diff_l)=sign(diff_r)=0),edgeidx_t=4;当两者同为负数时(sign(diff_l)=sign(diff_r)=1),edgeidx_t=0;否则edgeidx_t=2。如果edgeidx_t等于2,则最终edgeidx=0,否则最终edgeidx=edgeidx_t+1。
SaoEoClass[cIdx] 0 1 2 3
hPos[0] -1 0 -1 1
hPos[1] 1 0 1 -1
vPos[0] 0 -1 -1 -1
vPos[1] 0 1 1 1
基于同一发明构思,还提供一种视频图像采样点自适应偏移处理装置,由于此装解决问题的原理与前述一种方法相似,如图5所示,包括控制模块100、计算模块200、存储接口模块300及存储模块400,其中:
所述控制模块100与所述计算模块200及所述存储模块400电连接,用于接收所述计算模块200的状态信息,发送控制信号到所述计算模块200及所述存储模块400。
所述计算模块200与所述控制模块100及所述存储模块400电连接,用于计算视频图像像素点的采样点自适应偏移,并与所述存储模块400进行数据存取。
所述存储接口模块300与所述控制模块100及所述存储模块400电连接,用于根据所述控制模块100的控制指令完成对存储模块400的读写控制。
所述存储模块400与所述计算模块200及所述存储接口模块300电连接,用于存储采样点自适应偏移计算相关的参数及计算结果。
本发明实施例采用硬件实现对视频图像的SAO计算,适用于H265解码标准和编码标准的最后SAO计算,对当前CTU位置进行适当像素点的偏移之后计算偏移后区域的SAO,整个计算过程可完全使用硬件实现,有利于实现视频图像实时性的需求。其装置可以置于原有的基于CTU的deblock功能模块之后使用,满足硬件资源的需求,易于集成。
较佳地,在其中一个视频图像采样点自适应偏移处理装置的实施例中,所述存储模块400包括标志信息存储子模块410、邻域信息存储子模块420、滤波重构值存储子模块430及结果存储子模块440,其中:所述标志信息存储子模块410,用于存储视频图像中每个编码单元是否需要做采样点偏移计算的标志信息;所述邻域信息存储子模块420,用于存储当前编码树单元相邻编码树单元的信息;所述滤波重构值存储子模块430,用于存储已得到的视频图像的滤波重构值;所述结果存储子模块440,用于存储计算得到的视频图像的采样点自适应偏移。
较佳地,在其中一个视频图像采样点自适应偏移处理装置的实施例中,所述邻域信息存储子模块420存储当前编码树单元上一行编码树单元的信息,当前编码树单元左边的一个编码树单元的信息,以及当前编码树单元左上角的一个编码树单元的信息。
在其中一个视频图像采样点自适应偏移处理装置的实施例中,所述计算模块200包括四个像素点采样点自适应偏移计算单元,可同时计算四个像素点的采样点自适应偏移。
在其中一个视频图像采样点自适应偏移处理装置的实施例中,所述滤波重构值存储子模块430和所述结果存储子模块440每个地址存放视频图像中同一行连续16个像素的信息。
在其中一个视频图像采样点自适应偏移处理装置的实施例中,所述标志信息存储子模块410、邻域信息存储子模块420、滤波重构值存储子模块430及结果存储子模块440各为一块固态存储单元。
在其中一个实施例中,包含了上述各实施例的细节步骤。下面进行详细的说明。
在本实施例的视频图像采样点自适应偏移处理装置中包含控制单元(相当于前述的控制模块)、计算单元(相当于前述的计算模块)、存储接口单元(相当于前述的存储接口模块)以及外挂四块存储单元(相当于四个固态存储单元)。
四块固态存储单元,分别命名为bf_buf、neigh_buf、cur_buf、sao_buf。其中bf_buf为每个8x8小cu单元是否需要做SAO计算的标志信息;neigh_buf用于存储用于计算过程中的一些输入信息的邻域值,以便在CTU结构中左邻域和上邻域做SAO计算时使用;cur_buf为本模块的输入滤波重构值;sao_buf用于存储本模块的SAO输出结果。
cur_buf与sao_buf的存储地址规律相同,如图6所示,实线框为当前CTU的地址排列规律;虚线框是当前做SAO计算的像素范围(它包括一部分左边邻域和上边邻域的像素值,同时对当前CTU也有一部分最右边像素和最下面像素不做计算,留作后续的CTU计算);对于邻域像素的存储地址如图示中标示。
如图7所示,bf_buf中存储的是SAO计算过程中所需要的每个8x8小CU单元是否需要做SAO计算的标志信息。因为H.265标准中CU的划分最小为8x8大小,当然也会存在其他划分规律,所以这里以8x8为单位记录这些标志信息是完全足够的,如果真实的CU大于8x8大小,则在对应8x8位置写同样的值即可。所处物理位置可以见图示中标注位置,这个标志位包含的信息对应于H.265标准中以下三个方面:
(1)pcm_loop_filter_disabled_flag及pcm_flag都为1
(2)cu_transquant_bypass_flag为1
(3)当前CTU的邻域无效(不为同一个slice或tile、或在图像范围外)
其中(1)~(2)都可以由对应CU的码流解码得到,(3)可以根据当前CTU所处的物理位置以及周围邻域所处slice、tile标志获取,在这里都认为是SAO模块的输入已知量。
如图8所示,neigh_buf主要用于存储上邻域、左邻域以及左上邻域的计算输入值,其中包括这些邻域位置的SaoTypeIdx、SaoEoClass、sao_band_position、SaoOffsetVal取值(这些信息的含义可见后续计算过程详细描述)。neigh_buf的每个地址单元存储一个CTU的这些值(将这些需要记录的信息按照一定顺序对应排列到每个bit位中即可,经过计算存储这些信息所需位宽为49bit);由于每个地址代表一个CTU,所以此存储器深度为一行的CTU数量+2。例如1080p分辨率的图像,CTU大小为64x64,则一行有30个CTU,那么neigh_buf大小为32x49bit;其中前30个地址用于存储当前CTU上一行30个CTU的信息(图8中0~m)、31地址用于存储当前CTU左边那个CTU的信息(图8中m+1)、32地址用于存储当前CTU左上角那个CTU的信息(图8中m+1)。其他分辨率以及CTU大小划分不同时可类似推算出neigh_buf的大小。
计算模块的详细计算流程如下:
SAO的计算过程分为亮度luma块和两个色度cb、cr块,它们顺序进行,先做当前CTU的亮度部分再做cb、最后是cr。亮度与色度块分别按照每四个像素组成的列方向进行计算,如图9所示为亮度的列划分、图10为色度的列划分(cb与cr相同处理,重复进行两次即可)。
图9中实线方框为当前CTU的亮度像素范围、虚线方框表示当前CTU用于计算亮度SAO值的像素范围(分别向左边邻域使用四列像素、向上边邻域使用四行像素;同时当前CTU亮度块的最下面四行像素、最右边四列像素值不做SAO计算,留待后续CTU时计算)。其中图示最上方用数字0~f标明了每四个像素组成的十六个列划分。结合图10中SAO结果的存放地址规律,这个sram的位宽为128bit,也即是每个地址单元可以存放16个像素(按每像素8bit图像计算而得)、每列在水平方向同时计算四个像素值,故四列的同一水平方向16个像素保存于同一个地址单元中,这16个像素的排列顺序如图9最左下方扩展示意。
图10示意的色度块也与上述的亮度单元类似,实线方框为当前CTU的cb或cr色度像素范围、虚线方框表示当前CTU用于计算色度SAO值的像素范围(分别向左边邻域使用两列像素、向上边邻域使用两行像素,同时当前CTU色度块的最下面两行像素、最右边两列像素值不做SAO计算,留待后续CTU时计算)。其中图示最上方用数字0~7标明了每四个像素组成的八个列划分。像素的存放规律同亮度一样,也是每个地址单元存放128bit(即16个像素值)。
每一个上述用自然数标注的四像素列,都采用同样的计算控制方式,按照所标注数字的自然顺序计算即可得出整个CTU的SAO结果。
对于CTU大小为64x64的视频图像,亮度块的每个四像素列由64行组成、色度块的每个四像素列由32行组成。每个四像素行如图2中所示,其中0~3表示当前四像素行的四个像素,数字周围的a~n英文字母标注的像素位置是用于计算当前四个像素0~3所需要的周围邻域像素。
观察计算四个像素所需要的邻域像素值,对于垂直方向,因为是采用列为单位做计算,所以可以连续流水的读取当前列中的每行像素,不用重复读取行便可以顺序计算(例如当前计算所需的邻域行“i、j、k、l、m、n”在下一行时就变成了计算行“g、0、1、2、3、h”,以此类推形成流水)。
但是对于水平方向所需像素值,正因为计算当前列中的每行四个像素还需要左右邻域像素,所以结合图6中像素存放地址规律,在图9中的各种列,被分成了两种类型:类型一,为列0、1、4、5、8、9、c、d,列中的每行四像素需要水平方向读取两个地址单元才能获取当前四像素值及其左右邻域值(将这种类型称为“双数型”列);类型二,为列2、3、6、7、a、b、e、f,列中的每行四像素只需要在水平方向读取一个地址单元便可获取当前四像素及其左右邻域值(将这种类型称为“单数型”列)。
“双数型”列以图9中列0为例,图11为该列的控制信号生成方式示意:cur_rd为高电平时表示读取cur_buf中的重构输入像素,cur_rd下方的数字表示每个时钟周期发出的读地址值(可以结合图6看到地址对应的位置);因为从存储器读回数据需要一个时钟周期的延迟,所以自cur_rd发出控制读使能以及对应的读地址后,延迟一拍开始获取对应位置的输入数据用于计算;calc_line表示当前可以计算的这个列中的哪个四像素行(共64个四像素行,使用0~63标注)、当calc_ok为高电平时表示计算结果有效。如图11,首先需要发出读地址416+384、417+388、418+392后才算获取了计算第一个四像素行calc_line=0的所有像素值(即图7中每个四像素行所需要的所有像素),后面只需要再多读419+396的数据,便可以获取计算第二个四像素行calc_line=1的所有像素值(包括417+388、418+392、419+396,其中前两者在计算calc_line=0时已经获取,流水保存即可使用),以此类推,便可流水计算64行四像素值。
“单数型”列以图9中列2为例,图9为该列的控制信号生成方式示意:cur_rd、calc_line、calc_ok的含义同上,在此不再冗述。如图12,首先需要发出读地址384、388、392后才算获取了计算第一个四像素行calc_line=0的所有像素值(即图2中每个四像素行所需要的所有像素),后面只需要再多读396的数据,便可以获取计算第二个四像素行calc_line=1的所有像素值(包括388、392、396,其中前两者在计算calc_line=0时已经获取,流水保存即可使用),以此类推,便可流水计算64行四像素值。
计算模块,也称sao_calc模块,完成针对图2的设计,完成每个四像素行的SAO计算。CTU中的每个四像素列反复的调用sao_calc模块中四像素计算过程,就可以在calc_ok为高电平时获取各个四像素值的SAO结果,对应写入sao_buf就可以记录得到整个CTU的结果。
下面详细介绍sao_calc模块的设计:
计算模块计算SAO所需要的输入已知量包括:SaoTypeIdx[cIdx][rx][ry]、SaoEoClass[cIdx][rx][ry]、sao_band_position[cIdx][rx][ry]、SaoOffsetVal[cIdx][rx][ry][idx]几个多维数组,它们皆可以从码流中解码得到。其含义与H.265视频编解码标准文档中相同。其中cIdx=0表示亮度luma的值、cIdx=1表示色度cb的值、cIdx=2表示色度cr的值;[rx][ry]指示当前CTU在整个图像中所处的位置,使用[rx-1][ry]表示当前CTU左边那个CTU的值、使用[rx][ry-1]表示当前CTU上面那个CTU的值、使用[rx-1][ry-1]表示当前CTU左上角那个CTU的值,这些邻域值已如neigh_buf介绍中那样保存于固态存储器中,只需要在整个CTU计算的开始,将其对应邻域位置的值读入便可使用,在此不多冗述。在本发明实施例中使用SaoTypeIdx[cIdx]、SaoEoClass[cIdx]、sao_band_position[cIdx]、SaoOffsetVal[cIdx][idx]表示,对于CTU的位置信息在文字中给予忽略,认为在计算某一个四像素行时,已经为其分配好对应CTU位置的这些值(因为会涉及到左边邻域和上边邻域或者左上方邻域像素的SAO计算,所以在对应位置的四像素做计算时,需要分配给他们对应邻域的这些值即可)。
如图2中每行四个像素0~3,将其分别送入四个计算PE单元(PE0~PE3),每个PE的输入为3x3块、可以计算得到一个像素点的SAO结果。PE0用于计算像素0,其输入3x3块为为a、b、c、g、0、1、i、j、k位置的九个像素点的重构滤波值,输出为像素0的SAO结果;PE1用于计算像素1,其输入3x3块为为b、c、d、0、1、2、j、k、l位置的九个像素点的重构滤波值,输出为像素1的SAO结果;PE2用于计算像素2,其输入3x3块为为c、d、e、1、2、3、k、l、m位置的九个像素点的重构滤波值,输出为像素2的SAO结果;PE3用于计算像素3,其输入3x3块为为d、e、f、2、3、h、l、m、n位置的九个像素点的重构滤波值,输出为像素3的SAO结果。
下面以PE0为例,说明每个PE的计算过程。
待计算SAO的点称为pix_0,即2中0的位置,其输入的3x3像素点分别称为pix_a、pix_b、pix_c、pix_g、pix_0、pix_1、pix_i、pix_j、pix_k。
当SaoTypeIdx[cIdx]=0时,当前pix_0不做SAO计算、当SaoTypeIdx[cIdx]=1时,使用bandidx作为SaoOffsetVal[cIdx][idx]的idx索引、当SaoTypeIdx[cIdx]=2时,使用edgeidx作为SaoOffsetVal[cIdx][idx]的idx索引,pix_0的SAO结果=pix_0+SaoOffsetVal[cIdx][idx]。然后对这个结果限定到[0,255]之间即可得到pix_0的SAO结果。
下面需要分别求出bandidx或者edgeidx的值。
(a)求bandidx
bandidx的求法采取图3所示的电路图实现。
使用pix_0经过右移3bit后的值与sao_band_position[cIdx]的差值,作为选择器的选通select信号选出bandidx的取值,选取规律:如果差值小于0,则bandidx=0,否则(差值大于等于0),当差值等于0时,bandidx=1;差值等于1时,bandidx=2;差值等于2时,bandidx=3;差值等于3时,bandidx=4;其他差值时bandidx=0。
(b)求edgeidx
edgeidx的求法采取图4所示的电路图实现。
首先根据SaoEoClass[cIdx]的取值选取pix_0的pix0_l(图中MUX0)、pix0_r(图中MUX1)值,根据H.265标准中定义的SaoEoClass与偏移值位置关系(如下表1),当SaoEoClass[cIdx]=0时,pix0_l=pix_g,pix0_r=pix_1;当SaoEoClass[cIdx]=1时,pix0_l=pix_b,pix0_r=pix_j;当SaoEoClass[cIdx]=2时,pix0_l=pix_a,pix0_r=pix_k;当SaoEoClass[cIdx]=3时,pix0_l=pix_c,pix0_r=pix_i;使用pix0_l、pix0_r分别与pix_0做减法,获取其符号位,送入图中MUX2,当两者同为正数时(sign(diff_l)=sign(diff_r)=0),edgeidx_t=4;当两者同为负数时(sign(diff_l)=sign(diff_r)=1),edgeidx_t=0;否则edgeidx_t=2。如果edgeidx_t等于2,则最终edgeidx=0,否则最终edgeidx=edgeidx_t+1。
这样便求得PE0的SAO结果pix_0,一行四个像素会在同一个时钟周期同时进行计算,从而计算得出pix_0~pix_3的SAO结果,写入sao_buf的对应地址单元。整个四像素列重复的流水进行计算、整个CTU顺序计算每个列,便可以计算出整个CTU的SAO结果。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种视频图像采样点自适应偏移处理方法,其特征在于,包括以下步骤:
以视频图像当前编码树单元的一个角为基准,偏移预设数量的像素点后,构成与所述当前编码树单元大小相同的当前编码树处理单元;
将所述当前编码树处理单元划分为每列包含第三数目像素点的多个列;
以所述当前编码树处理单元的偏移角的像素作为起点,读取所述偏移角的像素所在列的第一行所有每个像素点及所述每个像素点周围相邻的八个像素点的参数值,并计算每个像素点的采样点自适应偏移;
计算所述第一行的下一行所有像素点的采样点自适应偏移,直至完成当前列的所有像素点的采样点自适应偏移,并转计算所述当前列的下一列的每一行的所有像素点的采样点自适应偏移,直至完成所述当前编码树处理单元的所有像素点的采样点自适应偏移。
2.根据权利要求1所述的视频图像采样点自适应偏移处理方法,其特征在于,所述偏移预设数量的像素点,包括如下步骤:
亮度区块向所述当前编码树单元的第一边偏移第一数目像素点,向所述第一边的临边偏移第二数目像素点;
色度区块向所述当前编码树单元的第一边偏移二分之一第一数目像素点,向所述第一边的临边偏移二分之一第二数目像素点。
3.根据权利要求1所述的视频图像采样点自适应偏移处理方法,其特征在于,所述第一数目等于第二数目等于第三数目为四。
4.根据权利要求1至3任一项所述的视频图像采样点自适应偏移处理方法,其特征在于,计算像素点的采样点自适应偏移,包括以下步骤:
读取所述像素点的标志信息,当所述标志信息为第一类型标志时,当前像素点不计算采样点自适应偏移;
当所述标志信息为第二类型时,根据当前像素点的带位置参数和当前像素点右移3比特后的值确定当前像素点的采样点自适应偏移;
当所述标志信息为第三类型时,根据当前像素周围相邻的八个像素点的参数值确定当前像素点的采样点自适应偏移。
5.一种视频图像采样点自适应偏移处理装置,其特征在于,包括控制模块、计算模块、存储接口模块及存储模块,其中:
所述控制模块与所述计算模块及所述存储模块电连接,用于接收所述计算模块的状态信息,发送控制信号到所述计算模块及所述存储模块;
所述计算模块与所述控制模块及所述存储模块电连接,用于计算视频图像像素点的采样点自适应偏移,并与所述存储模块进行数据存取;
所述存储接口模块与所述控制模块及所述存储模块电连接,用于根据所述控制模块的控制指令完成对存储模块的读写控制;
所述存储模块与所述计算模块及所述存储接口模块电连接,用于存储采样点自适应偏移计算相关的参数及计算结果。
6.根据权利要求5所述的视频图像采样点自适应偏移处理装置,其特征在于,所述存储模块包括标志信息存储子模块、邻域信息存储子模块、滤波重构值存储子模块及结果存储子模块,其中:
所述标志信息存储子模块,用于存储视频图像中每个编码单元是否需要做采样点偏移计算的标志信息;
所述邻域信息存储子模块,用于存储当前编码树单元相邻编码树单元的信息;
所述滤波重构值存储子模块,用于存储已得到的视频图像的滤波重构值;
所述结果存储子模块,用于存储计算得到的视频图像的采样点自适应偏移。
7.根据权利要求6所述的视频图像采样点自适应偏移处理装置,其特征在于,所述邻域信息存储子模块存储当前编码树单元上一行编码树单元的信息,当前编码树单元左边的一个编码树单元的信息,以及当前编码树单元左上角的一个编码树单元的信息。
8.根据权利要求5所述的视频图像采样点自适应偏移处理装置,其特征在于,所述计算模块包括四个像素点采样点自适应偏移计算单元,可同时计算四个像素点的采样点自适应偏移。
9.根据权利要求5至8任一项所述的视频图像采样点自适应偏移处理装置,其特征在于,所述滤波重构值存储子模块和所述结果存储子模块每个地址存放视频图像中同一行连续16个像素的信息。
10.根据权利要求9所述视频图像采样点自适应偏移处理装置,其特征在于,所述标志信息存储子模块、邻域信息存储子模块、滤波重构值存储子模块及结果存储子模块各为一块固态存储单元。
CN201310722073.7A 2013-12-24 2013-12-24 视频图像采样点自适应偏移处理方法及装置 Active CN104735460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310722073.7A CN104735460B (zh) 2013-12-24 2013-12-24 视频图像采样点自适应偏移处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310722073.7A CN104735460B (zh) 2013-12-24 2013-12-24 视频图像采样点自适应偏移处理方法及装置

Publications (2)

Publication Number Publication Date
CN104735460A true CN104735460A (zh) 2015-06-24
CN104735460B CN104735460B (zh) 2018-04-06

Family

ID=53458825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310722073.7A Active CN104735460B (zh) 2013-12-24 2013-12-24 视频图像采样点自适应偏移处理方法及装置

Country Status (1)

Country Link
CN (1) CN104735460B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102742275A (zh) * 2010-06-15 2012-10-17 联发科技股份有限公司 用于视频编解码的自适应偏移装置及方法
CN103283234A (zh) * 2011-01-09 2013-09-04 联发科技股份有限公司 用于视频编码的样本自适应偏移的方法和装置
CN103404137A (zh) * 2011-01-09 2013-11-20 联发科技股份有限公司 有效的样本自适应补偿的方法和装置
CN103442238A (zh) * 2013-08-29 2013-12-11 复旦大学 一种适用于hevc标准的编码器中sao的硬件处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102742275A (zh) * 2010-06-15 2012-10-17 联发科技股份有限公司 用于视频编解码的自适应偏移装置及方法
CN103283234A (zh) * 2011-01-09 2013-09-04 联发科技股份有限公司 用于视频编码的样本自适应偏移的方法和装置
CN103404137A (zh) * 2011-01-09 2013-11-20 联发科技股份有限公司 有效的样本自适应补偿的方法和装置
CN103442238A (zh) * 2013-08-29 2013-12-11 复旦大学 一种适用于hevc标准的编码器中sao的硬件处理方法

Also Published As

Publication number Publication date
CN104735460B (zh) 2018-04-06

Similar Documents

Publication Publication Date Title
CN114245123B (zh) 图像数据编码/解码方法、介质和发送比特流的方法
KR102648121B1 (ko) 적응적 루프 필터링에서의 샘플 패딩
CN105681807A (zh) 一种基于h264协议的分像素运动矢量计算方法和装置
CN104581177B (zh) 一种结合块匹配和串匹配的图像压缩方法和装置
CN104253998B (zh) 一种适用于hevc标准的去方块效应滤波器的硬件片上存储方法
US9800874B2 (en) Image decoding apparatus executing successive tile decoding and filtering around tile boundary
WO2023065891A1 (zh) 多媒体数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品
CN104521234B (zh) 合并去区块处理和取样自适应偏移处理的视频处理方法和装置
CN103533287A (zh) 一种视频处理方法及装置
US20210233280A1 (en) Encoding device control method and device, and storage medium
CN101778280B (zh) 一种基于avs运动补偿亮度插值运算的电路及方法
US20050047502A1 (en) Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding
CN102055971B (zh) 视频压缩的去区块效应滤波装置与方法
CN101170690A (zh) 基于avs的环路滤波器的硬件装置及硬件实现方法
CN104219529B (zh) 图像缩放方法、系统及装置
CN104754363B (zh) 用于hevc的环路滤波方法及装置、编码器及解码器
CN102300086A (zh) 对参考帧边界进行扩展和对运动补偿参考样本位置进行限定的方法
US20120093410A1 (en) Image processing apparatus and method for operating image processing apparatus
JP2009015637A (ja) 演算ユニット及び画像フィルタリング装置
CN104735460A (zh) 视频图像采样点自适应偏移处理方法及装置
Zhu et al. A high performance HEVC de-blocking filter and SAO architecture for UHDTV decoder
CN105991937A (zh) 一种基于Bayer格式图像的虚拟曝光方法及装置
TWI517695B (zh) 晶片內/晶片外記憶體管理
TWI520618B (zh) 影像資料處理方法以及影像處理裝置
CN103731674A (zh) 一种h.264二维并行后处理去块滤波器硬件实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant