一种图像处理方法、装置和系统与流程

文档序号:11207176阅读:713来源:国知局
一种图像处理方法、装置和系统与流程

本公开涉及通信技术领域,尤其涉及一种图形处理方法、装置和系统。



背景技术:

随着高清图像和高分辨率的普及,对图像和视频进行编解码变得尤为重要,编解码技术也赢来挑战和机遇并存的好时代。目前最流行的编码技术是基于h.264/avc(或简称为h.264)的视频编码标准,其中,帧内预测是h.264所采用的编码技术之一。

在帧内预测技术中,h.264提供了三种帧内预测方式:基于4×4的亮度块帧内预测、基于16×16的亮度块帧内预测和基于8×8的色度块帧内预测,并且为每一种预测方式提供多种预测模式,其中,4×4亮度块的帧内预测有9种预测模式,16×16亮度块帧内预测和8×8色度块帧内预测各有4种。对于选择何种预测模式,编码器通常使用预测块和编码块之间差异最小的预测模式。为了在编码质量和码率之间获得平衡,h.264采用率失真优化(ratedistortionoptimization,rdo)策略进行最优化编码模式选择,通过遍历所有可能的编码模式,最后选择最小率失真代价模式作为最佳帧内预测模式。

当对亮度宏块预测时,按照rdo策略需要先后计算出9种4×4预测模式的最小代价和4种16×16预测模式的最小代价,然后从中选择较小的预测模式。采用这种帧内预测技术,需要对每个宏块进行592次rdo计算,才能确定每个宏块的帧内预测模式,计算复杂度太高。另外,该方式没有充分考虑图像内容,导致压缩效率低。



技术实现要素:

本公开实施例提供一种图像处理方法、装置和系统,该方法结合图像内容进行帧内预测模式确定,降低了计算复杂度,提高压缩效率。所述技术方案如下:

根据本公开实施例的第一方面,提供一种图像处理方法,该方法包括:

获取当前宏块与第一宏块中具有相同像素的第一统计值,第一宏块与当前宏块相邻且位于当前宏块的第一侧;

获取当前宏块与第二宏块中具有相同像素的第二统计值,第二宏块与当前宏块相邻且位于当前宏块的第二侧;

根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块。

通过结合图像内容进行帧内预测模式确定,降低了计算复杂度,提高压缩效率。

在一个实施例中,获取当前宏块与第一宏块中具有相同像素的第一统计值包括:比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同;统计当前宏块与第一宏块中像素值相同的个数,得到第一统计值。

在一个实施例中,获取当前宏块与第二宏块中具有相同像素的第二统计值包括:比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同;统计当前宏块与第二宏块中像素值相同的个数,得到第二统计值。

在一个实施例中,根据第一统计值、第二统计值和第一阈值,确定当前宏块的类型和预测模式包括:

比较第一统计值和第二统计值,以及比较第一统计值和第二统计值是否均大于或等于第一阈值;

当第一统计值大于或等于第二统计值,且第一统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第一预测模式;

当第二统计值大于第一统计值,且第二统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第二预测模式;

当第一统计值大于或等于第二统计值,且第一统计值小于第一阈值时,或者,当第二统计值大于第一统计值,且第二统计值小于第一阈值时,当前宏块为非帧内预测宏块。

在一个实施例中,第一阈值大于或等于第二阈值,第二阈值等于当前宏块的大小与预设系数的乘积。

根据本公开实施例的第二方面,提供一种图像处理方法,包括:

获取一帧图像,一帧图像中包含多个宏块;

按照第一方面及第一方面的任意一个实施例所提供的方法,确定一帧图像中每个宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块;

对每个帧内预测宏块的预测模式进行编码得到第一编码数据;

对每个非帧内预测宏块的像素值进行编码,得到第二编码数据;

将第一编码数据和第二编码数据打包成码流发送给终端设备。

采用这种帧内预测技术,通过考虑图像内容,对一帧画面中每个宏块的宏块类型进行区分和预测模式的确定,无需对每个宏块进行多次计算,大大降低了计算复杂度,在达到无损压缩的同时提高压缩效率。

在一个实施例中,当每个帧内预测宏块有像素残差时,对每个帧内预测宏块的预测模式进行编码,得到第一编码数据包括:

对每个帧内预测宏块的预测模式和每个帧内预测宏块的像素残差进行编码,得到第一编码数据;像素残差为根据帧内预测宏块与第一宏块或第二宏块的像素差值得到的。

根据本公开实施例的第三方面,提供一种图像处理的方法,包括:

接收服务器发送的码流;

对码流中的每个非帧内预测宏块的编码数据进行解码,得到每个非帧内预测宏块的像素值;

对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值;

根据每个非帧内预测宏块的像素值和每个帧内预测宏块的像素值进行画面显示。

该码流中编码数据在编码时考虑图像内容,达到无损压缩,在解码过程中能够快速解码,提高解码效率。

在一个实施例中,对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值包括:

对码流中每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的预测模式;

当帧内预测宏块的预测模式为第一预测模式时,帧内预测宏块的像素值为第一宏块的像素值;

当帧内预测宏块的预测模式为第二预测模式时,帧内预测宏块的像素值为第二宏块的像素值;

第一宏块与帧内预测宏块相邻且位于帧内预测宏块的第一侧,第二宏块与帧内预测宏块相邻且位于帧内预测宏块的第二侧。

在一个实施例中,该方法还包括:

对码流中每个帧内预测宏块的像素残差编码数据进行解码;

将解码后的像素残差叠加到对应的帧内预测宏块的像素值上。

根据本公开实施例的第四方面,提供一种服务器,包括:

获取模块,用于获取当前宏块与第一宏块中具有相同像素的第一统计值,第一宏块与当前宏块相邻且位于当前宏块的第一侧;

获取模块,用于获取当前宏块与第二宏块中具有相同像素的第二统计值,第二宏块与当前宏块相邻且位于当前宏块的第二侧;

确定模块,用于根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块。

在一个实施例中,获取模块包括:

比较子模块,用于比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同;

统计子模块,用于统计当前宏块与第一宏块中像素值相同的个数,得到第一统计值。

在一个实施例中,比较子模块,用于比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同;

统计子模块,用于统计当前宏块与第二宏块中像素值相同的个数,得到第二统计值。

在一个实施例中,确定模块包括:

第一确定子模块,用于比较第一统计值和第二统计值,以及比较第一统计值和第二统计值是否均大于或等于第一阈值;

第二确定子模块,用于当第一统计值大于或等于第二统计值,且第一统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第一预测模式;

第二确定子模块,用于当第二统计值大于第一统计值,且第二统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第二预测模式;

第二确定子模块,用于当第一统计值大于或等于第二统计值,且第一统计值小于第一阈值时,或者,当第二统计值大于第一统计值,且第二统计值小于第一阈值时,当前宏块为非帧内预测宏块。

在一个实施例中,第一阈值大于或等于第二阈值,第二阈值等于当前宏块的大小与预设系数的乘积。

根据本公开实施例的第五方面,提供一种服务器,包括:

获取模块,用于获取一帧图像,一帧图像中包含多个宏块;

确定模块,用于按照第一方面或第一方面中任一实施例所对应的方法,确定一帧图像中每个宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块;

编码模块,用于对每个帧内预测宏块的预测模式进行编码得到第一编码数据;

编码模块,用于对每个非帧内预测宏块的像素值进行编码,得到第二编码数据;

发送模块,用于将第一编码数据和第二编码数据打包成码流发送给终端设备。

在一个实施例中,编码模块还用于对每个帧内预测宏块的预测模式和每个帧内预测宏块的像素残差进行编码,得到第一编码数据;像素残差为根据帧内预测宏块与第一宏块或第二宏块的像素差值得到的。

根据本公开实施例的第六方面,提供一种终端设备,包括:

接收模块,用于接收服务器发送的码流;

解码模块,用于对码流中的每个非帧内预测宏块的编码数据进行解码,得到每个非帧内预测宏块的像素值;

解码模块,用于对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值;

处理模块,用于根据每个非帧内预测宏块的像素值和每个帧内预测宏块的像素值进行画面显示。

在一个实施例中,解码模块包括:

解码子模块,用于对码流中每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的预测模式;

处理子模块,用于当帧内预测宏块的预测模式为第一预测模式时,帧内预测宏块的像素值为第一宏块的像素值;

处理子模块,用于当帧内预测宏块的预测模式为第二预测模式时,帧内预测宏块的像素值为第二宏块的像素值;

第一宏块与帧内预测宏块相邻且位于帧内预测宏块的第一侧,第二宏块与帧内预测宏块相邻且位于帧内预测宏块的第二侧。

在一个实施例中,解码子模块,还用于对码流中每个帧内预测宏块的像素残差编码数据进行解码;

处理子模块,还用于将解码后的像素残差叠加到对应的帧内预测宏块的像素值上。

根据本公开实施例的第七方面,提供一种帧内预测系统,包括第五方面及第五方面的任意一个实施例所提供的服务器和第六方面及第六方面的任意一个实施例所提供的终端设备。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种图像处理的方法流程图;

图2是本公开实施例提供的一种图像处理的方法流程图;

图3是本公开实施例提供的一种图像处理的方法流程图;

图4是本公开实施例提供的一种移动零终端画面显示过程流程图;

图5是本公开实施例提供的一种移动零终端预测模式示意图;

图6是本公开实施例提供的一种服务器的结构图;

图7是本公开实施例提供的一种服务器的结构图;

图8是本公开实施例提供的一种服务器的结构图;

图9是本公开实施例提供的一种终端设备的结构图;

图10是本公开实施例提供的一种终端设备的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种图像处理的方法,如图1所示,该方法包括以下步骤:

101、获取当前宏块与第一宏块中具有相同像素的第一统计值。

其中,第一宏块与当前宏块相邻且位于当前宏块的第一侧。宏块是h.264标准中的基本编码单元,每个宏块的大小为m×n像素,一般情况下,宏块的大小为16×16个像素。可以理解的是,当前宏块和第一宏块的大小是相同的。

对于获取当前宏块与第一宏块中具有相同像素的第一统计值包括:

比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同;

统计当前宏块和第一宏块中像素值相同的个数,得到第一统计值。

在本发明的一个实施例中,比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同,可以是比较当前宏块中每个像素的像素值与第一宏块中对应像素的像素值大小,如果对应两个像素的像素值相等,意味着这两个像素为相同像素,则当前宏块与第一宏块中相同像素点的数量加1,进而统计得到当前宏块与第一宏块中具有相同像素的第一统计值。

在本发明的另一个实施例中,比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同,可以是对当前宏块中每个像素的像素值与第一宏块中对应像素的像素值求差,如果对应两个像素的像素值的差为0,意味着为这两个像素为相同像素,则当前宏块与第一宏块中相同像素点的数量加1,进而统计得到当前宏块与第一宏块中具有相同像素的第一统计值。

在本发明的一个实施例中,比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同,可以是获取当前宏块中每个像素的像素值与第一宏块中对应像素的像素值的差的绝对值,如果对应两个像素的像素值的差的绝对值为0,意味着这两个像素为相同像素,则当前宏块与第一宏块中相同像素点的数量加1,进而统计得到当前宏块与第一宏块中具有相同像素的第一统计值。

可以理解的是,若当前宏块与第一宏块中所有对应的像素的像素值均相同时,第一统计值的大小为当前宏块的大小;若当前宏块与第一宏块中所有对应的像素的像素值均不相同时,第一统计值的大小为0;因此,第一统计值的范围为[0,当前宏块的大小]。

102、获取当前宏块与第二宏块中具有相同像素的第二统计值。

其中,第二宏块与当前宏块相邻且位于当前宏块的上方。根据步骤101中所描述的,当前宏块和第二宏块的大小相同,而第一宏块与第二宏块的区别仅在于,第一宏块和第二宏块所处的位置不同。

对于获取当前宏块与第二宏块中具有相同像素的第二统计值包括:

