一种图像处理方法及装置转让专利

申请号 : CN201710977529.2

文献号 : CN107613301B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 范宝余

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明公开了一种图像处理方法及装置,其中该方法包括:获取原图像,原图像包含预先对该原图像进行划分得到的多个原图像宏块;基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,新图像中至少有一行包含有多个原图像宏块,且每个原图像宏块在新图像中均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行。本申请公开的上述技术方案,通过对原图像进行处理得到新图像,在新图像中,每个原图像宏块位于该原图像宏块所依赖的每个原图像宏块的后面的行,即同行原图像宏块之间不存在列依赖,从而可以加速WebP算法的并行处理,缩短图像处理的时间。

权利要求 :

1.一种图像处理方法,其特征在于,包括:

获取原图像,所述原图像包含预先对该原图像进行划分得到的多个原图像宏块;

基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,所述新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,所述新图像中至少有一行包含有多个原图像宏块,且每个所述原图像宏块在所述新图像中均位于该原图像宏块在所述原图像中所依赖的每个原图像宏块的后面的行;

基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在所述新图像中所在的列与在所述原图像中所在的列相同且任一列中包含的原图像宏块的排列在所述新图像中与在所述原图像中相同,第一列原图像宏块在所述新图像中与在所述原图像中位置相同,其余每列原图像宏块在所述新图像中相对于在所述原图像中均比上一列原图像宏块下移一个宏块;

基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,包括:

基于所述原图像的行数和列数得到对应的新图像,所述新图像的列数等于所述原图像的列数,所述新图像的行数等于所述原图像的列数与行数之和与1的差值;

按照所述新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定所述新图像中的每个新图像宏块为当前宏块,判断所述当前宏块的类型;

若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;

若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为所述原图像中对应原图像宏块的数据;

确定所述当前宏块的类型为填充宏块或原图像宏块,包括:

获取到所述当前宏块所处的行数、所述原图像的列数与1差值的最小值,若所述当前宏块所处的列数大于所述最小值,并且小于或等于所述新图像的列数,则确定所述当前宏块的类型为填充至右上侧的填充宏块;

若所述当前宏块所处的列数大于或等于0,并且小于或等于所述当前宏块所处的行数与所述原图像的行数的差值,则确定所述当前宏块的类型为填充至左下侧的填充宏块;

若所述当前宏块所处的列数大于所述当前宏块所处的行数与所述原图像的行数的差值,并且小于或等于所述最小值,则确定所述当前宏块的类型为原图像宏块。

2.根据权利要求1所述的方法,其特征在于,确定所述原图像中与每个新图像中的原图像宏块对应的原图像宏块,包括:

确定当前行数减去1为当前行数,当前列数加1为当前列数;

判断得到的当前行数是否等于-1或者当前列数是否等于所述新图像的列数,若当前行数不等于-1且当前列数不等于所述新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在所述原图像中相应位置上的数据为对应所述新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行所述确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出所述新图像中每个原图像宏块应具有的数据为止;

若当前行数等于-1或/和当前列数等于所述新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于所述新图像的行数,若迭代行数小于所述新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的行数,则判断迭代行数是否小于所述新图像的列数,若迭代行数小于所述新图像的列数,则设置迭代行数等于所述新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;

其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。

3.一种图像处理装置,其特征在于,包括:

第一获取模块,用于:获取原图像,所述原图像包含预先对该原图像进行划分得到的多个原图像宏块;

第二获取模块,用于:基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,所述新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,所述新图像中至少有一行包含有多个原图像宏块,且每个所述原图像宏块在所述新图像中均位于该原图像宏块在所述原图像中所依赖的每个原图像宏块的后面的行;

所述第二获取模块包括:

获取单元,用于:基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在所述新图像中所在的列与在所述原图像中所在的列相同且任一列中包含的原图像宏块的排列在所述新图像中与在所述原图像中相同,第一列原图像宏块在所述新图像中与在所述原图像中位置相同,其余每列原图像宏块在所述新图像中相对于在所述原图像中均比上一列原图像宏块下移一个宏块;

所述获取单元包括:

确定子单元,用于:基于所述原图像的行数和列数得到对应的新图像,所述新图像的列数等于所述原图像的列数,所述新图像的行数等于所述原图像的列数与行数之和与1的差值;按照所述新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定所述新图像中的每个新图像宏块为当前宏块,判断所述当前宏块的类型;若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为所述原图像中对应原图像宏块的数据;

所述确定子单元包括:

判断子单元,用于:获取到所述当前宏块所处的行数、所述原图像的列数与1差值的最小值,若所述当前宏块所处的列数大于所述最小值,并且小于或等于所述新图像的列数,则确定所述当前宏块的类型为填充至右上侧的填充宏块;若所述当前宏块所处的列数大于或等于0,并且小于或等于所述当前宏块所处的行数与所述原图像的行数的差值,则确定所述当前宏块的类型为填充至左下侧的填充宏块;若所述当前宏块所处的列数大于所述当前宏块所处的行数与所述原图像的行数的差值,并且小于或等于所述最小值,则确定所述当前宏块的类型为原图像宏块。

4.根据权利要求3所述的装置,其特征在于,所述确定子单元包括:

输出子单元,用于:确定当前行数减去1为当前行数,当前列数加1为当前列数;判断得到的当前行数是否等于-1或者当前列数是否等于所述新图像的列数,若当前行数不等于-1且当前列数不等于所述新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在所述原图像中相应位置上的数据为对应所述新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行所述确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出所述新图像中每个原图像宏块应具有的数据为止;若当前行数等于-1或/和当前列数等于所述新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于所述新图像的行数,若迭代行数小于所述新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的行数,则判断迭代行数是否小于所述新图像的列数,若迭代行数小于所述新图像的列数,则设置迭代行数等于所述新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。

说明书 :

一种图像处理方法及装置

技术领域

[0001] 本发明涉及图像压缩技术领域,更具体地说,涉及一种图像处理方法及装置。

背景技术

[0002] WebP是Goole提出的一种新的图片压缩格式,由于其压缩比更高而被国内外各大互联网公司使用。
[0003] 请参阅图1,其示出了现有技术中WebP有损压缩算法的主要流程图,首先要将图像YUV数据划分成宏块,其中,划分出的宏块之间存在依赖(即宏块编码存在先后顺序的限制)。图2示出了现有技术中所得图像中包含的宏块间的依赖图,其中,横向箭头表示列依赖,即如果要编码当前宏块时,需要已知当前宏块左侧宏块的数据,即需要保证当前宏块的左侧宏块已编码完,对应图1,就需要当前宏块的左侧宏块已从宏块预测进行到更新宏块边界之后(即当前宏块的左侧宏块处理完),才能进行当前宏块的编码;纵向箭头表示行依赖,即如果要编码当前宏块时,需要已知当前宏块上侧宏块的数据,即需要保证当前宏块的上侧宏块已编码完,与上述列依赖类似,即对应图1,就需要当前宏块的上侧宏块已从宏块预测进行到了更新宏块边界之后,才能进行当前宏块的编码。
[0004] 通过上述分析可知,当需要编码当前宏块时,需要保证当前宏块的左侧、上侧、左上侧宏块均已编码完才能进行当前宏块的编码。在按行编码宏块时,由于存在列依赖,就需要按列依赖处理完一个宏块之后,该宏块右侧的宏块才能从宏块预测开始进行后续操作,其他宏块与此类似,直至所有宏块均处理完为止才能进行下一步操作,这就导致处理宏块所花费的时间比较长、WebP算法并行性比较低。
[0005] 综上所述,现有技术中用于实现图像编解码的WebP算法在处理宏块时存在宏块间具有强烈的数据依赖,从而导致图像处理时间比较长、并行性比较低的问题。

发明内容

[0006] 有鉴于此,本发明的目的是提供一种图像处理方法及装置,以解决现有技术中用于实现图像编解码的WebP算法在处理宏块时存在宏块间具有强烈的数据依赖,从而导致图像处理时间比较长、并行性比较低的问题。
[0007] 为了实现上述目的,本发明提供如下技术方案:
[0008] 一种图像处理方法,包括:
[0009] 获取原图像,所述原图像包含预先对该原图像进行划分得到的多个原图像宏块;
[0010] 基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,所述新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,所述新图像中至少有一行包含有多个原图像宏块,且每个所述原图像宏块在所述新图像中均位于该原图像宏块在所述原图像中所依赖的每个原图像宏块的后面的行。
[0011] 优选的,基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,包括:
[0012] 基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在所述新图像中所在的列与在所述原图像中所在的列相同且任一列中包含的原图像宏块的排列在所述新图像中与在所述原图像中相同,第一列原图像宏块在所述新图像中与在所述原图像中位置相同,其余每列原图像宏块在所述新图像中相对于在所述原图像中均比上一列原图像宏块下移一个宏块。
[0013] 优选的,基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,包括:
[0014] 基于所述原图像的行数和列数得到对应的新图像,所述新图像的列数等于所述原图像的列数,所述新图像的行数等于所述原图像的列数与行数之和与1的差值;
[0015] 按照所述新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定所述新图像中的每个新图像宏块为当前宏块,判断所述当前宏块的类型;
[0016] 若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;
[0017] 若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为所述原图像中对应原图像宏块的数据。
[0018] 优选的,确定所述当前宏块的类型为填充宏块或原图像宏块,包括:
[0019] 获取到所述当前宏块所处的行数、所述原图像的列数与1差值的最小值,若所述当前宏块所处的列数大于所述最小值,并且小于或等于所述新图像的列数,则确定所述当前宏块的类型为填充至右上侧的填充宏块;
[0020] 若所述当前宏块所处的列数大于或等于0,并且小于或等于所述当前宏块所处的行数与所述原图像的行数的差值,则确定所述当前宏块的类型为填充至左下侧的填充宏块;
[0021] 若所述当前宏块所处的列数大于所述当前宏块所处的行数与所述原图像的行数的差值,并且小于或等于所述最小值,则确定所述当前宏块的类型为原图像宏块。
[0022] 优选的,确定所述原图像中与每个新图像中的原图像宏块对应的原图像宏块,包括:
[0023] 确定当前行数减去1为当前行数,当前列数加1为当前列数;
[0024] 判断得到的当前行数是否等于-1或者当前列数是否等于所述新图像的列数,若当前行数不等于-1且当前列数不等于所述新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在所述原图像中相应位置上的数据为对应所述新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行所述确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出所述新图像中每个原图像宏块应具有的数据为止;
[0025] 若当前行数等于-1或/和当前列数等于所述新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于所述新图像的行数,若迭代行数小于所述新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的行数,则判断迭代行数是否小于所述新图像的列数,若迭代行数小于所述新图像的列数,则设置迭代行数等于所述新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;
[0026] 其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。
[0027] 一种图像处理装置,包括:
[0028] 第一获取模块,用于:获取原图像,所述原图像包含预先对该原图像进行划分得到的多个原图像宏块;
[0029] 第二获取模块,用于:基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,所述新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,所述新图像中至少有一行包含有多个原图像宏块,且每个所述原图像宏块在所述新图像中均位于该原图像宏块在所述原图像中所依赖的每个原图像宏块的后面的行。
[0030] 优选的,所述第二获取模块包括:
[0031] 获取单元,用于:基于所述原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在所述新图像中所在的列与在所述原图像中所在的列相同且任一列中包含的原图像宏块的排列在所述新图像中与在所述原图像中相同,第一列原图像宏块在所述新图像中与在所述原图像中位置相同,其余每列原图像宏块在所述新图像中相对于在所述原图像中均比上一列原图像宏块下移一个宏块。
[0032] 优选的,所述获取单元包括:
[0033] 确定子单元,用于:基于所述原图像的行数和列数得到对应的新图像,所述新图像的列数等于所述原图像的列数,所述新图像的行数等于所述原图像的列数与行数之和与1的差值;按照所述新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定所述新图像中的每个新图像宏块为当前宏块,判断所述当前宏块的类型;若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为所述原图像中对应原图像宏块的数据。
[0034] 优选的,所述确定子单元包括:
[0035] 判断子单元,用于:获取到所述当前宏块所处的行数、所述原图像的列数与1差值的最小值,若所述当前宏块所处的列数大于所述最小值,并且小于或等于所述新图像的列数,则确定所述当前宏块的类型为填充至右上侧的填充宏块;若所述当前宏块所处的列数大于或等于0,并且小于或等于所述当前宏块所处的行数与所述原图像的行数的差值,则确定所述当前宏块的类型为填充至左下侧的填充宏块;若所述当前宏块所处的列数大于所述当前宏块所处的行数与所述原图像的行数的差值,并且小于或等于所述最小值,则确定所述当前宏块的类型为原图像宏块。
[0036] 优选的,所述确定子单元包括:
[0037] 输出子单元,用于:确定当前行数减去1为当前行数,当前列数加1为当前列数;判断得到的当前行数是否等于-1或者当前列数是否等于所述新图像的列数,若当前行数不等于-1且当前列数不等于所述新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在所述原图像中相应位置上的数据为对应所述新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行所述确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出所述新图像中每个原图像宏块应具有的数据为止;若当前行数等于-1或/和当前列数等于所述新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于所述新图像的行数,若迭代行数小于所述新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的行数,则判断迭代行数是否小于所述新图像的列数,若迭代行数小于所述新图像的列数,则设置迭代行数等于所述新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于所述新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。
[0038] 本发明提供的了一种图像处理方法及装置,其中该方法包括:获取原图像,原图像包含预先对该原图像进行划分得到的多个原图像宏块;基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,新图像中至少有一行包含有多个原图像宏块,且每个原图像宏块在新图像中均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行。本申请公开的上述技术方案,首先,获取原图像,原图像中包含预先对该原图像进行划分得到的多个原图像宏块,然后,基于原图像处理得到与之对应的包含有多个新图像宏块的新图像,在新图像中,新图像宏块包括原图像宏块以及数据为0的填充宏块,并且为了可以实现WebP算法的并行计算,需要保证新图像中至少有一行包含有多个原图像宏块,并且在新图像宏块中,每个原图像宏块均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行,即同行之间的原图像宏块间不存在列依赖,也就是说,同行的宏块之间不再有编码顺序的限制,此时,若对同行的宏块进行编码,当第一个宏块完成宏块预测进入下一个步骤时,同行的第二个宏块则可以进入宏块预测,即当正在处理的宏块进行下一个步骤时,后续的宏块可以紧随处理,这样就可以实现WebP算法并行处理多个宏块,而非像现有的技术方案一样需要等待正在处理的宏块处理完之后,下一个宏块才能开始处理,从而可以提高算法的并行性,缩短图像处理的时间。

