首页 / 专利库 / 视听技术与设备 / 视频编码层 / 用于下一代视频编码的内容自适应预测距离分析器和分层运动估计系统

用于下一代视频编码的内容自适应预测距离分析器和分层运动估计系统

阅读:486发布:2020-06-02

专利汇可以提供用于下一代视频编码的内容自适应预测距离分析器和分层运动估计系统专利检索,专利查询,专利分析的服务。并且说明了与 视频编码 的内容自适应预测距离分析和分层 运动估计 相关的技术。,下面是用于下一代视频编码的内容自适应预测距离分析器和分层运动估计系统专利的具体信息内容。

1.一种计算机实现的用于计算先前相对于正对其执行用于视频编码运动估计和补偿的当前帧的预测距离的方法,包括:
至少部分基于输入视频数据来执行空间分析,以确定空间复杂性量度以及平和垂直纹理方向数据;
计算连续帧之间的运动估计来确定运动矢量
至少部分基于确定的运动矢量来计算绝对差值的总和和平均帧差异;
至少部分基于所述绝对差值的总和、所述平均帧差异、所确定的运动矢量、所述空间复杂性测量以及所述水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及指示运动复杂性的时间索引;
至少部分基于所述输入视频数据,执行增益改变检测来确定增益;
至少部分基于所述增益、所述空间索引、所述时间索引、所述空间复杂性测量以及所述水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变;
至少部分基于所述空间索引、所述时间索引、所确定的镜头改变、以及所述平均帧差异,执行预测距离计算来确定最终p距离,其中,所述最终p距离表明要编码的帧之间的距离;以及
至少部分基于所述最终p距离,相对于所述先前帧计算所述当前帧的最终运动估计来确定最终运动矢量。
2.如权利要求1所述的方法,还包括:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的。
3.如权利要求1所述的方法,
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,来以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
4.如权利要求1所述的方法,还包括:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
5.如权利要求1所述的方法,还包括:
其中,确定所述镜头改变还包括多标准确定,包括:
确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联,其中Rs/Cs指一个或多个阶段从输入视频产生的水平和垂直纹理方向数据;以及
确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,
其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变。
6.如权利要求1所述的方法,还包括:
至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
以及
至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,
其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于所述中间p距离以及所述平均帧差异来确定所述最终p距离,
其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,
其中,居间的B-画面帧的数量比所述最终p距离少一值。
7.如权利要求1所述的方法,还包括:
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
执行所述最终多阶段顺序分层运动估计的最终第一阶段,来以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及执行所述最终多阶段顺序分层运动估计的最终最终阶段,以至少部分基于所述一个或多个最终中间运动矢量,以最终精细水平确定最终最终运动矢量,其中,所述最终精细水平包括所述原始画面的全尺寸的水平。
8.如权利要求1所述的方法,还包括:
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析,来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
9.如权利要求1所述的方法,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素、1/4像素或者1/8像素分辨率计算运动矢量。
10.如权利要求1所述的方法,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以
1/4像素精度计算最终阶段运动矢量。
11.如权利要求1所述的方法,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以
1/8像素精度计算最终阶段运动矢量。
12.如权利要求1所述的方法,还包括:
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定所述高精度运动矢量包括以1/2像素分辨率、1/4像素分辨率、或者1/8像素分辨率计算运动矢量。
13.如权利要求1所述的方法,还包括:
对于来自p距离计算器模的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来计算第一阶段运动矢量;
至少部分基于所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算第二阶段运动矢量;以及
至少部分基于所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
14.如权利要求1所述的方法,还包括:
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/4像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者
1/8像素分辨率产生所述高精度最终运动矢量。
15.如权利要求1所述的方法,还包括:
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/8像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者
1/8像素分辨率产生所述高精度最终运动矢量。
16.如权利要求1所述的方法,还包括:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中Rs/Cs域指一个或多个阶段的输入视频的水平和垂直纹理方向;
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平;
其中,确定所述镜头改变还包括多标准确定,包括:
确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,并且其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变;
至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于所述中间p距离以及平均帧差异来确定所述最终p距离,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,并且其中,居间的B-画面帧的数量比所述最终p距离少一值;
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
以半像素分辨率执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
以半像素分辨率执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;
以及
以1/4像素或者1/8像素分辨率执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
17.一种视频编码器,包括:
图像缓冲器;以及
图形处理单元,配置为:
至少部分基于输入视频数据来执行空间分析,以确定空间复杂性量度以及水平和垂直纹理方向数据;
计算连续帧之间的运动估计来确定运动矢量;
至少部分基于确定的运动矢量来计算绝对差值的总和和平均帧差异;
至少部分基于所述绝对差值的总和、所述平均帧差异、所确定的运动矢量、所述空间复杂性测量以及所述水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及指示运动复杂性的时间索引;
至少部分基于所述输入视频数据,执行增益改变检测来确定增益;
至少部分基于所述增益、所述空间索引、所述时间索引、所述空间复杂性测量以及所述水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变;
至少部分基于所述空间索引、所述时间索引、所确定的镜头改变、以及所述平均帧差异,执行预测距离计算来确定最终p距离,其中,所述最终p距离表明要编码的帧之间的距离;以及
至少部分基于所述最终p距离,相对于先前帧计算当前帧的最终运动估计来确定最终运动矢量。
18.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的。
19.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,来以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
20.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
21.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
其中,确定所述镜头改变还包括多标准确定,包括:
确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联,其中Rs/Cs指一个或多个阶段从输入视频产生的水平和垂直纹理方向数据;以及
确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,
其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变。
22.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
以及
至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,
其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于所述中间p距离以及所述平均帧差异来确定所述最终p距离,
其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,
其中,居间的B-画面帧的数量比所述最终p距离少一值。
23.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
执行所述最终多阶段顺序分层运动估计的最终第一阶段,来以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及执行所述最终多阶段顺序分层运动估计的最终最终阶段,以至少部分基于所述一个或多个最终中间运动矢量,以最终精细水平确定最终最终运动矢量,其中,所述最终精细水平包括所述原始画面的全尺寸的水平。
24.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析,来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
25.如权利要求17所述的视频编码器,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素、1/4像素或者1/8像素分辨率计算运动矢量。
26.如权利要求17所述的视频编码器,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以
1/4像素精度计算最终阶段运动矢量。
27.如权利要求17所述的视频编码器,
其中,确定所述最终运动矢量还包括:
执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以
1/8像素精度计算最终阶段运动矢量。
28.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定所述高精度运动矢量包括以1/2像素分辨率、1/4像素分辨率、或者1/8像素分辨率计算运动矢量。
29.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来计算第一阶段运动矢量;
至少部分基于所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算第二阶段运动矢量;以及
至少部分基于所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
30.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/4像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者
1/8像素分辨率产生所述高精度最终运动矢量。
31.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/8像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者
1/8像素分辨率产生所述高精度最终运动矢量。
32.如权利要求17所述的视频编码器,所述图形处理单元还配置为:
在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中Rs/Cs域指一个或多个阶段的输入视频的水平和垂直纹理方向;
其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平;
其中,确定所述镜头改变还包括多标准确定,包括:
确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,并且其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变;
至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于所述中间p距离以及平均帧差异来确定所述最终p距离,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,并且其中,居间的B-画面帧的数量比所述最终p距离少一值;
对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
以半像素分辨率执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
以半像素分辨率执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;
以及
以1/4像素或者1/8像素分辨率执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
33.至少一个机器可读介质,包括:
多个指令,其响应于在计算设备上被执行,使所述计算设备执行根据权利要求1-16中任意一项所述的方法。
34.一种用于计算先前帧相对于正对其执行用于视频编码的运动估计和补偿的当前帧的预测距离的装置,包括:
用于执行根据权利要求1-16中任意一项所述的方法的单元。

说明书全文

用于下一代视频编码的内容自适应预测距离分析器和分层运

动估计系统

[0001] 相关申请的交叉引用
[0002] 本申请要求2013年1月30日提交的美国临时申请号61/758,314,名为“下一代视频编码”的优先权,其公开整体明确地整合到本文中。

背景技术

[0003] 视频编码器压缩视频信息,以便能够通过给定的带宽发送更多信息。压缩的信号然后可以传输至具有解码器的接收器,解码器在显示之前将信号解码或者解压。
[0004] 高效视频编码(HEVC)是由视频编码联合协作小组(JCT-VC)开发的、最新的视频压缩标准,该小组是由ISO/IEC运动图像专家组(MPEG)和ITU-T视频编码专家组(VCEG)形成的。HEVC是响应于之前的H.264/AVC(高级视频编码)标准开发的,之前的H.264/AVC没有提供足够的压缩用来发展更高分辨率的视频应用。类似于之前的视频编码标准,HEVC包含基本功能模,诸如内/帧间预测、转换、量化、环路内滤波、以及熵编码
[0005] 随着不断增加的视频的分辨率以及由于出现好显示器而导致期望高视频质量,使用现有视频编码标准(诸如更早的MPEG标准、甚至更近的H.264/AVC标准)所要求的对应码率/带宽相对高。实际上,因为H.264/AVC不被认为对于发展的更高分辨率的视频应用提供了足够高的压缩,所以视为需要开发新的标准(HEVC)。
[0006] 为了获得高编码效率,竞争视频编码解决方案、标准典型地采用帧间视频编码,其中,运动估计和补偿是部件。标准典型地操作来将运动补偿块尺寸、运动补偿精度和滤波、运动补偿类型(向前和/或向后)、以及多个参考运动补偿的使用标准化。然而,这样的标准典型地没有将运动估计的特定技术标准化。附图说明
[0007] 本文说明的材料在附图中是以示例的方式,而非以限制的方式示出。为了简洁并清楚示出,在图中示出的要素不一定是成比例绘出的。例如,为了清楚,一些要素的尺寸可以相对于其他要素夸大。此外,认为适当时,附图标记在附图中重复,以表明对应的或类似的要素。在图中:
[0008] 图1是示例下一代视频编码器的示意图;
[0009] 图2是示例下一代视频解码器的示意图;
[0010] 图3(a)是示例下一代视频编码器和子系统的示意图;
[0011] 图3(b)是示例下一代视频解码器和子系统的示意图;
[0012] 图4是示例内容预分析器子系统的示意图;
[0013] 图5是示例空间分析器模块的示意图;
[0014] 图6是示例运动范围估计器模块的示意图;
[0015] 图7是示例顺序分层运动估计器模块的示意图;
[0016] 图8是示例时间空间分析器模块的示意图;
[0017] 图9是示例增益改变检测器模块和镜头(shot)改变检测器模块的示意图;
[0018] 图10是示例p距离计算器模块的示意图;
[0019] 图11是示例内容感知分层运动估计器模块的示意图;
[0020] 图12是示出示例运动范围估计处理的流程图
[0021] 图13是示出示例Rs/Cs域运动估计处理的流程图;
[0022] 图14是示出示例阶段1和阶段2运动估计处理的流程图;
[0023] 图15是示出示例阶段3运动估计处理的流程图;
[0024] 图16是具有分层帧结构的帧序列的示意图;
[0025] 图17是示出示例阶段3运动估计处理的流程图;
[0026] 图18是示出用于镜头改变确定的示例决定线的图;
[0027] 图19是示出用于镜头改变确定的示例决定线的图;
[0028] 图20是示出用于镜头改变确定的示例决定线的图;
[0029] 图21是示出用于镜头改变确定的示例决定线的图;
[0030] 图22是示出示例分层运动估计处理的流程图;
[0031] 图23是示出另一个示例分层运动估计处理的流程图;
[0032] 图24是示出示例编码处理的流程图;
[0033] 图25示出示例比特流;
[0034] 图26是示出示例解码处理的流程图;
[0035] 图27(A)、15(B)、以及15(C)提供操作中的示例视频编码系统和视频编码处理的示意图;
[0036] 图28是示出示例编码处理的流程图;
[0037] 图29是示例视频编码系统的示意图;
[0038] 图30是示例系统的示意图;
[0039] 图31示出都依据本公开的至少一些实施方式布置的示例设备。

具体实施方式