比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同;

统计当前宏块与第二宏块中像素值相同的个数,得到第二统计值。

在本发明的一个实施例中,比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同,可以是比较当前宏块中每个像素的像素值与第二宏块中对应像素的像素值大小,如果对应两个像素的像素值相等,意味着这两个像素为相同像素,则当前宏块与第二宏块中相同像素点的数量加1,进而统计得到当前宏块与第二宏块中具有相同像素的第二统计值。

在本发明的另一个实施例中,比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同,可以是对当前宏块中每个像素的像素值与第二宏块中对应像素的像素值求差,如果对应两个像素的像素值的差为0,意味着为这两个像素为相同像素,则当前宏块与第二宏块中相同像素点的数量加1,进而统计得到当前宏块与第二宏块中具有相同像素的第二统计值。

在本发明的另一个实施例中,比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同,可以是获取当前宏块中每个像素的像素值与第二宏块中对应像素的像素值的差的绝对值,如果对应两个像素的像素值的差的绝对值为0,意味着这两个像素为相同像素,则当前宏块与第二宏块中相同像素点的数量加1,进而统计得到当前宏块与第二宏块中具有相同像素的第二统计值。

可以理解的是,若当前宏块与第二宏块中所有对应的像素的像素值均相同时,第二统计值的大小为当前宏块的大小;若当前宏块与第二宏块中所有对应的像素的像素值均不相同时,第二统计值的大小为0;因此,第二统计值的范围为[0,当前宏块的大小]。

103、根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式。

其中,宏块类型包括帧内预测宏块和非帧内预测宏块。帧内预测宏块意味着当前宏块与第一宏块或第二宏块相同或相似,当前宏块的像素值可以通过第一宏块或第二宏块的像素值得到;非帧内预测宏块意味着当前宏块与第一宏块或第二宏块不相同或不相似。只要在当前宏块的宏块类型为帧内预测宏块时,当前宏块才有预测模式可言。

另外,第一阈值大于或等于第二阈值,第二阈值等于当前宏块的大小与预设系数的乘积。第一阈值和预设系数可以根据实际需求进行调整,本公开实施例仅以此为例进行说明。

在本发明实施例中,根据第一统计值、第二统计值、第一阈值,确定当前宏块的宏块类型和预测模式包括:

比较第一统计值和第二统计值,以及比较第一统计值和第二统计值是否均大于或等于第一阈值;

当第一统计值大于或等于第二统计值,且第一统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第一预测模式;

当第二统计值大于第一统计值,且第二统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第二预测模式;

当第一统计值大于或等于第二统计值,且第一统计值小于第一阈值时,或者,当第二统计值大于第一统计值,且第二统计值小于第一阈值时,当前宏块为非帧内预测宏块。

其中,第一预测模式和第二预测模式可以用不同的标识进行标记,可以用0和1进行标记,也可以用a和b进行标记。本发明实施例对此不作具体限定。

为了更加清楚理解上述步骤,此处以宏块大小为16×16个像素,第二阈值为256×90%,则第一阈值大于或等于256×90%,第一预测模式和第二预测模式分别用0和1标记为例进行说明。

当第一统计值大于或等于第二统计值,且第一统计值大于或等于256×90%时,当前宏块为帧内预测宏块,且当前宏块的预测模式为0;

当第二统计值大于第一统计值,且第二统计值大于或等于256×90%时,当前宏块为帧内预测宏块,且当前宏块的预测模式为1;

当第一统计值大于或等于第二统计值,且第一统计值小于256×90%时,或者,当第二统计值大于第一统计值,且第二统计值小于256×90%时,当前宏块为非帧内预测宏块。

本公开实施例提供的帧内预测方法,通过获取当前宏块与第一宏块中具有相同像素的第一统计值、以及获取所述当前宏块与第二宏块中具有相同像素的第二统计值,根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式。采用这种帧内预测技术,结合图像内容对当前宏块的宏块类型的区分来确定帧内预测模式,无需对每个宏块进行多次计算,大大降低了计算复杂度,提高压缩效率。

基于上述图1对应的实施例中所描述的当前宏块的帧内预测方法,下面结合图2对一帧图像的帧内预测方法进行说明。

201、获取一帧图像。

其中,一帧图像中包含多个宏块。帧是影像动画中最小单元的单幅影像画面,一帧就是一副静止的画面。在本发明实施例中,可以根据屏幕分辨率的大小,自适应的将画面分解成若干高m宽n大小的宏块,每个宏块中有m×n个像素点。

202、按照步骤101~103所述的方法,确定一帧图像中每个宏块的宏块类型和预测模式。

基于步骤101~103所描述的,宏块的类型包括帧内预测宏块和非帧内预测宏,帧内预测宏块的预测模式包括第一预测模式和第二预测模式。因此,根据步骤101~103所述的方法,步骤202对一帧图像中的每个宏块进行宏块类型的区分,以及在宏块类型为帧内预测宏块时,确定该宏块的预测模式。

203、对每个帧内预测宏块的预测模式进行编码,得到第一编码数据。

当每个帧内预测宏块无像素残差时,仅需要对每个帧内预测宏块的预测模式进行编码,得到第一编码数据。在本发明的一个实施例中,可以对每个帧内预测宏块的预测模式用游程进行编码、以及对每个帧内预测宏块的像素残差进行熵编码,得到第一编码数据。其中,游程(runlengthcoding,rlc)编码,又称“运动长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码,常见的游程编码格式包括tga、packbitd、pcx以及ilbm等。

当每个帧内预测宏块有像素残差时,需要对每个帧内预测宏块的预测模式和每个帧内预测宏块的像素残差进行编码,得到第一编码数据;对于每个帧内预测宏块的预测模式可以采用游程编码,对于每个帧内预测宏块的像素残差进行熵编码。熵编码即编码过程中按照熵原理不丢失任何信息的编码,常见的熵编码包括:香农(shannon)编码、哈弗曼(huffman)编码和算术编码(arithmeticcoding);熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或者存储的压缩码流。

在本发明实施例中,每个帧内预测宏块的像素残差为根据帧内预测宏块与第一宏块或第二宏块的像素差值得到的。

以宏块的大小为16×16为例示例说明。当该宏块为帧内预测宏块,且预测模式为第一模式时,意味着该宏块与第一宏块相同或相似;当该宏块与第一宏块相同时,该宏块与第二宏块对应像素的像素值均相同,则该宏块与第一宏块的像素残差为0,当该宏块与第一宏块相似时,该宏块与第一宏块中对应像素的像素值有部分是不相同的,而这部分不相同的像素的像素值的差值即为该宏块与第一宏块的像素残差。

当该宏块为帧内预测宏块,且预测模式为第二预测模式时,意味着该宏块与第二宏块相同或相似;当该宏块与第二宏块相同时,该宏块与第二宏块对应像素的像素值均相同,则该帧内预测宏块与第二宏块的像素残差为0;当该宏块与第二宏块相似时,该宏块与第二宏块中对应像素的像素值有部分是不相同的,而这部分不相同的像素的像素值的差值即为该宏块与第二宏块的像素残差。

204、对每个非帧内预测宏块的像素值进行编码,得到第二编码数据。

在本发明的一个实施例中,可以对每个非帧内预测宏块的像素值采用jpeg进行压缩编码,得到第二编码数据。其中,jpeg是jointphotographicexportsgroup的英文缩写,中文称之为联合图像专家小组,该小组隶属于iso国际标准化组织,主要负责定制静态数字图像的编码方法,即jpeg算法。

205、将第一编码数据和第二编码数据打包成码流发送给终端设备。

本公开实施例提供的帧内预测方法,通过获取一帧图像,确定一帧图像中每个宏块的宏块类型和预测模式,当宏块类型为帧内预测模式时,根据每个帧内预测宏块的预测模式,获取每个帧内预测宏块的像素残差,对每个帧内预测宏块的预测模式和像素残差进行编码,得到第一编码数据,对每个非帧内预测宏块的像素值进行编码,得到第二编码数据,将第一编码数据和第二编码数据打包成码流发送给终端设备。采用这种帧内预测技术,通过考虑图像内容,对一帧画面中每个宏块的宏块类型进行区分和预测模式的确定,无需对每个宏块进行多次计算,大大降低了计算复杂度,在达到无损压缩的同时提高压缩效率。

