具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明公开一种亮度变换域帧内预测编解码方法和系统,属于视频编解码领域。本发明方法利用变换域的高聚能性和当前编码块与邻近已编码块的相关性对变换域信息块进行变换域帧内预测,消除帧内信息的冗余度;其中编码流程粗略的可以分为“预测、变换、量化、重排序、熵编码等”模块,所使用的变换正是后续编码流程“变换模块”的变换方法,不额外增加计算量,并且由于变换域相比较于空间域具有高聚能性的特点,本发明可达到在帧内预测性能上的提升。
实施例1
图1是本发明优选实施例一种亮度变换域帧内预测编码方法流程图;
所述方法包括以下步骤:
S101:对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块。
具体为:
其中, 表示变换矩阵,c(ic,jc)为变换矩阵第ic行第jc列的数值,1≤ic≤k,1≤jc≤k,CT表示变换矩阵的转置矩阵;所述变换矩阵可以根据不同编码器的变换模块来选择,例如H.264中的DCT变换矩阵;
表示当前编码块的空间域信息块;y(i,j)表示当前编码块的空间域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;
表示当前编码块的变换域信息块;t_y(i,j)表示当前编码块的变换域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;t_y(i,j)是y(i,j)经过变换以后,获取的当前编码块的变换域信息块第i行第j列的亮度值。
S102:对当前编码块的变换域信息块进行分类,每一类数据按照第一预测模式组进行变换域帧内预测。
所述“对当前编码块的变换域信息块进行分类,每一类数据按照第一预测模式组进行变换域帧内预测”具体包括以下步骤(图2是图1流程图中步骤S102的方法流程图):
S1021:确定number初始值。
number表示当前编码块的变换域信息块最多进行帧内预测寻优次数,由编码器自行设置,number初始值越大,计算量越大,性能相应提升也越多,一般number≤k*k/2。
S1022:找到当前编码块的变换域信息块中值最大的number个数据。
number个数据,每一个数据为分别为一类数据,余下所有数据为一类数据
S1023:对所述number个数据中的每一个数据利用第一预测模式组分别进行中间帧内预测;然后再对当前编码块的变换域信息块中余下所有数据利用第一预测模式组统一进行中间帧内预测。
其中,所述第一预测模式组具体包括以下五种模式(图3是当前编码块与预测块的位置关系图):
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_y(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_y(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_y(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_y(i,j=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_y(i,j)表示t_y(i,j)的变换域预测值;g_yleft(i,j)表示当前编码块左侧编码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前编码块上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j):表示当前编码块左上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前编码块右上侧编码块的变换域信息块第i行第j列的亮度重构值;所有编码端预测块(当前编码块左侧编码块、当前编码块上侧编码块、当前编码块左上侧编码块、当前编码块右上侧编码块)和当前编码块的尺寸一样,都是(k)x(k); 表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j):表示基本变换域信息块第i行第j列的亮度值。
所述“中间帧内预测”具体实现方法为:对当前处理对象,求取用第一预测模式组进行变换域帧内预测的五个误差。
所述“对所述number个数据中的每一个数据利用第一预测模式组分别进行中间帧内预测”具体为:对所述number个数据中每一个数据依次进行一次“中间帧内预测”(此时每一个数据就是一次“中间帧内预测”中的处理对象),求取所述number个数据中每一个数据对应的五个预测误差。
所述“然后再对当前编码块的变换域信息块中余下所有数据利用第一预测模式组统一进行中间帧内预测”具体为:对余下所有数据进行一次“中间帧内预测”(此时余下所有数据就是“中间帧内预测”中的处理对象),求取余下所有数据对应的五个预测误差。
当前编码块的变换域信息块数据包括所述number个数据和所述余下所有数据;
S103:在所述变换域信息块的每一种预测模式组合下(即每一种所述number个数据和所述余下数据预测模式组合),累加当前编码块所有变换域信息块对应的预测误差,作为当前编码块在该种预测模式组合下的帧内预测误差。
所述每一种预测模式组合包括一种number个数据的预测模式和一种余下数据的预测模式;所述“一种number个数据的预测模式”中,所述number个数据中每个数据可采用第一预测模式组五种模式中的任意一种,所述number个数据中每个数据采用的模式可相同也可不同,所述余下数据也可采用第一预测模式组五种模式中的任意一种。
例如:假设number=3,所述number个数据分别为a、b、c,所述余下数据为d;其中一种预测模式组合为:“a在模式一+b在模式三+c在模式四”+d在模式二;a、b、c三个数据可分别采用所述五种模式中的任意一种,d数据也可采用所述五种模式中的任意一种。
S104:对当前编码块进行RDO(率失真优化,Rate DistortionOptimization)获取最佳帧内预测模式,完成当前编码块的变换域帧内预测。
实施例2
图4是本发明优选实施例一种亮度变换域帧内预测解码方法流程图;述解码方法是基于实施例1中的所述编码方法提出的相应的一种亮度变换域帧内预测解码方法。所述解码方法适用于帧内预测编码块的解码,具体包括如下步骤:
S201:对当前解码块的码流先进行熵解码、重排序,然后再进行反量化。
S202:根据当前解码块的帧内预测模式,按第一预测模式组进行变换域帧内预测,获取当前解码块的变换域帧内预测值。
所述第一预测模式组包括以下五种模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_ydec(i,j)=(g_yleft(i,j)+g_yup(i.j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_ydec(i,j)表示当前解码块的变换域信息块第i行第j列的亮度值的变换域预测值;g_yleft(i,j)表示当前解码块左侧解码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前解码块上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j)表示当前解码块左上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前解码块右上侧解码块的变换域信息块第i行第j列的亮度重构值;
所有解码端预测块(当前解码块左侧解码块、当前解码块上侧解码块、当前解码块左上侧解码块、当前解码块右上侧解码块)和当前解码块的尺寸一样,都是(k)x(k);
表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j)表示基本变换域信息块第i行第j列的亮度值。
S203:将当前解码块的变换域帧内预测值与S201中获取的当前解码块反量化的数据累加,获取当前解码块的变换域重构值。
S204:对当前解码块的变换域重构值进行的反变换,获取当前解码块的空间域重构值。
S205:对当前解码块的空间域重构值进行滤波,完成当前解码块的解码。
实施例3
图5是本发明优选实施例一种亮度变换域帧内预测编码系统结构示意图;所述系统包括:变换域信息块获取模块、第一变换域帧内预测装置、帧内预测误差计算模块、最佳帧内预测模式获取模块;
变换域信息块获取模块,用于对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块;
第一变换域帧内预测装置,用于对当前编码块的变换域信息块进行分类,每一类数据按照第一预测模式组变换域帧内预测;
帧内预测误差计算模块,用于在所述当前编码块的变换域信息块的每一种预测模式组合下,累加当前编码块所有变换域信息块对应的预测误差,作为当前编码块在该种预测模式组合下的帧内预测误差;
最佳帧内预测模式获取模块,用于对当前编码块进行率失真优化获取最佳帧内预测模式。
进一步地,所述“对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块”具体为:
其中, 表示变换矩阵,c(ic,jc)为变换矩阵第ic行第jc列的数值,1≤ic≤k,1≤jc≤k,CT表示变换矩阵的转置矩阵;所述变换矩阵可以根据不同编码器的变换模块来选择,例如H.264中的DCT变换矩阵;
表示当前编码块的空间域信息块;y(i,j)表示当前编码块的空间域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;
表示当前编码块的变换域信息块;t_y(i,j)表示当前编码块的变换域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;t_y(i,j)是y(i,j)经过变换以后,获取的当前编码块的变换域信息块第i行第j列的亮度值。
进一步地,所述第一变换域帧内预测装置还包括:number初始值模块、查找模块、第一中间帧内预测模块;图6是图5系统中第一变换域帧内预测装置的详细结构图;
number初始值模块,用于确定初始值number;number表示当前编码块的变换域信息块最多进行帧内预测寻优次数,由编码器自行设置,number初始值越大,计算量越大,性能相应提升也越多,一般number≤k*k/2。
查找模块,用于找到当前编码块的变换域信息块中值最大的number个数据;
第一中间帧内预测模块,用于对所述number个数据中的每一个数据利用第一预测模式组分别进行中间帧内预测;然后再对当前编码块的变换域信息块中余下所有数据利用第一预测模式组统一进行中间帧内预测;
其中,第一预测模式组具体包括如下模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_y(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_y(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_y(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_y(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_y(i,j)表示t_y(i,j)的变换域预测值;g_yleft(i,j)表示当前编码块左侧编码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前编码块上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j):表示当前编码块左上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前编码块右上侧编码块的变换域信息块第i行第j列的亮度重构值;所有编码端预测块(当前编码块左侧编码块、当前编码块上侧编码块、当前编码块左上侧编码块、当前编码块右上侧编码块)和当前编码块的尺寸一样,都是(k)x(k); 表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j):表示基本变换域信息块第i行第j列的亮度值;
所述“中间帧内预测”具体实现方法为:对当前处理对象,求取用第一预测模式组进行变换域帧内预测的五个误差。
所述“对这number个数据中的每一个数据利用第一预测模式组分别进行中间帧内预测”具体为:对所述number个数据中每一个数据依次进行一次“中间帧内预测”(此时每一个数据就是一次“中间帧内预测”中的处理对象),求取所述number个数据中每一个数据对应的五个预测误差。
所述“然后再对当前编码块的变换域信息块中余下所有数据利用第一预测模式组统一进行中间帧内预测”具体为:对余下所有数据进行一次“中间帧内预测”(此时余下所有数据就是“中间帧内预测”中的处理对象),求取余下所有数据对应的五个预测误差。
当前编码块的变换域信息块数据包括所述number个数据和所述余下所有数据;
进一步地,帧内预测误差计算模块中,所述每一种预测模式组合包括一种number个数据的预测模式和一种余下数据的预测模式;所述“一种number个数据的预测模式”中,所述number个数据中每个数据可采用所述第一预测模式组五种模式中的任意一种,所述number个数据中每个数据采用的模式可相同也可不同,所述余下数据也可采用所述第一预测模式组五种模式中的任意一种。
实施例4
图7是本发明优选实施例一种亮度变换域帧内预测解码系统结构图;所述系统包括:熵解码模块、重排序模块、反量化模块、第一解码块变换域帧内预测值获取模块、解码块变换域重构值获取模块、解码块空间域重构值获取模块、滤波模块。
熵解码模块,用于对当前解码块的码流进行熵解码;
重排序模块,用于对熵解码后的当前解码块的码流进行重排序;
反量化模块,用于对重排序后当前解码块的码流进行反量化;
,用于根据当前解码块的帧内预测模式,按第一预测模式组进行变换域帧内预测,获取当前解码块的变换域帧内预测值;
解码块变换域重构值获取模块,用于将当前解码块的变换域帧内预测值与反量化模块中反量化后的当前解码块的码流数据累加,获取当前解码块的变换域重构值。
解码块空间域重构值获取模块,用于对当前解码块的变换域重构值进行的反变换,获取当前解码块的空间域重构值;
滤波模块,用于对当前解码块的空间域重构值进行滤波,完成当前解码块的解码。
进一步地,所述第一解码块变换域帧内预测值获取模块中,所述第一预测模式组包括以下五种模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_ydec(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_ydec(i,j)=t_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_ydec(i,j)表示当前解码块的变换域信息块第i行第j列的亮度值的变换域预测值;g_yleft(i,j)表示当前解码块左侧解码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前解码块上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j)表示当前解码块左上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前解码块右上侧解码块的变换域信息块第i行第j列的亮度重构值;
所有解码端预测块(当前解码块左侧解码块、当前解码块上侧解码块、当前解码块左上侧解码块、当前解码块右上侧解码块)和当前解码块的尺寸一样,都是(k)x(k);
表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j)表示基本变换域信息块第i行第j列的亮度值。
实施例5
图8是本发明优选实施例5一种亮度变换域帧内预测编码方法流程图;所述方法包括:
S301:对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块。
其中, 表示变换矩阵,c(ic,jc)为变换矩阵第ic行第jc列的数值,1≤ic≤k,1≤jc≤k,CT表示变换矩阵的转置矩阵;变换矩阵可以根据不同编码器的变换模块来选择,例如H.264中的DCT变换矩阵;
表示当前编码块的空间域信息块;y(i,j)表示当前编码块的空间域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;
表示当前编码块的变换域信息块;t_y(i,j)表示当前编码块的变换域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;t_y(i,j)是y(i,j)经过变换以后,获取的当前编码块的变换域信息块第i行第j列的亮度值。
S302:对当前编码块的变换域信息块进行量化。
S303:对当前编码块的变换域信息块进行分类,每一类数据按照第二预测模式组进行变换域帧内预测。
所述“对当前编码块的变换域信息块进行分类,每一类数据按照第二预测模式组进行变换域帧内预测”具体包括以下步骤:(图9是图8流程图中步骤S303的方法流程图)
S3031:确定number初始值。
number表示当前编码块的变换域信息块最多进行帧内预测寻优次数,由编码器自行设置,number初始值越大,计算量越大,性能相应提升也越多,一般number≤k*k/2。
S3032:找到当前编码块的变换域信息块中值最大的number个数据。
number个数据,每一个数据为分别为一类数据,余下所有数据为一类数据;
S3033:对所述number个数据中的每一个数据利用第二预测模式组分别进行中间帧内预测;然后再对当前编码块的变换域信息块中余下所有数据利用第二预测模式组统一进行中间帧内预测。其中,第二预测模式组具体包括以下五种模式:(图3是当前编码块与预测块的位置关系图;)
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_y(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_y(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_y(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_y(i,j)表示t_y(i,j)的变换域预测值;g_ylef(i,j)表示当前编码块左侧编码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前编码块上侧编码块的变换域信息块第i行第j列的亮度重构值;
g_yleft_up(i,j):表示当前编码块左上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前编码块右上侧编码块的变换域信息块第i行第j列的亮度重构值;所有编码端预测块(当前编码块左侧编码块、当前编码块上侧编码块、当前编码块左上侧编码块、当前编码块右上侧编码块)和当前编码块的尺寸一样,都是(k)x(k); 表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j):表示基本变换域信息块第i行第j列的亮度值;
表示基本变换域信息块的重构块;
即对基本变换域信息块进行量化操作,获取的就是基本变换域信息块的重构块;
g_y128(i,j)是对t_y128(i,j)进行量化后获取的基本变换域信息块的重构块第i行第j列的重构值。
所述“中间帧内预测”具体实现方法为:对当前处理对象,求取用第二预测模式组进行变换域帧内预测的五个误差。
所述“对这number个数据中的每一个数据利用第二预测模式组分别进行中间帧内预测”具体为:对number个数据中每一个数据依次进行一次“中间帧内预测”(此时每一个数据就是一次“中间帧内预测”中的处理对象),求取number个数据中每一个数据的对应的五个预测误差。
所述“然后再对当前编码块的变换域信息块中余下所有数据利用第二预测模式组统一进行中间帧内预测”具体为:对余下所有数据进行一次“中间帧内预测”(此时余下所有数据就是“中间帧内预测”中的处理对象),求取余下所有数据对应的五个预测误差。
当前编码块的变换域信息块数据包括所述number个数据和所述余下所有数据;
S304:在所述变换域信息块的每一种预测模式组合下(即每一种所述number个数据和所述余下数据预测模式组合),累加当前编码块所有变换域信息块对应的预测误差,作为当前编码块在该种预测模式组合下的帧内预测误差。
所述每一种预测模式组合包括一种number个数据的预测模式和一种余下数据的预测模式;所述“一种number个数据的预测模式”中,所述number个数据中每个数据可采用所述第二预测模式组五种模式中的任意一种,所述number个数据中每个数据采用的模式可相同也可不同,所述余下数据也可采用所述第二预测模式组五种模式中的任意一种。
例如:假设number=3,所述number个数据分别为a、b、c,所述余下数据为d;其中一种预测模式组合为:“a在模式一+b在模式三+c在模式四”+d在模式二;a、b、c三个数据可分别采用所述五种模式中的任意一种,d数据也可采用所述五种模式中的任意一种。
S305:对当前编码块进行RDO(率失真优化,Rate DistortionOptimization)获取最佳帧内预测模式,完成当前编码块的变换域帧内预测。
实施例6
图10是本发明优选实施例6一种亮度变换域帧内预测解码方法流程图;
基于实施例5的一种亮度变换域帧内预测编码方法,提出相应的一种亮度变换域帧内预测解码方法。该方法适用于帧内预测编码块的解码,所述方法包括以下步骤:
S401:对当前解码块的码流先进行熵解码、重排序。
S402:根据当前解码块的帧内预测模式,按第二预测模式组进行变换域帧内预测,获取当前解码块的变换域帧内预测值。
所述第二预测模式组包括以下五种模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_ydec(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_ydec(i,j)表示当前解码块的变换域信息块第i行第j列的亮度值的变换域预测值;g_yleft(i,j)表示当前解码块左侧解码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前解码块上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j)表示当前解码块左上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前解码块右上侧解码块的变换域信息块第i行第j列的亮度重构值;所有解码端预测块(当前解码块左侧解码块、当前解码块上侧解码块、当前解码块左上侧解码块、当前解码块右上侧解码块)和当前解码块的尺寸一样,都是(k)x(k);
表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j)表示基本变换域信息块第i行第j列的亮度值;
表示基本变换域信息块的重构块;
即对基本变换域信息块进行量化操作,获取的就是基本变换域信息块的重构块;
g_y128(i,j)是对t_y128(i,j)进行量化后获取的基本变换域信息块的重构块第i行第j列的重构值。
S403:将当前解码块的变换域帧内预测值与S401中获取的当前解码块重排序后的数据累加,获取当前解码块的变换域重构值。
S404:对当前解码块的变换域重构值进行反量化、然后再进行反变换,获取当前解码块的空间域重构值。
S405:当前解码块的空间域重构值进行滤波,完成当前解码块的解码。
实施例7
图11是本发明优选实施例7一种亮度变换域帧内预测编码系统结构图;
所述系统包括:变换域信息块获取模块、量化模块、第二变换域帧内预测装置、帧内预测误差计算模块、最佳帧内预测模式获取模块;
变换域信息块获取模块,用于对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块;
量化模块,用于对当前编码块的变换域信息块进行量化;
第二变换域帧内预测装置,用于对当前编码块的变换域信息块进行分类,每一类数据按照第二预测模式组变换域帧内预测;
帧内预测误差计算模块,用于在所述当前编码块的变换域信息块的每一种预测模式组合下,累加当前编码块所有变换域信息块对应的预测误差,作为当前编码块在该种预测模式组合下的帧内预测误差;
最佳帧内预测模式获取模块,用于对当前编码块进行率失真优化获取最佳帧内预测模式。
进一步地,所述“对当前编码块的空间域信息块进行变换,获取当前编码块的变换域信息块”具体为:
其中, 表示变换矩阵,c(ic,jc)为变换矩阵第ic行第jc列的数值,1≤ic≤k,1≤jc≤k,CT表示变换矩阵的转置矩阵;变换矩阵可以根据不同编码器的变换模块来选择,例如H.264中的DCT变换矩阵;
表示当前编码块的空间域信息块;y(i,j)表示当前编码块的空间域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;
表示当前编码块的变换域信息块;t_y(i,j)表示当前编码块的变换域信息块第i行第j列的亮度值,1≤i≤k、1≤j≤k;t_y(i,j)是y(i,j)经过变换以后,获取的当前编码块的变换域信息块第i行第j列的亮度值。
进一步地,所述第二变换域帧内预测装置还包括:number初始值模块、查找模块、第二中间帧内预测模块;(图12是图11编码系统中第二变换域帧内预测装置的详细结构图)
number初始值模块,用于确定初始值number;number表示当前编码块的变换域信息块最多进行帧内预测寻优次数,由编码器自行设置,number初始值越大,计算量越大,性能相应提升也越多,一般number≤k*k/2。
查找模块,用于找到当前编码块的变换域信息块中值最大的number个数据;
第二中间帧内预测模块,用于对所述number个数据中的每一个数据利用第二预测模式组分别进行中间帧内预测;然后再对当前编码块的变换域信息块中余下所有数据利用第二预测模式组统一进行中间帧内预测;
其中,第二预测模式组具体包括如下模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_y(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_y(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_y(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_y(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_y(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_y(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_y(i,j)表示t_y(i,j)的变换域预测值;g_yleft(i,j)表示当前编码块左侧编码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前编码块上侧编码块的变换域信息块第i行第j列的亮度重构值;
g_yleft_up(i,j):表示当前编码块左上侧编码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前编码块右上侧编码块的变换域信息块第i行第j列的亮度重构值;所有编码端预测块(当前编码块左侧编码块、当前编码块上侧编码块、当前编码块左上侧编码块、当前编码块右上侧编码块)和当前编码块的尺寸一样,都是(k)x(k); 表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j):表示基本变换域信息块第i行第j列的亮度值;
表示基本变换域信息块的重构块;
即对基本变换域信息块进行量化操作,获取的就是基本变换域信息块的重构块;
g_y128(i,j)是对t_y128(i,j)进行量化后获取的基本变换域信息块的重构块第i行第j列的重构值。
所述“中间帧内预测”具体实现方法为:对当前处理对象,求取用第二预测模式组进行变换域帧内预测的五个误差。
所述“对这number个数据中的每一个数据利用第二预测模式组分别进行中间帧内预测”具体为:对number个数据中每一个数据依次进行一次“中间帧内预测”(此时每一个数据就是一次“中间帧内预测”中的处理对象),求取number个数据中每一个数据的对应的五个预测误差。
所述“然后再对当前编码块的变换域信息块中余下所有数据利用第二预测模式组统一进行中间帧内预测”具体为:对余下所有数据进行一次“中间帧内预测”(此时余下所有数据就是“中间帧内预测”中的处理对象),求取余下所有数据对应的五个预测误差。
当前编码块的变换域信息块数据包括所述number个数据和所述余下所有数据;
进一步地,帧内预测误差计算模块中,所述每一种预测模式组合包括一种number个数据的预测模式和一种余下数据的预测模式;所述“一种number个数据的预测模式”中,所述number个数据中每个数据可采用所述第二预测模式组五种模式中的任意一种,所述number个数据中每个数据采用的模式可相同也可不同,所述余下数据也可采用所述第二预测模式组五种模式中的任意一种。
实施例8
图13是本发明优选实施例8一种亮度变换域帧内预测解码系统结构图;所述系统包括:熵解码模块、重排序模块、第二解码块变换域帧内预测值获取模块、解码块变换域重构值获取模块、解码块空间域重构值获取模块、滤波模块。
熵解码模块,用于对当前解码块的码流进行熵解码;
重排序模块,用于对熵解码后的当前解码块的码流进行重排序;
第二解码块变换域帧内预测值获取模块,用于根据当前解码块的帧内预测模式,按第二预测模式组进行变换域帧内预测,获取当前解码块的变换域帧内预测值;
解码块变换域重构值获取模块,用于将当前解码块的变换域帧内预测值与重排序模块中重排序后的当前解码块的码流数据累加,获取当前解码块的变换域重构值。
解码块空间域重构值获取模块,用于对当前解码块的变换域重构值进行反量化,再进行反变换,获取当前解码块的空间域重构值;
滤波模块,用于对当前解码块的空间域重构值进行滤波,完成当前解码块的解码。
进一步地,所述第二预测模式组包括以下模式:
模式一:变换域左侧预测模式
如果(当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式二:变换域上侧预测模式
如果(当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式三:变换域左上侧预测模式
如果(当前编码块的左上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式四:变换域右上侧预测模式
如果(当前编码块的右上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yright_up(i,j),1≤i≤k、1≤j≤k;
否则Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
模式五:变换域混合预测模式
如果(当前编码块的上侧编码块和左侧编码块都已编码),则
Pred_t_ydec(i,j)=(g_yleft(i,j)+g_yup(i,j))/2,1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的左侧编码块已编码),则
Pred_t_ydec(i,j)=g_yleft(i,j),1≤i≤k、1≤j≤k;
否则,如果(仅当前编码块的上侧编码块已编码),则
Pred_t_ydec(i,j)=g_yup(i,j),1≤i≤k、1≤j≤k;
否则,Pred_t_ydec(i,j)=g_y128(i,j),1≤i≤k、1≤j≤k;
其中,Pred_t_ydec(i,j)表示当前解码块的变换域信息块第i行第j列的亮度值的变换域预测值;g_yleft(i,j)表示当前解码块左侧解码块的变换域信息块第i行第j列的亮度重构值;g_yup(i,j)表示当前解码块上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yleft_up(i,j)表示当前解码块左上侧解码块的变换域信息块第i行第j列的亮度重构值;g_yright_up(i,j):表示当前解码块右上侧解码块的变换域信息块第i行第j列的亮度重构值;所有解码端预测块(当前解码块左侧解码块、当前解码块上侧解码块、当前解码块左上侧解码块、当前解码块右上侧解码块)和当前解码块的尺寸一样,都是(k)x(k);
表示由(k)x(k)个等于128的值构成的矩阵,称为基本空间域信息块;
表示基本变换域信息块;
t_y128(i,j)表示基本变换域信息块第i行第j列的亮度值;
表示基本变换域信息块的重构块;
即对基本变换域信息块进行量化操作,获取的就是基本变换域信息块的重构块;
g_y128(i,j)是对t_y128(i,j)进行量化后获取的基本变换域信息块的重构块第i行第j列的重构值。
本发明公开一种亮度变换域帧内预测编解码方法和系统,属于视频编解码领域。本发明方法利用变换域的高聚能性和当前编码块与邻近已编码块的相关性对变换域信息块进行变换域帧内预测,消除帧内信息的冗余度;其中编码流程粗略的可以分为“预测、变换、量化、重排序、熵编码等”模块,所使用的变换正是后续编码流程“变换模块”的变换方法,不额外增加计算量,并且由于变换域相比较于空间域具有高聚能性的特点,本发明可达到在帧内预测性能上的提升。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。