[0040] 现在参考附图说明一个或多个实施例或者实施方式。虽然讨论了特定配置和布置,但应该理解的是,这仅是出于示例性目的。相关领域的技术人员将会认识到可以采用其他配置和布置,而不脱离描述的精神和范围。对于相关领域的技术人员明显的是,本文说明的技术和/或布置还可以在除本文说明外的各种其他系统和应用中采用。
[0041] 虽然下面的说明记载了可以表现在架构(例如诸如片上系统(SoC)架构)中的各种实施方式,但本文说明的技术和/或布置的实施方式不限于特定架构和/或计算系统,并可以由用于类似目的的任何架构和/或计算系统实现。例如,采用例如多个集成电路(IC)芯片和/或封装的各种架构、和/或各种计算设备和/或消费者电子(CE)设备(诸如机顶盒、智能电话等)可以实现本文说明的技术和/或布置。此外,虽然下面的说明可能记载大量具体细节(诸如逻辑实施方式、系统部件的类型和相互关系、逻辑分段/集成选择等),但要求保护的主题可以付诸实践而没有这样的具体细节。在其他实例中,一些材料(诸如例如控制构造和全软件指令序列)可能不详细示出,以不模糊本文公开的材料。
[0042] 本文公开的材料可以以硬件固件、软件、或者其任何组合实现。本文公开的材料还可以实现为存储在机器可读介质上的指令,该指令可以由一个或多个处理器读出并执行。机器可读介质可以包含用于以由机器(例如计算设备)可读的形式存储或者传输信息的任何介质和/或机构。例如机器可读介质可以包含:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;电、光学、声学或者其他形式的传播的信号(例如载波、红外线信号、数字信号等);以及其他。
[0043] 说明书中提到的“一个实施方式”、“实施方式”、“示例实施方式”等表明了说明的实施方式可以包含特定的特征、构造、或者特性,但是每个实施例可能不一定包含该特定的特征、构造、或者特性。此外,该词组不一定是指相同的实施方式。此外,在结合实施例说明了特定的特征、构造、或者特性时,认为结合其他实施方式来运用该特征、构造、或者特性是在本领域的技术人员知识范围内的,无论本文是否明确说明。
[0044] 下文说明的系统、装置、物品、以及方法与用于视频编码的内容自适应预测距离分析和分层运动估计相关。
[0045] 如上所述,标准典型地没有将运动估计的特定技术标准化。实际上,当没有标准化时,可能需要好的运动估计技术,以示出任何视频编码解决方案的压缩效率,因为好的设计的运动估计技术能够通过提供改善的预测来允许更高的压缩,允许平衡的计算复杂性并减小运动矢量编码开销位成本。这尤其重要,因为所有的高级视频编解码器使用若干不同的块尺寸用于运动补偿,其还使用更高精度(诸如1/4像素,或者1/8像素)的运动补偿,以及可以典型地使用多个参考画面用于运动补偿。
[0046] 典型地,视频编码使用I-、P-、以及B-(或者大致类似的)画面,其中I-是不使用运动补偿的帧内画面,P-帧使用单向(向前或者向后)运动补偿,并且B-画面是非因果的并使用双向(向前和/或向后)运动补偿。因此,即使在没有明确的多参考帧的简单场景中,典型的视频编码使用高达2个参考画面。典型地,为了实现更高编码效率,并不少见的是每个画面在4和8个解码的参考画面之间使用8个或更多的块尺寸(通过将画面首先细分为宏块、预测单元或者图块,进而分为更小的块),以及至少1/4像素精度运动补偿。此外,I-、P-、以及B-画面的布置(其可能与每个画面类型发生的频率密切相关)可以与可能的压缩的量直接相关,因为借助来自高质量编码的P-和I-画面的支持,B-画面能够允许更高压缩。
[0047] 因此,P-画面之间的时间预测距离(pdist)越高,B-画面的数量越多,其至少对于更低复杂性的场景允许潜在更高的压缩。具有高度变化的运动量的变量复杂性场景呈现挑战,因为对于这样的场景pdist参数需要适应内容。例如,在邻近的锚定画面(anchor picture)、I-画面或者P-画面之间,pdist=2(1B-画面)。
[0048] 然而,虽然可能对压缩效率具有潜在益处,使用更大的pdist参数可能对复杂性具有不良后果,因为需要运动估计要求的大的固定范围。再次,虽然在基于标准的编码中不要求固定的pdist参数,典型地,正确并连续决定该参数的复杂性会典型地使标准推荐固定参考pdist参数用于视频编码。总体而言,用于运动估计的好的技术不仅改善运动补偿效率,而且允许易于适应pdist,在编码效率方面给予显著的总体效益。
[0049] 如将在下文详细说明的那样,现有方法(包含由H.264和HEVC标准推荐的运动估计方案使用的那些)的限制可以由本文说明的更低复杂性、更高效率技术解决。在下一代视频(NGV)编解码器项目的背景下开发的本公开处理了如下一般问题:设计一种新的、将能实现的压缩效率最大化并对于在各种平台(包含受限设备)上的实施方式保持足够实用的高级视频编解码器。更具体而言,相比于现有解决方案,本文说明的运动估计技术可以适应改善的运动补偿中内容和结果的属性,降低计算复杂性,并降低运动矢量编码的成本。
[0050] 更具体而言,本文说明的技术可以不同于基于标准的方法,因为其在视频编码处理中自然整合有基于显著内容的自适应以实现更高压缩。通过比较,基于标准的视频编码方法典型地趋向于通过适应并精调旧有的方法来挤出更高的增益。例如,下文讨论的内容自适应分层运动估计技术的设计目的在于:以低计算复杂性计算精确的运动估计,并保证运动估计能够用于有效的视频压缩(运动矢量的低开销编码)。更具体而言,下面的公开包含下面的方面的讨论:内容自适应分层运动估计器(HME);内容自适应预测距离(例如,时间空间分析器)分析器;和/或内容自适应预测距离分析器和运动估计系统(其可以包含HME和/或时间空间分析器)。
[0051] 相应地,本文说明的技术说明内容自适应运动估计方法,其相对于其他现有算法,可以提供下面的益处:更平滑运动域;精确的运动说明;可配置的子像素精确度(例如,高达1/8像素);可以准备好对与预处理器工具接合的方法;检测并适应非常大运动和/或非常大分辨率的能;用于运动说明的3个阶段的精度;等;和/或其组合。另外,本文说明的技术在自适应计算pdist中说明这样的运动估计器的应用,所述pdist是在视频编码中增加总体压缩效率的显著值。
[0052] 本文使用的术语“编码器(coder)”可以指编码器(encoder)和/或解码器(decoder)。类似地,本文使用的术语“编码(coding)”可以指经由编码器执行视频编码(encoding)和/或经由解码器执行视频解码(decoding)。例如,视频编码器和视频解码器可以都是能够将视频数据编码的编码器的示例。此外,本文使用的术语“编解码器”可以指任何处理、程序或者一组操作,诸如例如可以实现编码器和/或解码器的软件、固件、和/或硬件的任何组合。此外,本文使用的词组“视频数据”可以指关联于视频编码的任何类型的数据,诸如例如视频帧、图像数据、编码的比特流数据等。
[0053] 图1是依据本公开的至少一些实施方式布置的示例下一代视频编码器100的示意图。如图所示,编码器100可以接收输入视频101。输入视频101可以包含用于编码的任何适当的输入视频,诸如例如视频序列的输入帧。如图所示,输入视频101可以经由内容预分析器模块102接收。内容预分析器模块102可以被配置为执行输入视频101的视频帧的内容的分析,来确定用于改善视频编码效率和速度性能的各种类型的参数。例如,内容预分析器模块102可以确定平和垂直梯度信息(例如Rs、Cs)、方差、每画面空间复杂性、每画面时间复杂性、场景改变检测、运动范围估计、增益检测、预测距离估计、对象估计的数量、区域边界检测、空间复杂性图计算、焦点估计、胶片颗粒估计等。由内容预分析器模块102产生的参数可以由编码器100(例如经由编码控制器103)使用和/或量化,并传输至解码器。如图所示,视频帧和/或其他数据可以从内容预分析器模块102传输至自适应画面组织器模块104,其可以确定每个视频帧的画面类型(例如I-、P-、或者F/B-画面),并根据需要将视频帧重新排序。在一些示例中,自适应画面组织器模块104可以包含配置为产生帧部分的帧部分产生器。在一些示例中,内容预分析器模块102和自适应画面组织器模块104可以一起被视为编码器100的预分析器子系统。
[0054] 如图所示,视频帧和/或其他数据可以从自适应画面组织器模块104传输至预测分区产生器模块105。在一些示例中,预测分区产生器模块105可以将帧或者画面分割为图块或者超片段等。在一些示例中,(例如在模块104和105之间的)附加的模块可以被提供用来将帧或者画面分割为图块或者超片段。预测分区产生器模块105可以将每个图块或者超片段分割为潜在的预测分段或者分区。在一些示例中,可以使用如下分段技术来确定潜在的预测分段:诸如例如k-d树分段技术、bi-tree分段技术等,其可以基于单独视频帧的画面类型(例如I-、P-、或者F/B-画面)、被分区的帧部分的特性等来确定。在一些示例中,确定的潜在的预测分段可以是对预测(例如帧间或者帧内预测)的分区,并可以说明为预测分区或者预测块等。
[0055] 在一些示例中,选择的预测分段(例如预测分区)可以根据潜在的预测分段确定。例如,选择的预测分段可以基于对每个潜在的预测分段确定使用特性的预测和基于运动的多参考预测或者帧内预测,并且确定预测参数。对于每个潜在的预测分段,可以通过确定原始的像素与预测像素的差异来确定潜在的预测误差,并且选择的预测分段可以是具有最小预测误差的潜在的预测分段。在其他示例中,可以基于包含加权评分的率失真优化来确定选择的预测分段,该加权评分基于用于对分段进行编码的比特数和关联于预测分段的预测误差。
[0056] 如图所示,在差异确定器106处的选择的预测分段(例如当前帧的预测分区)的原始像素可以与预测的分区(例如,基于参考帧的当前帧的预测分区的预测和其他预测数据,诸如帧间或者帧内预测数据)的原始像素确定差异。确定预测的分区将在下文进一步说明,并且可以包含图1所示的解码循环。来自差异确定的任何剩余或者剩余数据(例如分区预测误差数据)可以传输至编码分区产生器模块107。在一些示例中,诸如对于任何画面类型(I-、F/B-或者P-画面)中的预测分区的帧内预测,编码分区产生器模块107可以经由开关107a和107b被绕开。在这样的示例中,仅单级的分段可以被执行。这样的分段可以说明为预测分段(如说明的那样)或者编码分段或者两者。在各种示例中,这样的分段可以经由预测分区产生器模块105(如说明的那样)执行,或者如本文进一步说明的那样,这样的分段可以经由(经由编码分区产生器模块107实现的)k-d树帧内预测/编码分区器模块或者bi-tree帧内预测/编码分区器模块执行。
[0057] 在一些示例中,如果有的话,分区预测误差数据可能不足够显著来授权编码。在可能期望将分区预测误差数据编码并且分区预测误差数据与帧间预测相关联等的其他示例中,编码分区产生器模块107可以确定预测分区的编码分区。在一些示例中,可能不需要编码分区产生器模块107,因为分区可以没有编码分段而被编码(例如如图所示,经由(经由开关107a和107b可用的)绕开路径)。无论是否有编码分段,在剩余或者剩余数据要求编码时,分区预测误差数据(其可以接下来说明为任何事件中的编码分区)可以传输至自适应转换模块108。在一些示例中,预测分区产生器模块105和编码分区产生器模块107可以一起被视为编码器100的分区器子系统。在各种示例中,编码分区产生器模块107可以对分区预测误差数据、原始的像素数据、剩余数据、或者小波数据进行操作。
[0058] 编码分区产生器模块107可以使用bi-tree和/或k-d树分段技术等,产生例如分区预测误差数据的潜在的编码分段(例如编码分区)。在一些示例中,潜在的编码分区可以经由自适应转换模块108使用具有各种块尺寸的自适应或者固定转换来转换,并且选择的编码分段和选择的转换(例如自适应或固定的)可以基于率失真优化或者其他基础来确定。在一些示例中,选择的编码分段和/或选择的转换可以基于以编码分区尺寸等为基础的预定的选择方法来确定。
[0059] 例如,自适应转换模块108可以包含用于执行参数转换的第一部分或者部件,以允许小至中尺寸块的本地最佳转换编码;以及第二部分或者部件用于使用来自各种转换(包含参数转换)的固定转换(诸如离散余弦转换(DCT)或者基于画面的转换)或者本文进一步说明的任何其他配置,执行全局稳定、低开销转换编码。在一些示例中,为了本地最佳转换编码,可以执行参数哈尔转换(PHT),如本文进一步说明的那样。在一些示例中,转换可以对约4x4像素与64x64像素之间的矩形尺寸的2D块执行,而实际的尺寸根据多个因子(诸如转换的数据是否是亮度或者色度、或者帧间或者帧内、或者使用的确定的转换是否是PHT或者DCT等)。
[0060] 如图所示,作为结果的转换系数可以传输至自适应量化模块109。自适应量化模块109可以将作为结果的转换系数量化。此外,根据需要,关联于参数转换的任何数据可以传输至自适应量化模块109(如果期望量化)或者自适应熵编码器模块110。另外如图1所示,量化的系数可以被扫描并传输至自适应熵编码器模块110。自适应熵编码器模块110可以将量化的系数熵编码,并将其包含在输出比特流111中。在一些示例中,自适应转换模块108和自适应量化模块109可以一起被视为编码器100的转换编码器子系统。
[0061] 另外如图1所示,编码器100包含本地解码循环。本地解码循环可以始于自适应逆量化模块112。自适应逆量化模块112可以被配置为执行自适应量化模块109的相反操作,使得可以执行逆扫描并且量化的系数可以去缩放(de-scaled)来确定转换系数。这样的自适应量化操作例如可能是有损的。如图所示,转换系数可以传输至自适应逆转换模块113。自适应逆转换模块113可以如通过自适应转换模块108执行的那样执行逆转换,例如来产生关联于编码分区的剩余或者剩余值或者分区预测误差数据(或者原始数据或者小波数据,如说明的那样)。在一些示例中,自适应逆量化模块112和自适应逆转换模块113可以一起被视为编码器100的转换解码器子系统。
[0062] 如图所示,分区预测误差数据(等)可以传输至可选的编码分区组装器114。编码分区组装器114可以根据需要,将编码分区组装为解码的预测分区(如图所示,在一些示例中,编码分区组装器114可以经由开关114a和114b被跳过,使得解码的预测分区可以在自适应逆转换模块113处产生),以产生预测误差数据的预测分区或者解码的剩余预测分区等。
[0063] 如图所示,解码的剩余预测分区可以在增加器115处增加至预测的分区(例如预测像素数据),以产生重建的预测分区。重建的预测分区可以传输至预测分区组装器116。预测分区组装器116可以组装重建的预测分区以产生重建的图块或者超片段。在一些示例中,编码分区组装器模块114和预测分区组装器模块116可以一起被视为编码器100的去分区器(un-partitioner)子系统。
[0064] 重建的图块或者超片段可以传输至块效应(blockiness)分析器和去块(deblock)滤波模块117。块效应分析器和去块滤波模块117可以将重建的图块或者超片段(或者图块或者超片段的预测分区)去块并抖动。产生的去块和抖动滤波器参数可以用于当前滤波器操作和/或编码在输出比特流111中,例如供解码器使用。块效应分析器和去块滤波模块117的输出可以传输至质量分析器和质量恢复滤波模块118。质量分析器和质量恢复滤波模块118可以确定QR滤波参数(例如对于QR分解),并使用确定的参数用来滤波。QR滤波参数还可以被编码在输出比特流111中供解码器使用。如图所示,质量分析器和质量恢复滤波模块
118的输出可以传输至解码的画面缓冲器119。在一些示例中,质量分析器和质量恢复滤波模块118的输出可以是最终重建的帧,其可以用于针对编码其他帧的预测(例如最终重建的帧可以是参考帧等)。在一些示例中,块效应分析器和去块滤波模块117以及质量分析器和质量恢复滤波模块118可以一起被视为编码器100的滤波子系统。
[0065] 在编码器100中,预测操作可以包含帧间和/或帧内预测。如图1(a)所示,帧间预测可以由一个或多个模块执行,模块包含变形分析器和变形的画面产生模块120、合成分析器和产生模块121、以及特性和运动滤波预测器模块123。变形分析器和变形的画面产生模块120可以分析当前画面来确定针对于以下的参数:相对于其可能要编码的参考帧,增益中的改变、支配性运动中的改变、注册中的改变、以及模糊中的改变。确定的变形参数可以被量化/去量化并(例如由变形分析器和变形的画面产生模块120)使用以产生变形的参考帧,其可以由运动估计器模块122使用,用来计算对于当前帧的有效运动(和特性)补偿的预测的运动矢量。合成分析器和产生模块121可以对于运动产生超分辨率(SR)画面和投影的插值(PI)画面等,用于确定这些帧中的有效运动补偿的预测的运动矢量。
[0066] 运动估计器模块122可以基于变形的参考帧和/或超分辨率(SR)画面和投影的插值(PI)画面以及当前帧,产生运动矢量数据。在一些示例中,运动估计器模块122可以被视为帧间预测模块。例如,运动矢量数据可以用于帧间预测。如果应用了帧间预测,那么特性和运动补偿滤波预测器模块123可以应用运动补偿作为本地解码循环的部分,如说明的那样。
[0067] 帧内预测可以由帧内方向预测分析器和预测产生模块124执行。帧内方向预测分析器和预测产生模块124可以被配置为执行空间方向预测,并可以使用解码的相邻分区。在一些示例中,方向的确定和预测的产生这两者可以由帧内方向预测分析器和预测产生模块124执行。在一些示例中,帧内方向预测分析器和预测产生模块124可以被视为帧内预测模块。
[0068] 如图1所示,预测模式和参考类型分析器模块125可以允许对于图块(或者超片段)的每个预测分区,从“跳过”、“自动”、“帧间”、“分离”、“多帧”、以及“帧内”之中选择预测模式,其全部可以应用到P-和F/B-画面。除了预测模式外,还允许选择能够根据“帧间”或者“多帧”模式以及对于P-和F/B-画面而不同的参考类型。在预测模式和参考类型分析器模块125的输出处的预测信号可以由预测分析器和预测融合滤波模块126滤波。预测分析器和预测融合滤波模块126可以确定参数(例如,滤波系数、频率、开销)供滤波使用,并可以执行滤波。在一些示例中,将预测信号滤波可以融合代表不同模式(例如帧内、帧间、多帧、分离、跳过、以及自动)的不同类型的信号。在一些示例中,帧内预测信号可以不同于所有其他类型的帧间预测信号,使得适当的滤波可以大大增强编码效率。在一些示例中,滤波参数可以被编码在输出比特流111中供解码器使用。滤波的预测信号可以将第二输入(例如预测分区)提供至差异确定器106,如上所述,其可以对于之前说明的编码确定预测差异信号(例如分区预测误差)。此外,相同的滤波的预测信号可以将第二输入提供至增加器115,如上所述。
如上所述,输出比特流111可以提供有效编码的比特流供解码器使用来呈现视频。
[0069] 图1示出关联于视频编码器100的操作的示例控制信号,其中下面的缩写可以代表相关联的信息:
[0070] scnchg       场景改变信息
[0071] spcpx        空间复杂性信息
[0072] tpcpx         时间复杂性信息
[0073] pdist         时间预测距离信息
[0074] pap           预分析参数(对于除了scnchg,spcpx,tpcpx,pdist外的所有其他预分析参数的占位符)
[0075] ptyp          画面类型信息
[0076] pgst          画面组构造信息
[0077] pptn cand.    预测分段候选
[0078] cptn cand.    编码分段候选
[0079] prp           预处理
[0080] xmtyp         转换类型信息
[0081] xmdir         转换方向信息
[0082] xmmod         转换模式
[0083] ethp          八分之一(1/8)像素运动预测
[0084] pptn          预测分段
[0085] cptn          编码分段
[0086] mot&cod cost  运动和编码成本
[0087] qs            量化器信息集(包含量化器参数(Qp)、量化器矩阵(QM)选择)[0088] mv            运动矢量
[0089] mop           变形参数
[0090] syp           合成参数
[0091] ddi           去块和抖动信息
[0092] qri           质量恢复滤波指数/信息
[0093] api           自适应精确滤波指数/信息
[0094] fii           融合滤波指数/信息
[0095] mod           模式信息
[0096] reftyp        参考类型信息
[0097] idir          帧内预测方向
[0098] 可能需要发送至解码器的各种信号和数据项目,例如pgst,ptyp,prp,pptn,cptn,modes,reftype,ethp,xmtyp,xmdir,xmmod,idir,mv,qs,mop,syp,ddi,qri,api,fii,定量系数和其他的,然后可以由自适应熵编码器110进行熵编码,其可以包含共同被称为熵编码器子系统的不同的熵编码器。这些控制信号被示出为与图1中的编码器100的特定示例功能模块相关联,但其他实施方式可以包含编码器300的功能模块中间的控制信号的不同分布。本公开不限于此,在各种示例中,本文中控制信号的实施方式可以包含示出的特定示例控制信号、附加的控制信号的仅子集任务,和/或不同于示出的布置。
[0099] 图2是跟据本公开的至少一些实施方式布置的示例下一代视频解码器200的示意图。如图所示,解码器200可以接收输入比特流201。在一些示例中,输入比特流201可以经由编码器100和/或经由本文说明的编码技术进行编码。如图所示,输入比特流201可以由自适应熵解码器模块202接收。自适应熵解码器模块202可以解码各种类型的编码的数据(例如开销、运动矢量、转换系数等)。在一些示例中,自适应熵解码器202可以使用可变长度解码技术。在一些示例中,自适应熵解码器202可以执行上述自适应熵编码器模块110的逆操作。
[0100] 解码的数据可以传输至自适应逆量化模块203。自适应逆量化模块203可以被配置为将量化的系数逆扫描并去缩放,以确定转换系数。这样的自适应量化操作例如可能是有损的。在一些示例中,自适应逆量化模块203可以被配置为执行自适应量化模块109的相反操作(例如,与自适应逆量化模块112实质上相同的操作)。如图所示,转换系数(在一些示例中,用于参数转换的转换数据)可以传输至自适应逆转换模块204。自适应逆转换模块204可以对转换系数执行逆转换,以产生关联于编码分区的剩余或者剩余值或者分区预测误差数据(或者原始数据或者小波数据)。在一些示例中,自适应逆转换模块204可以被配置为执行自适应转换模块108的相反操作(例如,与自适应逆转换模块113实质上相同的操作)。在一些示例中,自适应逆转换模块204可以基于其他之前解码的数据(诸如例如解码的相邻分区)来执行逆转换。在一些示例中,自适应逆量化模块203和自适应逆转换模块204可以一起被视为解码器200的转换解码器子系统。
[0101] 如图所示,剩余或者剩余值或者分区预测误差数据可以传输至编码分区组装器205。编码分区组装器205可以根据需要,将编码分区组装为解码的预测分区(如图所示,在一些示例中,编码分区组装器205可以经由开关205a和205b被跳过,使得解码的预测分区可以在自适应逆转换模块204处产生)。预测误差数据的解码的预测分区(例如,预测分区剩余)可以在增加器206处被增加至预测的分区(例如预测像素数据),以产生重建的预测分区。重建的预测分区可以传输至预测分区组装器207。预测分区组装器207可以组装重建的预测分区以产生重建的图块或者超片段。在一些示例中,编码分区组装器模块205和预测分区组装器模块207可以一起被视为解码器200的去分区器子系统。
[0102] 重建的图块或者超片段可以传输至去块滤波模块208。去块滤波模块208可以将重建的图块或者超片段(或图块或者超片段的预测分区)去块并抖动。例如,产生的去块和抖动滤波器参数可以根据输入比特流201确定。去块滤波模块208的输出可以传输至质量恢复滤波模块209。质量恢复滤波模块209可以基于QR参数来应用质量滤波,该QR参数可以例如根据输入比特流201确定。如图2所示,质量恢复滤波模块209的输出可以传输至解码的画面缓冲器210。在一些示例中,质量恢复滤波模块209的输出可以是最终重建的帧,其可以用于编码其他帧的预测(例如最终重建的帧可以是参考帧等)。在一些示例中,去块滤波模块208和质量恢复滤波模块209可以一起被视为解码器200的滤波子系统。
[0103] 如上所述,(由于预测操作的)补偿可以包含帧间和/或帧内预测补偿。如图所示,帧间预测补偿可以由一个或多个模块执行,模块包含变形产生模块211、合成产生模块212、以及特性和运动补偿滤波预测器模块213。变形产生模块211可以使用去量化的变形参数(例如,根据输入比特流201确定)来产生变形的参考帧。合成产生模块212可以基于根据输入比特流201确定的参数,产生超分辨率(SR)画面和投影的插值(PI)画面等。如果应用帧间预测,那么特性和运动补偿滤波预测器模块213可以基于输入比特流201中的接收的帧和运动矢量数据等,应用运动补偿。
[0104] 帧内预测补偿可以由帧内方向预测产生模块214执行。帧内方向预测产生模块214可以被配置为执行空间方向预测,并可以使用根据输入比特流201中的帧内预测数据的解码的相邻分区。
[0105] 如图2所示,预测模式选择器模块215可以基于输入比特流201中的模式选择数据,对于图块的每个预测分区从“跳过”、“自动”、“帧间”、“多帧”、以及“帧内”之中(其全部可以应用到P-和F/B-画面)确定预测模式选择。除了预测模式外,还允许选择能够根据“帧间”或者“多帧”模式以及对于P-和F/B-画面而不同的参考类型。在预测模式选择器模块215的输出处的预测信号可以由预测融合滤波模块216滤波。预测融合滤波模块216可以基于经由输入比特流201确定的参数(例如滤波系数、频率、开销)来执行滤波。在一些示例中,滤波预测信号可以融合代表不同模式(例如帧内、帧间、多帧、跳过、以及自动)的不同类型的信号。在一些示例中,帧内预测信号可以不同于所有其他类型的帧间预测信号,使得适当的滤波可以大大增强编码效率。滤波的预测信号可以将第二输入(例如预测分区)提供至差异确定器206,如上所述。
[0106] 如上所述,质量恢复滤波模块209的输出可以是最终重建的帧。最终重建的帧可以传输至自适应画面重新组织器217,其可以基于输入比特流201中的排序参数,根据需要来重新排序或者重新组织帧。重新排序的帧可以传输至内容后恢复器模块218。内容后恢复器模块218可以是可选的模块,配置为对解码视频的感知质量执行进一步改善。改善处理可以响应于输入比特流201中的质量改善参数而被执行,或者其可以作为独立操作而被执行。在一些示例中,内容后恢复器模块218可以应用参数来改善质量(诸如例如胶片颗粒噪声的估计、或者剩余块效应减小)(例如,甚至在相对于去块滤波模块208讨论的去块操作之后)。如图所示,解码器200可以提供显示视频219,其可以被配置为经由显示器设备(未示出)显示。
[0107] 图2示出关联于视频解码器200的操作的示例控制信号,其中指示的缩写可以代表与上面相对于图1讨论的类似的信息。虽然这些控制信号被示出为与图2中的解码器200的特定示例功能模块相关联,但其他实施方式可以包含编码器100的功能模块之中的控制信号的不同分布。本公开不限于此,并且在各种示例中,本文中控制信号的实施方式可以包含示出的特定示例控制信号、附加的控制信号的仅子集任务,和/或不同于示出的布置。
[0108] 虽然图1至2示出特定编码和解码模块,但跟据本公开还可以利用未绘出的各种其他编码模块或者部件。此外,本公开不限于图1和2中示出的特定部件,和/或其中布置了各种部件的方式。本文说明的系统的各种部件可以以软件、固件、和/或硬件和/或其任何组合实现。例如,编码器100和/或解码器200的各种部件可以至少部分由计算片上系统(SoC)的硬件(诸如可以在计算系统中发现的,诸如例如移动电话)提供。
[0109] 此外,可以认识到编码器100可以关联于内容提供商系统和/或由内容提供商系统提供,其包含例如视频内容服务器系统,并且输出比特流111可以通过各种通信部件和/或系统(诸如图1和2未绘出收发器、天线、网络系统等)传输或运输至解码器(诸如例如解码器200)。还可以认识到解码器200可以关联于对于编码器100为远程的客户端系统,诸如计算设备(例如桌面计算机、膝上型计算机、平板计算机、可转换膝上型计算机、移动电话等),并且经由各种通信部件和/或系统(诸如图1和2未绘出的收发器、天线、网络系统等)接收输入比特流201。因此,在各种实施方式中,编码器100和解码器子系统200可以一起或者彼此独立地实现。
[0110] 图3(a)是根据本公开的至少一些实施方式布置的示例下一代视频编码器300a的示意图。图3(a)呈现与图1(a)和1(b)示出的类似的编码器,为了简洁起见类似的元件将不会被重复。如图3(a)所示,编码器300a可以包含预分析器子系统310a、分区器子系统320a、预测编码子系统330a、转换编码器子系统340a、滤波编码子系统350a、熵编码器系统360a、转换解码器子系统370a、和/或去分区器子系统380a。预分析器子系统310a可以包含内容预分析器模块102和/或自适应画面组织器模块104。分区器子系统320a可以包含预测分区产生器模块105和/或编码分区产生器107。预测编码子系统330a可以包含运动估计器模块122、特性和运动补偿滤波预测器模块123、和/或帧内方向预测分析器和预测产生模块124。
转换编码器子系统340a可以包含自适应转换模块108和/或自适应量化模块109。滤波编码子系统350a可以包含块效应分析器和去块滤波模块117、质量分析器和质量恢复滤波模块
118、运动估计器模块122、特性和运动补偿滤波预测器模块123、和/或预测分析器和预测融合滤波模块126。熵编码子系统360a可以包含自适应熵编码器模块110。转换解码器子系统
370a可以包含自适应逆量化模块112和/或自适应逆转换模块113。去分区器子系统380a可以包含编码分区组装器114和/或预测分区组装器116。
[0111] 编码器300a的分区器子系统320a可以包含2个分区子系统:预测分区产生器模块105可以对预测执行分析并分区,并且编码分区产生器模块107可以对编码执行分析并分区。另一个分区方法可以包含自适应画面组织器104,其可以将画面分割为区域或者片,其还可以可选地被认为是该分区器的部分。
[0112] 编码器300a的预测编码器子系统330a可以包含运动估计器122;可以执行“帧间”信号的分析和预测的特性和运动补偿滤波预测器123;以及可以执行“帧内”信号的分析和预测的帧内方向预测分析器和预测产生模块124。运动估计器122和特性和运动补偿滤波预测器123可以允许:通过对差异的其他源(诸如增益、全局运动、注册)的第一补偿(随后为实际运动补偿),来增加预测性。其还可以允许使用数据建模来创建可以允许更好预测的合成帧(超分辨率和投影),随后使用这样的帧中的实际的运动补偿。
[0113] 编码器300a的转换编码器子系统340a可以执行分析来选择转换的类型和尺寸,并可以包含2个主要类型的部件。第一类型的部件可以允许使用参数转换来允许小至中尺寸块的本地最佳转换编码;然而这样的编码可能会要求一些开销。第二类型的部件可以允许使用来自包含参数转换的少数转换的选择的通用/固定转换(诸如DCT、或者基于画面的转换)的全局稳定、低开销编码。对于本地自适应转换编码而言,可以使用PHT(参数哈尔转换)。转换可以对4x4和64x64之间的矩形尺寸的2D块执行,而实际的尺寸可以取决于多个因子(诸如转换的数据是否是亮度或者色度、帧间或者帧内、以及使用的转换是否是PHT或者DCT)。作为结果的转换系数可以被量化、扫描以及熵编码。
[0114] 编码器300a的熵编码器子系统360a可以包含多个有效但是低复杂性部件,每个部件的目标是将特定类型的数据(各种类型的开销、运动矢量、或者转换系数)有效地编码。该子系统的部件可以属于通用级别的低复杂性可变长度编码技术,然而,为了有效编码,每个部件可以为了最高效率被定制优化。例如,定制解决方案可以被设计用于:编码“编码的/未编码的”数据,还用于“模式和参考类型”数据,又用于“运动矢量”数据,又用于“预测和编码分区”数据。最终,因为要熵编码的数据的非常大一部分是“转换系数”数据,所以可以使用用于有效处理特定块尺寸的多个方法、以及可以在多个表格间适应的算法。
[0115] 编码器300a的滤波编码器子系统350a可以基于这些参数来执行重建画面的参数的分析以及多个滤波,并可以包含若干子系统。例如,第一子系统、块效应分析器和去块滤波模块117可以去块并抖动,以减小或掩码处理(mask)任何潜在的块编码效应(block coding artifact)。第二示例子系统、质量分析器和质量恢复滤波模块118可以执行一般质量恢复,以减小由于任何视频编码中的量化操作的效应。可以包含运动估计器122和特性以及运动补偿滤波预测器模块123的第三示例子系统可以通过使用滤波器,改善来自运动补偿的结果,其适应内容的运动特性(运动速度/模糊程度)。第四示例子系统、预测融合分析器和滤波器产生模块126可以允许预测信号的自适应滤波(其可以减小预测中的经常来自帧内预测的虚假效应),因而减小需要被编码的预测误差。
[0116] 编码器300a的编码控制器模块103可以负责在给定的资源和期望的编码速度的约束下的总体视频质量。例如,在不使用任何捷径的基于全RDO(率失真优化)的编码中,软件编码的编码速度可以简单地是计算资源(处理器的速度、处理器的数量、超线程、DDR3存储器等)可用性的后果。在这样的情况下,编码控制器模块103可以输入预测分区和编码分区的每个单个组合并通过实际的编码,并且码率可以对于每个情况与重建误差一起被计算,并基于拉格朗日优化方程,最佳组预测和编码分区可以对于被编码的每个帧的每个图块而被发送。基于全RDO的模式可以导致最好的压缩效率,并还可以是最慢编码模式。通过使用来自内容预分析器模块102的内容分析参数,并使用其进行RDO简化(不测试所有可能的情况),或者仅通过全RDO传递某百分比的块,可以做出质量对速度折衷并允许更快的编码。迄今已说明了基于可变比特率(VBR)的编码器操作。编码控制器模块103还可以包含能够在恒定比特率(CBR)控制的编码情况下调用的率控制器。
[0117] 最后,编码器300a的预分析子系统310a可以执行内容的分析来计算各种类型的参数,该参数对于改善视频编码效率和速度性能是有用的。例如,其可以计算水平和垂直梯度信息(Rs、Cs)、方差、每画面的空间复杂性、每画面的时间复杂性、场景改变检测、运动范围估计、增益检测、预测距离估计、对象估计的数量、区域边界检测、空间复杂性映射计算、焦点估计、胶片颗粒估计等。由预分析器子系统310a产生的参数可以由编码器消耗,或者被量化并传达至解码器200。
[0118] 虽然子系统310a至380a被示出为与图3(a)中的编码器300a的特定示例功能模块相关联,本文的编码器300a的其他实施方式可以包含子系统310a至380a之中的编码器300a的功能模块的不同分布。本公开不限于此,并且在各种示例中,本文的示例子系统310a至380a的实施方式可以包含示出的编码器300a的特定示例功能模块、附加的功能模块的仅子集任务,和/或不同于示出的布置。
[0119] 图3(b)是根据本公开的至少一些实施方式布置的示例下一代视频解码器300b的示意图。图3(b)呈现与图2示出的类似的解码器,为了简洁起见类似的元件将不会被重复。如图3(b)所示,解码器300b可以包含预测解码器子系统330b、滤波解码器子系统350b、熵解码器子系统360b、转换解码器子系统370b、去分区器_2子系统380b、去分区器_1子系统
351b、滤波解码器子系统350b、和/或后恢复器子系统390b。预测解码器子系统330b可以包含特性和运动补偿滤波预测器模块213和/或帧内方向预测产生模块214。滤波解码器子系统350b可以包含去块滤波模块208、质量恢复滤波模块209、特性和运动补偿滤波预测器模块213、和/或预测融合滤波模块216。熵解码器子系统360b可以包含自适应熵解码器模块
202。转换解码器子系统370b可以包含自适应逆量化模块203和/或自适应逆转换模块204。
去分区器_2子系统380b可以包含编码分区组装器205。去分区器_1子系统351b可以包含预测分区组装器207。后恢复器子系统790可以包含内容后恢复器模块218和/或自适应画面重新组织器217。
[0120] 解码器300b的熵解码子系统360b可以执行编码器300a的熵编码器子系统360a的逆操作,即,可以使用笼统被称为可变长度解码的级别的技术,将由熵编码器子系统360a编码的各种数据(多个类型的开销、运动矢量、转换系数)解码。具体而言,要解码的各种类型的数据可以包含“编码的/未编码的”数据、“模式和参考类型”数据、“运动矢量”数据、“预测和编码分区”数据、以及“转换系数”数据。
[0121] 解码器300b的转换解码器子系统370b可以执行编码器300a的转换编码器子系统340a的逆操作。转换解码器子系统370b可以包含2种类型的部件。第一类型的示例部件可以支持使用小至中块尺寸的参数逆PHT转换,而其他类型的示例部件可以对所有块尺寸支持逆DCT转换。用于块的PHT转换可以取决于相邻块的解码的数据的分析。输出比特流111和/或输入比特流201可以携带以下信息:关于PHT转换的分区/块尺寸,以及在要逆转换的2D块哪个方向上PHT可以被使用的(其他方向使用DCT)。对于纯粹由DCT编码的块而言,分区/块尺寸信息也可以从输出比特流111和/或输入比特流201取回,并用于应用适当尺寸的逆DCT。
[0122] 解码器300b的去分区器子系统380b可以执行编码器300a的分区器子系统320a的逆操作并可以包含2个去分区子系统,编码分区组装器模块205可以执行编码的数据的去分区,并且预测分区组装器模块207可以执行对预测的去分区。此外,如果在编码器300a处对于区域分割或者片使用可选的自适应画面组织器模块104,可能在解码器处会需要自适应画面重新组织器模块217。
[0123] 解码器300b的预测解码器子系统330b可以包含特性和运动补偿滤波预测器模块213,其可以执行“帧间”信号的预测;以及帧内方向预测产生模块214,其可以执行“帧内”信号的预测。特性和运动补偿滤波预测器模块213可以允许:通过对差异的其他源(诸如增益、全局运动、注册)的第一补偿来增加预测性或创建合成帧(超分辨率和投影)(随后为实际运动补偿)。
[0124] 解码器300b的滤波解码器子系统350b可以基于由编码器300a发送的参数,执行重建的画面的多个滤波,并可以包含若干子系统。第一示例子系统、去块滤波模块208可以去块并抖动,以减小或掩码处理任何潜在的块编码效应。第二示例子系统、质量恢复滤波模块209可以执行一般质量恢复,以减小由于任何视频编码中的量化操作导致的效应。第三示例子系统、特性和运动补偿滤波预测器模块213可以通过使用滤波器,改善来自运动补偿的结果,其可以适应内容的运动特性(运动速度/模糊程度)。第四示例子系统、预测融合滤波模块216可以允许预测信号的自适应滤波(其可以减小预测中的经常来自帧内预测的虚假效应),因而减小可能需要被编码的预测误差。
[0125] 解码器300b的后恢复器子系统390b是可选的块,其可对解码视频的感知质量执行进一步改善。该处理能够响应于由编码器100发送的质量改善参数完成,或者其可以是在后恢复器子系统390b处做出的独立决定。针对在编码器100处计算的、能够被用于在后恢复器子系统390b处改善质量的特定参数方面,可以是在编码器100处(甚至在去块后)的胶片颗粒噪声和剩余块效应的估计。至于胶片颗粒噪声,如果参数能够经由输出比特流111和/或输入比特流201计算并发送至解码器200,那么这些参数可以被用于合成胶片颗粒噪声。同样,对于在编码器100处的任何剩余块效应,如果其能够被测量并且参数经由输出比特流111和/或比特流201被发送,那么后恢复器子系统390b可以解码这些参数并可以使用其来在显示之前可选地执行附加的去块。此外,编码器100还可以访问场景改变、空间复杂性、时间复杂性、运动范围、以及预测距离信息,其可以帮助后恢复器子系统390b中的质量恢复。
[0126] 虽然子系统330b至390b被示出为与图3(b)中的解码器300b的特定示例功能模块相关联,本文的解码器300b的其他实施方式可以包含子系统330b至390b之中的解码器300b的功能模块的不同分布。本公开不限于此,在各种示例中,本文的示例子系统330b至390b的实施方式可以包含示出的解码器300b的特定示例功能模块、附加的功能模块的仅子集任务,和/或不同于示出的布置。
[0127] 图4是至少依据本公开的一些实施方式布置的用于执行内容自适应预测距离分析和运动估计的示例内容预分析器子系统400的示意图。编码器子系统400可以接收输入视频101并包含空间分析器模块402;顺序分层运动估计器模块403(包含运动范围估计器404和/或多阶段运动估计器405);时间空间分析器模块406;增益改变检测器模块408;镜头改变检测器模块410;p距离计算器模块412、和/或内容感知分层运动估计器模块414。
[0128] 在示出的实施方式中,空间分析器模块402可以接收输入视频101(例如亮度和色度(YUV)数据)。空间分析器模块402可以操作来产生复杂性特性的纹理画面和量度。对于每个纹理方向(例如,水平和垂直)产生4个不同图像,每个画面代表不同阶段,每个阶段代表运动精度从16像素增加到8像素精度。本文使用的术语“Rs/Cs域数据”可以指一个或多个阶段,包含从输入视频产生的水平和垂直纹理方向数据。例如,这样的Rs/Cs域数据可以包含空间复杂性数据(例如SC数据)、与单独整数位置(例如RsCs4x4块)对应的多个低分辨率行总和和列总和平面、与单独整数位置(例如RsCs 4x4块Int.平面数据)对应的多个低分辨率行总和和列总和平面、和/或(例如Rs/Cs 16/16块Int.和1/2像素平面)。
[0129] 在示出的实施方式中,顺序分层运动估计器模块403(包含运动范围估计器404和/或多阶段运动估计器405)可以从空间分析器模块402(例如Rs/Cs域数据)接收输入视频101(例如亮度和色度(YUV)数据)以及输出。顺序分层运动估计器模块403可以经由运动范围估计器模块404(MRE)操作,来计算运动的范围和方向。在运动估计搜索以大的默认范围被执行的情况下,通过从内容其自身估计范围和方向信息,运动估计需要的计算的总量实质上能够减小;或者如果选择为太小,那么通过根据需要对于特定序列延伸默认范围,能够改善运动补偿质量。顺序分层运动估计器模块403可以经由多阶段运动估计器405作为基于块的运动估计器来操作,其使用分层画面代表,以甚至在运动快速时也能够精确地计算运动估计。低至中分辨率可以允许容易检测大匀速运动,而中至高分辨率允许在复杂运动序列中检测详细的单独运动。
[0130] 在示出的实施方式中,时间空间分析器模块406可以从顺序分层运动估计器模块403接收输出(例如绝对差值的总和(SAD)、1/4像素精度的运动矢量(MV 1/4pel)、平均帧差异(例如AFD))。时间空间分析器模块406可以在连续帧上收集由顺序分层运动估计器403产生的MV信息,并从连续帧输送在运动矢量之间存在多少相关性的量度,并且还输送纹理复杂性(例如空间索引)和运动复杂性(例如时间索引)的索引的值,供镜头改变检测器模块
410和P距离分析器412使用。
[0131] 在示出的实施方式中,增益改变检测器模块408可以接收输入视频101(例如亮度和色度(YUV)数据)。增益改变检测器模块408可以确定何时2个连续帧属于不同照相机,当这发生时,这2个画面之间的相关性水平非常低,并使用一个作为其他的参考会减小编码效率。
[0132] 在示出的实施方式中,镜头改变检测器模块410可以从空间分析器模块402(例如Rs/Cs域数据)、时间空间分析器模块406(例如空间索引和/或时间索引)、和/或增益改变检测器模块408接收输入视频101(例如亮度和色度(YUV)数据)以及输出。镜头改变检测器模块410可以允许检测(诸如照相机闪光灯其他原因导致的)亮度的突然改变,其可能冲击单独画面并使其更不适于作为好预测的参考。如果期望如此,那么这样的画面能够与被用作预测参考的画面隔离。
[0133] 在示出的实施方式中,p距离计算器模块412可以从顺序分层运动估计器模块403(例如平均帧差异(AFD))、时间空间分析器模块406(例如空间索引和/或时间索引)、以及镜头改变检测器模块410(例如镜头改变指示)接收输出。P距离计算器模块412可以包含经过整个序列的循环,逐帧取出纹理、运动和帧差异信息。P距离计算器模块412可以产生内容感知分层运动估计器模块414的运动估计处理需要的中间数据。在有效的视频编码中,参考帧之间的预测距离(pdist)的自动场景依赖计算,相当于计算在每对参考帧(典型地是I或者P,除了在金字塔画面构造中,其中参考帧能够是I-、P-或者甚至B-帧)之间要插入多少B-帧,能够提供压缩益处。因为如之前解释的那样,由于其高压缩性,自适应增加B-帧(或者F-画面)的数量能够提供压缩增益。
[0134] 在示出的实施方式中,内容感知分层运动估计器模块414可以从空间分析器模块402(例如Rs/Cs域数据)、和/或p距离计算器模块412(例如p距离数据)接收输入视频101(例如亮度和色度(YUV)数据)以及输出。内容感知分层运动估计器模块414可以经由预测编码子系统330a计算有效的运动补偿预测的运动矢量(例如参见图3(a))。
[0135] 参考图1和4,在操作中,要压缩的视频可以输入到内容预分析器102(诸如例如内容预分析器400),进而输入到自适应画面构造组织器104。内容预分析器102(诸如例如内容预分析器400)可以执行对正被编码的场景的分析,在其输出处提供关于场景改变(scnchg)、时间复杂性(tpcpx)、空间复杂性(spcpx)、时间预测距离(pdist)、以及其他的信息。此外,在内容预分析器102的输出处(诸如例如内容预分析器400)的原始的视频帧可以输入到自适应画面构造组织器104,其可以输出表明画面群组构造(pgst)的控制信号、以及相应地群组中每个画面的画面类型(ptyp)、以及根据需要在编码次序中重新排序的画面。
作为参考,NGV编码使用3个画面类型,I-(帧内)、P-(预测)和F-(函数)画面。F-画面可以是非因果的,并要求帧的重新排序,用于在编码器处编码(并在解码器处显示)。
[0136] 可以把要编码的帧分割为称作图块的处理单元。可以利用2个图块尺寸32x32和64x64,64x64尺寸用于对所有画面类型(I-、P-、或者F-)的编码以及所有尺寸的I-和F-画面的编码的所有标清和更高的尺寸视频,而32x32尺寸可以用于较低分辨率序列的P-画面。
[0137] 如果被编码的画面可以是I-画面,那么每个图块可以在预测分区产生器105中进一步分割为基于Kd树的分区,其能够一次一个维度地将空间分割(直到可以到达的最小尺寸)为无法进一步分割,或者分割为2个相等的一半,分割为空间的2个部分1/4和3/4,或者分割为可以是空间的3/4和1/4的2个部分。所以,使用64x64作为最大尺寸(并允许4x4的最小尺寸)的I-画面,能够产生非常大数量的图块的分段,如果不施加其他约束。例如,能够位于64x64个图块的约束可以是:第一对切割可以已经被预决定来在每个维度将空间对分。这相当于以64x64开始,并将其分割为32x32尺寸的子图块,进而,用Kd树分区将每个32x32子分区;其他限制也可以减小组合的数量。I-画面图块的这些分区可以称作预测分区,因为每个图块分段可以用于预测差异的空间预测(方向预测或者其他类型的预测)和编码。同样,P-画面图块也能够以该方式分区用于预测。在P-画面情况下的警告,可以是针对更低分辨率,P-画面分区以32x32图块开始,并可以不使用基于Kd树的分区,而是可以使用更简单的B-树分区。Bi-Tree分区将空间仅分割为2相等部分,一次一个维度,在2个维度之间变换。
[0138] 此外,P-画面分区可以主要使用运动(具有一个或多个参考)来预测而非空间预测,尽管一些子分区能够使用空间内预测也可以被支持来处理例如未覆盖的背景。对于标清至更高画面尺寸而言,P-画面仅以64x64图块尺寸开始。最终,F-画面还使用Bi-Tree分区,使用64x64图块尺寸用于产生主要使用运动的预测分区(具有一个或多个分区),尽管一些子分区也能够使用空间预测(对于帧内编码而言)。在NGV编码中,与仅使用运动矢量来产生预测相比可能有更多来产生帧间预测,可以在别处讨论。在P-和F-画面编码中,每个子分区的预测可以通过包含预测模式(跳过、自动、帧间、多帧、和帧内)来识别。预测分区产生器105的输出可以字面上是图块的数百个潜在的分段(根据设置的限制或多或少)。这些分段可以被索引为1……m,并可以被提供给编码控制器103来选择最佳的可能预测分段。
[0139] 分区的原始块可能不同于预测块(预测块的产生的细节可以在之后讨论),例如通过差异106,以确定是否可能有任何残留信号值得编码。因此,实际上并非图块的所有子分区需要被编码(使用转换编码),因为预测可能对于某些子分区已经足够。
[0140] 不能只被预测补偿的分区要求进一步子分区为更小的分区用于转换编码。对于P-和F-画面而言,可以使用编码分区产生器107完成该用于编码的子分区,其对于要求进一步分割的预测差异分区的编码使用Bi-Tree分区,其他能够仅由运动补偿来编码。在P-或者F-画面中,仅在一些情况下,(非常简单的内容和/或大的量化器步长),编码分区可以等于整个图块的尺寸,与这些情况下由预测分区使用的尺寸相同。因此,一些P-和F-画面图块可以含有无编码分段、一个编码分段、或者多个编码分段。这些分段可以被索引为1……n,并可以被提供给编码控制器103来选择预测的最佳的可能组合,并根据给定的选择对分段进行编码。至于I-画面图块,可能仅有预测分段,随后是实际的转换编码,而没有进一步的编码分段本身,或者换言之,可以跳过编码分段。
[0141] 接下来的2个块(自适应转换108、以及自适应量化109)和执行量化器适应的编码控制器103的部分共同在图3(a)中称作变换编码器子系统340a,并可以接下来说明。
[0142] 分段(在用于I-画面的预测分区和用于P-和F-画面的编码分区之后)在自适应转换108单元中经历转换编码,该单元对矩形块执行向前混合PHT转换或者向前DCT转换。对于HPHT转换而言,可以支持小至中块尺寸,而对于DCT转换而言,可以支持大量的块尺寸。分区/块尺寸的选择以及采用的转换(HPHT与DCT)可以依赖于RDO分析的结果。对于HPHT转换而言,可能需要一些开销来识别水平或者垂直的方向(其中,可以应用DCT而PHT可以在正交方向应用)、以及模式(至少对于帧内编码,其中模式能够基于解码的像素或者预测差异像素)。用于转换特定块的实际的PHT转换基础可以是内容自适应的,因为其依赖于解码的邻近像素。由于编码器和解码器两者要求计算相同的基矩阵,因此通过允许人能够从中选择的、(编码器和解码器两者已知的)有限数量的好的转换,计算的复杂性可以保持为低。至于编码控制器103中的量化器适配器,其执行内容分析来得出本地自适应量化参数,该参数然后可以由能够有效编码并包含在比特流中的多阶段映射代表。计算的量化器组(qs和应用到系数块的矩阵)可以由自适应量化109单元使用,以执行系数的缩放。
[0143] 需要发送至解码器的各种信号和数据项目,即pgst,ptyp,prp,pptn,cptn,modes,reftype,ethp,xmtyp,xmdir,xmmod,idir,mv,qs,mop,syp,ddi,qri,api,fii,定量系数和其他可以然后由内容和上下文自适应熵编码器110熵编码,该编码器实际上包含7个不同的熵编码器在图1中共同被称为熵编码器。
[0144] 图1的编码器包含编码器中的本地解码循环。然而根据RDO如何操作,需要做出重要的观察,并非图块的所有数百或更多的分段可能需要被完全编码(有时查找位计数可能就是充分的)。然而,在确定图块的最佳分段之后,该情况下当然可以需要全编码。解码循环中的前2个单元可以是自适应逆量化112和自适应逆转换113(共同被称为转换解码器子系统370a)。自适应逆量化112的操作可以与自适应量化器109单元相反,并且其基本上将缩放的转换系数去缩放(有损处理)。此外,自适应逆转换113将去量化的转换系数块反转,以产生重建的预测差异像素的块。对于P-和F-画面而言,解码的像素差异块可以由编码分区组装器114以正确顺序重新组装。对于I-画面图块分段而言,可以跳过编码分区重新组装处理。接下来在编码器的本地解码循环中,可以使用加法器115将预测信号(帧间或者帧内)增加至解码的分区,并且在加法器的输出处的重建的分区可以由预测分区组装器116组装。
[0145] 下个集合的步骤涉及滤波,以及滤波和预测产生的混合。具体而言,重建的分区可以由侦查块效应分析器和DD滤波产生器117去块并抖动;用于分析ddi的参数可以用于滤波操作,并且也可以被编码并经由比特流发送至解码器。去块的侦查输出可以然后移交给质量改善滤波器,此处称作侦查质量分析器和QR滤波产生器118,其计算QR滤波参数并使用其用于滤波。这些参数也可以被编码并经由比特流发送至解码器。QR滤波的输出可以是最终重建的帧,其也可以被用作预测用于对将来的帧进行编码。
[0146] 预测处理包含2个主要类型的预测:帧间预测和帧内预测。图1中的帧间预测对应于部件的集合,诸如Char和运动AP滤波器分析器和1/4和1/8像素补偿预测器;运动估计器4x4块至1/4和1/8像素加速器122;变形产生器和本地缓存、合成产生器和画面缓存、变形分析器和产生器120;以及合成分析器和产生器121。NGV编解码器采用若干类型的变形来产生本地缓冲器/预测画面,其允许补偿增益、支配性运动、注册、运动补偿预测之前的模糊、以及若干类型的合成帧(SR(超分辨率)画面、PI(投影插值)画面等等),其中,运动补偿的预测能够导致甚至更高的增益。变形分析器和产生器120通过计算用于相对于其可能要编码的参考帧的增益的改变、支配性运动的改变、注册的改变、以及模糊的改变的参数,执行当前画面的分析的任务。计算的mop参数可以被量化/去量化,并被用于产生可以由运动估计器使用的变形的参考帧,用于计算对当前帧的有效运动(和特性)补偿的预测的运动矢量。同样,合成分析器和产生器121执行分析的任务以产生运动的SR画面和PI画面,供运动估计器使用来计算对这些帧中有效运动补偿的预测的运动矢量。计算增益、支配性运动、注册和模糊的特定变形算法的细节可以在本讨论的范围之外。同样,用于产生合成画面(诸如DMC和PI)的特定技术的细节可以在当前讨论的范围之外,而产生SR可以是本公开的话题并将在之后详细讨论。
[0147] 帧内预测可以经由空间方向预测执行,并使用解码的邻近分区,并且由于此处发生方向的分析和预测的实际产生这两者,其此处可以称作帧内方向预测分析器和预测产生器124。
[0148] 预测模式和参考类型分析器125允许对于图块的每个分区从全部应用到P-和F-画面的“跳过”、“自动”、“帧间”、“多帧”、以及“帧间”中选择预测模式;这可以示出在表格11中。除了预测模式外,还允许选择能够根据“帧间”或者“多帧”模式以及对于P-和F-画面而不同的参考类型;参考类型的详细列表对于P-画面可以示出在表格2(a)和2(b)中,并且对于F-画面,示出在表格3(a)、3(b)、3(c)、以及3(d)中。
[0149] 表格11 用于P-和F-画面中的图块的分区的预测模式
[0150]
[0151] 表格12(a) 用于P-画面中具有“帧间”模式的图块的分区的参考类型
[0152]
[0153]
[0154] 表格12(b) 用于P-画面中具有“多帧”模式的图块的分区的参考类型
[0155]
[0156] 表格13(a) 用于F-画面中具有“帧间”模式的图块的分区的参考类型
[0157]
[0158] 表格13(b) 用于F-画面中具有“多帧”模式和Dir 0的图块的分区的参考类型[0159]
[0160]
[0161] 表格13(c) 用于F-画面中具有“多帧”模式和Dir 1的图块的分区的参考类型[0162] 号    用于具有“多帧”模式和Dir 1的分区的参考类型(第一参考
[0163]       MR0n,第二参考:)
[0164] 0.    MR7n(=proj F)
[0165] 表格13(d) 用于F-画面中具有“多帧”模式和Dir 2的图块的分区的参考类型[0166] 号    用于具有多帧-模式和Dir 2的分区的参考类型(第一参考
[0167]       MR3n,第二参考:)
[0168] 0.    MR7n(=proj F)
[0169] 预测模式和参考类型分析器和选择器125的输出处的预测信号能够由单元预测融合分析器和FI滤波产生器126滤波,其首先分析来确定该滤波使用的参数(滤波系数、频率、开销),进而实际上执行该滤波。滤波预测信号的目的可以是融合代表不同模式的不同类型的信号,即帧内、帧间、多帧、跳过、以及自动。由于典型地,帧内预测信号看起来非常不同于所有其他类型的帧间信号,适当滤波能够是编码效率的大贡献者。滤波参数fii可以编码在比特流111中,供解码器使用。滤波的预测形成向差异115的第二输入,差异115计算之前讨论的编码的预测差异信号。另外,相同的被滤波的预测信号形成向加法器106的第二输入,其第一输入可以是量化/去量化的解码的差异信号。
[0170] 最终,上下文和内容自适应熵编码器110可以被用于编码各种类型的控制数据/信号、参数、模式和参考类型、运动矢量、以及转换系数。其可以基于通用级别的低复杂性熵编码器(称作自适应可变长度编码器(vlc))。要被熵编码的数据可以分割为若干类别(本情况下为7),并从通用vlc编码器开始,专的编码器可以针对每个类别被开发。至此结束说明NGV视频编码器。
[0171] 图5是依据本公开的至少一些实施方式布置的用于执行空间分析的示例空间分析器模块402的示意图。如图所示,空间分析器模块402可以包含行总和4x4块产生器模块501;列总和4x4块产生器模块502;行总和16x16块产生器模块504;列总和16x61块产生器模块
505;和/或空间复杂性测量模块503。
[0172] 在一些实施方式中,空间分析器模块402可以操作来产生复杂性特性的纹理画面和量度。对于每个纹理方向(例如,水平和垂直)产生4个不同图像,每个画面代表不同阶段,每个阶段代表运动精度从16像素增加到8像素精度。
[0173] 如上所述,Rs/Cs域数据可以指一个或多个阶段,包含从输入视频产生的水平和垂直纹理方向数据。例如,这样的Rs/Cs域数据可以包含空间复杂性数据(例如SC数据);全局行总和和列总和数据(例如RsCs 4x4块);与单独整数位置对应的多个低分辨率行总和和列总和平面(例如RsCs 4x4块Int.平面数据)和/或(例如Rs/Cs 16/16块Int.和1/2像素平面)。
[0174] 例如,行总和4x4块产生器模块501可以产生与单独整数位置对应的行总和平面(例如Rs Int pos平面、例如Rs 4x4块)。列总和4x4块产生器模块502可以产生与单独整数位置对应的列总和平面(例如Cs Int pos平面、例如Cs 4x4块)。空间复杂性测量模块503可以产生空间复杂性数据(例如SC数据)。行总和4x4块产生器模块501可以产生全局行总和(例如全局Rs)。列总和4x4块产生器模块502可以产生全局列总和数据(例如全局Cs)。行总和16x16块产生器模块504可以产生与单独整数位置对应的多个低分辨率行总和平面(例如RsCs 4x4块Int.平面数据)和/或(例如Rs/Cs16/16块Int.和1/2像素平面)。列行总和16x61块产生器模块505可以产生与单独整数位置对应的多个低分辨率列总和平面(例如RsCs 4x4块Int.平面数据)和/或(例如Rs/Cs 16/16块Int.和1/2像素平面)。
[0175] 图6是依据本公开的至少一些实施方式布置的用于执行运动范围估计的示例运动范围估计器模块404的示意图。如图所示,运动范围估计器模块404可以包含合成的纹理6x6块运动估计器模块601至604;最佳平面和运动选择器模块605;以及1/4像素Rs/Cs块产生器模块606。
[0176] 运动范围估计器模块404(MRE)的目的是计算运动的范围和方向。如果运动估计搜索以大的默认范围执行,那么通过从内容其自身估计范围和方向信息,运动估计需要的计算的总量实质上能够减小;或者如果选择为太小,那么通过根据需要对于特定序列延伸默认范围,能够改善运动补偿质量。为了执行该分析,通过从原始帧取出16x16尺寸的块的RsCs信息来产生小数据阵列的集合。
[0177] 例如,阵列的集合可以包含4个阵列,其模仿半像素平面但是在RsCs域中。可以在这4个“画面”上对运动执行搜索(例如,穷举搜索)。这样的对MRE 404的穷举搜索可以用6x6 RsCs像素的块完成,因为当块需要具有不同尺寸时,能够使用2个RsCs像素的小边界,每个块的尺寸由帧中的其位置确定。
[0178] 在一些实施方式中,画面可以分割为6x6的单元,其确定除了当块与边界交叉时之外的块的位置,然后块被修剪。但是如果块的宽度等于2且高度等于4,那么修改块维度,使得宽度保持相同但是高度增加2。可以执行的下个运动估计可以包含4个运动估计处理,该处理使用RsCsME()函数在4个半像素平面上串行执行。绝对差值的总和(SAD)可以从当前帧Rs与Cs“画面”之间的比较、以及来自参考Rs和Cs“画面”的4个半像素平面进行计算。
[0179] MRE 404的操作将在下文相对于图12和13更详细地说明。在过程结束时,根据哪个半像素平面给出最佳SAD,可以对1/4像素细化计算额外平面。在该阶段,一些启发法可以被用于确定获得的数据是否有效,或者是否使用先前相邻的数据更好。现在确定了运动的方向和幅度,接下来可以由顺序分层运动估计器模块403执行分层搜索,如图7所示。
[0180] 图7是依据本公开的至少一些实施方式布置的示例顺序分层运动估计器模块403的示意图。如图所示,内容预分析器子系统400可以接收输入视频101,并包含空间分析器模块402和/或顺序分层运动估计器模块403。顺序分层运动估计器模块403可以包含运动范围估计器模块404以及多阶段运动估计模块405。在示出的示例中,多阶段运动估计模块405可以包含阶段1运动估计器模块701;阶段2运动估计器模块702;阶段3运动估计器模块703;1/2像素和1/4像素平面产生器模块704;空间下采样器和边界延伸模块705;和/或边界延伸模块706。然而,多阶段运动估计模块405可以包含任何数量的阶段,并且不限于此处列出的3个阶段。
[0181] 在示出的实施方式中,顺序分层运动估计器模块403可以实现为基于块的运动估计器,其使用分层画面代表,甚至在运动是快速时也能够精确地计算运动估计。低至中分辨率允许容易检测大匀速运动,而中至高分辨率允许在复杂运动序列中检测详细的单独运动。
[0182] 内容自适应分层运动估计(HME)的第一阶段
[0183] 在运动估计过程的第一阶段中,源于MRE 404的数据由顺序分层运动估计器模块403收集并使用,以限定最小尺寸画面中对8x8的每个块的搜索区域。顺序分层运动估计器模块403可以对最小画面使用函数(例如,HME_low 8x8())来首先检查分析的画面是否是最小分辨率,然后在该情况下,其收集该帧中对于块位置的对应的运动范围,然后完成(例如,通过MotionRangeDelivery()函数)。该函数可以检查块的位置,并将该位置与来自MRE 
404的数据匹配,进而确定范围是否对块有效,如果否,那么顺序分层运动估计器模块403(例如,经由空间下采样器和边界延伸模块705)可以校正搜索范围来避免当执行运动估计时跑出限制。
[0184] 然后当准备好时,运动估计的第一步骤通过阶段1运动估计器模块701完成。此处,减小的搜索沿着搜索范围完成,其中接下来是最佳SAD值寻找的梅花形图案(quincunx pattern)。请注意,减小搜索通过水平跳跃4个像素并垂直跳跃2个像素而完成,并且允许梅花形图案称作计数器的变量初始化为0并且每当SAD行完成时递增,考虑到如果值是偶数或奇数,那么偏移对于()循环在级联的水平部分的开始处导入。在完成围绕先前相邻的搜索之后,如果来自于相邻的结果比当前SAD更好,那么可以完成围绕得出的运动矢量的减小的搜索。该搜索区域是32x32像素,当该搜索完成时,+-1像素的小细化在最佳获得的运动矢量上完成。然后完成围绕运动矢量0,0的搜索,以防能够在该水平捕捉单独运动行为。对于该搜索,用+-32像素的搜索范围完成相同的减小的搜索策略,随后是+-1像素搜索的小细化。
[0185] 在这完成后,最佳候选然后被保存到第一层运动矢量阵列,而且得出的运动矢量被传播至下个分辨率层(例如,供阶段2运动估计器模块702使用),在(与在当前层上由8x8块表现的16x16区域对应的)下个层阵列中将该运动矢量拷贝至4个运动矢量。为了澄清,每个层4倍小于下个层,是上个层的原始尺寸的画面,这就是为什么更小层上的每个运动矢量匹配下个层上的2x2运动矢量的平方。
[0186] 在一些实施方式中,在多阶段运动估计期间,一个或多个用于运动估计的普及的方法可以与本公开介绍的技术结合使用。用于运动估计的这样的方法可以包含下面的算法的各种实施方式:穷尽搜索(ES)算法;3步骤搜索(TSS)算法;菱形搜索算法(DIA);六边形算法;非对称十字多六边形算法;螺旋算法;日志算法;试验区(TZS)算法;全搜索算法等;和/或其组合。
[0187] 例如,穷尽搜索(ES)算法计算搜索窗口中每个可能的宏块位置的成本,使其成为计算最昂贵的算法。例如,对于每个(x-和y-)方向中的+-16整数像素的运动估计范围,穷举搜索对每个块对(16x2+1)2=969位置都要求块匹配搜索计算。
[0188] 3步骤搜索(TSS)算法尝试减小计算,在远离原点(0,0)4个像素的8个位置开始搜索,限定步长S=4。从计算的总共9个点(8个点加原点)具有最低成本的位置被选择为新中心或者原点,并且步长减少S/2,重复步骤直至S=1。
[0189] 菱形搜索算法(DIA)使用与3步骤搜索相同的原理来操作。然而,其仅在围绕第五点(原点)形成菱形的4个点处进行搜索。算法围绕这4个点搜索未定义次数,将原点重置直至新的原点是最低成本位置。仅在此时,步骤减小,并重新开始搜索。
[0190] 六边形算法与菱形搜索相比,可以在更少的步骤发现匹配块,对于更高速是好的折衷,并且对于更大的运动矢量特别有利。该算法对于第一搜索轮建议7个点:六边形和原点。原点被重置到最低成本六边形顶点,未覆盖,并仅评估3个新位置用于迭代。当最低成本位置最终设定在六边形原点处时,接下来评估4点更小的菱形。
[0191] 非对称十字多六边形算法提供快的速度而不会牺牲质量。该搜索的开始点来自相邻块(左、上、以及右上或者左上)的3个运动矢量的中位值,中位预测者。非对称十字搜索使用预测矢量作为搜索中心,并垂直且水平延伸。然后,十字搜索被非对称地修改,水平搜索范围是垂直搜索范围的两倍。在第三阶段,围绕中心执行全搜索,进而进行16点多六边形方法。
[0192] H.264 JMVC实施方式提供用于运动估计的4个算法:螺旋、日志、试验区(TZS)和全搜索。如预期的那样,全搜索给出最佳性能,但是在计算上昂贵。TZS算法也用于HEVC编码器,该算法可以包含如下4个步骤:
[0193] 1.)运动矢量预测:该方法检查4个不同的预测者,中位、左、上和右上。给出最佳SAD的预测者被选择为对于下面的步骤的开始点。
[0194] 2.)菱形搜索:用8个点定义菱形形状,在从中心起1至64个像素的距离处开始,在2的幂的步骤中,进而,最佳SAD位置被用作下个搜索的中心。HEVC软件代码限制搜索的轮数为3。当因为已达到轮的最大数或者最佳位置而发现最佳SAD时,从当前中心起的距离值被保存用于下个步骤。
[0195] 3.)减少的栅格搜索:在该步骤中,SAD搜索以栅格模式完成,并且搜索位置之间的距离已在之前限定,在HEVC的情况下,该值是常数并且等于5,仅在先前的步骤中计算的从中心起的得到的距离比栅格步骤大时,该步骤才完成。根据运动估计正被完成的分区的尺寸,窗口尺寸然后被内部限定。图2 B示出距离为5的栅格搜索,示出HEVC的情况下SAD计算完成的搜索位置。
[0196] 4.)菱形细化搜索:在该步骤执行相同的8点菱形搜索,菱形的开始尺寸被定义为从先前的步骤中获得的最佳SAD位置的原点起的一半距离,然后,每个下个搜索距离是先前的一半,直至其到达零。
[0197] 内容自适应分层运动估计(HME)的第二阶段
[0198] 在阶段2运动估计器模块702中,可以调用函数(例如HME_Low8x8())。此处,顺序分层运动估计器模块403可以测试在什么层中工作,并可以确定其是否不是第一层。顺序分层运动估计器模块403然后测试什么运动矢量从先前的层(例如从阶段1运动估计器模块701)传播,并且该运动矢量是否有效(例如,没有走出限制),并且如果发现如此,可以根据需要来校正运动矢量(例如经由空间下采样器和边界延伸模块705,经由MVpropagationCheck()函数)。
[0199] 在阶段2运动估计器模块702中,可以计算结果传播的运动矢量SAD,并与运动矢量00比较,如果零运动给出更好的结果,那么运动矢量可以重置并从零开始。用于传播的运动矢量的SAD计算可以直接在一半像素水平完成,其随后可以是通过保存在该比较中给出最佳SAD的平面信息中的一个,确定与其工作的最佳平面。该阶段中的处理的其余部分(例如阶段2运动估计器模块702)以与第一阶段(例如阶段1运动估计器模块701)相同或者类似的方式工作。
[0200] 内容自适应分层运动估计(HME)的第三阶段
[0201] 在阶段3运动估计器模块703中,根据参数设置,能够对于最终阶段选择4个不同的SAD质量模式,其之间的差异主要在于减小的搜索的粒度。算法可以通过对该块测试传播的运动矢量的有效性来开始,如果否,那么对其校正,然后阶段3运动估计器模块703检查运动矢量是否应该被重置到零位置或者继续当前值。当检查当前值时,阶段3运动估计器模块703比较所有16个平面上相同的传播的运动矢量,并根据哪个平面返回最佳SAD,选择最佳平面来进行运动分析。
[0202] 现在,根据搜索范围是否被重置(例如,经由PropCalcSearchWindowHigh()函数),阶段3运动估计器模块703可以确定用于传播的运动矢量的搜索范围。现在计算了搜索范围,由阶段3运动估计器模块703借助之前获得的范围和运动矢量,使用梅花形图案来完成初始减小的搜索(例如,使用与关于阶段1运动估计器模块701描述的相同或者类似的过程)。然后,可以完成第二减小的搜索用于细化,但是在这种情况下,第二减小的搜索可以仅在先前的运动估计正移动到的象限完成。该第二细化也可以使用梅花形图案,但是要有小改变,在这种情况下是奇数行以偏移开始。第二细化之后,可以对所有16个平面用+-1的搜索范围完成一个最后的细化。然后可以检查相邻,对于当前块在所有16个平面可以被取回并评估该周围的相邻MV,如果发现了更好的SAD,那么更好的SAD可以更换当前的SAD和MV数据。然后如果传播的运动矢量没有重置,那么可以完成围绕零运动的搜索。出于该目的,第一小的减小的搜索可以对零运动完成,进而可以在发现最佳SAD的象限之后执行细化搜索。可以在具有梅花形图案且+-32的搜索范围的得出的运动矢量完成第二细化。最终,可以在+-1的范围执行在所有平面上的全搜索。并且,当可以在最佳MV,+-1的范围上执行16个平面的全搜索时,可以执行最后的细化。该过程的结果的MV可以对运动选择。然后如果之前有限定,那么能够以1/8像素精度完成更新,如具体而言图15中下文相对于第三阶段流程图所示。
[0203] 图8是依据本公开的至少一些实施方式布置的示例时间空间分析器模块406的示意图。如图所示,时间空间分析器模块406可以包含帧运动矢量缓冲器模块801、差异确定器802、平均(x2+y2)模块803、空间索引器模块804、和/或时间索引器模块805。
[0204] 在示出的实施方式中,时间空间分析器模块406可以收集MV信息,其由顺序分层运动估计器403(例如参见图4)在连续帧产生,并输送来自连续帧(例如经由帧运动矢量缓冲2 2
器模块801、差异确定器802、和/或平均(x+y)模块803)的运动矢量之间存在多少相关性的量度,并且还输送用于纹理复杂性(例如经由空间索引器模块804产生的空间索引)和运动复杂性(例如经由时间索引器模块805产生的时间索引)的索引的值,以供镜头改变检测器模块410和P距离分析器412(例如参见图4)使用。
[0205] 在操作中,时间空间分析器模块406可以结合增益改变检测器模块408、镜头改变检测器模块410、以及P距离分析器412(例如参见图4)来操作。一般想法是分析连续帧,以确定哪些是特定序列的空间和时间特性,并用该信息预测P和F帧的用于编码的最佳配置。P距离(pdist)计算还包含2个专门的工具、增益改变检测器和镜头改变检测器,更详细而言如下文所述。
[0206] 图9是依据本公开的至少一些实施方式布置的示例增益改变检测器模块408和镜头改变检测器模块410的示意图。如图所示,增益改变检测器模块408可以包含帧缓冲器模块901、差异确定器902、直方图903、y全局DC计算器模块904、帧DC缓冲器模块905、差异确定器906、增益分析模块907、和/或平衡测量器模块908。镜头改变检测器模块410可以包含Cs缓冲器模块909、差异确定器910、Rs缓冲器模块911、差异确定器912、AFD缓冲器模块913、差异确定器914、SAD缓冲器模块915、差异确定器916、运动矢量差异缓冲器模块917、差异确定器918、平均(x2)模块919、平方根(x2+y2)模块920、平均(x2)模块921、差异确定器922、Rs/Cs差异缓冲器模块923和/或镜头检测模块924。
[0207] 在示出的实施方式中,增益改变检测器模块408可以确定何时2个连续帧属于不同照相机,当这发生时,这2个画面之间的相关性水平非常低,并且使用一个作为其他的参考减小了编码效率。增益改变检测器模块408可以接收输入视频101(例如亮度和色度(YUV)数据)。例如,可以(例如,经由增益分析模块907)通过做出当前帧的亮度直方图并将其与先前帧直方图比较,来计算增益改变,另外,可以考虑DC和纹理信息来确定是否有增益改变。可以分析所有这3个变量,并如果其跨实证获得的阈值的集合,那么可以设定增益改变标志。
[0208] 在示出的实施方式中,镜头改变检测器模块410可以允许检测(诸如照相机闪光灯或其他原因导致的)亮度的突然改变,其可能冲击单独画面并使其更不适于作为好预测的参考。如果期望如此,那么这样的画面能够与用作预测参考的画面隔离。镜头改变检测器模块410可以接收输入视频101(例如亮度和色度(YUV)数据)(例如参见图4)、以及来自空间分析器模块402(例如Rs/Cs域数据)的输出(例如参见图4)、来自时间空间分析器模块406(例如空间索引和/或时间索引)的输出(例如参见图4)、和/或来自增益改变检测器模块408(例如增益)的输出。为了确定镜头改变,可以调用函数(例如ShotDetect())。现在,该增益信息是可用的,可以通过测试如下发生镜头改变必须满足的条件(例如,参见下文图18-21中示出的表中示出的条件),来确定镜头改变(例如经由镜头检测模块924)。
[0209] 关于操作增益改变检测器模块408和镜头改变检测器模块410的更多信息可以在下文关于图17所示的流程图中发现。
[0210] 图10是依据本公开的至少一些实施方式布置的示例p距离计算器模块412的示意图。如图所示,p距离计算器模块412可以包含复杂性测量模块1001、镜头校正模块1002、和/或类似性校正模块1003。
[0211] 在示出的实施方式中,p距离计算器模块412可以经由复杂性测量模块1001,从时间空间分析器模块406接收输出(例如空间索引和/或时间索引)(参见图4)。例如,复杂性测量模块1001可以操作来至少部分基于空间索引和/或时间索引,计算初始p距离。
[0212] 在示出的实施方式中,p距离计算器模块412可以经由镜头校正模块1002,从镜头改变检测器模块410接收输出(例如镜头改变指示)(参见图4)。例如,镜头校正模块1002可以操作来至少部分基于初始p距离以及镜头改变指示,计算中间p距离。
[0213] 在示出的实施方式中,p距离计算器模块412可以经由类似性校正模块1003,从顺序分层运动估计器模块403接收输出(例如平均帧差异(AFD))(参见图4)。例如,类似性校正模块1003可以至少部分基于中间p距离以及平均帧差异,计算最终p距离。
[0214] 在操作中,p距离计算器模块412可以包含经过整个序列的循环,逐帧取出纹理、运动和帧差异信息。p距离计算的主要函数(例如,NGV_Pdistance_Determine()可以产生运动估计处理需要的中间数据,进而继续分析(例如通过调用processMEFrame()函数)。
[0215] 例如,在分析(例如经由processMEFrame())内,正常HME以最快的模式运行,从它运动矢量,保持SAD值用于进一步分析,当运动估计完成时,TSCstat构造然后可以填充有纹理和时间数据,该数据是全局Rs、全局Cs、全局纹理或者空间复杂性(SC)、平均帧差异(AFD)、平均运动补偿帧差异或者空间时间复杂性(TSC)和全局运动矢量差异值,这是从当前和先前帧计算运动矢量之间的一般差异的结果。用该构造中的数据,然后计算2个索引,tscIndex和scIndex,为了进行该动作,空间复杂性值和空间时间复杂性值可以通过2个表格(例如,用于tscIndex的Lmt_tsc2和用于scIndex的lmt_sc2)被编入目录。这些表格可以与时间空间分析器模块关联。当获得2个索引时,可以通过在2D表格(例如,称作PDISTTbl2的表格)中查找来计算对应P距离,其中例如tscIndex可以是y坐标,并且scIndex可以是x坐标。
[0216] 在有效的视频编码中,参考帧之间的预测距离(pdist)的自动场景依赖计算,相当于计算在每对参考帧(典型地是I或者P,除了在金字塔画面构造中,其中参考帧能够是I-、P-或甚至B-帧)之间要插入多少B-帧,能够提供额外的压缩益处。如此是因为如之前解释的那样,由于其高压缩性,适应地增加B-帧(或者F-画面,如果是服务于类似的目的的NGV编码)的数量能够提供压缩增益。
[0217] 实际上,pdist的概念能够对于金字塔配置被一般化,意味着在帧的各种层之间若干不同类型的距离。例如考虑图16,其示出了第8、第16、第24……帧P-帧,每个第4、第12、第20……第一水平的分层F-画面,第2、第6、第10、第14、第18、以及第22……第二水平的分层F-画面等。
[0218] 因此,在该固定系统中,有各种类型的帧距离,诸如在如下之间:非分层P-画面(F-画面的8数字的距离为7),第一水平的分层F-画面(F-画面的4数字的距离为3),第二水平的分层F-画面(F-画面的2数字的距离为1)。一般而言如果在这种情况下,pdist是指在第二水平的分层处的距离,并且该距离可以是基于内容而适应的,在第一水平的分层处的距离也变成适应的,并且此外,非分层P帧之间的距离也变成适应的。
[0219] 因此,为了解释的一般性,当我们典型地使用pdist作为参考P-画面之间的距离(即,比居间的B-(或者F-)画面的数量多1个),所有进一步的说明将指:pdist为2个参考锚定画面之间的距离,不管其类型如何。
[0220] 图11是依据本公开的至少一些实施方式布置的示例内容感知分层运动估计器模块1100的示意图。在示出的示例中,内容感知分层运动估计器模块1100可以包含帧缓冲器1101、空间分析器缓冲器1102、运动范围估计器模块404、阶段1运动估计器模块701、阶段2运动估计器模块702、和/或阶段3运动估计器模块703。
[0221] 在示出的实施方式中,内容感知分层运动估计器模块414可以从空间分析器模块402(例如Rs/Cs域数据)和/或p距离计算器模块412(例如p距离数据)接收输入视频101(例如亮度和色度(YUV)数据)以及输出(例如参见图4)。例如,内容感知分层运动估计器模块
1100和其部件可以以与内容感知分层运动估计器模块403类似或者相同的方式操作;然而,内容感知分层运动估计器模块1100可以对正被编码的场景执行分析,在其输出处提供,并可以计算(经由预测编码子系统330a)将用于有效的运动补偿预测的运动矢量(例如参见图
3(a))(相对于被用于p距离计算,其用于由类似的顺序分层运动估计器输出的运动矢量,例如参见图4)。
[0222] 图12是示出依据本公开的至少一些实施方式布置的示例运动范围估计处理1200的流程图。处理1200可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理1200可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1200可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0223] 处理1200可以在操作1202开始,“加载当前16x16 Rs阵列”,其中可以加载当前16x16 Rs阵列。
[0224] 处理1200可以在操作1204继续,“加载当前16x16 Cs阵列”,其中可以加载当前16x16 Cs阵列。
[0225] 处理1200可以在操作1206继续,“加载参考16x16 Rs阵列阶段(1)”,其中可以加载参考16x16 Rs阵列阶段(1)。
[0226] 处理1200可以在操作1208继续,“加载参考16x16 Cs阵列阶段(1)”,其中可以加载参考16x16 Cs阵列阶段(1)。
[0227] 处理1200可以在操作1210继续,“在参考阶段(1)与当前RsCs之间进行RsCsME”,其中可以执行参考阶段(1)与当前RsCs之间的运动估计。阶段计数器i可以设定为2。
[0228] 处理1200可以在操作1212继续,“i=阶段的数量?”,其中可以确定阶段计数器i是否等于阶段的数量。如果阶段计数器i等于阶段的数量,处理1200可以在下面的操作1218继续。
[0229] 如果阶段计数器i不等于阶段的数量,那么处理1200可以在操作1214继续,“在参考阶段(i)与当前RsCs之间进行RsCsME”,其中可以在参考阶段(i)与当前RsCs之间执行运动估计。
[0230] 处理1200可以在操作1216继续,“选择在当前RsCsRun与先前的最佳之间具有最低SAD的MV”,其中可以选择在当前RsCsRun与先前的最佳之间具有绝对差值的最低总和的运动矢量。阶段计数器i可以递增。处理1200然后可以在上述操作1212继续。
[0231] 如果在上述操作1212处,阶段计数器i等于阶段的数量,那么处理1200可以在操作1218继续,“围绕每个得出的MV(1/4 RsCs像素)进行细化搜索”,其中可以以1/4 RsCs像素为基础围绕每个得出的运动矢量执行细化搜索。
[0232] 处理1200可以在操作1220继续,“返回运动范围”,其中可以返回运动范围。
[0233] 图13是示出依据本公开的至少一些实施方式布置的示例Rs/Cs域运动估计处理1300的流程图。处理1300可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理1300可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1300可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0234] 处理1300可以在操作1302开始,“加载当前16x16 Rs阵列”,其中可以加载当前16x16 Rs阵列。
[0235] 处理1300可以在操作1304继续,“加载当前16x16 Cs阵列”,其中可以加载当前16x16 Cs阵列。
[0236] 处理1300可以在操作1306继续,“加载参考16x16 Rs阵列”,其中可以加载参考16x16 Rs阵列。
[0237] 处理1300可以在操作1308继续,“加载参考16x16 Cs阵列”,其中可以加载参考16x16 Cs阵列。运动估计Rs/Cs块计数器可以设定为零。
[0238] 处理1300可以在操作1310继续,“i=ME Rs/Cs块的数量?”,其中可以确定运动估计Rs/Cs块计数器i是否等于数量运动估计Rs/Cs块。如果运动估计Rs/Cs块计数器i等于数量运动估计Rs/Cs块,那么处理1300可以在下面的操作1314继续。
[0239] 如果运动估计Rs/Cs块计数器i不等于数量运动估计Rs/Cs块,那么运动估计Rs/Cs块计数器可以递增并且处理1300可以在操作1312继续,“从ME(ReferenceRs、CurrentRs(i))+ME(ReferenceCs、CurrentCs(i))的最低得出的SAD选择最佳MV”,其中可以从对于(ReferenceRs、CurrentRs(i))+ME(ReferenceCs、CurrentCs(i)的运动估计的绝对差值的最低得出的总和选择最佳运动矢量。运动估计Rs/Cs块计数器i可以递增。处理1300然后可以在上述操作1310继续。
[0240] 如果在上述操作1310处运动估计Rs/Cs块计数器i等于数量运动估计Rs/Cs块,那么处理1300可以在操作1314继续,“返回Rs/Cs MV和SAD阵列”,其中可以返回Rs/Cs运动矢量的阵列和绝对差值的总和。
[0241] 图14是示出依据本公开的至少一些实施方式布置的示例阶段1和2运动估计处理1400的流程图。处理1400可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理1400可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1400可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0242] 处理1400可以在操作1402开始,“加载当前和参考画面”,其中可以加载当前和参考画面。
[0243] 处理1400可以在操作1404继续,“是第一阶段?”,其中可以确定是否第一阶段运动估计正被执行。如果第一阶段运动估计正被执行,那么处理1400可以在下面的操作1426继续。
[0244] 如果第一阶段运动估计没有正被执行,那么处理1400可以在操作1406继续,“加载来自前阶段的MV”,其中可以加载来自前阶段的运动矢量。
[0245] 处理1400可以在操作1406继续,“MV在画面区域内?”,其中可以确定来自前阶段的运动矢量是否在画面区域内。如果来自前阶段的运动矢量在画面区域内,那么处理1400可以在下面的操作1412继续。
[0246] 如果来自前阶段的运动矢量不在画面区域内,那么处理1400可以在操作1410继续,“限制MV”,其中可以限制运动矢量。
[0247] 处理1400可以在操作1412继续,“计算在平面(0)上具有MV(0,0)的当前块的SAD”,其中可以计算在平面(0)上具有运动矢量(0,0)的当前块的绝对差值的总和。
[0248] 处理1400可以在操作1414继续,“设定最佳SAD到SAD,最佳MV到(0,0),并且最佳平面到0”,其中绝对差值的最佳总和可以设定为绝对差值的总和,最佳运动矢量可以设定为(0,0),并且最佳平面可以设定为零。平面计数器i可以设定为零。
[0249] 处理1400可以在操作1416继续,“i=平面的数量?”,其中可以确定平面计数器i是否等于平面的数量。如果平面计数器i等于平面的数量,处理1400可以在下面的操作1424继续。
[0250] 如果平面计数器i不等于平面的数量,那么处理1400可以在操作1418继续,“计算在平面(i)上具有传播的MV的当前块的SAD”,其中可以计算在平面(i)上具有传播的运动矢量的当前块的绝对差值的总和。
[0251] 处理1400可以在操作1420继续,“得出的SAD小于之前计算的SAD?”,其中可以确定绝对差值的得出的总和是否小于之前计算的绝对差值的总和。如果绝对差值的总和不小于之前计算的绝对差值的总和,那么平面计数器i可以递增,并且处理1400可以在上述操作1416继续。
[0252] 如果绝对差值的总和小于之前计算的绝对差值的总和,那么处理1400可以在操作1422继续,“设定最佳SAD到SAD,最佳平面到(i)”,其中绝对差值的最佳总和可以设定为绝对差值的总和,并且最佳平面可以设定为平面计数器i。平面计数器i可以递增并且处理
1400可以在上述操作1416继续。
[0253] 如果在上述操作1416,平面计数器i等于平面的数量,那么处理1400可以在操作1424继续,“获取运动范围,并确定当前块的搜索区域”,其中可以获取运动范围,并可以确定当前块的搜索区域。处理1400然后可以在下面的操作1430继续。
[0254] 如果在上述操作1404,第一阶段运动估计正被执行,那么处理1400可以在操作1426继续,“获取运动范围,并确定当前块的搜索区域”,其中可以获取运动范围,并可以确定当前块的搜索区域。
[0255] 处理1400可以在操作1428继续,“设定初始MV为(0,0),最佳平面为0”,其中初始运动矢量可以设定为(0,0),并且最佳平面可以设定为0。
[0256] 处理1400可以在操作1430继续,“在之前限定的区域和最佳平面进行梅花形减小的搜索+2垂直、+4水平”,其中可以在之前限定的区域和最佳平面执行梅花形减小的搜索+2垂直、+4水平。
[0257] 处理1400可以在操作1432继续,“计算在最佳平面上使用邻近MV作为候选的SAD”,其中可以计算在最佳平面上使用邻近运动矢量作为候选的绝对差值的总和。
[0258] 处理1400可以在操作1434继续,“最佳SAD是相邻MV的结果?”,其中可以确定绝对差值的最佳总和是否是相邻运动矢量的结果。如果绝对差值的最佳总和不是相邻运动矢量的结果,那么处理1400可以在下面的操作1438继续。
[0259] 如果在操作1434处,绝对差值的最佳总和是相邻运动矢量的结果,那么处理1400可以在操作1436继续,“围绕最佳MV搜索+-1像素”,其中可以执行围绕最佳运动矢量搜索加一或者减一像素。
[0260] 处理1400可以在操作1438继续,“是阶段1?”,其中可以确定正被执行的是否是阶段1运动估计。如果阶段1运动估计没有正被执行,那么处理1400可以在下面的操作1440继续。
[0261] 处理1400可以在操作1440继续,“传播的MV最初设定为零?”,其中可以确定传播的运动矢量是否最初设定为零。如果传播的运动矢量最初设定为零,那么处理1400可以在下面的操作1444继续。
[0262] 如果在操作1440中,传播的运动矢量最初没有设定为零,那么处理1400可以在操作1442继续,“在+-32区域上对于MV(0,0)进行梅花形减小的搜索+2垂直、+4水平”,其中可以在+-32区域上对于运动矢量(0,0)执行减小的梅花形搜索+2垂直、+4水平。
[0263] 处理1400可以在操作1444继续,“围绕最佳MV搜索+-1像素”,其中可以执行围绕最佳运动矢量搜索+-1像素。
[0264] 处理1400可以在操作1450继续,“在半像素单元返回最佳MV”,其中最佳运动矢量可以在半像素单元返回。
[0265] 图15是示出依据本公开的至少一些实施方式布置的示例阶段3运动估计处理1500的流程图。处理1500可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理1500可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1500可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0266] 处理1500可以在操作1502开始,“加载当前和参考画面”,其中可以加载当前和参考画面。
[0267] 处理1500可以在操作1504继续,“加载来自前阶段的MV”,其中可以加载来自前阶段的运动矢量。
[0268] 处理1500可以在操作1506继续,“MV在画面区域内?”,其中可以确定运动矢量是否在画面区域内。如果运动矢量在画面区域内,那么处理1500可以在下面的操作1510继续。
[0269] 如果在操作1506中,运动矢量不在画面区域内,处理1500可以在操作1508继续,“限制MV”,其中可以限制运动矢量。
[0270] 处理1500可以在操作1510继续,“计算在平面(0)上具有MV(0,0)的当前块的SAD”,其中可以计算在平面(0)上具有运动矢量(0,0)的当前块的绝对差值的总和。
[0271] 处理1500可以在操作1512继续,“设定最佳SAD到SAD,最佳MV到(0,0),并且最佳平面到0”,其中绝对差值的最佳总和可以设定为绝对差值的总和,最佳运动矢量可以设定为(0,0),并且最佳平面可以设定为零。平面计数器i可以设定为零。
[0272] 处理1500可以在操作1514继续,“i=平面的数量?”,其中可以确定平面计数器i是否等于平面的数量。如果平面计数器i等于平面的数量,处理1500可以在下面的操作1522继续。
[0273] 如果平面计数器i不等于平面的数量,那么处理1500可以在操作1516继续,“计算在平面(i)上具有传播的MV的当前块的SAD”,其中可以计算在平面(i)上具有传播的运动矢量的当前块的绝对差值的总和。
[0274] 处理1500可以在操作1518继续,“得出的SAD小于之前计算的SAD?”,其中可以确定绝对差值的得出的总和是否小于之前计算的绝对差值的总和。如果绝对差值的总和不小于之前计算的绝对差值的总和,那么平面计数器i可以递增,并且处理1500可以在上述操作1514继续。
[0275] 如果绝对差值的总和小于之前计算的绝对差值的总和,那么处理1400可以在操作1520继续,“设定最佳SAD到SAD,最佳平面到(i)”,其中绝对差值的最佳总和可以设定为绝对差值的总和,并且最佳平面可以设定为平面计数器i。平面计数器i可以递增并且处理
1500可以在上述操作1514继续。
[0276] 如果在上述操作1514处,平面计数器i等于平面的数量,那么处理1500可以在操作1522继续,“获取运动范围,并确定当前块的搜索区域”,其中可以获取运动范围,并可以确定当前块的搜索区域。
[0277] 处理1500可以在操作1524继续,“在之前限定的区域和最佳平面上进行梅花形减小的搜索+2垂直、+4水平”,其中可以在之前限定的区域和最佳平面上执行梅花形减小的搜索+2垂直、+4水平。
[0278] 处理1500可以在操作1526继续,“仅在运动象限和4的范围进行移位的梅花形减小的搜索+2垂直、+4水平”,其中可以仅在运动象限和4的范围上执行移位的梅花形减小的搜索+2垂直、+4水平。
[0279] 处理1500可以在操作1528继续,“直接对1/4像素进行针对+-2整数像素的穷尽的细化搜索,并得到最佳平面”,其中可以直接对1/4像素精度执行针对+-2整数像素的穷尽的细化搜索,并可以得到最佳平面。
[0280] 处理1500可以在操作1530继续,“计算在最佳平面上使用邻近MV作为候选的SAD”,其中可以计算在最佳平面上使用邻近运动矢量作为候选的绝对差值的总和。
[0281] 处理1500可以在操作1532继续,“传播的MV最初设定为零?”,其中可以确定传播的运动矢量是否最初设定为零。如果传播的运动矢量最初设定为零,那么处理1500可以在下面的操作1544继续。
[0282] 如果在操作1532中,传播的运动矢量最初没有设定为零,那么处理1500可以在操作1534继续,“在+-4区域上对于最佳平面上的MV(0,0)进行梅花形减小的搜索+1垂直、+2水平”,其中可以在+-4区域上对于最佳平面上的运动矢量(0,0)执行减小的梅花形搜索+1垂直、+2水平。
[0283] 处理1500可以在操作1536继续,“仅在之前计算的MV的运动象限和最佳平面上的32的范围上进行移位的梅花形减小的搜索+2垂直、+4水平”,其中可以仅在之前计算的运动矢量的运动象限和最佳平面上的32的范围上执行移位的梅花形减小的搜索+2垂直、+4水平。
[0284] 处理1500可以在操作1538继续,“直接对1/4像素针对+-16整数像素进行梅花形减小的搜索+1垂直、+2水平,并得到最佳平面”,其中可以直接对1/4像素精度针对+-16整数像素执行梅花形减小的搜索+1垂直、+2水平,并可以得到最佳平面。
[0285] 处理1500可以在操作1540继续,“直接对1/4像素进行针对+-1整数像素的穷尽的细化搜索,并得到最佳平面”,其中可以直接对1/4像素精度执行针对+1整数像素的穷尽的细化搜索,并可以得到最佳平面。
[0286] 处理1500可以在操作1542继续,“相应地更新SAD、MV和平面”,其中可以相应地更新绝对差值的总和、运动矢量、以及平面。
[0287] 处理1500可以在操作1544继续,“直接对1/4像素进行针对+-1整数像素的穷尽的细化搜索,并得到最佳平面”,其中可以直接对1/4像素精度执行针对+1整数像素的穷尽的细化搜索,并可以得到最佳平面。
[0288] 处理1500可以在操作1546继续,“需要1/8像素?”,其中可以确定是否需要1/8像素精度。如果不需要1/8像素精度,那么处理1500可以在下面的操作1552继续。
[0289] 如果在操作1546处,需要1/8像素精度,那么处理1500可以在操作1548继续,“以1/8像素精度产生8个周围块”,其中可以以1/8像素精度产生8个周围块。
[0290] 处理1500可以在操作1550继续,“计算每个块的SAD,并相应地更新MV和SAD”,其中可以计算每个块的绝对差值的总和,并且运动矢量和绝对差值的总和可以相应地更新。
[0291] 处理1500可以在操作1552继续,“以限定的精度水平单位返回最佳MV”,其中可以以限定的精度水平单位返回最佳运动矢量。
[0292] 图16是依据本公开的至少一些实施方式布置的具有分层帧结构的帧序列的示意图。如图所示,首先可以用帧或者视频序列1600解释分层。这样的帧序列可以形成8个画面的重复模式(repeating pattern)1602。每个帧或者画面以显示的顺序编号1-16,或者更精确地输入视频,而非以编码的顺序,并标注有画面类型(I、P、F、或者f),其中大写的F表明F-画面可以被用作参考帧,并且小f-画面至少在该图中不被用作参考帧。画面类型符号中的上标表明帧驻存在哪个金字塔或分层级或者排名,因而,表明参考帧依赖性还由依赖性箭头1604示出。
[0293] 画面序列1600包含排名零(0)和具有排名1至3的3级金字塔(当在金字塔级数量中不包含排名(0)时)。基本或者排名零(0)帧可以包含I-画面0(或者换言之在时间0处),其是P-画面16的参考帧,其自身是P-画面8的参考帧,其所有都是排名零,如其上标所示。每个模式1602在第一级的分层具有一个(排名1)参考F-画面4或者12,在第二级的分层有2个(排名2)参考F-画面((2和6)或者(10和14)),并在第三级的分层有4个非参考(排名3)f-画面(1、
3、5、6或者9、11、13、15)。在该示例中,在期间级1至3中,每个帧都具有来自排名值低一个的级的参考,尽管其不需要总是如此。从当前帧到其参考帧的依赖性还可以跳跃级,或者可以在相同的级具有额外的依赖性。本文公开的方法和系统使用的概念是:通过当帧在从基本或者排名(0)级更远的级上时使用更高压缩,最大压缩是更好的方法而不会显著牺牲图像质量。
[0294] 图17是示出依据本公开的至少一些实施方式布置的示例阶段3运动估计处理1700的流程图。处理1700可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理1700可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1700可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0295] 处理1700可以在操作1702开始,“加载下个画面”,其中加载下个画面。
[0296] 处 理 1 7 0 0 可 以 在 操 作 1 7 0 4 继 续 ,“”,其中可以执行计算
[0297] 处 理 1 7 0 0 可 以 在 操 作 1 7 0 6 继 续 ,“”,其中可以执行计算
[0298] 处理1700可以在操作1708继续,“RsCsDiff=√(RsDiff2+CsDiff2)”,其中可以执行计算RsCsDiff=√(RsDiff2+CsDiff2)。
[0299] 处理1700可以在操作1710继续,“”,其中可以执行计算
[0300] 处 理1 7 00 可以 在 操 作1 7 12 继 续 ,“”,其 中 可 以 执 行 计 算
[0301] 处理1700可以在操作1714继续,“DCdiff=ABS(currentDC-previousDC)”,其中可以执行计算DCdiff=ABS(currentDC-previousDC)。
[0302] 处理1700可以在操作1716继续,“RsCsDiff>=10”,其中可以确定RsCsDiff是否大于或者等于10。如果RcCsDiff大于或者等于10,那么处理1700可以在下面的操作1744继续。如果RcCsDiff不大于或者等于10,那么处理1700可以在下面的操作1740继续。
[0303] 处理1700可以在操作1718继续,“posBalance=Histo[3]+Histo[4]”,其中可以执行计算posBalance=Histo[3]+Histo[4]。
[0304] 处理1700可以在操作1720继续,“negBalance=Histo[0]+Histo[1]”,其中可以执行计算negBalance=Histo[0]+Histo[1]。
[0305] 处理1700可以在操作1722继续,“totBalance=posBalance-negBalance”,其中可以执行计算totBalance=posBalance-negBalance。
[0306] 处理1700可以在操作1724继续,“balance=totBalance/numOfPixels”,其中可以执行计算balance=totBalance/numOfPixels。
[0307] 处理1700可以在操作1726继续,“产生从先前帧的差异图像”,其中可以产生从先前帧的差异图像。像素计数器I可以设定为零。
[0308] 处理1700可以在操作1728继续,“I=mumOfPixels?”,其中可以确定像素计数器I是否等于像素的数量。如果像素计数器I等于像素的数量,那么处理1700可以在上述操作1718继续。如果像素计数器I不等于像素的数量,处理1700可以在下面的操作1730继续。
[0309] 处理1700可以在操作1730继续,“Diff(I)<-12?”,其中可以确定Diff(I)是否小于-12。如果Diff(I)小于-12,那么处理1700可以在下面的操作1731继续。如果Diff(I)不小于-12,那么处理1700可以在下面的操作1732继续。
[0310] 处理1700可以在操作1731继续,“Histo[0]++”,其中计数器Histo[0]可以递增。像素计数器I可以递增。处理1700然后可以在上述操作1728继续。
[0311] 处理1700可以在操作1732继续,“Diff(I)<-4?”,其中可以确定Diff(I)是否小于-4。如果Diff(I)小于-4,那么处理1700可以在下面的操作1733继续。如果Diff(I)不小于-4,那么处理1700可以在下面的操作1734继续。
[0312] 处理1700可以在操作1733继续,“Histo[1]++”,其中计数器Histo[1]可以递增。像素计数器I可以递增。处理1700然后可以在上述操作1728继续。
[0313] 处理1700可以在操作1734继续,“Diff(I)<4?”,其中可以确定Diff(I)是否小于4。如果Diff(I)小于4,那么处理1700可以在下面的操作1735继续。如果Diff(I)不小于4,那么处理1700可以在下面的操作1736继续。
[0314] 处理1700可以在操作1735继续,“Histo[2]++”,其中计数器Histo[2]可以递增。像素计数器I可以递增。处理1700然后可以在上述操作1728继续。
[0315] 处理1700可以在操作1736继续,“Diff(I)<12?”,其中可以确定Diff(I)是否小于12。如果Diff(I)小于12,那么处理1700可以在下面的操作1737继续。如果Diff(I)不小于
12,那么处理1700可以在下面的操作1738继续。
[0316] 处理1700可以在操作1737继续,“Histo[3]++”,其中计数器Histo[3]可以递增。像素计数器I可以递增。处理1700然后可以在上述操作1728继续。
[0317] 处理1700可以在操作1738继续,“Histo[4]++”,其中计数器Histo[4]可以递增。像素计数器I可以递增。处理1700然后可以在上述操作1728继续。
[0318] 处理1700可以在操作1740继续,“RsCsDiff>7.6”,其中可以确定RsCsDiff是否大于7.6。如果RcCsDiff大于7.6,那么处理1700可以继续。如果RsCsDiff不大于7.6,那么处理1700可以在下面的操作1742继续。
[0319] 处理1700可以在操作1742继续,“DCDiff>2.9”,其中可以确定是否DCDiff大于2.9。如果DCDiff大于2.9,处理1700可以在下面的操作1746继续。如果DCDiff不大于2.9,处理1700可以在下面的操作1750继续。
[0320] 处理1700可以在操作1744继续,“DCDiff>1.6”,其中可以确定是否DCDiff大于1.6。如果DCDiff大于1.6,处理1700可以在下面的操作1746继续。如果DCDiff不大于1.6,处理1700可以在下面的操作1750继续。
[0321] 处理1700可以在操作1746继续,“平衡>0.18”,其中可以确定是否平衡大于0.18。如果平衡大于0.18,处理1700可以在下面的操作1748继续。如果平衡不大于0.18,处理1700可以在下面的操作1750继续。
[0322] 处理1700可以在操作1748继续,“返回发现镜头改变”,其中可以返回发现镜头改变。
[0323] 处理1700可以在操作1750继续,“返回无镜头改变”,其中可以返回无镜头改变。
[0324] 图18是示出依据本公开的至少一些实施方式布置的镜头改变确定的示例决定线的图。一旦增益信息可用,镜头改变可以通过如下确定:测试镜头改变发生必须满足的4个条件。一个这样的条件在图1800中示出。图1800示出的菱形形状绘图示出了已发生镜头改变的帧的实例,方形绘图示出未发生镜头改变的帧的实例,三角形状绘图示出的粗糙决定线表明在哪里能够以一些置信度来确定镜头改变,并且绘图示出的平滑决定线表明在哪里能够以一些置信度来确定镜头改变。
[0325] 在该示例中,图1800示出与空间时间索引(tscIndex)有关的、当前与先前帧运动矢量差异值之间的差异(diffMVdiffVal)之间的示例关系。tscIndex与diffMVdiffVal之间的关系然后由图1800中的等式代表,其中diffMVdiffVal必须大于“y”,且为了计算“y”,tscIndex是等式中的x值。在该示例中,为了满足条件,与空间时间索引(tscIndex)有关的、当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)必须更大,如图18的曲线所示。
[0326] 图19是示出依据本公开的至少一些实施方式布置的镜头改变确定的示例决定线的图。一旦增益信息可用,镜头改变可以通过如下确定:测试镜头改变发生必须满足的4个条件。一个这样的条件在图1900中示出。图1900示出的菱形形状绘图示出了已发生镜头改变的帧的实例,方形绘图示出未发生镜头改变的帧的实例,三角形状绘图示出的粗糙决定线表明在哪里能够以一些置信度来确定镜头改变,并且绘图示出的平滑决定线表明在哪里能够以一些置信度来确定镜头改变。
[0327] 在该示例中,图1900示出tscIndex与平均帧差异差分(AFDdiff)之间的差异值之间的示例关系。关系然后在图1900上的等式中被代表。
[0328] 图20是示出依据本公开的至少一些实施方式布置的镜头改变确定的示例决定线的图。一旦增益信息可用,镜头改变可以通过如下确定:测试镜头改变发生必须满足的4个条件。一个这样的条件在图2000中示出。图2000示出的菱形形状绘图示出了已发生镜头改变的帧的实例,方形绘图示出未发生镜头改变的帧的实例,三角形状绘图示出的粗糙决定线表明在哪里能够以一些置信度来确定镜头改变,并且绘图示出的平滑决定线表明在哪里能够以一些置信度来确定镜头改变。
[0329] 在该示例中,图2000示出在空间复杂性(SC)与在当前与先前帧之间的RsCs差异之间的差异值之间的示例关系。关系在图2000上的等式中被代表。
[0330] 图21是示出依据本公开的至少一些实施方式布置的镜头改变确定的示例决定线的图。一旦增益信息可用,镜头改变可以通过如下确定:测试镜头改变发生必须满足的4个条件。一个这样的条件在图2100中示出。图2100示出的菱形形状绘图示出了已发生镜头改变的帧的实例,方形绘图示出未发生镜头改变的帧的实例,三角形状绘图示出的粗糙决定线表明在哪里能够以一些置信度来确定镜头改变,并且绘图示出的平滑决定线表明在哪里能够以一些置信度来确定镜头改变。
[0331] 在该示例中,图2100示出当前SC和当前AFD之间相对于SC索引和TSC索引的示例关系。图2100要求当前SC和当前AFD之间的比率小于SC索引与TSC索引的乘法。关系在图2100上的等式中被代表。
[0332] 图22是示出依据本公开的至少一些实施方式布置的示例分层运动估计处理2200的流程图。处理2200可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理2200可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2200可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0333] 处理2200可以在操作2202开始,“加载下个画面”,其中可以加载下个画面。
[0334] 处理2200可以在操作2204继续,“延伸边界”,其中可以延伸边界。
[0335] 处理2200可以在操作2206继续,“空间分析”,其中可以执行空间分析。
[0336] 处理2200可以在操作2208继续,“MRE”,其中可以执行运动范围估计。
[0337] 处理2200可以在操作2210继续,“HME”,其中可以执行分层运动估计。
[0338] 处理2200可以在操作2212继续,“P距离计算器”,其中可以执行p距离计算。
[0339] 处理2200可以在操作2214继续,“已发现I帧?”,其中可以确定是否已发现I帧。如果已发现I帧,那么处理2200可以在下面的操作2222继续。如果没有发现I帧,那么处理2200可以在下面的操作2216继续。
[0340] 处理2200可以在操作2216继续,“已发现P帧?”,其中可以确定是否已发现P帧。如果已发现P帧,那么处理2200可以在下面的操作2236继续。如果没有发现P帧,那么处理2200可以在下面的操作2218继续。
[0341] 处理2200可以在操作2218继续,“缓冲器已满?”,其中可以确定缓冲器是否已满。如果缓冲器已满,处理2200可以在下面的操作2236继续。如果缓冲器未满,处理2200可以在下面的操作2220继续。
[0342] 处理2200可以在操作2220继续,“是最后帧?”,其中可以确定该帧是否是最后帧。如果该帧是最后帧,处理2200可以在下面的操作2242继续。如果该帧不是最后帧,处理2200可以在下面的操作2232继续。
[0343] 处理2200可以在操作2222继续,“缓冲器上有帧?”,确定缓冲器上是否有帧。如果缓冲器上有帧,处理2200可以在下面的操作2224继续。如果缓冲器上没有帧,处理2200可以在下面的操作2228继续。
[0344] 处理2200可以在操作2224继续,“在缓冲器-1上MRE”,其中可以在先前的缓冲器上执行运动范围估计。
[0345] 处理2200可以在操作2226继续,“在缓冲器-1上HME”,其中可以在先前的缓冲器上执行分层运动估计。
[0346] 处理2200可以在操作2228继续,“将缓冲器中的最后帧设定为Past Ref-Buffer Pos(0)”,其中缓冲器中的最后帧可以设定为Past Ref-Buffer Pos(0)。
[0347] 处理2200可以在操作2230继续,“Buffer Pos=1”,其中缓冲器位置可以设定为等于一。处理2200然后可以在上述操作2220继续。
[0348] 处理2200可以在操作2232继续,“向缓冲器增加空间数据”,其中可以向缓冲器增加空间数据。
[0349] 处理2200可以在操作2234继续,“向缓冲器增加画面数据”,其中可以向缓冲器增加画面数据。
[0350] 处理2200可以在操作2236继续,“Buffer pos++”,其中缓冲器位置可以递增,处理2200然后可以在上述操作2202继续。
[0351] 处理2200可以在操作2242继续,“在缓冲器上HME”,其中可以在缓冲器上执行分层运动估计。
[0352] 图23是示出依据本公开的至少一些实施方式布置的另一个示例分层运动估计处理2300的流程图。处理2300可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理2300可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2300可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0353] 处理2300可以在操作2302开始,“加载下个画面”,其中加载下个画面。
[0354] 处理2300可以在操作2304继续,“边界延伸”,其中可以延伸边界。
[0355] 处理2300可以在操作2306继续,“产生1/4和1/16尺寸画面”,其中可以产生1/4和1/16尺寸画面。
[0356] 处理2300可以在操作2308继续,“对所有画面尺寸产生半像素平面”,其中可以对所有画面尺寸执行半像素平面产生。处理2300然后可以在下面的操作2314继续。
[0357] 处理2300可以在操作2310继续,“在4个阶段(0,0),(0,8),(8,0),(8,8)产生基于Rs/Cs 16x16块的画面”,其中可以在(0,0),(0,8),(8,0),(8,8)的4个阶段产生基于Rs/Cs 16x16块的画面。处理2300然后可以在下面的操作2314继续。
[0358] 处理2300可以在操作2312继续,“产生1/4像素平面”,其中可以产生1/4像素平面。
[0359] 处理2300可以在操作2314继续,“增加至当前画面缓冲器”,其中可以增加至当前画面缓冲器。
[0360] 处理2300可以在操作2316继续,“是第一帧或者I帧?”,其中可以确定该帧是否是第一帧或者I帧。如果该帧是第一帧或者I帧,处理2300可以在下面的操作2318继续。如果该帧不是第一帧或者I帧,处理2300可以在下面的操作2324继续。
[0361] 处理2300可以在操作2318继续,“移动至RefBuffer(0)”,其中帧可以移动至RefBuffer(0)。
[0362] 处理2300可以在操作2320继续,“RefCount=1”,其中参考计数器RefCount可以设定为等于一。
[0363] 处理2300可以在操作2322继续,“计数器=1”,其中计数器可以设定为等于一。处理2300然后可以在上述操作2302继续。
[0364] 处理2300可以在操作2324继续,“是P帧或者缓冲器已满或者最后帧?”,其中可以确定是否该帧是P帧或者缓冲器已满或者该帧是最后帧。如果帧是P帧或者缓冲器已满或者该帧是最后帧,处理2300可以在操作2330继续,且计数器i可以设定为零。如果该帧不是P帧且缓冲器未满且该帧不是最后帧,处理2300可以在下面的操作2326继续。
[0365] 处理2300可以在操作2326继续,“画面缓冲器移动至位置(计数器)中的CurBuffer”,其中画面缓冲器可以移动至位置(计数器)中的CurBuffer。
[0366] 处理2300可以在操作2328继续,“计数器++”,其中该计数器可以递增。处理2300然后可以在上述操作2302继续。
[0367] 处理2300可以在操作2330继续,“i=RefCount?”,其中可以确定计数器i是否等于RefCount。如果计数器i等于RefCount,处理2300可以在下面的操作2332继续。如果计数器i不等于RefCount,处理2300可以在下面的操作2354继续。
[0368] 处理2300可以在操作2332继续,“将画面缓冲器移动至RefBuffer(RefCount)”,其中画面缓冲器可以移动至RefBuffer(RefCount)。
[0369] 处理2300可以在操作2334继续,“RefCount++”,其中RefCount可以递增。计数器i可以设定为零。
[0370] 处理2300可以在操作2336继续,“i=RefCount?”,其中可以确定计数器i是否等于RefCount。如果计数器i等于RefCount,处理2300可以在下面的操作2342继续。如果计数器i不等于RefCount,计数器j可以设定为零且处理2300可以在下面的操作2338继续。
[0371] 处理2300可以在操作2338继续,“j=计数器?”,其中可以确定计数器j是否等于计数器。如果计数器j等于计数器,计数器i可以递增且处理2300可以在上述操作2336继续。如果计数器j不等于计数器,处理2300可以在下面的操作2340继续。
[0372] 处理2300可以在操作2340继续,“进行HME(RefBuffer(i),picBuffer)”,其中可以在RefBuffer(i),picBuffer执行分层运动估计。计数器j可以递增。处理2300然后可以在上述操作2336继续。
[0373] 处理2300可以在操作2342继续,“RefBuffer(RefCount)是最后帧?”,其中可以确定RefBuffer(RefCount)是否是最后帧。如果RefBuffer(RefCount)是最后帧,处理2300可以结束。如果RefBuffer(RefCount)不是最后帧,处理2300可以在下面的操作2344继续。
[0374] 处理2300可以在操作2344继续,“将RefBuffer(RefCount)移动至RefBuffer(0),并清除RefBuffer的剩余”,其中可以将RefBuffer(RefCount)移动至RefBuffer(0),并可以清除RefBuffer的剩余。
[0375] 处理2300可以在操作2346继续,“RefCount=1”,其中RefCount可以设定为等于一。
[0376] 处理2300可以在操作2348继续,“有任何其他参考?”,其中可以确定是否有任何其他参考。如果有任何其他参考,处理2300可以在下面的操作2350继续。如果没有任何其他参考,处理2300可以在上述操作2302继续。
[0377] 处理2300可以在操作2350继续,“将参考移动至RefBuffer”,其中参考可以移动至RefBuffer。
[0378] 处理2300可以在操作2352继续,“RefCount=RefCount+NumExtraRef”,其中RefCount可以递增额外参考的数量。处理2300然后可以在上述操作2302继续。
[0379] 处理2300可以在操作2354继续,“进行HME(RefBuffer(i),picBuffer)”,其中可以在RefBuffer(i),picBuffer上执行分层运动估计。
[0380] 图24是示出跟据本公开的至少一些实现布置的示例处理2400的流程图。处理2400可以包含一个或多个操作、功能或者动作,如由一个或多个操作示出。处理2400可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2400可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0381] 处理2400可以在操作2402开始,“接收视频序列的输入视频帧”,其中视频序列的输入视频帧例如可以经由编码器100来接收。
[0382] 处理2400可以在操作2404继续,“将画面类型与每个视频帧关联”,其中画面类型可以例如经由内容预分析器模块102被关联至一组画面中的每个视频帧。例如,画面类型可以是F/B-画面、P-画面、或者I-画面等。在一些示例中,视频序列可以包含画面的群组,并且本文描述的处理可以对一组画面的帧或者画面执行;并且处理可以对群组的所有帧或者画面重复,进而,对视频序列中的画面的所有群组重复。
[0383] 处理2400可以在操作2406继续,“将画面划分为图块和/或超片段以及潜在的预测分段”,其中画面可以例如经由预测分区产生器105被划分为图块或者超片段以及潜在的预测分区。
[0384] 处理2400可以在操作2410继续,“对于潜在的预测分段,确定潜在的预测误差”,其中对于每个潜在的预测分段,可以确定潜在的预测误差。例如,对于每个预测分段(和相关联的预测分区、预测、以及预测参数),可以确定预测误差。例如,确定潜在的预测误差可以包含确定原始像素(例如,预测分区的原始像素数据)与预测像素的差异。在一些示例中,可以存储相关联的预测参数。如上所述,在一些示例中,预测误差数据分区可以包含至少部分基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧,而产生的预测误差数据。
[0385] 处理2400可以在操作2412继续,“选择预测分段和预测类型并保存参数”,其中可以选择预测分段和预测类型,并可以保存相关联的参数。在一些示例中,可以选择具有最小预测误差的潜在的预测分段。在一些示例中,潜在的预测分段可以基于比特率失真优化(RDO)来选择。
[0386] 处理2400可以在操作2414继续,“对潜在的编码分段执行转换”,其中可以对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定或者内容自适应转换。例如,分区预测误差数据可以被分区来产生多个编码分区。例如,分区预测误差数据可以由本文讨论的编码分区产生器模块107的bi-tree编码分区器模块或者k-d树编码分区器模块来分区。在一些示例中,关联于F/B-或者P-画面的分区预测误差数据可以由bi-tree编码分区器模块来分区。在一些示例中,关联于I-画面(例如在一些示例中为图块或者超片段)的视频数据可以由k-d树编码分区器模块来分区。在一些示例中,可以经由开关来选用或选择编码分区器模块。例如,分区可以由编码分区产生器模块107来产生。
[0387] 处理2400可以在操作2416继续,“确定最佳编码分段、转换块尺寸、以及实际转换”,其中可以确定最佳编码分段、转换块尺寸、以及实际转换。例如,(例如具有各种编码分区的)各种编码分段可以基于RDO或者另一个基础来评价,以确定选择的编码分段(其还可以包含当编码分区不匹配转换块尺寸时,进一步将编码分区划分为转换块,如讨论的那样)。例如,实际转换(或者选择的转换)可以包含本文描述的对编码分区或者块尺寸执行的任何内容自适应转换或者固定转换。
[0388] 处理2400可以在操作2418继续,“量化并扫描转换系数”,其中可以量化并扫描关联于编码分区(和/或转换块)的转换系数,准备熵编码。
[0389] 处理2400可以在操作2422继续,“将关联于每个图块或者超片段解码的数据(诸如编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、以及量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、syp))熵编码”,其中数据可以被熵编码。例如,熵编码的数据可以包含编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、syp)等和/或其组合。附加地或替代地,熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0390] 处理2400可以在操作2423继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/或质量恢复滤波来处理,并被组装来产生画面。
[0391] 处理2400可以在操作2424继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以保存在参考画面缓冲器中。例如,除了或者替代DD/DB滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0392] 处理2400可以在操作2425继续,“应用AP/AM滤波器,确定修改(例如变形或者合成)特性参数来产生变形的或者合成的预测参考,并执行预测”,其中可以执行修改(例如变形或者合成)特性参数和预测,并且可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以产生用于产生变形的或者合成的预测参考的修改(例如变形或者合成)特性参数,并可以执行预测。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0393] 如上所述,在一些示例中,可以执行帧间预测。在一些示例中,高达4个解码的过去和/或将来的画面和若干变形/合成预测可以被用于产生大量的参考类型(例如参考画面)。例如在“帧间”模式中,可以在P-画面中支持高达9个参考类型,并且对于F/B-画面可以支持高达10个参考类型。此外,“多帧”模式可以提供一种类型的帧间预测模式,其中,不是1个参考画面,可以使用2个参考画面,并且P-和F/B-画面可以分别允许3个、以及高达8个参考类型。例如,预测可以基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧。在这样的示例中,比特流(下文相对于操作2012讨论)可以包含关联于预测分区的帧参考、变形参数、或者合成参数。
[0394] 处理2400可以在操作2429继续,“可选地应用EP滤波器和/或可选地应用FI/FP滤波器”,其中可以可选地应用增强的预测的分区(例如EP滤波)或者FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。FI/FP滤波可以应用来滤波组装画面的该部分。关联于FI/FP滤波的FI/FP滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并发送至熵编码器子系统。
[0395] 在EP滤波或者FI/FP滤波两者可用的实施方式中,可以产生的指示符表明解码器系统是否使用增强的预测的分区(例如EP滤波)、或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0396] 操作2402至2429可以提供视频编码和比特流传输技术,其可以由本文说明的编码器系统采用。
[0397] 图25示出依据至少本公开的一些实施方式布置的示例比特流2500。在一些示例中,比特流2500可以对应于图1所示的输出比特流111和/或图2所示的输入比特流201。
[0398] 尽管为了清楚呈现在图25中未示出,在一些示例中,比特流2500可以包含头部部分和数据部分。在各种示例中,比特流2500可以包含关联于本文说明的将视频帧编码的数据、指示符、索引值、模式选择数据等。
[0399] 如上所述,比特流2500可以由编码器(诸如例如编码器100)产生和/或由解码器200接收用于解码,使得解码的视频帧可以经由显示器设备呈现。
[0400] 图26是示出依据本公开的至少一些实施方式布置的示例处理2600的流程图。处理2600可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理2600可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2600可以形成由解码器系统200和/或本文说明的任何其他解码器系统或者子系统承担的下一代视频解码处理的至少一部分。
[0401] 处理2600可以开始于操作2602,“接收解码的比特流”,其中可以接收比特流。例如,可以在视频解码器处接收本文说明的编码的比特流。在一些示例中,比特流2500可以经由解码器200接收。
[0402] 处理2600可以在操作2604继续,“将熵编码的比特流解码来确定编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop,syp)”,其中可以解码比特流来确定编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop,syp)等和/或其组合。附加地或替代地,熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0403] 处理2600可以在操作2606继续,“对量化的系数应用量化器(Qp)来产生逆量化的转换系数”,其中量化器(Qp)可以应用到量化的转换系数,来产生逆量化的转换系数。例如,操作2606可以经由自适应逆量化模块203被应用。
[0404] 处理2600可以在操作2608继续,“对于编码(或者帧内预测的)分区中的系数的每个解码的块,基于转换类型和块尺寸数据执行逆转换,以产生解码的预测误差分区”,其中对于编码(或者帧内预测的)分区中的转换系数的每个解码的块,可以执行基于转换类型和块尺寸数据的逆转换,以产生解码的预测误差分区。在一些示例中,逆转换可以包含逆固定转换。在一些示例中,逆转换可以包含逆内容自适应转换。在这样的示例中,执行逆内容自适应转换可以包含基于本文说明的解码的视频数据的相邻块,确定关联于逆内容自适应转换的基础功能。用于本文说明的编码的任何正变换可以用于使用相关联的逆转换来解码。在一些示例中,逆转换可以由自适应逆转换模块204执行。在一些示例中,产生解码的预测误差分区还可以包含经由编码分区组装器205组装编码分区。
[0405] 处理2600可以在操作2623继续,“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在逆扫描、逆转换、以及组装编码分区之后,预测误差数据分区可以增加预测分区,以产生可以组装为图块或者超片段的重建的预测分区。组装的图块或者超片段可以可选地经由去块滤波被处理。
[0406] 处理2600可以在操作2624继续,“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以保存在参考画面缓冲器中。例如,除了或者替代DD/DB滤波,组装的图块或者超片段可以可选地经由质量恢复滤波进行处理,并被组装来产生画面。画面可以保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0407] 处理2600可以在操作2625继续,“应用AP/AM滤波器,使用解码的修改特性(例如mop,syp)来产生用于预测的修改的参考,并使用运动矢量和参考信息、预测的分区信息、以及修改的参考来产生预测的分区”,其中可以产生用于预测的修改的参考、也可以产生预测的分区,并可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以至少部分基于解码的修改特性(例如mop,syp)来产生用于预测的修改的参考;并且可以至少部分基于运动矢量和参考信息、预测的分区信息、以及修改的参考来产生预测的分区。另外,此时处理中可以应用自适应运动滤波或者自适应精确滤波。
[0408] 处理2600可以在操作2629继续,“可选地应用EP滤波器和/或可选地应用FI/FP滤波器”,其中可以可选地应用增强的预测的分区(例如EP滤波)或者FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生组装画面的至少一部分。FI/FP滤波可以被应用来滤波组装画面的该部分。关联于FI/FP滤波的FI/FP滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并发送至熵编码器子系统。
[0409] 在实施方式中,当EP滤波或者FI/FP滤波两者可用时,可以从编码器系统接收的指示符表明解码器系统是否使用增强的预测的分区(例如EP滤波)、或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0410] 处理2600可以在操作2630继续,“增加预测分区到解码的预测误差数据分区,以产生重建的分区”,其中预测分区可以被增加至解码的预测误差数据分区,以产生重建的预测分区。例如,解码的预测误差数据分区可以经由增加器206被增加至相关联的预测分区。
[0411] 处理2600可以在操作2632继续,“组装重建的分区来产生图块或者超片段”,其中重建的预测分区可以被组装来产生图块或者超片段。例如,重建的预测分区可以经由预测分区组装器模块207被组装来产生图块或者超片段。
[0412] 处理2600可以在操作2634继续,“组装画面的图块或者超片段来产生全解码的画面”,其中画面的图块或者超片段可以被组装来产生全解码画面。例如,在可选的去块滤波和/或质量恢复滤波之后,图块或者超片段可以被组装来产生全解码画面,其可以经由解码的画面缓冲器210来存储和/或在经由自适应画面重新组织器模块217和内容后恢复器模块218处理之后被传输以经由显示器设备呈现。
[0413] 本文说明的系统的各种部件可以以软件、固件、和/或硬件和/或其任何组合实现。例如,系统300的各种部件可以至少部分由计算片上系统的硬件(SoC)(诸如可以在计算系统中发现的,诸如例如智能电话)提供。本领域的技术人员可以认识到本文说明的系统可以包含未在对应的图中绘出的附加部件。例如,本文说明的系统可以包含附加部件(诸如为了清楚而没有绘出的比特流复用器或者解复用器模块等)。
[0414] 虽然本文的示例处理的实施方式可以包含以示出的顺序承担所有示出的操作,但本公开不限于此,在各种示例中,本文的示例处理的实施方式可以包含仅承担示出的操作的子集和/或以不同于示出的顺序承担。
[0415] 与处理2400、2600和本文说明的其他处理相关的一些附加和/或替代细节可以示出在本文说明的实施方式的一个或多个示例中,尤其是下文相对于图27说明的那样。
[0416] 图27(A)、27(B)、以及27(C)提供跟据本公开的至少一些实现布置的操作中的示例视频编码系统2900和视频编码处理2700的示意图。在示出的实现中,处理2700可以包含一个或多个操作、功能或者动作,如由一个或多个动作2701至2780示出。通过非限制性示例的方式,本文将参考示例视频编码系统2900来说明处理2700,视频编码系统2900包含图1的编码器100和图2的解码器200,如本文下面进一步相对于图29讨论的那样。在各种示例中,处理2700可以由包含编码器和解码器两者的系统承担,或者由分开的系统承担,一个系统采用编码器(和可选地解码器)且另一个系统采用解码器(和可选地编码器)。还要注意,如上所述,编码器可以包含采用本地解码器作为编码器系统的部分的本地解码循环。
[0417] 在示出的实现中,视频编码系统2900可以包含逻辑电路2950等和/或其组合。例如,逻辑电路2950可以包含图1的编码器系统100和/或图2的解码器系统200,并可以包含相对于本文描述的任何编码器系统或者子系统和/或本文描述的解码器系统或者子系统讨论的任何模块。尽管如图27(A)至(C)所示,视频编码系统2900可以包含关联于特定模块的块或者动作的一个特定组,但这些块或者动作可以关联于不同于本文示出的特定模块的模块。尽管如图所示,处理2700针对编码和解码,但说明的概念和/或操作可以分开应用到编码和/或解码,并更通常地应用到视频编码。
[0418] 处理2700可以在操作2701开始,“接收视频序列的输入视频帧”,其中视频序列的输入视频帧例如可以经由编码器100来接收。
[0419] 处理2700可以在操作2702继续,“将画面类型与一组画面中的每个视频帧关联”,其中画面类型可以例如经由内容预分析器模块102被关联至一组画面中的每个视频帧。例如,画面类型可以是F/B-画面、P-画面、或者I-画面等。在一些示例中,视频序列可以包含画面的群组,并且本文描述的处理(例如操作2703至2711)可以对一组画面的帧或者画面执行;并且处理可以对群组的所有帧或者画面重复,进而,对视频序列中的画面的所有群组重复。
[0420] 处理2700可以在操作2703继续,“将画面划分为图块和/或超片段以及潜在的预测分段”,其中画面可以例如经由预测分区产生器105被划分为图块或者超片段以及潜在的预测分区。
[0421] 处理2700可以在操作2704继续,“对于每个潜在的预测分段,执行预测并确定预测参数”,其中对于每个潜在的预测分段,可以执行预测并可以确定预测参数。例如,可以产生潜在的预测分段的范围(每个具有各种预测分区),并可以确定相关联的预测和预测参数。例如,预测可以包含使用基于特性和运动的多参考预测或者帧内预测的预测。
[0422] 如上所述,在一些示例中,可以执行帧间预测。在一些示例中,高达4个解码的过去和/或将来的画面以及若干变形/合成预测可以被用于产生大量的参考类型(例如参考画面)。例如在“帧间”模式中,可以在P-画面中支持高达9个参考类型,并且对于F/B-画面可以支持高达10个参考类型。此外,“多帧”模式可以提供一种类型的帧间预测模式,其中,不是1个参考画面,可以使用2个参考画面,并且P-和F/B-画面可以分别允许3个、以及高达8个参考类型。例如,预测可以基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧。在这样的示例中,比特流(下文相对于操作2712讨论)可以包含关联于预测分区的帧参考、变形参数、或者合成参数。
[0423] 处理2700可以在操作2705继续,“对于每个潜在的预测分段,确定潜在的预测误差”,其中对于每个潜在的预测分段,可以确定潜在的预测误差。例如,对于每个预测分段(和相关联的预测分区、预测、以及预测参数),可以确定预测误差。例如,确定潜在的预测误差可以包含确定原始像素(例如,预测分区的原始像素数据)与预测像素的差异。在一些示例中,可以存储相关联的预测参数。如上所述,在一些示例中,预测误差数据分区可以包含至少部分基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧,而产生的预测误差数据。
[0424] 处理2700可以在操作2706继续,“选择预测分段和预测类型并保存参数”,其中可以选择预测分段和预测类型,并可以保存相关联的参数。在一些示例中,可以选择具有最小预测误差的潜在的预测分段。在一些示例中,潜在的预测分段可以基于率失真优化(RDO)来选择。
[0425] 处理2700可以在操作2707继续,“对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定的或者内容自适应的转换”,其中可以对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定的或者内容自适应的转换。例如,分区预测误差数据可以被分区来产生多个编码分区。例如,分区预测误差数据可以由本文讨论的编码分区产生器模块107的bi-tree编码分区器模块或者k-d树编码分区器模块进行分区。在一些示例中,关联于F/B-或者P-画面的分区预测误差数据可以由bi-tree编码分区器模块进行分区。在一些示例中,关联于I-画面(例如在一些示例中为图块或者超片段)的视频数据可以由k-d树编码分区器模块进行分区。在一些示例中,可以经由开关来选用或选择编码分区器模块。例如,分区可以由编码分区产生器模块107产生。
[0426] 处理2700可以在操作2708继续,“确定最佳编码分段、转换块尺寸、以及实际转换”,其中可以确定最佳编码分段、转换块尺寸、以及实际转换。例如,(例如具有各种编码分区的)各种编码分段可以基于RDO或者另一个基础来评价,以确定选择的编码分段(其还可以包含当编码分区不匹配转换块尺寸时,进一步将编码分区划分为转换块,如讨论的那样)。例如,实际转换(或者选择的转换)可以包含本文描述的对编码分区或者块尺寸执行的任何内容自适应转换或者固定转换。
[0427] 处理2700可以在操作2709继续,“量化并扫描转换系数”,其中可以量化并扫描关联于编码分区(和/或转换块)的转换系数,准备熵编码。
[0428] 处理2700可以在操作2711继续,“将关联于每个图块或者超片段的数据熵编码”,其中关联于每个图块或者超片段的数据可以被熵编码。例如,关联于每个视频序列的每组的画面的每个画面的每个图块或者超片段的数据可以被熵编码。熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0429] 处理2700可以在操作2712继续,“产生比特流”,其中可以基于熵编码的数据来产生比特流。如上所述,在一些示例中,比特流可以包含关联于预测分区的帧或者画面参考、变形参数、或者合成参数。
[0430] 处理2700可以在操作2713继续,“传输比特流”,其中可以传输比特流。例如,视频编码系统2900可以经由天线2902(请参考图29)来传输输出比特流111、比特流2500等。
[0431] 处理2700可以在操作2720继续,“重建像素数据,组装为画面,并保存在参考画面缓冲器中”,其中可以重建像素数据,组装为画面,并保存在参考画面缓冲器中。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以被组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/或质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0432] 处理2700可以在操作2723继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以被组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/或质量恢复滤波来处理,并被组装来产生画面。
[0433] 处理2700可以在操作2724继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以被保存在参考画面缓冲器中。例如,除了或者替代DD/DB滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0434] 处理2700可以在操作2725继续,“产生修改特性参数”,其中可以产生修改的特性参数。例如,可以至少部分基于第二解码的预测参考画面,产生第二修改的预测参考画面和关联于第二修改的预测参考画面的第二修改特性参数,其中第二修改的参考画面可以是与第一修改的参考画面不同的类型。
[0435] 处理2700可以在操作2726继续,“产生修改的预测参考画面”,其中可以产生修改的预测参考画面,例如,可以至少部分基于第一解码的预测参考画面,产生第一修改的预测参考画面和关联于第一修改的预测参考画面的第一修改特性参数。
[0436] 处理2700可以在操作2727继续,“产生运动数据”,其中可以产生运动估计数据。例如,可以至少部分基于第一修改的预测参考画面或者第二修改的预测参考画面中的一个,产生关联于当前画面的预测分区的运动数据。
[0437] 处理2700可以在操作2728继续,“应用AP/AM滤波器来执行运动补偿”,其中可以执行运动补偿。例如,可以至少部分基于运动数据和第一修改的预测参考画面或者第二修改的预测参考画面中的至少一个来执行运动补偿,以产生用于预测分区的预测分区数据,并且可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。处理2700可以将该信息馈送回操作2704,其中每个解码的预测误差分区(例如包含零预测误差分区)可以被增加至对应的预测分区,以产生重建的预测分区。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0438] 处理2700可以在操作2729继续“可选地应用EP”,其中可以可选地应用增强的预测的分区(例如EP滤波)。在一些示例中,当EP滤波或者FI/FP滤波两者可用时,可以产生指示符,其向解码器系统表明是否使用增强的预测的分区(例如EP滤波)或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0439] 处理2700可以在操作2730继续“可选地应用FI/FP滤波器”,其中可以可选地应用FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并且被发送至熵编码器子系统。
[0440] 操作2701至2740可以提供视频编码和比特流传输技术,其可以由本文讨论的编码器系统采用。下面的操作,操作2754至2768可以提供视频解码和视频显示器技术,其可以由本文讨论的解码器系统采用。
[0441] 处理2700可以在操作2754继续,“接收比特流”,其中可以接收比特流。例如,输入比特流201、比特流2500等可以经由解码器200来接收。在一些示例中,比特流可以包含关联于编码分区、一个或多个的指示符的数据,和/或限定编码分区的数据,如上所述。在一些示例中,比特流可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0442] 处理2700可以在操作2755继续,“解码比特流”,其中可以经由例如自适应熵解码器模块202将接收的比特流解码。例如,接收的比特流可以被熵解码来确定预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0443] 处理2700可以在操作2756继续,“对每个编码分区的每个块执行逆扫描和逆量化”,其中可以对于正被处理的预测分区的每个编码分区的每个块执行逆扫描和逆量化。例如,可以经由自适应逆量化模块203执行逆扫描和逆量化。
[0444] 处理2700可以在操作2757继续,“执行固定的或者内容自适应逆转换来解码转换系数以确定解码的预测误差数据分区”,其中可以执行固定的或者内容自适应逆转换来解码转换系数,以确定解码的预测误差数据分区。例如,逆转换可以包含逆内容自适应转换(诸如混合参数哈尔逆转换,使得混合参数哈尔逆转换可以在参数转换方向的方向包含参数哈尔逆转换,并在与参数转换方向正交的方向包含离散余弦逆转换)。在一些示例中,固定的逆转换可以包含离散余弦逆转换或者离散余弦逆转换近似器。例如,可以经由自适应逆转换模块204执行固定的或者内容自适应转换。如上所述,内容自适应逆转换可以基于其他之前解码的数据(诸如例如解码的相邻分区或者块)。在一些示例中,产生解码的预测误差数据分区可以包含经由编码分区组装器模块205将解码的编码分区组装。
[0445] 处理2700可以在操作2758继续,“对每个预测分区产生预测像素数据”,其中可以对每个预测分区产生预测像素数据。例如,可以使用选择的预测类型(例如基于特性和运动、或者帧内、或者其他类型)和相关联的预测参数来产生预测像素数据。
[0446] 处理2700可以在操作2759继续,“向每个解码的预测误差分区增加对应的预测分区来产生重建的预测分区”,其中每个解码的预测误差分区(例如,包含零预测误差分区)可以被增加至对应的预测分区来产生重建的预测分区。例如,预测分区可以经由图2所示的解码循环来产生,并且经由增加器206被增加至解码的预测误差分区。
[0447] 处理2700可以在操作2760继续,“组装重建的预测分区来产生解码的图块或者超片段”,其中重建的预测分区可以被组装来产生解码的图块或者超片段。例如,预测分区可以经由预测分区组装器模块207来组装,以产生解码的图块或者超片段。
[0448] 处理2700可以在操作2761继续,“应用去块滤波和/或QR滤波来产生最终解码的图块或者超片段”,其中可选的去块滤波和/或质量恢复滤波可以被应用到解码的图块或者超片段,以产生最终解码的图块或者超片段。例如,可以经由去块滤波模块208应用可选的去块滤波和/或可以经由质量恢复滤波模块209应用可选的质量恢复滤波。
[0449] 处理2700可以在操作2762继续,“将解码的图块或者超片段组装来产生解码的视频画面,并保存在参考画面缓冲器中”,其中解码(或者最终解码)的图块或者超片段可以被组装来产生解码的视频画面,并且解码的视频画面可以被保存在参考画面缓冲器(例如解码的画面缓冲器210)中,用于将来的预测。
[0450] 处理2700可以在操作2763继续,“传输解码的视频帧来经由显示器设备呈现”,其中解码的视频帧可以被传输来经由显示器设备呈现。例如,解码的视频画面可以经由自适应画面重新组织器217和内容后恢复器模块218来进一步处理,并作为显示视频219的视频帧被传输至显示器设备来呈现给用户。例如,视频帧可以被传输至显示器设备2905(如图29所示)用来呈现。
[0451] 处理2700可以在操作2773继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在逆扫描、逆转换、以及组装编码分区之后,预测误差数据分区可以增加预测分区,以产生可以被组装为图块或者超片段的重建的预测分区。组装的图块或者超片段可以可选地经由去块滤波来处理。
[0452] 处理2700可以在操作2774继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以被保存在参考画面缓冲器中。例如,除了或者替代DD/DB滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在画面缓冲器中作为用于其他(例如下个)画面的预测的参考画面。
[0453] 处理2700可以在操作2776继续,“产生修改的预测参考画面”,其中可以产生修改的预测参考画面,例如可以至少部分基于第三修改特性参数,产生第三修改的预测参考画面的至少一部分。类似地,可以至少部分基于相关联的第二修改特性参数,产生第四修改的预测参考画面的至少一部分。
[0454] 处理2700可以在操作2777继续,“产生运动数据”,其中可以产生运动估计数据。例如,可以至少部分基于第三修改的预测参考画面或者第三修改的预测参考画面中的一个,产生关联于当前画面的预测分区的运动数据。
[0455] 处理2700可以在操作2778继续,“应用AP/AM滤波器并执行运动补偿”,其中可以执行运动补偿,并且其中可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以至少部分基于运动数据以及第三修改的预测参考画面或者第四修改的预测参考画面中的至少一个来执行运动补偿,以产生用于预测分区的预测分区数据。处理2700可以将该信息馈送回操作2759,其中每个解码的预测误差分区(例如包含零预测误差分区)可以被增加至对应的预测分区,以产生重建的预测分区。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0456] 处理2700可以在操作2779继续“可选地应用EP滤波器”,其中可以可选地应用增强的预测的分区(例如EP滤波)。在一些示例中,当EP滤波或者FI/FP滤波两者可用时,可以从编码器系统接收指示符,其向解码器系统表明是否使用增强的预测的分区(例如EP滤波)或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0457] 处理2700可以在操作2780继续“可选地应用FI/FP滤波器”,其中可以可选地应用FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并且被发送至熵编码器子系统。
[0458] 处理2700可以经由本文讨论的任何编码器系统来实现。此外,可以对视频数据的任何数量的实例(诸如预测误差数据分区、原始数据分区、或者小波数据等)串行或者并行地重复处理2700。
[0459] 图28是示出依据本公开的至少一些实施方式布置的示例编码处理的流程图。处理2800可以包含一个或多个操作、函数或者动作,如由一个或多个操作示出。处理2800可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2800可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0460] 处理2800可以在操作2802开始,来执行空间分析来至少部分基于输入视频数据确定空间复杂性量度以及水平和垂直纹理方向数据。
[0461] 在操作2804,处理2800可以计算连续帧之间的运动估计来确定运动矢量;至少部分基于确定的运动矢量来计算绝对差值的总和和平均帧差异。
[0462] 在操作2806,处理2800可以至少部分基于绝对差值的总和、平均帧差异、确定的运动矢量、空间复杂性测量以及水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及时间索引。
[0463] 在操作2808,处理2800可以至少部分基于输入视频数据,执行增益改变检测来确定增益。
[0464] 在操作2810,处理2800可以至少部分基于增益、空间索引、时间索引、空间复杂性测量、以及水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变。
[0465] 在操作2812,处理2800可以至少部分基于空间索引、时间索引、确定的镜头改变、以及平均帧差异,执行预测距离计算来确定最终p距离,其中,p距离表明要编码的帧之间的距离。
[0466] 在操作2814,处理2800可以至少部分基于最终p距离,计算帧相对于过去帧的最终运动估计来确定最终运动矢量。
[0467] 图29是依据本公开的至少一些实施方式布置的示例视频编码系统2900的示意图。在示出的实施方式中,视频编码系统2900可以包含成像设备2901、视频编码器100、视频解码器200(和/或经由处理单元2920的逻辑电路2950实现的视频编码器)、天线2902、一个或多个处理器2903、一个或多个存储器存储2904和/或显示器设备2905。
[0468] 如图所示,成像设备2901、天线2902、处理单元2920、逻辑电路2950、视频编码器100、视频解码器200、处理器2903、存储器存储2904、和/或显示器设备2905能够彼此通信。
如上所述,尽管示出有视频编码器100和视频解码器200这两者,但在各种示例中视频编码系统2900可以仅包含视频编码器100或者仅包含视频解码器200。
[0469] 如图所示,在一些示例中,视频编码系统2900可以包含天线2902。天线2902可以被配置为传输或接收例如视频数据的编码的比特流。此外,在一些示例中,视频编码系统2900可以包含显示器设备2905。显示器设备2905可以被配置为呈现视频数据。如图所示,在一些示例中,逻辑电路2950可以经由处理单元2920实现。处理单元2920可以包含特定应用集成电路(ASIC)逻辑、图形处理器、通用处理器等。视频编码系统2900还可以包含可选的处理器2903,其可以类似地包含特定应用集成电路(ASIC)逻辑、图形处理器、通用处理器等。在一些示例中,逻辑电路2950可以经由硬件、视频编码专用的硬件等实现,并且处理器2903可以实现通用软件、操作系统等。此外,存储器存储2904可以是任何类型的存储器,诸如易失性存储器(例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或者非易失性存储器(例如闪存存储器等)等。在非限制性示例中,存储器存储2904可以由缓存存储器实现。
在一些示例中,逻辑电路2950可以访问存储器存储2904(例如对于图像缓冲器的实施方式而言)。在其他示例中,逻辑电路2950和/或处理单元2920可以包含存储器存储(例如缓存等),用于图像缓冲器等的实施方式。
[0470] 在一些示例中,经由逻辑电路实现的视频编码器100可以包含图像缓冲器(例如经由处理单元2920或者存储器存储2904))和图形处理单元(例如经由处理单元2920)。图形处理单元可以可通信地耦合至图像缓冲器。图形处理单元可以包含经由逻辑电路2950实现的视频编码器100,以实施相对于图1说明的各种模块和/或本文说明的任何其他编码器系统或者子系统。例如,图形处理单元可以包含编码分区产生器逻辑电路、自适应转换逻辑电路、内容预分析器、编码控制器逻辑电路、自适应熵编码器逻辑电路等。逻辑电路可以被配置为执行本文说明的各种操作。
[0471] 在一些实施方式中,视频编码器可以包含图像缓冲器和图形处理单元。图形处理单元可以被配置为:
[0472] 至少部分基于输入视频数据,执行空间分析来确定空间复杂性量度、以及水平和垂直纹理方向数据;
[0473] 计算连续帧之间的运动估计来确定运动矢量;
[0474] 至少部分基于确定的运动矢量,计算绝对差值的总和和平均帧差异;
[0475] 至少部分基于绝对差值的总和、平均帧差异、确定的运动矢量、空间复杂性测量以及水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及时间索引;
[0476] 至少部分基于输入视频数据,执行增益改变检测来确定增益;
[0477] 至少部分基于增益、空间索引、时间索引、空间复杂性测量、以及水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变;
[0478] 至少部分基于空间索引、时间索引、确定的镜头改变、以及平均帧差异,执行预测距离计算来确定最终p距离,其中,p距离表明要编码的帧之间的距离;以及
[0479] 部分基于最终p距离,计算帧相对于过去帧的最终运动估计来确定最终运动矢量。
[0480] 在一些示例中,图形处理单元还可以被配置为:
[0481] 在一些示例中,图形处理单元还可以被配置为:
[0482] 在执行连续帧之间的运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定估计的运动方向和估计的运动范围在与水平和垂直纹理方向数据相关联的Rs/Cs域中确定;
[0483] 其中,确定运动矢量还包含执行多阶段顺序分层运动估计,包含:
[0484] 至少部分基于估计的运动方向和估计的运动范围,执行多阶段顺序分层运动估计的第一阶段,来以粗糙水平确定初始运动矢量,其中,粗糙水平包含原始画面的尺寸的1/16的水平;
[0485] 执行多阶段顺序分层运动估计的一个或多个中间阶段,至少部分基于初始运动矢量,来以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个中间水平包含原始画面的尺寸的1/4的水平;以及
[0486] 执行多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,精细水平包含原始画面的全尺寸的水平;
[0487] 其中,确定镜头改变还包含多标准确定,包含:
[0488] 确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
[0489] 确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
[0490] 确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
[0491] 确定是否已满足其他的标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和空间时间索引(tscIndex)的关系相关联,以及其中,所有的这些标准必须被确定为已满足,来断定已检测到场景改变;
[0492] 至少部分基于空间索引和时间索引,来执行预测距离计算以确定初始p距离;
[0493] 至少部分基于初始p距离以及确定的镜头改变来执行预测距离计算来确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置到确定的镜头改变帧之前的帧,并将确定的镜头改变帧标记为I-画面,其中,正增益改变检测导致将中间p距离值重置到由初始p距离所表明的前面的帧,其中,执行预测距离计算来确定最终p距离包含:至少部分基于中间p距离以及平均帧差异来确定最终p距离,其中,执行预测距离计算来确定最终p距离包含:至少部分基于与空间索引和时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定最终p距离,并且其中,居间的B-画面帧的数量比最终p距离小一值;
[0494] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs、以及基于16x16块的Rs/Cs阵列;
[0495] 在由具有连续帧的最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定最终估计的运动方向和最终估计的运动范围在与水平和垂直纹理方向数据相关联的Rs/Cs域中确定,其中,确定最终估计的运动方向和最终估计的运动范围至少部分基于缓冲的基于4x4块的Rs/Cs、以及基于16x16块的Rs/Cs阵列在Rs/Cs域中被确定;
[0496] 其中,确定最终运动矢量还包含执行最终多阶段顺序分层运动估计,包含:
[0497] 以半像素分辨率执行多阶段顺序分层运动估计的最终第一阶段,以至少部分基于估计的运动方向和估计的运动范围,来以最终粗糙水平确定最终初始运动矢量,其中,最终粗糙水平包含原始画面的尺寸的1/16的水平;
[0498] 以半像素分辨率执行最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个最终中间水平包含原始画面的尺寸的1/4的水平;以及
[0499] 以1/4像素或者1/8像素分辨率执行多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,精细水平包含原始画面的全尺寸的水平。
[0500] 视频解码器200可以以与经由逻辑电路2950实现类似的方式实现来实施各种模块,如相对于图2所述的解码器200说明的和/或本文说明的任何其他解码器系统或者子系统。
[0501] 在一些示例中,视频编码系统2900的天线2902可以被配置为接收视频数据的编码的比特流。如上所述,编码的比特流可以包含与编码分区相关联的数据(例如转换系数或者量化的转换系数、可选的指示符(如上所述)和/或限定编码分区的数据(例如,与使用符号运行编码或者码书技术等来限定bi-tree分区或者kd树分区相关联的数据))。视频编码系统2900还可以包含耦合至天线2902并配置为将编码的比特流解码的视频解码器200。
[0502] 在一些实施方式中,解码器系统可以包含配置为对编码的比特流解码的视频解码器。
[0503] 在一些实施例中,本文说明的特性可以响应于由一个或多个计算机程序产品提供的指令来承担。这样的程序产品可以包含提供指令的信号承载介质,当例如由处理器执行时,指令可以提供本文说明的功能。计算机程序产品可以设置在任何形式的一个或多个机器可读介质中。因此,例如,包含一个或多个处理器内核的处理器可以响应于通过一个或多个机器可读介质运输给处理器的程序代码和/或指令或者指令集,承担本文说明的一个或多个特征。一般而言,机器可读介质可以以程序代码和/或指令或者指令集的形式运输软件,该软件可以使本文说明的任何设备和/或系统实现本文说明的至少部分特征。
[0504] 图30是依据本公开的至少一些实施方式布置的示例系统3000的示意图。在各种实施方式中,系统3000可以是媒体系统,尽管系统3000不限于该背景。例如,系统3000可以整合到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板计算机、触摸板、便携计算机、手持型计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能手机、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备、照相机(例如任意拍摄照相机、超大变焦照相机、数字单反(DSLR)照相机)等。
[0505] 在各种实施方式中,系统3000包含耦合至显示器3020的平台3002。平台3002可以从内容设备(诸如内容服务设备3030、或者内容输送设备3040、或者其他类似的内容源)接收内容。导航控制器3050包括可以被用于例如与平台3002和/或显示器3020交互的一个或多个导航功能。下文进一步具体说明这些部件中的每个。
[0506] 在各种实施方式中,平台3002可以包含任何组合的芯片组3005、处理器3010、存储器3012、天线3013、存储设备3014、图形子系统3015、应用3016和/或无线电装置3018。芯片组3005可以在处理器3010、存储器3012、存储设备3014、图形子系统3015、应用3016和/或无线电装置3018之间提供互相通信。例如,芯片组3005可以包含能够提供与存储设备3014互相通信的存储适配器(未绘出)。
[0507] 处理器3010可以以复杂指令集计算机(CISC)或者精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核、或者任何其他微处理器或者中央处理单元(CPU)实现。在各种实施方式中,处理器3010可以是双核处理器、双核移动处理器等。
[0508] 存储器3012可以实现为易失性存储器设备,诸如但是不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或者静态RAM(SRAM)。
[0509] 存储设备3014可以实现为非易失性存储设备,诸如但是不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪存存储器、配有电池的SDRAM(同步DRAM)、和/或可访问网络的存储设备。在各种实施方式中,存储设备3014可以具有如下技术:例如当包含多个硬盘驱动器时,对于有价值的数字媒体增加存储性能增强的保护。
[0510] 图形子系统3015可以执行对图像(诸如静止图像或者视频)的处理来用于显示。图形子系统3015例如可以是图形处理单元(GPU)或者视觉处理单元(VPU)。模拟或者数字接口可以被用于将图形子系统3015与显示器3020通信地耦合。例如,接口可以是高清晰度多媒体接口、DisplayPort、无线HDMI、和/或无线HD兼容技术中的任一个。图形子系统3015能够集成到处理器3010或者芯片组3005。在一些实施方式中,图形子系统3015可以是通信地耦合至芯片组3005的独立设备。
[0511] 本文说明的图形和/或视频处理技术可以在各种硬件架构中实现。例如,图形和/或视频功能可以集成在芯片组中。替代地,可以使用独立显卡和/或视频处理器。作为又一个实施方式,图形和/或视频功能可以由包含多核处理器的通用处理器提供。在其他实施例中,该功能可以在消费者电子设备中实现。
[0512] 无线电3018可以包含能够使用各种适当的无线通信技术来传输并接收信号的一个或多个无线电装置。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包含(但是不限于)无线局域网(WLAN)、无线个人区域网络(WPAN)、无线城域网(WMAN)、蜂窝网络、以及卫星网络。在跨这样的网络的通信中,无线电3018可以依据任何版本的一个或多个应用标准来操作。
[0513] 在各种实施方式中,显示器3020可以包含任何电视类监控器或者显示器。显示器3020例如可以包含计算机显示屏、触摸屏显示器、视频监控器、类似电视的设备、和/或电视。显示器3020可以是数字和/或模拟的。在各种实施方式中,显示器3020可以是全息显示器。另外,显示器3020可以是可以接收视觉投影的透明表面。该投影可以传输各种形式的信息、图像和/或对象。例如,该投影可以是用于移动增强现实(MAR)应用程序的视觉叠加。在一个或多个软件应用3016的控制下,平台3002可以在显示器3020上显示用户界面3022。
[0514] 在各种实施方式中,内容服务设备3030可以由任何国内、国际和/或独立服务主持,因此,例如可经由互联网访问平台3002。内容服务设备3030可以耦合至平台3002和/或显示器3020。平台3002和/或内容服务设备3030可以耦合至网络3060来将媒体信息向/从网络3060通信(例如发送和/或接收)。内容输送设备3040还可以耦合至平台3002和/或显示器3020。
[0515] 在各种实施方式中,内容服务设备3030可以包含有线电视盒、个人计算机、网络、电话、具有上网功能的设备、或者能够输送数字信息和/或内容的电器、以及能够经由网络3060或者直接在内容提供商与平台3002和/显示器3020之间单向或者双向对内容进行通信的任何其他类似的设备。应该理解的是内容可以经由网络3060向/从系统3000中的任何一个部件和内容提供商单向和/或双向通信。内容的示例可以包含任何媒体信息,例如包含视频、音乐、医疗和游戏信息等。
[0516] 内容服务设备3030可以接收诸如有线电视节目表的内容,包含媒体信息、数字信息、和/或其他内容。内容提供商的示例可以包含任何有线或者卫星电视、或者无线电、或者互联网内容提供商。提供的示例不意在以任何方式限制依据本公开的实施方式。
[0517] 在各种实施方式中,平台3002可以从具有一个或多个导航功能的导航控制器3050接收控制信号。控制器3050的导航功能例如可以被用于与用户界面3022交互。在各种实施例中,导航控制器3050可以是指点设备,其可以是允许用户向计算机输入空间(例如连续和多维)数据的计算机硬件部件(具体而言为人机界面设备)。诸如图形用户界面(GUI)和电视和监控器的很多系统允许用户使用物理手势控制并提供数据给计算机或者电视。
[0518] 控制器3050的导航功能的移动可以通过指针光标、聚焦环、或者显示在显示器上的其他视觉指示器的移动而被复制在显示器(例如显示器3020)上。在软件应用程序3016的控制下,导航控制器3050中的导航功能例如可以映射至显示在用户界面3022上的虚拟导航功能。在各种实施例中,控制器3050可能不是分离部件,而是可以集成到平台3002和/或显示器3020。然而,本公开不限于本文示出或者说明的元件或者上下文中。
[0519] 在各种实施方式中,驱动器(未示出)可以包括例如当启用时在初始引导之后用触摸按钮能使用户类似电视地立即开启和关掉平台3002的技术。甚至当平台被“关”掉时,程序逻辑也可以允许平台3002将内容流传输至媒体适配器、或者其他内容服务设备3030、或者内容输送设备3040。此外,芯片组3005可以包含例如用于5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件支持。驱动器可以包含用于集成图形平台的图形驱动器。在各种实施例中,图形驱动器可以包括外围部件互连(PCI)Express图形卡。
[0520] 在各种实施方式中,可以将系统3000中示出的任何一个或多个部件集成。例如,可以将平台3002和内容服务设备3030集成,或者可以将平台3002和内容输送设备3040集成,或者例如可以将平台3002、内容服务设备3030、以及内容输送设备3040集成。在各种实施例中,平台3002和显示器3020可以是集成单元。例如可以将显示器3020和内容服务设备3030集成,或者可以将显示器3020和内容输送设备3040集成。这些示例不意在限制本公开。
[0521] 在各种实施例中,系统3000可以实现为无线系统、有线系统、或者两者的组合。当实现为无线系统时,系统3000可以包含适于在无线共享介质(诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等)上通信的部件和接口。无线共享的介质的示例可以包含无线频谱的部分、诸如RF频谱等。当实现为有线系统时,系统3000可以包含适于在有线通信介质(诸如输入/输出(I/O)适配器、将I/O适配器与对应的有线通信介质连接的物理连接件、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等)上通信的部件和接口。有线通信介质的示例可以包含电线、线缆、金属导线、印制电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴线缆、光纤等。
[0522] 平台3002可以建立一个或多个逻辑或者物理信道来对信息进行通信。信息可以包含媒体信息和控制信息。媒体信息可以指代表给用户的内容的任何数据。内容的示例例如可以包含来自声音会话、视频会议、流式视频、电子邮件(“email”)消息、语音信箱消息、字母数字符号、图形、图像、视频、文本等的数据。来自声音会话的数据例如可以是语音信息、静默时段、背景噪声、舒适噪声音调等。控制信息可以指代表给自动化系统的命令、指令或者控制字的任何数据。例如,控制信息可以被用于以预定的方式路由媒体信息通过系统,或者指示节点来处理媒体信息。然而,实施例不限于图30示出或者说明的要素或者上下文。
[0523] 如上所述,系统3000可以以变化的物理格或者形状因子来实施。图31示出在其中可以实施系统3100的小形状因子设备3100的实施方式。例如,在各种实施例中,设备3100可以实现为具有无线能力的移动计算设备。移动计算设备可以指例如具有处理系统和移动电源或者供电(诸如一个或多个电池)的任何设备。
[0524] 如上所述,移动计算设备的示例可以包含个人计算机(PC)、膝上型计算机、超膝上型计算机、平板计算机、触摸板、便携计算机、手持型计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备、照相机(例如任意拍摄照相机、超大变焦照相机、数字单反(DSLR)照相机)等。
[0525] 移动计算设备示例也可以包含被布置为由人穿戴的计算机,诸如腕上计算机、指上计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、内计算机、衣服计算机、以及其他可穿戴计算机。在各种实施例中,例如移动计算设备可以实现为能够执行计算机应用以及声音通信和/或数据通信的智能手机。尽管一些实施例以示例的方式可以说明为具有实现为智能手机的移动计算设备,但可以理解的是也可以使用其他无线移动计算设备来实现其他实施例。实施例不限于这个上下文。
[0526] 如图31所示,设备3100可以包含外壳3102、显示器3104(其可以包含用户接口3110)、输入/输出(I/O)设备3106、以及天线3108。设备3100还可以包含导航特征3112。显示器3104可以包含任何适当的显示器单元,以显示对移动计算设备适当的信息。I/O设备3106可以包含用于向移动计算设备输入信息的任何适当的I/O设备。用于I/O设备3106的示例可以包含字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、声音识别设备和软件等。信息还可以通过麦克风(未示出)的方式被输入至设备3100。这样的信息可以由声音识别设备(未示出)数字化。实施例不限于这个上下文。
[0527] 本文的示例处理的实施方式可以包含以示出的顺序承担示出的所有操作,但本公开不限于此,在各种示例中,本文的示例处理的实施方式可以包含仅承担示出的操作的子集和/或以不同于示出的顺序。
[0528] 此外,本文说明的任何一个或多个操作可以响应于由一个或多个计算机程序产品提供的指令而被承担。这样的程序产品可以包含提供指令的信号承载介质,当例如由处理器执行时,指令可以提供本文说明的功能。计算机程序产品可以设置在任何形式的一个或多个机器可读介质中。因此,例如,包含一个或多个处理器内核的处理器可以响应于通过一个或多个机器可读介质运输给处理器的程序代码和/或指令或者指令集,承担本文的示例处理的一个或多个操作。一般而言,机器可读介质可以以程序代码和/或指令或者指令集的形式运输软件,该软件可以使本文说明的任何设备和/或系统实现本文说明的视频系统的至少部分。
[0529] 如用于本文说明的任何实施方式,术语“模块”是指配置为提供本文说明的功能的软件逻辑、固件逻辑和/或硬件逻辑的任何组合。软件可以实施为软件包、代码和/或指令集或者指令;并且如用于本文说明的任何实施方式的“硬件”例如可以包含单独或者以任何组合的硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件。模块可以共同或者单独实施为形成更大系统的部分的电路,例如集成电路(IC)、片上系统(SoC)等。例如,模块可以在逻辑电路中实施,用于经由本文说明的编码系统的软件、固件、或者硬件实施。
[0530] 各种实施例可以使用硬件元素、软件元素、或者两者的组合来实现。硬件元素的示例可以包含处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、特定应用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件的示例可以包含软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件中间件、固件、软件模块、例程、子程序、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或者其任何组合。确定是否使用硬件元素和/或软件元素实现了实施例可以依据任何数量的要素变化,诸如期望的计算速度、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或者性能约束。
[0531] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,该代表性指令代表处理器内的各种逻辑,当由机器读出时,使机器生成执行本文说明的技术的逻辑。该代表被称为“IP核心”,可以被存储在有形机器可读介质中,并供应至各种客户或者制造设施,以载入到实际上生成逻辑或者处理器的生成机器中。
[0532] 虽然已参考各种实施方式说明了本文记载的某些特征,但该说明不意图从限制意义上解释。因此,本公开所涉及的领域的技术人员容易想到的、本文说明的实施方式的各种修改以及其他实施方式被视为落入本公开的精神和范围内。
[0533] 下面的示例涉及其他实施例。
[0534] 在一个示例中,一种计算机实现的用于计算先前帧相对于正对其执行用于视频编码的运动估计和补偿的当前帧的预测距离的方法,所述方法可以包含操作来:
[0535] 至少部分基于输入视频数据来执行空间分析,以确定空间复杂性量度以及水平和垂直纹理方向数据;
[0536] 计算连续帧之间的运动估计来确定运动矢量;
[0537] 至少部分基于确定的运动矢量来计算绝对差值的总和和平均帧差异;
[0538] 至少部分基于所述绝对差值的总和、所述平均帧差异、所确定的运动矢量、所述空间复杂性测量以及所述水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及时间索引;
[0539] 至少部分基于所述输入视频数据,执行增益改变检测来确定增益;
[0540] 至少部分基于所述增益、所述空间索引、所述时间索引、所述空间复杂性测量以及所述水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变;
[0541] 至少部分基于所述空间索引、所述时间索引、所确定的镜头改变、以及所述平均帧差异,执行预测距离计算来确定最终p距离,其中,所述p距离表明要编码的帧之间的距离;以及
[0542] 至少部分基于所述最终p距离,计算帧相对于过去帧的最终运动估计来确定最终运动矢量。
[0543] 在一些示例中,方法还可以包含:
[0544] 在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的。
[0545] 在一些示例中,方法还可以包含:其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0546] 执行所述多阶段顺序分层运动估计的第一阶段,来以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0547] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0548] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0549] 在一些示例中,方法还可以包含:在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0550] 其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0551] 执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0552] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0553] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0554] 在一些示例中,方法还可以包含:其中,确定所述镜头改变还包括多标准确定,包括:
[0555] 确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
[0556] 确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
[0557] 确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
[0558] 确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,
[0559] 其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变。
[0560] 在一些示例中,方法还可以包含:至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;以及
[0561] 至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,
[0562] 其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于所述中间p距离以及所述平均帧差异来确定所述最终p距离,
[0563] 其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,
[0564] 其中,居间的B-画面帧的数量比所述最终p距离少一值。
[0565] 在一些示例中,方法还可以包含:其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0566] 执行所述最终多阶段顺序分层运动估计的最终第一阶段,来以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0567] 执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及[0568] 执行所述最终多阶段顺序分层运动估计的最终最终阶段,以至少部分基于所述一个或多个最终中间运动矢量,以最终精细水平确定最终最终运动矢量,其中,所述最终精细水平包括所述原始画面的全尺寸的水平。
[0569] 在一些示例中,方法还可以包含:在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析,来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0570] 其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0571] 执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0572] 执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及[0573] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0574] 在一些示例中,方法还可以包含:
[0575] 其中,确定所述最终运动矢量还包括:
[0576] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素、1/4像素或者1/8像素分辨率计算运动矢量。
[0577] 在一些示例中,方法还可以包含:
[0578] 其中,确定所述最终运动矢量还包括:
[0579] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以1/4像素精度计算最终阶段运动矢量。
[0580] 在一些示例中,方法还可以包含:其中,确定所述最终运动矢量还包括:
[0581] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以1/8像素精度计算最终阶段运动矢量。
[0582] 在一些示例中,方法还可以包含:
[0583] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,
[0584] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定所述高精度运动矢量包括以1/2像素分辨率、1/4像素分辨率、或者1/8像素分辨率计算运动矢量。
[0585] 在一些示例中,方法还可以包含:
[0586] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0587] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0588] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0589] 至少部分基于所述最终估计的运动范围和最终p距离值来计算第一阶段运动矢量;
[0590] 至少部分基于所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算第二阶段运动矢量;以及
[0591] 至少部分基于所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0592] 在一些示例中,方法还可以包含:
[0593] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0594] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0595] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0596] 至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
[0597] 至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
[0598] 至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/4像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0599] 在一些示例中,方法还可以包含:对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0600] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0601] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0602] 至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
[0603] 至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
[0604] 至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/8像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0605] 在一些示例中,方法还可以包含:在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0606] 其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0607] 执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0608] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0609] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平;
[0610] 其中,确定所述镜头改变还包括多标准确定,包括:
[0611] 确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
[0612] 确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
[0613] 确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
[0614] 确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,并且其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变;
[0615] 至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
[0616] 至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于所述中间p距离以及平均帧差异来确定所述最终p距离,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,并且其中,居间的B-画面帧的数量比所述最终p距离少一值。
[0617] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0618] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0619] 其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0620] 以半像素分辨率执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0621] 以半像素分辨率执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0622] 以1/4像素或者1/8像素分辨率执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0623] 在另一个示例实施方式中,视频可以包含图像缓冲器和图形处理单元。图形处理单元可以被配置为:
[0624] 至少部分基于输入视频数据来执行空间分析,以确定空间复杂性量度以及水平和垂直纹理方向数据;
[0625] 计算连续帧之间的运动估计来确定运动矢量;至少部分基于确定的运动矢量来计算绝对差值的总和和平均帧差异;
[0626] 至少部分基于所述绝对差值的总和、所述平均帧差异、所确定的运动矢量、所述空间复杂性测量以及所述水平和垂直纹理方向数据,计算时间空间活动来确定空间索引以及时间索引;
[0627] 至少部分基于所述输入视频数据,执行增益改变检测来确定增益;
[0628] 至少部分基于所述增益、所述空间索引、所述时间索引、所述空间复杂性测量以及所述水平和垂直纹理方向数据,执行镜头改变检测来确定镜头改变;
[0629] 至少部分基于所述空间索引、所述时间索引、所确定的镜头改变、以及所述平均帧差异,执行预测距离计算来确定最终p距离,其中,所述p距离表明要编码的帧之间的距离;以及
[0630] 至少部分基于所述最终p距离,计算帧相对于过去帧的最终运动估计来确定最终运动矢量。
[0631] 在一些示例中,图形处理单元还可以被配置为:
[0632] 在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的。
[0633] 在一些示例中,图形处理单元还可以被配置为:
[0634] 其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0635] 执行所述多阶段顺序分层运动估计的第一阶段,来以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0636] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0637] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0638] 在一些示例中,图形处理单元还可以被配置为:
[0639] 在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0640] 其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0641] 执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0642] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0643] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0644] 在一些示例中,图形处理单元还可以被配置为:
[0645] 其中,确定所述镜头改变还包括多标准确定,包括:
[0646] 确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
[0647] 确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
[0648] 确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
[0649] 确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,
[0650] 其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变。
[0651] 在一些示例中,图形处理单元还可以被配置为:
[0652] 至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;以及
[0653] 至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,
[0654] 其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于所述中间p距离以及所述平均帧差异来确定所述最终p距离,
[0655] 其中,执行所述预测距离计算以确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,
[0656] 其中,居间的B-画面帧的数量比所述最终p距离少一值。
[0657] 在一些示例中,图形处理单元还可以被配置为:
[0658] 其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0659] 执行所述最终多阶段顺序分层运动估计的最终第一阶段,来以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0660] 执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及[0661] 执行所述最终多阶段顺序分层运动估计的最终最终阶段,以至少部分基于所述一个或多个最终中间运动矢量,以最终精细水平确定最终最终运动矢量,其中,所述最终精细水平包括所述原始画面的全尺寸的水平。
[0662] 在一些示例中,图形处理单元还可以被配置为:
[0663] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析,来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0664] 其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0665] 执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0666] 执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及[0667] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0668] 在一些示例中,图形处理单元还可以被配置为:
[0669] 其中,确定所述最终运动矢量还包括:
[0670] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素、1/4像素或者1/8像素分辨率计算运动矢量。
[0671] 在一些示例中,图形处理单元还可以被配置为:
[0672] 其中,确定所述最终运动矢量还包括:
[0673] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以1/4像素精度计算最终阶段运动矢量。
[0674] 在一些示例中,图形处理单元还可以被配置为:
[0675] 其中,确定所述最终运动矢量还包括:
[0676] 执行最终多阶段运动估计来确定高精度最终运动矢量,其中,确定高精度运动矢量包括以1/2像素精度计算第一阶段运动矢量,以1/2像素精度计算第二阶段运动矢量,以及以1/8像素精度计算最终阶段运动矢量。
[0677] 在一些示例中,图形处理单元还可以被配置为:
[0678] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,
[0679] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定所述高精度运动矢量包括以1/2像素分辨率、1/4像素分辨率、或者1/8像素分辨率计算运动矢量。
[0680] 在一些示例中,图形处理单元还可以被配置为:
[0681] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0682] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0683] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0684] 至少部分基于所述最终估计的运动范围和最终p距离值来计算第一阶段运动矢量;
[0685] 至少部分基于所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算第二阶段运动矢量;以及
[0686] 至少部分基于所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值来计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0687] 在一些示例中,图形处理单元还可以被配置为:
[0688] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0689] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0690] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0691] 至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
[0692] 至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
[0693] 至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/4像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0694] 在一些示例中,图形处理单元还可以被配置为:
[0695] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0696] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0697] 其中,确定所述最终运动矢量还包括:执行最终多阶段分层运动估计(HME)来确定高精度最终运动矢量,其中,确定高精度运动矢量包括:
[0698] 至少部分基于所述最终估计的运动范围和最终p距离值来以半像素分辨率计算第一阶段运动矢量;
[0699] 至少部分基于半像素分辨率的所述第一阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以半像素分辨率计算第二阶段运动矢量;以及
[0700] 至少部分基于半像素分辨率的所述第二阶段运动矢量、所述最终估计的运动范围、以及所述最终p距离值,以1/8像素分辨率计算最终阶段运动矢量,来以1/2像素、1/4像素或者1/8像素分辨率产生所述高精度最终运动矢量。
[0701] 在一些示例中,图形处理单元还可以被配置为:
[0702] 在执行连续帧之间的所述运动估计之前,执行估计的运动范围分析来确定估计的运动方向和估计的运动范围,其中,确定所述估计的运动方向和估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的;
[0703] 其中,确定所述运动矢量还包括执行多阶段顺序分层运动估计,包括:
[0704] 执行所述多阶段顺序分层运动估计的第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以粗糙水平确定初始运动矢量,其中,所述粗糙水平包括原始画面的尺寸的1/16的水平;
[0705] 执行所述多阶段顺序分层运动估计的一个或多个中间阶段,以至少部分基于所述初始运动矢量,以一个或多个中间水平确定一个或多个中间运动矢量,其中,至少一个所述中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0706] 执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平;
[0707] 其中,确定所述镜头改变还包括多标准确定,包括:
[0708] 确定是否已满足一个标准,该标准与当前和先前帧运动矢量差异值之间的差异(diffMVdiffVal)相比于空间时间索引(tscIndex)的关系相关联;
[0709] 确定是否已满足另一个标准,该标准与空间时间索引(tscIndex)相比于平均帧差异差分(AFDdiff)之间的差异值的关系相关联;
[0710] 确定是否已满足又一个标准,该标准与空间复杂性量度(SC)相比于当前与先前帧之间的RsCs差异之间的差异值的关系相关联;以及
[0711] 确定是否已满足再一个标准,该标准与当前SC和当前平均帧差异(AFD)相比于SC索引和所述空间时间索引(tscIndex)的关系相关联,并且其中,所有的这些标准必须被确定为已被满足来断定已检测到场景改变;
[0712] 至少部分基于所述空间索引和所述时间索引,来执行预测距离计算以确定初始p距离;
[0713] 至少部分基于所述初始p距离以及所确定的镜头改变来执行预测距离计算以确定中间p距离,其中,正的镜头改变检测导致将中间p距离值重置为所确定的镜头改变帧之前的帧,并将所确定的镜头改变帧标记为I-画面,其中,正的增益改变检测导致将所述中间p距离值重置为由所述初始p距离所表明的前面的帧,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于所述中间p距离以及平均帧差异来确定所述最终p距离,其中,执行所述预测距离计算来确定所述最终p距离包含:至少部分基于与所述空间索引和所述时间索引相关联的空间复杂性量度和时间空间量度的查找表来确定所述最终p距离,并且其中,居间的B-画面帧的数量比所述最终p距离少一值。
[0714] 对于来自p距离计算器模块的帧,缓冲基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列;
[0715] 在由具有连续帧的所述最终p距离分开的帧之间或者在具有更高距离的帧之间执行最终运动估计之前,执行最终估计的运动范围分析来确定最终估计的运动方向和最终估计的运动范围,其中,确定所述最终估计的运动方向和最终估计的运动范围是在与所述水平和垂直纹理方向数据相关联的Rs/Cs域中确定的,其中,确定所述最终估计的运动方向和最终估计的运动范围是至少部分基于所缓冲的基于4x4块的Rs/Cs和基于16x16块的Rs/Cs阵列,在所述Rs/Cs域中确定的;
[0716] 其中,确定所述最终运动矢量还包括执行最终多阶段顺序分层运动估计,包括:
[0717] 以半像素分辨率执行所述多阶段顺序分层运动估计的最终第一阶段,以至少部分基于所述估计的运动方向和所述估计的运动范围,以最终粗糙水平确定最终初始运动矢量,其中,所述最终粗糙水平包括原始画面的尺寸的1/16的水平;
[0718] 以半像素分辨率执行所述最终多阶段顺序分层运动估计的一个或多个最终中间阶段,以至少部分基于所述最终初始运动矢量,以一个或多个最终中间水平确定一个或多个最终中间运动矢量,其中,至少一个所述最终中间水平包括所述原始画面的尺寸的1/4的水平;以及
[0719] 以1/4像素或者1/8像素分辨率执行所述多阶段顺序分层运动估计的最终阶段,以至少部分基于所述一个或多个中间运动矢量,以精细水平确定最终运动矢量,其中,所述精细水平包括所述原始画面的全尺寸的水平。
[0720] 在其他示例中,至少一种机器可读介质可以包含多个指令,所述指令响应于在计算设备上被执行,使所述计算设备执行根据上述示例中的任何一个所述的方法
[0721] 在其他示例中,装置可以包含用于根据上述示例中的任何一个执行所述的方法的单元。
[0722] 上述示例可以包含特征的特定组合。然而,这样的上述示例不限于此,在各种实施方式中,上述示例可以包含:仅承担这样的特征的子集,承担不同顺序的这样的特征,承担这样的特征的不同组合,和/或承担明确列出的那些特征额外的特征。例如,相对于示例方法说明的所有特征可以相对于示例装置、示例系统、和/或示例物品来实现,并且反之亦然。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