发明名称 一种3D-HEVC深度视频帧内快速编码方法
摘要 本发明公开了一种3D-HEVC深度视频帧内快速编码方法,其在编码之前先对深度视频帧进行了平滑处理即预处理,降低了空域复杂度,提高了编码性能及虚拟视点质量;由于预处理后的深度视频帧更加平滑,更多的最大编码单元的最大划分深度集中在0和1,因此使用BP神经网络主动学并预测最大编码单元的最大划分深度,再通过对应的彩色视频帧中的最大编码单元的最大划分深度及深度视频帧中的编码单元的边缘纹理信息赋值修正预测的最大划分深度,提前终止编码单元的划分,同时根据每层的编码单元的预测模式的统计结果及预测的最大编码单元的最大划分深度提前决定每层编码单元的预测模式的执行范围,最终在提高编码率失真性能的同时,大幅降低了编码复杂度。
申请公布号 CN105430415A 申请公布日期 2016.03.23
申请号 CN201510873417.3 申请日期 2015.12.02
申请人 宁波大学 发明人 陈芬;郭明松;彭宗举;蒋刚毅;郁梅
分类号 H04N19/597(2014.01)I;H04N19/147(2014.01)I;H04N19/593(2014.01)I 主分类号 H04N19/597(2014.01)I
代理机构 宁波奥圣专利代理事务所(普通合伙) 33226 代理人 周珏
主权项 一种3D‑HEVC深度视频帧内快速编码方法,其特征在于包括训练阶段和测试阶段两个过程,所述的训练阶段过程的具体步骤如下:①‑1、选取若干个深度视频,将选取的所有深度视频中的所有视频帧构成训练视频帧集合,将训练视频帧集合中当前待处理的视频帧定义为当前帧;①‑2、对当前帧中的所有边缘像素点和所有非边缘像素点进行不同的滤波处理以完成对当前帧的预处理;①‑3a、按序处理预处理后的视频帧中的每个最大编码单元,将预处理后的视频帧中当前待处理的最大编码单元定义为当前最大编码单元,并记为CLCU;①‑3b、如果CLCU为预处理后的视频帧中最左侧的所有最大编码单元中的一个或最上侧的所有最大编码单元中的一个,则采用原始3D‑HEVC编码平台对CLCU进行编码,再执行步骤①‑3c;如果CLCU不为预处理后的视频帧中最左侧的所有最大编码单元中的一个且不为最上侧的所有最大编码单元中的一个,则获取CLCU的特征向量,记为F<sup>CLCU</sup>,然后采用原始3D‑HEVC编码平台对CLCU进行编码,再执行步骤①‑3c,其中,F<sup>CLCU</sup>的维数为17,F<sup>CLCU</sup>中的17个特征按序分别为MSE<sup>CLCU</sup>、xMSE<sup>CLCU</sup>、yMSE<sup>CLCU</sup>、Sob<sup>CLCU</sup>、MSE<sup>LLCU</sup>、xMSE<sup>LLCU</sup>、yMSE<sup>LLCU</sup>、Sob<sup>LLCU</sup>、MSE<sup>ULCU</sup>、xMSE<sup>ULCU</sup>、yMSE<sup>ULCU</sup>、Sob<sup>ULCU</sup>、SAD<sup>C‑LLCU</sup>、SAD<sup>C‑ULCU</sup>、LD<sub>max</sub>、UD<sub>max</sub>及TD<sub>max</sub>,MSE<sup>CLCU</sup>、xMSE<sup>CLCU</sup>和yMSE<sup>CLCU</sup>对应表示CLCU中的所有像素点的像素值的均方误差、水平方向的均方误差和垂直方向的均方误差,Sob<sup>CLCU</sup>表示CLCU中的所有像素点的像素值的Sobel梯度值之和,MSE<sup>LLCU</sup>、xMSE<sup>LLCU</sup>和yMSE<sup>LLCU</sup>对应表示CLCU的左相邻最大编码单元LLCU中的所有像素点的像素值的均方误差、水平方向的均方误差和垂直方向的均方误差,Sob<sup>LLCU</sup>表示CLCU的左相邻最大编码单元LLCU中的所有像素点的像素值的Sobel梯度值之和,MSE<sup>ULCU</sup>、xMSE<sup>ULCU</sup>和yMSE<sup>ULCU</sup>对应表示CLCU的上相邻最大编码单元ULCU中的所有像素点的像素值的均方误差、水平方向的均方误差和垂直方向的均方误差,Sob<sup>ULCU</sup>表示CLCU的上相邻最大编码单元ULCU中的所有像素点的像素值的Sobel梯度值之和,SAD<sup>C‑LLCU</sup>表示CLCU与LLCU之间的绝对差和,SAD<sup>C‑ULCU</sup>表示CLCU与ULCU之间的绝对差和,LD<sub>max</sub>表示LLCU的最大划分深度,UD<sub>max</sub>表示ULCU的最大划分深度,TD<sub>max</sub>表示当前帧相对应的彩色视频帧中与CLCU对应的最大编码单元TLCU的最大划分深度;①‑3c、将预处理后的视频帧中下一个待处理的最大编码单元作为当前最大编码单元,并记为CLCU,然后返回步骤①‑3b继续执行,直至预处理后的视频帧中的所有最大编码单元处理完毕;①‑4、将训练视频帧集合中下一帧待处理的视频帧作为当前帧,然后返回步骤①‑2继续执行,直至训练视频帧集合中的所有视频帧处理完毕;①‑5、将训练视频帧集合中的所有视频帧中除最左侧的所有最大编码单元和最上侧的所有最大编码单元外的所有最大编码单元各自的特征向量作为输入参数,将训练视频帧集合中的所有视频帧中除最左侧的所有最大编码单元和最上侧的所有最大编码单元外的所有最大编码单元各自采用原始3D‑HEVC编码平台编码时的最大划分深度作为输出参数,且所有最大编码单元各自的特征向量与最大划分深度一一对应输入到BP神经网络中进行训练,得到训练好的BP神经网络测试模型;所述的测试阶段过程的具体步骤如下:②‑1、对于任意一帧待测试的深度视频帧,将其定义为测试帧;②‑2、对测试帧中的所有边缘像素点和所有非边缘像素点进行不同的滤波处理以完成对测试帧的预处理;②‑3、按照步骤①‑3a至步骤①‑3c的过程,以相同的方式获取预处理后的测试帧中除最左侧的所有最大编码单元和最上侧的所有最大编码单元外的每个最大编码单元的特征向量;②‑4、将预处理后的测试帧中除最左侧的所有最大编码单元和最上侧的所有最大编码单元外的所有最大编码单元各自的特征向量作为输入参数,输入到训练好的BP神经网络测试模型中,预测得到预处理后的测试帧中除最左侧的所有最大编码单元和最上侧的所有最大编码单元外的每个最大编码单元的最大划分深度的预测值;②‑5、对预处理后的测试帧中的每个最大编码单元进行编码,具体过程为:②‑5a、按序处理预处理后的测试帧中的每个最大编码单元,将预处理后的测试帧中当前待处理的最大编码单元定义为当前最大编码单元,并记为CLCU’;②‑5b、如果CLCU’为预处理后的测试帧中最左侧的所有最大编码单元中的一个或最上侧的所有最大编码单元中的一个,则采用原始3D‑HEVC编码平台对CLCU’进行编码,再执行步骤②‑5c;如果CLCU’不为预处理后的测试帧中最左侧的所有最大编码单元中的一个且不为最上侧的所有最大编码单元中的一个,则执行以下步骤:b1、判断CLCU’的最大划分深度的预测值PD’与测试帧相对应的彩色视频帧中与CLCU’对应的最大编码单元TLCU’的最大划分深度TD’的大小关系,如果PD’的值大于TD’的值,则将PD’的值重置为TD’的值,然后执行步骤b2;如果PD’的值小于或等于TD’的值,则保持PD’的值不变,然后执行步骤b2;b2、将CLCU’重新定义为当前编码单元,令CD’表示当前编码单元的划分深度,CD’的初始值为0,然后执行步骤b3;b3、采用Canny边缘检测算法对当前编码单元进行边缘检测,得到当前编码单元的边缘信息,如果CD’大于或等于PD’,且满足下述条件之一:1)当前编码单元中不存在边缘信息,2)PD’的值已经被重置为TD’,3)CD’大于或等于TD’,则对当前编码单元不进行继续划分,至此已完成当前编码单元的编码,再执行步骤b4;如果CD’小于PD’,则对当前编码单元进行继续划分,执行步骤b5;b4、如果CD’等于0,则执行步骤②‑5c;如果CD’等于1,则判断当前编码单元所在层的四个编码单元是否均已处理完毕,若已全部处理完毕,则执行步骤②‑5c;若未全部处理完毕,则将当前编码单元所在层的四个编码单元中的下一个待处理的编码单元作为当前编码单元,再执行步骤b3;如果CD’不等于0且不等于1,则判断当前编码单元所在层的四个编码单元是否均已处理完毕,如果已全部处理完毕,则将当前编码单元的上一层中下一个待处理的编码单元作为当前编码单元,再执行步骤b3;如果未全部处理完毕,则将当前编码单元所在层的四个编码单元中的下一个待处理的编码单元作为当前编码单元,再执行步骤b3;b5、将当前编码单元的下一层四个编码单元中当前待处理的编码单元作为当前编码单元,并令CD’=CD’+1,然后返回步骤b3继续执行,其中,CD’=CD’+1中的“=”为赋值符号;在上述编码单元的递归划分过程中,当CD’为0时,如果PD’为0、当前编码单元中不存在边缘信息且PD’的值未被重置为TD’,或者PD’大于0,则当前编码单元的预测方向从编号为0、1及从24到34的预测方向中遍历得到;如果为其余情况,则当前编码单元的预测方向从全部的预测方向中遍历得到;当CD’为1时,如果PD’为1、当前编码单元中不存在边缘信息且PD’的值未被重置为TD’,或者当PD’大于1,或者PD’小于1、当前编码单元中存在边缘信息且TD’大于1,则当前编码单元的预测方向从编号为0、1、9、10、11、37、38及20至34的预测方向中遍历得到;如果为其余情况,则当前编码单元的预测方向从全部的预测方向中遍历得到;当CD’为2时,如果PD’为2、当前编码单元中不存在边缘信息、PD’的值未被重置为TD’,或者当PD’大于2,或者PD’小于2、当前编码单元中存在边缘信息且TD’大于2,则当前编码单元的预测方向从编号为0、1、37、38、8至12及20至34的预测方向中遍历得到;如果为其余情况,则当前编码单元的预测方向从全部的预测方向中遍历得到;当CD’为3时,当前编码单元的预测方向从全部的预测方向中遍历得到;②‑5c、将预处理后的测试帧中下一个待处理的最大编码单元作为当前最大编码单元,并记为CLCU’,然后返回步骤②‑5b继续执行,直至预处理后的测试帧中的所有最大编码单元处理完毕。
地址 315211 浙江省宁波市江北区风华路818号