当终端设备接收到服务器发送的码流时,结合图3所示,对终端设备的操作进行说明。

301、接收服务器发送的码流。

其中,该码流中包含帧内预测宏块的编码数据和非帧内预测宏块的编码数据。在本发明实施例中,帧内预测宏块的编码数据可通过jpeg编码得到,非帧内预测宏块的编码数据可通过游程和熵编码得到。

302、对码流中的每个非帧内预测宏块的编码数据进行解码,得到每个非帧内预测宏块的像素值。

在本发明实施例中,当码流中的每个非帧内预测宏块的编码数据为通过jpeg编码时,可对每个非帧内预测宏块进行jpeg解码,得到每个帧内预测宏块的像素值。可以理解的是,当码流中的每个非帧内预测宏块的编码数据采用其他编码方式时,可适应性对每个非帧内预测宏块进行对应的解码。

303、对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值。

在本发明实施例中,对所述码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值包括:

对码流中每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的预测模式;

当帧内预测宏块的预测模式为第一预测模式时,该帧内预测宏块的像素值为第一宏块的像素值;

当帧内预测宏块的预测模式为第二预测模式时,该帧内预测宏块的像素值为第二宏块的像素值;

其中,第一宏块与该帧内预测宏块相邻且位于该帧内预测宏块的第一侧,第二宏块与该帧内预测宏块相邻且位于该帧内预测宏块的第二侧。

当码流中包含每个帧内预测预测宏块的像素残差时,该方法还包括:对码流中每个帧内预测宏块的像素残差编码数据进行解码;将解码后的像素残差叠加到对应的帧内预测宏块的像素值上。

基于图1和图2所描述的帧内预测方法,帧内预测宏块的预测模式包括第一预测模式和第二预测模式。若服务器在编码时对帧内预测宏块的预测模式用游程进行编码,此时终端设备对码流中的游程进行解码,得到每个帧内预测宏块的预测模式;若服务器在编码时对帧内预测宏块的像素残差用熵编码进行编码时,此时终端设备对熵编码进行解码,得到每个帧内预测宏块的残差。进而,当帧内预测宏块的预测模式为第一预测模式时,将第一宏块的像素值复制到该帧内预测宏块,当帧内预测宏块的预测模式为第二预测模式时,将第二宏块的像素值复制到该帧内预测宏块,然后将解码得到的像素残差叠加到相应的像素值上,得到该帧内预测宏块的像素值。

304、根据每个非帧内预测宏块的像素值和每个帧内预测宏块的像素值进行画面显示。

本公开实施例提供的帧内预测方法,终端设备接收服务器发送的码流,对码流中的每个非帧内预测宏块的编码数据进行解码,得到每个非帧内预测宏块的像素值;对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值;根据每个非帧内预测宏块的像素值和每个帧内预测宏块的像素值进行画面显示。该码流中编码数据在编码时考虑图像内容,达到无损压缩,在解码过程中能够快速解码,提高解码效率。

基于上述图1~图3对应的实施例所描述的帧内预测方法,下面结合图4所示的移动零终端系统,对帧内预测方法进行具体说明。

在移动零终端系统中,由于实时性的要求,编码一帧的速率和压缩率同样重要,因此低复杂度的编码方案能很大程度上提高效率。移动零终端画面具有稳定且分块明显的特定,稳定是因为移动零终端画面很少快速切换,分块明显是因为移动零终端合成画面重点内容都在屏幕中央,而四周往往是简单背景,这些背景部分大体相似,只存在个别像素点的差异,因此不需要对整个画面进行编码。而且移动端应用的图像布局往往是自左向右或自上而下,存在很多相似的部分。在编码过程中,左边和上面的内容会先编码,所以只需要和左边和上面的内容进行比较,如果完全一致,则直接拷贝,如果90%相似,则先拷贝,然后对残差进行熵编码。对于不满足这种相似性的部分,使用jpeg编码器进行编码。

