微软AR/VR专利介绍与校正图像中的线偏差和时间线噪点有关的示例
校正图像的线偏差
(映维网Nweon 2022年06月24日)摄像头捕获的图像可能会受到各种噪点源的影响,包括摄像头电路产生的噪点。例如,用于驱动像素的信号可以受到由温度波动和/或其他因素引起的电压和/或电流漂移的影响,并导致图像传感器的输出发生变化。这在生成的图像中表现为噪点。读出电路可能会遇到类似的问题。在弱光条件下,这类噪点会对摄像头的信噪比(SNR)产生不利影响。
图像传感器中的不同图像传感像素组可能会受到图像传感器电路中操作差异的不同影响。作为一个示例,图像传感器可以包括以行(例如,行和列)排列的多个像素,其中每行像素由相应的放大器驱动。放大器输出中的变化可致使像素记录的像素值增加偏移偏置。
如本文所用,“偏差”是指对图像传感器的像素记录的像素值的加性偏移,“读出值”是指从像素读取的值,包括其像素值和修改读取的像素值的潜在偏差。“线偏置”是指应用于图像传感元件的线的公共偏置,其中“线”是指受公共偏置影响的多个图像传感器像素,例如由公共放大器驱动的像素的行或列。
用于驱动图像传感器不同像素线的放大器之间的操作差异不同。例如,配置为驱动第一行像素的第一放大器可提供1.1 mV的输出,而配置为提供与第一放大器相同的输出,并驱动第二行像素的第二放大器可提供1.2 mV的输出。结果,由第一放大器驱动的第一行像素可在第一行中记录的像素值中经历第一偏置,而由第二放大器驱动的第二行像素可在第二行中记录的像素值中经历不同于第一偏置的第二偏置。
这可能导致图像传感器捕获的图像以不同强度或对比度的带或条纹的形式显示噪点,从而降低图像质量,从而影响图像传感器的信噪比。
另外,由于产生偏差的漂移的性质,所述偏差可能在图像之间发生变化。用于读取由图像传感器收集的图像数据的读出电路中的操作变化同时可以导致像素值中的偏差。这种噪点对低信号图像尤其有害,例如低光图像和热图像。
解决图像中线条偏差的一种方法是使用图像滤波。然而,滤波方法可以迭代以图像的每个单独像素为中心的窗口内的所有像素,这在计算方面十分昂贵,并且可以导致输出图像中相对于输入图像的信息内容的模糊和相关损失。
处理图像中的线偏差的另一种方法是通过实验确定每行像素中的偏差,并将偏差存储为校准,从而应用于图像。然而,这种校准程序假设不同图像之间的线偏差保持不变,而线偏差的来源可能会随时间波动。
针对所述问题,微软在名为“Correcting line bias in an image”的专利申请中介绍了与校正图像中的线偏差和时间线噪点有关的示例。
概括来说,可以为每个图像帧中的每一行像素确定并应用行偏移校正,以逐个图像地产生偏移校正图像。线偏差校正的确定被表述为一个优化问题,其中通过改变表示像素线中潜在偏差的偏差项来最小化代价函数的值。
在一个示例中,成本函数定义为寻求线偏差校正的线中的像素与相邻线中的像素之间的梯度之和。这种优化方法可以通过动态规划技术有效地执行,从而减少计算成本。微软指出,发明示例可促进关于线偏差和时间线噪点校正的图像生成和实时显示。
图1示意性地示出了用于校正图像中的线偏差和时间线噪点的示例计算管道100。在管道100中,成像设备102利用图像传感器104来捕获包括图像106的多个图像。图像106可以是视频流中的图像,例如微光或热图像视频流。
如图1所示,图像106以不同灰度对比度的高频带或条纹的形式显示噪点。噪点源于线之间不同的线偏差,其可由例如图像传感器104中的驱动和/或读出电路中的操作变化引起。另外,由成像设备102捕获的图像中的噪点随时间波动,并且因此表现出时间线噪点。
为了校正图像106中的线偏差和产生的噪点,将图像106输出到计算设备108。计算设备108逐帧确定对接收图像中的线偏差的校正。图1描绘了由计算设备108通过对图像106应用线偏差校正而产生的偏差校正图像110。
与图像106相反,经偏置校正的图像110不显示图像106中存在的噪声。然后,输出经偏置校正的图像110以供显示设备112显示。可以实时生成和显示经偏移校正的图像,从而保持视频图像流的帧速率。
尽管图1描绘了来自成像设备102的灰度图像输出,但在其他示例中,成像设备102可以产生多通道彩色图像。
另外,成像设备102可以采用任何合适的形式,例如热摄像头或配置为在微光条件下捕获图像的摄像头。这种配置为在低信号条件下操作的图像传感器可以受到时间线噪点的限制。所以,管道100可用于校正此类图像中的线偏差和时间线噪点,从而减轻所述限制。
在各种示例中,可以在设备中实现成像设备102、计算设备108和显示设备112,或者可以将一个或多个实现为单独的设备。作为一个示例,头戴式显示器设备可以包括成像设备102、计算设备108和显示设备112中的每一个。例如,能够在成像设备102捕获的视频流中实时显示偏移校正的图像。
图2示出了校正图像中的线偏差和时间线噪点的示例方法200流程图。例如,图1的管道100可以表示方法200的示例实现。在202,从成像设备接收包括多行像素的图像。在各种示例中,线可以是水平线和/或垂直像素线。
在204,至少基于第n行中的像素值,使用代价函数确定图像中第n行像素的行偏移校正。在一个示例中,代价函数可以包括梯度之和,如208所示,每个梯度在第n行像素中的各个像素和与第n行相邻的像素行中的对应像素之间计算。
作为更具体的示例,可以在第n和n+1行的第一像素之间计算第n行的第一像素的梯度,并且可以在第n和n+1行的第二像素之间计算第n行的第二像素的梯度。
图3描绘了三行像素302A、302B和302C,每行包括四个像素。为了确定线302A的线偏移校正,计算为线302A的所有像素确定的梯度之和,并且在线302A中的各个像素的读出值和相邻线302B中的对应像素的读出值之间计算每个梯度。
具体地,求和以确定代价函数的值的梯度包括(i)第302A行的像素304A和第302B行的像素306A之间的梯度,(ii)第302A行的像素304B和第302B行的像素306B之间的梯度,(iii)第302A行的像素304C和第302B行的像素306C之间的梯度,以及(iv)行302A中的像素304D和行302B中的像素306D之间的梯度。可以以任何合适的方式计算梯度。作为一个示例,可以将每个梯度计算为被比较像素的读出值之间的差值的绝对值。
每个像素的读出值是像素对光的曝光(“像素值”)以及驱动电路、读出电路和/或其他源产生的任何线偏置的函数。因此如图2所示,如210所示,每个梯度表示第n行中的像素值和第n行的线偏置之和,与相邻行中的对应像素值和相邻行的线偏置之和之间的绝对差。如上所述,线偏移的存在将相加偏移应用于像素值。
因此,可以将偏置项添加到像素行中的像素的读出值,然后进行调整以减轻行偏置对代价函数值的影响。再次参考图3,可以将在像素304A和像素306A之间计算的梯度计算为(i)像素304A的读出值和表示影响线302A的线偏置的偏置项之和,以及(ii)像素306A的读出值和表示影响线302B的线偏置的偏置项之和之间的差(例如绝对差)。
通过将像素304A的线偏差应用于像素304B-D,并将像素306A的线偏差应用于像素306B-D,可以类似地计算像素304B和306B、304C和306C以及304D和306D之间的梯度。如上所述,在一个示例中,可以为两个相邻的像素线(例如,上面的一行和下面的一行)计算梯度。计算一行像素的梯度后,该行的所有梯度相加。虽然在本示例中使用绝对差作为梯度,但在其他示例中可以使用任何其他合适的梯度计算。
返回图2,在212,计算第n条线的两个或多个潜在线偏差校正中的每一个的成本函数,并选择产生较低成本函数值的潜在线偏差校正。“线路偏差修正”是指为减少成本函数而调整的偏差项。再次参考图3,可以使用一条线或两条线的不同偏移值来计算线302A和302B中相邻像素之间的梯度,以确定哪个偏移值更能降低成本函数。
例如,对于1和2的两个不同偏移值,可以为(i)偏移量为1的线302A和偏移量为1的线302B、(ii)偏移量为1的线302A和偏移量为2的线302B计算相邻像素之间的梯度,(iii)偏移量为2的线302A和偏移量为1的线302B,以及(iv)偏移量为2的线302A和偏移量为2的线302B。在一个示例中,可能的偏差值的每个组合可用于评估成本函数。
可针对不同的潜在线路偏差修正计算成本函数,直到满足任何合适的条件。例如,对于预定的迭代次数,可以计算成本函数,直到成本函数的值等于或小于阈值,或者直到达到确定的最小值(局部或全局)。
通过递归迭代所有可能的线偏差分配,可以找到全局最优解。动态编程技术在图2的214处示出。因此,动态规划可以使得能够发现产生代价函数的全局最小值的解决方案,同时降低评估代价函数的计算成本,从而在被校正的视频数据的帧率内确定线偏差校正。
在一个示例中,动态规划的使用可能包括使用记忆215或表格216来存储来自早期计算的值,以便在以后的计算中重用。在一个示例中,使用成本函数可能包括使用记忆或制表来减少、最小化或优化成本函数。
在218处确定代价函数的适当低值之后,方法200包括将在204处确定的线偏差校正应用于第n行中的每个像素。如上所述,应用行偏移校正可以包括对对应行中的多个像素值应用偏移。在一个示例中,这可能包括将正偏移或负偏移与像素的读出值求和。
在222,确定在尚未执行线偏移校正处理的图像中是否保留额外的线。如果确定其他行确实保留(是),则方法200前进到223,其中行偏移确定过程前进到图像中第N行之后的下一行(“N++”)。
在223之后,方法200返回到204,其中可以为下一行确定行偏移校正。在一个示例中,方法200可以迭代图像中的每一行,确定并应用每一行的线偏差校正。对于图像末端的最后一行,可以在最后一行和第一行之间执行梯度计算,或者可以使用单个相邻行。
在一个示例中,可以确定线偏差校正,并将其应用于除在218处接收到线偏差校正的线之外的线。例如,可以为图像中的像素行确定线偏移校正并将其应用于图像中的像素行,从而产生具有偏移校正的像素行的图像。然后,可以为结果图像中的像素列确定线偏移校正并将其应用于该列,从而生成具有偏移校正的像素行和像素列的最终图像。行和列偏移校正可以按照任何合适的顺序执行。
继续图2,如果在222处确定附加线不保留(否),方法200前进到224,其中通过显示器输出偏置校正图像。在一个示例中,输出经偏置校正的图像可包括实时输出226经偏置校正的图像。例如,成像设备可以生成形成视频的多个图像帧,并且方法200可以用于为多个图像中的每一个生成偏移校正图像,并实时显示偏移校正图像。
微软指出,发明所述有助于实现图像中的线偏差和时间线噪点的有效校正,以及经偏差校正的图像的实时显示。
名为“Correcting line bias in an image”的微软专利申请最初在2020年12月提交,并在日前由美国专利商标局公布。需要注意的是,这只是一份专利申请,不确定微软是否会或将于何时进行商业化。