本发明涉及一种多媒体技术领域,特别涉及一种带宽压缩中双向跳块扫描多方向预测方法。
背景技术:
随着视频的图像分辨率的增加,需要占用较多的存储空间和传输带宽,在这种情况下,利用芯片内的带宽压缩技术来提高图像的存储空间和传输带宽就显得尤为必要。
与端口类压缩(如h.265)不同,芯片内带宽压缩的目标是用较小的逻辑面积成本,尽可能的提高压缩倍数,减少ddr占用。带宽压缩主要由四个部分组成,包含:预测模块、量化模块、码控模块和熵编码模块。其中预测模块作为一个重要的模块,是利用图像相邻像素间存在的空间冗余度,根据图像邻近像素信息对当前像素值进行预测,预测差值的标准差要远小于原始图像数据的标准差,因此对预测差值进行编码,更有利于使图像数据的理论熵达到最小,达到提高压缩效率的目的。
在现有的预测方法中,通常按光栅扫描图像,因此,对每个mb进行预测时,mb的参考方向仅有上参考,左上参考,左参考,右上参考而无法获得下参考,左下参考,右参考,右下参考。因此,在预测时,由于不能获得更多的参考方向导致无法获得更好的预测参考以及预测结果。可以看出上述的光栅扫描并不是最优的,且相对于平坦区域,光栅扫描在边界和纹理复杂区域进行预测时,效果更差。
技术实现要素:
因此,为解决现有技术存在的技术缺陷和不足,本发明提出一种带宽压缩中双向跳块扫描多方向预测方法。
具体地,本发明一个实施例提出的一种带宽压缩中双向跳块扫描多方向预测方法,包括:
将图像分为相同大小的多个mb;
采用p种标记符号依次循环对所述多个mb进行标记;其中,p为大于1的自然数;
采取双向扫描方式扫描所述第n标记符号对应的mb;其中,n为1~p的整数;
确定所述第n标记符号对应的mb的参考方向;
通过所述参考方向计算当前像素的参考像素;
通过当前像素的所述参考像素确定当前像素的所述预测残差;
按设定顺序将所述n的取值在1~p中进行遍历以实现对所述多个mb的预测。
在本发明的一个实施例中,采取双向扫描方式扫描所述第n标记符号对应的mb,包括:
扫描所述第n标记符号对应的mb时,隔行采取相同的扫描方向进行扫描,邻行采取相反的扫描方向进行扫描。
在本发明的一个实施例中,确定所述第n标记符号对应的mb的参考方向,包括:
以当前mb四周已扫描的参考mb的方向作为当前mb的参考方向;其中,
若任一方向没有参考mb,则置空不处理。
在本发明的一个实施例中,通过所述参考方向计算当前像素的参考像素,包括:
通过当前mb的参考方向确定所述第一参考像素;
根据所述第一参考像素计算所述参考方向的权重;
选取权重最小的所述参考方向作为所述当前mb的纹理方向;
通过所述当前mb的所述纹理方向计算第二参考像素。
在本发明的一个实施例中,通过当前mb的参考方向确定所述第一参考像素,包括:
根据所述当前mb的所述参考方向确定距离最近的参考mb;
根据距离最近的所述参考mb确定所述第一参考像素。
在本发明的一个实施例中,通过所述当前mb的所述纹理方向计算第二参考像素,包括:
利用所述纹理方向以及所述纹理方向对应的反方向,通过第二参考像素计算公式计算当前mb的所述第二参考像素。
在本发明的一个实施例中,所述第二参考像素计算公式为:
refmid=p1*(dir2/(dir1+dir2))+p2*(dir1/(dir1+dir2))
若位置偏向1,ref=weight*refmid+(1-weight)*p1
若位置偏向2,ref=weight*refmid+(1-weight)*p2
其中,refmid为两个第一参考像素的中点,ref为第二参考像素值,p1、p2为按所述纹理方向的边界像素点,dir1、dir2为所述纹理方向的权重,weight为距离权重。
基于此,本发明至少具备如下优点:
1、对于图像中的mb可获得更多的参考方向,导致预测可以获得更小的预测残差,尤其是纹理复杂区域的预测效果更优。
2、可以进一步降低预测的理论极限熵,达到更高的压缩率。
通过以下参考附图的详细说明,本发明的其它方面和特征变得明显。但是应当知道,该附图仅仅为解释的目的设计,而不是作为本发明的范围的限定,这是因为其应当参考附加的权利要求。还应当知道,除非另外指出,不必要依比例绘制附图,它们仅仅力图概念地说明此处描述的结构和流程。
附图说明
下面将结合附图,对本发明的具体实施方式进行详细的说明。
图1为本发明实施例提供的一种带宽压缩中双向跳块扫描多方向预测方法;
图2为本发明实施例提供的一种图像mb划分标记示意图;
图3为本发明实施例提供的一种当前mb与距离最近的参考mb的原始位置示意图;
图4为本发明实施例提供的一种当前mb与距离最近的参考mb的拉近位置示意图;
图5为本发明实施例提供的一种当前mb全参考方向的示意图;
图6为本发明实施例提供的一种当前mb无下参考方向的示意图;
图7为本发明实施例提供的一种当前像素确定第二参考像素的示意图;
图8为本发明实施例提供的一种当前像素确定第二参考像素的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
实施例一
请参见图1,图1为本发明实施例提供的一种带宽压缩中双向跳块扫描多方向预测方法流程图。该方法包括如下步骤:
步骤1、将图像分为相同大小的多个mb;
步骤2、采用p种标记符号依次循环对所述多个mb进行标记;其中,p为大于1的自然数;
步骤3、采取双向扫描方式扫描所述第n标记符号对应的mb;其中,n为1~p的整数;
步骤4、确定所述第n标记符号对应的mb的参考方向;
步骤5、通过所述参考方向计算当前像素的参考像素;
步骤6、通过当前像素的所述参考像素确定当前像素的所述预测残差;
步骤7、按设定顺序将所述n的取值在1~p中进行遍历以实现对所述多个mb的预测。
其中,步骤2可以包括如下步骤:
步骤21、采用多种标记符号依次循环完成行方向mb的标记;
步骤22、采用多种标记符号依次循环完成列方向mb的标记。
对于步骤3,可以包括如下步骤:
步骤31、扫描所述第n标记符号对应的mb时,第n标记符号行每间隔一行采取相同的扫描方向进行扫描,第n标记符号行每相邻行采取相反的扫描方向进行扫描。
对于步骤4,可以包括如下步骤:
步骤41、以当前mb四周已扫描的参考mb的方向作为当前mb的参考方向;其中,若任一方向没有参考mb,则置空不处理。
对于步骤5,可以包括如下步骤:
步骤51、通过当前mb的参考方向确定所述第一参考像素;
步骤52、根据所述第一参考像素计算所述参考方向的权重;
步骤53、选取权重最小的所述参考方向作为所述当前mb的纹理方向;
步骤54、通过所述当前mb的所述纹理方向计算第二参考像素。
其中,步骤51可以包括如下步骤:
步骤511、根据所述当前mb所述参考方向确定距离最近的参考mb;
步骤512、根据距离最近的所述参考mb确定所述第一参考像素。
其中,对于步骤511,可以包括如下步骤:
步骤511a、若所述参考mb与当前mb不相邻,则拉近所述参考mb,使所述参考mb与所述当前mb相邻;
步骤511b、若所述当前mb任一方向没有所述参考mb,则不处理。
其中,步骤52中的参考方向的权重计算公式为:
优选地,权重计算公式还可以为:
其中,abs为绝对值运算,dir180为左参考方向权重,dir0为右参考方向权重,dir45为右上参考方向权重,dir270为下参考方向权重,dir90为上参考方向权重,dir135为左上参考方向权重,dir225为左下参考方向权重,dir315为右下参考方向权重,x为每个所述mb的列分辨率,y为每个所述mb的行分辨率,c为当前mb的当前像素,r为当前mb的第一参考像素。
其中,对于步骤54,可以包括如下步骤:
步骤541、利用所述纹理方向以及所述纹理方向对应的反方向,通过第二参考像素计算公式计算当前mb的所述第二参考像素;
其中,对于步骤31341中的第二参考像素计算公式为
refmid=p1*(dir2/(dir1+dir2))+p2*(dir1/(dir1+dir2))
若位置偏向1,ref=weight*refmid+(1-weight)*p1
若位置偏向2,ref=weight*refmid+(1-weight)*p2
其中,refmid为两个第一参考像素的中点,ref为第二参考像素值,p1、p2为按所述纹理方向的边界像素点,dir1、dir2为所述纹理方向的权重,weight为距离权重。
本发明的优点如下:
本发明提供的算法,通过双向跳块多遍历的方法,对于图像中每个块mb,平均可以获得更多的参考边缘,即获得更多的参考像素;然后对于每个块,采用多方向预测,可以在更精确的获得该块的纹理方向;根据纹理方向和相应的参考像素,通过纹理方向权重和位置偏移权重,对当前预测块中的像素,可获得与当前像素值最相似的参考像素,并获得更小的预测残差,降低了编码的理论极限熵。
本发明提供的算法对于图像空间冗余度较小的区域,如纹理复杂区域,纹理渐变区域,可以起到更好的预测效果,进一步降低理论极限熵。
实施例二
请参见图2~图7,图2为本发明实施例提供的一种图像mb划分标记示意图;图3为本发明实施例提供的一种图像双向扫描示意图;图4为本发明实施例提供的一种当前mb与距离最近的参考mb的原始位置示意图;图5为本发明实施例提供的一种当前mb与距离最近的参考mb的拉近位置示意图;图6为本发明实施例提供的一种当前mb全参考方向的示意图;图7为本发明实施例提供的一种当前mb无下参考方向的示意图;图8为本发明实施例提供的一种当前像素确定第二参考像素的示意图。本实施例在上述实施例的基础上对本发明提出的带宽压缩中跳块扫描多方向预测方法进行详细描述,该预测方法包括如下步骤:
步骤1、将图像分为若干个mb,每个mb大小相同,因此图像中的mb数量固定。本实施例以mb大小为8*4、图像大小为120*60为例进行说明,则每一个mb的行分辨率为8、列分辨率为4。
步骤2、对图像中的每个mb进行标记,选取9种标记符号。在水平方向,采用多个标记符号依次循环完成水平方向mb的标记;在竖直方向,采用多个标记符号依次循环完成竖直方向mb的标记。本实施例中图像的分割以及标记如图2所示,将大小为120*60的图像分为15行15列共255个大小为8*4的mb;以标记符号0、1、2、3、4、5、6、7、8标记每个mb,具体为将奇数行的mb以标记符号符号0、1、2分别循环标记第(3n+1)行中的每个mb,以标记符号3、4、5分别循环标记第(3n+2)行中的每个mb,以标记符号6、7、8分别循环标记第(3n+3)行中的每个mb,其中n为大于或等于0的整数。
步骤3、预测时,每次预测上述9种标记符号中的一种标记符号对应的mb,直至所有mb预测结束,达到对mb跳块扫描的效果。其中,9种标记符号的mb的预测顺序可以设定。对于任意一种标记符号的mb的预测顺序为按照图像从上到下、双向扫描方式进行预测。双向扫描方式请参见图3,图中以扫描标记符号为0的mb为例进行说明,其中,扫描每间隔一行采取相同的扫描方向进行扫描,每相邻行采取相反的扫描方向进行扫描,如图中箭头方向所示。采用双向扫描的方式,可以更精确的获得该块的纹理方向,并获得更小的预测残差,降低了编码的理论极限熵。
本实施例以图2所示的图像为例、依次按0~8的顺序进行说明如何进行预测,具体步骤如下:
步骤31、先对所有标记符号为0的mb进行预测
步骤311、确定参考mb
标记符号为0的mb最多仅能获得间隔一个或者两个mb的4个参考方向;其中,若扫描方向为从左至右时,则参考方向为上方向、左方向、左上方向,右上方向,因此可以确定出上方向的参考mb,左方向的参考mb,左上方向的参考mb,右上方向的参考mb;若扫描方向为从右至左时,则则参考方向为上方向、右方向、左上方向,右上方向,因此可以确定出上方向的参考mb,右方向的参考mb,左上方向的参考mb,右上方向的参考mb;
步骤312、纹理方向选取
步骤312a、在当前mb的参考方向中,找到距离最近的参考mb。若存在参考mb与当前mb不紧相邻,那么拉近该参考mb为紧相邻参考mb,若任一方向没有参考mb,则不处理,置空。如图4、图5所示。
步骤312b、通过参考mb寻找当前mb的第一参考像素,若某mb的参考方向为空,则无第一参考像素。假设当前mb有8个参考mb,因此当前mb可以在每个参考mb中获取到第一参考像素,即当前mb可以确定出全方向的第一参考像素,假设cmn(m=1,2,3,4;n=1,2,3,4,5,6,7,8)为当前mb的当前像素,rxy(x=0,1,2,3,4,5;y=1,2,3,4,5,6,7,8,9)为当前mb的第一参考像素,如图6所示。假设cmn(m=1,2,3,4;n=1,2,3,4,5,6,7,8)为当前mb的当前像素,rxy(x=0,1,2,3,4,5;y=1,2,3,4,5,6,7,8,9)为当前mb的第一参考像素,当前mb下参考方向为空,因此,当前mb无下方向的第一参考像素,如图7所示。
步骤312c、根据第一参考像素,计算每个参考方向权重,本实施例以图2为例,采用如下公式计算每个参考方向权重dir,权重采用离方向箭头最近一面的第一参考像素。
步骤312d、在步骤312c计算的参考方向权重中选出dir最小的1组作为最优纹理方向,mb中所有像素值根据该方向进行预测。
步骤313、计算第二参考像素
根据所选的最优纹理方向和对应的反方向,根据当前像素的位置,计算每个当前像素的第二参考像素,如图8所示,计算公式如下,
refmid=p1*(dir2/(dir1+dir2))+p2*(dir1/(dir1+dir2))
若位置偏向1,ref=weight*refmid+(1-weight)*p1
若位置偏向2,ref=weight*refmid+(1-weight)*p2
其中refmid为两个第一参考像素的中点,p1、p2为按最优纹理方向的第一参考像素,dir1、dir2为参考方向权重,例如dir180,dir0;weight为距离权重。
首先考虑权重计算第一参考像素的中点,然后考虑位置计算第二参考像素,即第一参考像素中点靠近哪边,最终采用哪边的第一参考像素作为第二参考像素。
优选地,第二参考像素计算公式可变更,可以仅引入权重或位置。
具体举例如下:
若最优纹理方向为45度参考,对于c14,dir45=2,dir225=14,可得到第一参考像素为r05和r50,设r05=100,r50=40,
refmid=100*(14/16)+40*(2/16)=88+5=93
由于c14偏向r05,因此refmid=c23,ref=0.5*93+0.5*100=96,第二参考像素值为96。
步骤314、确定预测残差
采用步骤313计算得到所有点的第二参考像素,采用原始像素值减去第二参考像素值得到预测残差。
步骤32、当所有图像中标记为0的mb预测处理完毕后,对所有标记符号为1的mb进行预测;
步骤321、确定参考mb
标记符号为1的mb最多仅能获得间隔一个或两个mb的6个参考方向,其中参考方向为左上方向、上方向、右上方向、右方向、右下方向及左下方向,因此可以确定出左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右方向的参考mb、右下方向的参考mb及左下方向的参考mb;可以获得相邻mb的1个参考方向,即左方向,因此可以确定出左方向的参考mb;
步骤322、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤323、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤324、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤33、当所有图像中标记为0和1的mb预测处理完毕后,对所有标记符号为2的mb进行预测;
步骤331、确定参考mb
所有标记符号为2的mb最多仅能获得间隔一个或两个mb的5个参考方向,其中参考方向为左上方向、上方向、右上方向、右下方向及左下方向,可以确定出左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右下方向的参考mb及左下方向的参考mb;以及获得相邻mb的2个参考方向,其中参考方向为左方向与右方向,可以确定出左方向的参考mb与右方向的参考mb;
步骤332、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤333、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤334、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤34、当所有图像中标记为0、1、2的mb预测处理完毕后,对所有标记符号为3的mb进行预测;
步骤341、确定参考mb
若扫描方向为从左至右时,则所有标记符号为3的mb最多仅能获得间隔一个或两个mb的4个参考方向,其中参考方向为左方向、左下方向、下方向及右下方向,可以确定出左方向的参考mb、左下方向的参考mb、下方向的参考mb及右下方向的参考mb;以及获得相邻mb的3个参考方向,其中参考方向为左上方向、上方向及右上方向,可以确定出左上方向的参考mb、上方向的参考mb及右上方向的参考mb;
若扫描方向为从右至左时,则所有标记符号为3的mb最多仅能获得间隔一个或两个mb的4个参考方向,其中参考方向为右方向、左下方向、下方向及右下方向,可以确定出右方向的参考mb、左下方向的参考mb、下方向的参考mb及右下方向的参考mb;以及获得相邻mb的3个参考方向,其中参考方向为左上方向、上方向及右上方向,可以确定出左上方向的参考mb、上方向的参考mb及右上方向的参考mb。
步骤342、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤343、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤344、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤35、当所有图像中标记为0、1、2、3的mb预测处理完毕后,对所有标记符号为4的mb进行预测;
步骤351、确定参考mb
所有标记符号为4的mb最多仅能获得间隔一个或两个mb的4个参考方向,其中参考方向为右方向、右下方向、下方向及左下方向,可以确定出右方向的参考mb、右下方向的参考mb、下方向的参考mb及左下方向的参考mb;以及获得相邻mb的4个参考方向,其中参考方向为左方向、左上方向、上方向及右上方向,可以确定出左方向的参考mb、左上方向的参考mb、上方向的参考mb及右上方向的参考mb。
步骤352、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤353、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤354、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤36、当所有图像中标记为0、1、2、3、4的mb预测处理完毕后,对所有标记符号为5的mb进行预测;
步骤361、确定参考mb
所有标记符号为5的mb最多仅能获得间隔一个或两个mb的3个参考方向,其中参考方向为右下方向、下方向及左下方向,可以确定出右下方向的参考mb、下方向的参考mb及左下方向的参考mb;以及获得相邻mb的5个参考方向,其中参考方向为左方向、左上方向、上方向、右上方向及右方向,可以确定出左方向的参考mb、左上方向的参考mb、上方向的参考mb、右上方向的参考mb及右方向的参考mb。
步骤362、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤363、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤364、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤37、当所有图像中标记为0、1、2、3、4、5的mb预测处理完毕后,对所有标记符号为6的mb进行预测;
步骤371、确定参考mb
当扫描方向为从左至右时,所有标记符号为6的mb最多仅能获得间隔两个mb的1个参考方向,其中参考方向为左方向,可以确定出左方向的参考mb;以及获得相邻mb的6个参考方向,其中参考方向为左上方向、上方向、右上方向、右下方向、下方向及左下方向,可以确定出左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右下方向的参考mb、下方向的参考mb及左下方向的参考mb;
当扫描方向为从左至右时,所有标记符号为6的mb最多仅能获得间隔两个mb的1个参考方向,其中参考方向为右方向,可以确定出右方向的参考mb;以及获得相邻mb的6个参考方向,其中参考方向为左上方向、上方向、右上方向、右下方向、下方向及左下方向,可以确定出左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右下方向的参考mb、下方向的参考mb及左下方向的参考mb。
步骤372、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤373、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤374、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤38、当所有图像中标记为0、1、2、3、4、5、6的mb预测处理完毕后,对所有标记符号为7的mb进行预测;
步骤381、确定参考mb
所有标记符号为7的mb最多仅能获得间隔一个mb的1个参考方向,其中参考方向为右方向,可以确定出右方向的参考mb;以及获得相邻mb的7个参考方向,其中参考方向为左方向、左上方向、上方向、右上方向、右下方向、下方向及左下方向,可以确定出左方向的参考mb、左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右下方向的参考mb、下方向的参考mb及左下方向的参考mb。
步骤382、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤383、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤384、确定预测残差
与步骤314的方法一致,此处不再赘述。
步骤39、当所有图像中标记为0、1、2、3、4、5、6、7的mb预测处理完毕后,对所有标记符号为8的mb进行预测;
步骤381、确定参考mb
所有标记符号为8的mb最多仅能获得相邻mb的8个参考方向,其中参考方向为左方向、左上方向、上方向、右上方向、右方向、右下方向、下方向及左下方向,可以确定出左方向的参考mb、左上方向的参考mb、上方向的参考mb、右上方向的参考mb、右方向的参考mb、右下方向的参考mb、下方向的参考mb及左下方向的参考mb。
步骤382、纹理方向选取
与步骤312的方法一致,此处不再赘述。
步骤383、计算第二参考像素
与步骤313的方法一致,此处不再赘述。
步骤384、确定预测残差
与步骤314的方法一致,此处不再赘述。
综上所述,本文中应用了具体个例对本发明的原理及实现方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,本发明的保护范围应以所附的权利要求为准。