首页> 中国专利> 用于自动白平衡处理的灵活的颜色空间选择

用于自动白平衡处理的灵活的颜色空间选择

摘要

本公开涉及用于自动白平衡处理的灵活的颜色空间选择。公开了用于在图像信号处理器(ISP)(32)中处理统计数据的各种技术。在一个实施例中,统计信息收集引擎可被配置为获取关于自动白平衡的统计信息。该统计信息收集引擎可接收由图像传感器(90)获取的原始拜耳RGB数据,并且可被配置为执行一个或多个颜色空间转换以获得其他颜色空间中的像素数据。如同通过每个滤波器(650)的像素条件所定义的,一组像素滤波器(650)可被配置为基于YC1C2特性而有条件地累加像素数据的和。基于所选的颜色空间,像素滤波器(650)可生成颜色和,其可被用来将当前发光体与图像传感器已由其先前校准的一组参考发光体进行匹配。

著录项

  • 公开/公告号CN102404582A

    专利类型发明专利

  • 公开/公告日2012-04-04

    原文格式PDF

  • 申请/专利权人 苹果公司;

    申请/专利号CN201110399094.0

  • 申请日2011-09-01

  • 分类号H04N9/73(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人陈新

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-18 04:42:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-09-24

    授权

    授权

  • 2012-06-13

    实质审查的生效 IPC(主分类):H04N9/73 申请日:20110901

    实质审查的生效

  • 2012-04-04

    公开

    公开

说明书

技术领域

本公开一般涉及数字成像设备,具体而言,涉及用于处理使用数字 成像设备的图像传感器而获得的图像数据的系统和方法。

背景技术

该部分用于向阅读者介绍涉及以下所描述和/或请求保护的本技术 的多个方面的领域的多个方面。相信该讨论有助于向阅读者提供背景信息以使 其更好地理解本公开的多个方面。因此,需要理解的是就此而论这些陈述是用 来阅读的,而非承认是它们是现有技术。

在近些年,数字成像设备已经变得更加普及,这至少得益于这些设 备对于一般消费者来说变得越来越消费得起。此外,除了一些刚上市的独立数 码相机之外,数字成像设备整合为另一个电子设备(例如膝上或笔记本电脑、 蜂窝电话或便携媒体播放器)的一部分也很常见。

为了获取图像数据,大多数数字成像设备包括图像传感器,其提供 多个被配置为将图像传感器检测到的光转换为电信号的光检测元件(例如光电 检测器)。图像传感器还可包括滤色器阵列,其对由图像传感器捕捉的光进行 滤波以获得颜色信息。接着通过图像处理流水线来处理由图像传感器捕捉的图 像数据,该图像处理流水线可以对图像数据应用多种图像处理操作以生成可被 显示在显示设备(例如监视器)上以供观看的全彩图像。

传统图像处理技术一般致力于产生在主观上和客观上都使观看者愉 悦的可观看图像,这样的传统技术可能无法充分地解决图像数据中由成像设备 和/或图像传感器引入的错误和/或失真。例如,可能因制造缺陷或操作错误而 导致的图像传感器中的缺陷像素可能无法准确地感测光线水平,并且如果不加 校正,可能会在得到的经处理图像中产生伪影(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是依照本公开一些方面的被应用到差分分析器以选择用于像 素合并补偿滤波的中心输入像素和索引/相位的多种步进大小(step size)的图 解描绘;

图34是例示了依照一个实施例的使用图32的像素合并补偿滤波器 来缩放图像数据的处理的流程图;

图35是例示了依照一个实施例的确定由图32的像素合并补偿滤波 器所执行的水平和垂直滤波的当前输入源中心像素的处理的流程图;

图36是例示了依照一个实施例的确定用于选择由图32的像素合并 补偿滤波器所执行的水平和垂直滤波的滤波系数的索引的处理的流程图;

图37是示出了依照本公开一些方面的可在图8所示的ISP前端处理 逻辑中实现的统计处理单元的实施例的更详细方框图;

图38示出了依照本公开一些方面的当应用用于在图37的统计处理 单元进行统计处理时检测和校正缺陷像素的技术时可能要考虑的各种图像帧 边界情况;

图39是例示了依照一个实施例的用于在统计处理过程中执行缺陷 像素检测和校正的处理的流程图;

图40示出了描绘成像设备的传统镜头的光强度相对于像素位置的 三维分布;

图41是表现图像中不均匀光强度的有色图,这可能是镜头明暗(lens  shading)不规则的结果;

图42是依照本公开一些方面的包括镜头明暗纠正区域和增益栅格 (gain grid)的原始成像帧的图解例示;

图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-scale unsharp mask)来锐化亮度图像的技术,以 及用于应用镜头明暗增益以校正镜头明暗不规则的技术。此外,应当理解的是 这里公开的技术可被应用到静态图像和运动图像(例如视频)这两者,并且可 被用于任何合适类型的成像应用,例如数码相机、具有集成数码相机的电子设 备、安全或视频监视系统、医疗成像系统等等。

留意以上要点,图1是例示电子设备10的一个示例的方框图,所述 电子设备10可以提供使用以上简单提及的一个或多个图像处理技术对图像数 据进行的处理。电子设备10可以是任何类型的电子设备,例如膝上或桌上型 计算机、移动电话、数字媒体播放器等等,其被配置为接收和处理图像数据, 例如使用一个或多个图像感测部件获取的数据。仅作为示例,电子设备10可 以是便携式电子设备,例如可从加利福尼亚州库比蒂诺的苹果公司获得的 或的模型。此外,电子设备10可以是桌上或膝上型计算机,例 如可从苹果公司获得的Pro、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可包括被配置为连接多种外 置设备的端口,这些外置设备例如是电源、音频输出设备(例如耳机或头戴受 话器)、或其他电子设备(例如手持设备和/或计算机、打印机、投影仪、外置 显示器、调制解调器、坞站(docking station)等等)。在一个实施例中,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中运行成像应用,例如可从苹果公司获得的或或由苹果公司提供的“相机”和/或“照片”应用,这些都是 的模型上可用的。

将由(一个或多个)处理器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或的模型。

如进一步所示,显示器28可被配置为生成可被用户观看的各种图 像。例如,在计算机50的操作期间,显示器28可显示图形用户界面(“GUI”) 52以允许用户与在计算机50中运行的操作系统和/或应用进行交互。GUI 52 可包括各种层、窗口、屏幕、模板或可在整个或部分显示设备28上显示的其 他图形元素。例如,在所描绘的实施例中,操作系统GUI52可包括各种图形 图标54,每一种图标可对应于可基于检测到用户的选择(例如通过键盘/鼠标 或触摸屏输入)被打开或执行的各种应用。图标54可被显示在停靠栏56中或 在屏幕上显示的一个或多个图形窗口元素58内。在一些实施例中,对图标54 的选择可导致分级导航处理,使得对图标54的选择导致一个屏幕或打开另一 个包括一个或多个附加图标或其他GUI元素的图形窗口。仅作为示例,图4 显示的操作系统GUI 52可以是来自可从苹果公司获得的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所讨论的,显示器还可显 示GUI 52以允许用户与设备60交互。GUI 52可以包括图形元素,例如图标 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可被配置为初始化及编程用于配置和启动图像帧的处理的控制寄存器(在 此被称为“进行寄存器(go register)”),并且被配置为选择用于更新双重缓冲 数据寄存器的合适的(一个或多个)寄存器库(register bank)。在一些实施例 中,控制单元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还可包括此处被称为“进行位”(go bit)的就 位位(arming bit),其可被设置以使进行寄存器就位。当检测到用于当前帧的 触发事件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到达前填充由FEProc 130使用的读出缓 冲器。以此情况下,对应于活动寄存器库的影子寄存器可以在该触发事件之后 被更新,从而允许完整帧区间设置用于下一帧(例如在帧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可包括 对应于ISP前端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以供处理。 如上所述,可使用基于由ProcInDMAG0寄存器的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)转变为半活动状态或非活动状态时,由于对图像统计信息的 持续收集使得颜色平衡和曝光参数可能已经可用,所以半活动传感器可在一帧 内开始获取数据。该技术可被称为图像传感器的“热切换”(hot switching),其 避免了与图像传感器的“冷启动”(例如没有可用统计信息的启动)有关的缺点。 此外,为了省电,因为每个源都是异步的(如上所述),所以半活动传感器可 在半活动期间以降低的时钟和/或帧速率操作。

在继续图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(t0的运动历史输出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(t-1)相加来计算可被用来 从运动表(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可被配置为 使用前一经滤波的帧的无限脉冲响应(IIIR)滤波器,或使用前一初始帧的有 限脉冲响应(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)-dd(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的方框图。 BCF 300可以包括像素合并补偿逻辑366,其可以处理经像素合并的像素358 以分别通过使用水平缩放逻辑368和垂直缩放逻辑370来应用水平和垂直缩 放,以重新采样和重新定位经像素合并的像素358,从而以空间均匀分布来排 列这些像素,如图31所示。在一个实施例中,可使用水平和垂直多抽头多相 滤波来执行由BCF 300的执行的(一个或多个)缩放操作。例如,滤波处理 可包括从输入源图像数据(例如由图像传感器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分量, 并且可以将每个分量作为单独的平面来处理。

操作中,水平和垂直缩放可包括初始化DDA 372和使用DDA 372 的整数及分数部分来执行多抽头多相滤波。虽然被分开执行并使用分开的 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),在currDDA 1.0 的绿色输出像素(位14为1)可被认为是奇数像素,以此类推。此外,虽然 关于水平方向的滤波(使用DDAStepX)讨论了图33,但是应当理解关于垂 直滤波(使用DDAStepY),也可应用相同的方式来确定偶数和奇数的输入和 输出像素。在其他实施例中,DDA372还可被用来追踪输入像素的位置(例如, 而不是追踪期望的输出像素位置)。此外,应当明了,DDAStepX和DDAStepY 可被设为相同或不同的值。此外,假设使用拜耳模式,则应当注意由BCF300 所使用的开始像素可以是Gr、Gb、R或B像素中的任何一个,这例如取决于 哪个像素位于活动区域280的一角。

带着这样的思想,偶数/奇数输入像素被用于分别生成偶数/奇数输出 像素。假设输出像素位置在偶数和奇数位置之间交替,通过将DDA舍入到用 于偶数或奇数输出像素位置(基于DDAStepX)的最接近的偶数或奇数输入像 素位置来分别确定用于滤波目的的中心源输入像素位置(此处被称为 “currPixel”)。在一个其中DDA 372a被配置为使用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深度表。虽然只例示了BCF 300的一部分,但应明了在特定实施例中,滤波器系数表374可被存储在与 BCF 300物理分离的存储器,例如存储器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(偶数)

             0000 0000 0000 0001.0000 0000 0000 0000    (currDDA+1.0)

(AND)        1111 1111 1111 1110.0000 0000 0000 0000    (0xFFFE.0000)

       =    0000 0000 0000 0000.0000 0000 0000 0000

currPixel(根据结果的位[31:16]而确定)=0

因此,在currDDA位置0.0(行378),用于滤波的源输入中心像素对应于在 行375的位置0.0的红色输入像素。

为了确定在偶数currDDA 0.0的currIndex,可以应用等式7a,如 下所示:

currDDA=0.0(偶数)

            0000 0000 0000 0000.0000 0000 0000 0000    (currDDA)

      +     0000 0000 0000 0000.0010 0000 0000 0000    (0.125)

      =    0000 0000 0000 0000.0010 0000 0000 0000

currIndex(根据结果的位[16:14]而确定)=[000]=0

因此,在currDDA位置0.0(行378),为0的currIndex值可被用来从滤波器 系数表374中选择滤波系数。

因此,可以基于所确定的在currDDA0.0的currPixel和currIndex 来应用滤波(基于DDAStep是在X(水平)还是在Y(垂直)方向,其可以 是垂直的或水平的),DDA 372被增量DDAStep(1.5),并且下一个currPixel 和currIndex值被确定。例如,在下一个currDDA位置1.5(奇数位置),可 使用等式6b来确定currPixel,如下所示:

currDDA=0.0(奇数)

            0000 0000 0000 0001.1000 0000 0000 0000    (currDDA)

(OR)        0000 0000 0000 0001.0000 0000 0000 0000    (0x0001.0000)

      =    0000 0000 0000 0001.1000 0000 0000 0000

currPixel(根据结果的位[31:16]而确定)=1

因此,在currDDA位置1.5(行378),用于滤波的源输入中心像素对应于在 行375的位置1.0的绿色输入像素。

进一步地,可使用等式7b来确定在奇数currDDA 1.5的currIndex, 如下所示:

currDDA=1.5(奇数)

            0000 0000 0000 0001.1000 0000 0000 0000    (currDDA)

      +     0000 0000 0000 0001.0010 0000 0000 0000    (1.125)

      =    0000 0000 0000 0010.1010 0000 0000 0000

currIndex(根据结果的位[16:14]而确定)=[010]=2

因此,在currDDA位置1.5(行378),为2的currIndex值可被用来从滤波器 系数表374中选择合适的滤波系数。于是可使用这些currPixel和currIndex 值来应用滤波(基于DDAStep是在X(水平)还是在Y(垂直)方向,其可 以是垂直的或水平的)。

接着,DDA 372再次被增量DDAStep(1.5),得到为3.0的currDDA 值。可使用等式6a来确定对应于currDDA3.0的currPixel,如下所示:

currDDA=3.0(偶数)

            0000 0000 0000 0100.0000 0000 0000 0000    (currDDA+1.0)

(AND)       1111 1111 1111 1110.0000 0000 0000 0000    (0xFFFE.0000)

     =     0000 0000 0000 0100.0000 0000 0000 0000

currPixel(根据结果的位[31:16]而确定)=4

因此在currDDA位置3.0(行378),用于滤波的源输入中心像素对应于在行 375的位置4.0的红色输入像素。

接着,可使用等式7a来确定在偶数currDDA 3.0的currI0dex,如 下所示:

currDDA=3.0(偶数)

             0000 0000 0000 0011.0000 0000 0000 0000    (currDD)

      +      0000 0000 0000 0000.0010 0000 0000 0000    (0.125)

      =     0000 0000 0000 0011.0010 0000 0000 0000

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抽头滤波器可使用DDA 372来控制当前中心像素的步进(例如通过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表示由BCF 300输出的帧的宽度。

对于垂直滤波,如果currDDA位置在与中心输入像素的位置(SrcY) 和帧的宽度(SrcHeight)(例如图19的活动区域280的宽度290)相比较后, 表明DDA 372靠近边界,使得没有足够的像素来执行3抽头滤波,那么可以 重复输入边界像素。此外,可配置垂直缩放逻辑370以使得输入像素的数量(包 括初始的和复制的像素)不能超过输入高度。其可由以下表示:

StartY=(((DDAInitY+0x0001.0000)&0xFFFE.0000)>>16)

EndY  =(((DDAInitY+DDAStepY*(BCFOutHeight-1))|0x0001.0000)>>16)

EndY-StartY<=SrcHeight-1

其中,DDAInitY表示DDA 372的初始位置,DDAStepY表示在垂直方向上的 DDA步进值,BCFOutHeight表示由BCF300输出的帧的高度。

现在参考图34,描绘了依照一个实施例用于对由前端像素处理单元 130接收到的图像数据应用像素合并补偿滤波的方法382的流程图。将明了的 是,如图34所示的方法382可应用到垂直和水平缩放。其开始于步骤383, 初始化DDA 372并确定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位分数配置仅是一个示例,应当明 了的是可依照本技术来利用DDA 372的其他配置。作为示例,DDA 372的其 他实施例可被配置为包括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中将DDA 372增加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值增加一个索引 步长和一个像素移位,并且基于DDA 372的最低整数位和两位最高分数位来 确定currIndex。因此,在一个实施例中,其中在每个相同颜色像素之间提供 8个相位,并且其中DDA包括16个整数位和16个分数位,一个索引步长可 对应于0.125,一个像素移位可对应于1.0(移位8个索引步长则到达下一个相 同颜色像素),并且可基于增加了1.125的currDDA值的位[16:14]来确定 currIndex(例如等式7b)。

虽然这里所示的实施例提供BCF 300作为前端像素处理单元130的 部件,但其他实施例可将BCF 300并入到以下将讨论的ISP流水82的原始图 像数据处理流水线中,ISP流水82可包括缺陷像素检测/校正逻辑、增益/偏移 /补偿块、降噪逻辑、镜头明暗校正逻辑和解马赛克逻辑。此外,在以上提及 的缺陷像素检测/校正逻辑、增益/偏移/补偿块、降噪逻辑、镜头明暗校正逻辑 不依赖于像素的线性分布的实施例中,BCF 300可并入解马赛克逻辑,以在解 马赛克之前执行像素合并补偿滤波和像素的重新定位,因为解马赛克一般依赖 于像素的均匀空间排列。例如,在一个实施例中,BCF 300可被并入到传感器 输入和解马赛克逻辑之间的任何位置,并且在像素合并补偿之前对原始图像数 据应用时域滤波和/或缺陷像素检测/校正。

如上所述的,BCF 300的输出可以是具有空间均匀分布的图像数据 (例如图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内的 无法准确感应光水平的成像像素。缺陷像素可归咎于一些因素,并且其可包括 “燥点(hot pixel)”(或漏电像素)、“亮点(stuck pixel)”和“坏点(dead pixel)”。 “燥点”一般表现为比对于在相同空间位置的给予相同光亮的非缺陷像素更亮。 燥点的产生可归因于重置失败和/或高泄漏。例如,燥点可呈现出比非缺陷像 素的正常电荷泄漏更高的电荷泄漏,因此可能比非缺陷像素表现得更亮。此外, “坏点”和“亮点”可能是诸如灰尘或其他微量材料之类的杂质在制造和/或装配 过程中污染了图像传感器的结果,其可导致某些缺陷像素比非缺陷像素更暗或 更亮,或者可导致缺陷像素固定在特定值而不管其实际曝光的光量。此外,在 图像传感器操作期间发生的电路故障也可导致坏点和亮点。作为示例,亮点可 以看上去为常开(全充电)并且因此看上去更亮,而坏点则看上去为常关。

在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:

C=ΣkN(GkdprTh),---(9)

对于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模型。例如,镜头的较薄的边缘(thinner edged)通常呈现最大的不 规则性。另外,镜头明暗图案的不规则性也可能是在图像传感器内的微透镜阵 列没有与滤色器阵列完美对齐的结果。此外,在一些镜头中的红外(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的增益:

G=(G0(Y-jj)(x-ii))+(G1(Y-jj)(ii))+(G2(jj)(X-ii))+(G3(ii)(jj))XY---(13a)

随后可组合以上等式13a中的各项以获得下述表达式:

G=G0[XY-X(jj)-Y(ii)+(ii)(jj)]+G1[Y(ii)-(ii)(jj)]+G2[X(jj)-(ii(jj))]+G3[(ii)(jj)]XY---(13b)

在一个实施例中,可以增量方式执行该插值法,以代替对每个像素使用乘法器, 从而降低计算复杂度。例如,可使用可在增益栅格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=(xG-x0)2+(yG-y0)2---(15)

在另一个实施例中,可利用以下所示的更简单的估计公式来获得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-66提供统计信息 收集块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)颜色空间(例如基于CIE 1976)、红/蓝归一化颜色空间(例如, 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相匹配,则 可分别对红色和蓝色颜色通道应用大约1.37和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_CCM 616可被配置为将相机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_CCM 616的输出。另外,如下所示,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_CCM_G_clipcount_high:被截短的>255的sGlinear像素的数量

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_clipccount_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_Offset2Y;    (28)

cam =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=ChromaScale0 if(camC1<0)        (34)

             ChromaScale1 otherwise

其后,如以下等式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_CSC_200至3A_CSC2_22是矩阵630的带符号的系数,并且 3A_Offset2C1和3A_Offset2C2是带符号的偏移量。此外,如下所示,计算 camY、camC1和camC2的被截短的像素的数量:

3A_CSC2_Y_clipcount_low:被截短的<3A_CSC2MIN_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_C2clipcount_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,可将来自非线性颜色空间转换(YCbCr 626)或相 机颜色空间转换(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&3]]+=Count;

其中,基于所选择的亮度值(在该例子中是Y)来确定Count。如同将明了的, 可通过面元更新逻辑块644来实现由等式37、38和39表示的步骤。此外,在 一个实施例中,可设置多个亮度阈值以定义亮度间隔。作为例子,四个亮度阈 值(Ythd0-Ythd3)可定义五个亮度间隔,其中分别为每个间隔定义为Count 值Count0-4。例如,可如下地基于亮度阈值来选择(例如通过像素条件逻辑 642)Count0-Count4:

if(Y<=Ythd0)                    (40)

     Count=Count0

else if(Y<=Ythd1)

     Count=Count1

else if(Y<=Ythd2)

     Count=Count2

else if(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)、sRGBlinar像素(信号 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<=C1max

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_max 672,则将该选择的像素包括在累加和中,所述distance_max 672 可以是以像素为单位的与线664相距的距离670乘上归一化因子:

distance_max=distance*sqrt(C1_delta^2+C2_delta^2)

在本实施例中,distance(距离)、C1_delta和C2_delta可以具有-255到255 的范围。于是,distance_max 672可由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-PF7 650中的一个相关联。可定义一些像素条件以在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分块的窗口的分块配 置的一些例子:

VGA 640×480:  分块间隔40×30像素

HD  1280×720: 分块间隔80×45像素

HD  1920×1080:分块间隔120×68像素

5MP 2592×1944:分块间隔162×122像素

8MP 3280×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,sBlinearsum0),或 (sRsum0,sGsum0,sBsum0)或Ysum0,C1sum0,C2sum0),Count0

(Rsum1,Gsum1,Bsum1)或(sRlinear_sum1,sGlinear_sum1,sBlinear_sum1),或 (sRsum1,sGsum1,sBsum1)或(Ysum1,C1sum1,C2sum1),C0unt1

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个活动像素滤波器。另外,可以使用像素滤波器 或camY亮度统计信息来收集多组统计信息中的一组。在一个实施例中,为 AWB和AE收集的窗口统计信息可被映射到一个或多个寄存器。

仍然参考图51,3A统计逻辑468还可被配置为使用用于相机颜色 空间转换的亮度值camY获取一个窗口的亮度行和(luma row sum)统计信息 678。该信息可被用于检测和补偿闪烁。闪烁是由一些荧光和白炽光源的周期 变化生成的,典型地是由AC电源信号引起的。例如,参考图59,示出了例 示光源的变化可如何引起闪烁的图。闪烁检测于是可被用来检测光源的AC电 源的频率(例如50Hz或60Hz)。一旦知道了频率,则可通过将图像传感器的 积分时间设置成闪烁周期的整数倍来避免闪烁。

为了检测闪烁,在每一行上累加相机亮度camY。归因于进入的拜 耳数据的下采样,每个camY值可对应于初始原始图像数据的4行。然后,控 制逻辑和/或固件可以对行平均值或更可靠地,对连续帧的行平均值之差进行 频率分析以确定与特定光源关联的AC电源的频率。例如,参考图59,图像 传感器的积分时间可以基于时间t1、t2、t3和t4(例如以使得,在与呈现变化 的光源大致处于相同亮度水平的时刻相对应的时刻进行积分)。

在一个实施例中,可指定亮度行和的窗口,并且报告关于该窗口内 像素的统计信息678。作为例子,对于1080p HD视颜捕捉,假定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的输出可以是水平滤波器输出out(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^2or abs(a)

其中,FX表示3×3可编程滤波器F0和F1,其具有范围在[-4,4]内的带符号系 数。索引j和i表示camY图像中的像素位置。如上所述,针对camY的滤波 器可提供粗略的分辨率统计信息,因为camY是使用缩减的(例如4×4到1) 拜耳RGB数据导出的。例如,在一个实施例中,可使用Scharr算子来设置滤 波器F0和F1,Scharr算子提供了优于Sobel算子的改进的旋转对称,以下示 出了其中一个例子:

F0=-303-10010-303F1=-3-10-30003103

对于每个窗口,由滤波器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的AF 3×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^2or abs(a)

其中,FX表示3×3可编程滤波器F0和F1,其具有[-4,4]范围内的带符号系数。 索引j和i表示拜耳Y图像中的像素位置。如上所述,针对拜耳Y的滤波器可 提供精细分辨率统计信息,因为由AF逻辑680接收的拜耳RGB信号不是被 抽选的。仅作为例子,可使用以下滤波器配置之一来设置滤波器逻辑688的滤 波器F0和F1:

-1-1-1-18-1-1-1-1-6106100-106-10-60-10-120000

对于每个窗口,由滤波器688确定的累加值702 edgebayerY_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<=62144)。如上所示,将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。例如,这可归因于控制对焦位置的机械元件的线圈稳 定时间(coil settling time)。在这个实施例中,在重置到位置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分 数:

AFScorecoarse=f(-303-10010-303×in)+f(-3-10-30003103×in),

其中,in表示经抽选的亮度Y值。在其他实施例中,可使用其他3×3转换来 计算粗略和精细统计信息两者的AF分数。

自动对焦调整可以取决于颜色分量被不同地执行,因为不同的光的 波长可能会被镜头不同地影响,这是将水平滤波器684独立地应用到每个颜色 分量的一个原因。因此,即使镜头中存在色差(chromatic aberration)仍可执 行自动对焦。例如,当色差存在时,由于红色和蓝色相对于绿色典型地聚焦于 不同的位置或距离,所以每个颜色的相对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)

另外,可通过如下所示的等式来计算当前像素和其周围像素的平均Pay之间的 差作为平均梯度Gav

其中N=3,5或8(取决于像素位置)            (52a)

Gav=abs(P-Pav)                           (52b)

像素至像素梯度值(等式51)可被用来确定动态缺陷情况,相邻像素的平均 (等式52a和52b)可被用来识别以下所讨论的斑点情况。

在一个实施例中,DPDC逻辑932可如下地执行动态缺陷检测。首 先,如果一定数量的梯度Gk等于或低于由变量dynTh(动态缺陷阈值)表示 的特定阈值,则假设该像素是有缺陷的。因此,对于每个像素,在图片边界内 的相邻像素的等于或低于阈值dynTh的梯度的数量的计数(C)被累加。阈值 dynTh可以是固定阈值分量和可取决于周围像素中出现的“活动性”的动态阈 值分量的组合。例如,在一个实施例中,可通过计算高频分量值Phf来确定 dynTh的动态阈值分量,计算高频分量值Phf则基于对平均像素值Pav(等式 52a)和每个相邻像素之间的差的绝对值求和,如下所示:

Phf=8NΣkNabs(Pav-Pk),其中N=3,5或8                (52c)

在像素位于图像一角(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:

C=ΣkN(GkdynTh)---(54)

对于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)

PC=P3+P42;

else if(min==Gv)

PC=P1+P62;

else if(min==Gdp)

PC=P2+P52;

else if(min==Gdn)

PC=P0+P72;

由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=G1+G22---(63)

可以明了的是,通过这种方式来应用绿色不均匀性校正可以有助于防止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’的绿色值的插值:

G2,=G1+G32+2R2-(R0+R22)-(R2+R42)2---(78)

于是可以利用多种数学运算来产生如以下等式79和80所示的G2’的表达式:

G2,=2G1+2G34+4G2-R0-R2-R2-R44---(79)

G2,=2G1+2G3+2R2-R0-R44---(80)

因此,参考图78和以上的等式78-80,可以导出用于在(j,i)处的绿色值的水平 插值的一般表达式:

Gh=(2P(j,i-1)+2P(j,i+1)+2P(j,i)-P(j,i-2)-P(j,i+2))4---(81)

可以通过与Gh类似的方式来确定垂直滤波分量Gv。例如,参考 图79,在确定Gv时考虑拜耳图像的红色列1064的五个垂直像素(R0、G1、 R2、G3和R4)以及它们各自的滤波系数1068,其中假设R2是位于(j,i)处的 中心像素。在垂直方向上,对已知的绿色采样使用低通滤波,对红色通道使用 高通滤波,可以导出如下用于Gv的表达式:

Gv=(2P(j-1,i)+2P(j+1,i)+2P(j,i)-P(j-2,i)-P(j+2,i))4---(82)

虽然此处所讨论的例子已经示出了对红色像素的绿色值的插值,但应当理解的 是,等式81和82中阐述的表达式还可被用于对蓝色像素进行绿色值的水平和 垂直插值。

可通过使用如上讨论的能量分量(Eh和Ev)对水平和垂直滤波器 输出(Gh和Gv)进行加权来确定用于中心像素(j,i)的最终的经插值得到的绿 色值G’,以产生如下等式:

G,(j,i)=(EvEh+Ev)Gh+(EhEh+Ev)Gv---(83)

如上所述,能量分量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

R11=(R10+R12)2+(2G11-G10-G12)2,---(84)

其中G’10和G’12表示插值绿色值,如参考标记1078所示。同样地,可如下的 确定用于Gr像素(G11)的经插值得到的蓝色值(简称插值蓝色值)B’11

B11=(B01+B21)2+(2G11-G01-G21)2,---(85)

其中G’01和G’21表示插值绿色值(1078)。

接着,参考像素块1072,其中中心像素是Gb像素(G11),可根据 以下所示的等式86和87来确定插值红色值R’11和插值蓝色值B’11

R11=(R01+R21)2+(2G11-G01-G21)2---(86)

B11=(B10+B12)2+(2G11-G10-G12)2---(87)

此外,参考像素块1074,可如下的确定对蓝色像素B11的红色值的 插值:

R11=(R00+R02+R20+R22)4+(4G11-G00-G02-G20-G22)4,---(88)

其中,G’00、G’02、G’11、G’20和G’11表示插值绿色值,如参考标记1080所示。

最后,如像素块1076所示,可如下的计算对红色像素的蓝色值的插值:

B11=(B00+B02+B20+B22)4+(4G11-G00-G02-G20-G22)4---(89)

虽然以上所讨论的实施例依赖于颜色差(例如梯度)来确定红色和 蓝色经插值得到的值,另一个实施例可使用颜色比值来提供插值红色值和插值 蓝色值。例如,插值绿色值(块1078和1080)可被用来获得在拜耳图像模式 的红色和蓝色像素位置处的颜色比值,并且这些比值的线性插值可被用来确定 用于丢失的颜色采样的经插值得到的颜色比值。将可以是经插值得到的值或初 始值的绿色值与经插值得到颜色比值相乘以获得最终的插值颜色值。例如,可 依照以下公式来执行使用颜色比值的红色和蓝色像素值的插值,其中等式90 和91表示用于Gr像素的红色和蓝色值的插值,等式92和93表示用于Gb 像素的红色和蓝色值的插值,等式94表示对蓝色像素的红色值的插值,以及 等式95表示对红色像素的蓝色值的插值:

R11=G11(R10G10)+(R12G12)2---(90)

(当G11是Gr像素时插值得到的R’11)

B11=G11(B01G01)+(B21G21)2---(91)

(当G11是Gr像素时插值得到的B’11)

R11=G11(R01G01)+(R21G21)2---(92)

(当G11是Gb像素时插值得到的R’11)

B11=G11(B10G10)+(B12G12)2---(93)

(当G11是Gb像素时插值得到的B’11)

R11=G11(R00G00)+(R02G02)+(R20G20)+(R22G22)4---(94)

(对蓝色像素B11,经插值得到的R’11)

B11=G11(B00G00)+(B02G02)+(B20G20)+(B22G22)4---(95)

(对红色像素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分量的输入像素执行颜色校正的处理:

RGB=CCM00CCM01CCM02CCM10CCM11CCM12CCM20CCM21CCM22×RGB,---(96)

其中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颜色空间变换的处理可如下表 示:

YCbCr=CSCM00CSCM01CSCM02CSCM10CSCM11CSCM12CSCM20CSCM21CSCM22×RGB,---(100)

其中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输入中减去高斯滤波器的输出来获得额外的虚光 蒙版。在特定实施例中,该技术还可提供自适应核阈值(coring threshold)比 较操作,可使用虚光蒙版来执行该操作,使得基于比较结果,可为基本图像增 加增益量以生成最终输出,其中该基本图像可被选择为初始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=G11G11G11G11G10G11G11G11G11256G2=G22G22G22G22G22G22G21G21G21G22G22G21G20G21G22G22G21G21G21G22G22G22G22G22G22256

仅作为示例,在一个实施例中可如下的选择高斯滤波器G1和G2的值:

G1=282828283228282828256G2=9999991212129912161299121212999999256

基于Yin、G1out和G2out可以生成三个虚光蒙版Sharp1、Sharp2 和Sharp3。可通过从高斯滤波器1212的虚光图像G1out中减去高斯滤波器 1214的虚光图像G2out而确定Sharp1。因为Sharp1本质上是两个低通滤波 器之差,其可被称为“中间带(mid band)”蒙版,因为更高频率的噪声分量已 从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:

Att3=SharpAmt3×SharpAbsSharpThd3---(104)

其中,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所示:

Sx=10-120-210-1Sy=121000-1-2-1

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=Cb cos(θ)+Cr sin(θ),                        (108)

Cradj=Cr cos(θ)-Cb sin(θ),                        (109)

其中Cbadj和Cradj表示调整后的Cb和Cr值,以及其中θ表示色相角,可如 下的计算得到θ:

θ=arctan(CrCb)---(110)

以上操作都由全局色相控制块1264内的逻辑来表示,并且可由以下矩阵运算 来表示:

CbadjCradj=KaKb-KbKaCbCr,---(111)

其中,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所示,可通过将Cbadi和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滤波器)来执行抽选,如下 所示:

Out=C0×in(i-3)+C1×in(i-2)+C2×in(i-1)+C3×in(i)+C4×in(i+1)+C5×in(i+2)+C6×in(i+3)512,---(112)

其中,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。

以上所描述的特定实施例仅是作为示例,应当理解的是这些实施例 具有多种变形和替换形式。还应当理解的是权利要求不是旨在限制于此处公开 的特定形式,而是旨在覆盖落入本公开的精神和范围内的所有修改、等同形式 和替换。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号