发明公开
本发明针对一种系统和过程,用于使用已经历自动增益机制的简单重新编程的常规摄像机来从在迅速改变曝光时间的同时捕捉到的动态场景的图像序列中生成HDR视频。这允许使用如今可获得的价廉且高分辨率的照相机传感器。一般而言,通过随时间的推移采用以交替的长、短曝光时间捕捉到的前驱视频的帧,并从这些帧中产生HDR视频,可生成高动态范围(HDR)视频。一般而言,这是通过首先使用计算将被用来捕捉前驱视频的每个帧的曝光量的过程来实现的;该前驱视频同时试图满足两个竞争约束。首先,需要将这些交替的曝光量等级保持尽可能地靠拢在一起,以降低中间色调中的噪声,而同时,将这些等级散布得相隔足够远,以捕捉尽可能宽广的动态范围。前驱视频的这些帧(通常具有某个帧间运动)随后被合成,以产生前述HDR视频帧。一般而言,这需要对前驱视频的一系列交替曝光的帧进行运动估计,以便随时间的推移而识别像素对应性,然后根据其曝光量和这些运动估计的估计质量决定对每个对应像素集中的每个像素加权多少。这些对应像素集随后根据其分配的权重来加以组合,以形成HDR视频的合成帧。此外,修改过的色调映射技术可以用于观看目的。
更具体而言,该HDR视频生成系统和过程首先涉及在改变每个帧的曝光时间的同时捕捉视频图像序列,以便在显示出较短曝光时间和较长曝光时间的各个帧之间交替。一般而言,先设置该视频图像序列的每个帧的曝光时间,再根据该视频的前导帧内的像素亮度分布的函数来捕捉每一帧。接下来,对于视频中规定数量的启动帧之后的每个帧,识别考虑中的那个帧与前导和后续相邻帧之间的对应像素。对于这些对应像素集中的每个像素集,该集合中的至少一个像素被标识为表示可信像素。然后,使用与这些可信像素相关联的像素色彩信息,来计算该像素集的发光度值。为每个对应像素集重复这一过程,以形成表示HDR视频的帧的发光度图。然后,可以执行色调映射过程,以将该发光度图转换成适用于呈现和显示的HDR帧的8位表示。
对于视频图像序列的每个帧的曝光时间的前述设置被设计成设置曝光时间,以便最小化每一对顺序的长、短曝光时间帧之间的曝光时间比,而同时产生关于这些帧内所描绘的场景的实质上完全的发光度范围。这可以通过首先捕捉该规定数量的启动帧(至少是两个)并为视频图像序列的最后两个帧计算各自的强度直方图来实现。然后,确定与捕捉到的最后两个帧相关联的曝光时间设置是否相等。如果是,那么为每个帧进一步确定其曝光过度像素计数和曝光不足像素计数是否分别小于规定的曝光过度像素目标计数和曝光不足像素目标计数。只要发现这两个计数都小于其各自的目标计数,将要被捕捉的下两个帧中的第一个帧的曝光时间都被设置为一个值,该值将会导致与考虑中的这对先前捕捉的帧中的第一个帧相关联的强度直方图在其像素值的范围内居中。同样,将要被捕捉的下两个帧中的第二个帧的曝光时间被设置为一个值,该值将会导致与考虑中的这对先前捕捉的帧中的第二个帧相关联的强度直方图在其像素值的范围内居中。使强度直方图居中涉及将考虑中的第一或第二个先前捕捉的帧(视情况而定)的曝光时间值乘以一个比率,该比率是场景的预期强度值范围的强度中值处的照相机响应函数的倒数与分别表示第一或第二个帧的强度直方图的平均数的强度值处的照相机响应函数的倒数的比率。
但是,如果确定与捕捉到的最后两个帧相关联的曝光时间设置不相等,或者考虑中的这对先前捕捉到的帧中的一个或两个帧的曝光过度像素计数或曝光不足像素计数分别大于或等于规定的曝光过度像素目标计数和曝光不足像素目标计数,那么,首先确定曝光过度像素计数是否小于该对帧中具有较短曝光时间设置的那个帧内的曝光过度像素目标计数的规定百分比。如果是,那么,要被捕捉的下一个较短曝光时间帧的曝光时间被设置为一曝光时间值,该曝光时间值表示用于考虑中的较短曝光时间帧的曝光时间值上的增加。注意,曝光过度像素计数表示饱和像素的数量,且曝光过度像素目标计数在考虑中的帧内的像素总数的大约1~5%的范围以内。对于将要被捕捉的下一个较短曝光时间帧的曝光时间设置为表示用于考虑中的较短曝光时间帧的曝光时间值上的增加的曝光时间值,这需要将考虑中的较短曝光时间帧的曝光时间值乘以一个比率,该比率是表示饱和像素的强度值处的照相机响应函数的倒数与表示最高强度值的强度值处的照相机响应函数的倒数的比率;该最高强度值是在按始于最小值的强度值排序时,从考虑中的较短曝光时间帧的前99%的像素之中获得的。
接下来,确定曝光不足像素计数是否小于考虑中的这对先前捕捉到的帧中具有较长曝光时间设置的那个帧内的曝光不足像素目标计数的规定百分比。如果是,那么,要被捕捉的下一个较长曝光时间帧的曝光时间被设置为一个曝光时间值,该曝光时间值表示用于考虑中的较长曝光时间帧的曝光时间值上的减少。在此情况下,曝光不足像素计数表示黑色像素的数量,且曝光不足像素目标计数在考虑中的那个帧内的像素总数的大约1~5%的范围以内。对于将要被捕捉的下一个较长曝光时间帧的曝光时间设置为表示用于考虑中的较长曝光时间帧的曝光时间值上的减少的曝光时间值,这需要将考虑中的较长曝光时间帧的曝光时间值乘以一个比率,该比率是表示黑色像素的强度值处的照相机响应函数的倒数与表示最高强度值的强度值处的照相机响应函数的倒数的比率;该最高强度值是在按始于最小值的强度值排序时,从考虑中的较长曝光时间帧的前1%的像素之中获得的。
一旦试验性地设置了接下来的较短和较长曝光时间帧的曝光时间,就确定这些新的曝光时间值的比率是大于还是等于规定的最大容许曝光时间比。只要发现该比率大于或等于规定的最大容许曝光时间比,就重新设置这些曝光时间值。这是通过平衡与考虑中的较短曝光时间帧相关联的曝光过度像素计数和与考虑中的较长曝光时间帧相关联的曝光不足像素计数,来为接下来的较长和较短曝光时间帧建立修订曝光时间值来实现的;该修订的曝光时间值不会使这些曝光时间值的比率超过规定的最大容许曝光时间比。更具体而言,通过将曝光过度像素计数的一半与曝光不足像素计数的一半相加,来计算考虑中的较短曝光时间帧的修订曝光过度像素计数。然后,使用为较短曝光时间帧生成的强度直方图,来找出与该修订的曝光过度像素计数相关联的强度值。接下来,将考虑中的较短曝光时间帧的曝光时间值乘以表示饱和像素的强度值处的照相机响应函数的倒数与同修订的曝光过度像素计数相关联的强度值处的照相机响应函数的倒数的比率,来产生要捕捉的下一个较短曝光时间帧的曝光时间值。最后,通过将为要捕捉的下一个较短曝光时间帧计算的曝光时间乘以规定的最大容许曝光时间比,来设立要捕捉的下一个较长曝光时间帧的曝光时间。
但是,如果发现先前计算的试验性曝光时间值的比率不大于或等于规定的最大容许曝光时间比,那么改为首先确定考虑中的较短曝光时间帧的曝光过度像素计数是否大于曝光过度像素目标计数。如果是,那么要捕捉的下一个较短曝光时间帧的曝光时间被设置为一个曝光时间值,该曝光时间值表示用于考虑中的较短曝光时间帧的曝光时间值上的减少。这是通过使用碰撞过程(bump procedure)来实现的,碰撞过程指定与考虑中的较短曝光时间帧相关联的曝光时间值将要被减少以产生在捕捉下一个较短曝光时间帧的过程中使用的曝光时间值的百分比。
接下来,确定考虑中的较长曝光时间帧的曝光不足像素计数是否大于曝光不足像素目标计数。如果是,那么要捕捉的下一个较长曝光时间帧的曝光时间被设置为一个曝光时间值,该曝光时间值表示用于考虑中的较长曝光时间帧的曝光时间值上的增加。这是通过使用碰撞过程来实现,这次,碰撞过程指定了与考虑中的较长曝光时间帧相关联的曝光时间值将要被增加以产生在捕捉下一个较长曝光时间帧的过程中使用的曝光时间值的百分比。
然后,这些最后设立的曝光时间值用来捕捉该视频的接下来的较短和较长曝光时间帧,除非确定这些曝光时间值的比率大于或等于规定的最大容许曝光时间比。如果是,那么通过平衡与考虑中的较短曝光时间帧相关联的曝光过度像素计数和与考虑中的较长曝光时间帧相关联的曝光不足像素计数,来设立要捕捉的这些帧的修订曝光时间值,可以重新设置要捕捉的下一个较长曝光时间帧的曝光时间值以及要捕捉的下一个较短曝光时间帧的曝光时间值;该修订的曝光时间值不会使曝光时间值的比率超过规定的最大容许曝光时间比。这是如上所述来实现的。
涉及识别考虑中的帧与前导和后续相邻帧之间的对应像素的HDR视频生成系统和过程的该部分被实现如下。直接前一个相邻帧单向翘曲,以产生该前一个帧与考虑中的帧的近似对准。同样,直接后一个相邻帧单向翘曲,以产生该后一个帧与考虑中的帧的近似对准。此外,这前一个和后一个帧都单向翘曲,以产生表示这些相邻帧与考虑中的帧的近似对准的内插帧。单向和双向翘曲可在对准中创建冗余,该冗余以后被用来增加对对准误差的容许度。注意,用来实现前述翘曲的方法根据这两个相邻帧是较短曝光时间帧还是较长曝光时间帧而变化,并且在某些情况下根据三个连续帧是否具有都不同的曝光时间而变化。
在都是短曝光时间帧(不管其曝光时间是否匹配)的直接前导或后续相邻帧的情况下,二者之一的单向翘曲涉及首先增强相邻帧的强度,以便实质上与考虑中的较长曝光时间帧的强度范围相匹配。通过将标准前向翘曲技术用于前一个帧并将标准后向翘曲技术用于后一个帧,将正被翘曲的相邻帧与考虑中的帧对准。相反,如果前导或后续相邻帧都是长曝光时间帧(同样不管其曝光时间是否匹配),那么,前一个帧的单向翘曲涉及首先增强考虑中的较短曝光时间帧的强度,以便实质上与前一个帧的强度范围相匹配,然后,通过使用标准前向翘曲技术,将前一个帧与考虑中的帧对准。然而,后一个帧的单向翘曲涉及首先增强考虑中的较短曝光时间帧的强度,以便实质上与后一个帧的强度范围相匹配,然后,通过使用标准后向翘曲技术,将后一个帧与考虑中的帧对准。
对于在考虑中的帧是较长曝光时间帧,且前导和后续帧是具有实质上相同的曝光时间的较短曝光时间帧的情况下的相邻帧的双向翘曲,使用以下过程。首先,分别为前导和后续帧计算双向流动场(flow field)。然后,使用为该帧计算的双向流动场来使前一个帧翘曲,以产生前向翘曲帧;并使用为该帧计算的双向流动场来使后一个帧翘曲,以产生后向翘曲帧。组合该前向翘曲帧和该后向翘曲帧,以产生内插帧。接下来,增强该内插帧的强度,以便实质上与当前考虑中的较长曝光时间帧的强度范围相匹配。然后,建立细化流动场,该细化流动场最佳地将强度增强的内插帧映射到考虑中的较长曝光时间帧。通过将前向流动场与细化流动场串接,来计算细化前向流动场;并且,通过将后向流动场与细化流动场串接,来计算细化后向流动场。然后,细化前向流动场和细化后向流动场被分别应用于原始的前导和后续帧,以分别产生细化前向翘曲帧和细化后向翘曲帧。
在使相邻帧双向翘曲的情况下,其中,考虑中的帧是较长曝光时间帧,前导和后续帧是具有实质上不同的曝光时间的较短曝光时间帧;该过程通过确定与前一个帧相关联的曝光时间是短于还是长于与后一个帧相关联的曝光时间开始。只要确定与前一个帧相关联的曝光时间较短,就增强前一个帧的强度,以便实质上与后一个帧的强度范围相匹配。只要确定与前一个帧相关联的曝光时间长于与后一个帧相关联的曝光时间,就增强后一个帧的强度,以便实质上与前一个帧的强度范围相匹配。然后,分别为前导和后续帧计算双向流动场。使用为该帧计算的双向流动场来使前一个帧翘曲,以产生前向翘曲帧;使用为该帧计算的双向流动场来使后一个帧翘曲,以产生后向翘曲帧,注意,翘曲帧是前一个或后一个帧的强度增强版本,视情况而定。组合该前向翘曲帧和该后向翘曲帧,以产生内插帧。接下来,增强该内插帧的强度,以便实质上与当前考虑中的较长曝光时间帧的强度范围相匹配。然后,建立细化流动场,该细化流动场最佳地将强度增强的内插帧映射到考虑中的较长曝光时间帧。通过将前向流动场与细化流动场串接,来计算细化向前流动场;并且,通过将后向流动场与细化流动场串接,来计算细化后向流动场。然后,细化前向流动场和细化后向流动场被分别应用于原始的前导和后续帧,以分别产生细化前向翘曲帧和细化后向翘曲帧。
在考虑中的帧是较短曝光时间帧,且前导和后续帧是具有实质上相同的曝光时间的较长曝光时间帧的情况下,相邻帧的双向翘曲被实现如下。首先,为前导和后续帧计算双向流动场。然后,使用为该帧计算的双向流动场来使前一个帧翘曲,以产生前向翘曲帧;并且,使用为该帧计算的双向流动场来使后一个帧翘曲,以产生后向翘曲帧。组合该前向翘曲帧和该后向翘曲帧,以产生内插帧。接下来,增强考虑中的帧的强度,以便实质上与前导和后续帧的平均强度范围相匹配。然后,建立细化流动场,该细化流动场最佳地将该内插帧映射到考虑中的强度增强帧。通过将前向流动场与细化流动场串接,来计算细化前向流动场;并且,通过将后向流动场与细化流动场串接,来计算细化后向流动场。然后,细化前向流动场和细化后向流动场被分别应用于原始的前导和后续帧,以分别产生细化前向翘曲帧和细化后向翘曲帧。
最后,在使相邻帧双向翘曲的情况下,其中,考虑中的帧是较短曝光时间帧,且前导和后续帧是具有实质上不同的曝光时间的较长曝光时间帧;该过程通过确定与前一个帧相关联的曝光时间是短于还是长于与后一个帧相关联的曝光时间开始。只要确定与前一个帧关联的曝光时间较短,就增强前一个帧的强度,以便实质上与后一个帧的强度范围相匹配。只要确定与前一个帧相关联的曝光时间长于与后一个帧相关联的曝光时间,就增强后一个帧的强度,以便实质上与前一个帧的强度范围相匹配。然后,分别为前导和后续帧计算双向流动场。使用为该帧计算的双向流动场来使前一个帧翘曲,以产生前向翘曲帧;使用为该帧计算的双向流动场来使后一个帧翘曲,以产生后向翘曲帧。组合该前向翘曲帧和该后向翘曲帧,以产生内插帧。接下来,增强考虑中的帧的强度,以便实质上与前导和后续帧的平均强度范围相匹配。然后,建立细化流动场,该细化流动场最佳地将该内插帧映射到考虑中的强度增强帧。通过将前向流动场与细化流动场串接,来计算细化前向流动场;并且,通过将后向流动场与细化流动场串接,来计算细化后向流动场。然后,细化前向流动场和细化后向流动场被分别应用于原始的前导和后续帧,以分别产生细化前向翘曲帧和细化后向翘曲帧。
如下,在考虑中的帧是较长曝光时间帧,且相邻的前导和后续帧是较短曝光时间帧的情况下,为每个相邻的帧计算前述双向流动场。首先,通过估算将一个映射到另一个上的仿射变换,来全局地对准前导和后续帧。然后,计算密集运动场(dense motion field)。这个运动场表示对全局变换的局部纠正,并且使用基于梯度的光流来加以计算。更具体而言,Lucas与Kanade技术[4]的变体用于拉普拉斯金字塔状构架中,其中,前导和后续帧朝向对应于考虑中的帧的时间索引的时间k翘曲,并且,在该金字塔的每一级处的两个翘曲图像的每个像素之间估算残留流动向量。累积为该金字塔的每一级处的每个像素而计算的这些残留流动向量,以建立密集运动场的局部分量。一旦计算密集运动场的这些局部分量,就为双向流动场内的每个像素位置建立合成向量。这个合成向量是从仿射变换导出的仿射分量和从密集运动场获取的局部分量的总和;在前一个帧的流动场的情况下,该仿射变换被重新按比例缩放以从前一个帧翘曲到前向翘曲帧,或者在后一个帧的流动场的情况下,该仿射变换被重新按比例缩放以从后一个帧翘曲到后向翘曲帧;该密集运动场形成对该仿射分量的局部纠正。然后,视情况而定,使用二元三次翘曲技术来沿适当的合成向量转移每个像素,以形成前述前向或后向翘曲帧。
当两者可用时,通过对来自组合内插帧的像素位置的前向和后向翘曲帧中的像素值求平均值,可以实现先前描述的组合前向翘曲帧和后向翘曲帧以产生组合内插帧的动作。只要只可从关于内插帧的像素位置的前向和后向翘曲帧中获得一个像素值,就使用该可用像素值来建立该像素位置处的组合内插帧的像素值。在从内插帧的像素位置的前向和后向翘曲帧中无法获得像素值的情况下,通过使用零运动向量对这两个像素值求平均值,在该像素位置处建立组合内插帧的像素值。
先前描述的计算细化流动场的动作被实现如下。首先,在考虑中的帧与强度增强内插帧之间计算全局单应性。然后,考虑中的帧被分割成各个重叠象限。该重叠较佳地在大约5%与大约20%之间。对于这些象限中的每个象限,确定考虑中的象限内的像素之中的强度变更是否超过规定的变更阈值。如果是,那么使用该全局单应性在内插帧内标识考虑中的象限的相对区域。然后,计算考虑中的象限与内插帧内的所标识的相对区域之间的局部单应性。然后,对考虑中的象限,确定使用局部单应性的每像素对准误差是否小于使用全局单应性的每像素对准误差。只要确定使用局部单应性的每像素对准误差小于使用全局单应性的每像素对准误差,都将局部单应性分配给考虑中的象限。否则,将全局单应性分配给考虑中的象限。只要已将局部单应性分配给该象限,就使用该局部单应性来建立与考虑中的象限相关联的细化流动场的该部分。在由于强度变更测试未通过而没有计算局部单应性或将全局单应性分配给象限的情况下,使用全局单应性来建立与该象限关联的细化流动场的该部分。这样,这个过程可以是分层的,即,它可以被递归地应用于每个局部单应性,该每个局部单应性随后被视作下一个较高等级处的全局单应性。最后,羽化(即加权平均)技术可以被应用于驻留在这些象限的重叠区域内的流动分量,以最小化跨越最后得到的细化流动场的流动中断。
被应用于驻留在象限的重叠区域内的流动分量的羽化技术可以是任何期望的。但是,在HDR视频生成系统和过程的测试版本中,羽化技术涉及线性加权技术。更具体而言,在只有两个象限重叠的任何地方,一维线性加权被应用于每个像素位置,以便从与每个重叠象限关联的单应性中导出的该位置的流动分量的该部分与它离具有各自重叠象限的重叠区域的边界的距离成比例。像素位置离所述边界之一越近,从与邻近那个边界的象限相关联的单应性中导出的流动分量的该部分就越大。在所有四个象限重叠的情况下,二维线性加权被应用于具有相同结果的每个像素位置。即,从与每个重叠象限相关联的单应性中导出的位置的流动分量的该部分与它离具有各自重叠象限的重叠区域的边界的距离成比例。
在考虑中的帧是较短曝光时间帧,且相邻的前导和后续帧是较长曝光时间帧的情况下,按相同的方法为每个相邻帧计算前述双向流动场。也按类似的方式来计算细化流动场,不同指出在于:在考虑中的帧的强度增强版本与后一种情况下的组合内插帧之间计算全局单应性。此外,考虑中的帧的强度增强版本被分割成各个重叠象限。
如上所述,HDR视频生成系统和过程的一个部分涉及在每个对应像素集中标识表示可信像素的至少一个像素,并且使用与这一个或多个所标识的可信像素相关联的像素色彩信息来计算该像素集的发光度值,以形成表示HDR视频的帧的发光度图。这一点可以被实现如下。首先,考虑中的帧、单向翘曲的前一个帧、单向翘曲的后一个帧、双向翘曲的前一个帧、以及双向翘曲的后一个帧的每一个被转换成单独的发光度图像。注意,原始帧(不是强度增强帧)是从发光度计算中翘曲和使用的帧。强度增强帧只用来计算流动场。
使用这些发光度图像来计算最终的发光度图。最终的发光度图中的给定像素位置处的每个发光度值要么从与考虑中的帧相关联的发光度图像中获取,要么是从前述被转换的发光度图像中的同一个像素位置中获取的两个或多个发光度值的加权组合,取决于根据考虑中的帧内的该像素位置处的像素的强度,哪些值被认为是可信的。更具体而言,在考虑中的帧是较长曝光时间帧,且前导和后续帧是较短曝光时间帧的情况下,如下产生发光度图。一旦前述帧已被转换成发光度图像,就标识考虑中的帧内具有超过规定的最大强度阈值的强度值的每个像素,并且,与双向翘曲的前一个帧和双向翘曲的后一个帧内的同一位置相关联的发光度值的平均数被分配为发光度图中的对应像素位置的发光度值。此外,标识考虑中的帧内具有小于规定的最大阈值的强度值的每个像素,并且,对于这些像素位置中的每个像素位置,确定被分配给单向翘曲的前一个帧和单向翘曲的后一个帧内的对应位置的发光度值是否在被分配给考虑中的帧内的同一位置的发光度值的最大容许噪声偏差以外。如果否,那么计算所有三个发光度值的加权平均值,并被分配为发光度图中的该像素位置的发光度值。但是,如果发现被分配给单向翘曲的前一个帧或单向翘曲的后一个帧内的像素位置的发光度值中的一个发光度值在最大容许噪声偏差以外,但另一个发光度值不在最大容许噪声偏差以外,那么计算被分配给考虑中的帧以及其发光度值没有超出该偏差的单向翘曲帧内的像素位置的发光度值的加权平均值。然后,分配这个加权平均值,作为发光度图中的该像素位置的发光度值。最后,如果发现被分配给单向翘曲的前一个帧和单向翘曲的后一个帧内的像素位置的发光度值都在该偏差以外,那么,分配被分配给考虑中的帧内的像素位置的发光度值,作为发光度图中的该像素位置的发光度值。
在考虑中的帧是较短曝光时间帧,且前导和后续帧是较长曝光时间帧的情况下,如下产生发光度图。一旦前述帧已被转换成发光度图像,就标识考虑中的帧内具有超过规定的最小强度阈值的强度值的每个像素。对于这些像素位置中的每个像素位置,确定被分配给单向翘曲的前一个帧和单向翘曲的后一个帧内的对应位置的发光度值是否在被分配给考虑中的帧内的同一位置的发光度值的最大容许噪声偏差以外。如果否,那么计算所有三个发光度值的加权平均值,并被分配为发光度图中的该像素位置的发光度值。但是,如果发现被分配给单向翘曲的前一个帧或单向翘曲的后一个帧内的像素位置的发光度值中的一个发光度值不在该偏差以外,但另一个发光度值在该偏差以外,那么,计算被分配给考虑中的帧以及其发光度值没有超出该偏差的单向翘曲帧内的像素位置的发光度值的加权平均值。然后,分配这个加权平均值,作为发光度图中的对应像素位置的发光度值。最后,如果发现被分配给单向翘曲的前一个帧和单向翘曲的后一个帧内的像素位置的发光度值都在该偏差以外,那么,分配被分配给考虑中的帧内的像素位置的发光度值,作为发光度图中的该像素位置的发光度值。最终,标识考虑中的帧内具有在规定的最小强度阈值以下的强度值的每个像素,并且,对于发光度图中的对应像素位置,分配与双向翘曲的前一个帧和双向翘曲的后一个帧内的同一位置相关联的发光度值的平均数,作为发光度值。
HDR视频生成系统和过程也可以涉及发光度图的色调映射,以便将它转换成适用于呈现和显示的HDR帧的8位表示。一般而言,这需要首先将发光度图转换成CIE空间,并恢复色度坐标,以产生亮度图像。接下来,压缩该亮度图像的动态范围,并重新插入色度。然后,转换CIE空间图像,以产生最终的8位范围RGB图像。但是,在逐帧的基础上应用这个过程是不够的,因为这会导致映射中可见的时间不一致性。为了补偿这一点,本色调映射过程使用来自邻近帧的统计量,以便产生在时间内平稳变化的色调映射图像。更具体而言,该色调映射过程背离该标准,体现在:动态范围压缩涉及使用来自考虑中的帧和至少一个先前的帧的信息来计算平均和最大亮度。
注意,先前所描述的分层全局对准过程在HDR视频帧的生成以外也有应用。一般而言,这个过程可以用来建立流动场,该流动场将场景的任何一个图像映射到该场景的另一个图像。当局限于仅仅两个分层等级时,该过程本质上与上述的相同。但是,如果规定两个以上的等级,那么使用扩展过程。即,在规定两个或多个等级的情况下,用于建立将场景的一个图像映射到场景的另一个图像的流动场的分层全局对准过程被实现如下。首先,在这些图像之间计算全局单应性。然后,这些图像之一被分割成各个重叠象限。对于这些象限中的每个象限,确定考虑中的象限内的这些像素之中的强度变更是否超过规定的变更阈值。如果是,那么使用全局单应性在非分割图像中标识考虑中的象限的相对区域。接下来,在考虑中的象限与非分割图像中所标识的相对区域之间计算局部单应性。然后,对考虑中的象限确定使用局部单应性的每像素对准误差是否小于使用全局单应性的每像素对准误差。只要确定使用局部单应性的每像素对准误差小于使用全局单应性的每像素对准误差,就将局部单应性分配给考虑中的象限。否则,将全局单应性分配给考虑中的象限。
然后,对于二以上的每一规定的分层等级,与前一等级相关联的每个象限(通过强度变更测试)被分割成表示当前分层等级的象限的各个重叠象限。对于当前等级中的每个象限,确定考虑中的象限内的这些像素之中的强度变更是否超过规定的变更阈值。如果是,那么使用单应性在非分割图像中标识考虑中的象限的相对区域,该单应性被分配给从中分割当前等级中的考虑中的象限的前一等级中的象限。然后,在考虑中的象限与非分割图像中所标识的相对区域之间计算局部单应性。然后,确定使用在考虑中的象限与非分割图像中所标识的相对区域之间计算的局部单应性的每像素对准误差是否小于使用被分配给前一等级中的象限(从中分割当前等级中的考虑中的象限)的单应性的每像素对准误差。只要确定使用在考虑中的象限与非分割图像中所标识的相对区域之间计算的局部单应性的每像素对准误差较小,就将局部单应性分配给考虑中的象限。否则,将被分配给前一等级中的象限(从中分割当前等级中的考虑中的象限)的单应性分配给考虑中的象限。
对于每个分层等级中本身未被进一步分割成各个象限的每个象限,使用为该象限计算并且被分配给该象限的单应性来计算与考虑中的象限相关联的流动场的一部分。否则,使用被分配给前一等级中的象限的单应性来计算与考虑中的象限相关联的流动场的该部分,从该前一等级中的象限中分割当前等级中的考虑中的象限。最后,羽化技术可以被应用于驻留在象限的重叠区域内的流动分量,以最小化跨越所得的流动场的流动中断。
除了刚刚描述的好处以外,通过结合附图阅读以下详细描述,本发明的其他优点将变得一目了然。
用于实现本发明的最佳模式
在以下本发明的较佳实施例的描述中,参考附图,附图构成本发明的一部分,并通过举例说明示出了可以在其中实践本发明的具体实施例。可以理解,在不脱离本发明的范围的前提下,可以利用其他实施例,并可以进行结构上的更改。
1.0
HDR视频生成系统计算环境
在描述本发明的较佳实施例之前,将简要概括地描述可以在其中实现本发明的合适的计算环境。图1示出了合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,它并不意在对本发明的使用范围或功能提出任何限制。也不应该将计算环境100解释为对示例性操作环境100中所示的任何一个组件或组件组合具有任何依赖或要求。
本发明可利用众多其他的通用或专用计算系统环境或配置来操作。可能适用于本发明的众所周知的计算系统、环境和/或配置的例子包括(但不局限于)个人计算机、服务器计算机、手持设备或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。
可以在正由计算机执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本发明,在分布式计算环境中,由通过通信网络连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括记忆存储设备的本地和远程计算机存储介质中。
参照图1,用于实现本发明的示例性系统包括采取计算机110形式的通用计算设备。计算机110的组件可以包括(但不局限于)处理单元120、系统存储器130和系统总线121,系统总线121将包括系统存储器的各种系统组件耦合到处理单元120。系统总线121可以是几种类型的总线结构中的任一种,包括存储总线或存储控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。举例来讲(不作限制),这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称作Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110存取的任何可用介质,它包括易失性和非易失性介质、可移动和不可移动介质。举例来讲(不作限制),计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括用储存例如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁性存储设备、或可以被用来存储所需信息并可以由计算机110存取的其他任何介质。通信介质通常具体化为已调制数据信号(例如,载波或其他传送机制)中的计算机可读指令、数据结构、程序模块或其他数据,它包括任何信息传递介质。术语“已调制数据信号”指这样一种信号,其一个或多个特征按为该信号中的信息编码的方式来加以设置或更改。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络或直线连接)和无线介质(例如,声音、RF、红外线和其他无线介质)。以上任何内容的组合也应该被包括在计算机可读介质的范围以内。
系统存储器130包括采取易失性和/或非易失性存储器(例如,只读存储器(ROM)131和随机存取存储器(RAM)132)的形式的计算机存储介质。基本输入/输出系统133(BIOS)通常被存储在ROM 131中,该基本输入/输出系统包含有助于在计算机110内的各个元件之间传送信息(例如,在启动期间)的基本例程。RAM 132通常包含可立即由处理单元120存取和/或目前正由处理单元120操作的数据和/或程序模块。举例来讲(不作限制),图1示出了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。只举例来讲,图1示出了从不可移动非易失性磁介质读取或对其写入的硬盘驱动器141、从可移动非易失性磁盘152读取或对其写入的磁盘驱动器151、以及从可移动非易失性光盘156(例如,CD ROM或其他光学介质)读取或对其写入的光盘驱动器155。可以用于该示例性操作环境的其他可移动/不可移动、易失性/非易失性计算机存储介质包括(但不局限于)卡型盒式磁带机、闪存卡、数字通用光盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储器接口(例如,接口140)而被连接到系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器接口(例如,接口150)连接到系统总线121。
以上所讨论和图1中所示的驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意,这些组件可以等同于或不同于操作系统134、应用程序135、其他程序模块136和程序数据137。这里为操作系统144、应用程序145、其他程序模块146和程序数据147提供不同的标号,以说明它们至少是不同的副本。用户可以通过输入设备(例如,键盘162和通常被称作鼠标、跟踪球或触垫的定点设备161),来将命令和信息输入计算机110。其他输入设备(未示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其他输入设备经常通过被耦合到系统总线121的用户输入接口160而被连接到处理单元120,但也可能由其他接口和总线结构(例如,并行端口、游戏端口或通用串行总线(USB))来连接。监视器191或其他类型的显示设备也经由接口(例如,视频接口190)而被连接到系统总线121。除监视器以外,计算机也可以包括其他外围输出设备(例如,扬声器197和打印机196),这些外围输出设备可以通过输出外围接口195来连接。对于本发明而言特别重要的是,能够捕捉一连串图像164的照相机163(例如,数字/电子静止照相机或摄像机、或胶片/照片扫描仪)也可以被包括在内,作为个人计算机110的输入设备。另外,只描绘了一个照相机,但可以包括多个照相机,作为个人计算机110的输入设备。来自这一个或多个照相机的图像164经由适当的照相机接口165而被输入计算机110。接口165被连接到系统总线121,从而允许这些图像被发送到RAM 132或与计算机110关联的其他数据存储设备之一并被存储于其中。但是,注意,图像数据也可以从任何上述计算机可读介质被输入计算机110,而不要求使用照相机163。
计算机110可以使用与一台或多台远程计算机(例如,远程计算机180)的逻辑连接而在网络化环境中进行操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,它通常包括以上相对于计算机110描述的许多或所有元件,尽管图1中只示出了记忆存储设备181。图1中所描绘的这些逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这类网络环境在办公室、企业范围计算机网络、内联网和因特网中很普遍。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170而被连接到LAN 171。当用于WAN网络环境中时,计算机110通常包括调制解调器172或用于通过WAN 173(例如,因特网)建立通信的其他装置。调制解调器172(可以是内置的,也可以是外置的)可以经由用户输入接口160或其他适当的机制而被连接到系统总线121。在网络化环境中,相对于计算机110或其各个部分而描绘的程序模块可以被存储在远程记忆存储设备中。举例来讲(不作限制),图1将远程应用程序185示为驻留在存储设备181上。将会理解,所示的网络连接起示例性的作用,可以使用在这些计算机之间建立通信链路的其他手段。
现在已讨论了示例性操作环境,本描述章节的剩余部分将致力于描述实施本发明的程序模块。通常,根据本发明的系统和过程涉及从在改变每个帧的曝光时间的同时捕捉的视频图像序列中生成“高动态范围”(HDR)视频。一般而言,如图2中的高级流程图所示,经由以下过程动作来实现这一点:
a)在改变每个帧的曝光时间的同时捕捉视频图像序列,以便根据前导视频帧内的像素亮度分布的函数在显示出较短曝光时间和较长曝光时间的各个帧之间交替(过程动作200);
b)对于规定数量的启动帧之后的每隔视频帧,标识考虑中的帧与前导和后续邻近帧之间的对应像素(过程动作202);
c)对于对应像素集中的每个像素集,标识该集合中表示可信像素的至少一个像素,然后使用与每个集合中的可信像素相关联的像素色彩信息来计算该像素集的发光度值,从而形成表示HDR视频的帧的发光度图(过程动作204);以及,
d)执行色调映射过程,以将该发光度图转换成适用于呈现和显示的HDR帧的8位表示(过程动作206)。
2.0
实时曝光时间控制
典型摄像机的自动增益控制(AGC)测量场景的亮度,并计算适当的曝光时间。大多数场景具有比照相机的每像素传感器8位可以捕捉到的更大的动态范围。由于这一点,不管曝光时间设置如何,一些像素将会饱和,一些像素将会曝光不足。为了捕捉更大的动态范围,本HDR视频系统在每一帧的基础上改变曝光时间设置。总的概念是依次对适当地使场景的黑暗区域和明亮区域曝光的不同的值之间的设置进行排序。
如今的许多静止图像照相机允许自动划界(auto bracketing)。当对场景自动划界时,照相机经由当前计量模式来确定正确的曝光时间,然后另外以较短和较长曝光时间来捕捉场景。本HDR视频系统修改这个方法,在于不是利用中间曝光时间的固定倍数来划界,而是自动确定更适合于场景的一组曝光时间。
例如,在测试实施例中,使用具有可编程控制单元的常规数字摄像机。利用一排四快门(CCD集成时间)与增益(ADC增益)寄存器来更新该照相机的固件。在正常操作期间,使用在每个帧时间使用不同的寄存器设置,照相机执行循环通过该排。此外,照相机用当前设置标记每个帧,以便可以在发光度图计算期间使用它们。在这个捕捉阶段的测试实施例中,照相机的所有当前设置被标记为正被捕捉的每个帧的元数据。实时AGC算法确定下一组的四项设置。这些曝光时间设置在两个不同的值之间交替。更具体而言,从场景统计量中自动确定适当的曝光时间,在二次采样的帧上计算这些场景统计量。同等地加权帧的所有部分,因为在生成HDR图像的过程中,目标通常是在各处提供色调细节。连续不断地更新这两个曝光时间,以反映场景变化。图3示出照相机所捕捉的一对接连的帧的例子,图4示出发光度空间中对应的直方图。图4中左边的曲线图对应于图3的左边所示的长曝光时间帧,而图4中右边的曲线图对应于图3的右边所示的短曝光时间帧。从图3和图4中可清楚,单一曝光时间并不足以捕捉该场景的发光度范围。但是,注意,这两个曲线图的组合跨越比任何一个曝光时间可以捕捉到的更大的发光度范围。在本系统中,有利地使用这项观察结果,现在将解释这一点。
设计本HDR视频系统,以便最小化长曝光时间与短曝光时间之间的曝光时间比,而同时允许容纳更大范围的场景发光度。这可增加用于在两个帧内进行匹配的像素的数量。
参考图5A-B,计算将用于捕捉后续帧的曝光时间设置的过程中的第一个步骤是为一对直接的前导已捕捉帧中的每个帧计算强度直方图(过程动作500)。系统使用这些直方图以及几个可编程约束来计算相同数量的帧的后一曝光时间设置。这些约束是最大曝光时间比、曝光过度(饱和)目标像素计数、以及曝光不足(黑色)目标像素计数。在本HDR视频生成过程的测试实施例中,最大曝光时间比被设置为16,曝光过度目标像素计数被设置为像素总数的1%,曝光不足目标像素计数也被设置为像素总数的1%。但是,并不意在将本发明限于测试实施例中所使用的值。例如,最大曝光时间比可以被设置在从大约1到大约32的范围以内。同样,曝光过度目标像素计数可以被设置在大约1~5%的范围以内,其中,当考虑中的帧内所描绘的场景相对黑暗时,目标计数将会更高。曝光不足目标像素计数也可以被设置在大约1~5%的范围以内。在后一种情况下,当考虑中的帧内所描绘的场景相对明亮时,目标计数将会被设置得更高。
注意,上述被分析以计算关于同样要捕捉的相似数量的后续帧的曝光时间设置的这对先前捕捉的帧要求捕捉一些帧(即至少两个)来对过程进行初始化。可以使用照相机的正常曝光时间设置特征(将选择“中间”曝光时间设置)来捕捉这些初始帧,或者,一组规定的曝光时间值可以用程序引导系统。
在自动增益过程的以下描述中,被分析的帧的规定数量将被假设为二。这是对典型应用的良好选择。但是,如果知道正被捕捉的场景将显示出非常大的亮度范围(例如,在明亮的白天看到的黑暗的室内场景),那么,仅仅使用两个曝光时间可能是不够的。增加接连的帧之间的曝光时间间隙将会更好地捕捉动态范围,但将会使下文讨论的图像对准过程更易损坏,并将会导致中间色调内的图像噪声增加。使用两个以上曝光时间是另一个选项,但类似的曝光时间(其中,对准具有最佳的成功机会)随后在时间上相隔更远,从而又导致潜在的对准和内插问题。这样,除非预期非常大的亮度范围,否则,分析两个曝光时间是较佳的,以防止上述问题。
再次参考图5A-B,通过确定与被捕捉的最后两个帧相关联的曝光时间设置是否相等(例如,长曝光时间设置值/短曝光时间设置值之比是1),该过程在过程动作502中继续。如果它们相等,那么,还对较短曝光时间帧确定其曝光过度像素计数(例如,具有等于典型的8位强度表示中的255的强度值的像素的数量,这些像素经常被称作“饱和像素”)是否小于上述曝光过度像素计数目标,以及较低曝光时间帧的曝光不足像素计数(例如,具有等于典型的8位强度表示中的大约16或更少的强度值的像素的数量,这些像素经常被称作“黑色像素”)是否小于上述曝光不足像素目标计数(过程动作504)。如果是,那么,为将要捕捉的下一对较短和较长曝光时间帧选择新的曝光时间设置,使得与考虑中的适当的帧相关联的直方图在像素值范围内居中(过程动作506)。这是使用以下公式来实现的:
其中,Fresponse是用来捕捉帧的照相机的响应函数,Fresponse(128)表示在像素值范围的中心的照相机的响应(假设0-255个亮度级的8位表示),Fresponse(x)表示亮度级“x”(它在此情况下对应于上述亮度直方图当前居中的等级)处的照相机的响应,exp0是与考虑中的帧相关联的曝光时间等级,exp1是新的曝光时间等级。然后,应用修订的曝光时间设置,来捕捉该视频的下两个帧(过程动作508)。注意,可以使用任何适当的技术,但在本HDR视频生成系统的测试实施例中,使用[6]的技术来计算Fresponse。
但是,如果过程动作502或504的前述条件没有得到满足,那么,在过程动作510中,为具有较短曝光时间设置的帧确定曝光过度计数是否远小于目标计数(例如,如果曝光过度目标计数被设置在大约1%,则是帧内像素总数的大约0.25%)。如果否,那么,短曝光时间设置值(即为考虑中的那对帧中的短曝光时间帧分配的曝光时间)不会更改。但是,如果发现曝光过度计数远小于其目标计数,那么,短曝光时间设置值增加(过程动作512)。这是通过使用以下公式计算新的短曝光时间设置来实现的:
其中,Fresponse(255)表示亮度饱和等级处的照相机的响应(假设0-255个亮度级的8位表示),Fresponse(x99%)表示亮度级“x99%”(当按始于最小值的亮度级来排序时,它是在像素的前99%之中获得的最高等级)处的照相机的响应,exp0short是与具有较短曝光时间值的帧相关联的曝光时间等级,exp1short是新的较短曝光时间等级。用于确定x99%值的一个容易的方法是为较短曝光时间帧计算累积直方图。
无论是否更改短曝光时间设置,接下来在过程动作514中都确定较长曝光时间帧的曝光不足计数是否远小于其目标(例如,如果曝光不足目标计数被设置在大约1%,则只是帧内像素总数的大约0.25%)。如果否,那么不更改长曝光时间设置值(即为考虑中的那对帧中的长曝光时间帧分配的曝光时间)。但是,如果确定曝光不足计数远小于其目标,那么,长曝光时间设置值减少(过程动作516)。这是通过使用以下公式计算新的长曝光时间设置来实现的:
其中,Fresponse(BlkValue)表示与黑色像素(通常是亮度级的8位表示中的大约16或更少)相关联的亮度级处的照相机的响应,Fresponse(x1%)表示亮度级“x1%”(当按始于最小值的亮度级排序时,它是在像素的前1%之中获得的最高等级)处的照相机的响应,exp0long是与具有较长曝光时间值的帧相关联的曝光时间等级,exp1long是新的较长曝光时间等级。用于确定x1%值的一种容易的方法是为较长曝光时间帧计算累积直方图。
无论是否更改长曝光时间设置,接下来在过程动作518中都确定:对于长、短曝光时间帧,所更改的或采取其他措施的曝光时间设置的比率(例如,长曝光时间设置值/短曝光时间设置值)是大于还是等于上述规定的最大容许比率(R)。如果是,那么,选择分别被分配给将要捕捉的下两个帧的短、长曝光时间设置,以便平衡考虑中的较短和较长曝光时间帧的曝光过度和曝光不足像素计数,而不会超过最大比率(过程动作520)。该平衡被实现如下。本质上,通过使用以下公式,从与在考虑中的那对帧的较短曝光时间设置处捕捉的帧相关联的直方图中,首先计算新的曝光过度像素计数(Satnew):
Satnew=Satold+(Blkold-Satold)/2=Satold/2+Blkold/2 (4)
其中,Satold是较短曝光时间帧的曝光过度像素计数,Blkold是较长曝光时间帧的曝光不足像素计数。然后,通过在与较短曝光时间帧相关联的上述累积直方图上找出Satncw并读取对应的亮度级,使用新的曝光过度计数(Satnew)来确定亮度值(xSatnew)。然后,使用以下公式来计算将要捕捉的短曝光时间帧的新的曝光时间等级:
一旦计算了较短曝光时间帧的新的曝光时间等级,将要捕捉的较长曝光时间帧的新的曝光时间等级就被建立为:
exp1long=exp1short×R (6)
但是,如果在过程动作518中确定关于长、短曝光时间帧的曝光时间设置之比不相等或超过规定的最大值(R),那么使用不同的过程。即,首先确定较短曝光时间帧的曝光过度计数是否大于曝光过度目标计数(过程动作522)。如果是,那么短曝光时间设置值减少(过程动作524)。在此情况下,使用规定的减少“碰撞”时间表。这涉及:如果对于处理直接在当前考虑中的那对帧前面的较短曝光时间帧没有减少这个值,那么,将短曝光时间设置减少第一个规定的量(例如,该过程的测试实施例中的10%)。换言之,如果当处理上述前导帧时没有使用这个短曝光时间值减少过程,那么第一个规定的减少量被应用于短曝光时间设置。但是,如果将减少应用于上述前一个短曝光时间帧,那么,应用不同的减少量。更新的减少量被计算如下。如果曝光过度计数没有相对于先前的帧而更改或增加,那么,使减少量相对于先前的量加倍(例如,测试实施例中的10%、20%、40%、......直到100%的最大值)。但是,如果曝光过度计数减少但还没有达到目标计数,那么再次将短曝光时间设置减少最近使用的减少量。最后,如果已达到目标计数,那么终止“碰撞”时间表。注意,为了实现前述减少过程,每个连续的减少事件必须被记录下来并被存储,用于确定该过程的随后迭代中的减少量。
一旦短曝光时间设置已被减少,或者如果确定曝光过度计数不超过目标计数,那么接下来确定较长曝光时间帧的曝光不足计数是否超过其目标计数(过程动作526)。如果是,那么长曝光时间设置值增加(过程动作528)。使用类似的过程,体现在:使用规定的增加“碰撞”时间表。这涉及:如果对于处理直接在当前考虑中的那对帧前面的较长曝光时间帧没有增加这个值,那么将长曝光时间设置增加第一个规定的量(例如,该过程的测试实施例中的10%)。但是,如果将增加应用于上述前一个长曝光时间帧,那么应用不同的增加量。更新的增加量被计算如下。如果曝光不足计数没有相对于先前的帧而更改或增加,那么,使增加量相对于先前的量加倍(例如,测试实施例中的10%、20%、40%、......直到100%的最大值)。但是,如果曝光不足计数增加但还没有达到目标计数,那么再次将长曝光时间设置增加最近使用的增加量。最后,如果已达到目标计数,那么终止“碰撞”时间表。因此,对于前述增加过程,每个连续的增加事件在这里也必须被记录下来并被存储,用于确定该过程的随后迭代中的增加量。
一旦长曝光时间设置已被增加,或者如果确定曝光不足计数不超过目标计数,那么,接下来在过程动作530中确定上述曝光时间设置之比是等于还是超过规定的最大比率(R)。如果是,那么,选择分别被分配给将要捕捉的下两个帧的短、长曝光时间设置,以便使用以上所描述的平衡过程来平衡这两个计数,而不超过最大比率(过程动作532)。然后,应用修订的曝光时间设置,来捕捉该视频的下两个帧(过程动作508)。但是,如果确定长、短曝光时间帧的曝光时间设置比不等于或超过规定的最大值(R),那么曝光时间设置不会作任何进一步的更改,并且这些未更改的设置用来捕捉该视频的下一对帧(过程动作508)。
对视频中所捕捉的每一对帧重复前述过程。这样,如以上所指示的,该视频的这些帧将从头到尾在短曝光时间帧与长曝光时间帧之间交替。通过使用在时间上变化的曝光时间帧,从该前驱视频中生成最终的HDR视频,这将在下一节描述。
3.0
HDR缝合
由于上述前驱视频的帧是利用在时间上变化的曝光时间来捕捉的,因此,在任何给定时间生成HDR帧要求从相邻帧传送像素色彩信息。这进而要求跨越不同的帧的像素对应性高度准确。计算像素对应性、从相邻帧传送色彩信息、以及提取HDR图像的过程被称作HDR缝合。
前驱视频包含交替的长、短曝光时间帧。HDR缝合中的第一个步骤是每一瞬间生成一组长、短曝光时间,以便可以从该组中计算发光度图。这较佳地是通过使用翘曲过程合成缺失曝光时间来实现的。
更具体地说,HDR缝合过程生成四个翘曲帧。在考虑中的帧是长曝光时间帧的情况下,这四个翘曲帧是来自左、右相邻帧的双向翘曲(内插)短曝光时间帧(S′k* F和S′k* B)、单向翘曲短曝光时间左帧(Sk* F0)、以及单向翘曲短曝光时间右帧(Sk* B0)。在考虑中的当前帧是短曝光时间帧的情况下,四个翘曲帧是来自左、右相邻近物的双向翘曲(内插)长曝光时间帧(L′k* F和L′k* B)、单向翘曲长曝光时间左帧(Lk* F0)、以及单向翘曲长曝光时间右帧(Lk* B0)。这些翘曲帧所表示的冗余度以后被用来增加对准误差的容许度。在前述帧命名法中,S指短曝光时间帧,L指长曝光时间帧,F指前向翘曲帧,B指后向翘曲帧,k指帧的时间索引。
首先假设考虑中的前驱视频的当前帧是利用在短曝光时间处捕捉的相邻帧(Sk-1和Sk+1)在长曝光时间Lk处捕捉的。参考图6中的过程流程图,在HDR缝合过程的初始阶段中,使用常规的前向和后向匹配和翘曲方法,将这些这些前导和后续帧与当前帧对准(过程动作602)。但是,这只有在增强前导和后续帧的强度以便实质上与长曝光时间帧的强度范围相匹配之后才完成的(过程动作600)。前导和后续翘曲帧分别是上述Sk* F0和Sk* B0帧。注意,短曝光时间帧在强度方面被增强,以便与长曝光时间帧相匹配,从而便于对准过程。在增强图像的过程中,将每个像素强度或色彩乘以大于1的因数。较佳的是增强短曝光时间帧,而不是按比例缩减长曝光时间帧,以防止长曝光时间帧的饱和区域内的像素强度失配。增强短曝光时间帧,以便与长曝光时间帧内的饱和区域中的细节损失相匹配。也要注意,如所解释的,增强的图像只被用来计算流动场。由于增强过程中所引入的噪声,它们不被用来计算发光度图。
如图7中用图解法以及图6中在过程方面所示的,在HDR缝合过程的第二个阶段中,上述双向翘曲帧S′k* F和S′k* B是使用来自前驱视频的所有三个输入帧来计算的。对于相邻曝光时间(在此情况下,与Sk-1(700)和Sk+1(702)相关联)相同的情况,HDR缝合过程如下开始。
1.通过使用帧Sk-1和Sk+1,使用将简略描述的基于梯度的技术来计算双向流动场(对Sk-1(700)的前向翘曲fk,F(704),和对Sk+1(702)的后向翘曲fk,B(706))(过程动作604)。在过程动作608中,这些流动场随后被用来使各自的图像翘曲,以产生两个图像,即Sk* B(708)和Sk* F(710)。这些图像在过程动作608中被组合,以产生中间图像(即上述双向翘曲内插帧Sk*(712))。该中间图像在外观上应该接近于Lk(714)。
2.在过程动作610中,接下来增强Sk*(712)的各个像素强度,来与Lk(714)的对应像素相匹配,以产生图像Lk*(716)。
3.在过程动作612中,使用分层全局对准技术(也将加以简略的描述),以计算最佳地将Lk*(716)映射到Lk(714)的细化流动fk*(718)。然后,在过程动作614中使用细化流动fk*(718),来与fk,F(704)和fk,B(706)组合,以产生复合流动
和
它们随后分别用来使Sk-1(700)翘曲以产生S′k* F(722),以及使Sk+1(702)翘曲以产生S′k* B(720)。
如将简略解释的,图像Lk、Sk* F0、Sk* B0、S′k* B和S′k* F被一起用来计算时间k处的HDR图像。
对于前导和后续曝光时间彼此不同的情况,采用修改的过程来计算S′k* B和S′k* F。在这个修改的过程中,在计算Sk*之前,增强具有较低曝光时间的前导或后续帧的强度,以便与另一侧的图像相匹配。这样,如果expSk-1>expSk+1,则使用Sk-1和Sk+1Boost来计算Sk*;如果expSk-1<expSk+1,则使用Sk+1和Sk-1Boost来计算Sk*。一旦计算了fkF、fkB和fk*,就使Sk-1翘曲,以便使用
来产生S′k* F,并且使Sk+1翘曲,以便使用
来产生S′k* B。这样,S′k* B和S′k* F将具有与它们相关联的不同的曝光时间。
因此,参考图8中的图表和图9A-B中的过程流程图,对于利用在短曝光时间(Sk-1(800)和Sk+1(802))处捕捉的相邻帧在长曝光时间Lk处捕捉考虑中的前驱视频的当前帧以及前导和后续曝光时间彼此不同的情况,HDR缝合过程如下开始。
1.在过程的初始阶段中,前导和后续帧在强度方面被增强,以便与具有较长曝光时间的当前帧相匹配(过程动作900)。然后,使用常规的前向和后向翘曲方法将这些帧与当前帧对准(过程动作902)。前导和后续翘曲帧分别是上述的Sk* F0和Sk* B0帧。
2.接下来,确定是否expSk-1>expSk+1或expSk-1<expSk+1(过程动作904)。如果确定expSk-1<expSk+1,那么,在过程动作906中,增强Sk-1(800),以便与Sk+1(802)的强度范围相匹配,从而产生Sk-1Boost(804)。但是,如果发现expSk-1>expSk+1,那么,在过程动作908中,增强Sk+1(802),以便与Sk-1(800)的强度范围相匹配,从而产生Sk+1Boost(806)。注意,通过使用虚线框,在图8中表示前述增强过程的交替性质。
3.使用上述基于梯度的技术来计算双向流动场(对Sk-1(800)的前向翘曲fk,F(808)和对Sk+1(802)的后向翘曲fk,B(810))(过程动作910)。在过程动作912中,这些流动场随后被用来使各自的图像翘曲,以产生两个图像,即Sk*(Boost) B(812)和Sk*(Boost) F(814)(其中,(Boost)下标标志符指出该图像是否可以基于强度增强帧),其中的一个图像将基于来自前驱视频的原始帧的增强版本。在过程动作914中组合这些图像,以产生中间图像(即上述双向翘曲帧Sk*(816))。这个中间图像在外观上应该接近于Lk(818)。
4.在过程动作916中,接下来增强Sk*(816)的各个像素强度,以便与Lk(818)的对应像素相匹配,从而产生图像Lk*(820)。
5.在过程动作918中使用上述分层全局对准技术,来计算最佳地将Lk*(820)映射到Lk(818)的细化流动fk*(822)。
6.细化流动fk*(822)与fk,F(808)和fk,B(810)组合,以产生复合流动 和
它们随后被分别用来使Sk-1(800)翘曲以产生S′k* F(830),以及使Sk+1(802)翘曲,以产生S′k* B(828)。
如前所述,图像Lk、Sk* F0、Sk* B0、S′k* B和S′k* F被一起用来计算时间k处的HDR图像。
对于在短曝光时间Sk处捕捉考虑中的前驱视频的帧,在长曝光时间(Lk-1和Lk+1)处捕捉相邻帧的相反情况,该过程是类似的。现在参考图10中的过程流程图,在HDR缝合过程的初始阶段中,使用常规的前向和后向翘曲方法,将这些前导和后续帧与当前帧对准。所得到的前导和后续翘曲帧分别是上述的Lk* F0和Lk* B0帧。更具体地说,在前向翘曲之前,首先增强Sk,以便与Lk-1的强度范围相匹配(过程动作1000),从而产生Lk* F0(过程动作1002);在后向翘曲之前,增强Sk,以便与Lk+1的强度范围相匹配(过程动作1004),从而产生Lk* B0(过程动作1006)。
在该过程的第二阶段中,对于相邻的曝光时间(在此情况下,与Lk-1(1100)和Lk+1(1102)相关联)相同的情况,如图1l中用图解法以及图12中在过程方面所示的,上述双向翘曲帧Lk*是使用来自前驱视频的所有三个输入帧来计算的。更具体地说,HDR缝合过程如下开始。
1.使用上述基于梯度的技术来计算双向流动场(对Lk-1(1100)的前向翘曲fk,F(1104)和对Lk+1(1102)的后向翘曲fk,B(1106))(过程动作1200)。在过程动作1202中,这些流动场随后被用来使各自的图像翘曲,以产生两个图像,即Lk* B(1108)和Lk* F(1110)。这些图像在过程动作1204中被组合,以产生中间图像(即上述双向翘曲帧Lk*(1112))。这个中间图像在外观上应该接近于Sk(1114)的上述强度增强版本。
2.在过程动作1206中,接下来增强Sk(1114)的各个像素强度,以与Lk-1(1100)和Lk+1(1102)的像素强度相匹配。这项操作产生图像SkBoost(1116)。
3.在过程动作1208中使用上述分层全局对准技术,以计算最佳地将Lk*(1112)映射到SkBoost(1116)的细化流动fk*(1118)。细化流动fk*(1118)与fk,F(1104)和fk,B(1106)组合,以产生复合流动
和
它们随后被分别用来使Lk-1(1100)翘曲以产生L′k* F(1122),以及使Lk+1(1102)翘曲以产生L′k* B(1120)。
如将简略解释的,图像Sk、Lk* F0、Lk* B0、L′k* B和L′k* F被一起用来计算时k处的HDR图像。
对于前导和后续曝光时间彼此不同的情况,使用修改的过程来计算L′k* B和L′k* F。在这个修改的过程中,在计算Lk*之前,增强具有较低曝光时间的前导或后续帧的强度,以便与另一侧图像相匹配。这样,如果expLk-1>expLk+1则将使用Lk-1和Lk+1Boost来计算Lk*;如果expLk-1<expLk+1则将使用Lk+1和Lk-1Boost来计算Lk*。一旦计算了fkF、fkB和fk*,就使Lk-1翘曲,以便使用
来产生上L′k* F,并且使Lk+1翘曲以便使用
来产生L′K* B。这样,L′k* B和L′k* F将具有与它们相关联的不同的曝光时间。
相应地,参考图13中的图表和图14A-B中的过程流程图,对于利用在长曝光时间(Lk-1(1300)和Lk+1(1302))处捕捉的相邻帧,在短曝光时间Sk处捕捉考虑中的前驱视频的当前帧以及“前导和后续曝光时间彼此不同的情况,HDR缝合过程的第二个阶段如下开始。
1.首先确定是否expLk-1>expLk+1或expLk-1<expLk+1(过程动作1400)。如果确定expLk-1<expLk+1那么,在过程动作1402中,增强Lk-1(1300),以便与Lk+1(1302)的强度范围相匹配,从而产生Lk-1(Boost)(1304)。但是,如果发现expLk-1>expLk+1那么,在过程动作1404中,增强Lk+1(1302),以便与Lk-1(1300)的强度范围相匹配,从而产生Lk+1Boost(1306)。注意,通过使用虚线框,在图13中表示前述增强程序的交替性质。
2.使用上述基于梯度的技术来计算双向流动场(对Lk-1(1300)的前向翘曲fk,F(1308)和对Lk+1(1302)的后向翘曲fk,B(1310))(过程动作1406)。在过程动作1408中,这些流动场随后被用来使各自的图像翘曲,以产生两个图像,即Lk*(Boost) B(1312)和Lk*(Boost) F(1314)(其中,(Boost)下标标志符指出该图像是否可以基于强度增强帧),其中的一个图像将基于来自前驱视频的原始帧的增强版本。在过程动作1410中组合这些图像,以产生中间图像(即上述双向翘曲帧Lk*(1316))。如下所述,这个中间图像在外观上应该接近于Sk(1318)的强度增强版本。
3.在过程动作1412中,接下来增强Sk(1318)的各个像素强度,以便与Lk-1(1300)和Lk+1(1302)的对应像素的平均数相匹配。这项操作产生图像SkBoost(1320)。
4.在过程动作1414中使用上述分层全局对准技术,来计算最佳地将Lk*(1316)映射到SkBoost(1320)的细化流动fk*(1322)。
5.在过程动作1416中,细化流动fk*(1322)与fk,F(1308)和fk,B(1310)组合,以产生复合流动
在过程动作1418中,这些复合流动场随后被分别用来使Lk-1(1300)翘曲以产生L′k* F(1330),以及使Lk+1(1302)翘曲以产生上L′k* B(1328)。
如前所述,图像Sk、Lk* F0、Lk* B0、L′k* B和L′k* F被用来计算时间k处的HDR图像。
3.1
运动估计
如先前所指出的,使用基于梯度的技术来计算双向流动场fk,F和fk,B。现在将描述这项技术。帧内插涉及通过使用来自一对相邻帧的信息来合成中间时间处的缺失曝光时间。为了完成这一点,在相等的曝光时间(例如,Sk-1和Sk+1)之间计算密集运动匹配,并且,使用该密集运动匹配来沿运动轨道使像素信息前向和后向翘曲,以产生中间图像(例如,Sk*)。这个过程也被用来从L邻近帧中生成缺失的Lk*帧。
本运动估计过程包括两个阶段:首先,通过估计将一个帧映射到另一个上的仿射变换,来全局地对准两个帧。然后,基于梯度的光流动被用来计算密集运动场,该密集运动场形成对全局变换的局部纠正。
在中间时间k处计算双向流动场,而不是在时间k-1或k+1处计算前向或后向流动场。这避免了当生成每个内插帧时的前向翘曲的孔填充问题。在输出帧k内的每个像素处,获得指向后一个帧k+1和前一个帧k-1的复合向量。这些向量的每一个都是仿射分量和局部分量的总和。仿射分量从全局翘曲参数中导出,并被重新按比例缩放成要么从k-1翘曲到k、要么从k+1翘曲到k;局部分量由对称光流动过程来生成。
对于局部运动估计,Lucas和Kanade[4]技术的变体用于拉普拉斯金字塔状构架中。通过计算总计的偏导数矩阵的特征值并确定它的情况是否不好,也可以增加用于处理退化流动情况的技术。使两个源图像朝向输出时间k翘曲,并在这两个翘曲图像之间估计残留流动向量,而不是在每个迭代处仅仅使一个源图像逐渐朝向另一个源图像翘曲。当残留沿金字塔累积时,它们会引起在时间k处居中的对称流动场。该技术是通过在翘曲期间包括全局仿射流动来增大的,所以,这些累积的残留总是按照对该非对称全局流动的对称局部纠正来表示。
为了获得最终的中间图像(即内插帧),可使用二元三次翘曲来沿适当的向量将像素从时间k-1和k+1转移到输出帧内的每个位置。如果前向和后向翘曲像素可用,则对它们求平均值。如果只有一个翘曲像素可用,那么该像素值用作内插帧内对应位置的值。如果两个源像素都在帧以外,那么使用零位移向量而获得的两个像素被一起求平均值。
3.2
分层单应性
如先前所指出的,分层全局对准技术被用来计算细化流fk*。现在将描述这项新颖的技术。一般而言,该技术被用来细化内插帧(即一切情况中的Lk*)与实际帧(即,要么是长曝光时间帧Lk,要么是短曝光时间帧的强度增强版本SkBoost)之间的对准。由于用来创建Lk*图像的内插过程中不可避免的误差,直接比较这些图像是很难的。例如,导致误差的原因可以是:发生在捕捉用来创建Lk*的相邻帧中的每个帧的时间之间的运动可能不是统一的。需要在这个点处约束流动,因为它可降低在饱和与低对比度像素的不可靠的区域处发生错误映射的可能性。
为了完成前述任务,将使用被称作“分层单应性”的东西。图15中示出分层单应性的概念,图15被简化成只示出两个等级和一个象限。在最高分辨率(即等级0(1500))处,使用常规方法来执行完全帧对准,以找到两个输入图像之间的最佳2D透视变换(即单应性),从而产生单应性H0(1502)。然后,基准图像(图像1(1504))被分割成用虚线示出的各个重叠象限1506。5~20%重叠是合理的。在本发明的测试版本中,成功地使用10%重叠。注意,基准图像1504是HDR视频生成过程中的Lk或SkBoost。
如果象限1506(在本过程的测试版本中,它按大约10个灰度的阈值来设置)内的强度变更不足,那么,不理会它。否则,通过执行基准图像1504的象限1506与来自第二个图像1510(是HDR视频生成过程中的Lk*)的适当采样的相对区域1508之间的完全图像对准,来找到这两个区域之间的最佳2D透视变换(即单应性),可细化其全局运动。根据H0 1502来计算来自第二个图像1510的子图像1508的边界。在图15所示的例子中,子图像对1506与1508之间的这个细化变换被称作H1,1(1512),其中,第一个下标指等级,第二个下标指象限号(即1-4)。为满足上述强度变更测试的每个象限重复细化过程。
在HDR视频生成过程的测试版本中成功地使用了两个等级,但前述细化过程可以被进一步扩展到额外的等级,以进一步细化这些图像的对准。例如,将该技术扩展到第三等级只需要采用基准图像(已通过强度变更测试)的先前处理过的象限之一,并将它分成各个象限。这些新的象限中的每个象限被置于强度变更测试。如果它没有通过测试,那么,再次不理会它。但是,如果它通过测试,那么,将会使用H1,i(其中,i=等级1中的考虑中的象限索引)来定义图像2中对应的区域的边界。然后,在考虑中的基准图像的等级1象限与来自第二个图像的适当采样的相对区域之间执行完全图像对准,以找到将会被指定为H2,i的这两个区域之间的最佳2D透视变换(即单应性)。
这样,一般而言,为所有这些等级以及每个等级的所有这些象限重复细化过程。一旦完成,随后使用在这些图像的每个区域之间计算的局部单应性来计算所得的完全图像细化流动fk*。在每个象限的边界处以及在其附近,其流动被羽化(即,被加权平均),以最小化流动中断。例如,参考图16(a)-(c),假设两个细化等级和所有这些象限都通过强度变更测试。如图16(a)中所描绘的,已为每个象限计算局部单应性(H1,1、H1,2、H1,3、H1,4)。对于完全被包含在这些象限之一内的区域(例如,区域1600)及其在另一个图像中的相对物,使用局部单应性来计算按常规方式实现的像素的流动。
但是,对于基准图像中两个象限重叠的区域(例如,区域1602),使用1D线性加权技术来“羽化”重叠区域内所包含的像素的流动图。本质上,像素离非重叠区域越近,它被那个部分加权越多。将参考图16(b)来描述这项加权技术,图16(b)示出重叠区域1602的放大视图。对于该重叠区域内的每个像素,使用重叠距离m、以及定义从该重叠区域的边界之一到考虑中的像素pi的最短距离的距离l,以建立p′i,p′i又被用来为完全图像细化流动场fk*中的像素计算流动。更具体地说,使用图16(b)中所示的例子,其中,距离l被测量为邻近专用“H1,2区域”的重叠区域的边界与pi之间的最短距离,
其中,p1,2=H1,2pi,并且,p1,4=H1,4pi。
在所有四个象限重叠的基准图像的中心区域(例如,图16(c)中的放大视图所示的区域1604)内,使用2D线性加权技术来羽化该区域内所包含的像素的流动图。在此情况下,使用重叠距离m和m′、以及定义从中心重叠区域的边界中的第一条边界到考虑中的像素pi的距离的距离l和定义从邻近该第一条边界的边界之一到pi的距离的距离l′,来建立p′i。更具体地说,
p’i=((m-l)/m)*(l’/m’)*H1,1pi+((m-l)/m)*((m’-l’)/m’)*H1,2pi+
(l/m)*(l’/m’)*H1,3pi+(l/m)*((m’-l’)/m’)*H1,4pi. (8)
现在参考图17A-B中的流程图,将使用2个层次等级(即等级0和1)的例子来总结前述分层单应性过程。通过计算基准图像Lk或SkBoost(看情况)与Lk*之间的单应性H0,该过程开始(过程动作1700)。然后,基准图像被分割成各个重叠象限(过程动作1702),并且选择这些象限中的先前未选择的一个象限(过程动作1704)。接下来,确定被选择的象限内的像素中的强度变更是否超过规定的变更阈值(过程动作1706)。如果它超过,那么在过程动作1708中,使用全局单应性H0来标识Lk*中的相对区域。在这个上下文中,H0是父单应性。在基准图像的被选择的象限与Lk*中所标识的相对区域之间计算局部单应性H1,i(其中,i指被选择的象限索引)(过程动作1710)。在这个上下文中,H1,i是子单应性。接下来,对同一象限确定使用子单应性的每像素对准误差是否小于使用父单应性的每像素对准误差(过程动作1712)。如果是,那么将所计算的子单应性分配给被选择的象限(过程动作1714)。否则,如果确定使用子单应性的每像素对准误差不小于使用父单应性的每像素对准误差,或者如果在过程动作1706中确定被选择的象限内的像素中的强度变更不超过规定的变更阈值,那么将父单应性分配给被选择的象限(过程动作1716),即,子单应性继承于其父单应性。接下来,确定是否有任何剩余的、先前未被选择的象限(过程动作1718)。如果有更多的象限要处理,那么重复过程动作1704~1718。但是,如果发现没有更多的象限要处理,那么,在过程动作1720中,使用在图像的每个对应的区域之间计算的局部单应性H1,i或全局单应性H0(这取决于哪一个被分配给象限)来计算完全图像细化流动场fk*。最后,在过程动作1722中,与位于象限的重叠区域之一内的像素相关联的fk*中的流动被羽化,以最小化流动中断。
3.3
发光度图恢复
在本节中,描述将输入图像与其翘曲的邻近帧组合以产生发光度图的过程。已提出几项技术来实行这一点[2,6,9]。在这些技术中的每项技术中,通过使用已知的曝光时间值和计算的照相机响应函数,来将输入图像转换成发光度图像。然后,像素处的最终的发光度值被计算为这些发光度图像中对应的像素的加权和。如较早的时候所指出的,较佳地使用[6]的技术来计算照相机的响应函数Fresponse。在图18(a)中,通过绘制全局加权与像素强度的关系的曲线图来示出从这项技术中导出的示例加权函数fW。但是,注意,现存的方法假设完美对准的输入图像。由于在HDR缝合过程的第一个部分中有未对准的可能性,因此,在本过程的这个部分中不假设完美的对准。相反,通过使用不仅从考虑中的输入帧、而且从单向翘曲左帧、单向翘曲右帧、以及分别从左、右相邻帧中创建的两个双向翘曲帧的像素中导出的发光度值,来使程序更能容忍像素对准中的误差。使用一种逻辑协议,该逻辑协议确定最终的发光度图中的像素是否是从取自前述图像中对应的像素的一个值或者两个或多个值的组合的发光度值中导出的。通常,这一决策是根据输入图像中的像素的强度来作出的。
更具体地说,参考图19A-C,对于输入图像是长曝光时间帧,相邻的帧是短曝光时间帧的情况,HDR缝合中所使用的发光度图恢复被实现如下。
1.首先,通过使用响应函数F
response以及使用常规方法的图像的各自的曝光时间值,将L、S
* F0、S
* B0、S′
* B和S′
* F转换成发光度图像(过程动作1900),其中,一般而言,
R是像素的发光度,p是像素强度,exp是曝光时间等级。这些发光度图像分别由
和
来表示。注意,为了方便用符号表示,这里省略下标k。
2.在过程动作1902中,输入图像L中在表示在L中可以捕捉的最大强度的最大强度值(例如,255)以上的像素随后被标识为是饱和的。假设这些像素产生与相邻帧的较差对准。使用来自双向翘曲帧
和
的值,而不是使用最终的发光度图中的这些值(过程动作1904)。在本发光度图恢复过程的测试版本中,来自
和
的发光度值被平均,以建立最终的发光度图中的像素的值。
3.接下来,标识输入图像L中落入规定的最大值以下的强度范围内的像素(过程动作1906),并且选择它们中的先前未选择的一个像素(过程动作1908)。这些像素表示可以在长曝光时间帧或短曝光时间帧内被合理地曝光的场景的各个区域。对于所标识的像素中的每个像素,将来自
和
的发光度值与
中的对应像素进行比较(过程动作1910)。如果发现来自
和
的发光度值低于来自
的发光度值的规定的最大容许噪声偏差(过程动作1912),那么,计算所有这三个值的加权平均,并用作最终的发光度图中的该像素位置的发光度值(过程动作1914)。加权平均发光度被计算如下:
(9)
其中,下标c、F和B分别指当前的、左翘曲的和右翘曲的发光度图像中的像素。在此情况下,当前图像是
左翘曲图像是
右翘曲图像是
fWM(pw,pc)=fM(|pw-pc|)fW(pw)是被fM调制的加权函数fW,其中,fM()被以下公式定义:
(10)
它是调制函数,该调制函数不重视与对应的输入发光度值截然不同的翘曲发光度值。δmax是用户指定参数,它表示上述最大容许噪声偏差。在本发光度图恢复过程的测试版本中,该最大容许噪声偏差被设置为16个强度等级。在图18(b)所示的曲线中绘制了该调制函数的例子。
但是,如果发现来自
和
的发光度值之一在最大噪声偏差以上(过程动作1916),那么抛出它,并且,对该像素位置的最终的发光度图中所使用的发光度值被计算为来自
的值以及来自
和
的剩余值的加权平均值(过程动作1918)。这偏离了公式(10),因为涉及来自
和
的发光度值的项(被发现在最大容许噪声偏差以外)被置零。这样,使用具有剩余的发光度值的公式(9)来计算加权平均值。
最后,如果发现来自
和
的发光度值都在最大容许噪声偏差以外(过程动作1920),那么,根据公式(10)来抛出这两个值,并且,直接从
中采用对于该像素位置的最终的发光度图中所使用的发光度值(过程动作1922)。
接下来,在过程动作1924中确定是否有被标识为具有低于最大强度阈值的强度的、还没有被选择和处理的任何像素。如果有,则重复过程动作1908~1924。否则,过程结束。
现在参考图20A-C,在考虑中的输入帧是短曝光时间帧,相邻帧是长曝光时间帧的情况下,HDR缝合中所使用的发光度图恢复被实现如下。
1.首先,S、L
* F0、L
* B0、L′
* B和L′
* F被转换成发光度图像(过程动作2000)。这些发光度图像分别由
和
来表示。
2.接下来,标识输入图像S中落入规定的最小值(例如,在本发光度图恢复过程的测试版本中是16)以上的强度范围内的像素(过程动作2002),并且选择它们中的先前未选择的一个像素(过程动作2004)。这些像素表示可以在长曝光时间帧或短曝光时间帧内被合理地曝光的场景的各个区域。对于这些像素中的每个像素,将来自
和
的发光度值与
中的对应的像素进行比较(过程动作2006)。如果发现来自
和
的发光度值低于来自
的发光度值的上述最大容许噪声偏差(过程动作2008),那么,计算所有三个指的加权平均,并用作最终的发光度图中该像素位置的发光度值(过程动作2010)。如上所述,使用公式(9)来计算加权平均发光度。
但是,如果发现来自
和
的发光度值之一在最大容许噪声偏差以外(过程动作2012),那么,抛出它,并且,对于该像素位置的最终的发光度图中所使用的发光度值被计算为来自
的值以及来自
和
的剩余值的加权平均值(过程动作2014)。使用公式(9)来计算加权平均值,在公式(9)中,涉及已被抛出的、来自
和
的发光度值的项根据公式(10)而被置零。
最后,如果发现来自
和
的发光度值都在最大容许噪声偏差以外(过程动作2016),那么,根据公式(10)来抛出这两个值,并且,在过程动作2018中,根据公式(9),直接从
中采用该像素位置的最终发光度图中所使用的发光度值。
接下来,在过程动作2020中确定是否有被标识为具有在最小强度阈值以上的强度的、还没有被选择和处理的任何像素。如果有,则重复过程动作2004~2020。如果没有,则过程如下继续。
3.在过程动作2022中,标识输入图像S中在上述最小强度值以下的像素。假设这些像素产生与相邻帧的较差对准。使用来自双向翘曲帧
和
的值,而不是使用最终的发光度图中的这些值(过程动作2024)。在本发光度图恢复过程的测试版本中,来自
和
的发光度值被平均,以建立最终的发光度图中的像素的值。
通过对前述发光度图恢复程序逻辑协议进行举例,图21(a)-(d)分别为短曝光时间输入帧以及从邻近的长曝光时间帧中导出的双向翘曲帧(通过平均来自
和
的值来加以创建)、左翘曲帧和右翘曲帧示出被选择来促成最后的发光度图的那些像素。
4.0
时间色调映射
使用色调映射来将浮点发光度图转换成适合于在典型系统中呈现的8位表示。这个过程必须减小每个帧的动态范围,而同时也保持对于明亮区域和黑暗区域的良好对比度等级。此外,所捕捉的视图之中一定有变换的一致性,使得没有时间的人工因素(例如,闪烁)。
可以为此目的来使用现有的色调映射程序,但本HDR视频生成系统利用[8]提出的色调映射器的修改版本,它基于局部遮光法和烧制的摄影技术。一般而言,通过经由常规方法来将发光度图像转换成CIE空间,并恢复色度坐标,色调映射过程开始。然后,处理亮度图像,以压缩动态范围。最后,重新插入色度,并且转换CIE空间图像,以产生最终的字节范围RGB图像。作为这个色调映射过程的一部分,某些全局参数必须被设置成控制总体亮度平衡。本质上,执行正被色调映射的输入图像的统计分析,以决定如何设置这些全局参数。尽管这个过程对于色调映射图像而言运作良好,但它对本HDR视频生成系统的直接应用将会成问题,因为闪烁会产生于每一帧将会隔离地分析的事实。
在本系统中,通过本质上将统计量从一个帧转移到另一个帧,来解决这个问题。更明确地说,本时间自适应色调映射器包括计算平均和最大亮度(即上述全局参数),它们通过使用来自考虑中的帧和前一个帧的信息来控制提供良好的初始亮度映射的传递函数。这样,对数平均亮度由以下公式给出:
(11)
其中,ε是一个小值(例如,10-6),N是两个帧内的像素总数,Fi是由时间k-1和k处的帧i组成的因果时间邻域。同样,通过考虑两个帧内的像素,来确定最大亮度。如上所述,使用一组帧来控制全局映射有助于防止色调映射序列中的闪烁。
注意,成功地使用来自当前帧和直接前导帧的统计量,来防止本HDR视频系统的测试版本中的闪烁问题,但如果需要的话,额外的前导帧也可以被包括在平均和最大亮度计算中。
5.0
结果
在本节中,示出三个不同的动态场景的结果:鱼类市场、海港、以及沿热闹街道的驾驶。图22和图23示出来自鱼类市场和海港场景的代表性静物照片。对于每个场景,左上角象限是短曝光时间帧,右上角象限是长曝光时间帧。左下角象限示出对于等于该短曝光时间和长曝光时间的几何平均值的曝光时间而言,该帧看起来会象什么。假设发光度在对数空间中被正常处理,则这是合理的。使用本发明的方法来生成右下角象限中的图像。
鱼类市场场景。在图22的左边,可以看到来自鱼类市场场景的快照。单个曝光时间版本看起来合理,但有一些饱和区域(尤其在中间和右上角)和低对比度区域。在使用本发明的HDR方法生成的帧中,几乎可以在各处看到良好的细节(除计数器的底部以外,在那里,甚至长曝光时间帧也示出很少的细节)。
海港场景。该视频是在俯瞰海港的办公室内捕捉的。在该视频中,可以看到渡船在窗口以外移动,同时,可以在办公室内观察到某一人类活动。如图23的右边所示,单个曝光时间具有很大的饱和区域和低对比度区域。另一方面,在使用本发明的方法生成的帧内,可以清楚地看到渡船和水。也可以在办公室内看到更多细节。
驾驶场景。在图24中可以看到驾驶场景的结果。上面一行示出具有其交替的较短曝光时间和较长曝光时间的输入视频序列的一部分,而下面一行示出从这些帧中生成的HDR视频帧。在这个例子中,驾驶员以大约25mph的速度驶过热闹的街道。这是特别困难的场景,因为偶尔有因驾驶员的手的快速运动而产生的大的帧对帧位移。对于这类大运动,本发明的光流动算法有时会失败,但这个问题可以使用较高帧速率照相机来缓和。
观察这些结果,可以看到本发明的技术可产生具有增加的动态范围的视频,同时,可合理地处理大量视觉运动。但是,对于非常快的运动,假设本发明的当前低采样率是15帧/秒,则本发明的技术有时会产生人工因素。但是,使用具有更快的捕捉速率的照相机将会缓和这个问题。
[1]L.Bogoni,Extending dynamic range of monochrome and color imagesthroughfusion(通过融合来扩展单色和彩色图像的动态范围),Int′l Conf.on PatternRecognition(关于模式识别的国际会议),第3卷,第7-12页,2000年9月。
[2]F.Durand和J.Dorsey,Fast bilateral filtering for the display of high dynamic rangeimages(用于高动态范围图像的显示的快速双边过滤),ACM Trans.on Graphics(TOG),21(3):257-266,2002年。
[3]P.E.Debevec和J.Malik,Recovering high dynamic range radiance maps fromphotographs(从照片中恢复高动态范围发光度图),Proc.of SIGGRAPH 97,第369-378页,1997年8月。
[4]R.Fattal、D.Lischinski和M.Werman,Gradient domain high dynamic rangecompression(梯度域高动态范围压缩),ACM Trans.on Graphics,21(3):249-256,2002年。
[5]B.D.Lucas和T.Kanade,An interative image registration technique with anapplication in stereo vision(在立体视觉中有应用的迭代图像对准技术),Int′l JointConf.on Artificial Intelligence(关于人工智能的国际联合会议),第674-679页,1981年。
[6]S.Mann、C.Manders和J.Fung,Painting with Looks:Photographic images fromvideo using quantimetric processing(视点绘图:来自使用quantimetric处理的视频的摄影图像),ACM Multimedia(ACM多媒体),2002年12月。
[7]T.Mitsunaga和S.K.Nayar,Radiometric self calibration(辐射度自校准),IEEEConf.on Computer Vision and Pattern Recognition(关于计算机视觉与模式识别的IEEE会议),第1卷,第374-380页,1999年6月。
[8]T.Mitsunaga和S.K.Nayar,High dynamic range imaging:Spatially varying pixelexposures(高动态范围成像:在空间上变化的像素曝光时间),IEEE conf.onComputer Vision and Pattern Recognition(关于计算机视觉与模式识别的IEEE会议),第1卷,第472-479页,2000年6月。
[9]E.Reinhard、M.Stark、P.Shirley和J.Ferwerda,Photographic tone reproductionfor digital images(关于数字图像的摄影色调再现),ACM Trans.on Graphics,21(3):267-276,2002年。
[10]Y.Tsin、V.Ramesh和T.Kanade,Statistical calibration of CCD imagingprocess(CCD成像过程的统计校准),Int′l Conf.on Computer Vision(关于计算机视觉的国际会议),第I卷,第480-487页,2001年7月。