首页 / 改变相机视场期间的视频流编码

改变相机视场期间的视频流编码公开 发明

技术领域

[0001] 本公开涉及对由相机记录的视频流进行编码。特别地,本公开涉及在相机的视场改变的时间期间对视频流进行编码。

相关背景技术

[0002] 在当代视频编解码算法中,预测编解码通常用于利用如下事实,即,场景的许多细节可以在一个图像帧与下一个图像帧之间保持静态这一事实来获得益处。此外,所谓的“运动矢量”也可以用于对在图像帧之间移动的对象加以解释,以便指示解码器在对包含该对象的当前图像帧进行解码时在一个或多个其他图像帧的哪些区中寻找属于该对象的图像数据。
[0003] 然而,针对由例如在捕获两个图像帧之间改变相机的视场(FOV)而引起的、对象在图像帧之间的某些类型的移动和缩放,使用此类运动矢量来有效地编码/解码视频流可能是困难的。一种这样的情况是,当相机执行变焦操作时,导致运动矢量变得更长,并且还导致运动矢量随着时间的推移而针对图像帧的不同部分发生变化。随着最合适的运动矢量的长度增加,编码器将被迫扩大例如先前图像帧中的搜索区域,以便找到这样的运动矢量。因此,这可能会导致所需计算时间上的增加,并且通常还可能会导致运动矢量的使用变得不不切实际并且有时甚至会变得难以处理。
[0004] 所以,需要一种改进的方式来对具有在相机的FOV变化期间捕获的图像帧的视频流进行编码。

具体实施方式

