CN105357530A - 一种预测编码的方法及装置 - Google Patents
一种预测编码的方法及装置 Download PDFInfo
- Publication number
- CN105357530A CN105357530A CN201510674355.3A CN201510674355A CN105357530A CN 105357530 A CN105357530 A CN 105357530A CN 201510674355 A CN201510674355 A CN 201510674355A CN 105357530 A CN105357530 A CN 105357530A
- Authority
- CN
- China
- Prior art keywords
- piecemeal
- anticipation
- parameter
- threshold
- result
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 239000013598 vector Substances 0.000 claims description 110
- 238000005070 sampling Methods 0.000 claims description 44
- 238000004364 calculation method Methods 0.000 abstract description 7
- 238000000638 solvent extraction Methods 0.000 abstract 5
- 238000010586 diagram Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种预测编码的方法及装置,属于多媒体技术领域。本发明实施例通过计算当前帧图像的每个64×64分块的预判信息,并根据64×64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
Description
技术领域
本发明涉及多媒体技术领域,特别涉及一种预测编码的方法及装置。
背景技术
视频编码就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。目前,较为普遍使用的视频编码标准为H.265编码标准,H.265能在有限带宽下传输更高质量的网络视频,主要面向高清数字电视以及视频编解码系统的应用。
在当前最新的H.265编码标准中,对每一帧中的图像进行划分,针对划分后的分块进行编码。在计算图像划分的过程中需要对所有可能出现的划分结果按照递归的方式进行计算。例如,每一帧的图像先按照64*64的规格进行划分,还可以按照32*32的规格对64*64分块进行划分,还可以按照16*16的规格对64*64分块中的每个32*32分块进行划分,还可以按照8*8的规格对64*64分块中的每个16*16分块进行划分,那么就需要有1+4+16+64=96种划分方式。因此,需要针对这96种划分方式进行完整的递归遍历,以确定最终的划分方式。
如图1所示,该图中为一帧待编码的图像,在目前H.265编码标准中,首先该图像需要进行完整的递归遍历,确定该帧图像的划分方式。其中,被较宽的浅色条纹相隔开的每个分块为一个64*64分块,每个64*64分块还需要进行32*32的规格的划分,每个32*32分块还需要进行16*16的规格的划分,每个16*16分块还需要进行8*8的规格划分。如图1中左上角的64*64分块,其中该分块中左上角的32*32分块颜色较为均匀,因此该32*32分块无需再进行划分,而其他各个32*32分块都由于颜色分布不均匀而需要进行16*16的规格的划分,甚至8*8的规格划分。而整个过程中,该左上角的32*32分块也需要进行16*16的规格的划分以及8*8的规格划分,才能最终确定该32*32分块无需进行进一步的划分后编码,即完成完整的递归遍历过程,对所有可能出现的结果进行计算,得到最终该帧图像的划分方式。
发明人发现现有技术至少存在以下问题:
H.265编码标准所使用的这种完整递归遍历算法,虽然在确定每帧图像的划分方式上很准确,但是确定划分方式的过程需要极大的计算量,对于实时性要求苛刻的场景并不适合,对于实时性要求苛刻的场合会导致编码延迟过大,甚至不能实时编码。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种预测编码的方法及装置。所述技术方案如下:
一方面,提供了一种预测编码的方法,所述方法包括:
计算当前帧图像的每个64*64分块的预判信息,所述预判信息中包括所述每个64*64分块中64*64分块对应的第一预判参数,所述每个64*64分块中每个32*32分块对应的第二预判参数以及所述每个64*64分块中每个16*16分块对应的第三预判参数;
按照指定顺序依次获取所述当前帧图像中的每个64*64分块;
当64*64分块位于所述当前帧图像的对角线上时,根据四叉树递归分块算法确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码;根据所述分块结果以及所述64*64分块的预判信息更新判断阈值;
当64*64分块位于所述当前帧图像的对角线以外时,根据所述更新后的判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码。
可选的,所述计算当前帧图像的每个64*64分块的预判信息,包括:
如果检测到当前帧图像为I帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
计算每个8*8分块在各预测方向上的复杂度向量,并将所述每个8*8分块在各预测方向上的复杂度向量作为所述当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果;
将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量;
将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量;
根据所述每个16*16分块不进行分块时的复杂度向量以及所述每个16*16分块属于的64*64分块,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
根据所述每个32*32分块在各预测方向上的复杂度向量,计算所述每个32*32分块由32*32向16*16进行分块的分块代价;根据所述每个32*32分块由32*32向16*16进行分块的分块代价以及所述每个32*32分块属于的64*64分块,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
根据所述每个64*64分块在各预测方向上的复杂度向量,计算所述每个64*64分块向32*32进行分块的分块代价;根据所述每个64*64分块由64*64向32*32进行分块的分块代价,确定所述每个64*64分块中64*64分块对应的第一预判参数。
可选的,所述根据所述分块结果以及所述64*64分块的预判信息更新判断阈值,包括:
根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
获取I帧对应的判断阈值;
根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值;
根据所述判断阈值中的由16*16向8*8进行分块的第三阈值和所述第三更新参数,更新所述第三阈值。
可选的,所述根据所述更新后的预设的帧内判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,包括:
将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果所述第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
将所述更新后的判断阈值中的第三阈值与所述64*64分块的预判信息中每个所述第三预判参数进行比较;如果所述第三预判参数大于所述第三阈值,则确定所述第三预判参数对应的所述64*64分块中的16*16分块需要由16*16向8*8进行分块;
可选的,所述计算当前帧图像的每个64*64分块的预判信息,包括:
如果检测到当前帧图像为P帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
计算每个8*8分块的运动复杂度,并将所述每个8*8分块的运动复杂度作为所述当前帧图像未下采样时每个16*16分块的运动复杂度的估算结果,根据所述每个16*16分块的运动复杂度,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据所述每个32*32分块的运动复杂度,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据所述每个64*64分块的运动复杂度,确定所述每个64*64分块中64*64分块对应的第一预判参数。
可选的,所述根据所述分块结果以及所述64*64分块的预判信息更新判断阈值,包括:
根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
获取P帧对应的判断阈值;
根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值。
可选的,所述根据所述更新后的预设的帧内判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,包括:
将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果所述第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
根据快速运动估计算法对所述64*64分块中的16*16分块进行计算,得到所述64*64分块中的16*16分块的分块结果。
另一方面,提供了一种预测编码的装置,所述装置包括:
计算模块,用于计算当前帧图像的每个64*64分块的预判信息,所述预判信息中包括所述每个64*64分块中64*64分块对应的第一预判参数,所述每个64*64分块中每个32*32分块对应的第二预判参数以及所述每个64*64分块中每个16*16分块对应的第三预判参数;
获取模块,用于按照指定顺序依次获取所述当前帧图像中的每个64*64分块;
第一编码模块,用于当64*64分块位于所述当前帧图像的对角线上时,根据四叉树递归分块算法确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码;根据所述分块结果以及所述64*64分块的预判信息更新判断阈值;
第二编码模块,用于当64*64分块位于所述当前帧图像的对角线以外时,根据所述更新后的判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码。
可选的,所述计算模块,包括:
第一下采样单元,用于如果检测到当前帧图像为I帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
第一计算单元,用于计算每个8*8分块在各预测方向上的复杂度向量,并将所述每个8*8分块在各预测方向上的复杂度向量作为所述当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果;
第二计算单元,用于将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量;
第三计算单元,用于将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量;
第四计算单元,用于根据所述每个16*16分块不进行分块时的复杂度向量以及所述每个16*16分块属于的64*64分块,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
第五计算单元,用于根据所述每个32*32分块在各预测方向上的复杂度向量,计算所述每个32*32分块由32*32向16*16进行分块的分块代价;根据所述每个32*32分块由32*32向16*16进行分块的分块代价以及所述每个32*32分块属于的64*64分块,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
第六计算单元,用于根据所述每个64*64分块在各预测方向上的复杂度向量,计算所述每个64*64分块向32*32进行分块的分块代价;根据所述每个64*64分块由64*64向32*32进行分块的分块代价,确定所述每个64*64分块中64*64分块对应的第一预判参数。
可选的,所述第一编码模块,包括:
第七计算单元,用于根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
第八计算单元,用于根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第九计算单元,用于根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第一获取单元,用于获取I帧对应的判断阈值;
第一更新单元,用于根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
第二更新单元,用于根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值;
第三更新单元,用于根据所述判断阈值中的由16*16向8*8进行分块的第三阈值和所述第三更新参数,更新所述第三阈值。
可选的,所述第二编码模块,包括:
第一确定单元,用于将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果所述第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
第二确定单元,用于将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
第三确定单元,用于将所述更新后的判断阈值中的第三阈值与所述64*64分块的预判信息中每个所述第三预判参数进行比较;如果所述第三预判参数大于所述第三阈值,则确定所述第三预判参数对应的所述64*64分块中的16*16分块需要由16*16向8*8进行分块;
可选的,所述计算模块,包括:
第二下采样单元,用于如果检测到当前帧图像为P帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
第十计算单元,用于计算每个8*8分块的运动复杂度,并将所述每个8*8分块的运动复杂度作为所述当前帧图像未下采样时每个16*16分块的运动复杂度的估算结果,根据所述每个16*16分块的运动复杂度,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
第十一计算单元,用于将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据所述每个32*32分块的运动复杂度,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
第十二计算单元,用于将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据所述每个64*64分块的运动复杂度,确定所述每个64*64分块中64*64分块对应的第一预判参数。
可选的,所述第一编码模块,包括:
第十三计算单元,用于根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
第十四计算单元,用于根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第十五计算单元,用于根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第二获取单元,用于获取P帧对应的判断阈值;
第四更新单元,用于根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
第五更新单元,用于根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值。
可选的,所述第二编码模块,包括:
第四确定单元,用于将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
第五确定单元,用于将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果所述第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
第六确定单元,用于根据快速运动估计算法对所述64*64分块中的16*16分块进行计算,得到所述64*64分块中的16*16分块的分块结果。
本发明实施例提供的技术方案带来的有益效果是:
通过计算当前帧图像的每个64*64分块的预判信息,并根据64*64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是背景技术中提到的待编码的一帧图像;
图2是本发明实施例一提供的预测编码的方法流程图;
图3是本发明实施例二提供的预测编码的方法中对16*16分块进行合并的示意图;
图4是本发明实施例三提供的预测编码的方法中64*64分块编码的示意图;
图5是本发明实施例四提供的预测编码的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种预测编码的方法,参见图2,该方法包括以下步骤:
201:计算当前帧图像的每个64*64分块的预判信息,预判信息中包括每个64*64分块中64*64分块对应的第一预判参数,每个64*64分块中每个32*32分块对应的第二预判参数以及每个64*64分块中每个16*16分块对应的第三预判参数;
202:按照指定顺序依次获取当前帧图像中的每个64*64分块;
203:当64*64分块位于当前帧图像的对角线上时,根据四叉树递归分块算法确定64*64分块的分块结果;根据分块结果对64*64分块进行编码;根据分块结果以及64*64分块的预判信息更新判断阈值;
204:当64*64分块位于当前帧图像的对角线以外时,根据更新后的判断阈值以及64*64分块的预判信息,确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码。
本发明实施例通过计算当前帧图像的每个64*64分块的预判信息,并根据64*64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
实施例二
本发明实施例提供了一种预测编码的方法,下面将结合具体的处理方式,对图2所示的处理流程进行详细的说明,内容可以如下:
需要说明的是,本发明实施例以对I帧编码进行说明。
其中,该方法包括:
201:计算当前帧图像的每个64*64分块的预判信息,预判信息中包括每个64*64分块中64*64分块对应的第一预判参数,每个64*64分块中每个32*32分块对应的第二预判参数以及每个64*64分块中每个16*16分块对应的第三预判参数。
其中,本步骤可以由以下步骤进行实现:
a.如果检测到当前帧图像为I帧,则对当前帧图像下采样至指定分辨率,并将下采样后的当前帧图像按照8*8进行图像分块;
其中,可以按照当前帧图像的1/4大小进行图像下采样。
b.计算每个8*8分块在各预测方向上的复杂度向量,并将每个8*8分块在各预测方向上的复杂度向量作为当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果。
其中,各预测方向为35种预测方向,每个8*8分块在各预测方向上的复杂度向量记做:J(8,35)。
其中,下采样后的每个8*8分块对应当前帧图像未进行下采样时的每个16*16分块,因此可以将每个8*8分块在各预测方向上的复杂度向量等价于当前帧图像中未进行下采样的每个16*16分块在各预测方向上的复杂度向量,即J’(16,35)=J(8,35)。
c.将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量。
其中,将4个相邻的16*16分块的复杂度按照相邻合并的规则进行向量合并,即当前16*16分块的索引坐标为(x,y),在水平方向上如果x%2==0,则x与x+1两个分块合并,垂直方向亦然。合并的规则是相同方向向量相加,这样得到了32*32的各预测方向的图像复杂度J’(32,35)。
其中,将4个相邻的16*16分块进行合并的方式如图3所示,其中,图中每一个分块代表一个16*16分块,分别将浅色的16*16分块之间进行合并,分别将深色条纹状的16*16分块之间进行合并。
d.将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量。
如步骤c中的方式得到每个64*64分块在各预测方向上的复杂度向量J’(64,35)。
此时,得到了当前帧图像中按照64*64分块后的每个64*64在35种方向的复杂度向量J’(64,35)[1],4组32*32在35种方向的复杂度向量J’(32,35)[1-4],16组16*16在35种方向的复杂度向量J’(16,35)[1-16]。
e.根据每个16*16分块不进行分块时的复杂度向量以及每个16*16分块属于的64*64分块,确定每个64*64分块中每个16*16分块对应的第三预判参数;
其中,本步骤可以由以下步骤进行实现:
在每个16*16分块在各预测方向上的复杂度向量中选取最小的一个,得到每个16*16分块不进行分块时的复杂度向量。
其中,每个16*16分块不进行分块时的复杂度向量为Jmin_nosplit_16,其计算公式如下:
Jmin_nosplit_16[1-16]=Min(J’(16,35)[1-16])。
根据每个16*16分块不进行分块时的复杂度向量以及每个16*16分块属于的64*64分块,确定每个64*64分块中每个16*16分块对应的第三预判参数。
其中,每个64*64分块中每个16*16分块做上述选取最小的复杂度向量的操作之后,得到每个64*64分块中16个16*16分块对应的Jmin_nosplit_16[1-16]。
f.根据每个32*32分块在各预测方向上的复杂度向量,计算每个32*32分块由32*32向16*16进行分块的分块代价;根据每个32*32分块由32*32向16*16进行分块的分块代价以及每个32*32分块属于的64*64分块,确定每个64*64分块中每个32*32分块对应的第二预判参数;
其中,本步骤可以由以下步骤进行实现:
在每个32*32分块在各预测方向上的复杂度向量中选取最小的一个,得到每个32*32分块不进行分块时的复杂度向量。
其中,每个32*32分块不进行分块时的复杂度向量为Jmin_nosplit_32,其计算公式如下:
Jmin_nosplit_32[1-4]=Min(J’(32,35)[1-4])。
根据每个16*16分块不进行分块时的复杂度向量,计算每个16*16分块属于的每个32*32分块进行分块时的复杂度向量。
其中,每个32*32分块进行分块时的复杂度向量Jmin_split_32可以由以下公式计算得到:
Jmin_split_32=Jmin_nosplit_16[1]+Jmin_nosplit_16[2]+Jmin_nosplit_16[3]Jmin_nosplit_16[4];
根据每个32*32分块不进行分块时的复杂度向量和每个32*32分块进行分块时的复杂度向量,计算每个32*32分块向16*16进行分块的分块代价。
每个32*32分块向16*16进行分块的分块代价为Jsplit_cost_32,其计算公式如下:
Jsplit_cost_32=Jmin_nosplit_32–Jmin_split_32;
根据每个32*32分块向16*16进行分块的分块代价以及每个32*32分块属于的64*64分块,确定每个64*64分块中每个32*32分块对应的第二预判参数。
其中,每个64*64分块中包含4个32*32分块,相应的,每个64*64分块中每个32*32分块对应的第二预判参数分别为:Jsplit_cost_32[1-4]。
g.根据每个64*64分块在各预测方向上的复杂度向量,计算每个64*64分块向32*32进行分块的分块代价;根据每个64*64分块由64*64向32*32进行分块的分块代价,确定每个64*64分块中64*64分块对应的第一预判参数。
其中,本步骤可以由以下步骤进行实现:
在每个64*64分块在各预测方向上的复杂度向量中选取最小的一个,得到每个64*64分块不进行分块时的复杂度向量。
其中,每个64*64分块不进行分块时的复杂度向量为Jmin_nosplit_64,其计算公式如下:
Jmin_nosplit_64[1]=Min(J’(64,35)[1])。
根据每个32*32分块不进行分块时的复杂度向量,计算每个32*32分块属于的每个64*64分块进行分块时的复杂度向量。
其中,每个64*64分块进行分块时的复杂度向量Jmin_split_64由以下公式计算得到:
Jmin_split_64=Jmin_nosplit_32[1]+Jmin_nosplit_32[2]+Jmin_nosplit_32[3]Jmin_nosplit_32[4];
根据每个64*64分块不进行分块时的复杂度向量和每个64*64分块进行分块时的复杂度向量,计算每个64*64分块向32*32进行分块的分块代价;
Jsplit_cost_64=Jmin_nosplit_64–Jmin_split_64;
根据每个64*64分块向32*32进行分块的分块代价,确定每个64*64分块中64*64分块对应的第一预判参数。
其中,每个64*64分块中64*64的第一预判参数分别为:Jsplit_cost_64[1]。
202:按照指定顺序依次获取每个64*64分块。
按照从左上角的分块开始在同一行中一直向右开始获取,直到该左上角的分块对应的分块行中的分块全部获取到后,开始从左侧第二行中一直向右的方式获取,依次编码当前帧图像中的全部64*64分块。
203:当64*64分块位于当前帧图像的对角线上时,根据四叉树递归分块算法确定64*64分块的分块结果,并据分块结果对64*64分块进行编码;根据分块结果以及64*64分块的预判信息更新判断阈值。
其中,如图4所示,图中为一个64*64分块的示意图,该图中深色斜纹的64*64分块位于64*64分块的对角线中。其中,编码的顺序可以为从A1开始横向逐一编码,即A1,B1,C1…J1,当J1编码完成时从第二行A2开始重新进行横向逐一编码,即A2,B2,C2…J2,依次对该64*64分块中的每个分块进行编码。其中,深色斜纹的64*64分块的编码方式通过步骤103进行编码。
其中,位于对角线上的64*64分块使用传统的四叉树递归分块算法确定该64*64分块的分块结果。其中,该分块结果中包括:64*64分块是否进行由64*64向32*32进行分块;或者,64*64分块是否进行由32*32向16*16进行分块;或者,64*64分块是否进行由16*16向8*8进行分块。
其中,系统中预设了判断阈值,为根据大量图像数据中是否进行分块的统计结果。该判断阈值用于针对每个64*64分块中是否由64*64向32*32进行分块,以及是否由32*32向16*16进行分块,以及是否由16*16向8*8进行分块的判断依据。
其中,具体更新方式可以由以下步骤进行实现:
a.根据分块结果中由64*64向32*32进行分块的分块结果,以及64*64分块中64*64分块对应的第一预判参数,计算64*64分块由64*64向32*32进行分块的第一更新参数。
b.根据分块结果中由32*32向16*16进行分块的分块结果,以及64*64分块中每个32*32分块对应的第二预判参数,计算64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数。
c.根据分块结果中由16*16向8*8进行分块的分块结果,以及64*64分块中每个16*16分块对应的第三预判参数,计算32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数。
其中,步骤a,b,c中使用的更新算法可以包括但不限于:线性分类器算法。
d.获取I帧对应的判断阈值。
e.根据判断阈值中的由64*64向32*32进行分块的第一阈值和第一更新参数,更新第一阈值。
f.根据判断阈值中的由32*32向16*16进行分块的第二阈值和第二更新参数,更新第二阈值。
g.根据判断阈值中的由16*16向8*8进行分块的第三阈值和第三更新参数,更新第三阈值。
其中,e、f、g三个步骤中共同的更新算法可以如以下公式得到:
(oldThres+decay*newThres)/(1+decay);
其中,oldThres在e、f、g三个步骤中为判断阈值中的原始的第一阈值、第二阈值、第三阈值;newThres在e、f、g三个步骤中为第一更新参数、第二更新参数、第三更新参数;decay为预设的权重参数。
其中,以图4为例进行说明,当A1编码结束后,即进行更新判断阈值的过程。
204:当64*64分块位于当前帧图像的对角线以外时,根据更新后的判断阈值以及64*64分块的预判信息,确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码。
其中,如图4为例进行说明,图4中全部的非深色斜纹的64*64分块由步骤204的编码方式进行编码。以图4中第一行的B1为例进行说明,当A1编码结束后,也会完成更新判断阈值的过程,此时根据该A1编码结束后更新的判断阈值确定B1的分块结果。
其中,步骤204可以由以下步骤进行实现:
a.将更新后的判断阈值中的第一阈值与第一预判参数进行比较;如果第一预判参数大于第一阈值,则确定64*64分块需要由64*64向32*32进行分块。
其中,第一预判参数为由64*64向32*32进行分块的分块代价,即不划分的复杂度减去划分的复杂度,因此这个值越大,说明划分越划算。
如果需要分块则再执行步骤104b,如果不需要则无需执行以下步骤。
b.将更新后的判断阈值中的第二阈值与64*64分块的预判信息中每个第二预判参数进行比较;如果第二预判参数大于第二阈值,则确定第二预判参数对应的64*64分块中的32*32分块需要由32*32向16*16进行分块。
其中,第二预判参数为由32*32向16*16进行分块的分块代价,即不划分的复杂度减去划分的复杂度,因此这个值越大,说明划分越划算。
如果需要分块则再执行步骤204c,如果不需要则无需执行以下步骤。
c.将更新后的判断阈值中的第三阈值与64*64分块的预判信息中每个第三预判参数进行比较;如果第三预判参数大于第三阈值,则确定第三预判参数对应的64*64分块中的16*16分块需要由16*16向8*8进行分块。
第三预判参数为16*16分块的复杂度,因此在预判参数大于阈值时,需要进行分块。
确定分块结果之后,再根据分块结果进行编码。
本发明实施例通过计算当前帧图像的每个64*64分块的预判信息,并根据64*64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
实施例三
本发明实施例提供了一种预测编码的方法,下面将结合具体的处理方式,对图2所示的处理流程进行详细的说明,内容可以如下:
需要说明的是,本发明实施例以对P帧编码进行说明。
其中,该方法包括:
201:计算当前帧图像的每个64*64分块的预判信息,预判信息中包括每个64*64分块中64*64分块对应的第一预判参数,每个64*64分块中每个32*32分块对应的第二预判参数以及每个64*64分块中每个16*16分块对应的第三预判参数。
其中,本步骤可以由以下步骤进行实现:
a.如果检测到当前帧图像为P帧,则对当前帧图像下采样至指定分辨率,并将下采样后的当前帧图像按照8*8进行图像分块。
其中,可以按照当前帧图像的1/4大小进行图像下采样。
b.计算每个8*8分块的运动复杂度,并将每个8*8分块的运动复杂度等价为当前帧图像未下采样时每个16*16分块的运动复杂度,根据每个16*16分块的运动复杂度,确定每个64*64分块中每个16*16分块对应的第三预判参数。
计算所有8*8分块的block在参考列表L1和L0在整像素的情况下的运动复杂度,记为J(8)。下采样后的每个8*8分块对应当前帧图像未进行下采样时的每个16*16分块,因此可以将每个8*8分块的运动复杂度等价于当前帧图像中未进行下采样的每个16*16分块的运动复杂度,即J’(16)=J(8)。
其中,每个64*64分块中包含16个16*16分块,因此64*64分块中每个16*16分块对应的第三预判参数可以为J’(16)[1-16]。
c.将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据每个32*32分块的运动复杂度,确定每个64*64分块中每个32*32分块对应的第二预判参数。
其中,将4个相邻的16*16分块的复杂度进行向量合并,即当前16*16分块的索引坐标为(x,y),在水平方向上如果x%2==0,则x与x+1两个分块合并,垂直方向亦然。合并的规则是相同方向向量相加,这样得到了32*32的图像运动复杂度J’(32)。其中,将4个相邻的16*16分块进行合并的方式如图3所示,其中,图中每一个分块代表一个16*16分块,分别将浅色的16*16分块之间进行合并,分别将深色条纹状的16*16分块之间进行合并。
其中,每个64*64分块中包含4个32*32分块,因此64*64分块中每个32*32分块对应的第三预判参数可以为J’(32[1-4])。
d.将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据每个64*64分块的运动复杂度,确定每个64*64分块中64*64分块对应的第一预判参数。
如步骤c中的方式得到每个64*64分块的运动复杂度J’(64)。
202:按照指定顺序依次获取每个64*64分块。
按照从左上角的分块开始在同一行中一直向右开始获取,直到改行中的分块全部获取到后,开始从左侧第二行中一直向右的方式获取,依次编码当前帧图像中的全部64*64分块。
203:当64*64分块位于当前帧图像的对角线上时,根据四叉树递归分块算法确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码;根据分块结果以及64*64分块的预判信息更新判断阈值。
其中,如图4所示,图中为一个64*64分块的示意图,该图中深色斜纹的64*64分块位于64*64分块的对角线中。其中,编码的顺序可以为从A1开始横向逐一编码,即A1,B1,C1…J1,当J1编码完成时从第二行A2开始重新进行横向逐一编码,即A2,B2,C2…J2,依次对该64*64分块中的每个分块进行编码。其中,深色斜纹的64*64分块的编码方式通过步骤103进行编码。
其中,位于对角线上的64*64分块使用传统的四叉树递归分块算法确定该64*64分块的分块结果。其中,该分块结果中包括:64*64分块是否进行由64*64向32*32进行分块;或者,64*64分块是否进行由32*32向16*16进行分块;或者,64*64分块是否进行由16*16向8*8进行分块。
其中,系统中预设了判断阈值,为根据大量图像数据中是否进行分块的统计结果。该判断阈值用于针对每个64*64分块中是否由64*64向32*32进行分块,以及是否由32*32向16*16进行分块,以及是否由16*16向8*8进行分块的判断依据。
其中,具体更新方式可以由以下步骤进行实现:
a.根据分块结果中由64*64向32*32进行分块的分块结果,以及64*64分块中64*64分块对应的第一预判参数,计算64*64分块由64*64向32*32进行分块的第一更新参数。
b.根据分块结果中由32*32向16*16进行分块的分块结果,以及64*64分块中每个32*32分块对应的第二预判参数,计算64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数。
c.根据分块结果中由16*16向8*8进行分块的分块结果,以及64*64分块中每个16*16分块对应的第三预判参数,计算32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数。
其中,步骤a,b,c中使用的更新算法可以包括但不限于:线性分类器算法。
d.获取P帧对应的判断阈值。
e.根据判断阈值中的由64*64向32*32进行分块的第一阈值和第一更新参数,更新第一阈值。
f.根据判断阈值中的由32*32向16*16进行分块的第二阈值和第二更新参数,更新第二阈值。
其中,e、f两个步骤中共同的更新算法可以如以下公式得到:
(oldThres+decay*newThres)/(1+decay);
其中,oldThres在e、f、g三个步骤中为判断阈值中的原始的第一阈值、第二阈值、第三阈值;newThres在e、f、g三个步骤中为第一更新参数、第二更新参数、第三更新参数;decay为预设的权重参数。
其中,以图4为例进行说明,当A1编码结束后,即进行更新判断阈值的过程。
204:当64*64分块位于当前帧图像的对角线以外时,根据更新后的判断阈值以及64*64分块的预判信息,确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码。
其中,如图4为例进行说明,图4中全部的非深色斜纹的64*64分块由步骤204的编码方式进行编码。以图4中第一行的B1为例进行说明,当A1编码结束后,也会完成更新判断阈值的过程,此时根据该A1编码结束后更新的判断阈值确定B1的分块结果。
其中,步骤204可以由以下步骤进行实现:
a.将更新后的判断阈值中的第一阈值与第一预判参数进行比较;如果第一预判参数大于第一阈值,则确定64*64分块需要由64*64向32*32进行分块。
如果需要分块则再执行步骤204b,如果不需要则无需执行以下步骤。
b.将更新后的判断阈值中的第二阈值与64*64分块的预判信息中每个第二预判参数进行比较;如果第二预判参数大于第二阈值,则确定第二预判参数对应的64*64分块中的32*32分块需要由32*32向16*16进行分块。
如果需要分块则再执行步骤104c,如果不需要则无需执行以下步骤。
c.根据快速运动估计算法对64*64分块中的16*16分块进行计算,得到64*64分块中的16*16分块的分块结果。
其中,针对16*16分块是否进一步进行分块的判断方式则通过快速运动估计算法进行确定。
本发明实施例通过计算当前帧图像的每个64*64分块的预判信息,并根据64*64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
实施例四
本发明实施例提供了一种预测编码的装置,参见图5,该装置包括:
计算模块501,用于计算当前帧图像的每个64*64分块的预判信息,预判信息中包括每个64*64分块中64*64分块对应的第一预判参数,每个64*64分块中每个32*32分块对应的第二预判参数以及每个64*64分块中每个16*16分块对应的第三预判参数;
获取模块502,用于按照指定顺序依次获取当前帧图像中的每个64*64分块;
第一编码模块503,用于当64*64分块位于当前帧图像的对角线上时,根据四叉树递归分块算法确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码;根据分块结果以及64*64分块的预判信息更新判断阈值;
第二编码模块504,用于当64*64分块位于当前帧图像的对角线以外时,根据更新后的判断阈值以及64*64分块的预判信息,确定64*64分块的分块结果,并根据分块结果对64*64分块进行编码。
其中,计算模块501,包括:
第一下采样单元,用于如果检测到当前帧图像为I帧,则对当前帧图像下采样至指定分辨率,并将下采样后的当前帧图像按照8*8进行图像分块;
第一计算单元,用于计算每个8*8分块在各预测方向上的复杂度向量,并将每个8*8分块在各预测方向上的复杂度向量作为当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果;
第二计算单元,用于将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量;
第三计算单元,用于将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量;
第四计算单元,用于根据每个16*16分块不进行分块时的复杂度向量以及每个16*16分块属于的64*64分块,确定每个64*64分块中每个16*16分块对应的第三预判参数;
第五计算单元,用于根据每个32*32分块在各预测方向上的复杂度向量,计算每个32*32分块由32*32向16*16进行分块的分块代价;根据每个32*32分块由32*32向16*16进行分块的分块代价以及每个32*32分块属于的64*64分块,确定每个64*64分块中每个32*32分块对应的第二预判参数;
第六计算单元,用于根据每个64*64分块在各预测方向上的复杂度向量,计算每个64*64分块向32*32进行分块的分块代价;根据每个64*64分块由64*64向32*32进行分块的分块代价,确定每个64*64分块中64*64分块对应的第一预判参数。
其中,第一编码模块503,包括:
第七计算单元,用于根据分块结果中由64*64向32*32进行分块的分块结果,以及64*64分块中64*64分块对应的第一预判参数,计算64*64分块由64*64向32*32进行分块的第一更新参数;
第八计算单元,用于根据分块结果中由32*32向16*16进行分块的分块结果,以及64*64分块中每个32*32分块对应的第二预判参数,计算64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第九计算单元,用于根据分块结果中由16*16向8*8进行分块的分块结果,以及64*64分块中每个16*16分块对应的第三预判参数,计算32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第一获取单元,用于获取I帧对应的判断阈值;
第一更新单元,用于根据判断阈值中的由64*64向32*32进行分块的第一阈值和第一更新参数,更新第一阈值;
第二更新单元,用于根据判断阈值中的由32*32向16*16进行分块的第二阈值和第二更新参数,更新第二阈值;
第三更新单元,用于根据判断阈值中的由16*16向8*8进行分块的第三阈值和第三更新参数,更新第三阈值。
其中,第二编码模块504,包括:
第一确定单元,用于将更新后的判断阈值中的第一阈值与第一预判参数进行比较;如果第一预判参数大于第一阈值,则确定64*64分块需要由64*64向32*32进行分块;
第二确定单元,用于将更新后的判断阈值中的第二阈值与64*64分块的预判信息中每个第二预判参数进行比较;如果第二预判参数大于第二阈值,则确定第二预判参数对应的64*64分块中的32*32分块需要由32*32向16*16进行分块;
第三确定单元,用于将更新后的判断阈值中的第三阈值与64*64分块的预判信息中每个第三预判参数进行比较;如果第三预判参数大于第三阈值,则确定第三预判参数对应的64*64分块中的16*16分块需要由16*16向8*8进行分块;
其中,计算模块501,包括:
第二下采样单元,用于如果检测到当前帧图像为P帧,则对当前帧图像下采样至指定分辨率,并将下采样后的当前帧图像按照8*8进行图像分块;
第十计算单元,用于计算每个8*8分块的运动复杂度,并将每个8*8分块的运动复杂度作为当前帧图像未下采样时每个16*16分块的运动复杂度的估算结果,根据每个16*16分块的运动复杂度,确定每个64*64分块中每个16*16分块对应的第三预判参数;
第十一计算单元,用于将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据每个32*32分块的运动复杂度,确定每个64*64分块中每个32*32分块对应的第二预判参数;
第十二计算单元,用于将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据每个64*64分块的运动复杂度,确定每个64*64分块中64*64分块对应的第一预判参数。
其中,第一编码模块503,包括:
第十三计算单元,用于根据分块结果中由64*64向32*32进行分块的分块结果,以及64*64分块中64*64分块对应的第一预判参数,计算64*64分块由64*64向32*32进行分块的第一更新参数;
第十四计算单元,用于根据分块结果中由32*32向16*16进行分块的分块结果,以及64*64分块中每个32*32分块对应的第二预判参数,计算64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第十五计算单元,用于根据分块结果中由16*16向8*8进行分块的分块结果,以及64*64分块中每个16*16分块对应的第三预判参数,计算32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第二获取单元,用于获取P帧对应的判断阈值;
第四更新单元,用于根据判断阈值中的由64*64向32*32进行分块的第一阈值和第一更新参数,更新第一阈值;
第五更新单元,用于根据判断阈值中的由32*32向16*16进行分块的第二阈值和第二更新参数,更新第二阈值。
其中,第二编码模块504,包括:
第四确定单元,用于将更新后的判断阈值中的第一阈值与第一预判参数进行比较;如果第一预判参数大于第一阈值,则确定64*64分块需要由64*64向32*32进行分块;
第五确定单元,用于将更新后的判断阈值中的第二阈值与64*64分块的预判信息中每个第二预判参数进行比较;如果第二预判参数大于第二阈值,则确定第二预判参数对应的64*64分块中的32*32分块需要由32*32向16*16进行分块;
第六确定单元,用于根据快速运动估计算法对64*64分块中的16*16分块进行计算,得到64*64分块中的16*16分块的分块结果。
本发明实施例通过计算当前帧图像的每个64*64分块的预判信息,并根据64*64分块位于当前帧图像中处于对角线上的分块的分块结果和预判信息对预设的判断阈值进行更新,再根据更新后的判断阈值和预判信息确定位于当前帧图像中处于非对角线上的分块的分块结果,最终根据分块结果进行分块以及编码。在编码过程中无需对每个分块进行完成遍历才可以确定分块结果,降低了H.265编码方式在编码过程中的计算量以及延迟,提高了H.265编码方式的编码效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种预测编码的方法,其特征在于,所述方法包括:
计算当前帧图像的每个64*64分块的预判信息,所述预判信息中包括所述每个64*64分块中64*64分块对应的第一预判参数,所述每个64*64分块中每个32*32分块对应的第二预判参数以及所述每个64*64分块中每个16*16分块对应的第三预判参数;
按照指定顺序依次获取所述当前帧图像中的每个64*64分块;
当64*64分块位于所述当前帧图像的对角线上时,根据四叉树递归分块算法确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码;根据所述分块结果以及所述64*64分块的预判信息更新判断阈值;
当64*64分块位于所述当前帧图像的对角线以外时,根据所述更新后的判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码。
2.根据权利要求1所述的方法,其特征在于,所述计算当前帧图像的每个64*64分块的预判信息,包括:
如果检测到当前帧图像为I帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
计算每个8*8分块在各预测方向上的复杂度向量,并将所述每个8*8分块在各预测方向上的复杂度向量作为所述当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果;
将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量;
将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量;
根据所述每个16*16分块不进行分块时的复杂度向量以及所述每个16*16分块属于的64*64分块,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
根据所述每个32*32分块在各预测方向上的复杂度向量,计算所述每个32*32分块由32*32向16*16进行分块的分块代价;根据所述每个32*32分块由32*32向16*16进行分块的分块代价以及所述每个32*32分块属于的64*64分块,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
根据所述每个64*64分块在各预测方向上的复杂度向量,计算所述每个64*64分块向32*32进行分块的分块代价;根据所述每个64*64分块由64*64向32*32进行分块的分块代价,确定所述每个64*64分块中64*64分块对应的第一预判参数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述分块结果以及所述64*64分块的预判信息更新判断阈值,包括:
根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
获取I帧对应的判断阈值;
根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值;
根据所述判断阈值中的由16*16向8*8进行分块的第三阈值和所述第三更新参数,更新所述第三阈值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述更新后的预设的帧内判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,包括:
将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果所述第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
将所述更新后的判断阈值中的第三阈值与所述64*64分块的预判信息中每个所述第三预判参数进行比较;如果所述第三预判参数大于所述第三阈值,则确定所述第三预判参数对应的所述64*64分块中的16*16分块需要由16*16向8*8进行分块。
5.根据权利要求1所述的方法,其特征在于,所述计算当前帧图像的每个64*64分块的预判信息,包括:
如果检测到当前帧图像为P帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
计算每个8*8分块的运动复杂度,并将所述每个8*8分块的运动复杂度作为所述当前帧图像未下采样时每个16*16分块的运动复杂度的估算结果,根据所述每个16*16分块的运动复杂度,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据所述每个32*32分块的运动复杂度,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据所述每个64*64分块的运动复杂度,确定所述每个64*64分块中64*64分块对应的第一预判参数。
6.根据权利要求5所述的方法,其特征在于,所述根据所述分块结果以及所述64*64分块的预判信息更新判断阈值,包括:
根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
获取P帧对应的判断阈值;
根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值。
7.根据权利要求6所述的方法,其特征在于,所述根据所述更新后的预设的帧内判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,包括:
将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果所述第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
根据快速运动估计算法对所述64*64分块中的16*16分块进行计算,得到所述64*64分块中的16*16分块的分块结果。
8.一种预测编码的装置,其特征在于,所述装置包括:
计算模块,用于计算当前帧图像的每个64*64分块的预判信息,所述预判信息中包括所述每个64*64分块中64*64分块对应的第一预判参数,所述每个64*64分块中每个32*32分块对应的第二预判参数以及所述每个64*64分块中每个16*16分块对应的第三预判参数;
获取模块,用于按照指定顺序依次获取所述当前帧图像中的每个64*64分块;
第一编码模块,用于当64*64分块位于所述当前帧图像的对角线上时,根据四叉树递归分块算法确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码;根据所述分块结果以及所述64*64分块的预判信息更新判断阈值;
第二编码模块,用于当64*64分块位于所述当前帧图像的对角线以外时,根据所述更新后的判断阈值以及所述64*64分块的预判信息,确定所述64*64分块的分块结果,并根据所述分块结果对所述64*64分块进行编码。
9.根据权利要求8所述的装置,其特征在于,所述计算模块,包括:
第一下采样单元,用于如果检测到当前帧图像为I帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
第一计算单元,用于计算每个8*8分块在各预测方向上的复杂度向量,并将所述每个8*8分块在各预测方向上的复杂度向量作为所述当前帧图像未下采样时每个16*16分块在各预测方向上的复杂度向量的估算结果;
第二计算单元,用于将各相邻的4个16*16分块在各预测方向上的复杂度向量进行向量合并,得到每个32*32分块在各预测方向上的复杂度向量;
第三计算单元,用于将各相邻的4个32*32分块在各预测方向上的复杂度向量进行向量合并,得到每个64*64分块在各预测方向上的复杂度向量;
第四计算单元,用于根据所述每个16*16分块不进行分块时的复杂度向量以及所述每个16*16分块属于的64*64分块,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
第五计算单元,用于根据所述每个32*32分块在各预测方向上的复杂度向量,计算所述每个32*32分块由32*32向16*16进行分块的分块代价;根据所述每个32*32分块由32*32向16*16进行分块的分块代价以及所述每个32*32分块属于的64*64分块,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
第六计算单元,用于根据所述每个64*64分块在各预测方向上的复杂度向量,计算所述每个64*64分块向32*32进行分块的分块代价;根据所述每个64*64分块由64*64向32*32进行分块的分块代价,确定所述每个64*64分块中64*64分块对应的第一预判参数。
10.根据权利要求9所述的装置,其特征在于,所述第一编码模块,包括:
第七计算单元,用于根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
第八计算单元,用于根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第九计算单元,用于根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第一获取单元,用于获取I帧对应的判断阈值;
第一更新单元,用于根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
第二更新单元,用于根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值;
第三更新单元,用于根据所述判断阈值中的由16*16向8*8进行分块的第三阈值和所述第三更新参数,更新所述第三阈值。
11.根据权利要求10所述的装置,其特征在于,所述第二编码模块,包括:
第一确定单元,用于将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果所述第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
第二确定单元,用于将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
第三确定单元,用于将所述更新后的判断阈值中的第三阈值与所述64*64分块的预判信息中每个所述第三预判参数进行比较;如果所述第三预判参数大于所述第三阈值,则确定所述第三预判参数对应的所述64*64分块中的16*16分块需要由16*16向8*8进行分块。
12.根据权利要求8所述的装置,其特征在于,所述计算模块,包括:
第二下采样单元,用于如果检测到当前帧图像为P帧,则对所述当前帧图像下采样至指定分辨率,并将下采样后的所述当前帧图像按照8*8进行图像分块;
第十计算单元,用于计算每个8*8分块的运动复杂度,并将所述每个8*8分块的运动复杂度作为所述当前帧图像未下采样时每个16*16分块的运动复杂度的估算结果,根据所述每个16*16分块的运动复杂度,确定所述每个64*64分块中每个16*16分块对应的第三预判参数;
第十一计算单元,用于将各相邻的4个16*16分块的运动复杂度进行向量合并,得到每个32*32分块的运动复杂度,并根据所述每个32*32分块的运动复杂度,确定所述每个64*64分块中每个32*32分块对应的第二预判参数;
第十二计算单元,用于将各相邻的4个32*32分块的运动复杂度进行向量合并,得到每个64*64分块的运动复杂度,并根据所述每个64*64分块的运动复杂度,确定所述每个64*64分块中64*64分块对应的第一预判参数。
13.根据权利要求12所述的装置,其特征在于,所述第一编码模块,包括:
第十三计算单元,用于根据所述分块结果中由64*64向32*32进行分块的分块结果,以及所述64*64分块中64*64分块对应的第一预判参数,计算所述64*64分块由64*64向32*32进行分块的第一更新参数;
第十四计算单元,用于根据所述分块结果中由32*32向16*16进行分块的分块结果,以及所述64*64分块中每个32*32分块对应的第二预判参数,计算所述64*64分块中的每个32*32分块由32*32向16*16进行分块的第二更新参数;
第十五计算单元,用于根据所述分块结果中由16*16向8*8进行分块的分块结果,以及所述64*64分块中每个16*16分块对应的第三预判参数,计算所述32*32分块中的每个16*16分块由16*16向8*8进行分块的第三更新参数;
第二获取单元,用于获取P帧对应的判断阈值;
第四更新单元,用于根据所述判断阈值中的由64*64向32*32进行分块的第一阈值和所述第一更新参数,更新所述第一阈值;
第五更新单元,用于根据所述判断阈值中的由32*32向16*16进行分块的第二阈值和所述第二更新参数,更新所述第二阈值。
14.根据权利要求13所述的装置,其特征在于,所述第二编码模块,包括:
第四确定单元,用于将所述更新后的判断阈值中的第一阈值与所述第一预判参数进行比较;如果第一预判参数大于所述第一阈值,则确定所述64*64分块需要由64*64向32*32进行分块;
第五确定单元,用于将所述更新后的判断阈值中的第二阈值与所述64*64分块的预判信息中每个所述第二预判参数进行比较;如果所述第二预判参数大于所述第二阈值,则确定所述第二预判参数对应的所述64*64分块中的32*32分块需要由32*32向16*16进行分块;
第六确定单元,用于根据快速运动估计算法对所述64*64分块中的16*16分块进行计算,得到所述64*64分块中的16*16分块的分块结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510674355.3A CN105357530B (zh) | 2015-10-16 | 2015-10-16 | 一种预测编码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510674355.3A CN105357530B (zh) | 2015-10-16 | 2015-10-16 | 一种预测编码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105357530A true CN105357530A (zh) | 2016-02-24 |
CN105357530B CN105357530B (zh) | 2018-06-19 |
Family
ID=55333374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510674355.3A Active CN105357530B (zh) | 2015-10-16 | 2015-10-16 | 一种预测编码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105357530B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101415121A (zh) * | 2007-10-15 | 2009-04-22 | 华为技术有限公司 | 一种自适应的帧预测的方法及装置 |
WO2011096770A2 (ko) * | 2010-02-02 | 2011-08-11 | (주)휴맥스 | 영상 부호화/복호화 장치 및 방법 |
US20130039423A1 (en) * | 2010-04-13 | 2013-02-14 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Sample region merging |
CN103155556A (zh) * | 2010-10-05 | 2013-06-12 | 通用仪表公司 | 用于基于特征的视频编译的方法和设备 |
-
2015
- 2015-10-16 CN CN201510674355.3A patent/CN105357530B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101415121A (zh) * | 2007-10-15 | 2009-04-22 | 华为技术有限公司 | 一种自适应的帧预测的方法及装置 |
WO2011096770A2 (ko) * | 2010-02-02 | 2011-08-11 | (주)휴맥스 | 영상 부호화/복호화 장치 및 방법 |
US20130039423A1 (en) * | 2010-04-13 | 2013-02-14 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Sample region merging |
CN103155556A (zh) * | 2010-10-05 | 2013-06-12 | 通用仪表公司 | 用于基于特征的视频编译的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105357530B (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111147867B (zh) | 一种多功能视频编码cu划分快速决策方法及存储介质 | |
KR100583902B1 (ko) | 이미지세그멘테이션 | |
KR102660668B1 (ko) | 크로스 컴포넌트 의존성 감소를 위한 방법들 | |
US11070803B2 (en) | Method and apparatus for determining coding cost of coding unit and computer-readable storage medium | |
CN104247427A (zh) | 使用分区编码的有效预测 | |
CN110620924B (zh) | 编码数据的处理方法、装置、计算机设备及存储介质 | |
CA3125500A1 (en) | Chroma block prediction method and apparatus | |
US20230306563A1 (en) | Image filling method and apparatus, decoding method and apparatus, electronic device, and medium | |
EP3535975B1 (en) | Apparatus and method for 3d video coding | |
US11670039B2 (en) | Temporal hole filling for depth image based video rendering | |
CN113994692A (zh) | 用于利用光流的预测细化的方法和装置 | |
KR20070026360A (ko) | 비디오 정보를 압축/압축해제하기 위한 방법 | |
US10616585B2 (en) | Encoding data arrays | |
CN104506867A (zh) | 采样点自适应偏移参数估计方法及装置 | |
US20140184739A1 (en) | Foreground extraction method for stereo video | |
CN105357530A (zh) | 一种预测编码的方法及装置 | |
CN106303538B (zh) | 一种支持多源数据融合的视频分级编码方法及装置 | |
Wang et al. | Region of interest oriented fast mode decision for depth map coding in DIBR | |
CN104601950A (zh) | 一种视频监控方法 | |
CN107483936B (zh) | 一种基于宏像素的光场视频帧间预测方法 | |
US10257488B2 (en) | View synthesis using low resolution depth maps | |
WO2021021762A1 (en) | Electro-optical transfer function conversion and signal legalization | |
US10218978B2 (en) | Data processing systems | |
CN112819150B (zh) | 基于神经网络的预测块生成方法及装置 | |
US20160042528A1 (en) | Method and apparatus for determining a sequence of transitions |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231012 Address after: 31a, 15 / F, building 30, maple mall, bangrang Road, Brazil, Singapore Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd. Address before: 511442 25 / F, building B-1, Wanda Plaza North, Wanbo business district, 79 Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU BAIGUOYUAN NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |