实现用于高动态范围图像的图像处理管线的系统和方法

文档序号:7781744阅读:237来源:国知局
实现用于高动态范围图像的图像处理管线的系统和方法
【专利摘要】提供实现用于高动态范围图像的图像处理管线的系统和方法。公开用于生成高动态范围图像数据的系统、方法和计算机程序产品。方法包括从交错的图像传感器接收图像传感器数据的步骤。交错的图像传感器包括被曝光第一曝光时间的像素的第一部分和被曝光短于第一曝光时间的第二曝光时间的像素的第二部分。方法进一步包括以下步骤:标识第二部分中的具有在第一阈值之上的强度值的像素的第一子集、标识第一部分中的具有在第二阈值之下的强度值的像素的第二子集、以及基于第一子集和第二子集生成高动态范围(HDR)数据。
【专利说明】实现用于高动态范围图像的图像处理管线的系统和方法
【技术领域】
[0001]本发明总地涉及图像处理,并且,更具体地,涉及耦连到图像传感器的图像处理管线。
【背景技术】
[0002]在今日,可使用各种图像传感器(例如互补金属氧化物半导体(CMOS)图像传感器和电荷耦合器件(CCD)图像传感器)捕获数字照片。相机功能性普遍被包括在今日的移动
设备中。例如,许多蜂窝电话诸如Apple_R_ iPhone和Motorola? Droid包括集成的图像传
感器,用户可用来捕获数字图像用于传送或存储在移动设备上。这些紧凑的相机系统的设计是复杂的,因为一些场景可能展示出大的对比度(即像素之间的强度差)。换句话说,在单个场景内,场景的一些区域可能光线很好,而场景的其他区域被遮掩在阴影中。例如,当用户在户外拍照时,场景可包含直接处于阳光中的一些对象和免受阳光的其他对象。
[0003]在移动设备中使用的CMOS图像传感器具有有限的动态范围。CMOS图像传感器中的每个像素点(pixel site)的功能类似于电容器,在曝光期间由镜头捕获聚集在图像传感器上的光子并累积电荷。在特定像素点处所积累的电荷量取决于像素传感器的阱容量(well-capacity)。例如,大小约1.4μπι的CMOS像素具有约5000电子的阱容量。一旦像素点已累积等于5000电子的电荷,像素点则无法捕获关于场景亮度的任何进一步的信息。动态范围的上限由阱容量和光的离散性质所调节。散粒噪声(shot-noise)将传感器的最高信噪比(SNR)限制到最大信号的平方根,或在5000电子的示例中约36dB。动态范围的下限由读出噪声(read noise)和量子化所调节。即使不存在读出噪声,像素上的电荷也经采样为离散的数字值;例如10位的值。可使用10位ADC (模数转换器)将用于像素的电荷数字化以生成O和1023之间的值。
[0004]如上文所述,图像传感器仅能够测量光的有限动态范围。因此,由图像传感器所捕获的信息取决于曝光时间。使用快的曝光时间可防止场景的亮区使相应像素点饱和。然而,场景的较暗区中的具体信息可能丢失,因为这些区域中的信号弱。相反,通过延长曝光时间,场景的较暗区中的细节可以成为可见,但场景的较亮区可能曝光过度。
[0005]用于生成具有高动态范围(HDR)的图像的一个技术是使用不同曝光时间捕获相同场景的两个图像。常规地,采用一个曝光时间捕获第一图像并随后采用第二曝光时间捕获第二图像。一旦图像被捕获,则图像处理管线将两个图像组合,以生成具有比图像传感器在单一曝光期间能够捕获的动态范围更大的场景。近来,已开发出采用不同曝光时间大致同时捕获两个图像的交错(interleaved)的图像传感器。实际上,交错的图像传感器使用交错经过图像传感器的两个不同的但同时发生的曝光时间来捕获场景的一个图像。
[0006]用于使用交错的图像传感器生成图像的一些图像处理算法牺牲空间分辨率来生成HDR图像。例如,可使用一半像素生成第一图像并使用另一半像素来生成第二图像。第一图像和第二图像随后被混合以生成具有一半的垂直分辨率的HDR图像。因此,存在对于解决与现有技术相关联的该问题和/或其他问题的需求。
【发明内容】

[0007]公开用于生成高动态范围图像数据的系统、方法、电路设计和计算机程序产品。方法包括从交错的图像传感器接收图像传感器数据的步骤。交错的图像传感器包括被曝光第一曝光时间的像素的第一部分和被曝光短于第一曝光时间的第二曝光时间的像素的第二部分。方法可进一步包括以下步骤:标识第二部分中的具有在第一阈值之上的强度值的像素的第一子集、标识第一部分中的具有在第二阈值之下的强度值的像素的第二子集、以及基于第一子集和第二子集生成高动态范围(HDR)数据。
【专利附图】

