用于视频编码中基于直方图的加权预测的系统和方法与流程

文档序号:31662215发布日期:2022-09-27 23:17阅读:27来源:国知局
用于视频编码中基于直方图的加权预测的系统和方法与流程
用于视频编码中基于直方图的加权预测的系统和方法
1.相关申请的交叉引用
2.本技术要求于2021年3月22日提交的第63/163,952号美国临时申请以及于2021年12月21日提交的第17/558,276号美国非临时专利申请的权益,这两个申请的公开内容通过此引用以其整体被并入。
3.附图简述
4.附图示出了许多示例性实施例并且是说明书的一部分。与以下描述一起,这些附图展示和解释了本公开的各种原理。
5.图1是用于视频编码中基于直方图的加权预测的示例系统的框图。
6.图2是用于视频编码中基于直方图的加权预测的系统的示例实施方式的框图。
7.图3是用于视频编码中基于直方图的加权预测的示例方法的流程图。
8.图4是根据本文描述的一些示例的参考直方图和平滑参考直方图的视图。
9.图5是根据本文描述的一些示例的当前直方图和平滑当前直方图的视图。
10.图6是根据本文描述的一些示例的操作流程图。
11.在整个附图中,相同的附图标记和描述表示相似但不一定相同的元件。尽管本文描述的示例性实施例易于进行各种修改和易于被各种替代形式替代,但特定实施例已在附图中以示例的方式示出并且将在本文中详细描述。然而,本文描述的示例性实施例不旨在局限于所公开的特定形式。相反,本公开涵盖落入所附权利要求的范围内的所有修改、等效物和替代物。
12.示例性实施例的详细描述
13.各种平台、服务和软件可以实现和/或采用视频编码解决方案来将具有一组编码参数(例如,分辨率、位深度、帧速率、质量等)的视频文件和/或流转码为具有另一组编码参数的另一个视频文件和/或流。一些视频编码解决方案可能会通过识别或预测具有亮度变化(诸如渐变(fade)或光照变化)的视频场景来寻求提高编码效率。不幸的是,识别或预测具有亮度变化的场景的传统方法可能不准确地识别或预测这样的场景。此外,一些传统方法可能采用计算复杂的方法,这些方法可能无法很好地扩展到更高的分辨率和/或比特率。因此,本技术识别并解决了对用于识别和/或预测视频流中的亮度变化的附加系统和方法的需要。
14.本公开总体上针对用于视频编码中基于直方图的加权预测的系统和方法。如下文将更详细解释的,本公开的实施例可以从视频流中选择参考帧(reference frame)和当前帧。在一些示例中,本文描述的一个或更多个系统可以在视频流的编码的运动估计部分期间选择参考帧和当前帧。
15.实施例还可以收集参考帧的参考直方图和当前帧的当前直方图,并且在一些示例中,可以将确定的权重和/或偏移值应用于参考直方图。该实施例还可以通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图。该实施例还可以确定平滑参考直方图和当前直方图之间的相似性度量。在一些示例中,确定该相似性度量可以包括确定平滑参考直方图和当前直方图之间的相关系数(例如,皮尔逊(pearson)相关性)。
16.此外,在一些实施例中,当确定的相似性度量大于阈值时,本文描述的系统和方法可以在视频流的编码的运动估计部分期间应用加权预测。
17.与传统的视频编码系统和/或方法相比,本文描述的系统和方法可以具有许多好处。传统的视频编码系统可能难以有效地对视频文件或流中包括淡出到黑色(fade-out-to-black)部分或从黑色淡入(fade-in-from-black)部分的部分进行编码,因为这些部分可能导致传统的视频编码系统生成、计算或观察到高的运动估计和/或预测误差。为了减轻这种困难中的一些,一些视频编码标准(例如,h.264、h.265等)可以包括用于在视频流的编码的运动估计部分期间进行加权预测的工具。传统的加权预测技术可以使用应用于运动补偿预测的乘法加权因子和加法偏移,来提高这样的场景(例如,渐变)期间的编码效率。
18.然而,传统的加权/偏移方法可能指示“误报”,因为它们可能错误地指示在两个帧之间发生全局亮度/光照变化,而在这两个帧之间实际上没有发生全局亮度/光照变化。本文描述的系统和方法可以排除这样的误报,从而提高视频编码效率和/或质量。此外,传统的加权/偏移方法可能涉及n次乘法(其中n可能是帧中的像素数量)和/或对整个帧计算绝对差。本文描述的系统和方法可以省略或限制这样的操作,并因此可以比传统的加权/偏移方法明显更高效(例如,计算上高效、能量高效、时间上高效等)。
19.作为说明,在h.264视频编码过程中,可以在编码过程的运动估计部分中对参考图片(例如,帧、切片(slice)、图片组等)应用恒定的权重因子和偏移。当编码具有亮度变化的视频场景时,显式加权预测可能是有效的。在此示例中,权重/偏移对可以被包括作为每个yuv分量的切片头(header)的一部分。理论上,权重/偏移可以根据下式基于当前帧和参考帧之间的能量变化推导出来:
[0020][0021]
其中,p是参考帧,i是当前帧,mean(x)是一帧的平均值,σ(x)是一帧的方差,w是权重,以及o是偏移。
[0022]
然而,非默认的权重/偏移值(例如,w不是1或o不是0)通常是误报,因为两个帧之间可能没有全局亮度/光照变化。h.264标准的一些实施方式(例如,开源的x264编解码器)可以使用实际的运动补偿循环来排除这些误报并改进权重/偏移。实际的运动补偿循环可以计算整个帧上的实际成本[w-1,w+1]
×
[o-1,o+1],并将其与(w=1,o=0)进行比较。具有最小成本c的权重/偏移根据下式保持:
[0023]
c(w,o)=∑|x
i-w*x
p-o|
ꢀꢀꢀ
(2)其中,总和可以表示整个帧上所有像素的求和。这可能涉及n次乘法(其中n可能是帧中的像素数量)和/或对帧中的所有像素计算绝对差。因此,诸如本文所述的轻量级的基于直方图的方法可以比此示例中描述的权重/偏移方法明显更高效。
[0024]
下面将参考图1至图2以及图4至图6提供用于视频编码中基于直方图的加权预测的系统的详细描述。也将结合图3提供对应的计算机实现的方法的详细描述。
[0025]
图1是用于视频编码中基于直方图的加权预测的示例系统100的框图。如该图中所示,示例系统100可以包括用于执行一个或更多个任务的一个或更多个模块102。如下文将
更详细解释的,模块102可以包括选择模块104,该选择模块104从视频流(例如,视频流142)中选择参考帧和当前帧。示例系统100还可以包括收集模块106和生成模块108,收集模块106可以收集参考帧的参考直方图和当前帧的当前直方图,生成模块108可以通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图。
[0026]
在一些实施例中,示例系统100还可以包括确定模块110,该确定模块110可以确定平滑参考直方图和当前直方图之间的相似性度量。另外,示例系统100还可以包括应用模块112,当确定的相似性度量大于阈值时,应用模块112可以在视频流的编码的运动估计部分期间应用加权预测。
[0027]
如图1进一步所示,示例系统100还可以包括一个或更多个存储器设备,诸如存储器120。存储器120通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器120可以存储、加载和/或维护一个或更多个模块102。存储器120的示例包括但不限于随机存取存储器(ram)、只读存储器(rom)、闪存、硬盘驱动器(hdd)、固态驱动器(ssd)、光盘驱动器、高速缓存、这些中的一个或更多个的变体或组合、或任何其他合适的存储存储器。
[0028]
如图1进一步所示,示例系统100还可以包括一个或更多个物理处理器,诸如物理处理器130。物理处理器130通常表示能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器130可以访问和/或修改存储在存储器120中的一个或更多个模块102。附加地或替代地,物理处理器130可以执行一个或更多个模块102以促进视频编码中基于直方图的加权预测。物理处理器130的示例包括但不限于微处理器、微控制器、中央处理单元(cpu)、实现软核处理器的现场可编程门阵列(fpga)、专用集成电路(asic)、这些中的一个或更多个的部分、这些中的一个或更多个的变体或组合、或任何其他合适的物理处理器。
[0029]
也如图1所示,示例系统100还可以包括可以接收、存储和/或维护数据的一个或更多个数据储存器,例如数据储存器140。数据储存器140可以表示以下的部分:单个数据储存器或单个计算设备或多个数据储存器或多个计算设备。在一些实施例中,数据储存器140可以是数据的逻辑容器并且可以以各种形式(例如,数据库、文件、文件系统、数据结构等)来实现。数据储存器140的示例可以包括但不限于文件、文件系统、数据储存器、数据库和/或数据库管理系统(诸如操作型数据存储(ods)、关系数据库、no sql数据库、newsql数据库、和/或任何其他合适的有组织的数据集合)。
[0030]
在至少一个示例中,数据储存器140可以包括(例如,存储、托管、访问、维护等)视频流142和/或阈值144。如下文将更详细解释的,在一些示例中,视频流142可以包括和/或表示任何视频文件和/或视频流。在一些示例中,视频流142可以包括、表示和/或构成视频对象,诸如一个或更多个帧、像素、切片、图片组(gop)、镜头(shot)、场景等。在一些示例中,视频流142可以通过编码操作被编码和/或通过解码操作被解码。此外,视频流142可以通过转码操作(例如,编码和解码操作的组合)被转码。附加地或替代地,视频流142可以包括任何合适的元数据。此外,被包括在视频流142内的一个或更多个视频对象可以具有任何合适的属性或特征,诸如分辨率、比特率、编码/解码标准(例如,编解码器)等。此外,在一些示例中,阈值144可以包括或表示可以描述一个直方图与另一个直方图的相似度的度量的任何合适的阈值。
[0031]
图1中的示例系统100可以以多种方式实现。例如,示例系统100的全部或部分可以表示图2中的示例系统200(“系统200”)的部分。如图2所示,示例系统200可以包括计算设备202。在至少一个示例中,计算设备202可以被编程有一个或更多个模块102。
[0032]
在至少一个实施例中,来自图1的一个或更多个模块102在由计算设备202执行时可以使计算设备202能够执行用于视频编码中基于直方图的加权预测的一个或更多个操作。例如,如下文将更详细描述的,选择模块104可以使计算设备202从视频流(例如,142)中选择参考帧(例如,参考帧204)和当前帧(例如,当前帧206)。另外,收集模块106可以使计算设备202收集参考帧的参考直方图(例如,参考直方图208)和当前帧的当前直方图(例如,当前直方图210)。此外,生成模块108可以使计算设备202通过将平滑函数(例如,平滑函数214)应用于参考直方图的至少一部分来生成平滑参考直方图(例如,平滑参考直方图212)。
[0033]
在一些示例中,确定平滑参考直方图和当前直方图之间的相似性度量(例如,相似性度量216)。当确定的相似性度量大于阈值(例如,阈值144)时,在视频流的编码(例如,编码222)的运动估计(例如,运动估计220)部分期间应用加权预测(例如,加权预测218)。
[0034]
计算设备202通常表示能够读取和/或执行计算机可执行指令和/或托管可执行文件的任何类型或形式的计算设备。计算设备202的示例可以包括但不限于应用服务器、存储服务器、数据库服务器、web服务器和/或被配置为运行某些软件应用和/或提供各种应用、存储和/或数据库服务的任何其他合适的计算设备。
[0035]
在至少一个示例中,计算设备202可以是编程有一个或更多个模块102的计算设备。模块102的全部或部分功能可以由计算设备202和/或任何其他合适的计算系统来执行。如将在下文更详细描述的,当由计算设备202的至少一个处理器执行时,来自图1的一个或更多个模块102可以使计算设备202能够在视频编码中执行基于直方图的加权预测。
[0036]
许多其他设备或子系统可以连接到图1中的示例系统100和/或图2中的示例系统200。相反,图1和图2中所示的所有部件和设备不需要为了实践本文描述和/或示出的实施例而被呈现。上面提到的设备和子系统也可以以不同于图2所示的方式互连。示例系统100和200还可以采用任意数量的软件、固件和/或硬件配置。例如,本文公开的一个或更多个示例实施例可以被编码为计算机可读介质上的计算机程序(也被称为计算机软件、软件应用、计算机可读指令和/或计算机控制逻辑)。
[0037]
图3是用于在多租户环境中分配共享资源的示例计算机实现的方法300的流程图。图3所示的步骤可以由任何合适的计算机可执行代码和/或计算系统执行,所述计算机可执行代码和/或计算系统包括图1中的示例系统100、图2中的示例系统200和/或这些中的一个或更多个的变体或组合。在一个示例中,图3中所示的步骤中的每一个都可以表示其结构包括多个子步骤和/或由多个子步骤表示的算法,其示例将在下文更详细地提供。
[0038]
如图3所示,在步骤310,本文描述的一个或更多个系统可以从视频流中选择参考帧和当前帧。例如,作为计算设备202的一部分,选择模块104可以使计算设备202从视频流142中选择参考帧204和当前帧206。
[0039]
请注意,本文使用的术语“参考”和“当前”通常旨在将一个项目(例如,帧、直方图、平滑直方图等)与另一个项目区分开来,而在本文中不表达、建议或暗示项目之间的任何特定的时间、物理、逻辑或其他关系,除非另有明确说明。作为说明,术语“参考帧”和“当前帧”可以指视频流内的任何不同的帧、切片、图片等(或者在一些示例中,指相同的帧、切片、图
片等)。除非明确说明,否则诸如“参考帧可以在当前帧之前”、“当前帧可以在参考帧之前”、“参考帧可以在当前帧之后”等的术语(包括附图内的这样的视觉描述)仅出于说明性目的被包括,而并不旨在将本公开的范围限制到参考帧和当前帧之间的任何特定的时间、物理、逻辑或其他关系。
[0040]
选择模块104可以以任何合适的方式从视频流142中选择参考帧204和当前帧206。例如,选择模块104可以在视频流142的编码的运动估计部分期间选择参考帧204和当前帧206。例如,计算设备202可以执行编码操作以根据包括运动估计部分或特征的编码标准(诸如h.264、h.265等)对视频流142进行编码。选择模块104可以使计算设备202在编码操作的运动估计部分期间从视频流142中选择参考帧204和当前帧206。
[0041]
返回图3,在步骤320,本文描述的一个或更多个系统可以收集参考帧的参考直方图和当前帧的当前直方图。例如,作为计算设备202的一部分,收集模块106可以使计算设备202收集参考帧204的参考直方图208和当前帧206的当前直方图210。
[0042]
在一些示例中,直方图可以通过将值的范围划分为一系列区间并且然后通过对有多少个值落入每个区间内进行计数,来表示或近似任何数据分布。图表(例如,折线图、条形图等)可以是表示直方图的一种方式。表示直方图的另一种方式可以是通过对密度函数进行制图或绘图,该密度函数表示拟合直方图中包含的数据的平滑曲线。下面参考图4和图5提供直方图和/或平滑直方图的示例。
[0043]
在更一般的数学意义上,直方图可以是函数mi,它对落入一组不相交类别(称为分格(bin))中的每一个类别的观察的数量进行计数。因此,如果我们让n为观察的总数,并让k为分格的总数,则直方图mi可以满足以下条件:
[0044][0045]
数字图像或数字视频流的帧的直方图可以显示被包括在图像或帧中的一组像素的属性(诸如对比度、亮度、颜色信息、色调等)的值的分布。图像或帧的绘制直方图的水平轴可以表示属性值(例如,分格),而垂直轴可以表示具有特定属性值的像素的总数。在一些示例中,颜色直方图可以表示图像或帧中的颜色分布,诸如图像或帧中具有在固定的颜色范围列表中的每个颜色范围中的颜色的像素的数量。
[0046]
一般来说,颜色直方图可以基于某个颜色空间,诸如rgb、hsv、yuv等。当我们计算图像中不同颜色的像素时,如果颜色空间很大,那么可以将颜色空间划分为一定数量的小区间,其中每个区间可以被称为分格。这个过程可以称为颜色量化。可以通过对在每个分格中的像素的数量进行计数来收集颜色直方图。
[0047]
收集模块106可以收集各种上下文中的参考直方图208和当前直方图210。用最简单的术语来说,收集模块106可以针对在每帧的通道集合中的每个通道中的多个条目或尺度(scale)(例如,256个条目或尺度)中的每一个,对像素的数量进行计数。例如,参考帧204可以具有三个通道(例如,红色通道、绿色通道和蓝色通道)。收集模块106可以收集参考帧204中每个像素的像素值,将像素划分到对应的256个分格中的每个分格中,并累加每个分格中的像素数量。请注意,虽然上面的示例涉及红色、绿色和蓝色像素值,但相同的原理可以应用于在任何合适的颜色空间(例如,yuv、ypbpr、ycbcr等)内的图像或帧。附加地或替代
地,在一些示例中,直方图可以反映帧内像素的亮度值。因此,在一些示例中,收集模块可以通过从参考帧204的yuv平面收集参考直方图208和从当前帧206的yuv平面收集当前直方图210,来收集参考直方图208(在本文中也是h
p
)和当前直方图210(在本文中也是hi)。
[0048]
当在编码操作的运动估计部分期间校正误报权重和/或偏移时,如果根据编码器的权重和偏移方法(例如,对于h.264编码器,通过上面的等式(1))确定的权重和偏移真实地反映从参考帧到当前帧的全局像素值变化,则同样的关系对于参考帧的直方图和当前帧的直方图应该成立。通过在参考直方图h
p
上应用权重/偏移,得到的调整后的直方图应该与当前直方图hi匹配。因此,在一些示例中,收集模块106可以通过基于参考帧204和当前帧206确定权重值(例如,w)和偏移值(例如,o)(例如,如上文参考用于h.264编码的等式(1)描述的)并通过将权重值和偏移值应用于参考直方图208来调整参考直方图208,从而收集参考直方图208。如下文将更详细描述的,模块102中的一个或更多个(例如,确定模块110)可以基于调整后的参考直方图和/或平滑参考直方图与当前直方图来确定相似性度量(例如,相似性度量216)。
[0049]
返回图3,在步骤330,本文中描述的一个或更多个系统可以通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图。例如,生成模块108可以通过将平滑函数214应用于参考直方图208的至少一部分来生成平滑参考直方图212。
[0050]
像素值上的噪声可以在直方图度量中引入敏感性。例如,即使两个帧来自同一场景,时间噪声也可以在相似性度量上引入高于预定义阈值的差异。因此,参考直方图208和/或当前直方图210的平滑,诸如通过在确定直方图之间的相似性度量(例如,相似性度量216)之前对一个或两个直方图应用高斯平滑,可以提高本文中描述的系统和方法的鲁棒性。
[0051]
在一些示例中,平滑函数可以包括任何函数、模块、方法、算法、内核、滤波器等,当将它们应用于输入直方图时,可以生成平滑直方图,当与输入直方图相比时,该平滑直方图的连续分格之间的平均差异具有减少的变化。在一些示例中,当将密度曲线应用于输入直方图并且将附加密度曲线应用于平滑直方图时,平滑直方图的附加密度曲线可以比输入直方图的密度曲线更平滑(例如,具有更低的平均变化幅度或变化频率)。
[0052]
作为说明,图4示出了参考直方图400以及可以是参考直方图400的一个版本的平滑参考直方图402的示例,本文描述的一个或更多个系统(例如,收集模块106)可以为参考帧收集参考直方图400,本文描述的一个或更多个系统(例如,生成模块108)可以通过将平滑函数(例如,平滑函数214)应用于参考直方图400而生成平滑参考直方图402。如图所示,参考直方图400和平滑参考直方图402可以是绘制的密度函数,其分别表示或被映射到参考直方图400和平滑参考直方图402中包括的数据。
[0053]
同样,图5示出了当前直方图500以及可以是当前直方图500的一个版本的平滑当前直方图502的示例,本文描述的一个或更多个系统(例如,收集模块106)可以针对当前帧收集当前直方图500,本文描述的一个或更多个系统(例如,生成模块108)可以通过将平滑函数(例如,平滑函数214)应用于当前直方图500而生成平滑当前直方图502。如图所示,当前直方图500和平滑当前直方图502可以是绘制的密度函数,其分别表示或被映射到当前直方图500和平滑当前直方图502中包括的数据。
[0054]
平滑函数的示例可以包括但不限于高斯平滑函数、最近邻平滑函数、小波变换函
数、质心指数(barycentric exponential)平滑函数、均值平滑函数等。
[0055]
返回图3,在步骤340,本文描述的一个或更多个系统可以确定平滑参考直方图和当前直方图之间的相似性度量。例如,确定模块110可以使计算设备202确定平滑参考直方图212和当前直方图210之间的相似性度量216。
[0056]
在一些示例中,相似性度量可以包括可以量化第一直方图和第二直方图之间的差异的任何合适的度量。作为示例,确定模块110可以通过确定平滑参考直方图212和当前直方图210之间的相关系数,来确定平滑参考直方图212和当前直方图210之间的相似性度量216。在一些示例中,相关系数可以衡量两个变量(诸如平滑参考直方图212和当前直方图210)之间的关系的强度。在一些示例中,相关系数为1可以指示,对于一个变量的每一个正增长,另一个变量可以有固定比例的正增长。相关系数为-1可以指示,对于一个变量的每一个正增长,另一个变量可以有固定比例的负增长。相关系数为0可以指示,对于每一个增长,都没有正增长或负增长。
[0057]
在一些示例中,确定模块110可以通过确定皮尔逊相关性(例如,平滑参考直方图212和当前直方图210之间的皮尔逊相关性)来确定相关系数。作为相关系数的皮尔逊相关性可以是两组数据(例如,平滑参考直方图212和当前直方图210)之间的线性相关性的量度。皮尔逊相关性可以表示两个变量的协方差除以它们的标准差的乘积得到的商。因此,它可以在本质上是协方差的归一化测量值,因此结果可以始终具有介于-1和1之间的值。在附加或替代示例中,确定模块110可以通过确定互信息度量、类内相关性(icc)、多变量相关性、秩系数和/或任何其他合适的相关系数中的一个或更多个来确定相关系数。
[0058]
返回图3,在步骤350,本文描述的一个或更多个系统可以在确定的相似性度量大于阈值时,在视频流的编码的运动估计部分期间应用加权预测。例如,作为计算设备202的一部分,应用模块112可以使计算设备202在相似性度量216大于阈值144时,在视频流142的编码222的运动估计220部分期间应用加权预测218。
[0059]
作为说明,假设相似性度量216是大于阈值(例如,0.1、0.5、0.6、0.7、1等)的相关系数,这可以指示平滑参考直方图212可以在当前直方图210的阈值相似性度量内。这可以指示针对当前帧和/或参考帧确定的权重/偏移值真实地反映了整个帧上的全局像素值变化,而不是如上所述的“误报”。因此,应用模块112可以在运动估计220期间应用加权预测218。相反,假设相似性度量216是小于阈值(例如,0.5、0.1、0.01、0、-0.01、-0.1、-0.5、-1等)的相关系数。这可以指示针对当前帧和/或参考帧确定的权重/偏移值是如上所述的“误报”,并且应用模块112因此在运动估计220期间可以不应用加权预测218。
[0060]
图6是可以说明本文描述的一些系统和方法的操作流程600的操作流程图。从开始块继续,在步骤602,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以从视频流中选择参考帧和当前帧。继续到步骤604,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以为参考帧和当前帧生成直方图(例如,参考直方图208和当前直方图210)。
[0061]
在步骤606,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以将预定的权重和/或偏移(例如,w和/或o)应用于参考帧的直方图(例如,参考直方图208),从而生成调整后的参考直方图。在步骤608,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以对直方图中的至少一个进行平滑(即,生成平滑参考直方图
212和/或当前直方图210的平滑版本)。
[0062]
在步骤610,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以将平滑参考直方图212与当前直方图210和/或与当前直方图210的平滑版本进行比较。在选择612处,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以确定被比较的直方图之间是否存在相关性。如果不存在相关性(即,直方图不匹配),或相关性小于预定的阈值,则在可选方案614处,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)在视频流的编码的运动补偿部分期间可以不应用加权预测。如果存在相关性,或者相关系数大于预定的阈值,则在可选方案616处,本文描述的一个或更多个系统(例如,模块102中的一个或更多个)可以在视频流的编码的运动补偿部分期间应用加权预测。
[0063]
如贯穿本公开所讨论的,所公开的系统和方法可以提供优于用于视频编码的传统选择的一个或更多个优点。例如,如上所述,传统的视频编码系统可能难以有效地对视频文件或流中包括淡出到黑色部分或从黑色淡入部分的部分进行编码。视频文件或流的这样的部分可能导致传统的视频编码系统生成、计算或观察到高运动估计和/或预测误差。
[0064]
为了减轻这种困难中的一些,一些视频编码标准(例如,h.264、h.265等)可以包括用于在视频流的编码的运动估计部分期间进行加权预测的工具。然而,向视频编码内的运动补偿应用的常规或传统加权/偏移方法可能指示“误报”,因为它们可能指示在两个帧之间发生全局亮度/光照变化,而在这两个帧之间实际上没有发生全局亮度/光照变化。此外,用于检测加权/偏移误报的传统方法可能涉及复杂的或原本计算密集型的操作。
[0065]
本文描述的系统和方法的实施例可以有效地排除这样的误报,从而提高视频编码效率和/或质量。此外,本文描述的系统和方法可以省略或限制复杂的计算操作,并且因此可以比传统的加权/偏移方法明显更高效(例如,计算上高效、能量高效、时间上高效等)。在一些示例中,本文描述的系统和方法可以具有与传统的蛮力运动估计方法相似的性能,但是具有可忽略的计算复杂度。
[0066]
本文描述的系统和方法的实施例可以使用一种轻量级的基于直方图的算法来排除误报的权重/偏移。实施例可以收集当前帧和参考帧的每个平面(yuv)的直方图。每个直方图h可以具有任何合适数量的条目,诸如256个条目。当前帧的直方图和参考帧的直方图可以分别被称为直方图hi和直方图h
p
。如果根据上文的等式(1)确定的权重w和偏移o真实地反映了整个帧上的全局像素值变化,那么同样的关系对于直方图也应该成立。通过在h
p
上应用权重/偏移,得到的直方图应该与hi匹配。如果该关系不成立,则本文描述的系统和方法的实施例可以确定权重和/或偏移是误报并且可以不应用加权预测。可以指示直方图和直方图hi之间的相关性的可能的相似性度量可以是直方图和直方图hi之间的皮尔逊相关系数。
[0067]
此外,在某些情况下,像素值上的噪声可以将敏感性引入到直方图相似性度量。例如,即使两个帧来自同一场景,时间噪声也可以给相似性度量引入差异。因此,为了提高鲁棒性,本文描述的系统和方法的实施例可以在确定相似性度量之前将平滑函数应用于直方图中的一个或两个。
[0068]
示例实施例
[0069]
示例1:一种计算机实现的方法,包括(1)从视频流中选择参考帧和当前帧,(2)收
集参考帧的参考直方图和当前帧的当前直方图,(3)通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图,(4)确定平滑参考直方图和当前直方图之间的相似性度量,以及(5)当相似性度量大于阈值时,在视频流的编码的运动估计部分期间应用加权预测。
[0070]
示例2:根据示例1所述的计算机实现的方法,其中(1)计算机实现的方法还包括从当前直方图的至少一部分生成平滑当前直方图,并且(2)确定平滑参考直方图和当前直方图之间的相似性度量包括:确定平滑参考直方图和平滑当前直方图之间的相似性度量。
[0071]
示例3:根据示例1-2中任一项所述的计算机实现的方法,其中收集参考直方图包括(1)基于参考帧和当前帧确定权重值和偏移值,以及(2)通过将权重值和偏移值应用于参考直方图来调整参考直方图。
[0072]
示例4:根据示例3所述的计算机实现的方法,其中确定相似性度量包括基于调整后的参考直方图和当前直方图来确定相似性度量。
[0073]
示例5:根据示例1-4中任一项所述的计算机实现的方法,其中选择参考帧和当前帧包括:在视频流的编码的运动估计部分期间选择参考帧和当前帧。
[0074]
示例6:根据示例1-5中任一项所述的计算机实现的方法,其中收集参考帧的参考直方图和当前帧的当前直方图包括:从参考帧的yuv平面收集参考直方图和从当前帧的yuv平面收集当前直方图。
[0075]
示例7:根据示例1-6中任一项所述的计算机实现的方法,其中确定相似性度量包括:确定平滑参考直方图和当前直方图之间的相关系数。
[0076]
示例8:根据示例7所述的计算机实现的方法,其中确定相关系数包括确定皮尔逊相关性。
[0077]
示例9:根据示例7-8中任一项所述的计算机实现的方法,其中确定相关系数包括:确定(1)互信息度量、(2)类内相关性(icc)、(3)多变量相关性或(4)秩系数中的至少一个。
[0078]
示例10:根据示例1-9中任一项所述的计算机实现的方法,其中参考直方图或当前直方图中的至少一个包括至少256个分格。
[0079]
示例11:根据示例1-10中任一项所述的计算机实现的方法,其中平滑函数包括高斯平滑函数。
[0080]
示例12:根据示例1-11中任一项所述的计算机实现的方法,其中平滑函数包括以下中的至少一个:(1)最近邻平滑函数,(2)小波变换函数,(3)质心指数平滑函数,或(4)均值平滑函数。
[0081]
示例13:根据示例1-12中任一项所述的计算机实现的方法,其中参考直方图包括至少256个分格,并且当前直方图包括至少256个分格。
[0082]
示例14:一种系统,包括(1)存储在存储器中的选择模块,其从视频流中选择参考帧和当前帧,(2)存储在存储器中的收集模块,其收集参考帧的参考直方图和当前帧的当前直方图,(3)存储在存储器中的平滑模块,其通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图,(4)存储在存储器中的确定模块,其确定平滑参考直方图和当前直方图之间的相似性度量,(5)存储在存储器中的应用模块,当确定的相似性度量大于阈值时,该应用模块在视频流的编码的运动估计部分期间应用加权预测,以及(6)至少一个物理处理器,其执行选择模块、收集模块、平滑模块、确定模块和应用模块。
[0083]
示例15:根据示例14所述的系统,其中(1)收集模块通过(a)基于参考帧和当前帧确定权重值和偏移值以及(b)通过将权重值和偏移值应用于参考直方图来调整参考直方图,来收集参考直方图,并且(2)确定模块通过基于调整后的参考直方图和当前直方图确定相似性度量,来确定相似性度量。
[0084]
示例16:根据示例14-15中任一项所述的系统,其中选择参考帧和当前帧包括:在视频流的编码的运动估计部分期间选择参考帧和当前帧。
[0085]
示例17:根据示例14-16中任一项所述的系统,其中收集参考帧的参考直方图和当前帧的当前直方图包括:从参考帧的yuv平面收集参考直方图和从当前帧的yuv平面收集当前直方图。
[0086]
示例18:根据示例14-17中任一项所述的系统,其中确定相似性度量包括:确定平滑参考直方图和当前直方图之间的相关系数。
[0087]
示例19:根据示例18所述的系统,其中确定相关系数包括确定皮尔逊相关性。
[0088]
示例20:一种非暂时性计算机可读介质,包括计算机可读指令,该计算机可读指令在由计算系统的至少一个处理器执行时使计算系统(1)从视频流中选择参考帧和当前帧,(2)收集参考帧的参考直方图和当前帧的当前直方图,(3)通过将平滑函数应用于参考直方图的至少一部分来生成平滑参考直方图,(4)确定平滑参考直方图和当前直方图之间的相似性度量,以及(5)当确定的相似性度量大于阈值时,在视频流的编码的运动估计部分期间应用加权预测。
[0089]
如上详述,本文描述和/或示出的计算设备和系统广义地表示能够执行计算机可读指令(诸如包含在本文描述的模块内的那些)的任何类型或形式的计算设备或系统。在它们最基本的配置中,这些计算设备(一个或更多个)可以各自包括至少一个存储器设备和至少一个物理处理器。
[0090]
尽管被示为单独的元件,但本文描述和/或示出的模块可以表示单个模块或应用的部分。此外,在某些实施例中,这些模块中的一个或更多个可以表示一个或更多个软件应用或程序,其在由计算设备执行时可以使计算设备执行一个或更多个任务。例如,本文描述和/或示出的一个或更多个模块可以表示被存储并被配置为在本文描述和/或示出的一个或更多个计算设备或系统上运行的模块。这些模块中的一个或更多个还可以表示被配置为执行一个或更多个任务的一个或更多个专用计算机的全部或部分。
[0091]
此外,本文描述的一个或更多个模块可以将数据、物理设备和/或物理设备的表示从一种形式变换为另一种形式。例如,本文所述的一个或更多个模块可以接收要变换的视频数据、变换视频数据、输出变换的结果以对视频数据进行转码(例如,从一种分辨率和/或比特率到另一种分辨率和/或比特率),使用变换的结果将转码后的视频数据呈现给用户,并存储变换的结果以对额外的或其他的视频数据进行转码。附加地或替代地,本文所述的一个或更多个模块可以通过在计算设备上执行、在计算设备上存储数据和/或以其他方式与计算设备交互,将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式变换为另一种形式。
[0092]
本文所用的术语“计算机可读介质”通常是指能够存储或承载计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于传输型介质(诸如载波),以及非暂时性类型的介质,诸如磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、
光存储介质(例如,光盘(cd)、数字视频光盘(dvd)和blu-ray光盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分发系统。
[0093]
本文中描述和/或示出的过程参数和步骤顺序仅作为示例给出并且可以根据需要而变化。例如,虽然本文所示和/或描述的步骤可以以特定顺序示出或讨论,但这些步骤不一定需要以所示出或讨论的顺序执行。本文描述和/或示出的各种示例性方法也可以省略本文描述或示出的步骤中的一个或更多个,或者包括除了所公开的那些步骤之外的额外的步骤。
[0094]
已经提供了前面的描述以使本领域的其他技术人员能够最好地利用本文公开的示例性实施例的各个方面。该示例性描述并非旨在穷举或限于所公开的任何精确形式。在不背离本公开的精神和范围的情况下,许多修改和变化都是可能的。本文所公开的实施例在所有方面都应被认为是说明性的而不是限制性的。在确定本公开的范围时应参考所附权利要求及其等同物。
[0095]
除非另有说明,否则说明书和权利要求书中使用的术语“连接到”和“耦合到”(及其派生词)应解释为允许直接和间接(即,通过其他元件或部件)两种连接。此外,说明书和权利要求书中使用的术语“一个(a)”或“一个(an)”应解释为表示“至少一个”。最后,为了便于使用,说明书和权利要求书中使用的术语“包括”和“具有”(及其派生词)可与词语“包含”互换并与词语“包含”具有相同的含义。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1