CN102572265B - 使用具有粗略和精细自动对焦分数的图像统计数据的自动对焦控制 - Google Patents
使用具有粗略和精细自动对焦分数的图像统计数据的自动对焦控制 Download PDFInfo
- Publication number
- CN102572265B CN102572265B CN201110399082.8A CN201110399082A CN102572265B CN 102572265 B CN102572265 B CN 102572265B CN 201110399082 A CN201110399082 A CN 201110399082A CN 102572265 B CN102572265 B CN 102572265B
- Authority
- CN
- China
- Prior art keywords
- focusing
- auto
- pixel
- rough
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03B—APPARATUS OR ARRANGEMENTS FOR TAKING PHOTOGRAPHS OR FOR PROJECTING OR VIEWING THEM; APPARATUS OR ARRANGEMENTS EMPLOYING ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ACCESSORIES THEREFOR
- G03B3/00—Focusing arrangements of general interest for cameras, projectors or printers
- G03B3/10—Power-operated focusing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/67—Focus control based on electronic image sensor signals
- H04N23/673—Focus control based on electronic image sensor signals based on contrast or high frequency components of image signals, e.g. hill climbing method
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03B—APPARATUS OR ARRANGEMENTS FOR TAKING PHOTOGRAPHS OR FOR PROJECTING OR VIEWING THEM; APPARATUS OR ARRANGEMENTS EMPLOYING ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ACCESSORIES THEREFOR
- G03B13/00—Viewfinders; Focusing aids for cameras; Means for focusing for cameras; Autofocus systems for cameras
- G03B13/32—Means for focusing
- G03B13/34—Power focusing
- G03B13/36—Autofocus systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
- H04N23/84—Camera processing pipelines; Components thereof for processing colour signals
- H04N23/843—Demosaicing, e.g. interpolating colour pixel values
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/10—Circuitry of solid-state image sensors [SSIS]; Control thereof for transforming different wavelengths into image signals
- H04N25/11—Arrangement of colour filter arrays [CFA]; Filter mosaics
- H04N25/13—Arrangement of colour filter arrays [CFA]; Filter mosaics characterised by the spectral characteristics of the filter elements
- H04N25/134—Arrangement of colour filter arrays [CFA]; Filter mosaics characterised by the spectral characteristics of the filter elements based on three different wavelength filter elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/60—Noise processing, e.g. detecting, correcting, reducing or removing noise
- H04N25/61—Noise processing, e.g. detecting, correcting, reducing or removing noise the noise originating only from the lens unit, e.g. flare, shading, vignetting or "cos4"
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Human Computer Interaction (AREA)
- Studio Devices (AREA)
- Color Television Image Signal Generators (AREA)
- Automatic Focus Adjustment (AREA)
- Focusing (AREA)
Abstract
提供了多种使用自动对焦统计信息而确定最佳对焦位置的技术。在一实施例中,这些技术可包括为确定最佳对焦长度而生成粗略和精细自动对焦分数,其中在该最佳对焦长度处放置与图像传感器(90)关联的镜头(88)。例如,统计逻辑(680)可确定指示最佳对焦区域的粗略位置,在一实施例中,该最佳对焦区域可通过搜索第一粗略位置来确定,在该第一粗略位置,粗略自动对焦分数相对于前一位置处的粗略自动对焦分数有所下降。将这个位置作为精细的分数搜索的起始点,最佳对焦位置可通过搜索精细自动对焦分数的峰值来确定。在另一实施例中,还可基于拜耳RGB的每个颜色来确定自动对焦统计信息,以使得即使存在色差,也可使用每个颜色的相对自动对焦分数来确定对焦方向。
Description
技术领域
本公开一般涉及数字成像设备,具体而言,涉及用于处理使用数字成像设备的图像传感器而获得的图像数据的***和方法。
背景技术
该部分用于向阅读者介绍涉及以下所描述和/或请求保护的本技术的多个方面的领域的多个方面。相信该讨论有助于向阅读者提供背景信息以使其更好地理解本公开的多个方面。因此,需要理解的是就此而论这些陈述是用来阅读的,而非承认是它们是现有技术。
在近些年,数字成像设备已经变得更加普及,这至少得益于这些设备对于一般消费者来说变得越来越消费得起。此外,除了一些刚上市的独立数码相机之外,数字成像设备整合为另一个电子设备(例如膝上或笔记本电脑、蜂窝电话或便携媒体播放器)的一部分也很常见。
为了获取图像数据,大多数数字成像设备包括图像传感器,其提供多个被配置为将图像传感器检测到的光转换为电信号的光检测元件(例如光电检测器)。图像传感器还可包括滤色器阵列,其对由图像传感器捕捉的光进行滤波以获得颜色信息。接着通过图像处理流水线来处理由图像传感器捕捉的图像数据,该图像处理流水线可以对图像数据应用多种图像处理操作以生成可被显示在显示设备(例如监视器)上以供观看的全彩图像。
传统图像处理技术一般致力于产生在主观上和客观上都使观看者愉悦的可观看图像,这样的传统技术可能无法充分地解决图像数据中由成像设备和/或图像传感器引入的错误和/或失真。例如,可能因制造缺陷或操作错误而导致的图像传感器中的缺陷像素可能无法准确地感测光线水平,并且如果不加校正,可能会在得到的经处理图像中产生伪影(artifact)。此外,可能因镜头制造的不完美而导致的在图像传感器的边缘处的光强度下降,可能对特性测量有不利影响,并且可能导致一张图像内的整体光强度不均匀。图像处理流水线还可执行一个或多个处理以锐化图像。然而传统锐化技术可能未充分地计及图像信号中存在的噪声,或者可能无法将噪声与图像中的边缘和纹理区域区分开。在这些情况下,传统锐化技术可能实际上增加了图像中噪声的显现,而这通常是不期望发生的。此外,还可以执行多个附加图像处理步骤,这些步骤中的一些可能依靠由统计信息收集引擎所收集到的图像统计数据。
可被应用于由图像传感器获得的图像数据的另一个图像处理操作是解马赛克(demosaicing)操作。因为滤色器阵列一般为每个传感器像素提供一个波长的颜色数据,所以一般针对每个颜色通道进行插值得到颜色数据的完整集合,以再现全彩图像(例如RGB图像)。通常,传统解马赛克技术一般依据某种类型的固定阈值,在水平或垂直方向上内插丢失的颜色数据的值。然而,这些传统解马赛克技术可能未充分计及图像内各边缘的位置和方向,这可能导致引入到全彩图像中的特别是沿着图像内的对角边缘的边缘伪影,例如混叠(aliasing)、棋盘格伪影或彩虹伪影。
因此,当处理由数码相机或其他成像设备获得的数字图像时,应当注意多种考虑以提高结果图像的外观。具体而言,以下公开的特定方面可以解决以上简要提及的一个或多个缺点。
发明内容
以下将阐述此处公开的特定实施例的概述。可以理解的是这里仅仅呈现这些方面以向阅读者提供这些特定实施例的简要概述,并且这些方面并不限制本公开的范围。实际上,本公开可以涵盖以下设有阐述的多个方面。
本公开提供了多种用于在图像信号处理器(ISP)中收集并处理统计数据的技术。在一个实施例中,可以在ISP的前端处理单元中实现统计信息收集引擎,这样可以先于在前端处理单元下游的ISP流水线处理而收集统计信息。依据本公开一个方面,该统计信息收集引擎可以被配置为获取与自动白平衡、自动曝光和自动对焦相关的统计信息。在一个实施例中,该统计信息收集引擎可以接收由图像传感器获取的原始拜耳(Bayer)RGB数据,并且可以被配置为执行一个或多个颜色空间转换以获得其他颜色空间中的像素数据。一组像素滤波器可被配置为基于YC1C2特性而有条件地(逐像素滤波器地由像素条件定义)积累像素数据之和。取决于所选的颜色空间,像素滤波器可以生成颜色和,所述颜色和可被用于将当前发光体与图像传感器已由其先前校准的一组参考发光体进行匹配。
依照本公开另一个方面,自动对焦统计信息可用来产生用于确定定位与图像传感器关联的镜头的最佳对焦长度的粗略的和精细的自动对焦分数。例如,该统计逻辑可以确定指示最佳对焦区域的粗略位置,在一个实施例中,该最佳对焦区域可以通过搜索相对于前一位置其粗略自动对焦分数降低的第一粗略位置来确定。使用该位置作为精细分数搜索的起始点,可以通过搜索精细自动对焦分数的峰值来确定最佳对焦位置。还可以基于拜耳RGB的每个颜色来确定自动对焦统计信息,以便即使存在色差,每个颜色的相对自动对焦分数可以用来确定对焦的方向。此外,可以将收集的统计信息输出到存储器,并由ISP使用该收集的统计信息以处理获取的图像数据。
以上所示特征的多种细化存在于本公开涉及的多个方面。其他特征也可并入到这些方面。这些细化和附加特征可独立存在或组合地存在。例如,以下讨论的涉及一个或多个示例实施例的多种特征可被单独或任意组合地并入到本公开的上述方面中。再次,以上呈现的简要概述仅旨在使阅读者熟悉本公开的实施例的特定方面和内容,而非对要求保护的主题的限制。
附图说明
本专利或申请文件包括至少一张彩色打印的附图。将由官方根据请求和支付必要费用来提供具有彩色附图的该专利或专利申请公开的拷贝。
阅读以下详细描述以及参考附图可以更好的理解本公开的多个方面,在附图中:
图1是描述包括被配置为实现本公开中阐述的一个或多个图像处理技术的成像设备和图像处理电路的电子设备的一个例子的部件的简单方框图;
图2示出了在图1的成像设备中实现的拜耳滤色器阵列的2×2像素块的示意图;
图3是依照本公开的一些方面的膝上型计算设备形式的图1的电子设备的透视图;
图4是依照本公开的一些方面的桌上型计算设备形式的图1的电子设备的前视图;
图5是依照本公开的一些方面的手持便携型电子设备形式的图1的电子设备的前视图;
图6是图5所示的电子设备的后视图;
图7是例示了依照本公开的一些方面的可以在图1的图像处理电路中实现的前端图像信号处理(ISP)逻辑和ISP流水处理逻辑的方框图;
图8是示出了依照本公开的一些方面的图7的ISP前端逻辑的实施例的更详细的方框图;
图9是描绘了依照一个实施例的用于在图8的ISP前端逻辑中处理图像数据的方法的流程图;
图10是例示了依照一个实施例的可被用于在ISP前端逻辑中处理图像数据的双重缓冲寄存器和控制寄存器的结构的方框图;
图11-13是描绘了依照本技术的实施例的用于触发图像帧的处理的不同模式的时序图;
图14是描绘了依照一个实施例的控制寄存器的详细框图;
图15是描绘了当图8中的ISP前端逻辑操作于单传感器模式时用于使用前端像素处理单元来处理图像帧的方法的流程图;
图16是描绘了当图8中的ISP前端逻辑操作于双传感器模式时用于使用前端像素处理单元来处理图像帧的方法的流程图;
图17是描绘了当图8中的ISP前端逻辑操作于双传感器模式时用于使用前端像素处理单元来处理图像帧的方法的流程图;
图18是描绘了依照一个实施例的的方法的流程图,其中两个图像传感器都是活动的,但是其中第一图像传感器正在发送图像帧给前端像素处理单元,而第二图像传感器正在发送图像帧给统计处理单元,因此当第二图像传感器稍后继续发送图像帧给前端像素处理单元时,可以立刻获得第二传感器的成像统计数据;
图19是依照本公开的一些方面的可在由图像传感器捕捉的源图像帧中定义的各种成像区域的图解说明;
图20是依照本公开的一些方面的提供对如图8的ISP前端逻辑中所示的ISP前端像素处理单元的一个实施例的更详细视图的方框图;
图21是依照一个实施例的例示了如何将时域滤波应用到由图20所示的ISP前端像素处理单元接收到的图像像素数据的处理框图;
图22例示了可被用于确定图21所示的时域滤波处理的一个或多个参数的一组参考图像像素和一组对应的当前图像像素;
图23是例示了依照一个实施例的用于将时域滤波应用到一组图像数据的当前图像像素的处理的流程图;
图24是示出了依照一个实施例的用于计算图23的当前图像像素的时域滤波所使用的运动增量值的技术的流程图;
图25是例示了依照另一个实施例的用于将时域滤波应用到一组图像数据的当前图像像素的另一个处理的流程图,其包括对图像数据的每个颜色分量使用不同增益;
图26是例示了依照另一个实施例的时域滤波技术如何对由图20所示的ISP前端像素处理单元接收到的图像像素数据的每个颜色分量使用分别的运动和亮度(luma)表的处理框图;
图27是例示了依照另一个实施例的使用如图26所示的运动和亮度表而将时域滤波应用到一组图像数据的当前图像像素的处理的流程图;
图28描绘了依照本公开的一些方面的由图像传感器捕捉的全分辨率原始(raw)图像数据的采样;
图29例示了依照本公开的一个实施例的被配置为将像素合并(binning)应用到图28的全分辨率原始图像数据以输出经像素合并的原始图像数据的采样的图像传感器;
图30描绘了依照本公开的一些方面的可由图29的图像传感器提供的经像素合并的原始图像数据的采样;
图31描绘了依照本公开一些方面的来自图30的经像素合并的原始图像数据在由像素合并补偿滤波器重新采样之后提供的数据;
图32描绘了依照一个实施例的可在图20的ISP前端像素处理单元中实现的像素合并补偿滤波器;
图33是依照本公开一些方面的被应用到差分分析器以选择用于像素合并补偿滤波的中心输入像素和索引/相位的多种步进大小(stepsize)的图解描绘;
图34是例示了依照一个实施例的使用图32的像素合并补偿滤波器来缩放图像数据的处理的流程图;
图35是例示了依照一个实施例的确定由图32的像素合并补偿滤波器所执行的水平和垂直滤波的当前输入源中心像素的处理的流程图;
图36是例示了依照一个实施例的确定用于选择由图32的像素合并补偿滤波器所执行的水平和垂直滤波的滤波系数的索引的处理的流程图;
图37是示出了依照本公开一些方面的可在图8所示的ISP前端处理逻辑中实现的统计处理单元的实施例的更详细方框图;
图38示出了依照本公开一些方面的当应用用于在图37的统计处理单元进行统计处理时检测和校正缺陷像素的技术时可能要考虑的各种图像帧边界情况;
图39是例示了依照一个实施例的用于在统计处理过程中执行缺陷像素检测和校正的处理的流程图;
图40示出了描绘成像设备的传统镜头的光强度相对于像素位置的三维分布;
图41是表现图像中不均匀光强度的有色图,这可能是镜头明暗(lensshading)不规则的结果;
图42是依照本公开一些方面的包括镜头明暗纠正区域和增益栅格(gaingrid)的原始成像帧的图解例示;
图43例示了依照本公开一些方面的用于被周围四个栅格增益点包围的图像像素的增益值的插值;
图44是例示了依照本技术一个实施例的用于确定在镜头明暗校正操作期间可被应用到成像像素的插值增益值的处理的流程图;
图45是描绘了依照本公开一些方面的当执行镜头明暗校正时,可被应用到表现出图40所示的光强度特性的图像的插值增益值的三维分布;
图46示出了依照本公开一些方面的来自图41的有色图在应用了镜头明暗校正操作之后表现出改进的光强度均匀性的有色图;
图47图解例示了依照一个实施例的可以如何计算和使用当前像素和图像的中心之间的径向距离来确定用于镜头明暗校正的径向增益分量;
图48是例示了依照本技术一个实施例的使用来自增益栅格的径向增益和插值增益来确定总增益的处理的流程图,在镜头明暗校正操作期间可将该总增益应用到成像像素;
图49是示出了颜色空间中的白色区域以及低和高色温轴的图;
图50是示出了依照一个实施例的可以如何为各种参考发光体条件配置白平衡增益的表;
图51是示出了依照本公开一个实施例的可以在ISP前端处理逻辑中实现的统计信息收集引擎的方框图;
图52例示了依照本公开一些方面的原始拜耳RGB数据的下采样;
图53描绘了依照一个实施例的可以由图51的统计信息收集引擎收集的二维颜色直方图;
图54描绘了在二维颜色直方图中的变焦和镜头移动(panning);
图55是示出了依照一个实施例的用于实现统计信息收集引擎的像素滤波器的逻辑的更详细的视图;
图56是依照一个实施例的可如何基于为像素滤波器定义的像素条件而估算C1-C2颜色空间内的像素位置的图解描绘;
图57是依照另一个实施例的可如何基于为像素滤波器定义的像素条件而估算C1-C2颜色空间内的像素位置的图解描绘;
图58是依照又一个实施例的可如何基于为像素滤波器定义的像素条件而估算C1-C2颜色空间内的像素位置的图解描绘;
图59是示出了依照一个实施例的可如何确定图像传感器积分时间而补偿闪烁的图;
图60是示出了依照一个实施例的可以在图51的统计信息收集引擎中实现且被配置为收集自动对焦统计数据的逻辑的详细方框图;
图61是描绘了依照一个实施例的用于使用粗略和精细自动对焦评分值而执行自动对焦的技术的图;
图62是描绘了依照一个实施例的用于使用粗略和精细自动对焦评分值执行自动对焦的处理的流程图;
图63和64示出了抽选原始拜耳数据以获得白平衡亮度值;
图65示出了依照一个实施例的用于使用对每个颜色分量的相对自动对焦评分值来执行自动对焦的技术;
图66是依照一个实施例的图37的统计处理单元更详细的视图,其示出了可以如何使用拜耳RGB直方图数据来帮助黑度(blacklevel)补偿;
图67是示出了依照本公开一些方面的图7的ISP流水处理逻辑的一个实施例的方框图;
图68是示出了依照本公开一些方面的可在图67的ISP流水处理逻辑中实现的原始像素处理块的一个实施例的更详细视图;
图69示出了依照本公开一些方面的当在图68所示的原始像素处理块执行处理期间应用用于检测和校正缺陷像素的技术时要考虑的各种图像帧边界情况;
图70-72是依照一个实施例的描绘可由图68的原始像素处理块执行的用于检测和校正缺陷像素的多种处理的流程图;
图73示出了依照本公开一些方面的在图68的原始像素处理逻辑执行处理期间应用绿色非均匀性校正技术时在拜耳图像传感器的2×2像素块内的两个可内插的绿色像素的位置;
图74例示了依照本公开一些方面的包括中心像素和关联的水平相邻像素在内的可被用作用于降噪的水平滤波处理的一部分的像素集合;
图75例示了依照本公开一些方面的包括中心像素和关联的垂直相邻像素在内的可被用作用于降噪的垂直滤波处理的一部分的像素集合;
图76是描绘了如何将解马赛克应用到原始拜耳图像模式(pattern)以产生全彩RGB图像的简化流程图;
图77表示依照一个实施例的拜耳图像模式的像素集合,在该拜耳图像模式的解马赛克期间,可以从其中导出用于对绿色值进行插值的水平和垂直能量分量;
图78示出了依照本技术一些方面的水平像素集合,在拜耳图像模式的解马赛克期间,可对其应用滤波以确定经插值得到的绿色值的水平分量;
图79示出了依照本技术一些方面的垂直像素集合,在拜耳图像模式的解马赛克期间,可对其应用滤波以确定经插值得到的绿色值的垂直分量;
图80示出了依照本技术一些方面的多种3x3像素块,在拜耳图像模式的解马赛克期间,可对其应用滤波以确定经插值得到的红色和蓝色值;
图81-84提供依照一个实施例的描绘在拜耳图像模式的解马赛克期间用于插值绿色、红色和蓝色值的各种处理的流程图;
图85示出了可由图像传感器捕捉的并依照此处公开的解马赛克技术的一些方面而处理的初始图像场景的有色图;
图86示出了如图85所示的图像场景的拜耳图像模式的有色图;
图87示出了使用传统解马赛克技术基于图86的拜耳图像模式而重构的RGB图像的有色图;
图88示出了依照此处公开的解马赛克技术的一些方面从图86的拜耳图像模式重构的RGB图像的有色图;
图89是示出了依照本公开一些方面的可在图67的ISP流水处理逻辑中实现的RGB处理块的一个实施例的更详细视图;
图90是示出了依照本公开一些方面的可在图67的ISP流水处理逻辑中实现的YCbCr处理块的一个实施例的更详细视图;
图91是依照本公开一些方面的在使用1平面格式的源缓冲器内定义的用于亮度和色度的活动源区域的图解描绘;
图92是依照本公开一些方面的在使用2平面格式的源缓冲器内定义的用于亮度和色度(chroma)的活动源区域的图解描绘;
图93是例示了依照一个实施例的可在如图90所示的YCbCr处理块中实现的图像锐化逻辑的方框图;
图94是例示了依照一个实施例的可在如图90所示的YCbCr处理块中实现的边缘增强逻辑的方框图;
图95是示出了依照本公开一些方面的色度衰减因子与锐化的亮度值之间的关系的图;
图96是例示了依照一个实施例的可在如图90所示的YCbCr处理块中实现的图像明亮度(brightness)、对比度(contrast)和颜色(BCC)调整逻辑的方框图;以及
图97示出了在如图96所示的BCC调整逻辑执行颜色调整期间可以在定义各种色相(hue)角和饱和度(saturation)值的YCbCr颜色空间中应用的色相和饱和度颜色轮(colorwheel)。
具体实施方式
以下将描述本公开的一个或多个特定实施例。这些描述的实施例都仅是当前公开的技术的示例。此外,为了提供这些实施例的简明描述,可能不会在说明书中描述实际实现的全部特征。应当明了的是在任意这些实际实现的开发中,如同在任何工程或设计项目中一样,都必须做出众多特定于实现的决定以达到开发者的特定目的,例如顺从因实现的不同而变化的涉及***的和涉及商业的限制。此外,应当明了的是这样的开发努力可能是复杂且很耗时间的,但仍然是从本公开获益的本领域技术人员的日常设计、生产和制造任务。
当介绍本公开的多个实施例的要素时,冠词“a”、“an”和“the”旨在表示一个或多个要素。术语“包含”、“包括”和“具有”旨在是开放的,并且表示除了所列的要素之外还可能有额外的要素。此外,应当理解的是,对于本公开“一个实施例”或“一实施例”的提及并不旨在将其解释为排除同样具有所列举的特征的其他实施例的存在。
如以下将要描述的,本公开一般涉及用于处理经由一个或多个图像感测设备获取的图像数据的技术。具体而言,本公开的特定方面可以涉及用于检测和校正缺陷像素的技术,用于对原始图像模式进行解马赛克的技术,用于使用多尺度虚光蒙版(multi-scaleunsharpmask)来锐化亮度图像的技术,以及用于应用镜头明暗增益以校正镜头明暗不规则的技术。此外,应当理解的是这里公开的技术可被应用到静态图像和运动图像(例如视频)这两者,并且可被用于任何合适类型的成像应用,例如数码相机、具有集成数码相机的电子设备、安全或视频监视***、医疗成像***等等。
留意以上要点,图1是例示电子设备10的一个示例的方框图,所述电子设备10可以提供使用以上简单提及的一个或多个图像处理技术对图像数据进行的处理。电子设备10可以是任何类型的电子设备,例如膝上或桌上型计算机、移动电话、数字媒体播放器等等,其被配置为接收和处理图像数据,例如使用一个或多个图像感测部件获取的数据。仅作为示例,电子设备10可以是便携式电子设备,例如可从加利福尼亚州库比蒂诺的苹果公司获得的或的模型。此外,电子设备10可以是桌上或膝上型计算机,例如可从苹果公司获得的Pro、MacBook Mini或Mac的模型。在另外的实施例中,电子设备10还可以是来自其他制造商的能够获取并处理图像数据的电子设备的模型。
无关其形式(例如便携式或非便携式),应当理解的是电子设备10可以提供使用以上简要讨论的一个或多个图像处理技术对图像数据进行的处理,这些技术可包括缺陷像素校正和/或检测技术、镜头明暗校正技术、解马赛克技术、或图像锐化技术,等等。在某些实施例中,电子设备10可将这样的图像处理技术应用到存储在电子设备10的存储器中的图像数据。在其他实施例中,电子设备10可包括一个或多个被配置为获得图像数据的成像设备,例如集成的或外置的数码相机,于是电子设备10可使用一个或多个以上提及的图像处理技术来处理这些图像数据。以下将在图3-6中进一步讨论示出电子设备10的便携式和非便携式实施例的实施例。
如图1所示,电子设备10可包括各种用于实现设备10的功能的内置和/或外置部件。本领域技术人员可以理解如图1所示的各种功能块可包括硬件要素(包括电路)、软件要素(包括存储在计算机可读介质上的计算机代码)或硬件和软件要素这两者的组合。例如,在当前所示的实施例中,电子设备10可包括输入/输出(I/O)端口12、输入结构14、一个或多个处理器16、存储器设备18、非易失性存储器20、(一个或多个)扩散卡22、联网设备24、电源26和显示器28。此外,电子设备10可包括一个或多个成像设备30(例如数码相机)以及图像处理电路32。如下所要进一步讨论的,图像处理电路32可被配置为在处理图像数据时执行一个或多个以上讨论的图像处理技术。可以明了的是,可以从存储器18和/或非易失性存储设备20检索或者可以使用成像设备30获得供图像处理电路32处理的图像数据。
在继续之前,应当理解的是如图1所示的设备10的***方框图旨在表示描述可能包括在该设备10中的各部件的高级控制框图。也就是说,在如图1所示的每个独立元件之间的连接线并不是一定表示在设备10的各部件之间的数据流动或传输的路径或方向。实际上,如下所讨论的,在某些实施例中,描绘的(一个或多个)处理器16可以包括多个处理器,例如主处理器(例如CPU)和专用图像和/或视频处理器。在这样的实施例中,可主要由这些专用处理器来执行对图像数据的处理,有效地使得主处理器(CPU)免于装载这样的任务。
关于图1所示的每个元件,I/O端口12可包括被配置为连接多种外置设备的端口,这些外置设备例如是电源、音频输出设备(例如耳机或头戴受话器)、或其他电子设备(例如手持设备和/或计算机、打印机、投影仪、外置显示器、调制解调器、坞站(dockingstation)等等)。在一个实施例中,I/O端口12可被配置为连接到外置成像设备,例如数码相机,用以获取可使用图像处理电路32处理的图像数据。I/O端口12可以支持任何适合类型的接口,例如通用串行总线(USB)端口、串行连接端口、IEEE-1394(FireWire)端口、以太网或调制解调器端口、和/或AC/DC电源连接端口。
在某些实施例中,特定的I/O端口12可被配置为提供多于一种功能。例如,在一个实施例中,I/O端口12可包括苹果公司专有的端口,其功能不仅在于方便在电子设备10和外部源之间进行数据传输,还将设备10耦合到电源充电接口,例如被设计为从墙壁插座提供电力的电源适配器,或者耦合到被配置为从诸如桌上或膝上型计算机的另一个电子设备吸取电力以用于对电源26(其可包括一个或多个可充电电池)进行充电的接口电缆。以此方式,例如,取决于通过I/O端口12被耦合到设备10的外置元件,I/O端口12可被配置为具有数据传输端口和AC/DC电源连接端口的双重功能。
输入结构14可向(一个或多个)处理器16提供用户输入或反馈。例如,输入结构14可被配置为控制电子设备10的一个或多个功能,例如在电子设备10中运行的应用。仅作为示例,输入结构14可包括按钮、滑块、开关、控制板、按键、旋钮、滚轮、键盘、鼠标、触摸板等,或以上这些的某些组合。在一个实施例中,输入结构14可以允许用户导航在设备10上显示的图形用户界面(GUI)。此外,输入结构14可包括与显示器28一起提供的触摸敏感机构。在这些实施例中,用户可通过触摸敏感机构来选择所显示的界面元素或与之交互。
输入结构14可包括多种设备、电路和路径,通过这些将用户的输入或反馈提供给一个或多个处理器16。这样的输入结构14可被配置为控制设备10的功能、在设备10上运行的应用和/或连接到电子设备10或被电子设备10使用的任何接口或设备。例如,输入结构14可允许用户导航显示的用户界面或应用界面。输入结构14的示例可包括按钮、滑块、开关、控制板、按键、旋钮、滚轮、键盘、鼠标、触摸板等等。
在特定实施例中,输入结构14和显示器28可被一并提供,例如“触摸屏”的情况,籍此与显示器28一并提供触摸敏感机构。在这样的实施例中,用户可通过触摸敏感机构来选择所显示的界面元素或与之交互。以此方式,显示的界面可提供交互功能,允许用户通过触摸显示器28来导航显示的界面。例如,利用输入结构14进行的用户交互,例如与用户交互或与显示在显示器28上的应用界面交互,可生成指示用户输入的电信号。这些输入信号可以通过合适的路径(例如输入集线器或数据总线)被路由到一个或多个处理器16以做进一步处理。
除了处理通过(一个或多个)输入结构14接收到的各种输入信号之外,(一个或多个)处理器16还控制设备10的一般操作。例如,处理器16可提供处理能力以运行操作***、程序、用户和应用界面、以及电子设备10的任何其他功能。(一个或多个)处理器16可包括一个或多个微处理器,例如一个或多个“通用”微处理器、一个或多个专用微处理器和/或特定于应用的微处理器(ASIC)、或这些处理部件的组合。例如,(一个或多个)处理器16可包括一个或多个指令集(例如RISC)处理器,以及图形处理器(GPU)、视频处理器、音频处理器和/或相关芯片组。将明了的是,(一个或多个)处理器16可耦合到一个或多个用于在设备10的各个部件之间传输数据和指令的数据总线。在特定实施例中,(一个或多个)处理器16可提供处理能力以在电子设备10中运行成像应用,例如可从苹果公司获得的Photo 或或由苹果公司提供的“相机”和/或“照片”应用,这些都是的模型上可用的。
将由(一个或多个)处理器16处理的指令或数据可被存储在计算机可读介质中,例如存储器设备18中。存储器设备18可以被提供为易失性存储器,例如随机存取存储器(RAM),或非易失性存储器,例如只读存储器(ROM),或一个或多个RAM和ROM设备的组合。存储器18可存储多种信息并被用于各种用途。例如,存储器18可存储用于电子设备10的固件,例如基本输入/输出***(BIOS)、操作***、各种程序、应用或可在电子设备10中上运行的任何其他例程,包括用户界面功能、处理器功能等等。此外,在电子设备10的操作期间,存储器18可被用来缓冲或高速缓存。例如,在一个实施例中,存储器18包括一个或多个帧缓冲器,用以缓冲要被输出到显示器28的视频数据。
除了存储器设备18,电子设备10还可包括非易失性存储器20以用于持久存储数据和/或指令。非易失性存储器20可以包括闪存、硬盘驱动器或任何其他光学、磁和/或固态存储介质,或以上这些的组合。因此,尽管为了清楚的目的只在图1中描绘了单个设备,但是应当理解的是(一个或多个)非易失性存储器20可以包括一个或多个以上列出的与(一个或多个)处理器16一起操作的存储设备的组合。非易失性存储器20可被用来存储固件、数据文件、图像数据、软件程序和应用、无线连接信息、个人信息、用户偏好和任何其他合适的数据。依照本公开一些方面,在输出到显示器之前,可通过图像处理电路32来处理存储在非易失性存储器20和/或存储器设备18中的图像数据。
如图1所示的实施例还可包括一个或多个卡槽或扩展槽。卡槽可被配置为接收扩展卡22,其可被用于增加电子设备10的功能,例如额外的存储器、I/O功能或联网能力。这样的扩展卡22可通过任何类型的合适连接器被连接到设备上,并且可以相对于电子设备10的壳体而被内部地或外部地访问。例如,在一个实施例中,扩展卡22可以是闪存卡,例如安全数字(SD)卡、迷你或微SD、紧凑闪存卡等,或者可以是PCMCIA设备。此外,对于提供移动电话能力的电子设备10的实施例,扩展卡22可以是订户标识模块(SIM)卡。
电子设备10还包括网络设备24,其可以是通过无线802.11标准或任何其他合适的联网标准(例如局域网(LAN)、广域网(WAN),例如GSM演进的增强数据率(EDGE)网络、3G数据网络或因特网)而提供网络连接的网络控制器或网络接口卡(NIC)。在特定实施例中,网络设备24可以提供至在线数字媒体内容提供商(例如可从苹果公司获得的音乐服务)的连接。
设备10的电源26可包括在非便携和便携设置下向设备10供电的能力。例如,在便携设置下,设备10可包括一个或多个用于向设备10供电的电池,例如锂离子电池。可以通过将设备10连接到外部电源(例如墙壁插座)来对电池重新充电。在非便携设置下,电源26可包括供电单元(PSU),其被配置为从墙壁插座取得电力,并将所述电力分配给非便携电子设备(例如桌上型计算***)的各个部件。
显示器28可被用于显示由设备10生成的各种图像,例如用于操作***的GUI,或由图像处理电路32处理的图像数据(包括静止图像和视频数据),以下将对其进行进一步讨论。如上所述,图像数据可包括使用成像设备30获取的图像数据或从存储器18和/或非易失性存储器20检索出的图像数据。显示器28可以是任何合适类型的显示器,例如液晶显示器(LCD)、等离子显示器或有机发光二极管(OLED)显示器。此外,如上所讨论的,显示器28可以具有可作为电子设备10的控制界面的一部分的、如上所述的触摸敏感机构(例如触摸屏)。
所例示的(一个或多个)成像设备30还可被提供为被配置以获取静态图像和运动图像(例如视频)的数码相机的形式。相机30可包括镜头和一个或多个被配置为捕捉光并将光转换为电信号的图像传感器。仅作为示例,图像传感器可包括CMOS图像传感器(例如CMOS有源像素传感器(APS))或CCD(电荷耦合器件)传感器。一般来说,相机30中的图像传感器包括具有像素阵列的集成电路,其中每个像素包括一个用于感测光的光电检测器。本领域技术人员应当明了,成像像素中的光电检测器一般检测通过相机镜头捕捉的光的强度。然而,光电检测器一般无法自己检测所捕捉的光的波长,因此,无法确定颜色信息。
因此,图像传感器可进一步包括滤色器阵列(CFA),其可覆盖图像传感器的像素阵列或被置于像素阵列之上,以捕捉颜色信息。滤色器阵列可包括小型滤色器的阵列,每一个小型滤色器可以覆盖图像传感器的一个相应像素,并且按波长对捕捉的光进行滤波。因此,当一并使用时,滤色器阵列和光电检测器可提供关于通过相机所获得的光的波长和强度信息,这可以表示所捕捉的图像。
在一个实施例中,滤色器阵列可包括拜耳滤色器阵列,其提供50%绿色元素,25%红色元素和25%蓝色元素的滤波器模式。例如,图2示出了包括2个绿色元素(Gr和Gb),1个红色元素(R)和1个蓝色元素(B)的拜耳CFA的2×2像素块。因此,利用拜耳滤色器阵列的图像传感器可提供关于相机30在绿色、红色和蓝色波长处接收到的光的强度的信息,由此每个图像像素仅记录三种颜色(RGB)之一。被称为“原始图像数据”或“原始域”中的数据的这一信息随后被使用一种或多种解马赛克技术进行处理,由此将原始图像数据转换为全彩图像,这一般是通过为每个像素内插一组红色、绿色和蓝色值而实现的。如以下将描述的那样,可由图像处理电路32来执行这样的解马赛克技术。
如上所述,图像处理电路32可提供各种图像处理步骤,例如缺陷像素检测/校正、镜头明暗校正、解马赛克、以及图像锐化、降噪、伽马校正、图像增强、颜色空间变换、图像压缩、色度亚采样和图像缩放操作等等。在一些实施例中,图像处理电路32可包括多个子部件和/或离散的逻辑单元,其集合地形成用于执行各个图像处理步骤中的每一个步骤的图像处理“流水线”。可以使用硬件(例如数字信号处理器或ASIC)或软件,或通过硬件和软件部件的组合来实现这些子部件。以下将更加详细的描述可由图像处理电路32提供的各种图像处理操作,尤其是涉及缺陷像素检测/校正、镜头明暗校正、解马赛克和图像锐化的那些处理操作。
在继续之前,应当注意的是虽然以下所讨论的各种图像处理技术的多个实施例可以利用拜耳CFA,但是当前公开的技术并不限于此。实际上,本领域技术人员将明了此处提供的图像处理技术可适用于任何适合类型的滤色器阵列,包括RGBW滤色器、CYGM滤色器等。
再次参考电子设备10,图3-6例示了电子设备10可采用的各种形式。如上所述,电子设备10可采用计算机的形式,包括通常便携的计算机(例如膝上型、笔记本和平板计算机)以及通常不便携的计算机(例如桌上型计算机、工作站和/或服务器),或其他类型的电子设备,例如手持便携电子设备(例如数字媒体播放器或移动电话)。具体而言,图3和图4分别描绘了膝上型计算机40形式和桌上型计算机50形式的电子设备10。图5和图6分别示出了手持便携设备60形式的电子设备10的前视图和后视图。
如图3所示,描绘的膝上型计算机40包括壳体42、显示器28、I/O端口12和输入结构14。输入结构14可包括与壳体42集成的键盘和触摸板鼠标。此外,输入结构14可包括多种可用于与计算机40交互(例如给计算机加电或启动计算机)的其他按钮和/或开关,以操作GUI或在计算机40中运行的应用,以及调整多种涉及计算机40操作的其他方面(例如音量、显示器亮度等)。计算机40还可包括提供至其他设备的连接的多种I/O端口12,如上所述,例如或USB端口、高清多媒体接口(HDMI)端口或任何其他类型的适于连接到外部设备的端口。此外,计算机40可包括如以上图1所示的网络连接(例如网络设备26)、存储器(例如存储器20)和存储能力(例如存储设备22)。
另外,在所示的实施例中,膝上型计算机40可包括集成的成像设备30(例如相机)。在另一个实施例中,膝上型计算机40可利用连接到一个或多个I/O端口12的外置相机(例如外置USB相机或“摄像头”)以作为集成相机30的替代或附加。例如,外置相机可以是可从苹果公司得到的相机。不管集成的还是外置的,相机30可以提供图像的捕捉和记录。接着这些图像可由用户使用图像观看应用来观看,或者可以被其他应用来使用,包括视频会议应用,例如以及图像编辑/观看应用,例如可从苹果公司得到的Photo或在特定实施例中,所描绘的膝上型计算机40可以是可从苹果公司获得的Pro、或的模型。此外,在一个实施例中,计算机40可以是便携式平板计算设备,例如同样可从苹果公司获得的平板计算机的模型。
图4进一步例示了电子设备10被提供作为桌上型计算机50的一个实施例。将明了的是,桌上型计算机50可包括多种与由图4所示的膝上型计算机40提供的大致类似的特征,但是也可能具有通常更大的整体形状。如图所示,桌上型计算机50可被装入包括显示器28和如图1所示的方框图中所讨论的各种其他部件的外壳42中。另外,桌上型计算机50可包括通过一个或多个I/O端口(例如USB)耦合至该计算机50的、或能够与该计算机50无线通信(例如通过RF、蓝牙等)的外置键盘和鼠标(输入结构14)。如上所述,桌上型计算机50还可包括可以是集成的或外置相机的成像设备30。在特定实施例中,所描绘的桌上型计算机50可以是可从苹果公司获得的 mini或Mac的模型。
如进一步所示,显示器28可被配置为生成可被用户观看的各种图像。例如,在计算机50的操作期间,显示器28可显示图形用户界面(“GUI”)52以允许用户与在计算机50中运行的操作***和/或应用进行交互。GUI52可包括各种层、窗口、屏幕、模板或可在整个或部分显示设备28上显示的其他图形元素。例如,在所描绘的实施例中,操作***GUI52可包括各种图形图标54,每一种图标可对应于可基于检测到用户的选择(例如通过键盘/鼠标或触摸屏输入)被打开或执行的各种应用。图标54可被显示在停靠栏56中或在屏幕上显示的一个或多个图形窗口元素58内。在一些实施例中,对图标54的选择可导致分级导航处理,使得对图标54的选择导致一个屏幕或打开另一个包括一个或多个附加图标或其他GUI元素的图形窗口。仅作为示例,图4显示的操作***GUI52可以是来自可从苹果公司获得的Mac操作***的一个版本。
继续至图5和6,电子设备10进一步被例示为便携手持电子设备60的形式,其可以是可从苹果公司获得的或的模型。在所描绘的实施例中,手持设备60包括外壳42,其可以起到保护内部部件免于物理损伤同时屏蔽电磁干扰的作用。外壳42可由任何合适的材料或这些材料的组合来形成,例如塑料、金属或复合材料,并且能够允许特定频率的电磁辐射(例如无线联网信号)穿透以到达如图5所示的可置于外壳42内的无线通信电路(例如网络设备24)。
外壳42还包括各种用户输入结构14,通过这些输入结构14用户可与手持设备60交互。例如,每个输入结构14可被配置为在被按压或启动时控制一个或多个相应的设备功能。作为示例,一个或多个输入结构14可被配置为调用“home”屏幕(主屏幕)42或菜单以便显示,被配置为在睡眠、唤醒或开机/关机模式之间切换,被配置为使蜂窝电话应用的铃声静音,被配置为增加或减小音量输出等等。应当理解的是所例示的输入结构14仅是示例性的,并且手持设备60可包括任意数量的合适的用户输入结构,其可以具有各种形式,包括按钮、开关、按键、旋钮、滚轮等等。
如图5所示,手持设备60可包括各种I/O端口12。例如,所描绘的I/O端口12可包括用于传输和接收数据文件或用于给电源26充电的专有连接端口12a,和用于将设备60连接到音频输出设备(例如头戴式耳机或扬声器)的音频连接端口12b。此外,在手持设备60提供移动电话功能的实施例中,设备60可包括用于接收订户标识模块(SIM)卡(例如扩展卡22)的I/O端口12c。
显示设备28可以是LCD、OLED或任何适合类型的显示器,其可以显示由手持设备60生成的各种图像。例如,显示器28可以显示向用户提供关于手持设备60的一个或多个状态(例如电源状态、信号强度、外置设备连接等)的反馈的各种***指示符64。参考以上图4所讨论的,显示器还可显示GUI52以允许用户与设备60交互。GUI52可以包括图形元素,例如图标54,其可以对应于基于检测到用户对相应图标54的选择而打开或执行的各种应用。作为示例,图标54之一可以表示可与相机30(如图5中的虚线所示)一并使用以获取图像的相机应用66。简单地参考图6,例示了在图5中所描绘的手持电子设备60的后视图,其示出了相机30被集成于壳体42且位于手持设备60背面。
如上所述,用相机30获得的图像数据可使用图像处理电路32进行处理,所述图像处理电路32可以包括硬件(例如位于外壳42内部)和/或存储在设备60的一个或多个存储设备(例如存储器18或非易失性存储器20)中的软件。使用相机应用66和相机30获得的图像可被存储到设备60(例如在存储设备20中),并且可使用照片观看应用68在稍后观看这些图像。
手持设备60还可包括各种音频输入和输出元件。例如,一般地由参考标记70所描绘的音频输入/输出元件可以包括输入接收器,例如一个或多个麦克风。例如,在手持设备60包括蜂窝电话功能的情况下,输入接收器可被配置为接收用户音频输入,例如用户语音。此外,音频输入/输出元件70可包括一个或多个输出发射器。这些输出发射器可包括一个或多个扬声器,其可以例如在使用媒体播放器应用72回放音乐数据时起到将音频信号传送给用户的作用。此外,在手持设备60包括蜂窝电话应用的实施例中,如图5所示,还可提供附加的音频输出发射器74。类似于音频输入/输出元件70的输出发射器,输出发射器74也可包括一个或多个被配置为将音频信号(例如在电话呼叫期间接收到的语音数据)传送至用户的扬声器。因此,音频输入/输出元件70和74可联合地操作以作为电话的音频接收和发射元件。
现已提供了一些关于电子设备10可采用的多种形式的背景,于是本公开将关注于图1所描绘的图像处理电路32。如上所述,图像处理电路32可使用硬件和/或软件部件来实现,并且可以包括定义图像信号处理(ISP)流水线的各种处理单元。具体而言,以下讨论会关注在本公开中阐述的图像处理技术的各方面,尤其是涉及缺陷像素检测/校正技术、镜头明暗校正技术、解马赛克技术和图像锐化技术的那些方面。
现在参考图7,例示了依照当前公开的技术的一个实施例的描绘了可实现为图像处理电路32的一部分的多个功能性部件的简化顶层方框图。具体地,图7旨在依照至少一个实施例来例示图像数据可如何流过图像处理电路32。为了提供对图像处理电路32的一般概观,这里参考图7提供了这些功能性部件如何操作以处理图像数据的一般描述,同时,后面将进一步提供所示的功能性部件的每一个及其各自的子部件的更具体的描述。
参考所示的实施例,图像处理电路32可包括图像信号处理(ISP)前端处理逻辑80、ISP流水处理逻辑82和控制逻辑84。由成像设备30捕捉的图像数据首先由ISP前端逻辑80处理,并对其进行分析以获得可被用于确定ISP流水逻辑82和/或成像设备30的一个或多个控制参数的图像统计信息。ISP前端逻辑80可被配置为从图像传感器输入信号获得图像数据。例如,如图7所示,成像设备30可包括具有一个或多个镜头88和(一个或多个)图像传感器90的相机。如上所述,(一个或多个)图像传感器90可以包括滤色器阵列(例如拜耳滤波器),并且因此可以提供由图像传感器90的每个成像像素获得的光强和波长信息,从而提供可由ISP前端逻辑80处理的一组原始图像数据。例如,成像设备30的输出92可由传感器接口94接收,随后例如基于传感器接口类型,传感器接口94可将原始图像数据96提供给ISP前端逻辑80。作为示例,传感器接口94可利用标准移动成像架构(SMIA)接口或其他串行或并行相机接口,或它们的某些组合。在特定实施例中,ISP前端逻辑80可在其自身的时钟域内操作,并且可以向传感器接口94提供异步接口以支持具有不同大小和定时需求的图像传感器。
原始图像数据96可被提供给ISP前端逻辑80,并以多种格式被逐像素地处理。例如,每个图像像素可具有8,10,12或14位的位深。ISP前端逻辑80可对原始图像数据96执行一个或多个图像处理操作,并收集关于图像数据96的统计数据。可以以相同的或不同的位深精度来执行图像处理操作和统计数据的收集。例如,在一个实施例中,可以以14位精度来执行原始图像像素数据96的处理。在这些实施例中,由ISP前端逻辑80接收到的具有小于14位(例如8位,10位,12位)位深的原始像素数据被上采样至14位以用于图像处理目的。在另一个实施例中,可以以8位精度进行统计处理,因此具有更高位深的原始像素数据可被下采样至8位格式用以统计目的。可以明了的是,下采样至8位可降低硬件大小(例如面积)并且还能减少用于统计数据的处理/计算复杂度。此外,原始图像数据可被空间平均以允许统计数据对噪声更为鲁棒。
此外,如图7所示,ISP前端逻辑80还可从存储器108接收像素数据。例如,如参考标记98所示,原始像素数据可从传感器接口94被发送到存储器108。如参考标记100所示,驻留在存储器108中的原始像素数据随后可被提供给ISP前端逻辑80以供处理。存储器108可以是存储设备20、存储器设备18的一部分,或者可以是电子设备10内的单独的专用存储器并且可包括直接存储器访问(DMA)特征。此外,在特定实施例中,ISP前端逻辑80可在其本身的时钟域内操作,并且向传感器接口94提供异步接口以支持不同大小并且具有不同定时需求的传感器。
一旦接收到原始图像数据96(从传感器接口94)或100(从存储器108),ISP前端逻辑80可以执行一个或多个图像处理操作,例如时域滤波和/或像素合并补偿滤波。经处理的图像数据随后可被提供给ISP流水逻辑82(输出信号109)以便在被显示(例如在显示设备28上)之前进行其他处理,或者可被发送到存储器(输出信号110)。ISP流水逻辑82直接从ISP前端逻辑80或者从存储器108(输入信号112)接收“前端”经处理的数据,并且提供对原始域中以及RGB和YCbCr颜色空间中的图像数据的其他处理。由ISP流水逻辑82处理后的图像数据随后可被输出(信号114)到显示器28以供用户观看和/或可由图形引擎或GUP进行进一步处理。此外,ISP流水逻辑82的输出可被发送到存储器108(信号115),并且显示器28可从在特定实施例中被配置为实现一个或多个帧缓冲器的存储器108(信号116)读取图像数据。此外,在一些实施方式中,ISP流水逻辑82的输出还可被提供给压缩/解压缩引擎118(信号117)以用于编码/解码图像数据。经编码的图像数据可被存储,并在随后在被显示在显示器28设备上(信号119)之前进行解压缩。作为示例,压缩引擎或“编码器”118可以是用于编码静态图像的JPEG压缩引擎,或用于编码视频图像的H.264压缩引擎,或它们的组合,用于解码图像数据的相应的解压缩引擎也是如此。后面将参考图67-97来更加详细的讨论可在ISP流水逻辑82中提供的关于图像处理操作的附加信息。同样的,应当注意的是ISP流水逻辑82还可从存储器108接收原始图像数据,其被描述为输入信号112。
由ISP前端逻辑80确定的统计数据102可被提供给控制逻辑单元84。统计数据102可包括,例如关于自动曝光、自动白平衡、自动对焦、闪烁检测、黑度补偿(BLC)、镜头明暗校正等的图像传感器统计信息。控制逻辑84可包括处理器和/或微控制器,其被配置为执行一个或多个例程(例如固件),所述例程可被配置为基于接收到的统计数据102来确定用于成像设备30的控制参数104和用于ISP流水处理逻辑82的控制参数106。仅作为示例,控制参数104可包括传感器控制参数(例如增益、曝光控制的累积时间)、相机闪光灯控制参数、镜头控制参数(例如对焦的对焦长度或变焦的焦距)或这些参数的组合。ISP控制参数106可包括用于自动白平衡和颜色调整(例如在RGB处理期间)的增益等级和颜色校正矩阵(CCM)系数,以及如下所讨论的可基于白点平衡参数而确定的镜头明暗校正参数。在一些实施例中,除了分析统计数据102之外,控制逻辑84还可分析可存储在电子设备10上(例如存储器18或存储器20内)的历史统计信息。
由于此处所示的图像处理电路32的总体复杂设计,如下所示,将关于ISP前端逻辑80和ISP流水处理逻辑82的讨论划分为单独的部分会是有益的。具体而言,本申请的图8至66可涉及ISP前端逻辑80的多个实施例和各方面的讨论,而本申请的图67至97可涉及ISP流水处理逻辑82的多个实施例和各方面的讨论。
ISP前端处理逻辑
图8是示出了依照一个实施例的可在ISP前端逻辑80中实现的功能性逻辑块的更详细方框图。基于成像设备30和/或传感器接口94的构造,如图7所示,可由一个或多个图像传感器90将原始图像数据提供给ISP前端逻辑80。在所描绘的实施例中,可通过第一图像传感器90a(传感器0)和第二图像传感器90b(传感器1)将原始图像数据提供给ISP前端逻辑80。如下将进一步讨论的,每个图像传感器90a和90b可被配置为将像素合并应用到全分辨率图像数据,以增加图像信号的信噪比。例如,可以应用一种像素合并技术(如2×2像素合并),其可基于相同颜色的四个全分辨率图像像素来插值得到“经像素合并的”原始图像像素。在一个实施例中,这可导致相比于单个噪声分量,会有四个与经像素合并的像素相关联的累积信号分量,由此改善图像数据的信噪比,但是降低了整体分辨率。此外,像素合并还可导致图像数据的不均匀或不一致的空间采样,但可以通过使用如下将更详细讨论的像素合并补偿滤波来对其进行校正。
如图所示,图像传感器90a和90b可分别提供原始图像数据作为信号Sif0和Sif1。图像传感器90a和90b中的每一个一般可与相应的统计处理单元120(StatsPipe0)和122(StatsPipe1)相关联,而统计处理单元120和122可被配置为处理图像数据以确定一组或多组统计信息(由信号Stats0和Stats1表示),其包括涉及自动曝光、自动白平衡、自动对焦、闪烁检测、黑度补偿和镜头明暗校正等的统计信息。在特定实施例中,当图像传感器90a和90b中仅有一个正在活动地获取图像时,如果需要附加的统计信息,则图像数据可被发送到StatsPipe0和StatsPipe1两者。举例而言,如果StatsPipe0和StatsPipe1都可用,StatsPipe0可被用来收集一种颜色空间(例如RGB)的统计信息,而StatsPipe1可被用来收集另一种颜色空间(例如YUV或YCbCr)的统计信息。也就是说,统计处理单元120和122可以并行地操作以收集由活动传感器获得的图像数据的每一帧的多组统计信息。
在本实施例中,在ISP前端80中提供五个异步数据源。这些数据源包括:(1)来自对应于传感器0(90a)的传感器接口的直接输入(被称为Sif0或Sens0),(2)来自对应于传感器1(90b)的传感器接口的直接输入(被称为Sif1或Sens1),(3)来自可包括DMA接口的存储器108的传感器0数据输入(被称为SifIn0或Sens0DMA),(4)来自存储器108的传感器1数据输入(被称为SifIn1或Sens1DMA),以及(5)从存储器108检索出的具有来自传感器0和传感器1数据输入的帧的一组图像数据(被称为FeProcIn或ProcInDMA)。ISP前端80还可包括来自源的图像数据可被路由到的多个目的地,其中每个目的地可以是存储器中(例如在108中)的存储位置或处理单元。例如,在本实施例中,ISP前端80包括六个目的地:(1)在存储器108中用于接收传感器0数据的Sif0DMA,(2)在存储器108中用于接收传感器1数据的Sif1DMA,(3)第一统计处理单元120(StatsPipe0),(4)第二统计处理单元122(StatsPipe1),(5)前端像素处理单元(FEProc)130,以及(6)到存储器108或ISP流水线82的FeOut(或FEProcOut)(以下将作进一步详细讨论)。在一个实施例中,如下表1所示,ISP前端80可被配置为针对具体源,仅有特定目的地有效。
SIf0DMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0 | X | X | X | X | X | |
Sens1 | X | X | X | X | X | |
Sens0DMA | X | |||||
Sens1DMA | X | |||||
ProcInDMA | X | X |
表1-针对每个源的ISP前端有效目的地的示例
例如,依照表1,源Sens0(传感器0的传感器接口)可被配置为将数据提供给目的地SIf0DMA(信号134)、StatsPipe0(信号136)、StatsPipe1(信号138)、FEProc(信号140)或FEOut(信号142)。在一些实例中,对于FEOut,源数据可被提供给FEOut以旁路FEProc的像素处理,例如用于调试或测试目的。此外,源Sens1(传感器1的传感器接口)可被配置为将数据提供给目的地SIf1DMA(信号144)、StatsPipe0(信号146)、StatsPipe1(信号148)、FEProc(信号150)或FEOut(信号152);源Sens0DMA(来自存储器108的传感器0数据)可被配置为将数据提供给StatsPipe0(信号154);源Sens1DMA(来自存储器108的传感器1数据)可被配置为将数据提供给StatsPipe1(信号156);源ProcInDMA(来自存储器108的传感器0和传感器1数据)可被配置为将数据提供给FEProc(信号158)和FEOut(信号160)。
应当注意的是当前所示的实施例被配置为使得Sens0DMA(来自存储器108的传感器0帧)和Sens1DMA(来自108的传感器1帧)仅被分别提供给StatsPipe0和StatsPipe1。该结构允许ISP前端80在存储器中保留一定数量的先前帧(例如5帧)。例如,由于从用户使用图像传感器来启动捕捉事件(例如将图像***从预览模式转变为捕捉或记录模式,或者甚至是仅仅打开或初始化图像传感器)至捕捉到图像场景之间的时间延迟或滞后,并非用户想要捕捉的每一帧都可以被捕捉并随后得到基本实时的处理。因此,通过在存储器108中保留一定数量的先前帧(例如来自预览阶段),这些先前帧可随后被处理或者连同响应于捕捉事件实际被捕捉的帧而被处理,由此对这样的滞后进行补偿,并且提供更完整的图像数据集合。
关于图8所示的结构,应当注意的是StatsPipe0120被配置为接收由选择逻辑124(例如多路复用器)确定的输入136(来自Sens0)、146(来自Sens1)和154(来自Sens0DMA)中的一个。同样的,选择逻辑126可以从信号138、156和148中选择一个输入以提供给StatsPipe1,选择逻辑132可以从信号140、150和158中选择一个输入以提供给FEProc。如上所述,统计数据(Stats0和Stats1)可被提供给控制逻辑84以用于各控制参数的确定,这些控制参数可被用于操作成像设备30和/或ISP流水处理逻辑82。如同可以明了的,可由任何适合类型的逻辑来提供图8所示的选择逻辑块(120、122和132),例如响应于控制信号而选择多个输入信号中的一个的多路复用器。
像素处理单元(FEProc)130可被配置为逐像素地对原始图像数据执行各种图像处理操作。如图所示,FEProc130作为目的地处理单元可以接收来自源Sens0(信号140)、Sens1(信号150)或ProcInDMA(信号158)的经由选择逻辑132的图像数据。在执行可包括以下将进一步讨论的时域滤波和像素合并补偿滤波的像素处理操作时,FEProc130还可接收和输出多种信号(例如可表示在时域滤波期间使用的运动历史和亮度数据的Rin、Hin、Hout和Yout)。接着诸如通过一个或多个先进先出(FIFO)队列,像素处理单元130的输出109(FEProcOut)可被转发到ISP流水逻辑82,或者可被发送到存储器108。
此外,如图8所示,除了接收信号140、150和158,选择逻辑132还可接收信号159和161。信号159可表示来自StatsPipe0的“经预处理的”原始图像数据,信号161可表示来自StatsPipe1的“经预处理的”原始图像数据。如以下将讨论的那样,在收集统计信息之前,每个统计处理单元可应用一个或多个预处理操作到原始图像数据。在一个实施例中,每个统计处理单元可执行一定程度的缺陷像素检测/校正、镜头明暗校正、黑度补偿和逆黑度补偿。因此信号159和161可表示已经使用前述预处理操作(以下将在图37中进行进一步详细讨论)进行处理的原始图像数据。因此,选择逻辑132给予ISP前端处理逻辑80是提供来自传感器0(信号140)和传感器1(信号150)的未经预处理的原始图像数据还是提供来自StatsPipe0(信号159)和StatsPipe1(信号161)的经预处理的原始图像数据的灵活性。此外,如选择逻辑单元162和163所示,ISP前端处理逻辑80还具有是将来自传感器0(信号134)或传感器1(信号144)的未经预处理的原始图像数据写入到存储器108,还是将来自StatsPipe0(信号159)或StatsPipe1(信号161)的经预处理的原始图像数据写入到存储器108的灵活性。
提供前端控制单元164以控制ISP前端逻辑80的操作。控制单元164可被配置为初始化及编程用于配置和启动图像帧的处理的控制寄存器(在此被称为“进行寄存器(goregister)”),并且被配置为选择用于更新双重缓冲数据寄存器的合适的(一个或多个)寄存器库(registerbank)。在一些实施例中,控制单元164还可提供性能监视逻辑以记录时钟周期、存储器等待时间和服务质量(QOS)信息。此外,控制单元164还可以控制动态时钟选通,其可被用于在在活动传感器的输入队列中没有足够数据时,禁用到ISP前端80的一个或多个部分的时钟。
使用上述“进行寄存器”,控制单元164能够控制用于每个处理单元(例如StatsPipe0、StatsPipe1和FEProc)的各种参数的更新,并且可以与传感器接***互以控制处理单元的启动和停止。一般来说每个前端处理单元都是逐帧地进行操作。如上所述(表1),到处理单元的输入可以来自传感器接口(Sens0或Sens1)或者来自存储器108。此外,处理单元可以利用可存储在相应数据寄存器中的各种参数和配置数据。在一个实施例中,与每个处理单元或目的地相关联的数据寄存器可被集合为形成寄存器库组的块。在图8的实施例中,在ISP前端中可定义七个寄存器库组:SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn。复制每个寄存器块地址空间以提供两个寄存器库。只有被双重缓冲的寄存器在第二个库中被实例化。如果寄存器不被双重缓冲,第二个库中的地址将被映射到相同寄存器在第一个库中的地址。
对于被双重缓冲的寄存器,来自一个库的寄存器是活动的并由处理单元使用,而来自另一个库的寄存器被影子化(shadowed)。当硬件正在使用活动寄存器的同时,影子寄存器可在当前帧间隔期间由控制单元164更新。可以通过在与将图像数据提供给处理单元的源相对应的进行寄存器中的“NextBk”(下一个库)字段来为该具体处理单元指定在一具体帧处使用哪个库的决定。NextBk本质上是允许控制单元164在发生用于后续帧的触发事件时控制哪个寄存器库变得活动的一个字段。
在详细讨论进行寄存器的操作之前,图9提供了一种依照本技术的用于逐帧地处理图像数据的一般方法166。其开始于步骤168,由数据源(例如Sens0、Sens1、Sens0DMA、Sens1DMA或ProcInDMA)指向的目的地处理单元进入空闲状态。这可表明当前帧的处理已经完成,并且因此控制单元164可准备处理下一帧。例如,在步骤170,更新用于每个目的地处理单元的可编程参数。这可包括,例如更新在对应于源的进行寄存器中的NextBk字段,以及更新在对应于目的地单元的数据寄存器中的任何参数。此后,在步骤172,触发事件可以使目的地单元进入运行状态。此外,如步骤174所示,由源指向的每个目的地单元完成其对当前帧的处理操作,随后该方法166可返回步骤168以用于下一帧的处理。
图10描绘了其中示出可由ISP前端的各目的地单元使用的数据寄存器176和178的两个库的方框图。例如,库0(176)可包括数据寄存器1-n(176a-176d),并且库1(178)可包括数据寄存器1-n(178a-178d)。如上所述,图8所示的实施例可利用具有七个寄存器库组(例如SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn)的寄存器库(库0)。因此,在这样的实施例中,复制每个寄存器的寄存器块地址空间以提供第二寄存器库(库1)。
图10还例示了可对应于一个源的进行寄存器180。如图所示,进行寄存器180包括“NextVld”字段182和上述的“NextBk”字段184。这些字段可在启动当前帧的处理之前被编程。具体而言,NextVld可指示来自源的数据将被发送至的(一个或多个)目的地。如上所述,NextBk可从由NextVld指示的所指向的每个目的地的库0或库1中选择对应的数据寄存器。虽然未在图10中示出,但是进行寄存器180还可包括此处被称为“进行位”(gobit)的就位位(armingbit),其可被设置以使进行寄存器就位。当检测到用于当前帧的触发事件192时,可将NextVld和NextBk拷贝进对应的当前或“活动”寄存器186的CurrVld字段188和CurrBk字段190。在一个实施例中,(一个或多个)当前寄存器186可以是可由硬件设置的只读存储器,但仍然无法由ISP前端80内的软件命令访问。
如同将明了的,可以为每个ISP前端源提供对应的进行寄存器。出于本公开的这一目的,对应于上述的源Sens0、Sens1、Sens0DMA、Sens1DMA和ProcInDMA的进行寄存器可分别称为Sens0Go、Sens1Go、Sens0DMAGo、Sens1DMAGo和ProcInDMAGo。如上所述,控制单元可利用进行寄存器来控制在ISP前端80内的帧处理顺序。每个进行寄存器包含NextVld字段和NextBk字段以便为下一帧分别指示什么目的地将是有效的,以及将使用哪个寄存器库(0或1)。如上图10所示,当发生下一帧的触发事件192时,NextVld字段和NextBk字段被拷贝到指示当前有效目的地和库编号的对应的活动只读寄存器186。每个源可被配置为异步地操作,并且可发送数据到其任何有效目的地。此外,应当理解的是,对于每个目的地,在当前帧期间可能一般仅有一个源是活动的。
关于进行寄存器180的就位和触发,在进行寄存器180中断言(assert)就位位或“进行位”会使得用相关联的NextVld和NextBk字段使对应的源就位。根据源输入数据是从存储器(例如Sens0DMA、Sens1DMA或ProcInDMA)还是从传感器接口(例如Sens0或Sens1)中读取的,有多种模式可用于触发。例如,如果输入来自存储器108,则进行位自身的就位可以作为触发事件,因为当从存储器108读取数据时,控制单元164已经开始控制。如果图像帧正在由传感器接口输入,触发事件则可取决于对应的进行寄存器就位相对于接收到来自传感器接口的数据的时间的定时。依照本实施例,图11-13示出了用于基于传感器接口输入的触发定时的三种不同的技术。
首先参考图11,例示了第一种场景,其中一旦由源指向的所有目的地都从忙碌或运行状态转变为空闲状态,则发生触发。这里,数字信号VVALID(196)表示来自源的图像数据信号。脉冲198表示图像数据的当前帧,脉冲202表示图像数据中的下一帧,间隔200表示垂直消隐间隔(VBLANK)200(例如,表示当前帧198的最后一行与下一帧202之间的时间差)。脉冲198的上升沿和下降沿之间的时间差表示帧区间201。因此,在图11中,当所有指向的目的地已经结束对当前帧198的操作处理并转为空闲状态时,源可被配置为触发。在该场景中,在目的地完成处理之前使源就位(例如通过设定就位或“进行”位),使得只要指向的目的地进入空闲,源就能够触发并启动下一帧202的处理。在垂直消隐间隔200期间,在传感器输入数据到达之前,可以使用由对应于源的进行寄存器所指定的寄存器库来为下一帧202来设置和配置处理单元。仅作为示例,可在下一帧202到达前填充由FEProc130使用的读出缓冲器。以此情况下,对应于活动寄存器库的影子寄存器可以在该触发事件之后被更新,从而允许完整帧区间设置用于下一帧(例如在帧202之后)的双重缓冲寄存器。
图12例示了第二种场景,其中通过在对应于源的进行寄存器中使进行位就位而触发源。在该“由进行触发(trigger-on-go)”结构中,由源指向的目的地单元已经处于空闲,进行位的就位是触发事件。该触发模式可被用于不被双重缓冲的寄存器,因此这些寄存器在垂直消隐期间被更新(例如,与在帧区间201期间更新双重缓冲的影子寄存器相反)。
图13例示了第三种触发模式,其中一旦检测到下一帧的开始,即,上升的VSYNC,就触发源。然而,应该注意的是,在该模式中,如果进行寄存器在已经开始处理下一帧202之后就位(通过设置进行位),源将使用对应于前一帧的目标目的地和寄存器库,因为在目的地开始处理之前没有更新CurrVld和CurrBk字段。这样就没有留有用来设置目的地处理单元的垂直消隐间隔,并且可能潜在地导致丢失帧,尤其是在以双传感器模式操作的情况下。应当注意的是,尽管如此,如果图像处理电路32是操作于对于每一帧都使用相同寄存器库(例如目的地(NextVld)和寄存器库(NextBk)不发生改变)的单传感器模式,该模式则可实现准确操作。
现在参考图14,其更加详细地例示了控制寄存器(或“进行寄存器”)180。进行寄存器180包括就位“进行”位204,以及NextVld字段182和NextBk字段184。如上所述,ISP前端80的每个源(例如Sens0、Sens1、Sens0DMA、Sens1DMA或ProcInDMA)可具有对应的进行寄存器180。在一个实施例中,进行位204可以是单个位的字段,并且可通过将进行位204设置为1来使进行寄存器180就位。NextVld字段182可包含对应于ISP前端80中的目的地数量的多个位。例如,在如图8所示的实施例中,ISP前端包括六个目的地:Sif0DMA、Sif1DMA、StatsPipe0、StatsPipe1、FEProc和FEOut。因此,进行寄存器180可包括在NextVld字段182中的六个位,其中每一位对应于一个目的地,并且其中指向的目的地被设为1。类似地,NextBk字段182可包括对应于1SP前端80中的数据寄存器数量的多个位。例如,如上所述,图8所示的ISP前端80的实施例可包括七个数据寄存器:SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn。因此,NextBk字段184可包括七个位,其中每一位对应于一个数据寄存器,并且其中通过将他们相应的位值设为0或1来选择分别对应于库0和1的数据寄存器。因此,使用进行寄存器180,源一旦触发就准确得知哪些目的地单元将接收帧数据,以及哪些寄存器库将被用来配置所指向的目的地单元。
此外,由于ISP电路32支持双传感器配置,因此ISP前端可操作于单传感器配置模式(例如仅有一个传感器在获取数据)和双传感器配置模式(例如两个传感器都在获取数据)。在典型的单传感器配置中,来自传感器接口(例如Sens0)的输入数据被发送给StatsPipe0(用于统计处理)和FEProc(用于像素处理)。此外,传感器帧还被发送给存储器(SIf0DMA)以供进一步处理,如上讨论的那样。
以下表2描绘了当操作于单传感器模式时可如何配置对应于ISP前端80的每个源的NextVld字段的例子。
SIf0DMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0Go | 1 | X | 1 | 0 | 1 | 0 |
Sens1Go | X | 0 | 0 | 0 | 0 | 0 |
Sens0DMAGo | X | X | 0 | X | X | X |
Sens1DMAGo | X | X | X | 0 | X | X |
ProcInDMAGo | X | X | X | X | 0 | 0 |
表2-每个源的NextVld示例:单传感器模式
如以上表1所讨论的那样,ISP前端80可被配置为对于特定源仅有特定目的地有效。因此,在表2中被标记为“X”的目的地旨在指示ISP前端80没有被配置为允许一具体源发送帧数据到该目的地。对于这样的目的地,对应于该目的地的该具体源的NextVld字段的各个位可以常为0。应当理解的是,然而这仅是一个实施例,实际上在其他实施例中,ISP前端80可被配置为使得每个源都能够指向每个可用的目的地单元。
如以上表2所示的配置表示仅有传感器0在提供帧数据的单传感器模式。例如,Sens0Go寄存器指示SIf0DMA、StatsPipe0和FEProc作为目的地。因此,当被触发时,传感器0图像数据的每一帧被发送到这三个目的地。如上所述,SIf0DMA可将帧存储到存储器108中以待随后处理,StatsPipe0应用统计处理以确定各种统计数据点,FEProc使用诸如时域滤波和像素合并补偿滤波来处理帧。此外,在一些期望附加统计信息(例如在不同颜色空间中的统计信息)的配置中,在单传感器模式期间还可激活StatsPipe1(对应于将NextVld设为1)。在这样的实施例中,传感器0的帧数据被发送到StatsPipe0和StatsPipe1两者。此外,如本实施例所示,在单传感器模式期间,仅有单个传感器接口(例如Sens0或作为替换的Sen0)是唯一的活动源。
带着这样的想法,图15提供了描绘在仅有单个传感器(例如传感器0)活动时用于在ISP前端80中处理帧数据的方法206的流程图。虽然方法206具体例示了通过FEProc130对传感器0的帧数据进行处理的例子,但是应当理解的是这样的处理也可被应用到任何其他源和ISP前端80中的对应目的地单元。方法206开始于步骤208,传感器0开始获取图像数据,并将捕捉的帧发送到ISP前端80。如步骤210所示,控制单元164可初始化对应于Sens0(传感器0接口)的进行寄存器的编程以确定目标目的地(包括FEProc)以及将使用什么库寄存器。之后,判定逻辑212确定是否发生了源触发事件。如上所述,来自传感器接口的帧数据输入可利用不同触发模式(图11-13)。如果没有检测到触发事件,处理206继续等待触发。一旦发生触发,下一帧变为当前帧并被发送到FEProc(和其他目标目的地)以进行步骤214中的处理。可使用基于在Sens0Go寄存器的NextBk字段中指定的对应的数据寄存器(ProcPipe)的数据参数来配置FEProc。在步骤216中完成对当前帧的处理之后,方法206可返回到步骤210,其中对Sens0Go寄存器进行编程以用于下一帧。
当ISP前端80的传感器0和传感器1都是活动的时候,统计处理仍然大致简单,因为每个传感器输入可由相应的统计块,StatsPipe0和StatsPipe1,来处理。然而,因为所示的ISP前端80的实施例仅提供单个像素处理单元(FEProc),FEProc可被配置为在处理对应于传感器0输入数据的帧和对应于传感器1输入数据的帧之间交替。可以明了的是,在所示实施例中从FEProc读取图像帧,以避免来自一个传感器的图像数据被实时处理而来自另一传感器的图像数据没有得到实时处理这种情况。例如,如下面描绘了当ISP前端80操作于双传感器模式时每个源的进行寄存器中的NextVld字段的一种可能配置的表3所示,来自每个传感器的输入数据被发送到存储器(SIf0DMA和SIf1DMA)和对应的统计处理单元(StatsPipe0和StatsPipe1)。
SIf0DMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0Go | 1 | X | 1 | 0 | 0 | 0 |
Sens1Go | X | 1 | 0 | 1 | 0 | 0 |
Sens0DMAGo | X | X | 0 | X | X | X |
Sens1DMAGo | X | X | X | 0 | X | X |
ProcInDMAGo | X | X | X | X | 1 | 0 |
表3-每个源的NextVld示例:双传感器模式
将在存储器中的传感器帧从ProcInDMA源发送到FEProc,使得它们以基于其对应帧速率的速率在传感器0和传感器1之间交替。例如,如果传感器0和传感器1都在以30帧每秒(fps)的速率获取图像数据,则可以以1比1的方式交织它们的传感器帧。例如,如果传感器0(30fps)以两倍于传感器1(15fps)的速率获取图像数据,则交织可以是2比1。也就是说,每读取一帧的传感器1数据,可从存储器中读取两帧的传感器0数据。
带着这样的想法,图16描绘了用于在具有两个同时获取图像数据的传感器的ISP前端80中处理帧数据的方法220。在步骤222,传感器0和传感器1都开始获取图像帧。将明了的是,传感器0和传感器1可使用不同的帧速率、分辨率等来获取图像帧。在步骤224,传感器0和传感器1获取的帧被写入到存储器108(例如使用SIf0DMA和SIf1DMA目的地)。接着,如步骤226所示,源ProcInDMA以交替方式从存储器108读取帧数据。如上所述,帧可依赖于获取数据的帧速率而在传感器0数据和传感器1数据之间交替。在步骤228,从ProcInDMA获取下一帧。此后,在步骤230,基于下一帧是传感器0还是传感器1数据而编程对应于源(这里是PeocInDMA)的进行寄存器的NextVld和NextBk字段。此后,判定逻辑232确定是否发生了源触发事件。如上所述,可通过使进行位就位来触发来自存储器的数据输入(例如“由进行触发”模式)。因此,一旦进行寄存器的进行位被设为1,就可发生触发。在步骤234中,一旦发生触发,下一帧变为当前帧,并被发送到FEProc以供处理。如上所述,可使用基于由ProcInDMAGo寄存器的NextBk字段所指定的对应的数据寄存器(ProcPipe)的数据参数来配置FEProc。在步骤236中完成对当前帧的处理之后,方法220可返回到步骤228并继续。
ISP前端80被配置用于处理的另一种操作事件是图像处理期间的配置变化。例如,当ISP前端80从单传感器配置转变为双传感器配置时,可能会发生这样的事件,或者反之亦然。如上所述,根据是一个还是两个图像传感器是活动的,用于特定源的NextVld字段可能不同。因此,当传感器配置发生改变时,ISP前端控制单元164可在目的地单元被新的源指向之前释放所有目的地单元。这可以避免无效的配置(例如将多个源指派给一个目的地)。在一个实施例中,可以通过将所有进行寄存器的NextVld字段设为0以使所有目的地失效,并且使进行位就位,而完成目的地单元的释放。在释放了目的地单元之后,可以依据当前的传感器模式来重新配置进行寄存器,并且图像处理可以继续。
图17示出了依据一个实施例的用于在单和双传感器配置之间切换的方法240。开始于步骤242,识别来自ISP前端80的一具体源的图像数据的下一帧。在步骤244,将目标目的地(NextVld)编程到对应于源的进行寄存器内。接着在步骤246,依据目标目的地,NextBk被编程为指向关联于目标目的地的正确的数据寄存器。此后,判定逻辑248确定是否发生了源触发事件。如步骤250所示,一旦发生了触发,下一帧被发送到由NextVld指定的目的地单元,并通过使用NextBk指定的对应数据寄存器由目的地单元来处理。处理持续直到步骤252,在那里完成对当前帧的处理。
随后,判定逻辑254确定源的目标目的地是否改变。如上所述,对应于Sens0和Sens1的进行寄存器的NextVld设置可依据是一个还是两个传感器活动而改变。例如,参考表2,如果仅有传感器0是活动的,则传感器0数据被发送到SIf0DMA、StatsPipe0和FEProc。然而,参考表3,如果传感器0和传感器1都是活动的,则传感器0数据不会被直接发送给FEProc。如上所述,作为代替,传感器0和传感器1数据被写入到存储器108,并通过源ProcInDMA以交替的方式读出到FEProc。因此,如果判定逻辑254没有检测到目标目的地改变,则控制单元164推定传感器配置没有发生改变,方法240返回到步骤246。在那里,源进行寄存器的NextBk字段被编程为指向用于下一帧的正确的数据寄存器,并且处理继续。
然而,如果判定逻辑254检测到目的地改变,则控制单元164确定传感器配置发生了改变。例如,这可以表示从单传感器模式到双传感器模式的切换,或者完全地关闭传感器。因此,方法240继续到步骤256,在那里,所有进行寄存器的NextVld字段的所有位被设为0,从而在下个触发时,有效地禁止将帧发送到任何目的地。接着,在判定逻辑258中确定是否所有目的地单元都已经转变为空闲状态。如果不是,方法240在判定逻辑258等待,直到所有目的地单元已经完成他们的当前操作。接着,在判定逻辑260确定是否要继续图像处理。例如,如果目的地改变表示传感器0和传感器1都未活动,则图像处理在步骤262结束。然而,如果确定要继续进行图像处理,则方法240返回到步骤244,并且依据当前操作模式(例如单传感器或双传感器)来编程进行寄存器的NextVld字段。如此处所示,用于清空进行寄存器和目的地字段的步骤254-262可一起由参考标记264表示。
接着,图18示出了另一个实施例,其以流程图(方法265)的方式提供另一种双传感器操作模式。方法265描绘了这样一种情况,如步骤266所示,其中一个传感器(例如传感器0)活动地获取图像数据,并且将图像帧发送到FEProc130以供处理,同时还将图像帧发送到StatsPipe0和/或存储器108(Sif0DMA),而另一个传感器(例如传感器1)是不活动的(例如被关闭)。接着判定逻辑268检测一条件,其中在下一帧时传感器1将变为活动的以发送图像数据到FEProc。如果没有满足这个条件,则方法265返回到步骤266。然而,如果满足了该条件,则方法265执行动作264(包含图17的步骤254-262),籍此在步骤264清空并重新配置源的目的地字段。例如,在步骤264,关联于传感器1的进行寄存器的NextVld字段可被编程为将FEProc以及StatsPipe1和/或存储器(Sif1DMA)指定为目的地,而关联于传感器0的进行寄存器的NextVld字段可被编程为清空将FEProc作为目的地。在这个实施例中,如步骤270所示,尽管在下一帧时,由传感器0捕捉的帧没有被发送到FEProc,但传感器0可保持活动并且继续发送其图像帧到StatsPipe0,同时在步骤272中,传感器1捕捉并继续发送数据到FEProc以供处理。于是,传感器0和传感器1这两个传感器都继续操作于这一“双传感器”模式,尽管仅将来自一个传感器的图像帧发送到FEProc以供处理。出于这个示例的目的,发送帧到FEProc以供处理的传感器可被称为“活动传感器”,没有发送帧到FEProc但是仍然发送数据到统计处理单元的传感器可被称为“半活动传感器”,完全不获取数据的传感器可被称为“非活动传感器”。
以上所述的技术的一个好处在于,因为可以持续为半活动传感器(传感器0)获取统计信息,下次当半活动传感器转变为活动状态并且当前活动传感器(传感器1)转变为半活动状态或非活动状态时,由于对图像统计信息的持续收集使得颜色平衡和曝光参数可能已经可用,所以半活动传感器可在一帧内开始获取数据。该技术可被称为图像传感器的“热切换”(hotswitching),其避免了与图像传感器的“冷启动”(例如没有可用统计信息的启动)有关的缺点。此外,为了省电,因为每个源都是异步的(如上所述),所以半活动传感器可在半活动期间以降低的时钟和/或帧速率操作。
在继续图8的ISP前端逻辑80中描绘的统计处理和像素处理操作的更详细描述之前,相信关于各种ISP帧区域的定义的简要介绍会有助于更好的理解本技术方案。带着这样的想法,图19例示了在图像源帧内定义的各种帧区域。提供给图像处理电路32的源帧的格式可以使用以上所述的分块或线性寻址模式,并且可利用8、10、12或14位精度的像素格式。如图19所示的图像源帧274可包括传感器帧区域276、原始帧区域278和活动区域280。传感器帧276一般是图像传感器90可以提供给图像处理电路32的最大帧大小。原始帧区域278可被定义为传感器帧276的被发送到ISP前端处理逻辑80的区域。活动区域280可被定义为源帧274的一部分,其是典型地位于原始帧区域278内并对其进行具体图像处理操作的那部分。依照本技术的实施例,对于不同的图像处理操作,活动区域280可以相同或不同。
依照本技术的一些方面,ISP前端逻辑80仅接收原始帧278。因此,出于本讨论的目的,用于ISP前端处理逻辑80的全局帧大小可假设为由宽282和高284确定的原始帧大小。在一些实施例中,可以通过控制逻辑84确定和/或保存从传感器帧276到原始帧278的边界偏移量。例如,控制逻辑84可包括基于输入参数来确定原始帧区域278的固件,所述输入参数诸知是所指定的相对于传感器帧276的x偏移量286和y偏移量288。此外,在一些情况下,在ISP前端逻辑80或ISP流水逻辑82内的处理单元可具有预定义的活动区域,使得在原始帧内但在活动区域280外的像素将不被处理,即,保持不变。例如,可基于相对于原始帧278的x偏移量294和y偏移量296来定义用于具体处理单元的具有宽290和高292的活动区域280。此外,对于活动区域没有被具体定义的情况,图像处理电路32的一个实施例可以假设活动区域280与原始帧278相同(例如x偏移量294和y偏移量296都等于0)。因此,为了对图像数据进行图像处理操作,关于原始帧278或活动区域280的边界,可以定义边界条件。
带着这样的想法并参考图20,例示了依照本技术一个实施例的ISP前端像素处理逻辑130(之前在图8中讨论了)的更详细视图。如图所示,ISP前端像素处理逻辑130包括时域滤波器298和像素合并补偿滤波器300。时域滤波器298可接收输入图像信号Sif0、Sif1、FEProcIn或经预处理的图像信号(例如159,161)中的一个,并且可在执行任何附加处理之前对原始像素数据进行操作。例如,时域滤波器298可首先处理图像数据以通过在时间方向上对图像帧进行平均而降低噪声。以下将详细讨论的像素合并补偿滤波器300可对来自图像传感器(例如90a,90b)的经像素合并的原始图像数据应用缩放和重新采样以维持图像像素的均匀空间分布。
时域滤波器298可以是基于运动和明亮度特征而像素自适应的。例如,当像素运动较大时,可降低滤波强度以避免得到的经处理的图像中出现“拖尾”或“重影伪像”,反之当检测到轻微运动或无运动时,可增加滤波强度。此外,还可基于明亮度数据(例如“亮度”)来调整滤波强度。例如,随着图像明亮度增加,滤波伪影变得更容易被人眼察觉。因此,当像素具有较高明亮度水平时应当进一步降低滤波强度。
在应用时域滤波时,时域滤波器298可接收可来自于前一经滤波的帧或初始帧的参考像素数据(Rin)和运动历史输入数据(Hin)。使用这些参数,时域滤波器298可提供运动历史输出数据(Hout)和经滤波的像素输出(Yout)。接着经滤波的像素输出Yout被传递到像素合并补偿滤波器300,后者可被配置为对经滤波的像素输出数据Yout执行一个或多个缩放操作以产生输出信号FEProcOut。接着,经处理的像素数据FEProcOut可被转发至如上所述的ISP流水处理逻辑82。
参考图21,例示了根据第一实施例描绘的可由图20所示的时域滤波器执行的时域滤波处理302的处理框图。时域滤波器298可包括2抽头滤波器,其中滤波器系数可至少部分基于运动和明亮度数据而逐像素地进行自适应调整。例如,可将具有表示时间值的变量“t”的输入像素x(t)与在前一经滤波的帧或前一初始帧中的参考像素r(t-1)作比较,以在可包含滤波器系数的运动历史表(M)304中生成的运动索引查找表。此外,基于运动历史输入数据h(t-1),可以确定对应于当前输入像素x(t)的运动历史输出h(t)。
可基于运动增量d(j,i,t)来确定运动历史输出h(t)和滤波器系数K,其中(j,i)表示当前像素x(j,i,t)的空间位置的坐标。可通过确定对于具有相同颜色的三个水平位置相同的像素的初始和参考像素之间的三个绝对增量的最大值来计算运动增量d(j,i,t)。例如,简单参考图22,例示了对应于初始输入像素312、313和314的三个同位置参考像素308、309和310的空间位置。在一个实施例中,可使用以下的公式基于这些初始和参考像素来计算运动增量:
d(j,i,t)=max3[abs(x(j,i-2,t)-r(j,i-2,t-1)),
(abs(x(j,i,t)-r(j,i,t-1)),(1a)
(abs(x(j,i+2,t)-r(j,i+2,t-1))]
在以下图24中进一步例示了描绘这一用于确定运动增量值的技术的流程图。此外,应当理解的是如以上等式1a(以及以下图24中)所示的用于计算运动增量值的技术仅旨在提供一个用于确定运动增量值的实施例。
在其他实施例中,可以估计相同颜色的像素的阵列以确定运动增量值。例如,除了等式1a中参考的三个像素外,一个用于确定运动增量值的实施例还可以包括估计来自参考像素312、313和314上面两行(例如j-2;假设为拜耳模式)的相同颜色的像素与其对应的同位置像素之间的绝对增量,以及来自参考像素312、313和314下面两行(例如j+2;假设为拜耳模式)的该相同颜色的像素与其对应的同位置像素之间的绝对增量。例如,在一个实施例中,运动增量值可如下表示:
d(j,i,t)=max9[abs(x(j,i-2,t)-r(j,i-2,t-1)),
(abs(x(j,i,t)-r(j,i,t-1)),
(abs(x(j,i+2,t)-r(j,i+2,t-1)),
(abs(x(j-2,i-2,t)-r(j-2,i-2,t-1)),
(abs(x(j-2,i,t)-r(j-2,i,t-1)),(1b)
(abs(x(j-2,i+2,t)-r(j-2,i+2,t-1)),
(abs(x(j+2,i-2,t)-r(j+2,i-2,t-1))
(abs(x(j+2,i,t)-r(j+2,i,t-1)),
(abs(x(j+2,i+2,t)-r(j+2,i+2,t-1))]
从而,在由等式1b所描绘的实施例中,可通过比较相同颜色的像素的3x3阵列之间的绝对增量来确定运动增量值,其中当前像素(313)位于该3x3阵列(例如,如果算上不同颜色的像素,实际上是拜耳颜色模式的5x5阵列)的中心。应当明了的是,可以分析其中当前像素(例如313)位于阵列中心的任何合适的相同颜色像素的二维阵列(例如,包括所有像素在同一行中的阵列(例如等式1a)或所有像素在同-列中的阵列)以确定运动增量值。此外,虽然运动增量值可被确定为绝对增量的最大值(例如,如等式1a和1b所示),在其他实施例中,运动增量值还可被选择为绝对增量的平均或中位数。此外,前述技术还可被应用于其他类型的滤色器阵列(例如RGBW,CYGM等),并非旨在为拜耳模式所独有。
参考回图21,一旦确定了运动增量值,可以通过将用于当前像素(例如在空间位置(j,i))的运动增量d(t)与运动历史输入h(t1)相加来计算可被用来从运动表(M)304中选择滤波器系数K的运动索引查找。例如,可通过以下等式来确定滤波器系数K:
K=M[d(j,i,t)+h(j,i,t-1)](2a)
此外,可使用以下公式来确定运动历史输出h(t):
h(j,i,t)=d(j,i,t)+(1-K)×h(j,i,t-1)(3a)
接着,可以使用当前输入像素x(t)的明亮度来生成亮度表(L)306内的亮度索引查找。在一个实施例中,亮度表可包括可位于0和1之间且可基于亮度索引而被选择的衰减因子。可通过将第一滤波器系数K乘上亮度衰减因子来计算第二滤波器系数K’,如以下等式所示:
K′=K×L[x(j,i,t)](4a)
所确定的值K’随后可被用作时域滤波器298的滤波系数。如上所述,时域滤波器298可以是2抽头滤波器。此外,时域滤波器298可被配置为使用前一经滤波的帧的无限脉冲响应(IIR)滤波器,或使用前一初始帧的有限脉冲响应(FIR)滤波器。时域滤波器298可以使用当前输入像素x(t)、参考像素r(t-1)和滤波器系数K’通过以下公式来计算经滤波的输出像素y(t)(Yout):
y(j,i,t)=r(j,i,t-1)+K′(x(j,i,t)-r(j,i,t-1))(5a)
如上所讨论的,可逐像素地执行如图21所示的时域滤波处理302。在一个实施例中,可以对于所有颜色分量(例如R、G和B)使用相同的运动表M和亮度表L。此外,一些实施例可提供旁路机制,其中可以例如响应于来自控制逻辑84的控制信号而旁路时域滤波。此外,如以下将关于图26和27所讨论的,时域滤波器298的一个实施例可以为图像数据的每个颜色分量使用单独的运动和亮度表。
参考图23可以更好的理解参考图21和22所描述的时域滤波技术的实施例,其中图23描绘了例示依照上述实施例的方法315的流程图。方法315开始于步骤316,其中时域滤波***302接收位于图像数据的当前帧的空间位置(j,i)的当前像素x(t)。在步骤317,至少部分地基于来自图像数据的前一帧(例如紧挨在当前帧之前的图像帧)的一个或多个同位置参考像素(例如r(t-1))来确定用于当前像素x(t)的运动增量值d(t)。以下将参考图24来进一步说明在步骤317中用于确定运动增量值d(t)的技术,其可依照上述的等式1a而执行。
一旦从步骤317获得了运动增量值d(t),如步骤318所示,可使用运动增量值d(t)和对应于来自前一帧的空间位置(j,i)的运动历史输入值h(t-1)来确定运动表查找索引。此外,尽管未示出,一旦知道了运动增量值d(t),在步骤318中还可以例如通过使用上述的等式3a来确定对应于当前像素x(t)的运动历史值h(t)。此后,在步骤319,可使用来自步骤318的运动表查找索引从运动表304中选择第一滤波器系数K。可以依照上述的等式2a来执行运动表查找索引的确定和从运动表中对第一滤波器系数K的选择。
接着,在步骤320,可以从亮度表306中选择衰减因子。例如,亮度表306可包括范围大致从0至1的衰减因子,并且可以使用当前像素x(t)的值作为查找索引来从亮度表306中选择衰减因子。一旦选择了衰减因子,在步骤321,如以上公式4a所示,可使用选择的衰减因子和第一滤波器系数K(来自步骤319)来确定第二滤波器系数K’。接着在步骤322,可基于第二滤波器系数K’(来自步骤320)、同位置的参考像素r(t-1)的值和输入像素x(t)的值来确定对应于当前输入像素x(t)的时域经滤波的输出值y(t)。例如,在一个实施例中,可依照上述的等式5a来确定输出值y(t)。
参考图24,更详细地例示了依照一个实施例的来自方法315的用于确定运动增量值d(t)的步骤317。具体而言,运动增量值d(t)的确定一般对应于依照以上等式1a所描述的操作。如图所示,步骤317可包括子步骤324-327。其开始于子步骤324,识别具有与当前输入像素x(t)相同的颜色值的三个水平相邻像素的集合。作为示例,依照图22所示的实施例,图像数据可包括拜耳图像数据,并且三个水平相邻像素可包括当前输入像素x(t)(313)、在当前输入像素313左边的相同颜色的第二像素312和在当前输入像素313右边的相同颜色的第三像素。
接着,在子步骤325,识别与所选择的三个水平相邻像素312、313和314的集合相对应的来自前一帧的三个同位置参考像素308、309和310。使用选择的像素312、313和314以及三个同位置参考像素308、309和310,在子步骤326中确定分别在三个选择的像素312、313和314中的每一个与其对应的同位置参考像素308、309和310之间的差的绝对值。随后,在子步骤327,将来自子步骤326的三个差的最大值选为用于当前输入像素x(t)的运动增量值d(t)。如上所述,例示了如等式1a所示的运动增量值计算技术的图24仅旨在提供一个实施例。实际上,如上所述,可以使用其中当前像素位于阵列中心处的任何合适的具有相同颜色像素的二维阵列来确定运动增量值(例如等式1b)。
图25中进一步描绘了用于对图像数据应用时域滤波的技术的另一个实施例。例如,因为图像数据的不同颜色分量的信噪比可能不同,增益可被应用到当前像素,使得当前像素可在从运动表304和亮度表306中选择运动和亮度值之前进行增益。通过应用依赖于颜色的相应增益,不同颜色分量的信噪比可以更趋于一致。仅作为示例,在一种使用原始拜耳图像数据的实现中,相对于绿色颜色通道(Gr和Gb),红色和蓝色颜色通道可能一般更加灵敏。因此,通过对每个经处理的像素应用合适的依赖于颜色的增益,一般可以降低各个颜色分量之间的信噪比变动,由此(尤其)降低重影伪像,并改善在自动白平衡增益之后不同颜色之间的一致性。
带着这样的思想,图25提供了一种依照这样一个实施例的描绘用于对由前端处理单元130接收到的图像数据应用时域滤波的方法328的流程图。其开始于步骤329,时域滤波***302接收位于图像数据当前帧的空间位置(j,i)处的当前像素x(t)。在步骤330,至少部分地基于来自该图像数据的前一帧(例如紧挨在当前帧之前的图像帧)的一个或多个同位置参考像素(例如r(t-1))来确定用于当前像素x(t)的运动增量值d(t)。步骤330与图23的步骤317相类似,并且可以利用以上等式1所示的运算。
接着,在步骤331,可使用运动增量值d(t)、来自前一帧的对应于空间位置(j,i)的运动历史输入值h(t-1)(例如对应于同位置的参考像素r(t-1))和与当前像素的颜色相关联的增益,来确定运动表查找索引。此后,在步骤332,可使用步骤331确定的运动表查找索引来从运动表304中选择第一滤波器系数K。仅作为示例,在一个实施例中,可如下的确定滤波器系数K和运动表查找索引:
K=M[gain[c]×(d(j,i,t)+h(j,i,t-1))],(2b)
其中M表示运动表,并且其中gain[c]对应于与当前像素的颜色关联的增益。此外,尽管未在图25中示出,应当理解用于当前像素的运动历史输出值h(t)也可被确定,并可被用于对随后图像帧(例如下一帧)的同位置像素应用时域滤波。在本实施例中,可使用如下公式来确定用于当前像素x(t)的运动历史输出h(t):
h(j,i,t)=d(j,i,t)+K[h(j,i,t-1)-d(j,i,t)](3b)
接着在步骤333,可使用基于与当前像素x(t)的颜色相关联的增益(gain[c])而确定的亮度表查找索引来从亮度表306中选择衰减因子。如上所述,存储在亮度表中的衰减因子可具有大致从0至1的范围。此后,在步骤334,可基于衰减因子(来自步骤333)和第一滤波器系数K(来自步骤332)来计算第二滤波器系数K’。仅作为示例,在一个实施例中,可如下的确定第二滤波器系数K’和亮度表查找索引:
K′=K×L[gain[c]×x(j,i,t)](4b)
接着,在步骤335,基于第二滤波器系数K’(来自步骤334)、同位置参考像素r(t-1)的值和输入像素x(t)的值,确定对应于当前输入像素x(t)的时域滤波输出值y(t)。例如,在一个实施例中,可如下的确定输出值y(t):
y(j,i,t)=x(j,i,t)+K′(r(j,i,t-1)-x(j,i,t))(5b)
继续到图26,描绘了时域滤波处理336的另一实施例。这里,可按照与图25所讨论的实施例相类似的方式来完成时域滤波处理336,不同之处在于,代替对每个输入像素应用依赖于颜色的增益(例如gain[c])和使用共享的运动和亮度表,为每个颜色分量提供单独的运动和亮度表。例如,如图26所示,运动表304可包括对应于第一种颜色的运动表304a,对应于第二种颜色的运动表304b和对应于第n种颜色的运动表304c,其中n取决于原始图像数据中存在的颜色的数量。类似的,亮度表306可包括对应于第一种颜色的亮度表306a,对应于第二种颜色的亮度表306b和对应于第n种颜色的亮度表306c。因此,在原始图像数据是拜耳图像数据的实施例中,可以提供三个运动和亮度表分别用于红色、蓝色和绿色颜色分量。如上所述,滤波系数K和衰减因子的选择可以取决于为当前颜色(例如当前输入像素的颜色)所选择的运动和亮度表。
图27示出了一种例示使用依赖于颜色的运动和亮度表来进行时域滤波的另一个实施例的方法338。将明了的是,方法338可采用的各种计算和公式可以与如图23所示的实施例相似,但是其使用为每个颜色所选择的具体运动和亮度表;或者与如图25所示的实施例相似,但其用依赖于颜色的运动和亮度表的选择来代替依赖于颜色的增益gain[c]的使用。
开始于步骤339,时域滤波***336(图26)接收位于图像数据的当前帧的空间位置(j,i)的当前像素x(t)。在步骤340,至少部分地基于来自图像数据的前一帧(例如紧挨在当前帧之前的图像帧)的一个或多个同位置参考像素(例如r(t-1))来为当前像素x(t)确定运动增量值d(t)。步骤340与图23中的步骤317类似,并且可以利用如上述等式1所示的运算。
接着,在步骤341,可使用运动增量值d(t)和来自前一帧的与空间位置(j,i)相对应的运动历史输入值h(t-1)(例如对应于同位参考像素r(t-1))来确定运动表查找索引。此后在步骤342,可基于当前输入像素的颜色从可用的运动表(例如304a、304b、304c)之一中选择第一滤波器系数K。例如,一旦识别出合适的运动表,可使用在步骤341中确定的运动表查找索引选择第一滤波器系数K。
在选择了第一滤波器系数K之后,如步骤343所示,选择对应于当前颜色的亮度表,并且基于当前像素x(t)的值从选择的亮度表中选择衰减因子。此后,在步骤344,基于衰减因子(来自步骤343)和第一滤波器系数K(步骤342)确定第二滤波器系数K’。接着,在步骤345,基于第二滤波器系数K’(来自步骤344)、同位置的参考像素r(t-1)的值和输入像素x(t)的值来确定对应于当前输入像素x(t)的时域滤波输出值y(t)。虽然图27所示的技术实现起来可能成本更高(例如因为需要用于存储附加的运动和亮度表的存储器),但在某些情况下,其可以对重影伪像和自动白平衡增益之后的不同颜色间的一致性提供进一步的改善。
依照另一个实施例,由时域滤波器298提供的时域滤波处理可以利用依赖于颜色的增益和特定于颜色的运动和/或亮度表的组合以对输入像素应用时域滤波。例如,在这样的一个实施例中,为所有颜色分量提供单个运动表,并且可基于依赖于颜色的增益来确定用于从运动表中选择第一滤波系数(K)的运动表查找索引(例如如图25中的步骤331-332所示),而亮度表查找索引则可不被应用以依赖于颜色的增益,而是可被用于从依赖于当前输入像素的颜色的多个亮度表之一中选择明亮度衰减因子(例如如图27所示的步骤343)。作为替换,在另一个实施例中,可提供多个运动表,并且可使用运动表查找索引(没有应用依赖于颜色的增益)从对应于当前输入像素的颜色的运动表中选择第一滤波系数(K)(例如如图27所示的步骤342),然而可为所有颜色分量提供单个亮度表,并且其中可基于依赖于颜色的增益来确定用于选择明亮度衰减因子的亮度表查找索引(例如,如图25所示的步骤333-334)。此外,在其中利用拜耳滤色器阵列的一个实施例中,可以分别为红色(R)和蓝色(B)颜色分量提供一个运动表和/或亮度表,而可以为两个绿色颜色分量(Gr和Gb)提供共用的运动表和/或亮度表。
随后可将时域滤波器298的输出发送到像素合并补偿滤波器(BCF)300,后者可被配置为处理图像像素以补偿因(一个或多个)图像传感器90a或90b的像素合并所导致的颜色采样的非线性分布(例如不均匀空间分布),使得随后在ISP流水逻辑82中的依赖于颜色采样的线性分布的图像处理操作(例如解马赛克等)能够正确运行。例如,现在参考图28,描绘了拜耳图像数据的全分辨率采样346。其可表示由耦合到ISP前端处理逻辑80的图像传感器90a(或90b)捕捉的全分辨率采样原始图像数据。
将明了的是,在特定的图像捕捉条件下,将由图像传感器90a捕捉的全分辨率图像数据发送到ISP电路32以供处理可能是不实际的。例如,当捕捉视频数据时,为了保证从人眼看来的流畅运动图像,期望至少每秒约30帧的帧速率。然而,如果全分辨率采样的每一帧中包含的像素数据量在以每秒30帧进行采样时超过ISP电路32的处理能力,则可以与由图像传感器90a执行的像素合并一起应用像素合并补偿滤波以降低图像信号的分辨率,同时还提高信噪比。例如,如上所述,可以通过对原始帧278的活动区域280内的周围像素的值进行平均来应用各种像素合并技术,例如2×2像素合并,以生成“经像素合并的”原始图像像素。
参考图29,例示了依照一个实施例的可被配置为对图28的全分辨率图像数据346进行像素合并以生成图30所示的对应的经像素合并的原始图像数据358的图像传感器90a的一个实施例。如图所示,图像传感器90a可以捕捉全分辨率原始图像数据346。像素合并逻辑357可被配置为对全分辨率原始图像数据346应用像素合并以生成经像素合并的原始图像数据358,该数据358可使用传感器接口94a而被提供给ISP前端处理逻辑80,该传感器接口94a如上所述可以是SMIA接口或任何其他合适的并行或串行相机接口。
如图30所示,像素合并逻辑357可对全分辨率原始图像数据346应用2×2像素合并。例如,对于经像素合并的图像数据358,像素350、352、354和356可形成拜耳模式,并且可以通过对来自全分辨率原始图像数据346的像素的值进行平均而被确定。例如,参考图28和30,经像素合并的Gr像素350可被确定为全分辨率Gr像素350a-350d的平均值或中间值。类似的,经像素合并的R像素352可被确定为全分辨率R像素352a-352d的平均值,经像素合并的B像素354可被确定为全分辨率B像素354a-354d的平均值,经像素合并的Gb像素356可被确定为全分辨率Gb像素356a-356d的平均值。因此,在本实施例中,2×2像素合并可提供包括四个全分辨率像素的集合,其包括左上(例如350a)、右上(例如350b)、左下(例如350c)和右下(例如350d)像素,它们被平均以导出位于由这四个全分辨率像素的集合形成的正方形的中心的经像素合并的像素。因此,如图30所示的经像素合并的拜耳块348包含四个“超像素(superpixel)”,其表示图28的拜耳块348a-348d中包含的16个像素。
除了降低空间分辨率,像素合并还具有降低图像信号中的噪声的附加优点。例如,只要图像传感器(例如90a)暴露于光信号,就可能会有一定量的噪声,例如与图像相关联的光子噪声。该噪声可以是随机的或***的,并且其还可能来自多种源。因此包含在由图像传感器捕捉的图像中的信息量可被表达为信噪比。例如,每当图像被图像传感器90a捕捉到并被传送到处理电路(例如ISP电路32)时,在像素值内就可能会有一定程度的噪声,这是因为图像数据的读取和传输处理固有地将“读取噪声”引入到图像信号中。这类“读取噪声”可以是随机的,并且通常是无法避免的。通过使用四个像素的平均,一般可以降低噪声(例如光子噪声)而不考虑噪声源。
因此,当考虑图28的全分辨率图像数据346时,拜耳模式(2×2块)348a-348d各自包含四个像素,每个像素包含信号和噪声分量。如果分开读取在例如拜耳块348a中的每个像素,则呈现四个信号分量和四个噪声分量。然而,通过应用如图28和30的像素合并,使得四个像素(例如350a、350b、350c、350d)可被表示为经像素合并的图像数据中的单个像素(例如350),在全分辨率图像数据346中被四个像素占用的相同面积可作为单个像素被读取,其仅具有噪声分量的一个实例,从而改善信噪比。
此外,虽然本实施例将图29的像素合并逻辑357描绘成被配置为应用2×2像素合并处理,但是应当明了的是像素合并逻辑357可被配置为应用任何适合类型的像素合并处理,例如3x3像素合并、垂直像素合并、水平像素合并等。在一些实施例中,图像传感器90a可被配置为在图像捕捉处理期间在不同像素合并模式之间进行选择。此外,在另外的实施例中,图像传感器90a还可被配置为应用一种被称为“跳过(skipping)”的技术,其中代替对像素采样取平均,逻辑357仅从全分辨率数据346中选择某些像素(例如每两个像素进行选择,每三个像素进行选择等)以输出到ISP前端80以供处理。此外,虽然图29仅示出图像传感器90a,但是应当明了可以通过相似的方式来实现图像传感器90b。
同样如图30所描绘的,像素合并处理的一个影响在于经像素合并的像素的空间采样可能不具有相等的间隔。在一些***中,这样的空间失真可导致通常不期望的混叠(例如锯齿状边缘)。此外,因为ISP流水逻辑82中的某些图像处理步骤可能依赖于颜色采样的线性分布以进行正确的操作,所以可以应用像素合并补偿滤波器(BCF)300以执行经像素合并的像素的重新采样和重新定位,使得经像素合并的像素具有均匀的空间分布。也就是说,BCF300通过对采样(例如像素)位置的重新采样而实质上补偿不均匀的空间分布(例如图30所示)。例如,图31例示了在经由BCF300处理之后的经像素合并的图像数据360的重新采样部分,其中包含均匀分布的重新采样像素362、363、364和365的拜耳块361分别对应于来自图30的经像素合并的图像数据358的经像素合并的像素350、352、354和356。此外,在利用如上所述的跳过(例如,代替像素合并)的实施例中,如图30所示的空间失真可能不会出现。在这样的情况下,BCF300可起到低通滤波器的作用,以减少当图像传感器90a采用跳过时可能导致的伪影(例如混叠)。
图32示出了依照一个实施例的像素合并补偿滤波器300的方框图。BCF300可以包括像素合并补偿逻辑366,其可以处理经像素合并的像素358以分别通过使用水平缩放逻辑368和垂直缩放逻辑370来应用水平和垂直缩放,以重新采样和重新定位经像素合并的像素358,从而以空间均匀分布来排列这些像素,如图31所示。在一个实施例中,可使用水平和垂直多抽头多相滤波来执行由BCF300的执行的(一个或多个)缩放操作。例如,滤波处理可包括从输入源图像数据(例如由图像传感器90a提供的经像素合并的图像数据358)中选择合适的像素,将选择的像素中的每一个乘上滤波系数,以及将得到的值相加以在期望目的地形成输出像素。
可以使用其中一个用于垂直缩放、一个用于水平缩放的分开的微分分析器372,来确定在缩放操作中使用的像素的选择,其可包括相同颜色的中心像素和周围的邻居像素。在所描绘的实施例中,微分分析器372可以是数字微分分析器(DDA),并且可以被配置为在缩放操作期间在垂直和水平方向上控制当前输出像素位置。在本实施例中,第一DDA(被称为372a)被用于水平缩放期间的所有颜色分量,而第二DDA(被称为372b)则被用于垂直缩放期间的所有颜色分量。仅作为示例,DDA372被提供为32位数据寄存器,其包含具有16位整数部分和16位分数部分的二进制补码定点数。16位整数部分可被用于确定输出像素的当前位置。DDA372的分数部分可被用于确定当前索引或相位,而当前索引或相位可基于当前DDA位置的像素间分数位置(例如对应于输出像素的空间位置)。索引或相位可被用于从滤波器系数表374的集合中选择合适的系数集合。此外,可以使用相同颜色的像素来完成每个颜色分量的滤波。因此,可以不仅基于当前DDA位置的相位还基于当前像素的颜色来选择滤波系数。在一个实施例中,在每个输入像素之间可存在8个相位,因此垂直和水平缩放部件可利用8深度系数表,由此16位分数部分的3个高位被用于表达当前相位或索引。因此,应当理解的是,正如在这里所使用的,术语“原始图像”数据或类似的术语指的是由具有覆盖有滤色器阵列模式(例如拜耳)的单个传感器所获取的多颜色图像数据,这在一个平面内提供了多个颜色分量。在另一个实施例中,对于每个颜色分量可使用单独的DDA。例如,在这样的实施例中,BCF300可从原始图像数据中提取R、B、Gr和Gb分量,并且可以将每个分量作为单独的平面来处理。
操作中,水平和垂直缩放可包括初始化DDA372和使用DDA372的整数及分数部分来执行多抽头多相滤波。虽然被分开执行并使用分开的DDA,但水平和垂直缩放操作可通过类似的方式来执行。步进值或步进大小(用于水平缩放的DDAStepX和用于垂直缩放的DDAStepY)确定在每个输出像素被确定之后DDA值(currDDA)的增量大小,并且使用下一个currDDA值重复多抽头多相滤波。例如,如果步进值小于1,则放大图像,如果步进值大于1,则缩小图像。如果步进值等于1,则不发生缩放。此外,应当注意的是,对于水平和垂直缩放可以使用相同的或不同的步进大小。
由BCF300以与输入像素相同的顺序(例如使用拜耳模式)生成输出像素。在本实施例中,可基于输入像素的排序将其分类为偶数或奇数。例如,参考图33,例示了基于多个DDAStep值(行376-380)的输入像素位置(行375)和对应的输出像素位置的图形描述。在这个示例中,所描绘的行表示在原始拜耳图像数据中的红色(R)和绿色(Gr)像素的行。为了进行水平滤波,在行375中处于位置0.0的红色像素可被认为是偶数像素,在行375中处于位置1.0的绿色像素可被认为是奇数像素,以此类推。对于输出像素位置,可基于在DDA372中的分数部分(低16位)中的最低有效位来确定偶数和奇数像素。例如,假设如行377所示的1.25的DDAStep,最低有效位对应于DDA的位14,因为该位指定0.25的分辨率。于是,在DDA位置(currDDA)0.0的红色输出像素可被认为是偶数像素(最低有效位,位14为0),在currDDA1.0的绿色输出像素(位14为1)可被认为是奇数像素,以此类推。此外,虽然关于水平方向的滤波(使用DDAStepX)讨论了图33,但是应当理解关于垂直滤波(使用DDAStepY),也可应用相同的方式来确定偶数和奇数的输入和输出像素。在其他实施例中,DDA372还可被用来追踪输入像素的位置(例如,而不是追踪期望的输出像素位置)。此外,应当明了,DDAStepX和DDAStepY可被设为相同或不同的值。此外,假设使用拜耳模式,则应当注意由BCF300所使用的开始像素可以是Gr、Gb、R或B像素中的任何一个,这例如取决于哪个像素位于活动区域280的一角。
带着这样的思想,偶数/奇数输入像素被用于分别生成偶数/奇数输出像素。假设输出像素位置在偶数和奇数位置之间交替,通过将DDA舍入到用于偶数或奇数输出像素位置(基于DDAStepX)的最接近的偶数或奇数输入像素位置来分别确定用于滤波目的的中心源输入像素位置(此处被称为“currPixel”)。在一个其中DDA372a被配置为使用16位以表示整数,使用16位以表示分数的实施例中,可使用以下的等式6a和6b来确定用于偶数和奇数currDDA位置的currPixel:
可基于以下数值的位[31:16]来确定偶数输出像素位置:
(currDDA+1.0)&0xFFFE.0000(6a)
可基于以下数值的位[31:16]来确定奇数输出像素位置:
(currDDA)|0x0001.0000(6b)
实质上,上述等式表示舍入运算,籍此,通过currDDA所确定的偶数和奇数输出像素位置被分别舍入到最接近的偶数和奇数输入像素位置,以用于currPixel的选择。
此外,还可在每个currDDA位置处确定当前索引或相位(currIndex)。如上所述,索引或相位值表示输出像素位置相对于输入像素位置的分数像素间位置。例如,在一个实施例中,可在每个输入像素位置之间定义8个相位。例如,再次参考图33,在位于位置0.0的第一红色输入像素和位于位置2.0的下一个红色输入像素之间提供8个索引值0-7。类似地,在位于位置1.0的第一绿色输入像素和位于位置3.0的下一个绿色输入像素之间提供8个索引0-7。在一个实施例中,可依照以下的等式7a和7b来分别确定用于偶数和奇数输出像素位置的currIndex值:
可基于以下数值的位[16:14]来确定偶数输出像素位置:
(currDDA+0.125)(7a)
可基于以下数值的位[16:14]来确定奇数输出像素位置:
(currDDA+1.125)(7b)
对于奇数位置,额外的1像素位移等效于增加4的偏移量给用于奇数输出像素位置的系数索引,以计及对于DDA372,不同颜色分量之间的索引偏移量。
一旦已在一具体currDDA位置确定currPixel和currIndex,滤波处理就可基于currPixel(所选择的中心输入像素)来选择一个或多个相邻的相同颜色像素。作为示例,在一个其中水平缩放逻辑368包括5抽头多相滤波器,并且垂直缩放逻辑370包括3抽头多相滤波器的实施例中,在水平方向上处于currPixel每一侧的两个相同颜色的像素可被选择用于进行水平滤波(例如-2、-1、0、+1、+2),并且在垂直方向上处于currPixel每一侧的一个相同颜色的像素可被选择用于进行垂直滤波(例如-1、0、+1)。此外,currIndex可被用作选择索引以从滤波器系数表374中选择合适的滤波系数以应用于所选择的像素。例如,使用5抽头水平滤波/3抽头垂直滤波实施例,可以为水平滤波提供五个8深度表,并且可以为垂直滤波提供三个8深度表。虽然只例示了BCF300的一部分,但应明了在特定实施例中,滤波器系数表374可被存储在与BCF300物理分离的存储器,例如存储器108中。
在进一步详细讨论水平和垂直缩放操作之前,以下的表4示出了如何基于各种DDA位置使用不同DDAStep值来确定currPixel和currIndex值的例子(例如可应用到DDAStepX或DDAStepY)。
表4:像素合并补偿滤波器-用于currPixel和currIndex计算的DDA示例
为了提供一个例子,让我们假设选择1.5的DDA步进大小(DDAStep)(图33的行378),其当前DDA位置(currDDA)开始于0,这指示偶数输出像素位置。为了确定currPixel,可以应用等式6a,如下所示:
currDDA=0.0(偶数)
0000000000000001.0000000000000000(currDDA+1.0)
(AND)1111111111111110.0000000000000000(0xFFFE.0000)
=0000000000000000.0000000000000000
currPixel(根据结果的位[31:16]而确定)=0
因此,在currDDA位置0.0(行378),用于滤波的源输入中心像素对应于在行375的位置0.0的红色输入像素。
为了确定在偶数currDDA0.0的currIndex,可以应用等式7a,如下所示:
currDDA=0.0(偶数)
0000000000000000.0000000000000000(currDDA)
+0000000000000000.0010000000000000(0.125)
=0000000000000000.0010000000000000
currIndex(根据结果的位[16:14]而确定)=[000]=0
因此,在currDDA位置0.0(行378),为0的currIndex值可被用来从滤波器系数表374中选择滤波系数。
因此,可以基于所确定的在currDDA0.0的currPixel和currIndex来应用滤波(基于DDAStep是在X(水平)还是在Y(垂直)方向,其可以是垂直的或水平的),DDA372被增量DDAStep(1.5),并且下一个currPixel和currIndex值被确定。例如,在下一个currDDA位置1.5(奇数位置),可使用等式6b来确定currPixel,如下所示:
currDDA=0.0(奇数)
0000000000000001.1000000000000000(currDDA)
(OR)0000000000000001.0000000000000000(0x0001.0000)
=0000000000000001.1000000000000000
currPixel(根据结果的位[31:16]而确定)=1
因此,在currDDA位置1.5(行378),用于滤波的源输入中心像素对应于在行375的位置1.0的绿色输入像素。
进一步地,可使用等式7b来确定在奇数currDDA1.5的currIndex,如下所示:
currDDA=1.5(奇数)
0000000000000001.1000000000000000(currDDA)
+0000000000000001.0010000000000000(1.125)
=0000000000000010.1010000000000000
currIndex(根据结果的位[16:14]而确定)=[010]=2
因此,在currDDA位置1.5(行378),为2的currIndex值可被用来从滤波器系数表374中选择合适的滤波系数。于是可使用这些currPixel和currIndex值来应用滤波(基于DDAStep是在X(水平)还是在Y(垂直)方向,其可以是垂直的或水平的)。
接着,DDA372再次被增量DDAStep(1.5),得到为3.0的currDDA值。可使用等式6a来确定对应于currDDA3.0的currPixel,如下所示:
currDDA=3.0(偶数)
0000000000000100.0000000000000000(currDDA+1.0)
(AND)1111111111111110.0000000000000000(0xFFFE.0000)
=0000000000000100.0000000000000000
currPixel(根据结果的位[31:16]而确定)=4
因此在currDDA位置3.0(行378),用于滤波的源输入中心像素对应于在行375的位置4.0的红色输入像素。
接着,可使用等式7a来确定在偶数currDDA3.0的currIndex,如下所示:
currDDA=3.0(偶数)
0000000000000011.0000000000000000(currDD
+0000000000000000.0010000000000000(0.125)
=0000000000000011.0010000000000000
currIndex(根据结果的位[16:14]而确定)=[100]=4
因此,在currDDA位置3.0(行378),为4的currIndex值可被用来从滤波器系数表374中选择合适的滤波系数。将明了的是,对于每个输出像素,DDA372将继续被增量DDAStep,并且可使用为每个currDDA值确定的currPixel和currIndex来应用滤波(基于DDAStep是在X(水平)还是在Y(垂直)方向,其可以是垂直的或水平的)。
如上所述,currIndex可被用作选择索引以从滤波器系数表374中选择合适的滤波系数,以应用到选择的像素。滤波处理可包括获取在中心像素(currPixel)周围的源像素值,将所选择的像素的每一个乘上基于currIndex从滤波器系数表374中选择的合适的滤波系数,以及将结果相加以得到在对应于currDDA的位置的输出像素的值。此外,因为本实施例在相同颜色像素之间使用8个相位,所以使用5抽头水平/3抽头垂直滤波实施例,可为水平滤波提供五个8深度表,并且可为垂直滤波提供三个8深度表。在一个实施例中,每个系数表条目可包括具有3个整数位和13个分数位的16位的二进制补码定点数。
此外,在一个实施例中,假设使用拜耳图像模式,垂直缩放部件可包括四个分开的3抽头多相滤波器,各自用于一个颜色分量:Gr、R、B和Gb。如上所述,每个3抽头滤波器可使用DDA372来控制当前中心像素的步进和用于系数的索引。同样,水平缩放部件可包括四个分开的5抽头多相滤波器,各自用于一个颜色分量:Gr、R、B和Gb。每个5抽头滤波器可使用DDA372来控制当前中心像素的步进(例如通过DDAStep)和用于系数的索引。然而,应当理解的是,在其他实施例中水平和垂直缩放器可利用更少或更多的抽头。
对于边界的情况,水平和垂直滤波处理中所使用的像素可取决于当前DDA位置(currDDA)与帧边界(例如在图19中由活动区域280定义的边界)之间的关系。例如,在水平滤波中,如果currDDA位置在与中心输入像素的位置(SrcX)和帧的宽度(SrcWidth)(例如图19的活动区域280的宽度290)相比较后,表明DDA372靠近边界,使得没有足够的像素来执行5抽头滤波,那么可以重复相同颜色的输入边界像素。例如,如果选择的中心输入像素在帧的左边缘,那么可对中心像素进行两次复制以进行水平滤波。如果输入像素靠近帧的左边缘,使得在中心输入像素和左边缘之间仅有一个像素可用,那么为了进行水平滤波,复制那一个可用的像素以给中心输入像素的左边提供两个像素值。此外,水平缩放逻辑368可被配置为使得输入像素的数量(包括初始的和复制的像素)不能超过输入宽度。其可由以下表示:
StartX=(((DDAInitX+0x0001.0000)&0xFFFE.0000)>>16)
EndX=(((DDAInitX+DDAStepX*(BCFOutWidth-1))|0x0001.0000)>>16)
EndX-StartX<=SrcWidth-1
其中,DDAInitX表示DDA372的初始位置,DDAStepX表示在水平方向上的DDA步进值,BCFOutWidth表示由BCF300输出的帧的宽度。
对于垂直滤波,如果currDDA位置在与中心输入像素的位置(SrcY)和帧的宽度(SrcHeight)(例如图19的活动区域280的宽度290)相比较后,表明DDA372靠近边界,使得没有足够的像素来执行3抽头滤波,那么可以重复输入边界像素。此外,可配置垂直缩放逻辑370以使得输入像素的数量(包括初始的和复制的像素)不能超过输入高度。其可由以下表示:
StartY=(((DDAInitY+0x0001.0000)&0xFFFE.0000)>>16)
EndY=(((DDAInitY+DDAStepY*(BCFOutHeight-1))|0x0001.0000)>>16)
EndY-StartY<=SrcHeight-1
其中,DDAInitY表示DDA372的初始位置,DDAStepY表示在垂直方向上的DDA步进值,BCFOutHeight表示由BCF300输出的帧的高度。
现在参考图34,描绘了依照一个实施例用于对由前端像素处理单元130接收到的图像数据应用像素合并补偿滤波的方法382的流程图。将明了的是,如图34所示的方法382可应用到垂直和水平缩放。其开始于步骤383,初始化DDA372并确定DDA步进值(其可对应于用于水平缩放的DDAStepX和用于垂直缩放的DDAStepY)。接着,在步骤384,基于DDAStep确定当前DDA位置(currDDA)。如上所述,currDDA可对应于输出像素位置。如步骤385所示,使用currDDA,方法382可从输入像素数据中确定中心像素(currPixel),其可被用于像素合并补偿滤波以确定在currDDA的相应的输出值。随后,在步骤386,可基于在currDDA相对于输入像素(例如,图33的行375)的分数形式的像素间位置来确定对应于currDDA的索引(currIndex)。作为示例,在一个其中DDA包括16个整数位和16个分数位的实施例中,可依照等式6a和6b来确定currPixel,并依照等式7a和7b来确定currIndex,如上所述的那样。此处描述的16位整数/16位分数配置仅是一个示例,应当明了的是可依照本技术来利用DDA372的其他配置。作为示例,DDA372的其他实施例可被配置为包括12位整数部分和20位分数部分、14位整数部分和18位分数部分等。
一旦确定了currPixel和currIndex,如步骤387所示,可选择在currPixel周围的相同颜色的源像素以进行多抽头滤波。例如,如上所示,一个实施例可在水平方向利用5抽头多相滤波(例如在currPixel每一侧选择2个相同颜色的像素)以及在垂直方向利用3抽头多相滤波(例如在currPixel每一侧选择1个相同颜色的像素)。接着,在步骤388,一旦选择了源像素,可基于currIndex从BCF300的滤波器系数表374中选择滤波系数。
此后,在步骤389,可对源像素应用滤波以确定与由currDDA表示的位置相对应的输出像素的值。例如,在一个实施例中,可将源像素乘上它们各自的滤波系数,并可将结果相加以获得输出像素值。依赖于DDAStep是在X(水平)还是Y(垂直)方向上,在步骤389中应用滤波的方向可以是垂直的或水平的。最后,在步骤390中将DDA372增加DDAStep,并且方法382返回到步骤384,由此使用此处讨论的像素合并补偿滤波技术来确定下一个输出像素值。
参考图35,依照一个实施例更详细例示了方法382中用于确定currPixel的步骤385。例如,步骤385可包括确定对应于currDDA(来自步骤384)的输出像素位置是偶数还是奇数的子步骤392。如上所述,可根据基于DDAStep的currDDA的最低有效位来确定是偶数还是奇数输出像素。例如,给定1.25的DDAStep,1.25的currDDA值可被确定为奇数,因为最低有效位(对应于DDA372的分数部分的位14)的值为1。对于2.5的currDDA值,位14为0,因此表示是偶数输出像素位置。
在判定逻辑393,作出对应于currDDA的输出像素位置是偶数还是奇数的确定。如果输出像素是偶数,判定逻辑393继续到子步骤394,如以上的等式6a所示,其中通过将currDDA的值增加1,并将结果舍入到最接近的偶数输入像素位置来确定currPixel。如果输出像素是奇数,则判定逻辑393继续到子步骤395,如以上等式6b所示,其中通过将currDDA的值舍入到最接近的奇数输入像素位置来确定currPixel。如上所述,可接着将currPixel值应用到方法382的步骤387以选择用于滤波的源像素。
还参考图36,依照一个实施例更详细例示了方法382中用于确定currIndex的步骤386。例如,步骤386可包括用于确定对应于currDDA(来自步骤384)的输出像素位置是偶数还是奇数的子步骤396。可以通过与图35的步骤392相似的方法来执行该确定。在判定逻辑397,作出对应于currDDA的输出像素位置是偶数还是奇数的确定。如果输出像素是偶数,判定逻辑397继续到子步骤398,其中通过将currDDA值增加一个索引步长,基于DDA372的最低整数位和两位最高分数位来确定currIndex。例如,在一个实施例中,其中在每个相同颜色像素之间提供8个相位,并且其中DDA包括16个整数位和16个分数位,一个索引步长可对应于0.125,并且可基于增加了0.125的currDDA值的位[16:14]来确定currIndex(例如等式7a)。如果输出像素是奇数,判定逻辑397继续到子步骤399,其中通过将currDDA值增加一个索引步长和一个像素移位,并且基于DDA372的最低整数位和两位最高分数位来确定currIndex。因此,在一个实施例中,其中在每个相同颜色像素之间提供8个相位,并且其中DDA包括16个整数位和16个分数位,一个索引步长可对应于0.125,一个像素移位可对应于1.0(移位8个索引步长则到达下一个相同颜色像素),并且可基于增加了1.125的currDDA值的位[16:14]来确定currIndex(例如等式7b)。
虽然这里所示的实施例提供BCF300作为前端像素处理单元130的部件,但其他实施例可将BCF300并入到以下将讨论的ISP流水82的原始图像数据处理流水线中,ISP流水82可包括缺陷像素检测/校正逻辑、增益/偏移/补偿块、降噪逻辑、镜头明暗校正逻辑和解马赛克逻辑。此外,在以上提及的缺陷像素检测/校正逻辑、增益/偏移/补偿块、降噪逻辑、镜头明暗校正逻辑不依赖于像素的线性分布的实施例中,BCF300可并入解马赛克逻辑,以在解马赛克之前执行像素合并补偿滤波和像素的重新定位,因为解马赛克一般依赖于像素的均匀空间排列。例如,在一个实施例中,BCF300可被并入到传感器输入和解马赛克逻辑之间的任何位置,并且在像素合并补偿之前对原始图像数据应用时域滤波和/或缺陷像素检测/校正。
如上所述的,BCF300的输出可以是具有空间均匀分布的图像数据(例如图31的采样360)的输出FEProcOut(109),该输出可被传递到ISP流水处理逻辑82以供其他处理。然而,在将该讨论的焦点转移到ISP流水处理逻辑82之前,首先将给出对可在ISP前端逻辑80中实现的统计处理单元(例如122和124)可提供的各种功能的更详细描述。
重新参考统计处理单元120和122的一般描述,这些单元可被配置为收集关于捕捉并提供原始图像信号(Sif0和Sif1)的图像传感器的各种统计信息,例如关于自动曝光、自动白平衡、自动对焦、闪烁检测、黑度补偿和镜头明暗校正等的统计信息。因此,统计处理单元120和122首先可向它们各自的输入信号Sif0(来自传感器0)和Sif1(来自传感器1)应用一个或多个图像处理操作。
例如,参考图37,例示了依照一个实施例的与传感器0(90a)相关联的统计处理单元120的更详细方框图视图。如图所示,统计处理单元120可包括以下功能块:缺陷像素检测和校正逻辑460、黑度补偿(BLC)逻辑462、镜头明暗校正逻辑464、逆BLC逻辑466和统计信息收集逻辑468。以下将讨论这些功能块的每一个。此外,应当理解的是可以通过类似的方式来实现与传感器1(90b)相关联的统计处理单元122。
首先,通过前端缺陷像素校正逻辑460来接收选择逻辑124的输出(Sif0或SifIn0)。将明了的是,“缺陷像素”可以理解为在图像传感器90内的无法准确感应光水平的成像像素。缺陷像素可归咎于一些因素,并且其可包括“燥点(hotpixel)”(或漏电像素)、“亮点(stuckpixel)”和“坏点(deadpixel)”。“燥点”一般表现为比对于在相同空间位置的给予相同光亮的非缺陷像素更亮。燥点的产生可归因于重置失败和/或高泄漏。例如,燥点可呈现出比非缺陷像素的正常电荷泄漏更高的电荷泄漏,因此可能比非缺陷像素表现得更亮。此外,“坏点”和“亮点”可能是诸如灰尘或其他微量材料之类的杂质在制造和/或装配过程中污染了图像传感器的结果,其可导致某些缺陷像素比非缺陷像素更暗或更亮,或者可导致缺陷像素固定在特定值而不管其实际曝光的光量。此外,在图像传感器操作期间发生的电路故障也可导致坏点和亮点。作为示例,亮点可以看上去为常开(全充电)并且因此看上去更亮,而坏点则看上去为常关。
在ISP前端逻辑80中的缺陷像素检测和校正(DPDC)逻辑460可在统计信息收集(例如468)中考虑缺陷像素之前对这些缺陷像素进行校正(例如替换缺陷像素值)。在一个实施例中,对于每个颜色分量(例如拜耳模式的R、B、Gr和Gb)独立地执行缺陷像素校正。一般来说,前端DPDC逻辑460可提供动态缺陷校正,其中可基于使用相同颜色的相邻像素算出的方向性梯度来自动地确定缺陷像素的位置。将理解的是,在给定时刻将某个像素认为是有缺陷的像素可取决于相邻像素中的图像数据,在此意义上缺陷可以是“动态的”。作为示例,如果总是处于最大亮度的亮点的位置处于当前图像的由更亮颜色或白色主导的区域内,那么该亮点可能不会被认为是缺陷像素。相反,如果亮点处于当前图像的由黑色或更暗颜色主导的区域,则在由DPDC逻辑460处理期间该亮点可被识别为缺陷像素,并被相应地校正。
DPDC逻辑460可利用在当前像素每一侧的一个或多个具有相同颜色的水平相邻像素,使用像素至像素方向性梯度来确定当前像素是否有缺陷。如果当前像素被识别为缺陷的,可使用水平相邻像素的值来代替缺陷像素的值。例如,在一个实施例中,使用在原始帧278(图19)边界内的五个具有相同颜色的水平相邻像素,其中这五个水平相邻像素包括当前像素和每一侧的两个相邻像素。因此,如图38所示,对于给定的颜色分量c和当前像素P,DPDC逻辑460可考虑水平的邻居像素P0、P1、P2和P3。然而,应当注意的是,依赖于当前像素P的位置,当计算像素至像素梯度时,不考虑在原始帧278之外的像素。
例如,如图38所示,在“左边缘”情况470中,当前像素P位于原始帧278的最左边,因此不考虑在原始帧278之外的相邻像素P0和P1,仅留下像素P、P2和P3(N=3)。在“左边缘+1”情况472中,当前像素P离原始帧278的最左边一个单位像素,因此不考虑像素P0。仅留下像素P1、P、P2和P3(N=4)。此外,在“居中”情况474中,在当前像素P左侧的像素P0和P1和在当前像素右侧的像素P2和P3都处于原始帧278边界之内,因此在计算像素至像素梯度时考虑所有相邻像素P0、P1、P2和P3(N=5)。此外,还可遇到接近原始帧278的最右边的类似情况476和478。例如,在“右边缘-1”情况476中,当前像素P离原始帧278的最右边一个单位像素,因此不考虑像素P3(N=4)。同样的,在“右边缘”情况478中,当前像素P处于原始帧278的最右边,因此不考虑相邻像素P2和P3(N=3)。
在所示的实施例中,对于在图片(例如原始帧278)边界内的每个相邻像素(k=0至3),可如下计算像素至像素梯度:
Gk=abs(P-Pk),对于0≤k≤3(仅对于在原始帧内的k)(8)
一旦确定了像素至像素梯度,将由DPDC逻辑460执行如下的缺陷像素检测。首先,如果一定数量的像素梯度Gk等于或小于由变量dprTh表示的特定阈值,则假设该像素是有缺陷的。因此对于每个像素,图片边界内的相邻像素等于或小于阈值dprTh的梯度数量的计数(C)被累加。作为示例,对于原始帧278内的每个邻居像素,可如下的计算等于或小于阈值dprTh的梯度Gk的累加计数C:
对于0≤k≤3(仅对于在原始帧内的k)
将明了的是,取决于颜色分量,阈值dprTh可以是变化的。接着,如果累加的计数C被确定为小于或等于由变量dprMaxC表示的最大计数,则像素可被考虑为是有缺陷的。该逻辑由以下表示:
if(C≤dprMaxC),then像素是有缺陷的。(10)
使用多种替代约定来对缺陷像素进行替代。例如,在一个实施例中,可使用紧靠其左边的像素P1来代替缺陷像素。在一种边界情况下(例如P1位于原始帧278之外),可使用紧靠其右边的像素P2来代替缺陷像素。此外,应当理解的是,替代值可被保留或传播以用于后续的缺陷像素检测操作。例如,参考如图38所示的水平像素集合,如果P0或P1在之前被DPDC逻辑460识别为缺陷像素,则它们对应的替代值可被用于当前像素P的缺陷像素检测和替代。
为了总结上述的缺陷像素检测和校正技术,图39提供了描绘这种处理的流程图,并由参考标记480指代。如图所示,处理480开始于步骤482,其中接收当前像素(P)并识别一组邻居像素。依照以上所述的实施例,邻居像素可包括来自当前像素相对两侧的具有相同颜色分量的两个水平像素(例如P0、P1、P2和P3)。接着,在步骤484,如以上等式8所述,针对原始帧278内的每个相邻像素计算水平方向的像素至像素梯度。此后,在步骤486,确定小于或等于特定阈值dprTh的梯度的数量的计数C。如判定逻辑488所示,如果C小于或等于dprMaxC,则处理480继续到步骤490,并且当前像素被识别为有缺陷的。接着在步骤492使用替代值来校正缺陷像素。另外,再参考判定逻辑488,如果C大于dprMaxC,则处理继续到步骤494,并且当前像素被识别为没有缺陷,且其值不被改变。
应当注意的是在ISP前端统计处理期间应用的缺陷像素检测/校正技术可能比在ISP流水逻辑82中执行的缺陷像素检测/校正的鲁棒性要差。例如,如以下将进一步详细讨论的,在ISP流水逻辑82中执行的缺陷像素检测/校正除了动态缺陷校正之外还可提供固定缺陷校正,其中可先验得知缺陷像素的位置,并将其载入一个或多个缺陷表。此外,如下所述,在ISP流水逻辑82中的动态缺陷校正还可以考虑水平和垂直方向两者上的像素梯度,并且还可以提供对斑点(speckle)的检测/校正。
回到图37,DPDC逻辑460的输出随后被传送到黑度补偿(BLC)逻辑462。BLC逻辑462可为每个颜色分量“c”(例如拜耳的R、B、Gr和Gb)中用于统计信息收集的像素独立地提供数字增益、偏移和截短(clipping)。例如,如以下运算所示,首先通过带符号的值来偏移当前像素的输入值,接着将其乘上增益。
Y=(X+O[c])×G[c],(11)
其中X表示给定颜色分量c(例如R、B、Gr或Gb)的输入像素值,O[c]表示当前颜色分量c的带符号的16位偏移量,以及G[c]表示该颜色分量c的增益值。在一个实施例中,增益G[c]可以是具有2个整数位和14个分数位的16位无符号数(例如以浮点表示的2.14),并且可对增益G[c]应用舍入。仅作为示例,增益G[c]可具有在0至4X(例如输入像素值的四倍)之间的范围。
接着,如以下等式12所示,可将计算得到的带符号的值Y截短到最小值和最大值范围:
Y=(Y<min[c])?min[c]:(Y>max[c])?max[c]:Y)(12)
变量min[c]和max[c]分别表示最小和最大输出值的带符号的16位截短值。在一个实施例中,BLC逻辑462还可被配置成分别为每个颜色分量保存在最大值之上和在最小值之下而被截短的像素的数量的计数。
随后,BLC逻辑462的输出被转发到镜头明暗校正(LSC)逻辑464。LSC逻辑464可被配置为逐像素地应用合适的增益以补偿强度的衰落,该强度衰落一般大致正比于与成像设备30的镜头88的光学中心的距离。可以明了的是,这种衰落可能是镜头的几何光学的结果。作为示例,具有理想光学性质的镜头可被建模为入射角余弦的四次方,即cos4(θ),其被称为cos4定律。然而,由于镜头制造工艺并非完美,镜头中的各种不规则性可能导致光学性质偏离假设的cos4模型。例如,镜头的较薄的边缘(thinneredged)通常呈现最大的不规则性。另外,镜头明暗图案的不规则性也可能是在图像传感器内的微透镜阵列没有与滤色器阵列完美对齐的结果。此外,在一些镜头中的红外(IR)滤波器也可能导致衰落依赖于发光体,于是可以根据检测到的光源来调整镜头明暗增益。
参考图40,例示了用于描述典型镜头的光强度相对于像素位置的三维分布496。如图所示,光强度从镜头的中心498附近向镜头的角落或边缘500逐渐降低。可通过图41更好的例示图40中所描绘的镜头明暗不规则性,图41示出了展示向着角落和边缘而光强度降低的图像502的有色绘图。更具体的,应当注意的是在大致位于图像中心的光强度看上去比位于图像的角落和/或边缘的光强度更亮。
依据本技术的一些实施例,镜头明暗校正增益可被指定为每个颜色通道(例如用于拜耳滤波器的Gr、R、B、Gb)一个二维增益栅格。增益栅格点可在原始帧278(图19)内以固定的水平和垂直间隔分布。如以上图19所讨论的,原始帧278可包括活动区域280,其定义了由特定图像处理操作对其执行处理的区域。关于镜头明暗校正操作,在原始帧区域278内定义了可被称为LSC区域的活动处理区域。如以下将讨论的那样,LSC区域必须完全在增益栅格边界内或边界处,否则结果可能是不明确的。
例如,参考图42,示出了可在原始帧278内定义的LSC区域504和增益栅格506。LSC区域504可具有宽508和高510,并且可由相对于原始帧278边界的x偏移量512和y偏移量514来定义。还可提供从增益栅格506的基准520到LSC区域504内的第一个像素522的栅格偏移量(例如栅格x偏移量516和栅格y偏移量518)。这些偏移量可以位于用于给定颜色分量的第一栅格间隔内。可分别为每个颜色通道独立地指定水平(x方向)和垂直(y方向)栅格点间隔524和526。
如上所述,假设使用了拜耳滤色器阵列,则可定义4个具有栅格增益的颜色通道(R、B、Gr和Gb)。在一个实施例中,总共有4K(4096)个栅格点可用,并且例如可通过使用指示器,为每个颜色通道提供用于栅格增益的开始位置的基准地址。此外,还可以以在一个颜色平面的分辨率下的像素为单位来定义水平(524)和垂直(526)栅格点间隔,在特定实施例中,在水平和垂直方向上可分别提供2的幂(例如8、16、32、64或128等)个像素的栅格点间隔。可以明了的是,通过利用2的幂,可以使用移位(例如除法)和相加操作完成增益插值的有效实现。使用这些参数,即使图像传感器裁剪区域发生改变仍可使用相同的增益值。例如,只有少数参数需要被更新以将栅格点对齐到裁剪区域(例如更新栅格偏移量524和526),而非更新所有的栅格增益值。仅作为示例,这在数字变焦操作期间使用裁剪时可能是有益的。此外,虽然如图42的实施例所示的增益栅格506被描绘为具有基本相等间隔的栅格点,但是应当理解在其他实施例中,栅格点不是必须相等间隔。例如,在一些实施例中,栅格点可以非均匀地分布(例如对数分布),使得栅格点在LSC区域504的中心较不集中,而向着LSC区域的角落(通常在那里镜头明暗失真更容易被察觉)更为集中。
依照此处公开的镜头明暗校正技术,在当前像素位置位于LSC区域504之外时,不应用增益(例如像素未经改变地通过)。在当前像素位置位于增益栅格位置时,可以使用该特定栅格点处的增益值。然而,在当前像素位置位于栅格点之间时,可使用双线性插值来计算增益。以下图43提供了一种通过插值来计算像素位置“G”的增益的例子。
如图43所示,像素G位于栅格点G0、G1、G2和G3之间,G0、G1、G2和G3可分别对应于当前像素位置G的左上、右上、左下和右下增益。栅格间隔的水平和垂直大小分别由X和Y表示。另外,ii和jj分别表示相对于左上增益G0的位置的水平和垂直像素偏移量。基于这些因子,可如下插值计算对应于位置G的增益:
随后可组合以上等式13a中的各项以获得下述表达式:
在一个实施例中,可以增量方式执行该插值法,以代替对每个像素使用乘法器,从而降低计算复杂度。例如,可使用可在增益栅格506的位置(0,0)处被初始化为0并每次当前列号增大一个像素时以当前行号作为增量的加法器来实现项(ii)(jj)。如上所述,因为可将X和Y的值选为2的幂,于是可以使用简单的移位操作来实现增益插值。因此,仅在栅格点G0(而非每个像素)处需要乘法器,并且仅需要加法操作以确定用于剩下的像素的插值增益。
在特定实施例中,在栅格点之间的增益的插值可使用14位精度,且栅格增益可以是具有2个整数位和8个分数位的不带符号的10位值(例如2.8浮点表示)。使用该约定,增益可具有在0至4X之间的范围,并且在栅格点之间的增益分辨率可以是1/256。
镜头明暗校正技术可由图44所示的处理528进一步例示。如图所示,处理528开始于步骤530,其中确定当前像素相对于图42的LSC区域504边界的位置。接着,判定逻辑532确定当前像素位置是否在LSC区域504之内。如果当前像素位置在LSC区域504之外,处理528继续到步骤534,并且不对当前像素应用增益(例如,像素未经改变地通过)。
如果当前像素位置在LSC区域504之内,处理528继续到判定逻辑536,在此进一步确定当前像素位置是否对应于在增益栅格504内的栅格点。如果当前像素位置对应于栅格点,则如步骤538所示,选择在该栅格点的增益值并将其应用到当前像素。如果当前像素位置不对应于栅格点,则处理528继续到步骤540,并基于其周围的栅格点(例如图43的G0、G1、G2和G3)来进行插值得到增益。例如,可依照如上所述的等式13a和13b来计算插值增益。此后,处理528结束于步骤542,在此将来自步骤540的插值增益应用至当前像素。
将明了的是,可对图像数据的每个像素重复处理528。例如,如图45所示,例示了描绘可被应用到LSC区域(例如504)内的每个像素位置的增益的三维分布。如图所示,应用到图像角落544的增益通常可大于应用到图像中心546的增益,这是因为如图40和41所示,角落具有更大的光强度衰落。使用此处描述的镜头明暗校正技术,可以减少或基本上消除图像中呈现出的光强度衰落。例如,图46提供一个在应用了镜头明暗校正之后来自图41的图像502的有色图将如何呈现的例子。如图所示,相比于来自图41的初始图像,全幅图像的整体光强度基本上更为均匀。更具体的,在图像近似中心处的光强度可与在图像的角落和/或边缘处的光强度值大致地相等。另外,如上所述,在一些实施例中,插值增益的计算(等式13a和13b)可通过利用顺序的列和行增量结构而用栅格点之间的加性“增量”来代替。将明了的是,这会降低计算复杂度。
在进一步的实施例中,除了使用栅格增益,还为每个颜色分量使用一个全局增益,其根据与图像中心的距离而缩放。图像中心可被提供为输入参数,且可通过分析被均匀照明的图像内每个图像像素的光强度幅度而估计所述图像中心。如下所示,于是可以使用在识别的中心像素和当前像素之间的径向距离来获得经线性缩放的径向增益Gr:
Gr=Gp[c]×R,(14)
其中Gp[c]表示用于每个颜色分量c(例如拜耳模式的R、B、Gr和Gb分量)的全局增益参数,并且其中R表示中心像素和当前像素之间的径向距离。
参考示出了以上讨论的LSC区域504的图47,可使用多种技术来计算或估计距离R。如图所示,对应于图像中心的像素C可具有坐标(x0,y0),并且当前像素G可具有坐标(xG,yG)。在一个实施例中,LSC逻辑464可使用以下等式来计算距离R:
在另一个实施例中,可利用以下所示的更简单的估计公式来获得R的估计值:
R=α×max(abs(xG-x0),abs(yG-y0))+β×min(abs(xG-x0),abs(yG-y0))(16)
在等式16中,估计系数α和β可被缩放至8位值。仅作为示例,在一个实施例中,α可大致等于123/128,且β可大致等于51/128,以提供R的估计值。使用这些系数值,最大误差可大致为4%,中间误差大致为13%。因此,尽管该估计技术的准确度多少会低于利用计算技术(等式15)来确定R,但是误差幅度还是足够低以使得估计值或R适用于确定本发明镜头明暗校正技术的径向增益分量。
接着可将径向增益Gr乘上用于当前像素的经插值得到的栅格增益值G(等式13a和13b)以确定可被应用到当前像素的总增益。如下所示,通过将输入像素值X乘上总增益来获得输出像素Y:
Y=(G×Gr×X)(17)
因此,依照本技术,可仅使用插值增益或者使用插值增益和径向增益分量两者来执行镜头明暗校正。作为替换,可仅使用径向增益连同补偿径向近似误差的径向栅格表来完成镜头明暗校正。例如,可以提供具有定义径向和角向的增益的多个栅格点的径向增益栅格以代替如图42所示的矩形增益栅格506。因此,当确定增益要被应用到未与LSC区域504内的径向栅格点之一对齐的像素时,可以使用四个围绕该像素的栅格点来应用插值以确定合适的插值镜头明暗增益。
参考图48,由处理548例示了镜头明暗校正中插值和径向增益分量的使用。应当注意的是,处理548可以包括与在图44中描述的处理528相似的步骤。因而,这样的步骤被标记为相同的参考标号。其开始于步骤530,接收当前像素并确定其相对于LSC区域504的位置。接着,判定逻辑532确定当前像素位置是否处于LSC区域504之内。如果当前像素位置在LSC区域504之外,处理548继续到步骤534,并且不对当前像素应用增益(例如,像素未经改变地通过)。如果当前像素位置处于LSC区域504之内,则处理548可同时继续到步骤550和判定逻辑536。首先参考步骤550,检索用于识别图像中心的数据。如上所述,确定图像中心可包括分析在均匀照明下的像素的光强度幅度。例如,这可在校准期间发生。因此,应当理解的是步骤550没有必要包括为处理每个像素而重复计算图像中心,而是可涉及检索出先前确定的图像中心的数据(例如,坐标)。一旦识别了图像中心,处理548可继续到步骤552,其中确定图像中心和当前像素位置之间的距离(R)。如上所述,可以计算(等式15)或估计(等式16)R的值。接着,在步骤554,可使用距离R和与当前像素的颜色分量相对应的全局增益参数来计算径向增益分量Gr(等式14)。如以下将在步骤558要讨论的那样,径向增益分量Gr可被用于确定总增益。
参考回判定逻辑536,其确定当前像素位置是否对应于处于增益栅格504之内的栅格点。如果当前像素位置对应于栅格点,则如步骤556所示,确定在栅格点上的增益值。如果当前像素位置不对应于栅格点,则处理548继续到步骤540,并且基于其周围的栅格点(例如,图43的G0、G1、G2和G3)来计算插值增益。例如,可依照以上讨论的等式13a和13b来计算插值增益。接着,在步骤558,基于在步骤554确定的径向增益以及栅格增益(步骤556)或插值增益(540)之一来确定总增益。可以明了的是,这可取决于在处理548期间判定逻辑536采用哪一个分支。然后如步骤560所示,将总增益应用到当前像素。再次,应当注意的是,类似于处理528,也可以为图像数据的每个像素重复处理548。
径向增益连同栅格增益的使用可提供多种优点。例如,使用径向增益允许对所有颜色分量使用单个共用增益栅格。这将大大减少用于为每个颜色分量存储的单独的增益栅格所需要的总存储空间。例如,在拜耳图像传感器中,为所有R、B、Gr和Gb分量都使用单个增益栅格可以减少大约75%的增益栅格数据。将明了的是,栅格增益数据的这一减少可降低实现成本,因为栅格增益数据表可能会占用图像处理硬件中存储器或芯片区域的很大部分。此外,取决于硬件实现,使用单个增益栅格值集合还可提供其他优点,例如降低总芯片面积(例如当增益栅格值被存储在芯片上的存储器内时)以及降低存储器带宽需求(例如当增益栅格值被存储在芯片外的外部存储器内时)。
在透彻描述了如图37所示的镜头明暗校正逻辑464的功能后,LSC逻辑464的输出随后被转发给逆黑度补偿(IBLC)逻辑466。IBLC逻辑466为每个颜色分量(例如R、B、Gr和Gb)独立地提供增益、偏移和截短,并且通常执行BLC逻辑462的逆功能。例如,如以下运算所示,首先将输入像素值乘上增益,接着使用带符号的值进行偏移。
Y=(X×G[c])+O[c],(18)
其中X表示给定颜色分量c(例如R、B、Gr或Gb)的输入像素值,O[c]表示用于当前颜色分量c的带符号的16位偏移量,以及G[c]表示用于颜色分量c的增益值。在一个实施例中,增益G[c]可具有大约在0至4X(输入像素值X的四倍)之间的范围。应当注意的是,这些变量可以是如上所讨论的等式11中的相同变量。使用例如等式12,计算出的值Y可被截短到最小值和最大值范围。在一个实施例中,IBLC逻辑466可被配置成为每个颜色分量保存分别在最大值之上和在最小值之下而被截短的像素数量计数。
此后,由统计信息收集块468来接收IBLC逻辑466的输出,该统计信息收集块468可提供关于(一个或多个)图像传感器90的各种统计数据点的收集,例如关于自动曝光(AE)、自动白平衡(AWB)、自动对焦(AF)、闪烁检测等的统计数据点。带着这种想法,以下将参考图48-46提供统计信息收集块468以及其相关的多个方面的说明书特定实施例。
将明了的是,AWB、AE和AF统计信息可用于静态数码相机和视频摄像机的图像获取。为了简便,在此,可将AWB、AE和AF统计信息统称为“3A统计信息”。在图37中所示的ISP前端逻辑的实施例中,可以以硬件、软件或者两者组合方式来实现统计信息收集逻辑468(“3A统计逻辑”)的架构。此外,控制软件或固件可被用来分析由3A统计逻辑468收集的统计数据,并且控制镜头的各种参数(例如对焦长度)、传感器的各种参数(例如,模拟增益、积分时间)和ISP流水线82的各种参数(例如,数字增益、颜色校正矩阵系数)。在特定实施例中,图像处理电路32可被配置为对统计信息收集提供灵活性以使得控制软件或固件能够执行各种AWB、AE和AF算法。
关于白平衡(AWB),图像传感器在每个像素上的响应可以取决于照明源,因为光源从图像场景中的物体被反射。于是,图像场景中所记录的每个像素值与光源的色温有关。例如,图49示出了例示YCbCr颜色空间处于低色温和高色温下的白色区域的颜色范围的图570。如图所示,图570的x轴表示YcbCr颜色空间的蓝色差色度(Cb),并且图570的y轴表示YCbCr颜色空间的红色差色度(Cr)。图570还示出了低色温轴572和高色温轴574。轴572和574所位于的区域576表示YCbCr颜色空间中在低色温和高色温下的白色区域的颜色范围。然而应理解的是,YCbCr颜色空间仅是可结合本实施例的自动白平衡处理而使用的颜色空间的一个例子。其他实施例可使用任何合适的颜色空间。例如,在特定实施例中,其他合适的颜色空间可包括Lab(CLELab)颜色空间(例如基于CIE1976)、红/蓝归一化颜色空间(例如,R/(R+2G+B)和B/(R+2G+B)颜色空间、R/G和B/G颜色空间、Cb/Y和Cr/Y颜色空间等)。因此,为了本公开的目的,由3A统计逻辑468使用的颜色空间的轴可被称为C1和C2(如图49的情况)。
当以低色温照明白色物体时,该物体在被捕捉的图像中可能看上去偏红。反之,以高色温照明白色物体时,该物体在被捕捉的图像中可能看上去偏蓝。因此,白平衡的目的是调整RGB值,以使得图像在人眼看上去像是在规范光下拍摄的。于是,在关于白平衡的成像统计信息的情况中,收集关于白色物体的颜色信息以确定光源的色温。一般来说,白平衡算法可包括两个主要步骤。首先,估计光源的色温。其次,使用估计的色温来调整颜色增益值和/或确定/调整颜色校正矩阵的系数。这样的增益可以是模拟和数字图像传感器增益以及ISP数字增益的组合。
例如,在一些实施例中,可使用多个不同的参考发光体来校准成像设备30。因此,可通过选择对应于与当前场景的发光体最接近匹配的参考发光体的颜色校正系数来确定当前场景的白点。仅作为例子,在一个实施例中可使用五个参考发光体来校准成像设备30,这五个发光体是低色温发光体、中低色温发光体、中色温发光体、中高色温发光体和高色温发光体。如图50中所示,在一个实施例中可使用以下颜色校正概况来定义白平衡增益:水平光(H)(模拟大约2300度的色温)、白炽光(A或IncA)(模拟大约2856度的色温)、D50(模拟大约5000度的色温)、D65(模拟大约6500度的色温)以及D75(模拟大约7500度的色温)。
基于当前场景的发光体,可使用对应于与当前发光体最接近匹配的参考发光体的增益来确定白平衡增益。例如,如果统计逻辑468(以下将在图51中详细描述)确定了当前发光体大约与参考中色温发光体D50相匹配,则可分别对红色和蓝色颜色通道应用大约137和1.23的白平衡增益,同时基本没有增益(1.0)被应用到绿色通道(拜耳数据的G0和G1)。在一些实施例中,如果当前发光体色温处于两个参考发光体之间,则可经由内插这两个参考发光体之间的白平衡增益来确定白平衡增益。此外,虽然本例子示出了使用H、A、D50、D65和D75发光体来校准成像设备,但是应理解的是,任何合适类型的发光体都可用于相机校准,例如TL84或CWF(荧光参考发光体)等。
如同以下将描述的,可为AWB提供多种统计信息,包括二维(2D)颜色直方图、以及RGB或YCC总和,由此提供多个可编程的颜色范围。例如,在一个实施例中,统计逻辑468可提供一组多个像素滤波器,其中可为AWB处理选择该多个像素滤波器的子集。在一个实施例中,可提供各自具有不同的可配置参数的八组滤波器,并且可以为收集分块(tile)统计信息以及为每个浮动窗收集统计信息而从上述滤波器组中选择三组颜色范围滤波器。作为例子,第一选择的滤波器可被配置为覆盖当前色温以获得准确的颜色估计,第二选择的滤波器可被配置为覆盖低色温区域,以及第三选择的滤波器可被配置为覆盖高色温区域。该特定配置可使AWB算法能够随着光源的改变来调整当前色温区域。此外,2D颜色直方图可被用来确定全局和局部发光体,以及确定用于累积RGB值的各个像素滤波器阈值。再次,应理解的是,选择三个像素滤波器仅意味着例示了一个实施例。在其他实施例中,可为AWB统计选择更少或更多的像素滤波器。
此外,除了选择三个像素滤波器之外,还可将一个额外的像素滤波器用于自动曝光(AE),其通常指的是调整像素积分时间和增益以控制所捕捉图像的亮度的处理。例如,自动曝光可通过设置积分时间来控制由(一个或多个)图像传感器捕捉的场景的光量。在某些实施例中,可经由3A统计逻辑468来收集亮度统计信息的分块和浮动窗,并对其进行处理以确定积分和增益控制参数。
此外,自动对焦可以指确定镜头的最佳对焦长度以充分地优化图像的对焦。在特定实施例中,可以收集高频统计信息的浮动窗,并且可以调整镜头的对焦长度以使图像合焦。如同以下将讨论的,在一个实施例中,自动对焦调整可基于被称为自动对焦分数(AF分数)的一个或多个度量而利用粗略和精细调整,以使图像合焦。此外,在一些实施例中,可为不同颜色确定AF统计信息/分数,并且可使用每个颜色通道的AF统计信息/分数之间的相对性来确定对焦的方向。
因此,可经由统计信息收集块468来确定并收集尤其是这些各种类型的统计信息。如图所示,传感器0统计处理单元120的统计信息收集块468的输出STATS0可被发送到存储器108并且然后被路由到控制逻辑84,或者可替换地,可被直接发送到控制逻辑84。此外,应理解的是,如图8所示,传感器1统计处理单元122还可包括类似配置的提供统计信息STATS1的3A统计信息收集块。
如上所述,可以是设备10的ISP子***32中的专用处理器的控制逻辑84可处理收集到的统计数据以确定用于控制成像设备30和/或图像处理电路32的一个或多个控制参数。例如,这样的控制参数可以包括用于操作图像传感器90的镜头的参数(例如对焦长度调整参数)、图像传感器参数(例如模拟和/或数字增益、积分时间)以及ISP流水处理参数(例如数字增益值、颜色校正矩阵(CCM)系数)。另外,如上所述,在特定实施例中,可以8位的精度来进行统计处理,因此,具有更高位深的原始像素数据可被缩减到8位格式以用于统计目的。如上所述,缩减到8位(或任何其他更低位分辨率)可减小硬件尺寸(例如面积),还能降低处理复杂度,并且使得统计数据对于噪声更为鲁棒(例如使用图像数据的空间平均)。
带着前述的思想,图51是描绘了用于实现3A统计逻辑468的一个实施例的逻辑的方框图。如图所示,3A统计逻辑468可接收表示拜耳RGB数据的信号582,如图37所示,其可以对应于逆BLC逻辑466的输出。3A统计逻辑468可以处理拜耳RGB数据582以获得各种统计信息584,如图37中所示,其可表示3A统计逻辑468的输出STATS0,或者可替换地,其可表示与传感器1统计处理单元122关联的统计逻辑的输出STATS1。
在所示的实施例中,为了使统计信息对于噪声更为鲁棒,首先由逻辑586对进入的拜耳RGB像素582进行平均。例如,可以在四个2×2拜耳方格(quad)(例如表示拜耳模式的2×2像素块)组成的4×4传感器像素的窗口大小中执行所述平均,并且可以计算该4×4窗口中平均的红色(R)、绿色(G)和蓝色(B)值,并且将其转换成8位,如上所述的那样。图52相关地详细例示了这个处理,其示出了由四个2×2拜耳方格590形成的4×4像素窗口588。使用这个排列,每个颜色通道都包括窗口588内的对应像素的一个2×2块,并且相同颜色的像素可被求和并平均,以为窗口588内的每个颜色通道生成平均颜色值。例如,样本588内的红色像素594可被平均以获得平均红色值(RAV)604,以及样本588内的蓝色像素596可被平均以获得平均蓝色值(BAV)606。关于绿色像素的平均,因为拜耳模式具有两倍于红色或蓝色采样的绿色采样,所以可使用多种技术。在一个实施例中,可通过仅平均Gr像素592、仅平均Gb像素598、或者将所有Gr和Gb像素592和598一起平均来获得平均绿色值(GAV)602。在另一个实施例中,可以平均每个拜耳方格590中的Gr和Gb像素592和598,并且每个拜耳方格590中的绿色值的平均可被进一步一起平均以获得GAV602。将明了的是,可为降噪提供跨像素块的像素值的平均。此外,应理解的是,使用4×4块作为窗口样本仅旨在提供一个例子。实际上,在其他实施例中,可使用任何合适的块大小(例如,8×8,16×16,32×32等)。
随后,将经缩减的拜耳RGB值610输入到颜色空间转换逻辑单元612和614。由于一些3A统计数据可依赖于应用颜色空间转换后的像素,因此颜色空间转换(CSC)逻辑612和CSC逻辑614可被配置为将经缩减的拜耳RGB值610转换到一个或多个其他颜色空间中。在一个实施例中,CSC逻辑612可提供非线性空间转换,而CSC逻辑614可提供线性空间转换。因此,CSC逻辑单元612和614可将原始图像数据从传感器拜耳RGB转换到到另一个颜色空间(例如sRGBlinear、sRGB、YCbCr等),这样对于执行用于白平衡的白点估计可能更加理想或者合适。
在本实施例中,非线性CSC逻辑612可被配置为执行3×3矩阵相乘,接下来执行以查找表形式实现的非线性映射,并在随后用增加的偏移量进一步执行另一个3×3矩阵相乘。这允许3A统计信息颜色空间转换对给定色温复制ISP流水线82中的RGB处理的颜色处理(例如应用白平衡增益、应用颜色校正矩阵、应用RGB伽马调整以及执行颜色空间转换)。它还可提供拜耳RGB值到更加颜色一致的颜色空间的转换,该颜色空间诸如是CIELab或在前讨论的任一个其他颜色空间(例如YCbCr、红色/蓝色归一化颜色空间等)。在一些情况下,Lab颜色空间可更适合于白平衡运算,因为色度性比亮度更加线性化。
如图51所示,用在此由参考标号614表示的第一3×3颜色校正矩阵(3A_CCM)处理来自拜耳RGB缩减信号610的输出像素。在本实施例中,3A_CCM616可被配置为将相机RGB颜色空间(camRGB)转换为线性sRGB校准空间(sRGBlinear)。以下用等式19-21提供可在一个实施例中使用的可编程的颜色空间转换:
sRlinear=max(0,min(255,(3A_CCM_00*R+3A_CCM_01*G+3A_CCM_02*B)));(19)
sGlinear=max(0,min(255,(3A_CCM_10*R+3A_CCM_11*G+3A_CCM_12*B)));(20)
sBlinear=max(0,min(255,(3A_CCM_20*R+3A_CCM_21*G+3A_CCM_22*B)));(21)
其中,3A_CCM_00至3A_CCM_22表示矩阵614的带符号的系数。因此,可由以下来确定sRGBlinear颜色空间的sRlinear、sGlinear和sBlinear分量的每一个:首先,确定应用了对应3A_CCM系数的红色、蓝色和绿色下采样拜耳RGB值的和,随后,如果该值超过255或者小于0,将该值截短到0或255(8位像素数据的最小和最大像素值)。在图51中用参考标号618来表示得到的sRGBlinear值以作为3A_CCM616的输出。另外,如下所示,3A统计逻辑468可维持针对每个sRlinear、sGlinear和sBlinear分量的截短像素数量的计数:
3A_CCM_R_clipcount_low:被截短的<0的sRlinear像素的数量
3A_CCM_R_clipcount_high:被截短的>255的sRlinear像素的数量
3A_CCM_G_clipcount_low:被截短的<0的sGlinear像素的数量
3A_CCMG_clipcount_high:被截短的>255的sGlinrar像素的数量
3A_CCM_B_clipcount_low:被截短的<0的sBlinear像素的数量
3A_CCM_B_clipcount_high:被截短的>255的sBlinear像素的数量
接下来,可使用非线性查找表620来处理sRGBlinear像素618以生成sRGB像素622。查找表620可包含8位值的条目,每个表条目值表示一个输出等级。在一个实施例中,查找表620可包括65个均匀分布的输入条目,其中表索引以4为步长来表示输入值。当输入值落入间隔之间时,则进行线性插值以得到输出值。
如同将明了的,sRGB颜色空间可表示对于给定白点,由成像设备30(图7)生成的最终图像的颜色空间,因为在由图像设备生成的最终图像的颜色空间中执行白平衡统计信息收集。在一个实施例中,例如,可基于红-绿和/或蓝-绿比率,通过将图像场景的特征与一个或多个参考发光体相匹配来确定白点。例如,一个参考发光体可以是D65,其是模拟日光条件的CIE标准发光体。除了D65,还可为其他不同的参考发光体进行成像设备30的校准,并且白平衡确定处理可包括确定当前发光体,以使得处理(例如颜色平衡)可基于对应校准点为当前发光体而被调整。作为例子,在一个实施例中,除了D65,还可使用冷白色荧光(CWF)参考发光体、TL84参考发光体(另一种荧光源)以及模拟白炽照明的IncA(或A)参考发光体来校准成像设备30和3A统计逻辑468。另外,如上所述,对应于不同色温的各种其他发光体(例如,H、IncA、D50、D65和D75等)也可被用于白平衡处理的相机校准。因此,可通过分析图像场景和确定哪个参考发光体最接近地匹配于当前发光体来确定白点。
仍然参考非线性CSC逻辑612,可用在此被称为3A_CSC的第二3×3颜色校正矩阵624来进一步处理查找表620的sRGB像素输出622。在所描绘的实施例中,3A_CSC矩阵624被示出为被配置为从sRGB颜色空间转换到YCbCr颜色空间,尽管其也可被配置为将sRGB值转换到其他颜色空间。作为例子,可使用以下可编程的颜色空间转换(等式22-27):
Y=3A_CSC_00*sR+3A_CSC_01*sG+3A_CSC_02*sB+3A_OffsetY;(22)
Y=max(3A_CSC_MIN_Y,min(3A_CSC_MAX_Y,Y));(23)
C1=3A_CSC_10*sR+3A_CSC_11*sG+3A_CSC_12*sB+3A_OffsetC1;(24)
C1=max(3A_CSC_MIN_C1,min(3A_CSC_MAX_C1,C1));(25)
C2=3A_CSC_20*sR+3A_CSC_21*sG+3A_CSC_22*sB+3A_OffsetC2;(26)
C2=max(3A_CSC_MIN_C2,min(3A_CSC_MAX_C2,C2));(27)
其中,3A_CSC_00至3A_CSC_22表示矩阵624的带符号的系数,3A_OffsetY,3A_OffsetC1和3A_OffsetC2表示带符号的偏移量,C1和C2表示不同的颜色,在这里分别表示蓝色差色度(Cb)和红色差色度(Cr)。然而应理解的是,C1和C2可表示任何合适的差分色度颜色,并且没有必要必须是Cb和Cr颜色。
如等式22-27所示,在确定YCbCr每个分量的过程中,将来自矩阵624的适当系数应用到sRGB值622,并且将结果加上对应的偏移量(例如等式22、24和26)。实际上,该步骤是3×1矩阵乘法步骤。然后,将矩阵乘法的结果在最大和最小值之间截短(例如,等式23、25和27)。关联的最小和最大截短值可以是可编程的,并且例如可基于正被使用的特定成像或视频标准(例如,BT.601或BT.709)。
如下所示,3A统计逻辑468还可为每个Y、C1和C2分量保存截短像素数量计数:
3A_CSC_Y_clipcount_low:被截短的<3A_CSC_MIN_Y的Y像素的数量
3A_CSC_Y_clipcount_high:被截短的>3A_CSC_MAX_Y的Y像素的数量
3A_CSC_C1_clipcount_low:被截短的<3A_CSC_MIN_C1的C1像素的数量
3A_CSC_C1_clipcount_high:被截短的>3A_CSC_MAX_C1的C1像素的数量
3A_CSC_C2_clipcount_low:被截短的<3A_CSC_MIN_C2的C2像素的数量
3A_CSC_C2_clipcount_high:被截短的>3A_CSC_MAX_C2的C2像素的数量
还可将来自拜耳RGB下采样信号610的输出像素提供给线性颜色空间转换逻辑614,后者可被配置为执行相机颜色空间转换。例如,可经由CSC逻辑614的另一个3×3颜色转换矩阵(3A_CSC2)630处理来自拜耳RGB下采样逻辑586的输出像素610,以从传感器RGB(camRGB)转换成线性白平衡颜色空间(camYC1C2),其中C1和C2可分别对应于Cb和Cr。在一个实施例中,可由亮度来缩放色度像素,这可有益于实现提高了颜色一致性以及对因亮度改变引起的颜色偏移具有鲁棒性的滤色器。以下等式28-31提供了可如何使用3×3矩阵630来实现相机颜色空间转换的例子:
camY=3A_CSC2_00*R+3A_CSC2_01*G+3A_CSC2_02*B+3A_0ffset2Y;(28)
camY=max(3A_CSC2_MIN_Y,min(3A_CSC2_MAX_Y,camY));(29)
camC1=(3A_CSC2_10*R+3A_CSC2_11*G+3A_CSC2_12*B);(30)
camC2=(3A_CSC2_20*R+3A_CSC2_21*G+3A_CSC2_22*B);(31)
其中,3A_CSC2_00至3A_CSC2_22表示矩阵630的带符号的系数,3A_Offset2Y表示camY的带符号的偏移量,C1和C2表示不同的颜色,在这里分别表示蓝色差色度(Cb)和红色差色度(Cr)。如等式28所示,为了确定camY,可以将来自矩阵630的对应系数应用到拜耳RGB值610,并且将结果加上3A_Offset2Y。然后,如等式29所示,在最大和最小值之间截短这个结果。如上所述的,该截短限制可以是可编程的。
此时,输出632的camC1和camC2像素是带符号的。如上所讨论的,在一些实施例中,可以缩放色度像素。例如,以下示出了一种用于执行色度缩放的技术:
camC1=camC1*ChromaScale*255/(camY?camY:1);
(32)
camC2=camC2*ChromaScale*255/(camY?camY:1);
(33)
其中,ChromaScale表示0-8之间的浮点缩放因子。在等式32和33中,表达式(camY?camY:1)意思是防止被零除的情形。也就是,如果camY等于0,则camY的值设为1。此外,在一个实施例中,ChromaScale可取决于camC1的符号而被设为两个可能值中的一个。例如,如以下等式34所示,如果camC1是负数,则ChromaScale可被设为第一值(ChromaScale0),否则其可被设为第二值(ChromaScale1):
ChromaScale=ChromaScale0if(camC1<0)(34)
ChromaScale1otherwise
其后,如以下等式35和36所示,加上色度偏移量,并且截短camC1和camC2色度像素以生成对应的不带符号的像素值:
camC1=max(3A_CSC2_MIN_C1,min(3A_CSC2_MAX_C1,(camC1+3A_Offset2C1)))
(35)
camC2=max(3A_CSC2_MIN_C2,min(3A_CSC2_MAX_C2,(camC2+3A_Offset2C2)))
(36)
其中,3A_CSC2_00至3A_CSC2_22是矩阵630的带符号的系数,并且3A_Offset2C1和3A_Offset2C2是带符号的偏移量。此外,如下所示,计算camY、camC1和camC2的被截短的像素的数量:
3A_CSC2_Y_clipcount_low:被截短的<3A_CSC2_MIN_Y的camY像素的数量
3A_CSC2_Y_clipcount_high:被截短的>3A_CSC2_MAX_Y的camY像素的数量
3A_CSC2_C1_clipcount_low:被截短的<3A_CSC2_MIN_C1的camC1像素的数量
3A_CSC2_C1_clipcount_high:被截短的>3A_CSC2_MAX_C1的camC1像素的数量
3A_CSC2_C2_clipcount_low:被截短的<3A_CSC2_MIN_C2的camC2像素的数量
3A_CSC2_C2_clipcount_high:被截短的>3A_CSC2_MAX_C2的camC2像素的数量
因此,在本实施例中,非线性和线性颜色空间转换逻辑612和614可提供多种颜色空间中的像素数据:sRGBlinear(信号618)、sRGB(信号622)、YCbCr(信号626)和camYCbCr(信号630)。应理解的是,可独立地设置并编程每个转换矩阵616(3A_CCM)、624(3A_CSC)和630(3A_CSC2)的系数以及查找表620中的值。
仍然参考图51,可将来自非线性颜色空间转换(YCbCr626)或相机颜色空间转换(camYCbCr632)的色度输出像素用来生成二维(2D)颜色直方图636。如图所示,可作为多路复用器或者可由任何其他合适的逻辑实现的选择逻辑638和640可被配置为在来自非线性或相机颜色空间转换的亮度和色度像素之间进行选择。选择逻辑638和640可响应于各自的控制信号而操作,在一个实施例中,所述控制信号可由图像处理电路32(图7)的主控制逻辑84提供,并且可经由软件而被设置。
对于本例,可以假设选择逻辑638和640选择YC1C2颜色空间转换(626),其中第一分量是亮度,并且其中C1和C2是第一和第二颜色(例如Cb、Cr)。用一个窗口生成C1-C2颜色空间中的2D直方图636。例如,该窗口可由列开始位置和宽度以及行开始位置和高度来指定。在一个实施例中,该窗口的位置和大小可被设为4像素的倍数,并且对于总数为1024个面元(bin),可使用32×32个面元。面元分界线可以是固定间隔,并且为了允许在颜色空间的特定区域内对直方图收集进行变焦和镜头移动,可以定义像素缩放比例和偏移量。
在偏移量和缩放比例之后,可使用C1和C2的高5位(表示总共32个值)来确定所述面元。可如下来确定在此被称为C1_index和C2_index的C1和C2的面元索引:
C1_index=((C1-C1_offset)>>(3-C1_scale)(37)
C2_index=((C2-C2_offset)>>(3-C2_scale)
(38)
如以下等式39所示,一旦确定了索引,如果面元索引处于[0,31]的范围内,则将颜色直方图面元递增一个Count(计数)值(在一个实施例中,其可具有0到3的值)。事实上,这允许基于亮度值来加权颜色计数(例如,更明亮的像素被更重地加权,而不是均等地加权每一个(例如,以1加权))。
if(C1_index>=0&&C1_index<=31&&C2_index>=0&&C2_index<=31)(39)
StatsCbCrHist[C2_index&31][C1_index&31]+=Count;
其中,基于所选择的亮度值(在该例子中是Y)来确定Count。如同将明了的,可通过面元更新逻辑块644来实现由等式37、38和39表示的步骤。此外,在一个实施例中,可设置多个亮度阈值以定义亮度间隔。作为例子,四个亮度阈值(Ythd0-Ythd3)可定义五个亮度间隔,其中分别为每个间隔定义为Count值Count0-4。例如,可如下地基于亮度阈值来选择(例如通过像素条件逻辑642)Count0-Count4:
if(Y<=Ythd0)(40)
Count=Count0
elseif(Y<=Ythd1)
Count=Count1
elseif(Y<=Ythd2)
Count=Count2
elseif(Y<=Ythd3)
Count=Count3
else
Count=Count4
带着上述思想,图53例示了对于C1和C2两者缩放比例和偏移量都设为0的颜色直方图。CbCr空间内的划分表示32×32面元(共计1024个面元)的每一个。图54提供了为了额外的精度而在2D颜色直方图内变焦和镜头移动的例子,其中,小矩形所处的矩形区域646指定了32×32面元的位置。
在图像数据的帧的起点,将面元值初始化为0。对于进入2D颜色直方图636的每个像素,对应于匹配C1C2值的面元可增加所确定的Count值(Count0-Count4),如上所述,该计数值可基于亮度值。对于2D直方图636内的每个面元,将总像素计数报告作为所收集的统计数据(例如STATS0)的一部分。在一个实施例中,每个面元的总像素计数可具有22位的分辨率,由此提供等于1024×22位的内部存储器的分配。
参考回图51,将拜耳RGB像素(信号610)、sRGBlinear像素(信号618)、sRGB像素(信号622)和YC1C2(例如YCbCr)像素(信号626)提供给一组像素滤波器650a-c,籍此,可以基于每个像素滤波器650所定义的camYC1C2或YC1C2像素条件,有条件地累加RGB、sRGBlinear、sRGB、YC1C2或camYC1C2之和。也就是说,可将来自非线性颜色空间转换(YC1C2)的输出或相机颜色空间转换(camYC1C2)的输出的Y、C1和C2值用来有条件地选择RGB、sRGBlinear、sRGB或YC1C2值以进行累加。虽然本实施例描绘的3A统计逻辑468具有8个像素滤波器(PF0-PF7),但是可以理解,可提供任意数量的像素滤波器。
图55示出了描述像素滤波器(特别是来自图51的PF0(650a)和PF1(650b))的一个实施例的功能逻辑图。如图所示,每个像素滤波器650都包括选择逻辑,该选择逻辑接收拜耳RGB像素、sRGBlinear像素、sRGB像素、以及由另一个选择逻辑654选择的YC1C2或camYC1C2。作为例子,可使用多路复用器或任何其他合适的逻辑来实现选择逻辑652和654。选择逻辑654可选择YC1C2或camYC1C2。该选择可响应于控制信号做出,所述控制信号由图像处理电路32(图7)的主控制逻辑84提供,和/或由软件来设置。接下来,像素滤波器650可使用逻辑656来根据像素条件评估由选择逻辑654选择的YC1C2像素(例如非线性或相机)。每个像素滤波器650可使用选择电路652来选择如下之一:拜耳RGB像素、sRGBlinear像素、sRGB像素、以及取决于选择电路654的输出的YC1C2或camYC1C2。
使用评估的结果,可以累加由选择逻辑652选择的像素。在一个实施例中,如图49的图表570所示,可使用阈值C1_min、C1_max、C2_min和C2_max来定义像素条件。如果像素满足以下条件,则将该像素包括在统计信息中:
1.C1_min<=C1<=C1_max
2.C2_min<=C2<=C2_max
3.abs((C2_delta*C1)-(C1_delta*C2)+Offset)<distance_max
4.Ymin<=Y<=Ymax
参考图56,在一个实施例中,点662表示与由逻辑654选择的当前YC1C2像素数据相对应的值(C2,C1)。可将C1_delta确定为C1_1和C1_0之差,并且可将C2_delta确定为C2_1和C2_0之差。如图56所示,点(C1_0,C2_0)和(C1_1,C2_1)可定义C1和C2的最小和最大边界。可通过将C1_delta乘上线664与轴C2交叉处的值(C2_intercept)来确定偏移量(Offset)。于是,假定Y、C1和C2满足最小和最大边界条件,如果所选择的像素(拜耳RGB、sRGBlinear、sRGB、以及YC1C2/camYC1C2)与线664之间的距离670小于distance_max672,则将该选择的像素包括在累加和中,所述distance_max672可以是以像素为单位的与线664相距的距离670乘上归一化因子:
distance_max=distance*sqrt(C1_delta^2+C2_delta^2)
在本实施例中,distance(距离)、C1_delta和C2_delta可以具有-255到255的范围。于是,distance_max672可由17位表示。可将点(C1_0,C2_0)和(C1_1,C2_1)以及用于确定distance_max的参数(例如,(一个或多个)归一化因子)提供作为每个像素滤波器650中像素条件逻辑656的一部分。如同将明了的,像素条件656是可配置/可编程的。
虽然图56所示的例子描绘了基于两组点(C1_0,C2_0)和(C1_1,C2_1)的像素条件,但是在另外的实施例中,某些像素滤波器可定义用于确定像素条件的更为复杂的形状和区域。例如,图57示出了像素滤波器650可使用点(C1_0,C2_0)、(C1_1,C2_1)、(C1_2,C2_2)、(C1_3,C2_3)以及(C1_4,C2_4)定义五边形673的实施例。每条边674a-674e可定义一个线条件。然而,与图56所示的情形(例如,只要满足distance_max,像素可在线664的任一则)不同的是,该条件可以是像素(C1,C2)必须位于线674a-674e的使得它可被多边形673围住的一侧。因此,当满足多个线条件的交集时,对像素(C1,C2)进行计数。例如,在图57中,像素675a满足这样的交集。然而,像素675b没有满足线674d的线条件,因此,当由此方式配置的像素滤波器进行处理时,像素675b将不会被计入统计。
在图58所示的另一实施例中,可基于重叠形状确定像素条件。例如,图58示出了像素滤波器650可如何具有使用两个重叠形状定义的像素条件,在此这两个重叠形状分别是由点(C1_0,C2_0)、(C1_1,C2_1)、(C1_2,C2_2)和(C1_3,C2_3)定义的矩形676a以及由点(C1_4,C2_4)、(C1_5,C2_5)、(C1_6,C2_6)和(C1_7,C2_7)定义的矩形676b。在该示例中,像素(C1,C2)如果被包围在由形状676a和676b共同限界的区域内(例如,如果满足定义两个形状的每条线的线条件),则可满足由这样的像素滤波器定义的线条件。例如,在图58中,像素678a满足这些条件。然而,像素678b没有满足这些条件(具体而言,没有满足矩形676a的线679a和矩形676b的线679b的线条件),因此,当由此方式配置的像素滤波器处理时,像素678b将不会被计入统计。
对于每个像素滤波器650,基于由逻辑656定义的像素条件识别合格像素,并且对于合格像素值,可由3A统计引擎468收集如下的统计信息:32位和:(Rsum,Gsum,Bsum)或(sRlinear_sum,sGlinear_sum,sBlinear_sum),或(sRsum,sGsum,sBsum)或(Ysum,C1sum,C2sum);以及24位像素计数Count,其表示在统计信息中包括的像素数量的和。在一个实施例中,软件可使用该和来生成在分块或窗口内的平均。
当camYC1C2像素由像素滤波器650的逻辑652选择时,可对经缩放的色度值执行颜色阈值。例如,因为白点处的色度强度随着亮度值增加,所以在一些实例中,在像素滤波器650中用亮度值缩放过的色度的使用可以提供具有更好的一致性的结果。例如,最小和最大亮度条件可允许滤波器忽略黑的和/或亮的区域。如果像素满足YC1C2像素条件,则RGB、sRGBlinear、sRGB或YC1C2值被累加。由选择逻辑652对像素值的选择可以取决于所需信息的类型。例如,对于白平衡,典型地选择RGB或sRGBlinear像素。对于检测特定条件,例如天空、草、肤色等,YCC或sRGB像素集合可能更适合。
在本实施例中,可定义8组像素条件,分别与像素滤波器PF0-PF7650中的一个相关联。可定义一些像素条件以在C1-C2颜色空间(图49)中划出白点可能处于的区域。这可基于当前发光体而被确定或估计。然后,可基于用于白平衡调整的R/G和/或B/G比率,使用累加的RGB和来确定当前白点。另外,可定义或适用一些像素条件来执行场景分析和分类。例如,可利用一些像素滤波器650和窗口/分块来对条件进行检测,所述条件例如图像帧顶部的天空或图像帧底部的绿草。还可将这个信息用于调整白平衡。此外,可定义或适用一些像素条件以检测肤色。对于这样的滤波器,可使用分块来检测图像帧中具有肤色的区域。通过识别这些区域,肤色的质量例如可通过降低肤色区域中噪声滤波器的数量和/或减少这些区域的视频压缩中的量化以提高质量来改进。
3A统计逻辑468还可提供亮度数据的收集。例如,来自相机颜色空间转换(camYC1C2)的亮度值camY可被用来累加亮度和统计信息。在一个实施例中,可由3A统计逻辑468收集以下亮度信息:
Ysum:camY的和
cond(Ysum):满足条件Ymin<=camY<Ymax的camY的和
Ycount1:像素的计数,其中camY<Ymin
Ycount2:像素的计数,其中camY>=Ymax
这里,Ycount1可以表示曝光不足的像素的数量,并且Ycount2可以表示曝光过度的像素的数量。这可被用于确定图像是曝光过度还是曝光不足。例如,如果像素没有饱和,则camY的和(Ysum)可以指示场景中的平均亮度,后者可用于实现目标AE曝光。例如,在一个实施例中,可通过将Ysum除以像素数量来确定平均亮度。另外,通过知晓用于分块统计和窗口位置的亮度/AE统计信息,可执行AE计量。例如,取决于图像场景,可能期望对中心窗口处的AE统计信息比在图像边缘的那些AE统计信息进行更重的加权,例如可能在该图像是人像的情况下。
在此处所例示的实施例中,3A统计信息收集逻辑可被配置为收集分块和窗口中的统计信息。在例示的配置中,可为分块统计674定义一个窗口。可由列开始位置和宽度以及行开始位置和高度来指定该窗口。在一个实施例中,该窗口的位置和大小可被选择为4像素的倍数,并且在这个窗口内,在任意大小的分块中聚集统计信息。作为例子,可选择该窗口中所有的分块以使它们具有相同的大小。可为水平和垂直方向单独地设置分块大小,并且在一个实施例中,可以设置水平分块数量的最大限制(例如,128个水平分块的限制)。另外,在一个实施例中,例如,可将最小分块大小设置为8像素宽×4像素高。以下是基于不同视频/成像模式和标准的获得具有16×16分块的窗口的分块配置的一些例子:
VGA640×480:分块间隔40×30像素
HD1280×720:分块间隔80×45像素
HD1920×1080:分缺间隔120×68像素
5MP2592×1944:分块间隔162×122像素
8MP3280×2464:分缺间隔205×154像素
关于本实施例,可从8个可用像素滤波器650(PF0-PF7)中选出4个用于分块统计674。对于每个分块,可收集以下统计信息:
(Rsum0,Gsum0,Bsum0)或(sRlinear_sum0,sGlinear_sum0,sBlinear_sum0),或(sRsum0,sGsum0,sBsum0)或Ysum0,C1sum0,C2sum0),Count0
(Rsum1,Gsum1,Bsum1)或(sRlinear_sum1,sGlinear_sum1,sBlinear_sum1),或(sRsum1,sGsum1,sBsum1)或(Ysum1,C1sum1,C2sum1),Count1
(Rsum2,Gsum2,Bsum2)或(sRlinear_sum2,sGlinear_sum2,sBlinear_sum2),或(sRsum2,sGsum2,sBsum2)或(Ysum2,C1sum2,C2sum2),Count2
(Rsum3,Gsum3,Bsum3)或(sRlinear_sum3,sGlinear_sum3,sBlinear_sum3),或(sRsum3,sGsum3,sBsum3)或(Ysum3,C1sum3,C2sum3,Count3
Ysum,cond(Ysum),Ycount1,Ycount2(来自camY)
在以上列出的统计信息中,Count0-3表示满足对应于所选4个像素滤波器的像素条件的像素的计数。例如,如果像素滤波器PF0、PF1、PF5和PF6被选为用于特定分块或窗口的4个像素滤波器,则上面提供的表达式可以与对应于为这四个滤波器所选择的(例如通过选择逻辑652)像素数据(例如,拜耳RGB、sRGBlinear、sRGB、YC1C2、camYC1C2)相对应的Count值及总和。此外,Count值可被用于归一化统计信息(例如,通过将颜色和除以对应的Count值)。如图所示,至少部分取决于所需统计信息的类型,所选的像素滤波器650可被配置为在拜耳RGB、sRGBlinear、或sRGB像素数据、或YC1C2(非线性或相机颜色空间转换,取决于逻辑654的选择)像素数据的任一个之间进行选择并为所选的像素数据确定颜色和统计信息。另外,如以上所述,还为用于自动曝光(AE)统计的亮度和信息收集来自相机颜色空间转换(camYC1C2)的亮度值camY。
另外,3A统计逻辑468还可被配置为收集用于多个窗口的统计信息676。例如,在一个实施例中,可使用多达8个浮动窗口,其任一矩形区域在每个维数(例如高×宽)上都具有4像素的倍数,直到对应于图像帧大小的最大尺寸。然而,窗口的位置没有必要被限制为4像素的倍数。例如,各窗口能够彼此重叠。
在本实施例中,可为每个窗口从可用的8个像素滤波器(PF0-PF7)中选出4个像素滤波器650。如上所述,可以用与分块相同的方式收集每个窗口的统计信息。因此,对于每个窗口,可收集以下统计信息676:
(Rsum0,Gsum0,Bsum0)或(sRlinear_sum0,sGlinear_sum0,sBlinear_sum0),或(sRsum0,sGsum0,sBsum0)或(Ysum0,C1sum0,C2sum0),Count0
(Rsum1,Gsum1,Bsum1)或(sRlinear_sum1,sGlinear_sum1,sBlinear_sum1),或(sRsum1,sGsum1,sBsum1)或(Ysum1,C1sum1,C2sum1),Count1
(Rsum2,Gsum2,Bsum2)或(sRlinear_sum2,sGlinear_sum2,sBlinear_sum2),或(sRsum2,sGsum2,sBsum2)或(Ysum2,C1sum2,C2sum2),Count2
(Rsum3,Gsum3,Bsum3)或(sRlinear_sum3,sGlinear_sum3,sBlinear_sum3),或(sRsum3,sGsum3,sBsum3)或(Ysum3,C1sum3,C2sum3),Count3
Ysum,cond(Ysum),Ycount1,Ycount2(来自camY)
在以上列出的统计信息中,Count0-3表示满足对应于为特定窗口而选择的4个像素滤波器的像素条件的像素的计数。可以为每个窗口独立地从8个可用像素滤波器PF0-PF7中选出4个活动像素滤波器。另外,可以使用像素滤波器或eamY亮度统计信息来收集多组统计信息中的一组。在一个实施例中,为AWB和AE收集的窗口统计信息可被映射到一个或多个寄存器。
仍然参考图51,3A统计逻辑468还可被配置为使用用于相机颜色空间转换的亮度值camY获取一个窗口的亮度行和(lumarowsum)统计信息678。该信息可被用于检测和补偿闪烁。闪烁是由一些荧光和白炽光源的周期变化生成的,典型地是由AC电源信号引起的。例如,参考图59,示出了例示光源的变化可如何引起闪烁的图。闪烁检测于是可被用来检测光源的AC电源的频率(例如50Hz或60Hz)。一旦知道了频率,则可通过将图像传感器的积分时间设置成闪烁周期的整数倍来避免闪烁。
为了检测闪烁,在每一行上累加相机亮度camY。归因于进入的拜耳数据的下采样,每个camY值可对应于初始原始图像数据的4行。然后,控制逻辑和/或固件可以对行平均值或更可靠地,对连续帧的行平均值之差进行频率分析以确定与特定光源关联的AC电源的频率。例如,参考图59,图像传感器的积分时间可以基于时间t1、t2、t3和t4(例如以使得,在与呈现变化的光源大致处于相同亮度水平的时刻相对应的时刻进行积分)。
在一个实施例中,可指定亮度行和的窗口,并且报告关于该窗口内像素的统计信息678。作为例子,对于1080pHD视频捕捉,假定1024像素高的窗口,生成256个亮度行和(例如,归因于逻辑586进行的缩减,每4行一个和),并且每个累加的值可用18位表达(例如,8位camY值用于每行多达1024个采样)。
图51的3A统计信息收集逻辑468还可经由自动对焦统计逻辑680提供自动对焦(AF)统计信息682的收集。图60中提供了一种更详细地示出AF统计逻辑680的实施例的功能性方框图。如图所示,AF统计逻辑680可以包括被应用于初始拜耳RGB(未下采样的)的水平滤波器684和边缘检测器686,两个针对来自拜耳的Y的3×3滤波器688和两个针对camY的3×3滤波器690。通常,水平滤波器684为每个颜色分量提供精细分辨率统计信息,3×3滤波器688可以提供关于拜耳Y(对拜耳RGB应用3×1转换(逻辑687))的精细分辨率统计信息,并且3×3滤波器690可提供关于camY的粗略二维统计信息(因为camY使用缩减的拜耳RGB数据获得,即逻辑630)。另外,逻辑680可包括用于抽选拜耳RGB数据(例如,2×2平均,4×4平均等)的逻辑704,并且可使用3×3滤波器706对抽选的拜耳RGB数据705进行滤波以产生抽选后的拜耳RGB数据的经滤波输出708。本实施例提供了16个统计窗口。在原始帧边界处,为AF统计逻辑680的滤波器复制边缘像素。以下将进一步描述AF统计逻辑680的各个部件。
首先,水平边缘检测处理包括对每个颜色分量(R,Gr,Gb,B)应用水平滤波器684,接着对每个颜色分量应用可选的边缘检测器686。因此,取决于成像条件,这个配置允许AF统计逻辑被设置为没有边缘检测(例如,边缘检测器禁用)的高通滤波器,或者可替换地,被设置为后接边缘检测器(例如,边缘检测器启用)的低通滤波器。例如,在低光照条件下,水平滤波器684可能更易受噪声影响,并且因此逻辑680可将水平滤波器配置为后接启用的边缘检测器686的低通滤波器。如图所示,控制信号694可启用或禁用边缘检测器686。来自不同颜色通道的统计信息被用于确定对焦的方向以提高锐度,因为不同颜色可能聚焦于不同的深度。特别地,AF统计逻辑680可提供使用粗略和精细调整的结合(例如对镜头的对焦长度进行调整)以启用自动对焦控制的技术。以下另外描述了这类技术的实施例。
在一个实施例中,水平滤波器可以是7抽头滤波器,并且可由以下等式41和42来定义:
out(i)=(af_horzfilt_coeff[0]*(in(i-3)+in(i+3))+af_horzfilt_coeff[1]*(in(i-2)+in(i+2))+(41)
af_horzfilt_coeff[2]*(in(i-1)+in(i+1))+af_horzfilt_coeff[3]*in(i))
out(i)=max(-255,min(255,out(i)))(42)
在这里,每个系数af_horzfilt_coeff[0:3]处于[-2,2]的范围内,并且i表示用于R,Gr,Gb或B的输入像素索引。可在最小值-255和最大值255之间截短滤波输出out(i)(等式42)。可为每个颜色分量独立地定义滤波器系数。
可选的边缘检测器686可跟随在水平滤波器684的输出之后。在一个实施例中,可如下定义边缘检测器686:
edge(i)=abs(-2*out(i-1)+2*out(i+1))+abs(-out(i-2)+out(i+2))(43)
edge(i)=max(0,min(255,edge(i)))(44)
因此,如等式43所示,边缘检测器686在被启用时可基于当前输入像素i的每一侧的两个像素而输出一个值。如等式44所示,可将该结果截短成0至255之间的8位值。
取决于是否检测到边缘,像素滤波器(例如滤波器684和检测器686)的最终输出可被选择为水平滤波器684的输出或者边缘检测器686的输出。例如,如等式45所示,如果检测到边缘,则边缘检测器686的输出可以是edge(i),如果没有检测到边缘,则边缘检测器686的输出可以是水平滤波器输出0ut(i)的绝对值。
edge(i)=(af_horzfilt_edge_detected)?edge(i):abs(out(i))(45)
对于每个窗口,累加的值edge_sum[R,Gr,Gb,B]可被选择为(1)窗口上每个像素edge(j,i)的和,或者(2)窗口中一行上的edge(i)的最大值max(edge),并由此对窗口中各行求和。假定原始帧大小为4096×4096像素,存储edge_sum[R,Gr,Gb,B]的最大值所需的位的数量是30位(例如,每像素8位,加上22位用于一个覆盖整个原始图像帧的窗口)。
如上所述,用于camY亮度的3×3滤波器690可包括两个可编程的3×3滤波器,其被称为F0和F1,并都被应用到camY。滤波器690的结果变成平方函数或者绝对值函数。在给定AF窗口上为两个3×3滤波器F0和F1累加该结果以生成亮度边缘值。在一个实施例中,可如下定义每个camY像素处的亮度边缘值:
edgecamY_FX(j,i)=FX*camY(46)
=FX(0,0)*camY(j-1,i-1)+FX(0,1)*camY(j-1,i)+FX(0,2)*camY(j-1,i+1)+
FX(1,0)*camY(j,i-1)+FX(1,1)*camY(j,i)+FX(1,2)*camY(j,i+1)+
FX(2,0)*camY(j+1,i-1)+FX(2,1)*camY(j+1,i)+FX(2,2)*camY(j+1,i+1)
edgecamY_FX(j,i)=f(max(-255,min(255,edgecamY_FX(j,i))))(47)
f(a)=a^2orabs(a)
其中,FX表示3×3可编程滤波器F0和F1,其具有范围在[-4,4]内的带符号系数。索引j和i表示camY图像中的像素位置。如上所述,针对camY的滤波器可提供粗略的分辨率统计信息,因为camY是使用缩减的(例如4×4到1)拜耳RGB数据导出的。例如,在一个实施例中,可使用Scharr算子来设置滤波器F0和F1,Scharr算子提供了优于Sobel算子的改进的旋转对称,以下示出了其中一个例子:
对于每个窗口,由滤波器690确定的累加值700edgecamY_FX_sum(其中FX=F0和F1)可被选择为(1)窗口上每个像素的edgecamY_FX(j,i)之和,或者(2)窗口中一行上的edgecamY_FX(j)的最大值,并由此对窗口中的各行求和。在一个实施例中,当f(a)被设置为a^2以提供具有更精细分辨率的“更尖峰的”统计信息时,edgecamY_FX_sum可以饱和至32位值。为了避免饱和,可以在原始帧像素中设置最大窗口尺寸X*Y,使得其不超过总计1024×1024像素(例如,即X*Y<=1048576个像素)。如上所提到的,f(a)还可被设置成一绝对值以提供更线性的统计信息。
可以与camY中3×3滤波器类似的方式定义针对拜耳Y的AF3×3滤波器688,但是后者被应用到由拜耳方格(2×2像素)生成的亮度值Y。首先,将8位拜耳RGB值转换成具有在[0,4]范围内的可编程系数的Y,以生成经白平衡的Y值,如以下等式48所示:
bayerY=max(0,min(255,bayerY_Coeff[0]*R+bayerY_Coeff[1]*(Gr+Gb)/2+(48)
bayerY_Coeff[2]*B))
与camY的滤波器690相似,用于拜耳Y亮度的3×3滤波器688可包括两个可编程的3×3滤波器,其被称为F0和F1,并都被应用到拜耳Y。滤波器688的结果是平方函数或者绝对值函数。在给定AF窗口上为两个3×3滤波器F0和F1累加该结果以生成亮度边缘值。在一个实施例中,可如下定义每个拜耳Y像素处的亮度边缘值:
edgebayerY_FX(j,i)=FX*bayerY(49)
=FX(0,0)*bayerY(j-1,i-1)+FX(0,1)*bayerY(j-1,i)+FX(0,2)*bayerY(j-1,i)+
FX(1,0)*bayerY(j,i-1)+FX(1,1)*bayerY(j,i)+FX(1,2)*bayerY(j-1,i)+
FX(2,0)*bayerY(j+1,i-1)+FX(2,1)*bayerY(j+1,i)+FX(2,2)*bayerY(j+1,i)
edgebayerY_FX(j,i)=f(max(-255,min(255,edgebayerY_FX(j,i))))(50)
f(a)=a^2orabs(a)
其中,FX表示3×3可编程滤波器F0和F1,其具有[-4,4]范围内的带符号系数。索引j和i表示拜耳Y图像中的像素位置。如上所述,针对拜耳Y的滤波器可提供精细分辨率统计信息,因为由AF逻辑680接收的拜耳RGB信号不是被抽选的。仅作为例子,可使用以下滤波器配置之一来设置滤波器逻辑688的滤波器F0和F1:
对于每个窗口,由滤波器688确定的累加值702edgebayerY_FX_sum(其中FX=F0和F1)可被选择为(1)窗口上每个像素edgebayerY_FX(j,i)的和,或者(2)窗口中一行上的edgebayerY_FX(j)的最大值,并由此对窗口中各行求和。在这里,当f(a)被设置为a^2时,edgebayerY_FX_sum可以饱和至32位。因此,为了避免饱和,应当设置原始帧像素中的最大窗口尺寸X*Y,以便它不超过总计512×512像素(例如,X*Y<=262144)。如上所示,将f(a)设置为a^2可提供更尖峰的统计信息,而将f(a)设置为abs(a)可提供更线性的统计信息。
如上所述,为16个窗口收集用于AF的统计信息682。这些窗口可以是每个维度都是4像素倍数的任意矩形区域。由于每个滤波逻辑688和690都包括两个滤波器,在一些实例中,一个滤波器可被用于4像素归一化,并且可被配置为在垂直和水平两方向上滤波。另外,在一些实施例中,AF逻辑680可用明亮度来归一化AF统计信息。这可以通过将逻辑块688和690的一个或多个滤波器设置为旁路滤波器来实现。在某些实施例中,可将窗口的位置限定为4像素的倍数,并且窗口被允许重叠。例如,一个窗口可被用来获取归一化值,而另一个窗口可被用于其他统计信息,例如如下讨论的方差。在一个实施例中,AF滤波器(例如684、688、690)可以不在图像帧的边缘处执行像素复制,并且因此为了让AF滤波器使用所有有效的像素,AF窗口可被设置为使得它们每一个距离帧的上边缘至少4个像素,距离帧的下边缘至少8个像素,并且距离帧的左/右边缘至少12个像素。在所示的实施例中,可为每个窗口收集并报告以下统计信息:
用于Gr的32位edgeGr_sum
用于R的32位edgeR_sum
用于B的32位edgeB_sum
用于Gb的32位edgeGb_sum
用于滤波器0(F0)的用于来自拜耳的Y的32位edgebayerY_F0_sum
用于滤波器1(F1)的用于来自拜耳的Y的32位edgebayerY_F1_sum
用于滤波器0(F0)的用于camY的32位edgecamY_F0_sum
用于滤波器1(F1)的用于camY的32位edgecamY_F1_sum
在这样的实施例中,用于存储AF统计信息682所需的存储器可能是16(窗口)乘以8(Gr、R、B、Gb、bayerY_F0、bayerY_F1、camY_F0、camY_F1)再乘以32位。
因此,在一个实施例中,可在以下几个当中选择每个窗口的累加值:滤波器的输出(其可被配置成缺省设置)、输入像素、或输入像素平方。可为16个AF窗口的每一个进行选择,并且该选择可应用到给定窗口内的所有8个AF统计信息(以上列出的)。其可被用于归一化两个重叠窗口之间的AF分数,这两个窗口中的一个被配置为收集滤波器的输出,并且一个被配置为收集输入像素和。另外,为了计算两个重叠窗口情况下的像素方差,一个窗口可被配置为收集输入像素和,并且另一个可被配置为收集输入像素平方和,从而提供了可如下计算的方差:
Variance=(avg_pixel2)-(avg_pixel)^2
使用AF统计,ISP控制逻辑84(图7)可被配置为基于粗略的和精细的自动对焦“分数”使用一系列对焦长度调整而调整图像设备(例如30)的镜头的对焦长度,以使图像合焦。如上所述,用于camY的3×3滤波器690可提供粗略的统计信息,水平滤波器684和边缘检测器686可为每个颜色分量提供相对更精细的统计信息,而针对拜耳Y的3×3滤波器688可提供针对拜耳Y的精细的统计信息。另外,针对抽选的拜耳RGB信号705的3×3滤波器706可为每个颜色通道提供粗略的统计信息。如以下将讨论的,可基于特定输入信号的滤波器输出值(例如,用于camY、拜耳Y、抽选的拜耳RGB的滤波器输出F0与F1之和,或基于水平/边缘检测器输出等)计算AF分数。
图61示出了描绘分别表示粗略和精细的AF分数的曲线712和714的图710。如图所示,基于粗略统计信息的粗略AF分数沿着镜头对焦距离可以具有更线性的响应。因此,在任意对焦位置,镜头运动会导致自动对焦分数的改变,其可被用来检测图像是变得更为合焦还是离焦。例如,镜头调整后的粗略AF分数的增加可表明在以正确方向(例如,朝着最佳对焦位置)调整对焦长度。
然而,随着最佳对焦位置的接近,粗略AF分数的改变对于较小的镜头调整步长可能降低,从而使得难于辨别出对焦调整的正确方向。例如,如图710所示,在粗略的位置(CP)CP1和CP2之间的粗略AF分数的改变可被表示为ΔC12,其示出了从CP1到CP2的粗略增加。然而,如图所示,从CP3到CP4的粗略AF分数中的改变ΔC34(其通过了最佳对焦位置(OFP))虽然仍然增加,但是相对较小。应理解的是,沿着对焦长度L的位置CP1-CP6不意味着必须对应于由自动对焦逻辑沿着对焦长度而采用的步长大小。也就是说,可以存在没有示出的在每个粗略位置之间采用的附加步长。所示的位置CP1-CP6仅意在示出在对焦位置靠近OFP时,粗略AF分数的改变如何逐渐降低。
一旦确定了OFP的大约位置(例如,基于图61所示的粗略AF分数,OFP的大约位置可处于CP3和CP5之间),则可评估由曲线714表示的精细AF分数值以精细定位所述对焦位置。例如,当图像处于离焦时,精细AF分数可以是更为平坦的,使得大的镜头位置改变不会引起精细AF分数的大的改变。然而,随着对焦位置靠近最佳对焦位置(OFP),小的位置调整就会使精细AF分数急剧改变。因此,通过在精细AF分数曲线714上定位峰值或顶点715,可为当前图像场景确定OFP。因此,总而言之,粗略AF分数可被用来确定最佳对焦位置的大体邻近区域,而精细AF分数可被用于在上述邻近区域内精确定位更准确的位置。
在一个实施例中,自动对焦处理可通过沿着整个可用对焦长度获取粗略AF分数来开始,其开始于位置0且结束于位置L(在图710上示出),并且确定在不同步进位置(例如CP1-CP6)处的粗略AF分数。在一个实施例中,一旦镜头的对焦位置已经到达位置L,则在评估各个对焦位置的AF分数之前可将位置重置为0。例如,这可归因于控制对焦位置的机械元件的线圈稳定时间(coilsettlingtime)。在这个实施例中,在重置到位置0之后,对焦位置可被朝向位置L调整到第一个指示了粗略AF分数的负的改变的位置,这里是位置CP5,其呈现出相对于位置CP4的负的改变ΔC45。从位置CP5,可以以相对于在粗略AF分数调整中使用的增量更小的增量来朝着位置0反方向调整对焦位置(例如位置FP1、FP2、FP3等),同时在精细AF分数曲线714中搜索峰值715。如上所述,对应于精细AF分数曲线714中的峰值715的对焦位置OFP可以是当前图像场景的最佳对焦位置。
如同将明了的,就分析AF分数曲线712和714中的改变来定位OFP这一点而言,上述用于定位聚焦点的最佳区域和最佳位置的技术可被称为“爬山法”。此外,虽然将粗略AF分数(曲线712)的分析和精细AF分数(曲线714)的分析示出为对粗略分数分析使用相同大小的步长(例如CP1和CP2之间的距离)并且对精细分数分析使用相同大小的步长(例如FP1和FP2之间的距离),但是在一些实施例中,步长大小可以取决于从一个位置到下一个位置的分数改变而变化。例如,在一个实施例中,CP3和CP4之间的步长大小可以相对于CP1和CP2之间的步长大小而降低,因为粗略AF分数的总体增量(ΔC34)小于从CP1到CP2的增量(ΔC12)。
描绘该处理的方法720在图62被例示。其开始于块722,沿着对焦长度从位置0到位置L(图61)在各个步进处为图像数据确定粗略AF分数。之后,在块724,分析粗略AF分数并将呈现出粗略AF分数的第一个负的改变的粗略位置识别为精细AF分数分析的起始点。例如,随后,在块726,以更小的步长朝着初始位置0反向步进对焦位置,分析每个步进处的精细AF分数直到AF分数曲线(例如图61的曲线714)的峰值被定位。在块728,将对应于峰值的对焦位置设置为当前图像场景的最佳对焦位置。
如上所述,归因于机械线圈稳定时间,图62所示技术的实施例可适用于首先沿着整个对焦长度获取粗略AF分数,而不是逐一分析每个粗略位置并搜索最佳对焦区域。然而,其中不太需要考虑线圈稳定时间的其他实施例可以逐一分析每个步进处的粗略AF分数,而非搜索整个对焦长度。
在某些实施例中,可使用得自拜耳RGB数据的白平衡亮度值来确定AF分数。例如,可通过如图63所示地以2为因子抽选2×2拜耳方格,或者可通过如图64所示地以4为因子抽选由4个2×2拜耳方格组成的4×4像素块,来导出亮度值Y。在一个实施例中,可使用梯度来确定AF分数。在另一实施例中,可通过应用使用Scharr算子的3×3转换来确定AF分数,Scharr算子提供旋转对称,同时最小化傅立叶域中的加权均方角误差。作为例子,以下示出了使用普通Scharr算子(以上讨论的)计算针对camY的粗略AF分数:
其中,in表示经抽选的亮度Y值。在其他实施例中,可使用其他3×3转换来计算粗略和精细统计信息两者的AF分数。
自动对焦调整可以取决于颜色分量被不同地执行,因为不同的光的波长可能会被镜头不同地影响,这是将水平滤波器684独立地应用到每个颜色分量的一个原因。因此,即使镜头中存在色差(chromaticaberration)仍可执行自动对焦。例如,当色差存在时,由于红色和蓝色相对于绿色典型地聚焦于不同的位置或距离,所以每个颜色的相对AF分数可被用于确定对焦方向。这在图65被更好地例示,图65示出了镜头740的蓝色、红色和绿色通道的最佳对焦位置。如图所示,用参考字母R、G和B分别描绘红色、绿色和蓝色的最佳对焦位置,其每一个都对应于一个AF分数,并且当前对焦位置为742。通常,在这样的配置中,期望将最佳对焦位置选择为对应于绿色分量的最佳对焦位置的位置(例如,由于拜耳RGB具有两倍于红色或蓝色分量的绿色分量),在这里是位置G。因此,可以预期对于最佳对焦位置,绿色通道应呈现出最高的自动对焦分数。因此,基于每个颜色的最佳对焦位置的位置(更靠近镜头的具有较高的AF分数),AF逻辑680和关联的控制逻辑84可以基于蓝色、绿色和红色的相对AF分数确定对焦方向。例如,如果相对于绿色通道,蓝色通道具有较高的AF分数(如图65所示),则从当前位置742向负方向(朝向图像传感器)调整对焦位置,而非必需首先在正方向中进行分析。在一些实施例中,可以使用颜色相关温度(CCT)执行发光体检测或分析。
另外,如上所述,还可以使用方差分数。例如,可为块大小(例如,8×8至32×32像素)累加像素和以及像素平方和的值,并且这些值可被用于导出方差分数(例如,avg_pixel2-(avg_pixel)^2)。可将方差相加以获得每个窗口的总方差分数。可使用较小的块大小以获得精细的方差分数,并且可使用较大的块大小以获得粗略的方差分数。
参考图51的3A统计逻辑468,逻辑468还可被配置为收集分量直方图750和752。如同将明了的,可将直方图用于分析图像中的像素等级分布。这对于执行某些功能可以是有用的,例如其中将直方图数据用于确定直方图规格(直方图匹配)的直方图均衡化。作为例子,可将亮度直方图用于AE(例如,用于调整/设置传感器积分时间),并且可将颜色直方图用于AWB。在本实施例中,如由区间数量(BinSize)所指定的,针对每个颜色分量,直方图可以是256、128、64或32个区间(bin)(其中像素的最高8、7、6和5位分别用于确定区间)。例如,当像素数据是14位时,可指定0-6之间的附加缩放因子和偏移量以确定出于统计目的收集什么范围的像素数据(例如,哪8位)。可如下获得区间号:
idx=((pixel-hist_offset)>>(6-hist_scale)
在一个实施例中,仅在区间索引处于[0,2^(8-BinSize)]的范围内的情况下,在颜色直方图区间中进行增量:
if(idx>=0&&idx<2^(8-BinSize))
StatsHist[idx]+=Count;
在本实施例中,统计处理单元120可包括两个直方图单元。第一直方图750(Hist0)可被配置为在4×4抽选之后收集像素数据作为统计信息收集的一部分。对于Hist0,可使用选择单元756将分量选择为RGB、sRGBlinear、sRGB或YC1C2。如图65中更详细所示,第二直方图752(Hist1)可被配置为在统计流水线之前(在缺陷像素校正逻辑460之前)收集像素数据。例如,如以下将讨论的,可使用逻辑760通过跳过像素来抽选(从124输出的)原始拜耳RGB数据(以生成信号754)。对于绿色通道,可在Gr、Gb、或Gr和Gb两者中选出颜色(在绿色区间中累加Gr和Gb两者的计数)。
为了保持两个直方图之间直方图区间宽度相同,Hist1可被配置为每4像素(每隔一个拜耳方格)收集一次像素数据。直方图窗口的起点确定第一拜耳方格的位置,在那里直方图开始累加。开始于这个位置,对于Hist1,每隔一个拜耳方格被水平和垂直跳过。对于Hist1,该窗口起点的位置可以是任意像素位置,并且因此可通过改变起点窗口位置来选择被直方图计算跳过的像素。Hist1可被用于收集与黑度密切相关的数据,在图66中由1112表示,以有助于在块462进行动态黑度补偿。因此,虽然为了例示目的在图66中示出了与3A统计逻辑468分离的直方图752,但是应该理解的是,直方图752实际上可以是写入存储器的统计信息的一部分,并且实际上可以物理地位于统计处理单元120内。
在本实施例中,红色(R)和蓝色(B)区间可以是20位,绿色(G)区间是21位(绿色更大以在Hist1中容纳Gr和Gb累加)。其允许4160×3120像素(12MP)的最大图片大小。所需的内部存储器大小是3×256×20(1)位(3个颜色分量,256个区间)。
关于存储器格式,用于AWB/AE窗口、AF窗口、2D颜色直方图和分量直方图的统计信息可被映射到寄存器以允许由固件早期访问。在一个实施例中,可使用两个存储器指针将统计信息写入存储器中,一个用于分块统计信息674,以及一个用于亮度行和678,随后是所有其他收集的统计信息。将所有统计信息写入外部存储器,该外部存储器可以是DMA存储器。存储器地址寄存器可以是双重缓冲的,以便可以针对每个帧指定存储器内的一个新位置。
在对ISP前端逻辑80下游的ISP流水逻辑82进行详细讨论之前,应当理解的是在统计处理单元120和122中的各种功能性逻辑块(例如逻辑块460、462、464、466和468),以及ISP前端像素处理单元130中的各种功能性逻辑块(例如逻辑块298和300)的布置仅旨在例示本技术的一个实施例。实际上,在其他实施例中,可以按照不同顺序来布置此处例示的逻辑块,或者可包括用于执行未在此处特别描述的附加图像处理功能的附加逻辑块。此外,应当理解的是在统计处理单元(例如120和122)中执行的图像处理操作,例如镜头明暗校正、缺陷像素检测/校正和黑度补偿,是出于收集统计数据的目的而在统计处理单元内执行的。因此,对由统计处理单元接收到的图像数据执行的处理操作实际上没有反映在从ISP前端像素处理逻辑130输出并被转发到ISP流水处理逻辑82的图像信号109上(FEProcOut)。
在继续之前,还应当注意的是,假设充足的处理时间和此处所描述的各种操作的许多处理需求之间的相似性,有可能重新配置此处所示的功能块以顺序方式来执行图像处理,而不是流水线性质。将会理解,这可能进一步降低整体硬件实现成本,但是可能增加到外部存储器的带宽(例如为了高速缓存/存储中间结果/数据)。
ISP流水线(“流水”)处理逻辑
以上已详细描述了ISP前端逻辑80,现在本讨论将其重点转移到ISP流水处理逻辑82。一般来说,ISP流水逻辑82的功能是接收可由ISP前端逻辑80提供的或从存储器108检索出的原始图像数据,并且对其执行附加图像处理操作,也就是在将图像数据输出到显示设备28之前进行处理。
图67描绘了示出ISP流水逻辑82的一个实施例的方框图。如图所示,ISP流水逻辑82可包括原始处理逻辑900、RGB处理逻辑902和YCbCr处理逻辑904。原始处理逻辑900可执行多种图像处理操作,例如以下将进一步讨论的缺陷像素检测和校正、镜头明暗校正、解马赛克、以及为自动白平衡应用增益和/或设置黑度。如本实施例所示,取决于选择逻辑906的当前配置,到原始处理逻辑900的输入信号908可以是来自ISP前端逻辑80的原始像素输出109(信号FEProcOut)或来自存储器108的原始像素数据112。
作为在原始处理逻辑900内执行解马赛克操作的结果,图像信号输出910可以处于RGB域,并可以在随后被转发至RGB处理逻辑902。例如,如图67所示,RGB处理逻辑902接收信号916,取决于选择逻辑914的当前配置,该信号916可以是输出信号910或来自存储器108的RGB图像信号912。RGB处理逻辑902可提供多种RGB颜色调整操作,包括以下将进一步讨论的颜色校正(例如使用颜色校正矩阵)、用于自动白平衡的颜色增益的应用、以及全局色调映射。RGB处理逻辑904还可提供RGB图像数据到YCbCr(亮度/色度)颜色空间的颜色空间变换。于是,图像信号输出918可以处于YCbCr域,并可在随后被转发至YCbCr处理逻辑904。
例如,如图67所示,YCbCr处理逻辑904接收信号924,取决于选择逻辑922的当前配置,该信号924可以是来自RGB处理逻辑902的输出信号918,或是来自存储器108的YCbCr信号920。如以下将进一步进行详细讨论的,YCbCr处理逻辑904可提供在YCbCr颜色空间内的图像处理操作,包括缩放,色度抑制,亮度锐化,亮度、对比度和颜色(BCC)调整,YCbCr伽马映射,色度抽选等。YCbCr处理逻辑904的图像信号输出926可被发送到存储器108,或可作为图像信号114(图7)从ISP流水处理逻辑82输出。图像信号114可被发送到显示设备28(直接地或通过存储器108),以供用户观看,或者可使用压缩引擎(例如编码器118)、CPU/GPU、图形引擎等而被进一步处理。
依照本技术的实施例,ISP流水逻辑82可支持8位、10位、12位或14位格式的原始像素数据的处理。例如在一个实施例中,8位、10位或12位的输入数据可在原始处理逻辑900的输出处被变换为14位,并且可使用14位精度来执行原始处理和RGB处理操作。在后一个实施例中,可在将RGB数据变换到YCbCr颜色空间之前,将14位图像数据下采样到10位,并且可以使用10位精度来执行YCbCr处理(逻辑904)。
为了提供对由ISP流水处理逻辑82所提供的多种功能的全面描述,以下将顺序的讨论原始处理逻辑900、RGB处理逻辑902和YCbCr处理逻辑904中的每一个,以及可在各个逻辑单元900、902和904中实现的用于执行各种图像处理操作的内部逻辑,首先从原始处理逻辑900开始。例如,现在参考图68,根据本技术的一个实施例,例示了示出原始处理逻辑900的一个实施例的更详细视图的方框图。如图所示,原始处理逻辑900包括增益、偏移和钳位(GOC)逻辑930,缺陷像素检测/校正(DPDC)逻辑932,降噪逻辑934,镜头明暗校正逻辑936,GOC逻辑938和解马赛克逻辑940。此外,虽然以下所讨论的例子假设结合(一个或多个)图像传感器90使用拜耳滤色器阵列,但是应当理解本技术的其他实施例也可利用不同类型的滤色器。
可以是原始图像信号的输入信号908首先由增益、偏移和钳位(GOC)逻辑930接收。GOC逻辑930可以提供与如以上图37中所讨论的有关ISP前端逻辑80的统计处理单元120的BLC逻辑462类似的功能,并以类似的方式来实现。例如GOC逻辑930可为拜耳图像传感器的每个颜色分量R、B、Gr和Gb独立地提供数字增益、偏移和钳位(截短)。更具体的,GOC逻辑930可以执行自动白平衡或设置原始图像数据的黑度。此外,在一些实施例中,GOC逻辑930还可被用来校正或补偿Gr和Gb颜色分量之间的偏移。
在操作中,当前像素的输入值首先由带符号的值来偏移,并与增益相乘。该操作可使用以上在等式11中示出的公式来执行,其中X表示用于给定颜色分量R、B、Gr或Gb的输入像素值,O[c]表示用于当前颜色分量c的带符号的16位偏移量,G[c]表示用于颜色分量c的增益值。可在统计处理期间(例如在ISP前端块80中)预先确定G[c]的值。在一个实施例中,增益G[c]可以是具有2个整数位和14个分数位的16位无符号数(例如2.14浮点表示),还可对增益G[c]应用舍入。仅作为示例,增益G[c]可具有0至4X之间的范围。
接着依照等式12将由等式11计算出的像素值Y(其包括增益G[c]和偏移量O[c])截短到最小值和最大值范围。如上所述,变量min[c]和max[c]可分别表示用于最小和最大输出值的带符号的16位“截短值”。在一个实施例中,GOC逻辑930还可被配置为保存每个颜色分量的分别在最大值范围之上和在最小值范围之下而被截短的像素的数量的计数。
随后,GOC逻辑930的输出被转发到缺陷像素检测和校正逻辑932。如以上参考图37所述(DPDC逻辑460),缺陷像素可归咎于一些因素,并且可包括“燥点”(或漏电像素)、“亮点”和“坏点”,其中燥点相对于非缺陷像素呈现出高于正常电荷泄漏的泄漏,因此可能比非缺陷像素看上去更亮;并且其中亮点看上去为常开(例如,全充电)并且因此表现的更亮,而坏点则看上去为常关。因此,希望能得到一种足够鲁棒以识别和解决不同类型的故障情形的像素检测方案。更具体的,当与可能仅能提供动态缺陷检测/校正的前端DPDC逻辑460相比较时,流水DPDC逻辑932可提供固定或静态缺陷检测/校正、动态缺陷检测/校正以及斑点移除。
依照此处公开的技术的实施例,由DPDC逻辑932执行的缺陷像素校正/检测可以为每个颜色分量(例如R、B、Gr和Gb)独立地进行,并且可包括多种用于检测缺陷像素的操作和多种用于校正检测到的缺陷像素的操作。例如,在一个实施例中,缺陷像素检测操作可提供对静态缺陷、动态缺陷的检测以及对斑点的检测,斑点可以指的是可能存在于成像传感器中的电干扰或噪声(例如光子噪声)。作为类比,斑点可能作为看上去的随机噪声伪影出现在图像中,类似于静态噪声可出现在诸如电视显示器的显示器上的方式。此外,如上所述,动态缺陷校正被在如下意义上认为是动态的:在给定的时刻将像素认为是有缺陷可取决于相邻像素中的图像数据。例如,如果总是处于最大亮度的亮点位于当前图像中由明亮白色主导的区域,则该亮点可能不被认为是缺陷像素。反之,如果亮点处于当前图像中由黑色或暗色主导的区域,则该亮点在经由DPDC逻辑932进行处理期间可被识别为缺陷像素,并被相应地校正。
关于静态缺陷检测,将每个像素的位置与静态缺陷表相比较,该表可存储了对应于已知有缺陷的像素的位置的数据。例如,在一个实施例中,DPDC逻辑932可监视缺陷像素的检测(例如使用计数器机制或寄存器),并且如果某特定像素被观察到重复地失败,该像素的位置被存储到静态缺陷表。因此,在静态缺陷检测期间,如果确定当前像素的位置处于静态缺陷表中,当前像素于是被识别为缺陷像素,并且一替代值被确定并临时存储。在一个实施例中,替代值可以是相同颜色分量的前一像素的值(基于扫描顺序)。如下所述,替代值可被用来在动态/斑点缺陷检测和校正期间校正静态缺陷。另外,如果前一像素处于原始帧278之外(图19),则不使用该前一像素的值,并可在动态缺陷校正处理期间校正静态缺陷。此外,考虑到存储器,静态缺陷表可存储有限数量的位置条目。例如,在一个实施例中,静态缺陷表可被实现为FIFO队列,其被配置为针对图像数据的每两条线存储共计16个位置。虽然如此,在静态缺陷表中定义的位置将使用前一像素替代值(而不是通过以下讨论的动态缺陷检测处理)来校正。如上所述,本技术的实施例还能够随时间间歇地更新静态缺陷表。
实施例可提供在片上存储器或片外存储器中实现的静态缺陷表。将明了的是,使用片上实现可能增加总体芯片面积/尺寸,而使用片外实现可降低芯片面积/尺寸,但会增加存储器带宽需求。因此,应当理解可取决于特定实现需求(即,将要存储在静态缺陷表中的像素的总数),片上或片外地实现该静态缺陷表。
动态缺陷和斑点检测处理可以相对于上述讨论的静态缺陷检测处理具有时移。例如,在一个实施例中,动态缺陷和斑点检测处理可于静态缺陷检测处理已经分析了两条扫描线(例如,行)的像素之后开始。可以明了的是,这允许在动态/斑点检测发生之前确定静态缺陷的识别以及它们各自的替代值。例如,在动态/斑点检测处理期间,如果当前像素在先前就被标记为静态缺陷,则使用先前估计的替代值来对静态缺陷进行简单校正,而不是应用动态/斑点检测操作。
关于动态缺陷和斑点检测,这些处理可顺序的或并行的发生。由DPDC逻辑932执行的动态缺陷和斑点检测和校正可依赖于使用像素至像素方向性梯度的自适应边缘检测。在一个实施例中,DPDC逻辑932可在所使用的原始帧278(图19)内选择当前像素的具有相同颜色分量的八个直接相邻的像素。换而言之,如下图69所示,当前像素及其八个直接相邻的像素P0、P1、P2、P3、P4、P5、P6和P7可形成3x3区域。
然而,应当注意的是,取决于当前像素P的位置,当计算像素至像素梯度时不考虑在原始帧278之外的像素。例如,对于如图69所示的“左上”情况942,当前像素P处于原始帧278的左上角,因此不考虑在原始帧278之外的相邻像素P0、P1、P2、P3和P5,仅剩下像素P4、P6和P7(N=3)。在“上”情况944,当前像素P处于原始帧278的最上边缘,因此不考虑在原始帧278之外的相邻像素P0、P1和P2,仅剩下像素P3、P4、P5、P6和P7(N=5)。接着,在“右上”情况946,当前像素P处于原始帧278的右上角,因此不考虑在原始帧278之外的相邻像素P0、P1、P2、P4和P7,仅剩下像素P3、P5和P6(N=3)。在“左”情况948,当前像素P处于原始帧278的最左边缘,因此不考虑在原始帧278之外的相邻像素P0、P3和P5,仅剩下像素P1、P2、P4、P6和P7(N=5)。
在“中心”情况950,所有像素P0-P7都位于原始帧278内,于是都被用来确定像素至像素梯度(N=8)。在“右”情况952,当前像素P处于原始帧278的最右边缘,因此不考虑在原始帧278之外的相邻像素P2、P4和P7,仅剩下像素P0、P1、P3、P5和P6(N=5)。另外,在“左下”情况954,当前像素P处于原始帧278的左下角,因此不考虑在原始帧278之外的相邻像素P0、P3、P5、P6和P7,仅剩下像素P1、P2和P4(N=3)。在“下”情况956,当前像素P处于原始帧278的最下边缘,因此不考虑在原始帧278之外的相邻像素P5、P6和P7,仅剩下像素P0、P1、P2、P3和P4(N=5)。最后,在“右下”情况958,当前像素P处于原始帧278的右下角,因此不考虑在原始帧278之外的相邻像素P2、P4、P5、P6和P7,仅剩下像素P0、P1和P3(N=3)。
因此,取决于当前像素P的位置,被用于确定像素至像素梯度的像素数量可能是3、5或8。在所示的实施例中,对于在图片(例如原始帧278)边界内的每个相邻像素(k=0至7),可如下的计算像素至像素梯度:
Gk=abs(P-Pk),对于0≤k≤7(仅对于在原始帧内的k)(51)
另外,可通过如下所示的等式来计算当前像素和其周围像素的平均Pav之间的差作为平均梯度Gav:
Gav=abs(P-Pav)(52b)
像素至像素梯度值(等式51)可被用来确定动态缺陷情况,相邻像素的平均(等式52a和52b)可被用来识别以下所讨论的斑点情况。
在一个实施例中,DPDC逻辑932可如下地执行动态缺陷检测。首先,如果一定数量的梯度Gk等于或低于由变量dynTh(动态缺陷阈值)表示的特定阈值,则假设该像素是有缺陷的。因此,对于每个像素,在图片边界内的相邻像素的等于或低于阈值dynTh的梯度的数量的计数(C)被累加。阈值dynTh可以是固定阈值分量和可取决于周围像素中出现的“活动性”的动态阈值分量的组合。例如,在一个实施例中,可通过计算高频分量值Phf来确定dynTh的动态阈值分量,计算高频分量值Phf则基于对平均像素值Pav(等式52a)和每个相邻像素之间的差的绝对值求和,如下所示:
在像素位于图像一角(N=3)或位于图像边缘(N=5)的情况下,Phf可分别乘上8/3或8/5。可以明了的是,这保证了基于八个相邻像素(N=8)来归一化高频分量Phf。
一旦确定了Phf,可如下所示计算动态缺陷检测阈值dynTh:
dynTh=dynTh1+(dynTh2×Phf),(53)
其中dynTh1表示固定阈值分量,dynTh2表示动态阈值分量,并且是等式53中用于Phf的乘数。可以为各个颜色分量提供不同的固定阈值分量dynTh1,但是对于每个相同颜色的像素,dynTh1是相同的。仅作为示例,可以设置dynTh1以使得其至少大于图像中的噪声方差。
可基于图像的某些特征来确定动态阈值分量dynTh2。例如,在一个实施例中,可使用存储的关于曝光和/或传感器积分时间的经验数据来确定dynTh2。该经验数据可在图像传感器(例如,90)的校准期间确定,并可将可为dynTh2选择的动态阈值分量值与多个数据点的每一个相关联。于是,基于可在由ISP前端逻辑80执行的统计处理期间确定的当前曝光和/或传感器积分时间值,可通过从存储的经验数据中选择对应于当前曝光和/或传感器积分时间值的动态阈值分量值来确定dynTh2。另外,如果当前曝光和/或传感器积分时间值没有直接对应于经验数据点中的一个点,则可通过对与当前曝光和/或传感器积分时间值落入其间的数据点相关联的动态阈值分量值进行插值而确定dynTh2。此外,类似于固定阈值分量dynTh1,对于每个颜色分量,动态阈值分量dynTh2可具有不同的值。因此,对于每个颜色分量(例如R、B、Gr、Gb),组合阈值dynTh可以不同。
如上所述,针对每个像素,确定在图片边界内的相邻像素的等于或低于阈值dynTh的梯度的数量的计数C。例如,对于在原始帧278内的每个相邻像素,可以如下计算等于或低于阈值dynTh的梯度Gk的累加计数C:
对于0≤k≤7(仅对于在原始帧内的k)
接着,如果累加计数C被确定为小于或等于由变量dynMaxC表示的最大计数,则该像素可被认为是动态缺陷。在一个实施例中,可为N=3(角)、N=5(边缘)和N=8的情况提供dynMaxC的不同值。该逻辑被表达为如下:
if(C≤dynMaxC),then当前像素P是有缺陷的。(55)
如上所述,缺陷像素的位置可被存储到静态缺陷表。在一些实施例中,在用于当前像素的动态缺陷检测期间计算的最小梯度值(min(Gk))可被存储并被用于分类缺陷像素,使得更大的最小梯度值指示缺陷的更大的“严重性”,并且应当在像素校正期间在不那么严重的缺陷被校正之前被校正。在一个实施例中,像素在被存储到静态缺陷表之前可能需要对其进行跨多个成像帧的处理,例如通过随着时间而过滤缺陷像素的位置。在后一实施例中,可仅当缺陷出现在特定数量的连续图像的相同位置时才将该缺陷像素的位置存储到静态缺陷表中。此外,在一些实施例中,静态缺陷表可被配置为基于最小梯度值来分类所存储的缺陷像素位置。例如,最高的最小梯度值可指示缺陷具有更大的“严重性”。通过以这种方式来对位置排序,可以设置静态缺陷校正的优先级,使得可以首先校正最严重或重要的缺陷。另外,静态缺陷表可随着时间被更新以包括新检测到的静态缺陷,并且由此基于它们各自的最小梯度值来对其进行排序。
可以通过确定值Gav(等式52b)是否高于斑点检测阈值spkTh来执行可与以上所述的动态缺陷检测处理并行发生的斑点检测。类似于动态缺陷阈值dynTh,斑点阈值spkTh也可包括固定和动态分量,其分别由spkTh1和spkTh2指代。一般来说,相比于dynTh1和dynTh2值,固定和动态分量spkTh1和spkTh2可被更“侵略性地”设置,以避免在可能具有较重纹理或其他(例如文字、树叶、特定织物图案等)的图像区域中错误地检测斑点。因而,在一个实施例中,动态斑点阈值分量spkTh2可以针对图像的高纹理区域有所增加,而对于“更平缓”或更均匀的区域则有所减小。可如下所示计算斑点检测阈值spkTh:
spkTh=spkTh1+(spkTh2×Phf),(56)
其中spkTh1表示固定阈值分量,并且其中spkTh2表示动态阈值分量。随后可依照以下表达式来确定斑点的检测:
if(Gav>spkTh),then当前像素P是斑点。(57)
一旦识别了缺陷像素,DPDC逻辑932可取决于检测到的缺陷类型来应用像素校正操作。例如,如果缺陷像素被识别为静态缺陷,则如上所述使用存储的替代值(例如相同颜色分量的前一像素的值)来代替该像素。如果像素被识别为动态缺陷或斑点,则可如下的执行像素校正。首先,如下所示,梯度在四个方向(水平(h)方向、垂直(v)方向、正对角方向(dp)和负对角方向(dn))上被计算为当前像素与第一和第二邻居像素之间的差的绝对值(例如等式51对Gk的计算)之和:
Gh=G3+G4(58)
Gv=G1+G6(59)
Gdp=G2+G5(60)
Gdn=G0+G7(61)
接着,经由与方向性梯度Gh、Gv、Gdp和Gdn中具有最小值的方向性梯度相关联的两个相邻像素的线性插值来确定校正像素值PC。例如,在一个实施例中,以下的逻辑陈述可表示对PC的计算:
if(min==Gh)(62)
elseif(min==Gv)
elseif(min==Gdp)
elseif(min==Gdn)
由DPDC逻辑932实现的像素校正技术还可考虑到边界条件处的例外。例如,如果关联于所选择的插值方向的两个相邻像素中的一个在原始帧之外,则用在原始帧内的那个邻居像素的值来代替。因此,使用该技术,校正像素值将等于在原始帧内的该邻居像素的值。
应当注意的是,在ISP流水处理期间由DPDC逻辑932应用的缺陷像素检测/校正技术相比于在ISP前端逻辑80中的DPDC逻辑460更为鲁棒。如以上实施例所讨论,DPDC逻辑460仅使用水平方向上的相邻像素来仅仅执行动态缺陷检测和校正,反之,DPDC逻辑932使用水平和垂直两方向上的相邻像素提供静态缺陷、动态缺陷和斑点的检测和校正。
将明了的是,使用静态缺陷表存储缺陷像素的位置可以以较低的存储器需求提供对缺陷像素的时域滤波。例如,相比于那些存储整个图像并随时间应用时域滤波以识别静态缺陷的传统技术,本技术的实施例仅存储缺陷像素的位置,这典型地可使用存储整个图像帧所需的存储器的仅仅一小部分就能实现。此外,如上所讨论,最小梯度值(min(Gk))的存储允许有效使用对缺陷像素被校正的位置的顺序区分优先级(例如开始于那些最显著的像素)的静态缺陷表。
另外,使用包括动态分量(例如,dynTh2和spkTh2)的阈值可有助于减少错误的缺陷检测,这是传统图像处理***在处理图像的高纹理区域(例如文字、树叶、特定织物图案等)时经常遇到的问题。此外,使用方向性梯度(例如h、v、dp、dn)来进行像素校正可降低当发生错误的缺陷检测时可视伪影的出现。例如,在最小梯度方向上的滤波可导致即使在错误检测的情况下,仍然能产生在大多数情况下可接受的结果的校正。另外,在梯度计算中包括当前像素P可提高梯度检测的准确度,尤其是在燥点的情况下。
以上所讨论的由DPDC逻辑932所实现的缺陷像素检测和校正技术可总结为图70-72所提供的一系列流程图。例如,首先参考图70,例示了用于检测静态缺陷的处理960。其开始于步骤962,在第一时间T0接收到输入像素P。接着,在步骤964,将像素P的位置与存储在静态缺陷表中的值相比较。判定逻辑966确定是否在静态缺陷表中找到像素P的位置。如果P的位置在静态缺陷表中,则处理960继续到步骤968,其中像素P被标记为静态缺陷并且确定替代值。如上所述,可基于相同颜色分量的前一像素(以扫描顺序)的值来确定替代值。处理960接着继续到步骤970,在这里,处理960进行到如图71所示的动态和斑点检测处理980。另外,如果判定逻辑966确定像素P的位置不在静态缺陷表中,则处理960进行到步骤970而不执行步骤968。
继续到图71,如步骤982所示,在时间T1接收输入像素P以供处理来确定是否存在动态缺陷或斑点。时间T1可表示相对于图70的静态缺陷检测处理960的时移。如上所讨论,可在静态缺陷检测处理已经分析了两条扫描线(例如行)的像素之后开始动态缺陷和斑点检测处理,从而允许在动态/斑点检测发生之前具有用于识别静态缺陷及确定他们各自的替代值的时间。
判定逻辑984确定输入像素P是否先前被标记为静态缺陷(例如通过处理960的步骤968)。如果P被标记为静态缺陷,则处理980可继续到如图72所示的像素校正处理,并且了绕过图71所示的其他步骤。如果判定逻辑984确定输入像素P不是静态缺陷,则处理继续到步骤986,并且识别可在动态缺陷和斑点处理中使用的相邻像素。例如,依照以上讨论并在图69中所示的实施例,相邻像素可包括像素P的8个直接相邻的像素(例如P0-P7),从而形成3x3像素区域。接着,在步骤988,如以上等式51所示,计算关于原始帧278内每个相邻像素的像素至像素梯度。另外,如等式52a和52b所示,将当前像素和其周围像素的平均值之差计算为平均梯度(Gav)。
处理980随后分支到用于动态缺陷检测的步骤990以及用于斑点检测的判定逻辑998。如上所述,在一些实施例中,可以并行地进行动态缺陷检测和斑点检测。在步骤990,确定小于或等于阈值dynTh的梯度的数量的计数C。如上所述,阈值dynTh可包括固定和动态分量,并且在一个实施例中,可依照以上等式53而被确定。如果C小于或等于最大计数dynMaxC,则处理980继续到步骤996,并且当前像素被标记为动态缺陷。此后,处理980可继续到以下将讨论的如图72所示的像素校正处理。
参考回步骤988之后的分支,对于斑点检测,判定逻辑998确定平均梯度Gav是否大于同样包括固定和动态分量的斑点检测阈值spkTh。如果Gav大于阈值spkTh,在步骤1000将像素P标记为包含斑点,此后,处理980继续到图72用于斑点像素的校正。此外,如果判定逻辑块992和998两者的输出都为“否”,这指示像素P不包括动态缺陷、斑点或静态缺陷(判定逻辑984)。因此,当判定逻辑992和998的输出都为“否”时,处理980可结束于步骤994,由此使像素P不经改变的通过,因为没有检测到缺陷(例如静态、动态或斑点)。
继续到图72,提供了依照上述技术的像素校正处理1010。在步骤1012,从图71的处理980接收输入像素P。应当注意的是处理1010可从步骤984(静态缺陷)或从步骤996(动态缺陷)和1000(斑点缺陷)接收像素P。接着判定逻辑1014确定像素P是否被标记为静态缺陷。如果像素P是静态缺陷,则步骤1010继续并结束于步骤1016,在此使用在步骤968(图70)确定的替代值来校正静态缺陷。
如果像素P没有被识别为静态缺陷,则处理1010从判定逻辑1014继续到步骤1018,并且计算方向性梯度。例如,如以上参考等式58-61所讨论的,将梯度计算为针对四个方向(h、v、dp和dn),中心像素与第一和第二相邻像素之差的绝对值之和。接着,在步骤1020,识别具有最小值的方向性梯度,并在此后,判定逻辑1022估计关联于该最小梯度的两个相邻像素中的一个是否位于图像帧(例如原始帧278)之外。如果两个相邻像素都在图像帧之内,则处理1010继续到步骤1024,并且如等式62所示,通过对这两个相邻像素的值应用线性插值以确定像素校正值(PC)。此后,如步骤1030所示,可使用经插值得到的像素校正值PC来校正输入像素P。
回到判定逻辑1022,如果其确定两个相邻像素中的一个位于图像帧(例如原始帧165)之外,则如步骤1026所示,代替使用该外部像素(Pout)的值,DPDC逻辑932可使用位于图像帧内的另一个相邻像素的值(Pin)来代替该Pout的值。此后,在步骤1028,通过对Pin的值以及Pout的替代值进行插值而确定像素校正值PC。换而言之,在这种情况下,PC可等于Pin的值。结束于步骤1030,使用值PC来校正像素P。在继续之前,应当理解此处所讨论的参考DPDC逻辑932的特定缺陷像素检测和校正处理仅旨在反映本技术的一个可能的实施例。实际上,取决于设计和/或成本约束,可以做出多种改变,并且可以增加或移除一些特征,使得缺陷检测/校正逻辑的整体复杂度和鲁棒性介于在ISP前端块80中实现的较为简单的检测/校正逻辑460和此处参考DPDC逻辑932所讨论的缺陷检测/校正逻辑之间。
参考回图68,校正后的像素数据被从DPDC逻辑932输出,并被降噪逻辑934接收以做进一步处理。在一个实施例中,降噪逻辑934可被配置为在维持细节和纹理的同时,实现二维边缘自适应低通滤波以降低图像数据中的噪声。可基于当前光照水平来设置(例如通过控制逻辑84)边缘自适应阈值,使得在弱光条件下可以增强滤波。此外,如同以上确定dynTh和spkTh值时曾简要提及的,可提前为给定传感器确定噪声方差,以使得降噪阈值被设置为刚好在噪声方差之上,因此在降噪处理期间,噪声被降低而不会显著影响场景的纹理和细节(例如,避免/减少错误检测)。假设为拜耳滤色器实施方式,降噪逻辑934可以使用可分离的7抽头水平滤波器和5抽头垂直滤波器来独立地处理每个颜色分量Gr、R、B和Gb。在一个实施例中,可通过校正绿色颜色分量(Gb和Gr)中的不均匀性,并在随后执行水平滤波和垂直滤波来开展所述降噪处理。
一般通过在均匀地照明平坦表面的情况下Gr和Gb像素之间的微小的明亮度差来表征绿色不均匀性(GNU)。如果不对这种不均匀性进行校正或补偿,在解马赛克之后,例如“迷宫式”伪影的特定伪影可能出现在全彩图像上。绿色不均匀性处理期间可包括为原始拜耳图像数据中的每个绿色像素确定当前绿色像素(G1)和当前绿色像素右下方的绿色像素(G2)之差的绝对值是否小于GNU校正阈值(gnuTh)。图73例示了在拜耳模式的2×2区域中的G1和G2像素的位置。如图所示,G1周围的像素的颜色可取决于当前绿色像素是Gb还是Gr像素。例如,如果G1是Gr,则G2是Gb,G1右边的像素是R(红色),G1下边的像素是B(蓝色)。作为替换,如果G1是Gb,则G2是Gr,G1右边的像素是B,而G1下边的像素是R。如果G1和G2之差的绝对值小于GNU校正阈值,则用G1和G2的平均值来代替当前绿色像素G1,其如以下逻辑所示:
if(abs(G1-G2)≤gnuTh);
可以明了的是,通过这种方式来应用绿色不均匀性校正可以有助于防止G1和G2像素被跨边缘平均,由此改善和/或保留锐度。
水平滤波可在绿色不均匀性校正之后应用,并且在一个实施例中可提供7抽头水平滤波器。计算每个滤波器抽头的跨边缘梯度,并且如果其大于水平边缘阈值(horzTh),则如下面将例示的,滤波器抽头被折叠到中心像素。水平滤波器可以针对每个颜色分量(R、B、Gr、Gb)独立处理所述图像数据,并可使用未经滤波的值作为输入值。
作为示例,图74示出了用于一组水平像素P0-P6的图形表示,其中中心抽头位于P3。基于如图74所示的像素,可如下计算对于每个滤波器抽头的边缘梯度:
Eh0=abs(P0-P1)(64)
Eh1=abs(P1-P2)(65)
Eh2=abs(P2-P3)(66)
Eh3=abs(P3-P4)(67)
Eh4=abs(P4-P5)(68)
Eh5=abs(P5-P6)(69)
边缘梯度Eh0-Eh5于是可被水平滤波器部件利用以使用如下所示的公式70来确定水平滤波输出Phorz:
Phorz=C0×[(Eh2>horzTh[c])?P3:(Eh1>horzTh[c])?P2:(Eh0>horzTh[c])?P1:P0]+
C1×[(Eh2>horzTh[c])?P3:(Eh1>horzTh[c])?P2:P1]+
C2×[(Eh2>horzTh[c])?P3:P2]+
C3×P3+(70)
C4×[(Eh3>horzTh[c])?P3:P4]+
C5×[(Eh3>horzTh[c])?P3:(Eh4>horzTh[c])?P4:P5]+
C6×[(Eh3>horzTh[c])?P3:(Eh4>horzTh[c])?P4:(Eh5>horzTh[c])?P5:P6],
其中horzTh[c]是用于每个颜色分量c(例如R、B、Gr和Gb)的水平边缘阈值,并且其中C0-C6分别是对应于像素P0-P6的滤波器抽头系数。水平滤波器输出Phorz可被应用到中心像素P3的位置。在一个实施例中,滤波器抽头系数C0-C6可以是16位二进制补码值,其具有3个整数位和13个分数位(3.13浮点)。此外,应当注意的是滤波器抽头系数C0-C6不是必须要关于中心像素P3对称。
在绿色不均匀性校正和水平滤波处理之后由降噪逻辑934应用垂直滤波。在一个实施例中,如图75所示,垂直滤波操作可提供5抽头滤波器,其中垂直滤波器的中心抽头位于P2。可以按照如同以上所述的水平滤波处理类似的方式来进行垂直滤波处理。例如,计算每个滤波器抽头的跨边缘的梯度,如果其大于垂直边缘阈值(vertTh),滤波器抽头被折叠到中心像素P2。垂直滤波器可针对每个颜色分量(R、B、Gr、Gb)独立处理图像数据,并且可以使用未经滤波的值作为输入值。
基于如图75所示的像素,可如下计算每个滤波器抽头的垂直边缘梯度:
Ev0=abs(P0-P1)(71)
Ev1=abs(P1-P2)(72)
Ev2=abs(P2-P3)(73)
Ev3=abs(P3-P4)(74)
边缘梯度Ev0-Ev5于是可由垂直滤波器利用,以使用如下所示的公式75来确定垂直滤波输出Pvert:
Pvert=C0×[(Ev1>vertTh[c])?P2:(Ev0>vertTh[c])?P1:P0]+
C1×[(Ev1>vertTh[c])?P2:P1]+
C2×P2+(75)
C3×[(Ev2>vertTh[c])?P2:P3]+
C4×[(Ev2>vertTh[c])?P2:(Eh3>vertTh[c])?P3:P4],
其中vertTh[c]是用于每个颜色分量c(例如R、B、Gr和Gb)的垂直边缘阈值,并且其中C0-C4分别是对应于图75中的像素P0-P4的滤波器抽头系数。垂直滤波输出Pvert可被应用到中心像素P2的位置。在一个实施例中,滤波器抽头系数C0-C4可以是16位二进制补码值,其具有3个整数位和13个分数位(3.13浮点)。此外,应当注意的是滤波器抽头系数C0-C4不是必须要关于中心像素P2对称。
另外,关于边界条件,当相邻像素在原始帧278(图19)之外时,使用在原始帧的边缘处的相同颜色像素的值来复制边界外像素的值。该约定可对水平和垂直滤波操作两者实施。作为示例,再次参考图74,在水平滤波的情况下,如果像素P2是位于原始帧最左边的边缘像素,并且像素P0和P1处于原始帧之外,则使用像素P2的值来代替像素P0和P1的值以用于水平滤波。
再次参考回图68中所示的原始处理逻辑900的方框图,降噪逻辑934的输出被随后发送到镜头明暗校正(LSC)逻辑936以供处理。如上所讨论的,镜头明暗校正技术可包括逐像素应用合适的增益以补偿光强度的衰落,该光强度的衰落可能是由镜头的几何光学、制造缺陷、微镜头阵列和颜色阵列滤波器之间的未对准等导致的。此外,在一些镜头中的红外(IR)滤波器也可导致衰落依赖于发光体,并且于是镜头明暗增益可以取决于检测到的光源而被修改。
在所描绘的实施例中,ISP流水82的LSC逻辑936可以按照类似的方式来实现,并且于是一般地提供与参考以上附图40-48所讨论的ISP前端块80的LSC逻辑464相同的功能。因此,为了避免冗余,应当理解的是此处例示实施例的LSC逻辑936被配置为以与LSC逻辑460大体相同的方式操作,因此在此将不再重复以上提供的对镜头明暗校正技术的描述。然而,为了一般性地总结,应当理解的是LSC逻辑936可以独立地处理原始像素数据流的每个颜色分量以确定将应用到当前像素的增益。依照以上所述的实施例,可基于跨成像帧分布的一组定义的增益栅格点来确定镜头明暗校正增益,其中由多个像素(例如8个像素,16个像素等)来定义每个栅格点之间的间隔。如果当前像素的位置对应于栅格点,则将关联于该栅格点的增益值应用到当前像素。然而,如果当前像素的位置在栅格点之间(例如图43的G0、G1、G2和G3),则可通过对当前像素位于其间的栅格点进行插值来计算LSC增益值(等式13a和13b)。该处理由图44的处理528所描绘。此外,如参考图42所提及的,在一些实施例中,栅格点可被非均匀地分布(例如对数分布),使得栅格点在LSC区域504的中心较不集中,而是朝向LSC区域的各角(通常在那里镜头明暗失真更容易被察觉)更为集中。
另外,如参考图47和48所讨论的,LSC逻辑936还可与栅格增益值一起应用径向增益分量。径向增益分量可基于当前像素与图像的中心像素的距离来确定(等式14-16)。如所述的,使用径向增益允许对所有颜色分量使用单个共用增益栅格,这将大大地减少为每个颜色分量存储单独的增益栅格所需的总存储空间。栅格增益数据的这一减少可降低实现成本,因为栅格增益数据表会占据图像处理硬件中的存储器或芯片区域的很大一部分。
接着,再次参考图68的原始处理逻辑方框图900,LSC逻辑936的输出随后被传递到第二增益、偏移和钳位(GOC)块938。GOC逻辑938可在解马赛克(通过逻辑块940)之前被应用,并且可被用来对LSC逻辑936的输出执行自动白平衡。在所描绘的实施例中,GOC逻辑938可以按照与GOC逻辑930(和BLC逻辑462)相同的方式来实现。因此,依照以上的等式11,由GOC逻辑938接收到的输入首先被偏移一个带符号的值,随后乘以增益。结果值然后依照等式12被截短到最小值和最大值范围。
此后,GOC逻辑938的输出被转发到解马赛克逻辑940以供处理,从而基于原始拜耳输入数据产生全彩(RGB)图像。将明了的是,使用滤色器阵列(例如拜耳滤波器)的图像传感器的原始输出在以下意义上是“不完整的”:每个像素被滤波以仅获取单个颜色分量。因此仅为单个像素收集的数据不足以确定颜色。因此,解马赛克技术可被用来通过为每个像素插值估计丢失的颜色数据而从原始拜耳数据生成全彩图像。
现在参考图76,例示了提供关于可如何将解马赛克应用到原始拜耳图像模式1034以产生全彩RGB的一般概观的图形处理流程692。如图所示,原始拜耳图像1034的4×4部分1036可包括用于每个颜色分量的分开的通道,包括绿色通道1038、红色通道1040和蓝色通道1042。因为在拜耳传感器中的每个成像像素仅获取关于一种颜色的数据,所以每个颜色通道1038、1040和1042的颜色数据是不完整的,其由符号“?”指示。通过应用解马赛克技术1044,可以进行插值来得到每个通道的丢失颜色采样。例如,如参考标记1046所示,经插值得到的数据G’可被用来填充绿色颜色通道中的丢失采样,类似地,经插值得到的数据R’可(与经插值得到的数据G’1046组合)被用来填充红色颜色通道1048中的丢失采样,经插值得到的数据B’可(与经插值得到的数据G’1046组合)被用来填充蓝色颜色通道1050中的丢失采样。因此,作为解马赛克处理的结果,每个颜色通道(R、G、B)将具有一组完整的颜色数据,这些数据随后可被用来重构全彩RGB图像1052。
现将依照一个实施例描述可由解马赛克逻辑940实现的解马赛克技术。在绿色颜色通道中,可对已知的绿色采样使用低通方向性滤波器并对相邻的颜色通道(例如红色和蓝色)使用高通(或梯度)滤波器来插值得到丢失的颜色采样。对于红色和蓝色颜色通道,可通过类似的方式来插值得到丢失的颜色采样,但是对已知的红色或蓝色值使用低通滤波并且对并存的经插值得到的绿色值使用高通滤波。此外,在一个实施例中,对绿色颜色通道的解马赛克可利用基于初始拜耳颜色数据的5×5像素块边缘自适应滤波器。如以下将进一步讨论的那样,使用边缘自适应滤波器可提供以经水平和垂直滤波的值的梯度为基础的连续加权,这可减少传统解马赛克技术中常见的某些伪影的出现,例如混叠、“棋盘格”或“彩虹”伪影。
在对绿色通道解马赛克期间,使用拜耳图像模式的绿色像素(Gr和Gb像素)的初始值。然而,为了获得用于绿色通道的一组完整数据,可在拜耳图像模式的红色和蓝色像素处插值得到绿色像素值。依照本技术,基于上述的5×5像素块,首先在红色和蓝色像素处计算分别被称为Eh和Ev的水平和垂直能量分量。如以下将进一步讨论的那样,Eh和Ev的值可被用于获得来自水平和垂直滤波步骤的边缘加权的经滤波值。
作为示例,图77例示了对位于5×5像素块中心位置(j,i)的红色像素的Eh和Ev值的计算,其中j对应于行而i对应于列。如图所示,Eh的计算考虑了5×5像素块的中间三行(j-1,j,j+1),Ev的计算考虑了5×5像素块的中间三列(i-1,i,i+1)。为了计算Eh,将在红色列(i-2,i,i+2)中被乘上对应系数(例如-1用于列i-2和i+2,2用于列i)的像素的每一个的和的绝对值与在蓝色列(i-1,i+1)中被乘上对应系数(例如1用于列i-1,-1用于列i+1)的像素的每一个的和的绝对值相加。为了计算Ev,将在红色行(j-2,j,j+2)中被乘上对应系数(例如-1用于行j-2和j+2,2用于行j)的像素的每一个的和的绝对值与在蓝色行(j-1,j+1)中被乘上对应系数(例如1用于行j-1,-1用于行j+1)的像素的每一个的和的绝对值相加。这些计算可由以下的等式76和77所例示:
Eh=abs[2((P(j-1,i)+P(j,i)+P(j+1,i))-(76)
(P(j-1,i-2)+P(j,i-2)+P(j+1,i-2))-
(P(j-1,i+2)+P(j,i+2)+P(j+1,i+2)]+
abs[(P(j-1,i-1)+P(j,i-1)+P(j+1,i-1))-
(P(j-1,i+1)+P(j,i+1)+P(j+1,i+1)]
Ev=abs[2(P(j,i-1)+P(j,i)+P(j,i+1))-(77)
(P(j-2,i-1)+P(j-2,i)+P(j-2,i+1))-
(P(j+2,i-1)+P(j+2,i)+P(j+2,i+1]+
abs[(P(j-1,i-1)+P(j-1,i)+P(j-1,i+1))-
(P(j+1,i-1)+P(j+1,i)+P(j+1,i+1)]
因此,总能量和可被表达为:Eh+Ev。此外,虽然如图77所示的例子例示了对于在(j,i)的红色中心像素的Eh和Ev的计算,但应当理解的是可以通过类似的方式确定用于蓝色中心像素的Eh和Ev值。
接着,水平和垂直滤波可被应用到拜耳模式以获得经垂直和水平滤波的值Gh和Gv,其分别可表示在水平和垂直方向上的经插值得到的绿色值。除了使用相邻颜色(R和B)的方向性梯度以在丢失的绿色采样的位置处获得高频信号之外,还可对已知的相邻绿色采样使用低通滤波器,从而确定经滤波的值Gh和Gv。例如,参考图78,现将例示用于确定Gh的水平插值的例子。
如图78所示,可以在确定Gh时考虑拜耳图像的红色行1060的五个水平像素(R0、G1、R2、G3和R4),其中假设R2是位于(j,i)的中心像素。分别关联于这五个像素的滤波系数由参考标记1062指示。因此,可以如下确定用于中心像素R2的、被称为G2’的绿色值的插值:
于是可以利用多种数学运算来产生如以下等式79和80所示的G2’的表达式:
因此,参考图78和以上的等式78-80,可以导出用于在(j,i)处的绿色值的水平插值的一般表达式:
可以通过与Gh类似的方式来确定垂直滤波分量Gv。例如,参考图79,在确定Gv时考虑拜耳图像的红色列1064的五个垂直像素(R0、G1、R2、G3和R4)以及它们各自的滤波系数1068,其中假设R2是位于(j,i)处的中心像素。在垂直方向上,对已知的绿色采样使用低通滤波,对红色通道使用高通滤波,可以导出如下用于Gv的表达式:
虽然此处所讨论的例子已经示出了对红色像素的绿色值的插值,但应当理解的是,等式81和82中阐述的表达式还可被用于对蓝色像素进行绿色值的水平和垂直插值。
可通过使用如上讨论的能量分量(Eh和Ev)对水平和垂直滤波器输出(Gh和Gv)进行加权来确定用于中心像素(j,i)的最终的经插值得到的绿色值G’,以产生如下等式:
如上所述,能量分量Eh和Ev可提供水平和垂直滤波器输出Gh和Gv的边缘自适应加权,这可有助于减少重构的RGB图像中的图像伪影,例如彩虹、混叠或棋盘格伪影。另外,解马赛克逻辑940可提供通过将Eh和Ev值分别设为1来旁路边缘自适应加权特征的可选项,使得Gh和Gv被相等地加权。
在一个实施例中,如上述等式51所示的水平和垂直加权系数可被量化,以将加权系数的精度降低到一组“粗略”值。例如,在一个实施例中,加权系数可被量化为八个可能的权重比率:1/8、2/8、3/8、4/8、5/8、6/8、7/8和8/8。其他实施例可将加权系数量化为16个值(例如1/16至16/16),32个值(1/32至32/32)等。可以明了的是,当与使用全精度值(例如32位浮点值)相比较时,加权系数的量化可降低在确定加权系数并将其应用到水平和垂直滤波器输出的情况下的实现复杂度。
在其他实施例中,除了确定和使用水平和垂直能量分量以将加权系数应用到经水平(Gh)和垂直(Gv)滤波的值之外,此处公开的技术还可在正对角和负对角方向上确定和利用能量分量。例如,在这样的实施例中,也可将滤波应用到正对角和负对角方向。滤波器输出的加权可包括选择两个最高能量分量,以及使用所选择的能量分量来加权它们各自的滤波器输出。例如,假设两个最高能量分量对应于垂直和正对角方向,则垂直和正对角能量分量被用来加权垂直和正对角滤波器输出以确定经插值得到的绿色值(例如在拜耳模式中的红色或蓝色像素位置处)。
接着,可通过在拜耳图像模式的绿色像素处插值得到红色和蓝色值、在拜耳图像模式的蓝色像素处插值得到红色值和在拜耳图像模式的红色像素处插值得到蓝色值,而执行对红色和蓝色颜色通道的解马赛克。依照此处讨论的技术,可通过使用基于已知的相邻红色和蓝色像素的低通滤波和基于并存的绿色像素值(取决于当前像素的位置,其可能是初始值或经插值得到的值(来自上述的绿色通道解马赛克处理))的高通滤波,来插值得到丢失的红色和蓝色像素值。因此,关于这个实施例,应当理解的是可以首先执行丢失的绿色值的插值,以使得在插值得到丢失的红色和蓝色采样时可以使用完整的绿色值集合(初始值和经插值得到的值)。
可参考图80来描述红色和蓝色像素值的插值,图80表示拜耳图像模式的可对其应用红色和蓝色解马赛克的各种3×3块,以及在对绿色通道解马赛克期间已经获得的经插值得到的绿色值(简称插值绿色值)(表示为G’)。首先参考块1070,可如下的确定用于Gr像素(G11)的经插值得到的红色值(简称插值红色值)R’11:
其中G’10和G’12表示插值绿色值,如参考标记1078所示。同样地,可如下的确定用于Gr像素(G11)的经插值得到的蓝色值(简称插值蓝色值)B’11:
其中G’01和G’21表示插值绿色值(1078)。
接着,参考像素块1072,其中中心像素是Gb像素(G11),可根据以下所示的等式86和87来确定插值红色值R’11和插值蓝色值B’11:
此外,参考像素块1074,可如下的确定对蓝色像素B11的红色值的插值:
其中,G’00、G’02、G’11、G’20和G’22表示插值绿色值,如参考标记1080所示。最后,如像素块1076所示,可如下的计算对红色像素的蓝色值的插值:
虽然以上所讨论的实施例依赖于颜色差(例如梯度)来确定红色和蓝色经插值得到的值,另一个实施例可使用颜色比值来提供插值红色值和插值蓝色值。例如,插值绿色值(块1078和1080)可被用来获得在拜耳图像模式的红色和蓝色像素位置处的颜色比值,并且这些比值的线性插值可被用来确定用于丢失的颜色采样的经插值得到的颜色比值。将可以是经插值得到的值或初始值的绿色值与经插值得到颜色比值相乘以获得最终的插值颜色值。例如,可依照以下公式来执行使用颜色比值的红色和蓝色像素值的插值,其中等式90和91表示用于Gr像素的红色和蓝色值的插值,等式92和93表示用于Gb像素的红色和蓝色值的插值,等式94表示对蓝色像素的红色值的插值,以及等式95表示对红色像素的蓝色值的插值:
(当G11是Gr像素时插值得到的R’11)
(当G11是Gr像素时插值得到的B’11)
(当G11是Gb像素时插值得到的R’11)
(当G11是Gb像素时插值得到的B’11)
(对蓝色像素B11,经插值得到的R’11)
(对红色像素R11,经插值得到的B’11)
一旦为来自拜耳图像模式的每个图像像素插值了丢失的颜色采样,可将用于红色、蓝色和绿色颜色通道(例如图76中的1046、1048和1050)的每一个的颜色值的完整采样组合在一起以生成全彩RGB图像。例如,回去参考图49和50,原始像素处理逻辑900的输出910可以是以8、10、12或14位格式的RGB图像信号。
现在参考图81-84,其表示依照公开的实施例的描述用于对原始拜耳图像模式解马赛克的处理的多种流程图。特别地,图81的处理1082描述对于给定的输入像素P,确定哪些颜色分量将***值。基于处理1082的确定,可以执行(例如通过解马赛克逻辑940)用于插值得到绿色值的处理1100(图82)、用于插值得到红色值的处理1112(图83)或用于插值得到蓝色值的处理1124(图84)中的一个或多个。
从图81开始,当接收到输入像素P时,处理1082从步骤1084开始。判定逻辑1086确定输入像素的颜色。例如,这可能取决于位于拜耳图像模式内的像素的位置。因此,如果P被识别为绿色像素(例如Gr或Gb),处理器1082进行到步骤1088以获得用于P的插值红色和蓝色值。这可包括,例如分别继续到图83和84的处理1112和1124。如果P被识别为红色像素,则处理1082进行到步骤1090以获得用于P的插值绿色和蓝色值。这可包括进一步分别执行图82和84的处理1100和1124。另外,如果P被识别为蓝色像素,则处理1082进行到步骤1092以获得用于P的插值绿色和红色值。这可包括进一步分别执行图82和83的处理1100和1112。以下将进一步讨论处理1100、1112和1124的每一个。
图82表示用于确定输入像素P的插值绿色值的处理1100,其包括步骤1102-1110。在步骤1102,接收到输入像素P(例如来自处理1082)。接着,在步骤1104,识别形成5×5像素块的相邻像素集合,其中P处于该5×5块的中心。此后,在步骤1106分析该像素块以确定水平和垂直能量分量。例如,可依照用于计算Eh和Ev的等式76和77来分别确定水平和垂直能量分量。如上所述,能量分量Eh和Ev可被用作加权系数以提供边缘自适应滤波,从而在最终图像中降低特定解马赛克伪影的出现。在步骤1108,将低通滤波和高通滤波应用到水平和垂直方向上以确定水平和垂直滤波输出。例如,可依照等式81和82来计算水平和垂直滤波输出Gh和Gv。接着,处理1082继续到步骤1110,如等式83所示,其基于使用能量分量Eh和Ev加权后的Gh和Gv的值来插值得到插值绿色值G’。
接着,关于图83的处理1112,红色值的插值开始于步骤1114,其接收输入像素P(例如来自处理1082)。在步骤1116,识别形成3×3像素块的相邻像素集合,其中P处于该3×3像素块的中心。此后,在步骤1118,将低通滤波应用到该3×3块内的相邻红色像素,将高通滤波(步骤1120)应用到并存的绿色相邻值(其可能是由拜耳图像传感器捕捉的初始绿色值或经插值得到的值(例如通过图82的处理1100确定的))。如步骤1122所示,可基于低通和高通滤波输出来确定用于P的插值红色值R’。基于P的颜色,可依照等式84、86或88中的一个来确定R’。
关于蓝色值的插值,可以应用图84的处理1124。其步骤1126和1128与处理1112(图83)的步骤1114和1116大体相同。在步骤1130,将低通滤波应用到3×3块内的相邻蓝色像素,在步骤1132,将高通滤波应用到并存的绿色相邻值(其可能是由拜耳图像传感器捕捉的初始绿色值或经插值得到的值(例如通过图82的处理1100确定的))。如步骤1134所示,可基于低通和高通滤波输出来确定用于P的插值蓝色值B’。基于P的颜色,可依照等式85、87或89中的一个来确定B’。此外,如上所述,可使用颜色差(等式84-89)或颜色比值(等式90-95)来确定红色和蓝色值的插值。同样,应当理解的是可首先执行丢失的绿色值的插值,这样当插值丢失的红色和蓝色采样时可以使用绿色值的完整集合(初始的和经插值得到的值)。例如,在分别执行图83和84的处理1112和1124之前可应用图82的处理1100以插值得到所有丢失的绿色颜色采样。
参考图85-88,其提供了由ISP流水82中的原始像素处理逻辑900处理的图像的有色图的例子。图85表示可由成像设备30的图像传感器90捕捉的初始图像场景1140。图86示出可表示由图像传感器90捕捉的原始像素数据的原始拜耳图像1142。如上所述,传统的解马赛克技术可能无法提供基于图像数据中对边缘(例如在两个或更多个颜色区域之间的边界)的检测的自适应滤波,这可能在得到的重构全彩RGB图像中产生不期望的伪影。例如,图87表示使用传统解马赛克技术来重构的RGB图像1144,其可能包括伪影,例如在边缘1148处的“棋盘格”伪影1146。然而,将图像1144与图88的RGB图像1150相比较,图88可以是使用以上描述的解马赛克技术来重构的图像的一个例子,可见在图87中出现的棋盘格伪影1146不再出现,或者至少在边缘1148处充分降低了伪影的外观。因此,如图85-88所示的图像旨在图示出此处公开的解马赛克技术相对于传统方法的至少一个优点。
回去参考图67,现在已经彻底地描述了原始像素处理逻辑900的操作,其可输出RGB图像信号910,本讨论现在将关注于描述由RGB处理逻辑902对RGB图像信号910的处理。如图所示,RGB图像信号910可被发送到选择逻辑914和/或存储器108。RGB处理逻辑902可接收输入信号916,输入信号916可以是来自信号910或来自存储器108的如信号912所示的RGB图像数据,这取决于选择逻辑914的配置。可通过RGB处理逻辑902来处理RGB图像数据916以执行包括颜色校正(例如使用颜色校正矩阵)的颜色调整操作、用于自动白平衡的颜色增益的应用以及全局色调映射等。
图89表示用于描述RGB处理逻辑902的一个实施例的更详细视图的方框图。如图所示,RGB处理逻辑902包括增益、偏移和钳位(GOC)逻辑1160,RGB颜色校正逻辑1162,GOC逻辑1164,RGB伽马调整逻辑和颜色空间变换逻辑1168。输入信号916首先被增益、偏移和钳位(GOC)逻辑1160接收。在所示的实施例中,在颜色校正逻辑1162执行处理之前,GOC逻辑1160可应用增益以在R、G或B颜色通道的一个或多个上执行自动白平衡。
GOC逻辑1160可与原始图像处理逻辑900的GOC逻辑930类似,除了处理的是RGB域的颜色分量而不是拜耳图像数据的R、B、Gr和Gb分量。在操作中,如以上的等式11所示,首先使用带符号的值O[c]来偏移当前像素的输入值,接着将其乘上增益G[c],其中c表示R、G和B。如上所述,增益G[c]可以是16位的无符号数,其具有2个整数位和14个分数位(例如2.14浮点表示),可预先在统计处理期间(例如在ISP前端块80)确定增益G[c]的值。接着依照等式12将计算得到的像素值Y(基于等式11)截短到最小值和最大值范围。如上所述,变量min[c]和max[c]分别表示用于最小和最大输出值的带符号的16位“截短值”。在一个实施例中,GOC逻辑1160还可被配置为为每个颜色分量R、G和B保存分别在最大值之上和在最小值之下而被截短的像素的数量的计数。
接着GOC逻辑1160的输出被转发到颜色校正逻辑1162。依照此处公开的技术,颜色校正逻辑1162可被配置为使用颜色校正矩阵(CCM)而应用颜色校正到RGB图像数据。在一个实施例中,CCM可以是3×3RGB变换矩阵,尽管其他实施例还可以利用其他尺寸的矩阵(例如4×3等)。因此,可如下的表示对具有R、G和B分量的输入像素执行颜色校正的处理:
其中R、G和B表示输入像素的当前红色、绿色和蓝色值,CCM00-CCM22表示颜色校正矩阵的系数,以及R’、G’和B’表示输入像素的校正后的红色、绿色和蓝色值。因此,可依照以下的等式97-99来计算校正颜色值:
R′=(CCM00×R)+(CCM01×G)+(CCM02×B)(97)
G′=(CCM10×R)+(CCM11×G)+(CCM12×B)(98)
B′=(CCM20×R)+(CCM21×G)+(CCM22×B)(99)
如上所述,可以在ISP前端块80的统计处理期间确定CCM的系数(CCM00-CCM22)。在一个实施例中,可以选择用于给定颜色通道的系数,以使得这些系数(例如用于红色颜色校正的CCM00、CCM01和CCM02)之和等于1,这可有助于维持明亮度和颜色平衡。此外,系数通常被选择为使得正增益将被应用到要被校正的颜色。例如,对于红色颜色校正,系数CCM00可以大于1,而系数CCM01和CCM02的一个或两个可小于1。通过这样的方式来设置系数可以增强在得到的经校正的R’值中的红色(R)分量,同时减弱蓝色(B)和绿色(G)分量。将明了的是,这可以应对在获取初始拜耳图像期间可能发生的颜色重叠的问题,这一问题是因为用于特定颜色像素的经滤波的光的一部分可能“渗透”(bleed)到不同颜色的相邻像素中。在一个实施例中,CCM的系数可被提供为16位的二进制补码数,其具有4个整数位和12个分数位(表示为4.12浮点)。另外,如果该值超过最大值或小于最小值,颜色校正逻辑1162可提供对计算出的经校正颜色值的截短。
接着将RGB颜色校正逻辑1162的输出传递给另一个GOC逻辑块1164。GOC逻辑1164可以按照跟GOC逻辑1160相同的方式来实现,因此,这里不再重复对增益、偏移和钳位功能的详细描述。在一个实施例中,在颜色校正之后应用GOC逻辑1164可提供基于校正后的颜色值的图像数据的自动白平衡,并且其还可以调整红色与绿色比以及蓝色与绿色比的传感器变化。
接着,GOC逻辑1164的输出被发送到RGB伽马调整逻辑1166以供进一步处理。例如,RGB伽马调整逻辑1166可提供伽马校正、色调映射、直方图匹配等。依照公开的实施例,伽马调整逻辑1166可将输入RGB值映射成相应的输出RGB值。例如,伽马调整逻辑可提供包括三个查找表的集合,每个表用于R、G和B分量的一个。作为示例,每个查找表可被配置为存储10位值的256个条目,每个值表示一个输出等级。表条目可均匀的分布在输入像素值的范围内,从而当输入值落入在两个条目之间时,可进行线性插值得到输出值。在一个实施例中,可复制用于R、G和B的三个查找表的每一个,以使得查找表被“双重缓存”于存储器中,从而允许在处理期间使用一个表时还能对其拷贝进行更新。基于以上所述的10位输出值,应当注意的是通过本实施例中的伽马校正处理,14位RGB图像信号将被有效地下采样至10位。
伽马调整逻辑1166的输出可被发送到存储器108和/或颜色空间变换逻辑1168。颜色空间变换(CSC)逻辑1168可被配置为将来自伽马调整逻辑1166的RGB输出变换到YCbCr格式,其中Y表示亮度分量,Cb表示蓝色差色度分量,Cr表示红色差色度分量,由于在伽马调整操作期间执行了将RGB数据从14位变换为10位的位深变换,以上这些分量都可以是10位格式。如上所述,在一个实施例中,伽马调整逻辑1166的RGB输出可被下采样到10位,并通过CSC逻辑1168将其变换到10位YCbCr值,接着可将10位YCbCr值转发到以下将进一步描述的YCbCr处理逻辑904。
可使用颜色空间变换矩阵(CSCM)来执行从RGB域到YCbCr颜色空间的变换。例如,在一个实施例中,CSCM可以是3×3变换矩阵。可依照已知的变换等式,例如BT.601和BT.709标准,来设置CSCM的系数。另外,CSCM系数可灵活地基于期望的输入和输出的范围。因此,在一些实施例中,可基于在ISP前端块80中的统计处理期间收集的数据来确定和编程CSCM系数。
用于对RGB输入像素执行YCbCr颜色空间变换的处理可如下表示:
其中R、G和B表示输入像素的10位格式的当前红色、绿色和蓝色值(例如通过伽马调整逻辑1166的处理),CSCM00-CSCM22表示颜色空间变换矩阵的系数,Y、Cb和Cr表示得到的输入像素的亮度和色度分量。因此,可依照以下的等式101-103来计算Y、Cb和Cr的值:
Y=(CSCM00×R)+(CSCM01×G)+(CSCM02×B)(101)
Cb=(CSCM10×R)+(CSCM11×G)+(CSCM12×B)(102)
Cr=(CSCM20×R)+(CSCM21×G)+(CSCM22×B)(103)
如以下将讨论的,在颜色空间变换操作之后,得到的YCbCr值可从CSC逻辑1168输出作为信号918,其可由YCbCr处理逻辑904处理。
在一个实施例中,CSCM的系数可以是16位的二进制补码数,其具有4个整数位和12个分数位(4.12)。在另一个实施例中,CSC逻辑1168可进一步被配置为应用偏移量到Y、Cb和Cr值的每一个,并将结果值截短到最小和最大值。仅作为示例,假设YCbCr值是10位格式,偏移量可在-512至512的范围内,并且最小和最大值可以分别是0和1023。
再次参考图67中的ISP流水逻辑82的方框图,YCbCr信号918可被发送到选择逻辑922和/或存储器108。YCbCr处理逻辑904可接收输入信号924,其可以是来自信号918或来自存储器108的如信号920所示的YCbCr图像数据,这取决于选择逻辑922的配置。接着可通过YCbCr处理逻辑904来处理YCbCR图像数据924以执行亮度锐化,色度抑制,色度降噪,以及亮度、对比度和颜色调整等。此外,YCbCr处理逻辑904可提供在水平和垂直方向上对经处理的图像数据的伽马映射和缩放。
图90表示描述YCbCr处理逻辑904的一个实施例的更详细的视图的方框图。如图所示,YCbCr处理逻辑904包括图像锐化逻辑1170,用于调整亮度、对比度和/或颜色的逻辑1172,YCbCr伽马调整逻辑1174,色度抽选逻辑1176以及缩放逻辑1178。YCbCr处理逻辑904可被配置为使用1平面、2平面或3平面存储器配置来处理4:4:4、4:2:2或4:2:0格式的像素数据。此外,在一个实施例中,YCbCr输入信号924可提供10位值的亮度和色度信息。
将明了的是,提到1平面、2平面或3平面,指的是在图片存储器中利用的成像平面的数量。例如,在3平面格式中,Y、Cb和Cr分量的每一个都可利用单独的各自的存储器平面。在2平面格式中,第一平面可被提供给亮度分量(Y),并且交织Cb和Cr采样的第二平面可被提供给色度分量(Cb和Cr)。在1平面格式中,存储器中的单个平面以亮度和色度采样相交织。此外,关于4:4:4、4:2:2和4:2:0格式,可以明了的是4:4:4格式表示以相同的速率对三个YCbCr分量中的每一个进行采样的采样格式。在4:2:2格式中,以亮度分量Y的采样率的一半对色度分量Cb和Cr进行亚采样,从而将色度分量Cb和Cr的分辨率在水平方向上降低一半。同样的,4:2:0格式在垂直和水平方向上都亚采样色度分量Cb和Cr。
YCbCr信息的处理可发生在源缓冲器内定义的活动的源区域中,其中该活动源区域包含“有效的”像素数据。例如,参考图91,其表示在其内定义了活动源区域1182的源缓冲器1180。在所示的例子中,源缓冲器可表示提供10位值的源像素的4:4:4的1平面格式。可分别地为亮度(Y)采样和色度采样(Cb和Cr)来指定活动源区域1182。因此,应当理解的是活动源区域1182可实际上包括用于亮度和色度采样的多个活动源区域。可基于从源缓冲器的基地址(0,0)1184偏移的偏移量而确定用于亮度和色度的活动源区域1182的起点。例如,可通过相对于基地址1184的x偏移量1190和y偏移量1194来定义用于亮度活动源区域的开始位置(Lm_X,Lm_Y)1186。同样的,可通过相对于基地址1184的x偏移量1192和y偏移量1196来定义用于色度活动源区域的开始位置(Ch_X,Ch_Y)1188。应当注意的是,在本例子中,分别用于亮度和色度的y偏移量1192和1196可以相等。基于开始位置1186,可通过宽度1193和高度1200来定义亮度活动源区域,宽度1193和高度1200可分别表示在x和y方向上的亮度采样的数量。另外,基于开始位置1188,可通过宽度1202和高度1204来定义色度活动源区域,宽度1202和高度1204可分别表示在x和y方向上的色度采样的数量。
图92进一步提供了表示可如何在2平面格式中确定用于亮度和色度采样的活动源区域的例子。例如,如图所示,可在第一源缓冲器1180(具有基地址1184)中通过由相对于开始位置1186的宽度1193和高度1200所指定的区域来定义亮度活动源区域1182。可在第二源缓冲器1206(具有基地址1184)中通过相对于开始位置1188的宽度1202和高度1204所指定的区域来定义色度活动源区域1208。
带着上述的思想回去参考图90,首先通过图像锐化逻辑1170来接收YCbCr信号924。图像锐化逻辑1170可被配置为执行图片锐化和边缘增强处理以增加图像中的纹理和边缘细节。将明了的是,图像锐化可提高所感知的图像分辨率。然而,通常希望图像中的现有噪声不被检测为纹理和/或边缘,从而在锐化处理期间不被放大。
依照本技术,图像锐化逻辑1170可使用多尺度虚光蒙版滤波器对YCbCr信号的亮度(Y)分量执行图片锐化。在一个实施例中,可以提供具有不同尺度大小的两个或更多个低通高斯滤波器。例如,在提供了两个高斯滤波器的实施例中,从具有第二半径(y)的第二高斯滤波器的输出中减去具有第一半径(x)的第一高斯滤波器的输出(例如高斯模糊)以生成虚光蒙版,其中x大于y。还可通过从Y输入中减去高斯滤波器的输出来获得额外的虚光蒙版。在特定实施例中,该技术还可提供自适应核阈值(coringthreshold)比较操作,可使用虚光蒙版来执行该操作,使得基于比较结果,可为基本图像增加增益量以生成最终输出,其中该基本图像可被选择为初始Y输入图像或高斯滤波器之一的输出。
参考图93,其表示依照此处公开的技术的实施例描述用于执行图像锐化的示例性逻辑1210的方框图。逻辑1210表示可被应用到输入亮度图像Yin的多尺度虚光蒙版。例如,如图所示,两个低通高斯滤波器1212(G1)和1214(G2)接收并处理Yin。在该例子中,滤波器1212可以是3×3滤波器,滤波器1214可以是5×5滤波器。然而应当明了的是,在其他实施例中,还可以使用包括不同尺度的滤波器的多于两个高斯滤波器(例如7×7,9×9等)。将明了的是,因为低通滤波处理,可将一般对应于噪声的高频分量从G1和G2的输出中移除以生成“虚光(unsharp)”图像(G1out和G2out)。如以下将讨论的,使用虚光输入图像作为基本图像将会允许降噪作为锐化滤波器的一部分。
可如下的定义3×3高斯滤波器1212和5×5高斯滤波器1214:
仅作为示例,在一个实施例中可如下的选择高斯滤波器G1和G2的值:
基于Yin、G1out和G2out可以生成三个虚光蒙版Sharp1、Sharp2和Sharp3。可通过从高斯滤波器1212的虚光图像G1out中减去高斯滤波器1214的虚光图像G2out而确定Sharp1。因为Sharp1本质上是两个低通滤波器之差,其可被称为“中间带(midband)”蒙版,因为更高频率的噪声分量已从G1out和G2out虚光图像中被滤除了。另外,可通过从输入亮度图像Yin中减去G2out来计算Sharp2,从输入亮度图像Yin中减去G1out来计算Sharp3。如以下将描述的那样,可使用虚光蒙版Sharp1、Sharp2和Sharp3来应用自适应阈值核方案。
参考选择逻辑1216,可基于控制信号UnsharpSel来选择基本图像。在所示的实施例中,基本图像可以是输入图像Yin或滤波输出G1out或G2out。将明了的是,当初始图像具有高噪声方差时(例如基本与信号方差一样高),使用初始图像Yin作为执行锐化的基本图像可能无法在锐化期间充分地降低噪声分量。因此,当在输入图像中检测到特定阈值的噪声含量时,选择逻辑1216可被适配为选择已降低了包括噪声在内的高频含量的低通滤波输出G1out或G2out中的一个。在一个实施例中,可通过分析在ISP前端块80的统计处理期间获取的统计数据来确定图像的噪声含量,以确定控制信号UnsharpSel的值。作为示例,如果输入图像Yin具有低的噪声含量,从而在锐化处理的结果中表现出的噪声可能不会增加,则输入图像Yin可被选为基本图像(例如UnsharpSel=0)。如果输入图像Yin被确定为包含明显的噪声水平,从而锐化处理可能放大这些噪声,则可选择滤波后的图像G1out或G2out中的一个(例如分别地,UnsharpSel=1或2)。因此,通过应用用来选择基本图像的自适应技术,逻辑1210实质上提供降噪功能。
接着,依照如上所述的自适应核阈值方案,可将增益应用到Sharp1、Sharp2或Sharp3蒙版中的一个或多个。接着,通过比较器块1218、1220和1222,可将虚光值Sharp1、Sharp2和Sharp3与多个阈值SharpThd1、SharpThd2和SharpThd3(不必须是分别的)作比较。例如,Sharp1值总是在比较器块1218中与SharpThd1作比较。关于比较器块1220,阈值SharpThd2可与Sharp1或Sharp2作比较,这取决于选择逻辑1226。例如,选择逻辑1226可根据控制信号SharpCmp2的状态来选择Sharp1或Sharp2(例如SharpCmp2=1选择Sharp1;SharpCmp2=0选择Sharp2)。例如,在一个实施例中,可根据输入图像(Yin)的噪声方差/含量来确定SharpCmp2的状态。
在所示的实施例中,一般优选的是设置SharpCmp2和SharpCmp3值以选择Sharp1,除非检测到图像数据具有相对低的噪声量。这是因为Sharp1作为高斯低通滤波器G1和G2的输出之差,其一般对噪声不太敏感,因此这可有助于降低在“嘈杂”图像数据中因噪声水平的波动而导致的SharpAmt1、SharpAmt2和SharpAmt3值的变化量。例如,如果初始图像具有高噪声方差,当使用固定阈值时,一些高频分量可能没被捕捉到,因此可能在锐化处理期间被放大。因此,如果输入图像的噪声含量高,则在Sharp2中可能会出现一些噪声含量。在这种情况下,可将SharpCmp2设为1以选择以上所述的中间带蒙版Sharp1,Sharp1由于是两个低通滤波器输出之差,所以具有降低的高频含量,并且因此对噪声不太敏感。
将明了的是,类似的操作可应用到选择逻辑1224在SharpCmp3的控制下执行的Sharp1或Sharp3的选择。在一个实施例中,SharpCmp2和SharpCmp3被缺省的设置为1(例如使用Sharp1),并且仅在输入图像被识别为一般具有低噪声方差时被设为0。这实质上提供了一种自适应核阈值方案,其中比较值的选择(Sharp1、Sharp2或Sharp3)是基于输入图像的噪声方差而自适应的。
基于比较器块1218、1220和1222的输出,可通过对基本图像(例如通过逻辑1216选择的)应用增益虚光蒙版而确定经锐化的输出图像Ysharp。例如,首先参考比较器块1222,SharpThd3与选择逻辑1224提供的B输入作比较,B输入在这里被称为“SharpAbs”,并且基于SharpCmp3的状态而可能等于Sharp1或Sharp3。如果SharpAbs大于阈值SharpThd3,则将增益SharpAmt3应用到Sharp3,并且将结果值加到基本图像上。如果SharpAbs小于阈值SharpThd3,则可以应用衰减增益Att3。在一个实施例中,可如下的确定衰减增益Att3:
其中,SharpAbs是由选择逻辑1224确定的Sharp1或Sharp3。可通过选择逻辑1228基于比较器块1222的输出来执行对加上了完整增益(SharpAmt3)或衰减增益(Att3)的基本图像的选择。将明了的是,衰减增益的使用可应对SharpAbs不大于阈值(例如SharpThd3),但是图像的噪声方差还是接近该给定阈值的情况。其可有助于降低在锐利和不锐利像素之间的显著的转变。例如,如果在这种情况下直接传递未使用衰减增益的图像数据,所得到的像素可能表现为缺陷像素(例如亮点)。
接着,对比较器块1220也可应用类似的处理。例如,根据SharpCmp2的状态,选择逻辑1226可提供Sharp1或Sharp2作为到比较器块1220的输入以与阈值SharpThd2作比较。如上所述,根据比较器块1220的输出,将增益SharpAmt2或基于SharpAmt2的衰减增益Att2应用到Sharp2,并将其加入到以上所述选择逻辑1228的输出。将明了的是,可以按照与以上的等式104类似的方式来计算衰减增益Att2,不同之处在于对SharpAbs应用的是增益SharpAmt2和阈值SharpThd2,其中SharpAbs可被选择为Sharp1或Sharp2。
此后,增益SharpAmt1或衰减增益Att1被应用到Sharp1,并且将结果值加上选择逻辑1230的输出以生成锐化的像素输出Ysharp(来自选择逻辑1232)。可基于比较Sharp1和阈值SharpThd1的比较器块1218的输出来确定是应用增益SharpAmt1还是应用衰减增益Att1这一选择。同样,可通过与以上的等式104类似的方式来确定衰减增益Att1,不同之处在于对Sharp1应用的是增益SharpAmt1和阈值SharpThd1。使用三个蒙版中的每一个进行缩放所得到锐化像素值被增加到输入像素Yin中以生成锐化的输出Ysharp,在一个实施例中,可将锐化的输出Ysharp截短到10位(假设YCbCr处理以10位精度进行)。
将明了的是,当与传统虚光蒙版技术相比时,本公开中所阐述的图像锐化技术可以提供纹理和边缘的增强,同时还降低输出图像中的噪声。特别是,本技术可以很好地适用于使用例如CMOS图像传感器捕捉的图像(例如在低光照条件下使用集成在便携式设备(例如移动电话)中的低分辨率相机所拍摄的图像)具有较差信噪比的应用。例如,当噪声方差与信号方差可比时,对于锐化使用固定阈值是困难的事,因为一些噪声分量会与纹理和边缘一起被锐化。因此如上所述,此处所提供的技术可使用多尺度高斯滤波器来将噪声从输入图像中滤除,以从虚光图像(例如G1out和G2out)中提取特征,从而提供降低了噪声含量的锐化图像。
在继续之前,应当理解的是所示的逻辑1210仅旨在提供本技术的一个示例性实施例。在其他实施例中,图像锐化逻辑1170可以提供额外的或更少的特征。例如,在一些实施例中,逻辑1210可简单的传输基本值而不是应用衰减增益。另外,一些实施例可以不包括选择逻辑块1224、1226或1216。例如,比较器块1220和1222可分别简单地接收Sharp2和Sharp3的值,而不是分别接收来自选择逻辑块1224和1226的选择输出。虽然这些实施例可能没有提供如同图93所示的实施方式一样鲁棒的用于锐化和/或降噪特征,应当明了的是这样的设计选择是成本和/或商业相关限制的结果。
在本实施例中,一旦获得了锐化的图像输出YSharp,图像锐化逻辑1170还可提供边缘增强和色度抑制特征。以下将讨论这些附加特征的每一个。首先参考图94,其表示依照一个实施例的可在图93所示的锐化逻辑1210的下游实现的用于执行边缘增强的示例性逻辑1234。如图所示,通过Sobel滤波器1236来处理初始输入值Yin以进行边缘检测。Sobel滤波器1236可基于初始图像的3×3像素块(称为“A”)(其中Yin是该3×3块的中心像素)来确定梯度值YEdge。在一个实施例中,Sobel滤波器1236可通过对初始图像数据进行卷积以检测水平和垂直方向上的变化来计算YEdge。该处理如以下的等式105-107所示:
Gx=Sx×A,(105)
Gy=Sy×A,(106)
YEdge=Gx×Gy,(107)
其中Sx和Sy分别表示用于在水平和垂直方向上的梯度边缘强度检测的矩阵算子,以及其中Gx和Gy分别表示包含水平和垂直变化导数的梯度图像。因此可由Gx和Gy的乘积来确定输出YEdge。
如以上图93中所述,接着选择逻辑1240可以接收YEdge以及中间带Sharp1蒙版。基于控制信号EdgeCmp,在比较器块1238中将Sharp1或YEdge与阈值EdgeThd相比较。例如可根据图像中的噪声含量来确定EdgeCmp的状态,从而提供用于边缘检测和增强的自适应核阈值方案。接着比较器块1238的输出可被提供给选择逻辑1242,并可应用完整增益或衰减增益。例如,当到比较器块1238的所选择的B输入(Sharp1或YEdge)大于EdgeThd时,将YEdge乘上边缘增益EdgeAmt以确定将要应用的边缘增强的量。如果比较器块1238的B输入小于EdgeThd,则可应用衰减边缘增益AttEdge以避免增强的边缘与初始像素之间的显著转变。将明了的是,可以通过与以上的等式104所示的类似的方式来计算AttEdge,但是其中EdgeAmt和EdgeThd被应用到“SharpAbs”,取决于选择逻辑1240的输出,SharpAbs可以是Sharp1或YEdge。因此,使用增益(EdgeAmt)或衰减增益(AttEdge)而增强的边缘像素可被加入到YSharp(图93的逻辑1210的输出)以获得边缘增强的输出像素Yout,在一个实施例中,Yout可被截短到10位(假设YCbCr处理以10位精度进行)。
关于由图像锐化逻辑1170提供的色度抑制特征,这种特征可在亮度边缘处对色度进行衰减。一般来说,可通过应用小于1的色度增益(衰减因子)来执行色度抑制,该色度增益取决于从以上所述的亮度锐化和/或边缘增强步骤获得的值(YSharp,Yout)。作为示例,图95表示包括曲线1252的图表1250,曲线1252表示可以为相应的经锐化的亮度值(YSharp)选择的色度增益。图表1250表示的数据可被实现为YSharp值和相应的在0和1之间的色度增益(衰减因子)的查找表。查找表被用来近似曲线1252。对于位于查找表中的两个衰减因子之间的并存的YSharp值,可对与位于当前YSharp值之上和之下的YSharp值相对应的两个衰减因子应用线性插值。此外,在其他实施例中,输入亮度值还可被选择为如以上图93所述的由逻辑1210确定的Sharp1、Sharp2或Sharp3值中的一个,或者如图94所述的由逻辑1234确定的YEdge值。
接着,通过亮度、对比度和颜色(BCC)调整逻辑1172来处理图像锐化逻辑1170(图90)的输出。图96表示BCC调整逻辑1172的一个实施例的功能性方框图。如图所示,逻辑1172包括明亮度和对比度处理块1262、全局色相控制块1264和饱和度控制块1266。此处所示的实施例提供对10位精度的YCbCr数据的处理,尽管其他实施例可利用不同位深。以下讨论每个块1262、1264和1266的功能。
首先参考明亮度和对比度处理块1262,首先从亮度(Y)数据中减去偏移量YOffset以将黑度设为0。这是为了保证对比度调整不会改变黑度。接着,将亮度值乘上对比度增益值以应用对比度控制。作为示例,对比度增益值可以是包括2个整数位和10个分数位的12位无符号值,从而提供高达四倍于像素值的对比度增益范围。此后,可通过向亮度数据增加(或减去)明亮度偏移值来实现明亮度调整。作为示例,本实施例中的明亮度偏移量可以是具有-512至+512之间的范围的10位的二进制补码值。此外,应当注意的是,在对比度调整之后执行明亮度调整,以避免在改变对比度时发生DC偏移量的变化。此后,初始的YOffset被加回到调整后的亮度数据以重定位黑度。
块1264和1266提供基于Cb和Cr数据的色相特性的颜色调整。如图所示,首先从Cb和Cr数据中减去512的偏移量(假设是10位处理)以将范围大致定位到0。接着依照以下等式来调整色相:
Cbadj=Cbcos(θ)+Crsin(θ),(108)
Cradj=Crcos(θ)-Cbsin(θ),(109)
其中Cbadj和Cradj表示调整后的Cb和Cr值,以及其中θ表示色相角,可如下的计算得到θ:
以上操作都由全局色相控制块1264内的逻辑来表示,并且可由以下矩阵运算来表示:
其中,Ka=cos(θ),Kb=sin(θ),θ在以上等式110中已定义。
接着,如饱和度控制块1266所示,饱和度控制可被应用到Cbadj和Cradj值。在所示实施例中,通过为Cb和Cr值的每一个应用全局饱和度乘子和基于色相的饱和度乘子来执行饱和度控制。基于色相的饱和度控制可提高色彩的再现。颜色的色相可在YCbCr颜色空间中表示,如图97中的颜色轮图1270所示。将明了的是,可通过将相同的颜色轮在HSV颜色空间(色相、饱和度和亮度)中移位大约109度而导出YCbCr色调和饱和度颜色轮1270。如图所示,图表1270包括在范围0至1内的表示饱和度乘子(S)的圆周值,以及在0°至360°范围内的表示以上定义的θ的角度值。每个θ可表示一种不同的颜色(例如49°=品红,109°=红色,229°=绿色等)。可通过选择合适的饱和度乘子S来调整在特定色相角θ处的颜色的色相。
回去参考图96,色相角θ(在全局色相控制块1264中计算得到的)可被用作用于Cb饱和度查找表1268和Cr饱和度查找表1269的索引。在一个实施例中,饱和度查找表1268和1269可包括256个在0-360°色相范围内均匀分布的饱和度值(例如第一个查找表条目在0°,最后一个条目在360°),并且可以通过对查找表中刚刚低于和高于当前色相角θ的饱和度值进行线性插值而确定给定像素处的饱和度值S。可通过将全局饱和度值(可以是用于Cb和Cr的每一个的全局对比度)乘上所确定的基于色相的饱和度值来获得用于Cb和Cr分量的每一个的最终饱和度值。因此,如基于色相的饱和度控制块1266所示,可通过将Cbadj和Cradj乘上它们各自的最终饱和度值来确定最终校正的Cb’和Cr’值。
此后,BCC逻辑1172的输出被传送到YCbCr伽马调整逻辑1174,如图90所示。在一个实施例中,伽马调整逻辑1174可提供Y、Cb和Cr通道的非线性映射功能。例如,输入Y、Cb和Cr值被映射到相应的输出值。再次,假设以10位来处理YCbCr数据,可以利用插值10位256条目查找表。可以提供三个这样的查找表,每个用于Y、Cb和Cr信道之一。可均匀地分布256个条目的每一个,并且可通过对映射到刚刚在当前输入索引之上和之下的索引的输出值进行线性插值而确定输出。在一些实施例中,也可以使用具有1024个条目(对于10位数据)的非插值查找表,但其可具有高得多的存储器需求。将明了的是,通过调整查找表的输出值,YCbCr伽马调整功能可被用来执行特定图像滤波效果,例如黑白、褐色调、负片、过曝等。
接着,色度抽选逻辑1176可将色度抽选应用到伽马调整逻辑1174的输出。在一个实施例中,色度抽选逻辑1176可被配置为执行水平抽选以将YCbCr数据从4:4:4格式转换为4:2:2格式,其中以亮度数据的速率的一半对色度(Cr和Cb)信息进行亚采样。仅作为示例,可通过对7个水平像素组成的集合应用7抽头低通滤波器(例如半带lanczos滤波器)来执行抽选,如下所示:
其中,in(i)表示输入像素(Cb或Cr),以及C0-C6表示7抽头滤波器的滤波系数。每个输入像素具有独立的滤波器系数(C0-C6)以允许为色度滤波采样应用灵活的相位偏移。
此外,在某些情况下,还可不使用滤波来执行色度抽选。当初始接收到的源图像是4:2:2格式,但其被上采样到了4:4:4格式以用于YCbCr处理时,这是有益的。在该情况下,得到的抽选的4:2:2图像与初始图像相同。
随后,在从YCbCr处理块904中输出之前,可使用缩放逻辑1178来缩放从色度抽选逻辑1176输出的YCbCr数据。缩放逻辑1178的功能与如上参考图28所述的前端像素处理单元130的像素合并补偿滤波器300中的缩放逻辑368、370的功能类似。例如,缩放逻辑1178可通过两个步骤来执行水平和垂直缩放。在一个实施例中,5抽头多相滤波器可被用于垂直缩放,9抽头多相滤波器可被用于水平缩放。多抽头多相滤波器可将从源图像中选择的像素乘上加权因子(例如滤波器系数),并且接着对输出求和以形成目的像素。可根据当前像素位置和滤波器抽头的数量来选择所选的像素。例如,对于垂直5抽头滤波器,可以选择在当前像素的每个垂直侧的两个相邻像素,对于水平9抽头滤波器,可以选择当前像素的每个水平侧的四个相邻像素。可由查找表提供滤波系数,并可通过当前的像素间分数位置来确定滤波系数。接着将缩放逻辑1178的输出926从YCbCr处理块904输出。
回去参考图67,经处理的输出信号926可被发送到存储器108,或者可作为图像信号114从ISP流水处理逻辑82中输出给显示硬件(例如显示器28)以供用户观看,或输出给压缩引擎(例如编码器118)。在一些实施例中,可通过图形处理单元和/或压缩引擎来进一步处理图像信号114,并在将其解压缩和提供给显示器之前对其进行存储。另外,还可提供一个或多个帧缓冲器以控制输出到显示器的图像数据的缓冲,特别是视频图像数据。
应当理解的是,此处仅以示例方式提供了以上所描述的各种图像处理技术及涉及的缺陷像素检测和校正、镜头明暗校正、解马赛克和图像锐化,等等。因此,应当理解的是本公开不应当被解释为仅限制于以上所提供的例子。实际上,此处描述的示例性逻辑可在其他实施例中经历多种变形和/或其他特征。此外,应当明了的是还可以通过任何合适的方式来实现以上所述的技术。例如可使用硬件(例如恰当配置的电路)、软件(通过包括存储在一个或多个有形计算机可读介质上的可执行代码的计算机程序),或者通过硬件和软件元素的组合来实现图像处理电路32的部件,尤其是ISP前端块80和ISP流水块82。
以上所描述的特定实施例仅是作为示例,应当理解的是这些实施例具有多种变形和替换形式。还应当理解的是权利要求不是旨在限制于此处公开的特定形式,而是旨在覆盖落入本公开的精神和范围内的所有修改、等同形式和替换。
Claims (23)
1.一种图像信号处理***,包括:
前端像素处理单元,被配置为接收包含像素的原始图像数据的帧,所述帧使用具有数字图像传感器的成像设备获取,其中所述前端像素处理单元包括具有自动对焦统计逻辑的统计信息收集引擎,所述自动对焦统计逻辑被配置为处理所述原始图像数据以收集粗略自动对焦统计信息和精细自动对焦统计信息,其中,所述粗略自动对焦统计信息至少部分地基于关于原始图像数据的经下采样的图像数据,所述粗略自动对焦统计信息利用RGB梯度或使用Scharr算子的原始图像数据变换而被产生;以及其中,所述精细自动对焦统计信息基于原始图像数据;以及
控制逻辑,被配置为使用基于所述粗略自动对焦统计信息的粗略自动对焦分数和基于所述精细自动对焦统计信息的精细自动对焦分数来确定所述成像设备的镜头的最佳对焦位置,并且至少部分地基于所述粗略自动对焦分数和所述精细自动对焦分数在定义整个对焦长度的最小位置和最大位置之间调整所述镜头的对焦位置以达到所述最佳对焦位置。
2.如权利要求1所述的图像信号处理***,其中所述控制逻辑被配置为通过以下步骤确定所述镜头的最佳对焦位置:
沿着所述整个对焦长度以开始于所述最小位置且结束于所述最大位置的第一方向步进所述对焦位置以通过关于所述粗略自动对焦分数的多个粗略分数位置;
为所述多个粗略分数位置中的每一个确定粗略自动对焦分数;
识别所述多个粗略分数位置中的哪一个具有下述的对应的粗略自动对焦分数:该对应的粗略自动对焦分数相对于与前一粗略分数位置相对应的粗略自动对焦分数有所下降;
从所识别的粗略分数位置开始,以与所述第一方向相反的第二方向且向后朝着所述最小位置步进所述对焦位置以通过关于所述精细自动对焦分数的多个精细分数位置;
为所述多个精细分数位置的每一个确定精细自动对焦分数;以及
识别所述多个精细分数位置的哪一个对应于精细自动对焦分数中的峰值,并且将所识别的精细分数位置设置为所述最佳对焦位置。
3.如权利要求2所述的图像信号处理***,其中,在多个粗略分数位置中的每一个之间的步进大小要大于在多个精细分数位置中的每一个之间的步进大小。
4.如权利要求2所述的图像信号处理***,其中,至少部分地基于对应于相邻粗略分数位置的粗略自动对焦分数的变化幅度,所述多个粗略分数位置中的每一个之间的步进大小是可变的。
5.如权利要求4所述的图像信号处理***,其中,随着对应于粗略分数位置的粗略自动对焦分数的变化幅度的降低,所述粗略分数位置之间的步进大小减小。
6.如权利要求2所述的图像信号处理***,其中,所述控制逻辑被配置为使用线圈调整所述镜头的对焦位置,以及其中所述控制逻辑沿着所述整个对焦长度步进通过粗略分数位置以应对线圈稳定时间的影响。
7.如权利要求1所述的图像信号处理***,其中,所述自动对焦统计逻辑被配置为通过将第一和第二滤波器应用到从被抽选之后的原始图像数据或从抽选出的原始图像数据导出的相机亮度值的至少一个来提供所述粗略自动对焦统计信息,并且通过将第三和第四滤波器应用到通过将转换应用到所述原始图像数据或者通过将水平滤波应用到所述原始图像数据而获得的亮度值来提供所述精细自动对焦统计信息。
8.如权利要求7所述的图像信号处理***,其中,至少部分地基于所述第一和第二滤波器的输出和来确定在每个粗略位置处的所述粗略自动对焦分数,以及其中,至少部分地基于所述第三和第四滤波器的输出和来确定在每个精细位置处的所述精细自动对焦分数。
9.如权利要求7所述的图像信号处理***,其中,用于滤波所述相机亮度值的所述第一和第二滤波器包括基于Scharr算子的3×3滤波器。
10.一种用于使用自动对焦统计信息确定最佳对焦位置的方法,包括:
沿着图像捕捉设备的镜头的对焦长度在不同步进处确定关于经下采样的图像数据的粗略自动对焦分数,所述粗略自动对焦分数利用RGB梯度或使用Scharr算子的原始图像数据变换而被产生;
识别粗略自动对焦分数的对应的自动对焦分数相对于前一步进有所下降处的步进;
至少部分地基于所述对应的自动对焦分数有所下降处的所述步进在对焦位置附近识别最佳对焦区域;以及
分析所述最佳对焦区域内的关于原始图像数据的精细自动对焦分数以确定所述镜头的最佳对焦位置。
11.如权利要求10所述的方法,其中,分析所述最佳对焦区域内的精细自动对焦分数以确定所述最佳对焦位置包括:在所述最佳对焦区域内搜索提供最大精细自动对焦分数的对焦位置。
12.如权利要求10所述的方法,其中,所述粗略自动对焦分数和所述精细自动对焦分数至少部分地基于从拜耳RGB数据导出的白平衡亮度。
13.如权利要求12所述的方法,其中,从抽选的拜耳RGB数据中导出用于所述粗略自动对焦分数的所述白平衡亮度值。
14.一种电子设备,其包括:
包括数字图像传感器和镜头的成像设备;
接口,被配置为与所述数字图像传感器通信;
存储设备;
显示设备,被配置为显示与由所述数字图像传感器获取的原始图像数据相对应的图像场景的视觉表示;以及
图像信号处理子***,包括被配置为接收包含有像素的原始图像数据的帧的前端像素处理单元,所述帧是使用具有所述数字图像传感器的所述成像设备获取的,其中,所述前端像素处理单元包括具有自动对焦统计逻辑的统计信息收集逻辑,所述自动对焦统计逻辑被配置为处理所述原始图像数据以收集如下统计信息:
至少部分地基于关于原始图像数据的经下采样的图像数据的粗略自动对焦统计信息,所述粗略自动对焦统计信息利用RGB梯度或使用Scharr算子的原始图像数据变换而被产生;和
基于原始图像数据的精细自动对焦统计信息;以及
控制逻辑,被配置为分别使用基于所述粗略自动对焦统计信息和所述精细自动对焦统计信息的粗略自动对焦分数和精细自动对焦分数来确定所述成像设备的镜头的最佳对焦位置,其中,所述控制逻辑通过以下步骤确定所述镜头的最佳对焦位置:沿着整个对焦长度以第一方向为关于所述粗略自动对焦分数的多个粗略分数位置中的每一个确定粗略自动对焦分数;识别所述多个粗略分数位置中的哪一个具有下述的对应的粗略自动对焦分数:该对应的粗略自动对焦分数相对于与前一粗略分数位置相对应的粗略自动对焦分数有所下降;从所识别的粗略分数位置开始,以与所述第一方向相反的第二方向步进所述对焦位置以通过关于所述精细自动对焦分数的一个或多个精细分数位置,并搜索所述精细自动聚焦分数中的峰值;以及将与所述峰值相对应的对焦位置设置为所述最佳对焦位置。
15.如权利要求14所述的电子设备,其中,所述多个粗略分数位置中的每一个之间的步进大小基本恒定。
16.如权利要求15所述的电子设备,其中,所述精细分数位置中的每一个之间的步进大小基本恒定,但是小于所述粗略分数位置中的每一个之间的步进大小。
17.如权利要求14所述的电子设备,其中,所述传感器接口包含标准移动成像架构(SMIA)接口。
18.如权利要求14所述的电子设备,包含桌上型计算机、膝上型计算机、平板计算机、移动蜂窝电话、便携式媒体播放器中的至少一种,或其任意组合。
19.如权利要求14所述的电子设备,其中所述数字图像传感器包括与所述电子设备集成的数码相机、经由接口耦合到所述电子设备的外置数码相机中的至少一种,或其组合。
20.一种用于使用自动对焦统计信息确定最佳对焦位置的设备,包括:
用于沿着图像捕捉设备的镜头的对焦长度在不同步进处确定粗略自动对焦分数的装置,基于粗略自动对焦统计信息的所述粗略自动对焦分数至少部分地基于关于原始图像数据的经下采样的图像数据,所述粗略自动对焦统计信息利用RGB梯度或使用Scharr算子的原始图像数据变换而被产生;
用于识别对应的自动对焦分数相对于前一步进有所下降处的步进的装置;
用于在对焦位置附近识别最佳对焦区域的装置;以及
用于分析所述最佳对焦区域内的精细自动对焦分数以确定所述镜头的最佳对焦位置的装置,基于精细自动对焦统计信息的所述精细自动对焦分数基于原始图像数据。
21.如权利要求20所述的设备,其中,用于分析所述最佳对焦区域内的精细自动对焦分数以确定所述最佳对焦位置的装置包括:用于在所述最佳对焦区域内搜索提供最大精细自动对焦分数的对焦位置的装置。
22.如权利要求20所述的设备,其中,所述粗略和精细自动对焦分数是基于从拜耳RGB数据导出的白平衡亮度。
23.如权利要求22所述的设备,其中,从抽选的拜耳RGB数据中导出用于所述粗略自动对焦分数的所述白平衡亮度值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/873,978 US9398205B2 (en) | 2010-09-01 | 2010-09-01 | Auto-focus control using image statistics data with coarse and fine auto-focus scores |
US12/873,978 | 2010-09-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102572265A CN102572265A (zh) | 2012-07-11 |
CN102572265B true CN102572265B (zh) | 2016-02-24 |
Family
ID=44533240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110399082.8A Active CN102572265B (zh) | 2010-09-01 | 2011-09-01 | 使用具有粗略和精细自动对焦分数的图像统计数据的自动对焦控制 |
Country Status (11)
Country | Link |
---|---|
US (1) | US9398205B2 (zh) |
EP (1) | EP2599301A1 (zh) |
CN (1) | CN102572265B (zh) |
AU (1) | AU2011296296B2 (zh) |
BR (1) | BR112013005140A2 (zh) |
HK (1) | HK1173294A1 (zh) |
IN (1) | IN2013CN01958A (zh) |
MX (1) | MX2013002455A (zh) |
RU (1) | RU2543974C2 (zh) |
TW (1) | TW201216207A (zh) |
WO (1) | WO2012030617A1 (zh) |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8488055B2 (en) | 2010-09-30 | 2013-07-16 | Apple Inc. | Flash synchronization using image sensor interface timing signal |
KR20120118383A (ko) * | 2011-04-18 | 2012-10-26 | 삼성전자주식회사 | 이미지 보정 장치 및 이를 이용하는 이미지 처리 장치와 그 방법들 |
US10832616B2 (en) | 2012-03-06 | 2020-11-10 | Samsung Display Co., Ltd. | Pixel arrangement structure for organic light emitting diode display |
KR101615332B1 (ko) * | 2012-03-06 | 2016-04-26 | 삼성디스플레이 주식회사 | 유기 발광 표시 장치의 화소 배열 구조 |
US8817120B2 (en) | 2012-05-31 | 2014-08-26 | Apple Inc. | Systems and methods for collecting fixed pattern noise statistics of image data |
US8953882B2 (en) | 2012-05-31 | 2015-02-10 | Apple Inc. | Systems and methods for determining noise statistics of image data |
US11089247B2 (en) | 2012-05-31 | 2021-08-10 | Apple Inc. | Systems and method for reducing fixed pattern noise in image data |
US9105078B2 (en) | 2012-05-31 | 2015-08-11 | Apple Inc. | Systems and methods for local tone mapping |
US9743057B2 (en) | 2012-05-31 | 2017-08-22 | Apple Inc. | Systems and methods for lens shading correction |
US8872946B2 (en) | 2012-05-31 | 2014-10-28 | Apple Inc. | Systems and methods for raw image processing |
US9142012B2 (en) | 2012-05-31 | 2015-09-22 | Apple Inc. | Systems and methods for chroma noise reduction |
US9025867B2 (en) | 2012-05-31 | 2015-05-05 | Apple Inc. | Systems and methods for YCC image processing |
US9332239B2 (en) | 2012-05-31 | 2016-05-03 | Apple Inc. | Systems and methods for RGB image processing |
US9077943B2 (en) | 2012-05-31 | 2015-07-07 | Apple Inc. | Local image statistics collection |
US8917336B2 (en) | 2012-05-31 | 2014-12-23 | Apple Inc. | Image signal processing involving geometric distortion correction |
US9031319B2 (en) | 2012-05-31 | 2015-05-12 | Apple Inc. | Systems and methods for luma sharpening |
US9014504B2 (en) | 2012-05-31 | 2015-04-21 | Apple Inc. | Systems and methods for highlight recovery in an image signal processor |
US10136046B2 (en) | 2012-06-27 | 2018-11-20 | Nokia Technologies Oy | Imaging and sensing during an auto-focus procedure |
TWI511549B (zh) * | 2012-07-12 | 2015-12-01 | Acer Inc | 影像處理方法與影像處理系統 |
JP2014064251A (ja) * | 2012-09-24 | 2014-04-10 | Toshiba Corp | 固体撮像装置及び撮像方法 |
TWI495862B (zh) | 2012-10-04 | 2015-08-11 | Pixart Imaging Inc | 檢測影像感測器的方法以及相關裝置 |
TWI470300B (zh) * | 2012-10-09 | 2015-01-21 | Univ Nat Cheng Kung | 影像對焦方法與自動對焦顯微裝置 |
TWI461812B (zh) * | 2012-10-19 | 2014-11-21 | 應用於相機模組之自動調焦方法 | |
US8782558B1 (en) * | 2012-11-28 | 2014-07-15 | Advanced Testing Technologies, Inc. | Method, program and arrangement for highlighting failing elements of a visual image |
US9443290B2 (en) * | 2013-04-15 | 2016-09-13 | Apple Inc. | Defringing RAW images |
CN103235397B (zh) * | 2013-04-28 | 2016-05-25 | 华为技术有限公司 | 一种自动对焦方法及设备 |
US9443292B2 (en) | 2013-06-26 | 2016-09-13 | Apple Inc. | Blind defringing for color images |
US9088708B2 (en) | 2013-07-19 | 2015-07-21 | Htc Corporation | Image processing device and method for controlling the same |
US9183620B2 (en) | 2013-11-21 | 2015-11-10 | International Business Machines Corporation | Automated tilt and shift optimization |
US9310603B2 (en) | 2013-12-17 | 2016-04-12 | Htc Corporation | Image capture system with embedded active filtering, and image capturing method for the same |
CN104980717A (zh) * | 2014-04-02 | 2015-10-14 | 深圳市先河***技术有限公司 | 图像处理装置和摄像镜头、摄像机身、摄像设备 |
CN105100550A (zh) * | 2014-04-21 | 2015-11-25 | 展讯通信(上海)有限公司 | 阴影校正方法及装置、成像*** |
US9619862B2 (en) | 2014-05-30 | 2017-04-11 | Apple Inc. | Raw camera noise reduction using alignment mapping |
CN104079837B (zh) * | 2014-07-17 | 2018-03-30 | 广东欧珀移动通信有限公司 | 一种基于图像传感器的对焦方法及装置 |
US10417525B2 (en) | 2014-09-22 | 2019-09-17 | Samsung Electronics Co., Ltd. | Object recognition with reduced neural network weight precision |
CN105635554B (zh) * | 2014-10-30 | 2018-09-11 | 展讯通信(上海)有限公司 | 自动对焦控制方法及装置 |
CN104469168A (zh) * | 2014-12-29 | 2015-03-25 | 信利光电股份有限公司 | 摄像模组及其自动对焦方法 |
FR3035720B1 (fr) * | 2015-04-30 | 2017-06-23 | Thales Sa | Systeme optique et procede de pointage laser a travers l'atmosphere |
CN105049723B (zh) * | 2015-07-13 | 2017-11-21 | 南京工程学院 | 基于离焦量差异定性分析的自动对焦方法 |
JP6600217B2 (ja) * | 2015-09-30 | 2019-10-30 | キヤノン株式会社 | 画像処理装置および画像処理方法、撮像装置およびその制御方法 |
CN106921828B (zh) * | 2015-12-25 | 2019-09-17 | 北京展讯高科通信技术有限公司 | 一种自动对焦统计信息的计算方法及装置 |
CN105657279A (zh) * | 2016-02-29 | 2016-06-08 | 广东欧珀移动通信有限公司 | 控制方法、控制装置及电子装置 |
US9699371B1 (en) * | 2016-03-29 | 2017-07-04 | Sony Corporation | Image processing system with saliency integration and method of operation thereof |
US10602111B2 (en) | 2016-09-06 | 2020-03-24 | Apple Inc. | Auto white balance control algorithm based upon flicker frequency detection |
CN106534676B (zh) * | 2016-11-02 | 2019-03-26 | 西安电子科技大学 | 面向变焦摄像***的自动聚焦调节方法 |
US11042161B2 (en) | 2016-11-16 | 2021-06-22 | Symbol Technologies, Llc | Navigation control method and apparatus in a mobile automation system |
US11093896B2 (en) | 2017-05-01 | 2021-08-17 | Symbol Technologies, Llc | Product status detection system |
US11449059B2 (en) | 2017-05-01 | 2022-09-20 | Symbol Technologies, Llc | Obstacle detection for a mobile automation apparatus |
WO2018204308A1 (en) | 2017-05-01 | 2018-11-08 | Symbol Technologies, Llc | Method and apparatus for object status detection |
WO2018201423A1 (en) | 2017-05-05 | 2018-11-08 | Symbol Technologies, Llc | Method and apparatus for detecting and interpreting price label text |
CN107277348B (zh) * | 2017-06-16 | 2019-08-16 | Oppo广东移动通信有限公司 | 对焦方法、装置、计算机可读存储介质和移动终端 |
CN108009987B (zh) * | 2017-12-01 | 2021-08-20 | 中国科学院长春光学精密机械与物理研究所 | 一种图像缩放装置以及缩放方法 |
US10306152B1 (en) * | 2018-02-14 | 2019-05-28 | Himax Technologies Limited | Auto-exposure controller, auto-exposure control method and system based on structured light |
IL264937B (en) * | 2018-02-25 | 2022-09-01 | Orbotech Ltd | Range differences for self-focusing in optical imaging systems |
CN109064513B (zh) * | 2018-08-14 | 2021-09-21 | 深圳中科精工科技有限公司 | 一种摄像头封装中六自由度自动校准算法 |
CN109274885B (zh) * | 2018-09-11 | 2021-03-26 | 广东智媒云图科技股份有限公司 | 一种拍照微调方法 |
CN108989690B (zh) * | 2018-09-28 | 2020-07-17 | 深圳市盛世生物医疗科技有限公司 | 一种线阵相机多标记点对焦方法、装置、设备和存储介质 |
US11506483B2 (en) | 2018-10-05 | 2022-11-22 | Zebra Technologies Corporation | Method, system and apparatus for support structure depth determination |
US11010920B2 (en) | 2018-10-05 | 2021-05-18 | Zebra Technologies Corporation | Method, system and apparatus for object detection in point clouds |
US20200118786A1 (en) * | 2018-10-15 | 2020-04-16 | Applied Materials, Inc. | System and method for selective autofocus |
US11003188B2 (en) | 2018-11-13 | 2021-05-11 | Zebra Technologies Corporation | Method, system and apparatus for obstacle handling in navigational path generation |
US11090811B2 (en) | 2018-11-13 | 2021-08-17 | Zebra Technologies Corporation | Method and apparatus for labeling of support structures |
US11416000B2 (en) | 2018-12-07 | 2022-08-16 | Zebra Technologies Corporation | Method and apparatus for navigational ray tracing |
US11079240B2 (en) | 2018-12-07 | 2021-08-03 | Zebra Technologies Corporation | Method, system and apparatus for adaptive particle filter localization |
KR102575126B1 (ko) * | 2018-12-26 | 2023-09-05 | 주식회사 엘엑스세미콘 | 영상 처리 장치 및 그 방법 |
CA3028708A1 (en) | 2018-12-28 | 2020-06-28 | Zih Corp. | Method, system and apparatus for dynamic loop closure in mapping trajectories |
CN110349371B (zh) * | 2019-03-15 | 2020-12-11 | 青田县君翔科技有限公司 | 安全监控式无线通信*** |
KR102609559B1 (ko) | 2019-04-10 | 2023-12-04 | 삼성전자주식회사 | 공유 픽셀들을 포함하는 이미지 센서 |
US11662739B2 (en) | 2019-06-03 | 2023-05-30 | Zebra Technologies Corporation | Method, system and apparatus for adaptive ceiling-based localization |
US11200677B2 (en) | 2019-06-03 | 2021-12-14 | Zebra Technologies Corporation | Method, system and apparatus for shelf edge detection |
US11341663B2 (en) * | 2019-06-03 | 2022-05-24 | Zebra Technologies Corporation | Method, system and apparatus for detecting support structure obstructions |
US11080566B2 (en) | 2019-06-03 | 2021-08-03 | Zebra Technologies Corporation | Method, system and apparatus for gap detection in support structures with peg regions |
US11402846B2 (en) | 2019-06-03 | 2022-08-02 | Zebra Technologies Corporation | Method, system and apparatus for mitigating data capture light leakage |
US11151743B2 (en) | 2019-06-03 | 2021-10-19 | Zebra Technologies Corporation | Method, system and apparatus for end of aisle detection |
US11960286B2 (en) | 2019-06-03 | 2024-04-16 | Zebra Technologies Corporation | Method, system and apparatus for dynamic task sequencing |
US10805549B1 (en) * | 2019-08-20 | 2020-10-13 | Himax Technologies Limited | Method and apparatus of auto exposure control based on pattern detection in depth sensing system |
CN110530291A (zh) * | 2019-08-26 | 2019-12-03 | 珠海博明视觉科技有限公司 | 一种光栅投影法高度重建的自动对焦算法 |
US11507103B2 (en) | 2019-12-04 | 2022-11-22 | Zebra Technologies Corporation | Method, system and apparatus for localization-based historical obstacle handling |
US11107238B2 (en) | 2019-12-13 | 2021-08-31 | Zebra Technologies Corporation | Method, system and apparatus for detecting item facings |
EP3879811B1 (en) | 2020-03-09 | 2021-12-15 | Axis AB | Determining whether a camera is out-of-focus |
US11822333B2 (en) | 2020-03-30 | 2023-11-21 | Zebra Technologies Corporation | Method, system and apparatus for data capture illumination control |
US11356626B2 (en) | 2020-04-22 | 2022-06-07 | Omnivision Technologies, Inc. | Flexible exposure control for image sensors with phase detection auto focus pixels |
CN114096994A (zh) * | 2020-05-29 | 2022-02-25 | 北京小米移动软件有限公司南京分公司 | 图像对齐方法及装置、电子设备、存储介质 |
US11450024B2 (en) | 2020-07-17 | 2022-09-20 | Zebra Technologies Corporation | Mixed depth object detection |
CN116113862A (zh) * | 2020-09-11 | 2023-05-12 | 西门子(中国)有限公司 | 用于实现工业相机对焦的方法和装置 |
US11593915B2 (en) | 2020-10-21 | 2023-02-28 | Zebra Technologies Corporation | Parallax-tolerant panoramic image generation |
US11392891B2 (en) | 2020-11-03 | 2022-07-19 | Zebra Technologies Corporation | Item placement detection and optimization in material handling systems |
US11847832B2 (en) | 2020-11-11 | 2023-12-19 | Zebra Technologies Corporation | Object classification for autonomous navigation systems |
CN115037867B (zh) * | 2021-03-03 | 2023-12-01 | Oppo广东移动通信有限公司 | 拍摄方法、装置、计算机可读存储介质及电子设备 |
US11954882B2 (en) | 2021-06-17 | 2024-04-09 | Zebra Technologies Corporation | Feature-based georegistration for mobile computing devices |
US11539875B1 (en) * | 2021-08-27 | 2022-12-27 | Omnivision Technologies Inc. | Image-focusing method and associated image sensor |
US11683598B1 (en) | 2022-02-24 | 2023-06-20 | Omnivision Technologies, Inc. | Image sensor with on-chip occlusion detection and methods thereof |
CN114500859B (zh) * | 2022-04-13 | 2022-08-02 | 国仪量子(合肥)技术有限公司 | 自动聚焦方法、拍摄设备、存储介质 |
CN115641368B (zh) * | 2022-10-31 | 2024-06-04 | 安徽农业大学 | 一种用于标定的离焦棋盘格图像特征提取方法 |
CN117452619B (zh) * | 2023-12-26 | 2024-03-05 | 西华大学 | 一种稀疏目标显微成像自动对焦方法、***及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1646964A (zh) * | 2002-08-07 | 2005-07-27 | 松下电器产业株式会社 | 聚焦装置 |
CN101496413A (zh) * | 2006-08-01 | 2009-07-29 | 高通股份有限公司 | 用单视场低功率移动装置实时捕获及产生立体图像及视频 |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4589089A (en) | 1978-05-30 | 1986-05-13 | Bally Manufacturing Corporation | Computer-peripheral interface for a game apparatus |
US4475172A (en) | 1978-05-30 | 1984-10-02 | Bally Manufacturing Corporation | Audio/visual home computer and game apparatus |
US4799677A (en) | 1983-09-02 | 1989-01-24 | Bally Manufacturing Corporation | Video game having video disk read only memory |
US4979738A (en) | 1983-12-06 | 1990-12-25 | Midway Manufacturing Corporation | Constant spatial data mass RAM video display system |
US4605961A (en) | 1983-12-22 | 1986-08-12 | Frederiksen Jeffrey E | Video transmission system using time-warp scrambling |
US4694489A (en) | 1983-12-22 | 1987-09-15 | Frederiksen Jeffrey E | Video transmission system |
US4742543A (en) | 1983-12-22 | 1988-05-03 | Frederiksen Jeffrey E | Video transmission system |
US4682360A (en) | 1983-12-22 | 1987-07-21 | Frederiksen Jeffrey E | Video transmission system |
US4743959A (en) | 1986-09-17 | 1988-05-10 | Frederiksen Jeffrey E | High resolution color video image acquisition and compression system |
DE69018231T2 (de) | 1989-08-08 | 1995-11-09 | Sanyo Electric Co | Kamera mit selbsttätiger scharfeinstellung. |
US5227863A (en) | 1989-11-14 | 1993-07-13 | Intelligent Resources Integrated Systems, Inc. | Programmable digital video processing system |
US5272529A (en) | 1992-03-20 | 1993-12-21 | Northwest Starscan Limited Partnership | Adaptive hierarchical subband vector quantization encoder |
US5247355A (en) | 1992-06-11 | 1993-09-21 | Northwest Starscan Limited Partnership | Gridlocked method and system for video motion compensation |
JPH08502865A (ja) | 1992-09-01 | 1996-03-26 | アプル・コンピュータ・インコーポレーテッド | 改良されたベクトルの量子化 |
US6122411A (en) | 1994-02-16 | 2000-09-19 | Apple Computer, Inc. | Method and apparatus for storing high and low resolution images in an imaging device |
US5694227A (en) | 1994-07-15 | 1997-12-02 | Apple Computer, Inc. | Method and apparatus for calibrating and adjusting a color imaging system |
US5764291A (en) | 1994-09-30 | 1998-06-09 | Apple Computer, Inc. | Apparatus and method for orientation-dependent camera exposure and focus setting optimization |
US5496106A (en) | 1994-12-13 | 1996-03-05 | Apple Computer, Inc. | System and method for generating a contrast overlay as a focus assist for an imaging device |
US5640613A (en) | 1995-04-14 | 1997-06-17 | Apple Computer, Inc. | Corrective lens assembly |
US6011585A (en) | 1996-01-19 | 2000-01-04 | Apple Computer, Inc. | Apparatus and method for rotating the display orientation of a captured image |
US5867214A (en) | 1996-04-11 | 1999-02-02 | Apple Computer, Inc. | Apparatus and method for increasing a digital camera image capture rate by delaying image processing |
US5809178A (en) | 1996-06-11 | 1998-09-15 | Apple Computer, Inc. | Elimination of visible quantizing artifacts in a digital image utilizing a critical noise/quantizing factor |
US6031964A (en) | 1996-06-20 | 2000-02-29 | Apple Computer, Inc. | System and method for using a unified memory architecture to implement a digital camera device |
US5991465A (en) | 1996-08-29 | 1999-11-23 | Apple Computer, Inc. | Modular digital image processing via an image processing chain with modifiable parameter controls |
US6157394A (en) | 1996-08-29 | 2000-12-05 | Apple Computer, Inc. | Flexible digital image processing via an image processing chain with modular image processors |
US6028611A (en) | 1996-08-29 | 2000-02-22 | Apple Computer, Inc. | Modular digital image processing via an image processing chain |
US5790705A (en) | 1996-09-13 | 1998-08-04 | Apple Computer, Inc. | Compression techniques for substantially lossless digital image data storage |
US6141044A (en) | 1996-09-26 | 2000-10-31 | Apple Computer, Inc. | Method and system for coherent image group maintenance in memory |
US6198514B1 (en) | 1998-02-27 | 2001-03-06 | Apple Computer, Inc. | Color misconvergence measurement using a common monochrome image |
US6151415A (en) | 1998-12-14 | 2000-11-21 | Intel Corporation | Auto-focusing algorithm using discrete wavelet transform |
JP2001281529A (ja) | 2000-03-29 | 2001-10-10 | Minolta Co Ltd | デジタルカメラ |
US6954193B1 (en) | 2000-09-08 | 2005-10-11 | Apple Computer, Inc. | Method and apparatus for correcting pixel level intensity variation |
US6745012B1 (en) | 2000-11-17 | 2004-06-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive data compression in a wireless telecommunications system |
DK1368689T3 (da) * | 2001-02-02 | 2006-09-18 | Cellomics Inc | Fremgangsmåde til estimering af den bedste indledende fokusposition |
US7170938B1 (en) | 2001-08-21 | 2007-01-30 | Cisco Systems Canada Co. | Rate control method for video transcoding |
US6959044B1 (en) | 2001-08-21 | 2005-10-25 | Cisco Systems Canada Co. | Dynamic GOP system and method for digital video encoding |
US7277595B1 (en) | 2003-01-06 | 2007-10-02 | Apple Inc. | Method and apparatus for digital image manipulation to remove image blemishes |
US20040165090A1 (en) * | 2003-02-13 | 2004-08-26 | Alex Ning | Auto-focus (AF) lens and process |
US7310371B2 (en) | 2003-05-30 | 2007-12-18 | Lsi Corporation | Method and/or apparatus for reducing the complexity of H.264 B-frame encoding using selective reconstruction |
US7327786B2 (en) | 2003-06-02 | 2008-02-05 | Lsi Logic Corporation | Method for improving rate-distortion performance of a video compression system through parallel coefficient cancellation in the transform |
JP4022828B2 (ja) | 2003-06-30 | 2007-12-19 | カシオ計算機株式会社 | 撮像装置、オートフォーカス制御方法、及びオートフォーカス制御プログラム |
US7324595B2 (en) | 2003-09-22 | 2008-01-29 | Lsi Logic Corporation | Method and/or apparatus for reducing the complexity of non-reference frame encoding using selective reconstruction |
US7170529B2 (en) * | 2003-10-24 | 2007-01-30 | Sigmatel, Inc. | Image processing |
US7602849B2 (en) | 2003-11-17 | 2009-10-13 | Lsi Corporation | Adaptive reference picture selection based on inter-picture motion measurement |
US7362804B2 (en) | 2003-11-24 | 2008-04-22 | Lsi Logic Corporation | Graphical symbols for H.264 bitstream syntax elements |
US7362376B2 (en) | 2003-12-23 | 2008-04-22 | Lsi Logic Corporation | Method and apparatus for video deinterlacing and format conversion |
US7345708B2 (en) | 2003-12-23 | 2008-03-18 | Lsi Logic Corporation | Method and apparatus for video deinterlacing and format conversion |
US7304681B2 (en) * | 2004-01-21 | 2007-12-04 | Hewlett-Packard Development Company, L.P. | Method and apparatus for continuous focus and exposure in a digital imaging device |
US7515765B1 (en) | 2004-01-30 | 2009-04-07 | Apple Inc. | Image sharpness management |
US7231587B2 (en) | 2004-03-29 | 2007-06-12 | Lsi Corporation | Embedded picture PSNR/CRC data in compressed video bitstream |
US7620103B2 (en) | 2004-12-10 | 2009-11-17 | Lsi Corporation | Programmable quantization dead zone and threshold for standard-based H.264 and/or VC1 video encoding |
US7492958B2 (en) | 2005-01-05 | 2009-02-17 | Nokia Corporation | Digital imaging with autofocus |
US7612804B1 (en) | 2005-02-15 | 2009-11-03 | Apple Inc. | Methods and apparatuses for image processing |
US7480452B2 (en) * | 2005-03-15 | 2009-01-20 | Winbond Electronics Corporation | System and method for image capturing |
US7949044B2 (en) | 2005-04-12 | 2011-05-24 | Lsi Corporation | Method for coefficient bitdepth limitation, encoder and bitstream generation apparatus |
US8031766B2 (en) | 2005-08-02 | 2011-10-04 | Lsi Corporation | Performance adaptive video encoding with concurrent decoding |
US7881384B2 (en) | 2005-08-05 | 2011-02-01 | Lsi Corporation | Method and apparatus for H.264 to MPEG-2 video transcoding |
US7903739B2 (en) | 2005-08-05 | 2011-03-08 | Lsi Corporation | Method and apparatus for VC-1 to MPEG-2 video transcoding |
US8208540B2 (en) | 2005-08-05 | 2012-06-26 | Lsi Corporation | Video bitstream transcoding method and apparatus |
US8155194B2 (en) | 2005-08-05 | 2012-04-10 | Lsi Corporation | Method and apparatus for MPEG-2 to H.264 video transcoding |
US8045618B2 (en) | 2005-08-05 | 2011-10-25 | Lsi Corporation | Method and apparatus for MPEG-2 to VC-1 video transcoding |
US7596280B2 (en) | 2005-09-29 | 2009-09-29 | Apple Inc. | Video acquisition with integrated GPU processing |
TWI285500B (en) | 2005-11-11 | 2007-08-11 | Primax Electronics Ltd | Auto focus method for digital camera |
KR100691245B1 (ko) * | 2006-05-11 | 2007-03-12 | 삼성전자주식회사 | 휴대단말의 렌즈 위치오차 보정방법 |
CN1892401A (zh) | 2006-05-25 | 2007-01-10 | 南京大学 | 针对虹膜图像捕捉的时频域多阶段自动对焦方法 |
CN100451807C (zh) * | 2006-08-22 | 2009-01-14 | 宁波大学 | 基于Hadamard变换的数码显微成像自动对焦方法 |
CN100543576C (zh) | 2006-08-24 | 2009-09-23 | 宁波大学 | 基于Contourlet变换的数码成像自动对焦方法 |
CN100451808C (zh) | 2006-08-24 | 2009-01-14 | 宁波大学 | 基于Contourlet变换的数码成像自动对焦方法 |
US7893975B2 (en) | 2006-10-13 | 2011-02-22 | Apple Inc. | System and method for processing images using predetermined tone reproduction curves |
US7773127B2 (en) | 2006-10-13 | 2010-08-10 | Apple Inc. | System and method for RAW image processing |
JP4254841B2 (ja) | 2006-10-20 | 2009-04-15 | ソニー株式会社 | 撮像装置、撮像方法、画像処理装置、画像処理方法および画像処理プログラム |
TWI324015B (en) | 2006-12-22 | 2010-04-21 | Ind Tech Res Inst | Autofocus searching method |
EP1988705A1 (en) * | 2007-04-30 | 2008-11-05 | STMicroelectronics (Research & Development) Limited | Improvements in or relating to image sensors |
JP2009192960A (ja) * | 2008-02-16 | 2009-08-27 | Sanyo Electric Co Ltd | 電子カメラ |
US8405727B2 (en) | 2008-05-01 | 2013-03-26 | Apple Inc. | Apparatus and method for calibrating image capture devices |
JP5132507B2 (ja) * | 2008-09-26 | 2013-01-30 | オリンパス株式会社 | 焦点検出装置およびカメラシステム |
RU2389050C1 (ru) | 2008-10-30 | 2010-05-10 | Общество с ограниченной ответственностью Научно-Производственная компания "СенсорИС" | Способ автоматической фокусировки |
-
2010
- 2010-09-01 US US12/873,978 patent/US9398205B2/en active Active
-
2011
- 2011-08-25 EP EP11749711.5A patent/EP2599301A1/en not_active Ceased
- 2011-08-25 AU AU2011296296A patent/AU2011296296B2/en not_active Ceased
- 2011-08-25 RU RU2013114371/07A patent/RU2543974C2/ru active
- 2011-08-25 BR BR112013005140A patent/BR112013005140A2/pt not_active Application Discontinuation
- 2011-08-25 MX MX2013002455A patent/MX2013002455A/es active IP Right Grant
- 2011-08-25 WO PCT/US2011/049121 patent/WO2012030617A1/en active Application Filing
- 2011-08-25 IN IN1958CHN2013 patent/IN2013CN01958A/en unknown
- 2011-09-01 CN CN201110399082.8A patent/CN102572265B/zh active Active
- 2011-09-01 TW TW100131573A patent/TW201216207A/zh unknown
-
2013
- 2013-01-11 HK HK13100519.7A patent/HK1173294A1/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1646964A (zh) * | 2002-08-07 | 2005-07-27 | 松下电器产业株式会社 | 聚焦装置 |
CN101496413A (zh) * | 2006-08-01 | 2009-07-29 | 高通股份有限公司 | 用单视场低功率移动装置实时捕获及产生立体图像及视频 |
Also Published As
Publication number | Publication date |
---|---|
CN102572265A (zh) | 2012-07-11 |
MX2013002455A (es) | 2013-08-29 |
BR112013005140A2 (pt) | 2016-05-10 |
US9398205B2 (en) | 2016-07-19 |
RU2013114371A (ru) | 2014-10-10 |
RU2543974C2 (ru) | 2015-03-10 |
AU2011296296A1 (en) | 2013-03-21 |
IN2013CN01958A (zh) | 2015-07-31 |
WO2012030617A1 (en) | 2012-03-08 |
HK1173294A1 (zh) | 2013-05-10 |
TW201216207A (en) | 2012-04-16 |
US20120051730A1 (en) | 2012-03-01 |
AU2011296296B2 (en) | 2015-08-27 |
EP2599301A1 (en) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102572265B (zh) | 使用具有粗略和精细自动对焦分数的图像统计数据的自动对焦控制 | |
CN102404582B (zh) | 用于自动白平衡处理的灵活的颜色空间选择 | |
CN102640184B (zh) | 用于图像信号处理的时域滤波技术 | |
CN102640499B (zh) | 用加权的梯度对图像数据去马赛克的***和方法 | |
CN102640489B (zh) | 用于检测和校正图像传感器中的缺陷像素的***和方法 | |
CN102523456B (zh) | 双图像传感器图像处理***和方法 | |
CN102572443B (zh) | 用于在图像信号处理***中同步音频和视频数据的技术 | |
CN104902250B (zh) | 使用图像传感器接口定时信号的闪光同步 | |
CN102547301B (zh) | 使用图像信号处理器处理图像数据的***和方法 | |
CN102572316B (zh) | 用于图像信号处理的溢出控制技术 | |
TWI492609B (zh) | 用於處理原始影像資料之影像信號處理器行緩衝器組態 | |
CN103327218A (zh) | 图像处理***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1173294 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1173294 Country of ref document: HK |