参照图4所示,服务器端的具体操作过程如下:

a、显卡生成一帧画面。

b、根据屏幕分辨率大下,自适应地将画面分解成若干宽m高n像素大小的宏块,每个宏块m×n个像素点。不失一般性的,宏块的大小默认为16×16像素。

c、对每个宏块与左边宏块逐个像素点求差的绝对值,如果差为0,则相同像素点加1,统计两个宏块的相同像素数nl;

d、将每个宏块与上面宏块逐个像素点求差的绝对值,如果差为0,则相同像素点加1,统计两个宏块的相同像素数nu;

e、如果nl>nu且nl=256,那么该宏块预测模式记为0,标记该宏块为帧内预测宏块;如果nu>nl且nu=256,那么该宏块预测模式记为1,标记该宏块为帧内预测宏块。

f、如果nl>nu且nl≥256×90%,那么该宏块预测模式记为0,标记该宏块为帧内预测宏块;如果nu>nl且nu≥256×90%,那么该宏块预测模式记为1,标记该宏块为帧内预测宏块。

如图5所示为对帧内预测宏块的预测模式的标记示意图。

g、将所有帧内预测宏块标记结束之后,对所有帧内预测宏块逐个进行编码,首先将0和1预测模式用游程进行编码,然后对残差进行熵编码。

h、对非帧内预测宏块使用jpeg进行压缩编码。

结合图4所示,服务器端相对于移动零终端为发送端,服务器端中的编码模块,即图4中所示的s端解码模块对接收的码流帧内预测宏块的预测模式和残差进行编码、以及对非帧内预测宏块进行jpeg编码。

i、整个画面编码结束,打包码流,进入网络发送给移动零客户端。

在本发明实施例中,该网络可以移动通信网络,如3g、4g、wifi等网络,也可以是其他有线网络,本发明对此不加限定。

参照图4所示,移动零客户端的具体操作过程如下:

a、从网络中接收服务器发送的码流。

b、对非帧内预测宏块进行jpeg解码。

c、从上至下,从左到右,对每个帧内预测宏块的预测模式0和1的游程进行解码,得到每个帧内预测宏块的预测模式。

d、如果预测模式为0,将左侧宏块像素值复制到当前宏块;如果预测模式为1,将上边宏块像素值复制到当前宏块。

e、如果有残差,则对残差进行解码,并把残差值叠加到相应的像素值上。

结合图4所示,移动零终端相对于服务器端为接收端,移动零终端中的解码模块,即图4中所示的r端解码模块对接收的码流进行解码。

f、解码完成,显示画面。

本公开实施例提供的帧内预测方法,通过获取当前宏块与第一宏块中具有相同像素的第一统计值、以及获取所述当前宏块与第二宏块中具有相同像素的第二统计值,根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式。采用这种帧内预测技术,结合图像内容对当前宏块的宏块类型的区分来确定帧内预测模式,无需对每个宏块进行多次计算,大大降低了计算复杂度,提高压缩效率。

基于上述图1~图4对应的实施例中所描述的远程控制方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种服务器,如图6所示,该服务器60包括:

获取模块601,用于获取当前宏块与第一宏块中具有相同像素的第一统计值,第一宏块与当前宏块相邻且位于当前宏块的第一侧;

获取模块601,用于获取当前宏块与第二宏块中具有相同像素的第二统计值,第二宏块与当前宏块相邻且位于当前宏块的第二侧;

确定模块602,用于根据第一统计值、第二统计值和第一阈值,确定当前宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块。

如图7所示,在一个实施例中,获取模块601包括:

比较子模块6011,用于比较当前宏块中每个像素的像素值是否与第一宏块中对应像素的像素值是否相同;

统计子模块6012,用于统计当前宏块与第一宏块中像素值相同的个数,得到第一统计值。