【附图说明】
[0008]图1示出根据一个实施例的、用于生成HDR图像的方法的流程图;
[0009]图2A示出根据一个实施例的交错的图像传感器;
[0010]图2B示出根据一个实施例的、HDR数据和图像传感器数据之间的关系;
[0011]图3是根据一个实施例的、示出交错的图像传感器的奇四元行中的像素与偶四元行中的像素之间的关系的散点图;
[0012]图4示出根据一个实施例的、耦连到图2的交错的图像传感器的图像处理管线;
[0013]图5A示出根据一个实施例的、用于生成用于曝光不足或曝光过度的像素的像素值的滤波器;
[0014]图5B示出根据另一实施例的、用于生成用于曝光不足或曝光过度的像素的像素值的滤波器;
[0015]图6示出根据一个实施例的并行处理单元;
[0016]图7示出根据一个实施例的、图6的流多处理器;以及
[0017]图8示出其中可实现各先前实施例的各架构和/或功能性的示例性系统。
【具体实施方式】
[0018]下文更全面地描述用于与交错的图像传感器一起使用的图像处理管线。图像处理管线包括预处理引擎,其将从交错的图像传感器接收的图像传感器数据变换成经压扩(compand)(压缩-扩展)并随后被传送到常规图像信号处理器(ISP)用于进一步处理的HDR数据。常规ISP实现各功能诸如噪声降低、镜头着色校正、去马赛克、颜色空间转换、伽马校正、色度子采样、编码等等。可以以软件、硬件或其组合来实现图像处理管线。在一个实施例中,图像处理管线可实现为被包括在诸如NVIDIA# Tegra应用处理器的片上系统(SoC)中的硬件引擎。在另一实施例中,图像处理管线可以以由诸如中央处理单元(CPU)的处理单元所执行的软件实现。在又一实施例中,图像处理管线可以以由诸如图形处理单元(GPU)的高度并行处理架构所执行的软件实现。
[0019]图1示出根据一个实施例的、用于生成HDR图像的方法100的流程图。在步骤102,预处理引擎从交错的图像传感器接收图像传感器数据。图像传感器数据包括被曝光第一曝光时间的像素的第一部分和被曝光第二曝光时间的像素的第二部分。第一曝光时间大于第二曝光时间。在步骤104,预处理引擎标识第二部分中的具有在第一阈值之上的强度值的像素的第一子集。像素的第一子集表示第二部分中的、具有在第一部分中的可能是无效的邻近像素的像素。在一个实施例中,预处理引擎生成掩码,其包括标识相应像素是否被包括在第一子集中的值(例如O或I)。在步骤106,预处理引擎标识第一部分中的具有在第二阈值之下的强度值的像素的第二子集。像素的第二子集表示第一部分中的、具有在第二部分中的可能是无效的邻近像素的像素。再一次地,在一个实施例中,预处理引擎生成掩码,其包括标识相应像素是否被包括在第二子集中的值(例如O或I)。在步骤108,预处理引擎基于第一子集和第二子集生成HDR数据。应注意的是,虽然本文结合上文所阐述的用于生成HDR图像的方法来阐述各可选特征,但这类特征仅用于示例性目的并且不应视为以任何方式加以限制。
[0020]图2示出根据一个实施例的交错的图像传感器200。图像传感器200包括以二维(2D)阵列布置的多个像素210。在一个实施例中,图像传感器200包括重叠在多个像素210上的彩色滤波阵列(CFA)。可配置CFA使得像素的第一子集与第一彩色滤波器相关联、像素的第二子集与第二彩色滤波器相关联以及像素的第三子集与第三彩色滤波器相关联。例如,拜耳模式(Bayer pattern)CFA实现循环的红、绿和蓝色滤波器的2x2模式,像素的每个2x2阵列与两个绿色滤波器、一个红色滤波器和一个蓝色滤波器重叠。如图2A所示,像素的第一行是交替的绿和蓝色滤波器并且像素的第二行是交替的红和绿色滤波器,像素的第三行是交替的绿和蓝色滤波器并且像素的第四行是交替的红和绿色滤波器,以此类推。每对的行在本文称为四元行(quad row)(例如第一四元行221、第二四元行222等)。在其他实施例中,不同的CFA可实现为交错的图像传感器200的部分,诸如RGBE、RGBff,或CYGM CFA。
[0021]不同于常规CMOS图像传感器,图像传感器200是交错的图像传感器。采用常规的CMOS图像传感器,图像传感器200的行以顺序的次序重置。在曝光时间图像传感器被曝光,从而在像素点中的每一个处累积电荷。在每一个像素点处累积的电荷约与相对于其他像素点中的每一个光照到像素点的强度成比例。一旦已经过曝光时间,图像传感器的行以顺序的次序经采样以生成表示用于数字图像中的每个像素的光强度的值的阵列。相反,交错的图像传感器200基于多个曝光时间对像素进行采样。在一个实施例中,图像传感器200的奇四元行(即221、223、225、227等)在第一重置时间以顺序的次序重置。类似地,图像传感器200的偶四元行(即222、224、226、228等)在第二重置时间以顺序的次序重置。在采样时间读取图像传感器200的奇四元行和偶四元行。采样时间和第一重置时间之间的差等于第一曝光时间并且采样时间和第二重置时间之间的差等于第二曝光时间,其小于第一曝光时间。因此,被包括在奇四元行中的像素210包括被包括在图像传感器200中的像素210的第一部分231,其与长曝光时间相对应,并且被包括在偶四元行中的像素210包括被包括在图像传感器200中的像素210的第二部分232,其与短曝光时间相对应。第一部分231中的像素捕获关于场景的较暗区域的更详细信息并且第二部分232中的像素包含关于场景的较亮区域的更详细信息。将理解的是,在其他实施例中,可在重置时间重置所有像素,可在自从重置时间开始已经过第二曝光时间之后读取偶四元行中的像素,并在自从重置时间开始已经过第一曝光时间之后读取奇四元行中的像素,其中第一曝光时间长于第二曝光时间。
[0022]图2B示出根据一个实施例的、HDR数据292和图像传感器数据290之间的关系。如上文所述,交错的图像传感器200生成图像传感器数据290,该图像传感器数据290包括奇四元行所采样的第一部分231和从偶四元行所采样的第二部分232,其均具有相同的动态范围。在图像中的某些位置,邻近像素将以与不同曝光时间相对应的不同强度级别捕获来自相同对象的光。例如,图像传感器的第三行中的第一像素(即像素291)可由于偶四元行的短曝光时间而以(1023中的)102的强度级别捕获绿色对象。然而,图像传感器的第五行中的第一像素(即像素295)可由于奇四元行的长曝光时间而以(1023中的)约816的强度级别捕获相同绿色对象。假定两个像素既不曝光不足也不曝光过度,那么邻近像素在不同空间位置、但以与曝光比相关的不同强度级别捕获关于对象的细节。
[0023]预处理引擎智能地对来自原始图像传感器数据的值进行采样和滤波以生成HDR数据292,该HDR数据292是来自第一部分231的值、来自第二部分的经缩放的值、基于第一部分231中的一个或多个样本值所滤波的值以及基于第二部分232中的一个或多个样本值所滤波的值的组合。针对HDR数据292中的每个像素,预处理引擎基于图像传感器数据290中的相应像素的强度值生成用于像素的强度值。如果相应像素被包括在第一部分231中,那么HDR数据292中的像素的强度值被设置为等于相应像素的强度值。如果相应像素被包括在第二部分232中,那么HDR数据292中的像素的强度值被设置为等于相应像素的强度值的缩放版本。在一个实施例中,第二部分232中的相应像素的强度值以曝光比(即第一曝光时间和第二曝光时间的比)来缩放。将理解的是,以曝光比进行的缩放可能要求HDR数据292中的附加位。例如,对于8的曝光比,需要附加的3个位以将第二部分232的强度值缩放8。[0024]在另一实施例中,取代以曝光比缩放第二部分232中的相应像素的强度值,预处理引擎以曝光比的倒数缩放第一部分231中的相应像素的强度值。在这类实施例中,HDR数据292具有与图像传感器数据290相同的位深度。虽然通过将值缩小而非将值放大可能丢失一些信息,但不要求(例如通过压扩来)减少HDR数据292的位深度的附加步骤,以由常规ISP处理HDR数据292。
[0025]HDR数据292可包括一些无效值。例如,HDR数据292中的像素293具有与图像传感器数据290中的相应像素295相关联的索引。预处理引擎可基于第二部分232中的邻近像素296确定用于第一部分231中的相应像素295的值是否有效。如果第二部分232中的邻近像素296的强度级别在指示像素295可能由于曝光过度而无效的阈值级别t2之上,那么预处理引擎可基于第二部分内的一个或多个邻近像素确定用于像素的新值。在一个实施例中,阈值t2被设置为等于最大阈值&乘以曝光比的倒数卿^!/^=1023/8=128).,将理解的是,表示基于短曝光时间的值的、用于第二部分232中的像素的强度值可位于第一部分中的邻近像素的附近,该第一部分中的邻近像素具有约等于用于第二部分232中的像素的强度级别乘以曝光比的强度值。因为t2乘以曝光比等于图像传感器200的最大强度级另O,所以第一部分231中的使用较长曝光时间所捕获的邻近像素可能已使图像传感器200饱和。类似地,当第一部分231中的像素在不同阈值(诸如最小阈值h乘以曝光比)之下时,第二部分232中的使用较短曝光时间所捕获的邻近像素可能是曝光不足的。
[0026]为了针对第一部分231中的曝光过度的像素进行校正,预处理引擎标识第二部分232中的具有在第一阈值之上的强度值的邻近像素。为了针对第二部分232中的曝光不足的像素进行校正,预处理引擎标识第一部分231中的具有在第二阈值之下的强度值的邻近像素。随后,针对HDR数据292中的每个像素,预处理引擎确定图像传感器数据292中的相应像素的邻近像素是在第一阈值之上还是在第二阈值之下。换句话说,预处理引擎确定相应像素的邻近像素被包括在第一子集还是第二子集中。如果邻近像素被包括在第一子集中,那么用于HDR数据292中的像素的新值通过将来自第二部分232中的邻近像素的一个或多个值滤波并以曝光比缩放经滤波的值来生成。如果邻近像素被包括在第二子集中,那么用于HDR数据292中的像素的新值通过将来自第一部分231中的邻近像素的一个或多个值滤波来生成。
[0027]将理解的是,产生的HDR数据包括与高分辨率的场景区域一致的低分辨率的场景区域。低分辨率区域是包括因为区域中的至少一些像素在曝光中的一个中是曝光不足或曝光过度的而产生的经滤波的结果的那些区域。高分辨率区域是包括依据在两个曝光期间既不曝光不足也不曝光过度的像素所计算的结果的那些区域。将理解的是,图像传感器数据292中的像素可被分类为三个不同组的部分:第一组,包括具有在第一子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第二部分232的一个或多个值滤波来生成的;第二组,包括具有在第二子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第一部分231的一个或多个值滤波来生成的;以及第三组,包括具有不在第一子集或第二子集中的邻近像素的像素,其指示HDR数据292的像素是通过缩放第二部分232中的像素或选择来自第一部分231的值来生成的。
[0028]在另一实施例中,预处理引擎可标识第二部分232中的在第三阈值之上但在第一阈值之下的像素的第三子集。第三子集指示第二部分232中的可能在接近于曝光过度的像素附近的邻近像素。预处理引擎还标识第一部分231中的在第四阈值之下但在第二阈值之上的像素的第四子集。第四子集指示第一部分231中的可能在接近于曝光不足的像素附近的邻近像素。预处理引擎确定相应像素的邻近像素是被包括在第三子集还是第四子集中。如果邻近像素被包括在第三子集中,那么用于HDR数据292中的像素的新值通过将来自第二部分232中的邻近像素的一个或多个值滤波并以曝光比缩放经滤波的值来生成,以生成第一中间结果。预处理引擎随后将第一中间结果与第一部分231中的相应像素的强度值混合。在一个实施例中,混合包括基于邻近像素的强度值的相应像素的强度值与第一中间结果之间的线性插值。类似地,如果邻近像素被包括在第四子集中,那么用于HDR数据292中的像素的新值通过将来自第一部分231中的邻近像素的一个或多个值滤波来生成,以生成第一中间结果。预处理引擎随后将第一中间结果与第二部分232中的相应像素的强度值的经缩放版本混合。
[0029]将理解的是,用于这类实施例的图像传感器数据290中的像素可被分类为五个不同组的部分:第一组,包括具有在第一子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第二部分232的一个或多个值滤波来生成的;第二组,包括具有在第二子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第一部分231的一个或多个值滤波来生成的;第三组,包括具有在第三子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第二部分232的经缩放和滤波的值与来自第一部分231的值混合来生成的;第四组,包括具有在第四子集中的邻近像素的像素,其指示HDR数据292的像素是通过将来自第一部分231的经滤波的值与来自第二部分232的经缩放的值混合来生成的;以及第五组,包括具有不在第一子集、第二子集、第三子集或第四子集中的邻近像素的像素,其指示HDR数据292的像素是通过缩放第二部分232中的像素或选择来自第一部分231的值来生成的。[0030]图3是根据一个实施例的、示出交错的图像传感器200的奇四元行中的像素与偶四元行中的像素之间的关系的散点图300。如上文所述,奇四元行(例如221、223、225、227等)中的像素与第一曝光时间相关联并且偶四元行(例如222、224、226、228等)中的像素与第二曝光时间相关联。散点图300将特定通道的像素的强度级别与和相同通道(即相同颜色)相关联的相邻像素关联。可针对交错的图像传感器200的CFA中的每个通道标绘不同的散点图300。
[0031]如图3所示,散点图300示出约8的曝光比(rx)(即第一曝光时间比第二曝光时间长约8倍)。邻近像素的强度级别之间的关系是近似线性的(即y=ax+b)。例如,如图3的散点图300所示,符合散点图300中的样本点的线的斜率约等于曝光比。在散点图300中,最小强度级别是约45,最大强度级别是约1023。此外,偶四元行(即第二部分232)中的在约167 (即45+ (1023 - 45)/rx)之上的强度值指示在相邻的奇四元行(即第一部分231)中可能存在曝光过度的像素,并且奇四元行(即第一部分231)中的在约360 (即45*rx)之下的强度值指示在相邻的偶四元行(即第二部分232)中可能存在曝光不足的像素用于类似的对象。
[0032]在一个实施例中,如散点图300中所标绘的,用于奇四元行中的像素和偶四元行中的邻近像素的强度值之间的关系可用来定义用于交错的图像传感器200的曝光比。可在制造期间通过捕获具有标准光的场景的图像来标定图像传感器200。例如,采用图像传感器200的数字相机可置于灯箱中并被曝光于其上具有不同颜色的均匀发光表面。使用用于奇四元行和偶四元行的两个不同的曝光时间来使图像传感器200曝光。随后,各样本像素的值输入到线性回归算法以查找用于图像传感器200的曝光比。
[0033]图4示出根据一个实施例的、耦连到图2的交错的图像传感器200的图像处理管线400。图像处理管线400包括预处理引擎410、压扩引擎420、常规ISP430、色调校正引擎440、图像缩放引擎450以及编码引擎460。交错的图像传感器200生成基于两个不同的曝光时间、短曝光和长曝光所采样的图像传感器数据。预处理引擎410接收图像传感器数据并生成HDR数据,如上文所述。
[0034]在一个实施例中,图像处理管线400包括压扩引擎420。压扩引擎420以非线性方式减少HDR数据292中的每个强度值所使用的位的数量,使得可在下游实现常规ISP430以处理HDR数据292。换句话说,可使用比用来在信号的较高级别之间加以区分的位更多的位来在信号的较低级别之间加以区分。概念上讲,实现压扩引擎420使得可在图像处理管线400中使用常规ISP430。换句话说,如果不实现压扩引擎420,那么配置为处理例如10位数据的ISP无法对具有经扩展的例如13位动态范围的HDR数据292进行操作。实现压扩引擎420来以避免信息的不必要的丢失的非线性方式压缩HDR数据292,而非将HDR数据缩放回到10位动态范围,因为这将造成信息丢失。压扩引擎420可将HDR数据292缩小到初始LDR动态范围用于由常规ISP430加以进一步处理。在另一实施例中,压扩引擎420不被包括在图像处理管线400中并且ISP430配置为以较高位宽处理HDR数据292。
[0035]ISP430可实现典型地在常规ISP中实现的若干功能。例如,ISP430可实现用于实施噪声降低、颜色转换、伽马校正等等的功能。因为图像处理管线400对已经由压扩引擎420以非线性方式压缩的数据进行操作,所以图像处理管线400可包括对压缩的非线性进行补偿的色调校正引擎440。[0036]图像处理管线400还包括图像缩放引擎450,其可连接到取景器490。图像缩放引擎450可配置为以与图像传感器200的全分辨率不同的分辨率生成HDR数据的经缩放版本。取景器490可实时显示HDR图像。图像缩放引擎450还与编码引擎460耦连,该编码引擎460配置为对未经压缩的图像数据进行编码用于存储在存储器中。编码引擎460可实现本领域中已知的任何数目的用于图像压缩的编解码器,包括联合图象专家组(JPEG)编解码器。
[0037]图5A示出根据一个实施例的、用于生成曝光不足或曝光过度的像素的像素值的滤波器500。当预处理引擎410确定图像传感器数据290中的相应像素501被包括在第一部分231中时,预处理引擎410检查邻近像素503以确定邻近像素503是否被包括在第一子集中(即具有在阈值之上的强度值)。如果邻近像素503被包括在第一子集中,那么HDR数据292中的像素的强度值通过将第二部分232中的一个或多个值滤波来生成。在一个实施例中,因为相应像素501位于图像传感器200的第一奇四元行中,所以经滤波的值将是基于第二部分232中的单个样本即像素503的。
[0038]类似地,如图5A所示,当预处理引擎410确定图像传感器数据290中的相应像素503被包括在第二部分232中时,预处理引擎410检查相邻像素501以确定相邻像素501是否被包括在第二子集中(即具有在阈值之下的强度值)。如果相邻像素501被包括在第二子集中,那么预处理引擎通过将第一部分231中的一个或多个值滤波来生成HDR数据292中的像素的强度值。在一个实施例中,预处理引擎410通过在直接在相应像素503之上和之下的四元行中的相邻像素的两个样本值之间进行插值来实现滤波器500。例如,针对与像素503相对应的、HDR数据292中的像素,预处理引擎410将检查以确定相邻像素501是否在阈值之下。如果像素501的强度值在阈值之下,那么预处理引擎410基于像素501和像素502之间的插值生成像素的强度值。
[0039]图5B示出根据另一实施例的、用于生成曝光不足或曝光过度的像素的像素值的滤波器510。不同于图5A示出的滤波器500,滤波器510对相邻四元行中的多于两个值进行采样以生成像素的强度值。如图5B所示,针对相应像素503,当预处理引擎确定相邻像素506被包括在第二子集中时,随后预处理引擎通过将相邻四元行中的4个邻近像素(例如501、502、504和505)滤波来生成HDR数据292中的相应像素503的强度值。强度值通过对4个邻近像素的强度值进行采样并取4个值的平均数来生成。将理解的是,可应用其他类型的滤波器以生成用于具有在第一子集或第二子集中的邻近像素的像素的强度值。例如,实现高斯卷积内核的滤波器可被实现,其对围绕相应像素的滤波器窗口内的像素的多个强度值进行采样。在又一实施例中,滤波器可选择直接在相应像素之上或之下的四元行中的最接近的相邻像素。
[0040]此外,可以以软件、硬件或其组合来实现上文所述的图像处理管线400,特别是预处理引擎410。在一个实施例中,图像处理管线400的部分可实现为着色器程序,该着色器程序配置为在诸如GPU的并行处理单元上执行。示例性并行处理单元在下文加以阐述。在一个实施例中,GPU是通用图形处理单元(GPGPU),其配置为实施典型地由CPU所实施的计算。虽然采用若干特征共同描述图6的并行处理单元,但仅出于示例性目的阐述这类特征并且其不应视为以任何方式加以限制。
[0041]图6示出根据一个实施例的并行处理单元(PPU) 600。虽然本文提供并行处理器作为PPU600的示例,但应特别注意的是,这类处理器仅出于示例性目的而阐述,并且可出于相同目的采用任何处理器以对其进行补充和/或替换。在一个实施例中,PPU600配置为在两个或更多个流多处理器(SM) 650中并发地执行多个线程。线程(即执行的线程)是在特定SM650内执行的指令集的实例化。下文结合图7更详细描述的每个SM650可包括但不限于一个或多个处理核心、一个或多个加载/存储单元(LSU)、一级(LI)高速缓存、共享存储器等。
[0042]在一个实施例中,PPU600包括输入/输出(I/O)单元605,其配置为通过系统总线602传送和接收来自中央处理单元(CPU)(未示出)的通信(即命令、数据等)。I/O单元605可实现用于高速外围部件互连(PCIe)总线上的通信的PCIe接口。在可替代实施例中,I/O单元605可实现其他类型的公知总线接口。
[0043]PPU600还包括主机接口单元610,其将命令解码并将命令传送到PPU600的网格管理单元615或如命令可指定的其他单元(例如存储器接口 680)。主机接口单元610配置为路由PPU600的各逻辑单元之间的通信。
[0044]在一个实施例中,由CPU将被编码为命令流的程序写入缓冲区。缓冲区是例如存储器604或系统存储器的存储器中的区域,其可由CPU和PPU600 二者访问(即读/写)。CPU将命令流写入缓冲区并随后将指向命令流开始的指针传送到PPU600。主机接口单元610为网格管理单元(GMU)615提供指向一个或多个流的指针。GMU615选择一个或多个流并配置为将所选择的流组织成挂起网格池。挂起网格池可包括尚未被选择用于执行的新网格和已被部分地执行并且已被暂停的网格。
[0045]耦连在GMU615和SM650之间的工作分布单元620管理活动网格池,选择并分派活动网格用于由SM650执行。当挂起的网格有资格执行、即不具有未解决的数据依赖时,挂起的网格由GMU615转移到活动网格池。当活动网格的执行被依赖阻塞时,活动网格被转移到挂起池。当网格的执行完成时,网格被工作分布单元620从活动网格池移除。除了接收来自主机接口单元610和工作分布单元620的网格以外,GMU610还接收在网格的执行期间由SM650所动态生成的网格。这些动态生成的网格加入挂起网格池中的其他挂起的网格。
[0046]在一个实施例中,CPU执行实现应用编程接口(API)的驱动程序内核,该应用编程接口使能在CPU上执行的一个或多个应用以调度用于在PPU600上执行的操作。应用可包括使驱动程序内核生成一个或多个网格用于执行的指令(即API调用)。在一个实施例中,PPU600实现SMD (单指令、多数据)结构,其中由线程块中的不同线程对不同数据集并发地执行网格中的每个线程块(即线程束(warp))。驱动程序内核定义包含k个相关线程的线程块,使得相同线程块中的线程可通过共享存储器交换数据。在一个实施例中,线程块包括32个相关线程,并且网格是执行相同流的一个或多个线程块的阵列,并且不同的线程块可通过全局存储器交换数据。
[0047]在一个实施例中,PPU600包括X个SM650 (X)0例如,Pro600可包括15个不同的SM650。每个SM650是多线程的并配置为并发地执行来自特定线程块的多个线程(例如32个线程)。SM650中的每一个经由交叉开关660 (或其他类型的互连网络)连接到二级(L2)高速缓存665。L2高速缓存665连接到一个或多个存储器接口 680。存储器接口 680实现
16、32、64、128位数据总线等等,用于高速数据转移。在一个实施例中,PPU600包括U个存储器接口 680 (U),其中每个存储器接口 680 (U)连接到相对应的存储器设备604 (U)。例如,PPU600可连接到多达6个存储器设备604,诸如图形双数据速率、版本5、同步动态随机存取存储器(⑶DR5SDRAM)。
[0048]在一个实施例中,PPU600实现多级存储器层次。存储器604位于耦连到PPU600的SDRAM的片外。来自存储器604的数据可被获取并存储在L2高速缓存665中,该L2高速缓存665位于片上并在各SM650之间共享。在一个实施例中,SM650中的每一个还实现LI高速缓存。LI高速缓存是专用于特定SM650的私有存储器。LI高速缓存中的每一个耦连到共享的L2高速缓存665。来自L2高速缓存665的数据可被获取并存储在LI高速缓存中的每一个中用于SM650的功能单元中的处理。
[0049]在一个实施例中,PPU600包括图形处理单元(GPU)。PPU600配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可被定义为诸如点、线、三角形、四边形、三角形条带等基元的集合。典型地,基元包括指定用于(例如在模型空间坐标系中的)基元的若干顶点以及与基元的每个顶点相关联的属性的数据。PPU600可配置为处理图形基元以生成帧缓冲区(即用于显示器的像素中的每一个的像素数据)。驱动程序内核实现图形处理管线,诸如由OpenGL API定义的图形处理管线。
[0050]应用将用于场景的模型数据(即顶点和属性的合集)写到存储器。模型数据定义在显示器上可见的对象中的每一个。应用随后对驱动程序内核做出请求模型数据被渲染和显示的API调用。驱动程序内核读取模型数据并将命令写到缓冲区以实施一个或多个操作来处理模型数据。命令可将包括顶点着色器、外壳着色器、几何着色器、像素着色器等中的一个或多个的不同着色器程序编码。例如,GMU615可配置一个或多个SM650为执行处理由模型数据所定义的若干顶点的顶点着色器程序。在一个实施例中,GMU615可配置不同SM650为并发地执行不同着色器程序。例如,SM650的第一子集可配置为执行顶点着色器程序,而SM650的第二子集可配置为执行像素着色器程序。SM650的第一子集处理顶点数据以产生经处理的顶点数据并将经处理的顶点数据写到L2高速缓存665和/或存储器604。在经处理的顶点数据被光栅化(即从三维数据变换成屏幕空间中的二维数据)以产生碎片数据(fragment data)之后,SM650的第二子集执行像素着色器以产生经处理的碎片数据,其随后与其他经处理的碎片数据混合并被写到存储器604中的帧缓冲区。顶点着色器程序和像素着色器程序可并发地执行,以管线的方式处理来自同一场景的不同数据直到用于场景的所有模型数据已被渲染到帧缓冲区为止。
[0051]PPU600可包括在台式计算机、膝上型计算机、平板计算机、智能电话(例如无线、手持设备)、个人数字助理(PDA)、数字相机、手持电子设备等等中。在一个实施例中,PPU600具体化在单个半导体衬底上。在另一实施例中,PPU600连同一个或多个其他逻辑单元被包括在片上系统(SoC)中,所述一个或多个其他逻辑单元诸如精简指令集计算机(RISC) CPU、存储器管理单元(MMU)、数模转换器(DAC)等。
[0052]在一个实施例中,PPU600可被包括在包括诸如⑶DR5SDRAM的一个或多个存储器设备604的图形卡上。图形卡可配置为与包括例如北桥芯片集和南桥芯片集的、台式计算机的主板上的PCIe槽相接。在又一实施例中,Pro600可以是被包括在主板的芯片集(即北桥)中的集成图形处理单元(iGPU)。
[0053]图7示出根据一个实施例的、图6的流多处理器650。如图7所示,SM650包括指令高速缓存705、一个或多个调度器单元710、寄存器堆720、一个或多个处理核心750、一个或多个双精度单元(DPU) 751、一个或多个特殊功能单元(SFU) 752、一个或多个加载/存储单元(LSU)753、互连网络780、共享存储器/LI高速缓存770以及一个或多个纹理单元790。
[0054]如上文所述,工作分布单元620分派活动网格用于在PPU600的一个或多个SM650上执行。调度器单元710从工作分布单元620接收网格并管理用于每个活动网格的一个或多个线程块的指令调度。调度器单元710调度线程用于在并行线程的组中执行,其中每个组称为线程束。在一个实施例中,每个线程束包括32个线程。调度器单元710可管理多个不同线程块,在每个时钟周期期间将线程块分配到线程束用于执行并随后调度来自各功能单元(即核心750、DPU751、SFU752以及LSU753)上的多个不同线程束的指令。
[0055]在一个实施例中,每个调度器单元710包括一个或多个指令分派单元715。每个分派单元715配置为将指令传送到功能单元中的一个或多个。在图7示出的实施例中,调度器单元710包括两个分派单元715,其使能来自同一线程束的两个不同指令在每个时钟周期期间被分派。在可替代实施例中,每个调度器单元710可包括单个分派单元715或附加的分派单元715。
[0056]每个SM650包括寄存器堆720,其提供用于SM650的功能单元的寄存器的集合。在一个实施例中,寄存器堆720在功能单元中的每一个之间被划分,使得每个功能单元被分配寄存器堆720的专用部分。在另一实施例中,寄存器堆720在正由SM650执行的不同线程束之间被划分。寄存器堆720为连接到功能单元的数据路径的操作数提供暂时存储。
[0057]每个SM650包括L个处理核心750。在一个实施例中,SM650包括大数目的(例如192个等)不同的处理核心750。每个核心750是完全管线(fully-pipelined)的单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE754-2008标准。每个SM650还包括实现双精度浮点运算的M个DPU751、实施特殊功能(例如拷贝矩形、像素混合操作等)的N个SFU752以及在共享存储器/LI高速缓存770和寄存器堆720之间实现加载和存储操作的P个LSU753。在一个实施例中,SM650 包括 64 个 DPU75U32 个 SFU752 以及 32 个 LSU753。
[0058]每个SM650包括互连网络780,其将功能单元中的每一个连接到寄存器堆720和共享存储器/LI高速缓存770。在一个实施例中,互连网络780是交叉开关,其可配置为将任何功能单元连接到寄存器堆720中的任何寄存器或共享存储器/LI高速缓存770中的任何存储器位置。
[0059]在一个实施例中,SM650实现在GPU内。在这类实施例中,SM650包括J个纹理单元790。纹理单元790配置为从存储器604加载纹理图(即纹理元素的2D阵列)并对纹理图采样以产生经采样的纹理值用于在着色器程序中使用。纹理单元790使用mip-map (即变化细节层级的纹理图)实现诸如抗锯齿操作的纹理操作。在一个实施例中,SM650包括16个纹理单元790。
[0060]上文所述的PPU600可配置为实施比常规CPU快得多的高度并行计算。并行计算在图形处理、数据压缩、计量生物学、流处理算法等方面具有优势。
[0061]图8示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统800。如所示,提供了系统800,其包括至少一个连接到通信总线802的中央处理器801。通信总线802可使用任何合适的协议来实现,诸如外围部件互连(PCI)、PC1-ExpreSS、AGP (加速图形端口)、超传输、或任何其他总线或点对点通信协议。系统800还包括主存储器804。控制逻辑(软件)和数据存储在可采取随机存取存储器(RAM)形式的主存储器804中。
[0062]系统800还包括输入设备812、图形处理器806以及显示器808,所述显示器808即常规CRT (阴极射线管)、IXD (液晶显示器)、LED (发光二极管)、等离子显示器等等。可从输入设备812例如键盘、鼠标、触摸板、扩音器等接收用户输入。在一个实施例中,图形处理器806可包括多个着色器模块、光栅化模块等。前述模块中的每一个实际上可布置于单个半导体平台上以形成图形处理单元(GPU)。
[0063]在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增强的连通性的多芯片模块,其仿真片上操作,并通过利用常规中央处理单元(CPU)和总线实现方案做出实质的改进。当然,各模块还可根据用户的期望分开地或以半导体平台的各种组合来布置。
[0064]系统800还可包括二级存储810。二级存储810包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、压缩光盘驱动器、数字通用光盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移动存储驱动器。可移动存储驱动器以公知的方式从可移动存储单元读取和/或写入到可移动存储单元。
[0065]计算机程序或计算机控制逻辑算法可存储在主存储器804和/或二级存储810中。这类计算机程序当被执行时使得系统800能够实施各种功能。存储器804、存储810和/或任何其他存储是计算机可读介质的可能的示例。
[0066]在一个实施例中,可在以下内容的上下文中实现各先前示图的架构和/或功能性:中央处理器801、图形处理器806、能够具有中央处理器801和图形处理器806 二者的能力的至少一部分的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)和/或用于此的任何其他集成电路。
[0067]还有就是,可在以下内容的上下文中实现各先前示图的架构和/或功能性:通用计算机系统、电路板系统、专用于娱乐目的的游戏机系统、特定于应用的系统和/或任何其他所期望的系统。例如,系统800可采取台式计算机、膝上型计算机、服务器、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑的形式。还有就是,系统800可采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
[0068]进一步地,虽然未示出,但系统800可耦连到网络(例如电信网络、局域网(LAN)、无线网、诸如互联网的广域网(WAN)、对等网络、电缆网络等等)用于通信目的。
[0069]虽然上文已描述了各实施例,但应理解的是它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应被上文所述的示例性实施例中的任何一个所限制,而应仅根据下面的权利要求和其等同物来加以限定。
【权利要求】
1.一种方法,包括: 从交错的图像传感器接收图像传感器数据,其中所述交错的图像传感器包括被曝光第一曝光时间的像素的第一部分和被曝光短于所述第一曝光时间的第二曝光时间的像素的第二部分; 标识所述第二部分中的具有在第一阈值之上的强度值的像素的第一子集; 标识所述第一部分中的具有在第二阈值之下的强度值的像素的第二子集;以及 基于所述第一子集和所述第二子集生成高动态范围(HDR)数据。
2.根据权利要求1所述的方法,其中所述交错的图像传感器包括以多个四元行布置的拜耳模式彩色滤波阵列,并且其中所述第一部分包括所述交错的图像传感器的奇四元行并且所述第二部分包括所述交错的图像传感器的偶四元行。
3.根据权利要求1所述的方法,进一步包括通过进行以下内容来捕获所述图像传感器数据: 在第一重置时间重置所述第一部分中的像素; 在第二重置时间重置所述第二部分中的像素;以及 在自从所述第一 重置时间开始已经过采样时间之后,对所述第一部分和所述第二部分中的像素进行采样, 其中所述采样时间和所述第一重置时间之间的差等于第一曝光时间,并且所述采样时间和所述第二重置时间之间的差等于小于所述第一曝光时间的第二曝光时间。
4.根据权利要求1所述的方法,其中标识所述第二部分中的所述像素的第一子集包括生成标识所述第二部分中的、具有大于所述第一阈值的强度值的像素的第一掩码,并且其中标识所述第一部分中的所述像素的第二子集包括生成标识所述第一部分中的、具有小于所述第二阈值的强度值的像素的第二掩码。
5.根据权利要求1所述的方法,其中生成高动态范围数据包括通过进行以下内容来生成所述HDR数据中的每个像素的强度值: 确定与用于所述像素的索引相关联的相应像素是被包括在所述第一部分还是所述第二部分中;以及 如果所述相应像素被包括在所述第一部分中,那么: 确定所述相应像素的邻近像素是否被包括在所述第一子集中,以及如果所述邻近像素被包括在所述第一子集中,那么通过将所述第二部分中的一个或多个经采样的值滤波来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第一子集中,那么通过选择所述相应像素的强度值来生成所述像素的强度值;或者 如果所述相应像素被包括在所述第二部分中,那么: 确定所述邻近像素是否被包括在所述第二子集中,以及 如果所述邻近像素被包括在所述第二子集中,那么通过将所述第一部分中的一个或多个经采样的值滤波以生成经滤波的值并缩放所述经滤波的值来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第二子集中,那么通过以曝光比缩放所述相应像素的强度值来生成所述像素的强度值。
6.根据权利要求5所述的方法,其中确定所述邻近像素是否被包括在所述第一子集中包括对第一掩码进行采样,并且其中确定所述邻近像素是否被包括在所述第二子集中包括对第二掩码进行采样。
7.根据权利要求6所述的方法,其中所述第一掩码通过实施所述邻近像素的强度级别和所述第一阈值之间的比较操作来生成,并且其中所述第二掩码通过实施所述邻近像素的强度级别和所述第二阈值之间的比较操作来生成。
8.根据权利要求5所述的方法,其中滤波包括在两个经采样的值之间实施线性插值。
9.根据权利要求5所述的方法,其中滤波包括取多个经采样的值的加权和。
10.根据权利要求5所述的方法,其中滤波与基于多个经采样的值的所述加权和的去马赛克处理相组合。
11.根据权利要求1所述的方法,进一步包括通过将所述HDR数据压扩来修改所述HDR数据。
12.根据权利要求11所述的方法,进一步包括将被修改的HDR数据传送到配置为实施噪声降低、去马赛克、颜色转换和伽马校正的功能中的至少一个的图像信号处理器。
13.根据权利要求1所述的方法,进一步包括: 标识所述第二部分中 的具有在第三阈值之上并在所述第一阈值之下的强度值的像素的第三子集; 标识所述第一部分中的具有在第四阈值之下并在第二阈值之上的强度值的像素的第四子集; 确定邻近像素被包括在所述第三子集中,随后将通过将所述第二部分中的一个或多个值滤波所生成的像素的第一强度值与通过选择相应像素的强度值所生成的像素的第二强度值混合;以及 确定邻近像素被包括在所述第四子集中,随后将通过将所述第一部分中的一个或多个值滤波的像素的第三强度值与通过以曝光比对所述相应像素的强度值进行缩放所生成的像素的第四强度值混合。
14.根据权利要求13所述的方法,其中混合包括基于所述邻近像素的强度值实施线性插值。
15.一种非暂时性计算机可读存储介质,其存储指令,当所述指令由处理器所执行时,使所述处理器实施以下步骤,包括: 从交错的图像传感器接收图像传感器数据,其中所述交错的图像传感器包括被曝光第一曝光时间的像素的第一部分和被曝光短于所述第一曝光时间的第二曝光时间的像素的第二部分; 标识所述第二部分中的具有在第一阈值之上的强度值的像素的第一子集; 标识所述第一部分中的具有在第二阈值之下的强度值的像素的第二子集;以及 基于所述第一子集和所述第二子集生成高动态范围(HDR)数据。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中生成高动态范围数据包括通过以下步骤生成HDR图像中的每个像素的强度值: 确定与用于所述像素的索引相关联的相应像素是被包括在所述第一部分还是所述第二部分中;以及如果所述相应像素被包括在所述第一部分中,那么: 确定所述相应像素的邻近像素是否被包括在所述第一子集中,以及如果所述邻近像素被包括在所述第一子集中,那么通过将所述第二部分中的一个或多个值滤波来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第一子集中,那么通过以曝光比缩放所述相应像素的强度值来生成用于所述像素的强度值;或者 如果所述相应像素被包括在所述第二部分中,那么: 确定所述邻近像素是否被包括在所述第二子集中,以及 如果所述邻近像素被包括在所述第二子集中,那么通过将所述第一部分中的一个或多个值滤波来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第二子集中,那么通过选择所述相应像素的强度值来生成所述像素的强度值。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中滤波包括在两个经采样的值之间实施线性插值。
18.—种系统,包括: 交错的图像传感器,其包括被曝光第一曝光时间的像素的第一部分和被曝光短于所述第一曝光时间的第二曝光时间的像素的第二部分;以及 图像处理管线,其耦连到所述交错的图像传感器并配置为: 从所述交错的图像传感器接收图像传感器数据; 标识所述第二部分中的具有在第一阈值之上的强度值的像素的第一子集, 标识所述第一部分中的具有在第二阈值之下的强度值的像素的第二子集,以及 基于所述第一子集和所述第二子集生成高动态范围(HDR)数据。
19.根据权利要求18所述的系统,其中生成高动态范围数据包括通过以下步骤生成HDR图像中的每个像素的强度值: 确定与用于所述像素的索引相关联的相应像素是被包括在所述第一部分还是所述第二部分中;以及 如果所述相应像素被包括在所述第一部分中,那么: 确定所述相应像素的邻近像素是否被包括在所述第一子集中,以及如果所述邻近像素被包括在所述第一子集中,那么通过将所述第二部分中的一个或多个值滤波来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第一子集中,那么通过以曝光比缩放所述相应像素的强度值来生成用于所述像素的强度值;或者如果所述相应像素被包括在所述第二部分中,那么: 确定所述邻近像素是否被包括在所述第二子集中,以及 如果所述邻近像素被包括在所述第二子集中,那么通过将所述第一部分中的一个或多个值滤波来生成所述像素的强度值,或者 如果所述邻近像素不被包括在所述第二子集中,那么通过选择所述相应像素的强度值来生成所述像素的强度值。
20.根据权利要求18所述的系统,其中所述图像处理管线实现为着色器程序,所述着色 器程序配置为由图形处理单元(GPU)所执行。
【文档编号】H04N5/355GK103916611SQ201310718506
【公开日】2014年7月9日 申请日期:2013年12月23日 优先权日:2012年12月28日
【发明者】里卡多·杨松·莫塔 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1