[0066] 图1示意性地图示出了由(视频)相机捕获的视频流100的一个典型示例,其中在进行捕获期间,相机的FOV发生改变。在该特定示例中,FOV的改变是由于相机执行变焦操作(并且更具体而言是拉近操作)而引起的,该变焦操作还包括相机的轻微平移和倾斜,以便使感兴趣的对象移动到相机的FOV的中心。
[0067] 对于该特定示例,假设场景包括感兴趣的单个对象110。这里,该对象110被假设为花盆中的花朵,但当然可以是一个或多个其他对象的任何组合。视频序列100包括由相机在第一FOV处捕获的第一图像120a。这里,第一FOV使得对象110仅占据第一图像120a的左下角。随着时间的推移,相机接着开始例如通过调整其镜头和/或通过使用用于对这种物理变焦进行模拟的数字处理来拉近对象110,并且还轻微向左平移以及轻微向下倾斜,以便使对象110居中于FOV的中间。
[0068] 当相机捕获下一个的第二图像120b时,相机因此而具有第二FOV,该第二FOV与第一FOV相比提供了对对象110的放大。当在第二图像120b中描绘时,与在第一图像120a中描绘时相比,对象110的尺寸稍大一些,并且由于相机的平移和倾斜,对象110也开始朝着图像的中心移动。
[0069] 随着时间的进一步推移,相机在捕获场景的更多图像的同时保持变焦,使得对象110例如变得越来越大并且占据每个图像中越来越大的部分。在图1中所示的特定示例中,这包括用具有第三FOV的相机捕获第三图像120c,并且用具有第四FOV的相机捕获第四图像
120d。在已经捕获到第四图像120d之后,相机停止变焦操作,其中在该第四图像中,对象110现在占据几乎所有的可用图像空间并且或多或少地以该FOV为中心。对于连续的帧,诸如第五图像120e和第六图像120f,相机的FOV保持不变并且等于用于捕获第四图像120d的第四FOV。
[0070] 为了对视频流100进行编码以便节省例如比特率/带宽,可以应用各种编码方案。例如,传统的此类方案可以从将第一图像120a编码为帧内预测帧(I帧)或类似的帧开始,而并不参考一个或多个附加视频帧。然后,第二图像120b可以被编码为帧间预测帧(P帧),提供对用于以例如运动矢量的形式对第一图像120a进行编码的I帧的参考。然而,为了找到这样的运动矢量,编码器首先将必须执行运动矢量搜索,在该运动矢量搜索中,编码器尝试针对第二图像120b的每个部分,识别应从第一图像120a的哪些部分中检索图像数据以便稍后对用于对第二图像120b进行编码的P帧进行解码。这通常是通过下述来实现的,即,在第二图像120b的每个部分周围定义有限的搜索区域,并且随后,在第一图像120a中搜遍该区域以寻找适当的匹配。如果相机FOV上的变化不包括变焦操作,而是仅包括例如相机的缓慢偏移移动(诸如平移),则这很可能是一种对P帧进行编码(并且由此对第二图像120b进行编码)的有效方式,因为所需搜索区域将保持为较小,并且运动矢量对于第二图像120b的所有部分而言将大致相同。
[0071] 然而,在如图1中所示的变焦操作的情况下,搜索这样的运动矢量可能将更加困难,并且将需要扩展搜索区域。此外,运动矢量对于第二图像120b的许多部分或者甚至是所有部分而言将是不同的,因为例如属于花盆的像素的移动将小于例如属于花朵顶部的像素的移动,并且因为,与第一图像120a相比,例如属于对象110的左侧部分的像素在第二图像120中将仅大致向上移动,而例如属于对象110的右侧部分的像素将反而向上和向右移动。
由于变焦的进行以及对象110的不同部分针对每个新捕获的图像开始更快地彼此远离(并且由于每个新的P帧将不得不参考例如先前已编码的P帧),因此运动矢量将变得越来越长,并且针对第二图像120b的不同部分以及对该第二图像120b进行编码的P帧也将(在方向上)变化越来越大。作为结果,执行这种运动矢量搜索所需的处理能力将有超过例如负责进行编码的实体的能力的风险,在实际情况下,该实体例如可以是相机本身。
[0072] 现在将参考例如图2和图4来更详细地描述本文中所设想的方法能够如何改进这种情况。还参考了图3,图3示意性地图示出了这种方法的各步骤的流程图300。
[0073] 图2示意性地图示出了作为方法200的一部分而执行的对各种视频帧的编码。如本文中所设想的,改进的方法200包括(作为步骤S301)获得由具有第一FOV的摄像机捕获的第一图像(例如,第一图像120a)。方法200进一步包括(作为步骤S302)将第一图像120a编码为已编码视频流210的第一视频帧220a的一部分。这可以按照常规进行,通过例如将第一视频帧220a编码为I帧或者类似的帧,使得第一视频帧220a包含当在解码器侧(未示出)再次解码第一图像120a时所需的所有必要的图像数据。该编码可以例如是无损的或者可以在对第一视频帧210a进行解码时产生至少一些图像质量损失,这取决于用于第一视频帧220a的这种编码的确切方法。
[0074] 方法200包括(作为步骤S303)接收由具有第二FOV的摄像机捕获的第二图像(例如,第二图像120b)。如本文中前面参考例如图1所描述的,第一FOV不同于第二FOV,但第二FOV使得其至少部分地与第一FOV重叠。换言之,为了使方法200按预期工作,优选地,应当存在例如对象110中的在第一图像120a和第二图像120b这两者中都可见的至少一些部分。更优选地,对象110中的在第二图像120b中可见的所有部分也应当在第一图像120a中可见。
[0075] 与传统的编码方法相对比,所设想的改进方法200没有通过尝试使用第一图像120a中的运动矢量搜索将第二图像120b直接编码为例如常规的P帧来进行。相反,在步骤S304中,方法200通过如下来进行,即,生成第一附加视频帧230a,该第一附加视频帧230a参考第一视频帧220a,并且该第一附加视频帧230a包括第一运动矢量,该第一运动矢量用于将第一图像120a的图像内容变换(在这种情况下,缩放和偏移)为比第一FOV更接近第二FOV的FOV。不是通过计算密集的运动矢量搜索来找到这些第一运动矢量,而是基于与第二FOV和第一FOV有关的,即与相机的FOV在捕获第一图像120a和第二图像120b之间是如何变化的有关的知识,来计算/形成这些第一运动矢量。这样的信息可以例如从相机自身中接收,和/或从能够例如对相机的方位(诸如,平移角/倾斜角/滚转角或类似角,和/或相机及其镜头的焦距)进行检测的任何其他特定传感器中接收。例如,可以获知,在捕获第一图像120a和第二图像120b之间,相机的FOV已经通过例如按特定量增加镜头的焦距以及通过在轻微向左平移相机的同时轻微向下倾斜相机(以便在变焦的同时使对象110朝向图像的中心移动)而被改变。随后,该信息可被用于直接获得执行缩放/偏移所需的第一运动矢量,该缩放/偏移将第一图像120a的FOV变换为更接近或等于被用于捕获第二图像120b的第二FOV的FOV。
如本文中所使用的,“图像的FOV被变换为某些其他的FOV”应理解为,当计算出一个变换时,如果将该变换应用于图像的图像内容,则会将所得图像渲染得看起来(更)像是由具有该其他FOV的相机所捕获的。这里稍后将参考例如图5来更详细地描述如何基于与被用于捕获两个图像的各种FOV有关的知识来形成/计算第一运动矢量。
[0076] 在已经形成了/计算出第一运动矢量之后,方法200通过将第一附加视频帧230a插入到已编码视频流210中来继续(在步骤S305中),并且包括将第一附加视频帧230a标记为非显示帧(由如图2中所示的被划掉的屏幕符号来表示)。因此,第一附加视频帧230a将不会在已编码视频流210的后续解码期间显示,而是仅作为针对其他视频帧的解码/编码的信息的容器来发挥作用。特别地,在本示例中,第一附加视频帧230a不需要包括任何实际的图像数据,而仅需要包括第一运动矢量,该第一运动矢量允许(在第一附加视频帧230a的后续解码期间)将第一图像120a的FOV变换为看起来更接近第二FOV的FOV,即,通过根据需要来缩放、偏移和/或旋转第一图像120a的图像内容。
[0077] 然后,在步骤S306中,该方法继续将第二图像120b编码为已编码视频流210的第二视频帧220b的一部分,其中第二视频帧220b使得其参考第一附加视频帧230a。第二视频帧220b可以例如是P帧或类似的帧,其中例如运动矢量指示(已解码的)第一附加视频帧230a的哪些部分将被用于解码第二视频帧220b的哪些部分。重要的是,由于第一附加视频帧
230a的(待解码的)图像的FOV看起来更接近(或者甚至等于)第二图像120b的FOV,因此使用运动矢量搜索来找到用于解码第二视频帧220b的这种运动矢量变得比尝试基于例如第一图像120a的图像内容来直接找到这种运动矢量更加不重要。针对第二视频帧220b的运动矢量可以例如通过将第二图像120b的图像内容与被包括在第一附加视频帧230a中的(或者在解码后从其生成的)第一图像120a的偏移后图像内容的图像内容进行比较来找到。因此,所设想的方法提供了一种对在相机的FOV改变期间捕获到的视频流进行编码的改进方式。
[0078] 在图2中,由实心箭头来图示出从一个已编码视频帧对另一个已编码视频帧的参考。例如,实心箭头240a图示出了第一附加视频帧230a如何参考第一视频帧220a;实心箭头240b图示出了第二视频帧220b如何参考第一附加视频帧230a,并且实心箭头240c图示出了第二附加视频帧230b(如果包括的话,如下文中稍后将讨论的)如何参考第一附加视频帧
230a,等等。如本文中所使用的,箭头指向传送信息的方向,例如使得从第一视频帧220a指向第一附加视频帧230a的箭头240a指示第一附加视频帧230a是参考第一视频帧220a的视频帧。如本文中所设想的,在该方法的一些实施例中,当然也可以存在被包括在各种视频帧当中的其他参考。这种附加参考的示例在图2中用虚线箭头表示,并且可以例如包括也参考第一视频帧220a的第二视频帧220a,用于例如不需要运动矢量的部分(诸如,恒定背景或类似部分,等等)。其他这种可选参考可以例如包括作为双向预测帧(B帧)的一个或多个帧,包括对一个或多个“未来”视频帧的参考。
[0079] 除了上述内容之外,在一些实施例中,所设想的方法当然也可以以类似的方式来继续,以便例如作为正在进行的变焦操作的一部分对在相机的FOV改变时所捕获的一个或多个附加图像进行编码。因此,如本文中所设想的并且如流程图300所描述的方法可以包括可选的步骤S307,在该步骤中检查相机的FOV是否仍在改变。如果是,则该方法可以返回(如由虚线箭头310所图示出的)并且再次重做步骤S303至S306,每次获得新的图像,生成参考先前附加视频帧的新的非显示的附加视频帧,并且将新的图像编码为参考该新的附加视频帧的新视频帧的一部分。如果不是相机FOV的改变仍在进行,则该方法可以改为例如停止,并且例如恢复到按照常规进行的对帧进行编码(如由虚线箭头312所图示出的)。
[0080] 如图2中所图示出的,继续方法200可以包括例如获得由具有第三FOV的相机捕获的第三图像(例如,第三图像120c),其中第三FOV不同于第二FOV,但也使得其至少部分地与第二FOV重叠。这可以对应于例如重复上面的步骤S303,但针对“第二和第三”而不是“第一和第二”,等等。该方法可以例如包括生成第二附加视频帧230b,该第二附加视频帧230b参考第一附加视频帧230a,并且该第二附加视频帧230b包括第二运动矢量,该第二运动矢量以与以上所描述的第一运动矢量类似的方式,用于将第二图像120b的图像内容变换为比第二FOV更接近第三FOV的FOV。这里,代替地,基于第三FOV与第二FOV之间的差来形成第二运动矢量。这可以对应于例如重复上述的步骤S304,但也可以用“第二和第三”来代替“第一和第二”,等等。该方法可以通过将第二附加视频帧230b插入到已编码视频流210中并将第二附加视频帧230b标记为非显示帧来继续(对应于重复以上的步骤S305,也用“第二和第三”来代替“第一和第二”,等等)。该方法可以通过将第三图像120c编码为第三视频帧220c的一部分来继续,该第三视频帧220c可以参考例如第二附加视频帧230b。在一些实施例中,该方法可以以类似的方式继续,直到相机的FOV改变结束为止。在本示例中,这可以包括:获得第四图像(例如,第四图像120d);生成参考第二附加视频帧230b的第三附加视频帧230c;将已编码视频流210中的第四图像120d编码为参考第三附加视频帧230d的第四视频帧230d的一部分,等等。当检测到例如变焦已经停止时,例如,通过注意到当捕获第四图像104d时相机的第四FOV与当捕获第五图像104e时相机的第五FOV相同,则在一些实施例中,该方法例如可以停止插入附加视频帧,并且改为恢复到对帧进行编码,诸如当例如当前没有进行变焦时所进行的帧编码。例如,第五图像104e可以被编码为参考第四附加视频帧230d的第五视频帧220e的一部分,并且下一个图像230f可以被编码为参考视频帧230e的视频帧220f等等。特别地,本文中所设想的方法主要应用于与如下时间相对应的视频帧编码,在该时间期间,相机改变其FOV,并且在该时间期间,使用运动矢量的常规编解码是困难的,因为这样的运动矢量是长的并且由于相机的FOV变化而变化。
[0081] 尽管已经仅通过由于由相机执行的拉近操作(加上附加的平移/倾斜操作)而导致的FOV改变来举例说明,但应当注意,所设想的方法也可以用于在记录存在相机的FOV的一个或多个附加改变和/或针对改变的其他原因的期间对视频流进行编码。这样的示例可以例如包括相机的旋转,或者与平移、倾斜、滚转和/或焦距改变或者类似动作相关的可行变化的任何其他组合。可以设想,只要获知(或者可以以其他方式导出)与在记录不同图像时所使用的不同FOV有关的知识,则就可以直接从该知识中获得生成附加视频帧所需的运动矢量,而不需要由诸如相机等解码器进行任何的运动矢量搜索。因此,只要使附加视频帧的FOV能够更好地或准确地匹配由相机捕获到的图像的FOV,则当通过在附加视频帧中进行搜索以及参考附加视频帧来对所捕获的图像进行编码时,就可以更有效地执行运动矢量搜索。
[0082] 现在将参考图4来解释所设想的方法的另一实施例。这里,假设方法400仍然被认为是对在拉近对象110期间捕获的视频流100进行编码,如图1中所示,但是,与参考图2所描述的方法200相反,方法400反而使用分层类型的编解码,例如可缩放视频编解码(SVC)。在下文中,将仅强调方法200与方法400之间的差异。
[0083] 已编码视频流410具有多个层,包括至少一个基础层412以及至少一个增强层414。方法400开始于获得第一图像120a,并且将该图像编码为基础层412中的第一视频帧420a的一部分(具有例如较低的分辨率)以及增强层414中的第一图像帧440a的一部分(具有细节以获得比基础层412的分辨率更高的分辨率),如在这样的分层编解码方案中按照常规进行的。
[0084] 在获得第二图像120b之后,如本文中前面所描述的那样并且参考基础层412的第一视频帧420a来生成第一附加视频帧430a。第一附加视频帧430a也被编码在基础层412中,并且被标记为非显示帧。
[0085] 然而,第二图像120b不是直接被编码为基础层412的任何视频帧的一部分,而是仅被编码为增强层414的第二视频帧440b的一部分,其中第二视频帧440b参考基础层412中的第一附加视频帧430a。
[0086] 以与本文中前面所描述的方式相同的方式,在一些实施例中,方法400当然也可以继续生成并编码更多的视频帧,只要相机的FOV正在发生变化。可以获得第三图像120c,可以将用于捕获第三图像120c的第三FOV与用于捕获第二图像120b的第二FOV进行比较,并且可以计算第二运动矢量,并将其用于生成被编码在基础层412中的第二附加视频帧430b。正如之前一样,第三图像120c不是直接被编码在基础层412中,而是被编码为增强层414中的第三视频帧440c,并且使得该第三视频帧440c参考基础层412中的第二附加视频帧430b。然后当然可以重复相同的过程以获得例如第四图像120d、第五图像120e等,并且可以生成相应的帧并将其插入到如本文中所描述的基础层412和增强层414中。在本示例中,这包括:在基础层412中生成第三附加视频帧430c(被标记为非显示,并参考第二附加视频帧430b);将第四图像120d编码为增强层414中的第四视频帧440d的一部分(其中第四视频帧440d参考基础层412中的第三附加视频帧430c),等等。一旦对对象110的拉近已经停止,则方法400就可以停止生成和插入附加视频帧,并且改为再次返回到对基础层412和增强层414中的第五图像120e和第六图像120f进行编码。例如,这可以包括:在基础层412(具有较低的分辨率)中的第五视频帧420e和增强层414(具有细节以获得比基础层412的分辨率更高的分辨率)中的第五视频帧440e中对第五图像120e进行编码;以及在基础层412中的第六视频帧420f和增强层414中的第六视频帧440f中对第六图像120进行编码。如图4中所见,在方法400中,附加视频帧230a、230b和230c因此而取代了基础层412中的第二、第三和第四、被正常编码的视频帧。
[0087] 如图4中提供的实心箭头所图示出的并且如已经参考图2所描述的,基础层412中的第五视频帧420e可以例如参考第三附加视频帧430c,等等。同样如本文中所述,在各种视频帧当中可以包括其他参考。例如,如图5中的虚线箭头所图示出的,增强层414中的每个视频帧例如也可以参考增强层414中的一个或多个先前视频帧,并且基础层412中的每个“正常”视频帧(即,非附加视频帧)可以参考基础层412中一个或多个先前视频帧。当然,可以存在未示出的其他参考,诸如,例如对未来帧或类似帧的参考(如果相信的话)。
[0088] 当与参考图2描述的方法200相比时,方法400的优点在于,由于所有的附加视频帧(例如,帧430a‑430c)都被插入到基础层412中,所以它们不会影响FPS速率,因为增强层414仍然只包括由相机捕获到的每个图像的一个已编码视频帧。还可以设想,在增强层414将不被解码的情况下,例如当编码器的处理能力不足以进行解码时,或者如果在通过例如网络发送已编码视频流410之前甚至从已编码视频流中移除了增强层414(以节省带宽),在仅检索并解码基础层412时,这样做仍然可以有一些用处,因为使用在附加帧中找到的针对缩放、偏移和/或旋转的运动矢量而生成的各种被捕获图像的“FOV变换后的”图像内容仍然可以用于渲染图像内容。
[0089] 图5更详细地示意性地图示出了如何获得所需(第一)运动矢量的计算结果。这里,作为示例,具有第一FOV(“FOV1”)的相机510捕获对象110的第一图像120a。在另一个(例如,稍后的)时间,同一相机510捕获对象110的第二图像120b,同时具有不同的第二FOV(“FOV2”)。仅出于说明目的,在图5中所提供的示例中,与例如图1和图2相比,第一FOV和第二FOV之间的差异(以及由此而来的第一图像120a与第二图像120b之间的差异)在图5中被夸大。
[0090] 当捕获第一图像120a时,第一FOV(FOV1)例如由具有第一平移角520a、第一倾斜角522a和第一滚转角524a以及第一焦距526a的相机510定义。当捕获第二图像120b时,第二FOV(FOV2)由具有第二平移角520b、第二倾斜角522b、第二滚转角524b以及第二焦距526b的相机510定义。在该特定示例中,如上所讨论的,滚转角524a‑524b是相同的,而第二平移角
520b比第一平移角520a稍小一点,第二倾斜角522b比第一倾斜角522a稍大一点,并且第二焦距526b比第一焦距526a稍大(因为相机在第二FOV中比在第一FOV中被更加拉近,并且轻微向左/向下平移/倾斜)。各种角的确切定义并不被认为是重要的,只要该定义允许测量/检测各角在一个FOV与另一个FOV之间如何变化即可。
[0091] 通过具有与相机510的第一FOV和第二FOV有关的知识(例如,通过具有与角520a‑520b、522a‑522b、524a‑524b以及焦距526a‑526b有关的知识),可以因此而计算出第一运动矢量(例如,530a和530b等),如图5中所示的第一图像120a和第二图像120b的叠加540中所图示出的那样。如在叠加540中可以看到的,对于第二图像120b的不同部分(例如,550a和
550b),第一运动矢量530a和530b可以是不同的,因为从第一FOV开始并更接近第二FOV所需的缩放和偏移可以导致对象110的不同部分以不同的方向和不同的速度移动。当然,除了图
5中所图示出的第一运动矢量之外,例如针对第二图像120b的每个部分,也可以存在其他附加的第一运动矢量。
[0092] 在此,还设想提供一种用于对视频流进行编码的设备,现在将参考图6来更详细地进行描述。
[0093] 图6示意性地图示出了如本文中前面所讨论的用于对视频流进行编码的设备600,即,被配置为执行例如参考图2所描述的方法200和/或参考图4所描述的方法400的设备。设备600至少包括处理器(或“处理电路”)610和存储器612。如本文中所使用的,“处理器”或“处理电路”可以例如是适当的中央处理单元(CPU)、多处理器、微控制器(μC)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)等中的一个或多个的任意组合,能够执行存储在存储器612中的软件指令。存储器612可以在处理器610的外部,或者可以在处理器610的内部。如本文所使用的,“存储器”可以是随机存取存储器(RAM)和只读存储器(ROM)的任何组合,或者能够存储指令的任何其他类型的存储器。存储器612包含(即存储)指令,这些指令在由处理器610执行时,使设备600执行如本文中所描述的方法(即,方法200、400、或者它们的任何实施例)。设备600可以进一步包括一个或多个附加项614,在一些情况下,对于执行该方法而言,这些附加项可以是有用的。在一些示例实施例中,设备600可以例如是(视频)相机,诸如视频监控相机,并且附加项614可以因此而包括例如图像传感器以及例如用于将来自场景的光聚焦在图像传感器上的一个或多个透镜,使得该监控相机可以捕获场景的图像,以作为执行所设想的方法的一部分。附加项614还可以包括例如捕获场景所需的各种其他电子部件,例如用以根据需要适当地操作图像传感器和/或透镜,并且用以收集与相机和透镜的例如当前方位和/或焦距直接相关的信息,这些信息可被用于基于例如两个FOV之间的差来计算如何创建运动矢量。在监控相机中执行该方法可能是很有用的,因为处理被移动到“边缘”,即与在其他位置处(诸如在更集中的处理服务器或类似位置处)执行处理和视频编码相比而更接近实际场景的捕获位置。设备600可以例如被连接到网络,使得执行该方法而产生的已编码视频流可以被传送给用户。为此,设备600可以包括网络接口616,该网络接口可以是例如无线网络接口(如在例如IEEE 802.11或后续标准中的任何一个标准中所定义的,支持例如Wi‑Fi)或有线网络接口(如在IEEE 
802.3或后续标准中的任何一个标准中所定义的,支持例如以太网)。网络接口616还可以例如支持能够传输已编码视频的任何其他无线标准,诸如蓝牙或类似标准。各种部件610、
612、614和616(如果存在的话)可以经由一个或多个通信总线620被连接,使得这些部件可以彼此通信并根据需要来交换数据。
[0094] 设备600例如可以是已安装或可安装在建筑物上的监控相机,例如,以PTZ相机或例如能够提供场景的更宽视角的鱼眼相机的形式,或者任何其他类型的监控/监测相机。设备600例如可以是适合安装在人、动物和/或各种车辆上的人体摄像头、动作摄像头、行车记录仪或类似物。设备600可以例如是用户可携带并拍摄场景的智能电话或平板电脑。在设备600的任何这种示例中,可以设想,设备600可以包括除了本文中已经解释的那些部件之外的所有必要部件(如果有的话),只要设备600仍然能够执行如本文中所设想的方法200、400或其任何实施例即可。
[0095] 尽管在图6中没有明确示出,但设备600和处理器610可以例如被构造成一个或多个计算块,每个计算块负责根据例如方法200和400的特定步骤来执行功能,如在图3的流程图300中所示。例如,一个这样的功能块可以被配置为获得第一图像120a(即,执行步骤S301),并且另一个功能块可以被配置为对第一图像进行编码(即,执行步骤S302),并且以此类推,直到方法200、400或其的其他实施例的所有步骤都由设备600执行完毕为止。
[0096] 总结本文中所呈现出的各种实施例,本公开提供了一种用于在捕获视频流的图像期间,在相机的FOV改变的情况下(诸如在例如由相机执行的变焦操作期间)对视频流进行编码的改进方式。通过插入一个或多个附加的、非显示帧(这些帧连续地变换在FOV改变开始之前捕获的图像的图像内容,以匹配相机在FOV变化的各个阶段的FOV),并且通过将这种变换建立在直接从与FOV有关的知识中找到的运动矢量(并且不需要运动矢量搜索)的基础上,可以执行更高效且计算密集度更低的编码。然后,通过执行运动矢量搜索(该运动矢量搜索不会导致/不会来自例如长的和变化的运动矢量),可以用参考不同的附加视频帧的运动矢量来对FOV改变期间比特流的各种图像进行编码。如本文中所描述的,所设想的方法以及相应的设备、计算机程序和计算机程序产品因此而满足了对这种视频流进行编码的明显需要,因为仅基于运动矢量搜索的编码技术往往被证明在计算上是不可处理的,特别是在实时或接近实时的情况下。
[0097] 尽管以上可以以特定的组合来描述特征和元素,但每个特征或元素可以单独使用而不具有其他特征和元素,或者可以以具有或不具有其他特征和元素的各种组合来使用。此外,根据对附图、本公开和所附权利要求的研究,对所要求保护的发明加以实践的技术人员可以理解并实现对所公开的实施例的改变。
[0098] 在权利要求书中,词语“包含”和“包括”并不排除其他元素,并且用语“一”或“一个”并不排除复数。仅在相互不同的从属权利要求中列举某些特征这一事实并不表明这些特征的组合不能用于获得益处。

当前第1页 第1页 第2页 第3页