在一个实施例中,比较子模块6011,用于比较当前宏块中每个像素的像素值是否与第二宏块中对应像素的像素值是否相同;

统计子模块6012,用于统计当前宏块与第二宏块中像素值相同的个数,得到第二统计值。

如图7所示,在一个实施例中,确定模块602包括:

第一确定子模块6021,用于比较第一统计值和第二统计值,以及比较第一统计值和第二统计值是否均大于或等于第一阈值;

第二确定子模块6022,用于当第一统计值大于或等于第二统计值,且第一统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第一预测模式;

第二确定子模块6022,用于当第二统计值大于第一统计值,且第二统计值大于或等于第一阈值时,当前宏块为帧内预测宏块,且当前宏块的预测模式为第二预测模式;

第二确定子模块6022,用于当第一统计值大于或等于第二统计值,且第一统计值小于第一阈值时,或者,当第二统计值大于第一统计值,且第二统计值小于第一阈值时,当前宏块为非帧内预测宏块。

在一个实施例中,第一阈值大于或等于第二阈值,第二阈值等于当前宏块的大小与预设系数的乘积。

本公开实施例提供的帧内预测方法,通过结合图像内容对当前宏块的宏块类型的区分来确定帧内预测模式,无需对每个宏块进行多次计算,大大降低了计算复杂度,提高压缩效率。

本公开实施例提供一种服务器,如图8所示,该服务器80包括:

获取模块801,用于获取一帧图像,一帧图像中包含多个宏块;

确定模块802,用于按照图1实施例对应的方法,确定一帧图像中每个宏块的宏块类型和预测模式,宏块类型包括帧内预测宏块和非帧内预测宏块;

编码模块803,用于对每个帧内预测宏块的预测模式进行编码得到第一编码数据;

编码模块803,用于对每个非帧内预测宏块的像素值进行编码,得到第二编码数据;

发送模块804,用于将第一编码数据和第二编码数据打包成码流发送给终端设备。

在一个实施例中,编码模块803还用于对每个帧内预测宏块的预测模式和每个帧内预测宏块的像素残差进行编码,得到第一编码数据;像素残差为根据帧内预测宏块与第一宏块或第二宏块的像素差值得到的。

本公开实施例提供的帧内预测方法,通过考虑图像内容,对一帧画面中每个宏块的宏块类型进行区分和预测模式的确定,无需对每个宏块进行多次计算,大大降低了计算复杂度,在达到无损压缩的同时提高压缩效率。

本公开实施例提供一种终端设备,如图9所示,该终端设备90包括:

接收模块901,用于接收服务器发送的码流;

解码模块902,用于对码流中的每个非帧内预测宏块的编码数据进行解码,得到每个非帧内预测宏块的像素值;

解码模块902,用于对码流中的每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的像素值;

处理模块903,用于根据每个非帧内预测宏块的像素值和每个帧内预测宏块的像素值进行画面显示。

在一个实施例中,如图10所示,解码模块902包括:

解码子模块9021,用于对码流中每个帧内预测宏块的编码数据进行解码,得到每个帧内预测宏块的预测模式;

处理子模块9022,用于当帧内预测宏块的预测模式为第一预测模式时,帧内预测宏块的像素值为第一宏块的像素值;

处理子模块9022,用于当帧内预测宏块的预测模式为第二预测模式时,帧内预测宏块的像素值为第二宏块的像素值;

第一宏块与帧内预测宏块相邻且位于帧内预测宏块的第一侧,第二宏块与帧内预测宏块相邻且位于帧内预测宏块的第二侧。

在一个实施例中,解码子模块9021,还用于对码流中每个帧内预测宏块的像素残差编码数据进行解码;

处理子模块9022,还用于将解码后的像素残差叠加到对应的帧内预测宏块的像素值上。

本公开实施例提供的帧内预测方法,终端设备接收服务器发送的码流,该码流中编码数据在编码时考虑图像内容,达到无损压缩,在解码过程中能够快速解码,提高解码效率。

本发明公开实施例还提供了一种帧内预测系统,包括图8所示的服务器和图9~图10所示的任意一个终端设备。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1