本发明涉及数据处理技术领域,特别涉及一种基于多个候选补偿值确定最优补偿值的方法和装置。
背景技术:
针对现有的视频编码技术,例如:hevc(highefficiencyvideocoding,一种视频压缩标准),sao(sampleadaptiveoffset,样点自适应补偿)是位于去块滤波之后的像素补偿模块,以lcu(largistcodingunit,编码图像通常划分成若干大小可以自行设定的基本单元)对像素加减一个偏移值,从而减小重构图像与原图像的失真。
对于样点自适应补偿而言,往往有多种补偿模式,为了确定出选择哪种补偿模式,一般是通过计算各种模式的cost,然后通过比较cost,选择cost最小的对应的模式作为最优的补偿模式。
然而,在确定各种模式的cost的过程中,需要计算最优补偿值,需要计算每个子类型和每个边带的最优补偿值。在计算最优补偿值的过程中,每个最优补偿值的计算都需要计算每个边带和每个子类型的最优补偿值。
因此,如果简化计算最优补偿值直接影响补偿的效率。
针对如果简化最优补偿值的技术问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种基于多个候选补偿值确定最优补偿值的方法,以达到降低计算复杂度、和简化硬件结构的目的,该方法包括:
计算得到当前子类型或边带的初始补偿值;
确定所述初始补偿值的绝对值是否小于预设阈值;
在确定不小于所述预设阈值的情况下,选取所述预设阈值加1个候选补偿值;
根据选取的候选补偿值,确定出最优补偿值。
在一个实施方式中,在确定所述初始补偿值的绝对值是否小于预设阈值之后,所述方法还包括:
在确定小于所述预设阈值的情况下,将0至所述初始补偿值的范围内所有的整数作为候选补偿值。
在一个实施方式中,在确定超出所述预设阈值的情况下,选取所述预设阈值加1个候选补偿值,包括:
在所述初始补偿值为正数的情况下,将所述初始补偿值减去所述预设阈值再加1至所述初始补偿值的范围内所有的整数、以及0,作为候选补偿值;
在所述初始补偿值为负数的情况下,将所述初始补偿值加上所述预设阈值再减1至所述初始补偿值的范围内所有的整数,以及0,作为候选补偿值。
在一个实施方式中,计算得到当前子类型或边带的初始补偿值,包括:
通过以下公式确定初始补偿值:
init_offest=orgoffest[n]/count[n]
其中,init_offest表示初始补偿值,orgoffest[n]表示当前子类型或边带下,重构像素与原始像素之间的差值,count[n]表示属于当前子类型或边带的像素个数
在一个实施方式中,应用于hevc视频编码技术中。
本发明实施例还提供了一种基于多个候选补偿值确定最优补偿值的装置,以达到降低计算复杂度、和简化硬件结构的目的,该装置包括:
计算模块,用于计算得到当前子类型或边带的初始补偿值;
第一确定模块,用于确定所述初始补偿值的绝对值是否小于预设阈值;
选取模块,用于在确定不小于所述预设阈值的情况下,选取所述预设阈值加1个候选补偿值;
第二确定模块,用于根据选取的候选补偿值,确定出最优补偿值。
在一个实施方式中,上述装置还包括:
第三确定模块,用于在确定所述初始补偿值的绝对值小于所述预设阈值的情况下,将0至所述初始补偿值的范围内所有的整数作为候选补偿值。
在一个实施方式中,所述选取模块包括:
第一选取单元,用于在所述初始补偿值为正数的情况下,将所述初始补偿值减去所述预设阈值再加1至所述初始补偿值的范围内所有的整数、以及0,作为候选补偿值;
第二选取单元,用于在所述初始补偿值为负数的情况下,将所述初始补偿值加上所述预设阈值再减1至所述初始补偿值的范围内所有的整数,以及0,作为候选补偿值。
在一个实施方式中,所述计算模块具体用于通过以下公式确定初始补偿值:
init_offest=orgoffest[n]/count[n]
其中,init_offest表示初始补偿值,orgoffest[n]表示当前子类型或边带下,重构像素与原始像素之间的差值,count[n]表示属于当前子类型或边带的像素个数
在一个实施方式中,应用于hevc视频编码技术中。
在本发明实施例中,通过选取预定数量个候选补偿值的方式来有效选取最优补偿值,从而解决了现有的确定最优补偿值的计算量过大,硬件结构复杂度过高的技术问题,达到了减少计算量和降低硬件结构复杂度的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是根据现有技术的确定最优补偿值示意图;
图2是根据本发明实施例的基于hevc的简化sao最优补偿值计算方法流程图;
图3是根据本发明实施例的基于多个候选补偿值确定最优补偿值的方法流程图;
图4是根据本发明实施例的视频补偿方法流程图;
图5是根据本发明实施例的确定最优补偿值的一种示意图;
图6是根据本发明实施例的确定最优补偿值的另一种示意图;
图7是根据本发明实施例的基于多个候选补偿值确定最优补偿值的装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
以hevc(highefficiencyvideocoding,一种视频压缩标准)中的sao(sampleadaptiveoffset,样点自适应补偿)为例进行说明,sao是位于去块滤波之后的像素补偿模块,其中,sao包括bo(bandoffset,带状补偿)模式、eo(edgeoffset,边缘补偿)模式、无补偿模式和merge模式,具体选择哪种补偿模式,可以经过计算各种模式的cost,比较cost,然后,取最小的cost对应的模式作为sao的最优补偿模式。
在sao预测模式的计算流程中,当eo模式的每个子类型和bo模式的每个边带的orgoffset[n]和count[n]计算完成后,需要计算每个子类型和每个边带的init_offset,在init_offset计算完成后,根据init_offset的大小,确定候选补偿值的取值和个数,进而从候选补偿值中选出最优补偿值。
具体的,现有一般按照以下方式确定候选补偿值的取值和个数:
1)当init_offset大于等于0时,[0,init_offset]范围内的每一个整数都是候选补偿值,该范围内的整数个数就是候选补偿值的个数;
2)当init_offset小于等于0时,[init_offset,0]范围内的每一个整数都是候选补偿值,该范围内的整数个数就是候选补偿值的个数。
以init_offset等于7为例,可以按照如图1的方式选取最优补偿值。即需要计算8个候选补偿值,然后比较器也需要匹配得了这个8个候选补偿值,即,计算和比较效率都很低,且还需要较多的比较器,在init_offset不同的时候,有需要不同数量的比较器,因此,硬件结构的复杂度也很高。
尤其是在eo模式的子类型较多或者是bo模式的边带数量较多的情况下,计算将较为繁琐,计算效率较低。例如,在eo模式的16个子类型和bo模式的32个边带都需要计算init_offset的情况下,也就是需要计算48个init_offset,那么相应的需要计算48个最优补偿值。这会带来很大的计算量,特别是当init_offset达到限幅的极限值时,候选补偿值的数量达到最大,这时选取最优补偿值带来的计算量更大。这种选取最优补偿值的方法,使得硬件结构面积大、效率低,计算量大。
基于此,在本例中提供了一种确定最优补偿值的方法,具体的,无论初始补偿值是多少,都确定预设数量(例如:3个、4个)个候选补偿值,从这几个候选补偿值中确定出最优补偿值。
如图2所示,在本例中提供了一种基于hevc的简化sao最优补偿值计算方法,如图2所示,可以包括如下步骤:
步骤201:确定采样点自适应补偿中边缘补偿模式的子类型数量和边带补偿模式的边带数量;
例如,在hevc视频编码模式中,子类型的数量为4,边带的数量为32。具体的,hevc是一种新的视频编码标准,lcu为hevc中最大的编码单元。sao为采样点自适应补偿,位于去块滤波(deblock)之后进行。
具体的,由如下几种补偿模式:
1)eo模式,即,sao的边缘补偿模式。eo分为4种类型:水平,垂直,135度,45度。其中,eo0表示eo模式的水平模式;eo1表示eo模式的垂直模式;eo2表示eo模式的135度模式;eo3表示eo模式的45度模式。
子类型:eo0~eo3都包含4种子类型,即class0、class1、class2、class3。
其中,class0表示当前像素点均小于两参考像素点;class1表示当前像素点等于一个参考像素点,而小于另一个参考像素点;class2表示当前像素点等于一个参考像素点,而大于另一个参考像素点;class3表示当前像素点均大于两参考像素点。
2)bo模式,即,sao的边带补偿模式。bo包括32个边带,像素所属的边带依据重构像素值的大小选择。
3)merge模式,包括mergeleft和mergeup两种,即使用左侧lcu或上面lcu的sao补偿模式。
步骤202:对每个子类型和每个边带,都计算相同数量的候选补偿值;
例如,对于每个子类型和每个边带,都计算3、4、5或者其它数量个候选补偿值,具体数值可以根据实际需要选择,本申请对此不作限定。
具体的,可以通过以下步骤确定候选补偿值:
s1:通过以下公式确定初始补偿值:
init_offest=orgoffest[n]/count[n]
其中,init_offest表示初始补偿值,orgoffest[n]表示当前子类型或边带下,重构像素与原始像素之间的差值,count[n]表示属于当前子类型或边带的像素个数;
s2:根据确定的初始补偿值确定候选补偿值。
步骤203:根据每个子类型和每个边带对应的候选补偿值,确定出每个子类型和每个边带的最优补偿值。
具体的,orgoffset[n]中,n表示重构像素所属的子类型或边带,orgoffset[n]用于存储lcu级重构像素与原始像素的差值之和。count[n]:与orgoffset[n]相对应,属于该子类型或边带的像素个数。预测失真表示每种模式下的失真。init_offset表示初始补偿值,可以通过orgoffset[n]除以count[n]得到的结果限幅后得到。候选补偿值,用于计算得到最优补偿值的取值;最优补偿值,用于从候选补偿值中选出的补偿效果最好的值。cost等于预测失真加rate*lambda。
在一个实施方式中,根据每个子类型和每个边带对应的候选补偿值,确定出每个子类型和每个边带的最优补偿值,可以包括:对当前的子类型或边带进行如下操作,以计算得到当前的子类型或边带的最优补偿值:
s1:确定当前的子类型或边带对应的各个候选补偿值对应的cost值;
s2:选取cost值最小的候选补偿值作为当前的子类型或边带的最优补偿值。
如图3所示,在本例中还提供了一种基于多个候选补偿值确定最优补偿值的方法,如图3所示,可以包括如下步骤:
步骤301:计算得到当前子类型或边带的初始补偿值;
具体的,可以通过以下公式确定初始补偿值:
init_offest=orgoffest[n]/count[n]
其中,init_offest表示初始补偿值,orgoffest[n]表示当前子类型或边带下,重构像素与原始像素之间的差值,count[n]表示属于当前子类型或边带的像素个数。
步骤302:确定所述初始补偿值的绝对值是否小于预设阈值;
步骤303:在确定不小于所述预设阈值的情况下,选取所述预设阈值加1个候选补偿值;
具体的:在所述初始补偿值为正数的情况下,可以将所述初始补偿值减去所述预设阈值再加1至所述初始补偿值的范围内所有的整数、以及0,作为候选补偿值;在所述初始补偿值为负数的情况下,可以将所述初始补偿值加上所述预设阈值再减1至所述初始补偿值的范围内所有的整数,以及0,作为候选补偿值。
步骤304:在确定小于所述预设阈值的情况下,将0至所述初始补偿值的范围内所有的整数作为候选补偿值;
步骤305:根据选取的候选补偿值,确定出最优补偿值。
即,可以按照以下步骤确定最优补偿值:
s1:确定初始补偿值;
s2:根据所述初始补偿值,选取预定数量个候选补偿值;
s3:从所述预定数量个候选补偿值中选取出最优补偿值。
具体的,从所述预定数量个候选补偿值中选取出最优补偿值,可以包括:计算所述预定数量个候选补偿值中各个候选补偿值对应的cost值;选取cost值最小的候选补偿值作为所述最优补偿值。
举例而言,在上述预定数量为3的情况下,根据所述初始补偿值,选取3个候选补偿值,可以包括:
1)在所述初始补偿值为正数的情况下,将0、所述初始补偿值、所述初始补偿值减1作为选取的3个候选补偿值;
2)在所述初始补偿值为负数的情况下,将0、所述初始补偿值、所述初始补偿值加1作为选取的3个候选补偿值。
距离而言,在上述预定数量为4的情况下,根据所述初始补偿值,选取4个候选补偿值,可以包括:
1)在所述初始补偿值为正数的情况下,将0、所述初始补偿值、所述初始补偿值减1、所述初始补偿值减2作为选取的4个候选补偿值;
2)在所述初始补偿值为负数的情况下,将0、所述初始补偿值、所述初始补偿值加1、所述初始补偿值加2作为选取的4个候选补偿值。
将上述的确定最优补偿值的方法应用在视频补偿中可以如图4所示,包括如下步骤:
步骤401:获取待编码视频;
步骤402:通过确定候选补偿值的方式,确定各边带和各子类型的最优补偿值;
步骤403:基于确定的各边带和各子类型的最优补偿值,对所述待编码视频进行采样点自适应补偿。
具体的,可以基于确定的各边带的最优补偿值,进行边带补偿;基于确定的各子类型的最优补偿值,进行边缘补偿。
下面结合一个具体实施例对上述方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
候选补偿值的个数等于abs(init_offset)加1,通过cand_offset0~cand_offset7来表示候选补偿值,用cost0~cost7来表示各候选补偿值对应的cost,用best_offset来表示最优补偿值。其中,cand_offset0=0,cand_offset1=1,cand_offset2=2,cand_offset3=3,cand_offset4=4,cand_offset5=5,cand_offset6=6,cand_offset7=7。经比较器选出的最小cost对应的候选补偿值即为最优补偿值。
在本例中,通过init_offset的具体取值,选取3个有效候选补偿值,然后从3个候选补偿值中选出最优补偿值,从而达到减少计算量、简化硬件实现复杂度、减小面积、提高效率的目的。
候选补偿值的选取可以根据init_offset的具体取值确定。
具体的,可以按照以下方式确定候选补偿值:
1)在init_offset小于-1的情况下,选取的3个候选补偿值为:init_offset,(init_offset+1)和0。
如图5所示,假设init_offset等于-7,cand_offset0、cand_offset1和cand_offset2是选取的3个候选补偿值,那么,cand_offset0=-7、cand_offset1=-6,cand_offset2=0。cost0、cost1、cost2是3个候选补偿值对应的3个cost,best_offset为最优补偿值。
由此可以看出,未采用候选补偿值的有效选取之前,需要计算8个cost,然而,经过候选补偿值的选取之后,仅需要计算3个cost,相应的,所采用的比较器也将减少。
2)在init_offset等于-1或1的情况下,不需要选取3个候选补偿值,只有两个候选补偿值:init_offset和0,最优补偿值从这两个候选补偿值中选取。
3)在init_offset等于0的情况下,不需要选取3个候选补偿值,只有一个候选补偿值:0。该候选补偿值即为最优补偿值。
4)在init_offset大于1的情况下,选取的3个候选补偿值为:init_offset,(init_offset-1)和0。
如图6所示,假设init_offset等于6,cand_offset0、cand_offset1和cand_offset2是选取的3个候选补偿值,那么,cand_offset0=6、cand_offset1=5,cand_offset2=0。cost0、cost1和cost2是3个候选补偿值对应的3个cost,best_offset是最优补偿值。
由此可以看出,未采用候选补偿值的有效选取之前,需要计算7个cost,然而,经过候选补偿值的选取之后,仅需要计算3个cost,相应的,所采用的比较器也将减少。
在上例中,通过用相同的方法选取3个有效的候选补偿值来使得硬件结构简单化、一致化,通过减少候选补偿值的个数,来减少计算cost的个数,从而减少了计算量、简化了硬件结构的复杂度、减小了面积和效率。
上例的方法可以应用于h265中sao中最优补偿值的计算,对于候选补偿值的选取,可以采用上述的选取3个有效的候选补偿值的方法,也可以设定为选取4个、5个或更多候选补偿值的方法,具体数值可以根据实际需要选择,本申请对此不作限定。
以选取4个候选补偿值为例,init_offset大于3,那么,这4个候选补偿值是:init_offset,(init_offset-1),(init_offset-2),0。
基于同一发明构思,本发明实施例中还提供了一种基于多个候选补偿值确定最优补偿值的装置,如下面的实施例所述。由于基于多个候选补偿值确定最优补偿值的装置解决问题的原理与基于多个候选补偿值确定最优补偿值的方法相似,因此基于多个候选补偿值确定最优补偿值的装置的实施可以参见基于多个候选补偿值确定最优补偿值的方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图7是本发明实施例的基于多个候选补偿值确定最优补偿值的装置的一种结构框图,如图7所示,可以包括:计算模块701、第一确定模块702、选取模块703和第二确定模块704,下面对该结构进行说明。
计算模块701,用于计算得到当前子类型或边带的初始补偿值;
第一确定模块702,用于确定所述初始补偿值的绝对值是否小于预设阈值;
选取模块703,用于在确定不小于所述预设阈值的情况下,选取所述预设阈值加1个候选补偿值;
第二确定模块704,用于根据选取的候选补偿值,确定出最优补偿值。
在一个实施方式中,上述装置还可以包括:第三确定模块,用于在确定所述初始补偿值的绝对值小于所述预设阈值的情况下,将0至所述初始补偿值的范围内所有的整数作为候选补偿值。
在一个实施方式中,选取模块703可以包括:第一选取单元,用于在所述初始补偿值为正数的情况下,将所述初始补偿值减去所述预设阈值再加1至所述初始补偿值的范围内所有的整数、以及0,作为候选补偿值;第二选取单元,用于在所述初始补偿值为负数的情况下,将所述初始补偿值加上所述预设阈值再减1至所述初始补偿值的范围内所有的整数,以及0,作为候选补偿值。
在一个实施方式中,计算模块701具体可以用于通过以下公式确定初始补偿值:
init_offest=orgoffest[n]/count[n]
其中,init_offest表示初始补偿值,orgoffest[n]表示当前子类型或边带下,重构像素与原始像素之间的差值,count[n]表示属于当前子类型或边带的像素个数
在一个实施方式中,上述装置可以应用于hevc视频编码技术中。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
从以上的描述中,可以看出,本发明实施例实现了如下技术效果:通过选取预定数量个候选补偿值的方式来有效选取最优补偿值,从而解决了现有的确定最优补偿值的计算量过大,硬件结构复杂度过高的技术问题,达到了减少计算量和降低硬件结构复杂度的技术效果。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。