附图说明

[0039] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0040] 图1为现有技术中WebP有损压缩算法的主要流程图;
[0041] 图2为现有技术中所得图像中包含的宏块间的依赖图;
[0042] 图3为本发明实施例提供的一种图像处理方法的流程图;
[0043] 图4为本发明实施例提供的一种基于对图2所示的图像进行处理后得到的新图像中包含的原图像宏块间的依赖图;
[0044] 图5为本发明实施例提供的一种确定原图像中与每个新图像中的原图像宏块对应的原图像宏块的一种具体实施方式的流程图;
[0045] 图6为本发明实施例提供的一种具体实施方式中原图像中包含的原图像宏块的排列示意图;
[0046] 图7为对应图6的原图像得到的新图像中包含的新图像宏块的排列示意图;
[0047] 图8为本发明实施例提供的一种图像处理装置的结构示意图。

具体实施方式

[0048] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049] 请参阅图3,其示出了一种图像处理方法的流程图,可以包括:
[0050] S11:获取原图像,原图像包含预先对该原图像进行划分得到的多个原图像宏块。
[0051] 需要说明的是,在本发明实施例中,上述技术方案的执行主体可以为对应的本发明实施例提供的一种图像处理装置。当需要对图像进行编解码时,首先,需要获取原图像,并预先对获取到的原图像进行划分得到多个原图像宏块,其中,对原图像进行划分与现有技术中对图像进行划分的实现原理一致,可以依据原图像的像素大小或者原图像的其他信息对原图像进行划分。
[0052] S12:基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,新图像中至少有一行包含有多个原图像宏块,且每个原图像宏块在新图像中均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行。
[0053] 在获取到原图像后,可以对原图像进行一系列处理,得到对应的包含有多个新图像宏块的新图像,其中,新图像宏块包括原图像中的原图像宏块以及预先设定的数据为0的填充宏块,其中,填充宏块的作用是:保证每行宏块的数量一致,即保证每行宏块的程序代码相同,减少程序代码不同而带来的额外工作量;并且为了实现WebP算法的并行计算,则在新图像中需要至少有一行包含有多个原图像宏块,即在新图形中保证每行可以有多个宏块存在,并且在新图像中,每个原图像宏块均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行,这样就可以实现同行宏块之间不存在列依赖,也即同行宏块之间不再有编码顺序的限制,此时,在对新图像中同行的宏块进行WebP算法处理时,当第一个宏块完成宏块预测进行下一步程序时,同行的第二个宏块则可以进入宏块预测程序,即同行的宏块可以按照排列顺序紧随处理,实现宏块的流水级加速,从而提高算法的并行性,缩短图像处理的时间。另外,本发明实施例提供的上述技术方案不仅适用于WebP算法,还适用于其他能够符合使得本发明实施例提供的上述技术方案顺利实现的要求的场景,均在本发明的保护范围之内。
[0054] 需要说明的是,上述所提及的并行算法可以在FPGA(Field-Programmable Gate Array,现场可编程门阵列)、GPU(Graphics Processing Unit,图形处理器)等架构上实现。
[0055] 本申请公开的上述技术方案,首先,获取原图像,原图像中包含预先对该原图像进行划分得到的多个原图像宏块,然后,基于原图像处理得到与之对应的包含有多个新图像宏块的新图像,在新图像中,新图像宏块包括原图像宏块以及数据为0的填充宏块,并且为了可以实现WebP算法的并行计算,需要保证新图像中至少有一行包含有多个原图像宏块,并且在新图像宏块中,每个原图像宏块均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行,即同行之间的原图像宏块间不存在列依赖,也就是说,同行的宏块之间不再有编码顺序的限制,此时,若对同行的宏块进行编码,当第一个宏块完成宏块预测进入下一个步骤时,同行的第二个宏块则可以进入宏块预测,即当正在处理的宏块进行下一个步骤时,后续的宏块可以紧随处理,这样就可以实现WebP算法并行处理多个宏块,而非像现有的技术方案一样需要等待正在处理的宏块处理完之后,下一个宏块才能开始处理,从而可以提高算法的并行性,缩短图像处理的时间。
[0056] 本发明实施例提供的一种图像处理方法,基于原图像处理得到对应的包含有多个新图像宏块的新图像,可以包括:
[0057] 基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在新图像中所在的列与在原图像中所在的列相同且任一列中包含的原图像宏块的排列在新图像中与在原图像中相同,第一列原图像宏块在新图像中与在原图像中位置相同,其余每列原图像宏块在新图像中相对于在原图像中均比上一列原图像宏块下移一个宏块。
[0058] 基于原图像得到的新图像中,每列原图像宏块在新图像中所在的列与在原图像中所在的列相同,并且为了保证图像不发生变化,任一列中包含的原图像宏块的排列在新图像中与在原图像中相同,而且在新图像中,第一列原图像宏块的位置与在原图像中的位置相同,为了弱化同行宏块之间的列依赖,则其余每列原图像宏块在新图像中相对于在原图像中均比上一列原图像宏块下移一个宏块,此时,可以使得每个原图像宏块所依赖的宏块均位于该原图像宏块的前面的行,即该原图像宏块不依赖与其同行的任一宏块。因此,当对该原图像宏块进行编码时,可以保证该原图像宏块所依赖的原图像宏块均以编码完,从而实现算法的并行加速。
[0059] 作为一个具体实施例,可以对上述技术方案进行说明,请参见图4,其示出了本发明实施例提供的一种基于对图2所示的图像进行处理后得到的新图像中包含的原图像宏块间的依赖图,其中,深色部分的宏块代表原图像宏块,浅色部分的宏块代表填充宏块,从图中可以看出,原图像宏块所依赖的原图像宏块均位于该原图像宏块的上面两行,而同行之间不再具有依赖关系。
[0060] 本发明实施例提供的一种图像处理方法,基于原图像处理得到对应的包含有多个新图像宏块的新图像,可以包括:
[0061] 基于原图像的行数和列数得到对应的新图像,新图像的列数等于原图像的列数,新图像的行数等于原图像的列数与行数之和与1的差值;
[0062] 按照新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定新图像中的每个新图像宏块为当前宏块,判断当前宏块的类型;
[0063] 若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;
[0064] 若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为原图像中对应原图像宏块的数据。
[0065] 在对原图像进行虚拟旋转时,对应的图像虚拟旋转算法可以为:统计原图像的行数以及列数,基于原图像的行数及列数得到虚拟旋转后新图像的列数等于原图像的列数,新图像的行数等于原图像的列数与行数之和与1的差值。对于虚拟旋转得到的新图像中,按照第一行第一个、第一行第二个、……、直至最后一行最后一个(也即由第一行至最后一行且在每行中由第一个至最后一个)的顺序依次确定每个新图像宏块为当前宏块,判断当前宏块为类型,若为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块,并且按照上述所提及的确定当前宏块应具有的数据为0;若为原图像宏块,则确定当前宏块应具有的数据为原图像中对应原图像宏块的数据。本申请中对于原图像进行相应计算得到对应新图像的实质为通过上述对应计算实现对原图像的虚拟旋转,以确定出原图像中每个原图像宏块在虚拟的新图像中应处的位置,进而基于得到的位置实现对原图像宏块的后续编码等处理。其中虚拟旋转及虚拟的新图像即为旋转及新图像均为虚拟的并未真实进行且并不真实存在的,也即本申请中只是通过相应的计算实现了对应旋转得到新图像的效果,确定出了每个原图像宏块在虚拟的新图像中应处于的位置(也即应按照怎样的顺序对每个原图像宏块应被进行后续编码等处理),而未真正对原图像进行旋转及未真正得到对应的新图像,从而减少因对原图像进行真实旋转所增加的操作时间以及减少原图像进行真实旋转后所得新图像所占用的内存资源。
[0066] 本发明实施例提供的一种图像处理方法,确定当前宏块的类型为填充宏块或原图像宏块,可以包括:
[0067] 获取到当前宏块所处的行数、原图像的列数与1差值的最小值,若当前宏块所处的列数大于最小值,并且小于或等于新图像的列数,则确定当前宏块的类型为填充至右上侧的填充宏块;
[0068] 若当前宏块所处的列数大于或等于0,并且小于或等于当前宏块所处的行数与原图像的行数的差值,则确定当前宏块的类型为填充至左下侧的填充宏块;
[0069] 若当前宏块所处的列数大于当前宏块所处的行数与原图像的行数的差值,并且小于或等于最小值,则确定当前宏块的类型为原图像宏块。
[0070] 在上述所提及的图像虚拟旋转算法中,确定当前宏块的类型为填充宏块或原图像宏块的具体实现方式可以为:确定当前宏块后,获取当前宏块所处的行数、原图像的列数与1差值这两者之间的最小值,若当前宏块所处的列数大于最小值,并且小于或等于新图像的列数,则确定当前宏块的类型为填充至右上侧的填充宏块;若当前宏块所处的列数大于或等于0,并且小于或等于当前宏块所处的行数与原图像的行数的差值,则确定当前宏块的类型为填充至左下侧的填充宏块;若当前宏块所处的列数大于当前宏块所处的行数与原图像的行数的差值,并且小于或等于最小值,则确定当前宏块的类型为原图像宏块,其中,当前宏块所处的行数以及列数按照新图像中宏块的排列均从0开始计算,即当前宏块在第一行时所处的行数为0,当前宏块在第一列时所处的列数为0,后续确定的当前宏块所处的行数以及列数以此类推,在此不再赘述。按照这种方式可以准确地确定出虚拟旋转所得新图像中每个当前宏块的类型。
[0071] 本发明实施例提供的一种图像处理方法,确定原图像中与每个新图像中的原图像宏块对应的原图像宏块,可以包括:
[0072] 确定当前行数减去1为当前行数,当前列数加1为当前列数;
[0073] 判断得到的当前行数是否等于-1或者当前列数是否等于新图像的列数,若当前行数不等于-1且当前列数不等于新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在原图像中相应位置上的数据为对应新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出新图像中每个原图像宏块应具有的数据为止;
[0074] 若当前行数等于-1或/和当前列数等于新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于新图像的行数,若迭代行数小于新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的行数,则判断迭代行数是否小于新图像的列数,若迭代行数小于新图像的列数,则设置迭代行数等于新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;
[0075] 其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。
[0076] 在利用上述所提及的图像虚拟算法对原图像进行虚拟旋转的过程中,如果当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为原图像中对应原图像宏块的数据,其中,为了确定出当前宏块应具有的数据、需要确定出原图像中与当前宏块具有对应关系的原图像宏块,也即需要确定出新图像中每个原图像宏块与原图像中每个原图像宏块之间的对应关系,具体来说,确定原图像中与每个新图像中的原图像宏块对应的原图像宏块的具体过程可以包括:从第一个确定出的原图像宏块开始,确定当前行数减去1为当前行数,当前列数加1为当前列数;判断得到的当前行数是否等于-1或者当前列数是否等于新图像的列数,若判断出当前行数不等于-1且当前列数不等于新图像宏块的列数,则输出当前列数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在原图像中相应位置上的数据为对应新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行上述确定当前行数减去1为当前列数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,在确定该原图像宏块应具有的数据之后,返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出新图像中每个原图像宏块应具有的数据为止;
[0077] 若判断出当前行数等于-1或/和当前列数等于新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于新图像的行数,若迭代行数小于新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的行数,则判断迭代行数是否小于新图像的列数,若迭代行数小于新图像的行数,则设置迭代行数等于新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0,并且,在上述所提及的返回执行输出当前行数的数值和当前列数的数值的步骤以及后续过程在上述第一次出现时已详细说明,在此不再赘述。
[0078] 基于上述对原图像的处理可知新图像中的第一个宏块即为原图像宏块,则基于当前行数、当前列数为0的初始值,可以确定新图像中第一个原图像宏块应具有的数据为原图像中第0行、第0列位置上的宏块应具有的数据,之后,可以按照上述所提及的流程遍历原图像中每个宏块的数据,并将对应宏块上的数据确定为对原图像进行虚拟旋转得到新图像中相应的原图像宏块应具有的数据,确定新图像中的每个原图像宏块应具有的数据的具体流程如图5,其示出了本发明实施例提供的一种确定原图像中与每个新图像中的原图像宏块对应的原图像宏块的一种具体实施方式的流程图,其中,cur_row、cur_col分别表示当前行行数、当前列数,map_row、map_col分别表示迭代行数、迭代列数,row_num、col_num分别表示新图像的行数、列数,并且cur_row、cur_col、map_row、map_col的初始值均为0。
[0079] 作为一个具体实施例,可以对本发明的技术方案进行具体说明,请参见图6其为本发明实施例提供的一种具体实施方式中原图像中包含的原图像宏块的排列示意图,从中可以获取到原图像的行数为4、列数为5,则基于新图像行数及列数与原图像的行数及列数的关系可以获取到新图像的行数为8、列数为5。利用上述所提及的技术方案可以对原图像的旋转进行模拟,在新图像中,将第0行、第0列的宏块确定为当前宏块,利用所提及的条件判断出其类型为原图像宏块(第1个原图像宏块),且在原图像中对应第0行、第0列,则可知新图像中第0行、第0列位置上的宏块应具有的数据为原图像中第0行、第0列位置上的宏块所具有的数据,第1次执行上述所提及的确定当前行数减去1为当前行数,当前列数加1为当前列数的流程,输出当前行数的数值为1、当前列数的数值为0,此时,当前行数的数值为1、当前列数的数值为0在原图像中的相应位置上的数据为对应新图像中第2个原图像宏块应具有的数据。然后,将新图像中的第0行、第1列的宏块确定为当前宏块,利用上述所提及的条件判断出其为填充至右上侧的填充宏块,则该宏块对应的数据为0,与此类似,确定后续宏块应具有的数据,直至确定第1行、第0列的当前宏块为原图像宏块(第2个原图像宏块),则第2次执行上述所提及的确定当前行数减去1为当前行数,当前列数加1为当前列数的流程,输出当前行数的数值为0、当前列数的数值为1,此时,当前行数的数值为0、当前列数的数值为1在原图像中的相应位置上的数据为对应新图像中第3个原图像宏块应具有的数据,以此类推,直至确定出新图像中第7行、第4列的宏块(即新图像中最后一个宏块)应具有的数据为止。最终,得到图7所示的对应图6的原图像得到的新图像中包含的新图像宏块的排列示意图。
[0080] 本发明实施例还提供了一种图像处理装置,如图8所示,可以包括:
[0081] 第一获取模块11,用于:获取原图像,原图像包含预先对该原图像进行划分得到的多个原图像宏块;
[0082] 第二获取模块12,用于:基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,新图像宏块包括原图像宏块及预先设定的数据为0的填充宏块,新图像中至少有一行包含有多个原图像宏块,且每个原图像宏块在新图像中均位于该原图像宏块在原图像中所依赖的每个原图像宏块的后面的行。
[0083] 本发明实施例提供的一种图像处理装置,第二获取模块可以包括:
[0084] 获取单元,用于:基于原图像处理得到对应的包含有多个新图像宏块的新图像,其中,每列原图像宏块在新图像中所在的列与在原图像中所在的列相同且任一列中包含的原图像宏块的排列在新图像中与在原图像中相同,第一列原图像宏块在新图像中与在原图像中位置相同,其余每列原图像宏块在新图像中相对于在原图像中均比上一列原图像宏块下移一个宏块。
[0085] 本发明实施例提供的一种图像处理装置,获取单元可以包括:
[0086] 确定子单元,用于:基于原图像的行数和列数得到对应的新图像,新图像的列数等于原图像的列数,新图像的行数等于原图像的列数与行数之和与1的差值;按照新图像由第一行至最后一行且在每行中由第一个至最后一个的顺序依次确定新图像中的每个新图像宏块为当前宏块,判断当前宏块的类型;若当前宏块的类型为填充至右上侧的宏块或填充至左下侧的宏块,则确定当前宏块为填充宏块;若当前宏块的类型为原图像宏块,则确定当前宏块应具有的数据为原图像中对应原图像宏块的数据。
[0087] 本发明实施例提供的一种图像处理装置,确定子单元可以包括:
[0088] 判断子单元,用于:获取到当前宏块所处的行数、原图像的列数与1差值的最小值,若当前宏块所处的列数大于最小值,并且小于或等于新图像的列数,则确定当前宏块的类型为填充至右上侧的填充宏块;若当前宏块所处的列数大于或等于0,并且小于或等于当前宏块所处的行数与原图像的行数的差值,则确定当前宏块的类型为填充至左下侧的填充宏块;若当前宏块所处的列数大于当前宏块所处的行数与原图像的行数的差值,并且小于或等于最小值,则确定当前宏块的类型为原图像宏块。
[0089] 本发明实施例提供的一种图像处理装置,确定子单元可以包括:
[0090] 输出子单元,用于:确定当前行数减去1为当前行数,当前列数加1为当前列数;判断得到的当前行数是否等于-1或者当前列数是否等于新图像的列数,若当前行数不等于-1且当前列数不等于新图像的列数,则输出当前行数的数值和当前列数的数值,确定该当前行数的数值及当前列数的数值在原图像中相应位置上的数据为对应新图像中第N+1个原图像宏块应具有的数据,其中,N为已经执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤的次数,第N+1个原图像宏块为按照确定当前宏块的顺序所确定出的第N+1个原图像宏块,并返回执行确定当前行数减去1为当前行数及当前列数加1为当前列数的步骤,直至确定出新图像中每个原图像宏块应具有的数据为止;若当前行数等于-1或/和当前列数等于新图像的列数,则确定迭代行数加1为迭代行数,判断迭代行数是否小于新图像的行数,若迭代行数小于新图像的行数,则设置迭代列数等于0、当前行数等于迭代行数、当前列数等于0,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的行数,则判断迭代行数是否小于新图像的列数,若迭代行数小于新图像的列数,则设置迭代行数等于新图像的行数、当前行数等于迭代行数减1、当前列数等于迭代列数,并返回执行输出当前行数的数值和当前列数的数值的步骤;若迭代行数不小于新图像的列数,则返回执行输出当前行数的数值和当前列数的数值的步骤;其中,当前行数、当前列数、迭代行数、迭代列数的初始值均为0。
[0091] 本发明实施例提供的一种图像处理装置中相关部分的说明请参见本发明实施例提供的一种图像处理方法中对应部分的详细说明,在此不再赘述。另外,本发明实施提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
[0092] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。