一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

处理像素值的图像处理系统和方法与流程

2023-02-06 14:10:41 来源:中国专利 TAG:

处理像素值的图像处理系统和方法
1.本技术是申请号为201811261913.3、发明名称为“处理像素值的图像处理系统和方法”并且申请日为2018年10月26日的发明申请的分案申请。
技术领域
2.本公开涉及图像处理领域,具体涉及处理像素值的图像处理系统和方法。


背景技术:

3.存在很多不同类型的可以处理数据值的流的数据处理系统。例如,图像处理系统可以被用作相机管线,以处理源自相机中的图像传感器的像素值,以提供表示捕获的图像的经处理像素值的集合。
4.图像处理系统(诸如,相机管线)可以被布置为接收像素值的流(例如,以光栅扫描顺序,或者任何其他预定顺序,诸如交互书写的顺序),以及对像素值执行多个处理功能,以便确定可以随后被输出的经处理的像素值,例如,用于在显示器上显示,或者用于存储在存储器中,或者用于传输给另一设备,例如,通过诸如因特网的网络。图1a示出了被布置为接收来自图像传感器102的图像数据(例如,像素值)的图像处理系统104。如本领域已知的,图像传感器102可以包括传感器阵列(例如,电荷耦合器件(ccd)或者互补金属氧化物半导体(cmos)传感器),该传感器阵列可以感测各个像素位置处的入射光,以确定可以被馈入到图像处理系统104的原始图像数据(例如,未经处理的像素值)。以此方式,图像传感器102捕获光,并且将该光转换成将要被处理的电信号(例如,像素值形式的图像数据),以便生成图像。图像处理系统104包括许多不同的处理模块(例如,图1示出了k个处理模块:1061、1062、1063、

、106k),这些不同的处理模块对图像数据实施相应的处理功能,以确定表示图像的经处理的图像数据,以及从图像处理系统104输出的经处理的图像数据。例如,图像处理系统104可以使用诸如滤波和锐化的功能,来修改像素值(例如,为了改进图像的感知质量)。图像处理的其他功能可以是将图像数据压缩或编码成特定格式,诸如联合图像专家组(jpeg)格式或者运动图像专家组(mpeg)格式。
5.图像处理系统可以以管线布置来实施,由此图像处理系统的多个处理模块对表示图像的像素值执行相应功能。处理模块1061至处理模块106k按顺序依次对像素值进行操作,并且可以彼此独立地操作。存在很多不同的可以由处理模块106中的相应多个模块执行的处理功能。可以由处理模块应用的不同处理功能的一些示例是:调整被应用于像素值的增益,调整像素值的白平衡,检测图像内的缺陷像素,校正缺陷像素,滤波(例如,去噪),锐化以及去马赛克,仅举了若干示例。本领域技术人员将理解,很多不同功能可以由图像处理系统104内的不同处理模块来执行。要实施的精确处理模块,精确处理模块的配置以及它们在图像处理系统104(例如,用于在相机管线中使用)中被实施的顺序,是在图像处理系统104被设计时进行的设计选择。
6.处理模块中的一些对单独的像素值进行操作,而不需要考虑其他的像素值。例如,增益调整和白平衡调整可以针对像素值来执行,而不考虑其他的像素值。相比之下,其他处
理模块中的一些对像素值的核(即,块或者子集)进行操作。例如,2d滤波操作(诸如,去噪、缺陷像素检测和校正操作、锐化操作以及去马赛克操作)对像素值的核进行操作,以便确定如何处理特定像素值。例如,图1b示出了图像的像素值的核120。核120包括四十九个像素值,其被布置为以像素值122为中心的7x7像素值块,像素值122是当前被处理的像素值。由于在相机管线中逐行接收像素值(例如,以光栅扫描顺序),为了使得处理模块106可以访问像素值块,该像素值块包括来自多个行的像素值,线存储模块可以在处理模块106之前在图像处理系统104中被实施。例如,像素值的每行可以包括数百或数千个像素值。线存储模块可以存储多个行的像素值,并且可以一次将连续的像素值块(例如,块102)提供给处理模块106。线存储模块是要以硬件实施的大型块,因为线存储模块通常需要能够在给定时间存储数千个像素值。
7.可以由处理模块106对像素值块实施的很多处理功能,可以涉及执行(由块内的像素值表示的)图像的某种边缘分析。边缘检测算法的一些示例使用差分方法(诸如,sobel边缘检测和canny边缘检测)。注意,核内的边缘检测是超线性困难的,例如,针对包含n个像素的核,canny算法具有的复杂度。例如,去噪滤波功能可以将空间平滑应用到核内的像素值。去噪是图像处理中的已知过程。例如,像素值122可以基于核120内的其他像素值被滤波,例如,像素值122可以被平滑,使得像素值122基于核120内的多个像素值的加权和(例如,权重取决于像素值122与被求和的像素值之间的距离)。在简单的示例中,像素值122可以基于核120内的多个像素值的平均值。空间平滑有助于减少图像中随机噪声的出现。然而,在图像中不同边缘上平滑像素值可能在感知上对图像不利。这可以具有模糊图像边缘的效果。因此,实施去噪滤波器的处理模块106将尝试确定核120内的边缘的存在。存在很多不同的用于分析像素值的核以确定边缘的算法。图1b所示的示例示出了在被成像的场景中的两种材料(a和b)之间的边缘124,其中边缘124穿过核120。核120中的像素已经被标记为“a”或者“b”,以表示在相应像素位置处的图像中的哪种材料是可视的。被应用于像素值122的去噪可以被实施为,仅被标记为a(并且不包括被标记为b的像素值)的像素值的加权和(或者标记为a的像素值的平均值),其中权重可以取决于到像素122的距离。以此方式,处理模块106可以执行双边滤波过程,以实施去噪。
8.类似地,实施锐化的处理模块106将标识核120中的边缘124,并且会将锐化应用到临近边缘的像素值,以增加边缘124相对侧上的像素值中的差异,从而锐化边缘124的外观。锐化是图像处理中已知的过程。
9.缺陷像素检测是图像处理中已知的过程。对像素值122实施缺陷像素检测的处理模块106,旨在通过标识像素值122是否与附近的像素值显著以及不期望地不同,来检测该像素值是否表示缺陷像素。为了做到这一点,处理模块106将标识边缘124,使得处理模块106可以将像素值122与被期望为相类似的其他附近像素值进行比较,因为这些像素值与场景中的相同材料有关(材料a)。
10.缺陷像素校正是图像处理中已知的过程。缺陷像素校正可以被实施在与实施缺陷像素检测相同的处理模块中,或者被实施在单独的模块中。如果像素值122已经被标识为表示缺陷像素,则对像素值122实施缺陷像素校正的处理模块106旨在确定将适当的值分配给该像素值,以替换缺陷像素值。例如,核120内表示相同材料(材料a)的像素值的平均值(例如,均值或者中值),可以被用于替换缺陷像素值122。为了做到这一点,处理模块106将标识
边缘124,使得处理模块106了解核120内的哪些像素值表示与应该由像素值122表示的相同的材料(材料a)。
11.去马赛克是图像处理中已知的过程。实施去马赛克的处理模块106旨在从输出自图像传感器102的不完整颜色样本重建全色图像。内插可以被用于去马赛克,但是类似于去噪,仅对被确定为表示相同材料的像素值执行内插。因此,为了执行针对像素值122的去马赛克,处理模块106将标识边缘124,使得处理模块106了解核120内的哪些像素值表示相同材料(材料a),并且这些像素值可以因此被用在去马赛克过程的内插中。
12.通常,用于检测核内的边缘的边缘检测方法仅能够检测核内的单个边缘。


技术实现要素:

13.提供本发明内容是为了以简化形式介绍一些概念,这些概念将在以下的具体实施方式中进一步进行描述。本发明内容并非旨在标识所要求保护的主题内容的关键特征或必要特征,也并非旨在用于限制所要求保护的主题内容的范围。
14.存在与使用一系列处理模块在相机管线中处理像素值的流相关联的许多问题,诸如,在上文的背景技术部分所描述的以及在图1a中所示的问题。
15.例如,由于图像处理系统104中的处理模块106中的每个处理模块独立地操作,则不同的处理模块106可以被单独地设计。可能在不同的处理模块中可以进行不一致的边缘确定。跨不同处理模块的不一致边缘确定可以导致在图像中出现伪像。
16.如上所述,用于检测核内的边缘的标准方法,仅可以检测核内的单个边缘。可能存在核包括多于一个边缘的情况,并且标准边缘检测算法可能不能够检测核内的所有边缘。备选方法是使用聚类方法,其中核内的数据值被分组(或者“聚类”)到一个或多个群组中。聚类算法能够将核内的数据值分组到两个以上的群组中,并且可以处理核内的角。然而,聚类是被称为“np困难”的问题,即,非确定性多项式时间困难。这样,在图像被图像传感器102捕获时,难以实时地在多个处理模块中针对相机管线中的图像的每个像素值实施多次聚类算法。实际上,这十分困难,以致于在现有技术中聚类算法并没有以这种方式来使用。作为示例,当前技术的相机倾向于被配置为捕获具有数百万像素的图像。
17.此外,不同的处理模块可能正在实现具有至少部分矛盾目标的功能。例如,去噪功能将倾向于减少像素值之间的差异,而锐化功能将倾向于增加像素值之间的差异。如果每个块被单独地实现,则可能难以在矛盾的过程之间实现适当的平衡,矛盾的过程可能倾向于相互对抗。因此,对图像处理系统104的调谐可能是困难的,因为对一个处理模块106的改变可能对另一处理模块106的操作具有不可预见的后果。
18.根据本文所述的示例,提供了被配置为处理像素值的图像处理系统,图像处理系统包括处理模块,处理模块被配置为:
19.接收多个像素值;以及
20.通过对接收到的像素值的特定子集进行操作,来实施对特定像素值的处理,对接收到的像素值的特定子集进行操作通过执行以下来进行:
21.定义一个或多个群组的集合,在特定子集内的像素值能够被分组到一个或多个群组中;
22.基于该像素值的值,将特定子集内的像素值的每个像素值分类到一个或多个群组
的集合的群组中的一个群组中;
23.根据对特定子集的像素值到一个或多个群组中的分类,使用特定子集的像素值中的一个或多个像素值,来处理特定像素值;以及
24.输出经处理的特定像素值。
25.对像素值到群组中的一个群组中的分类可以不基于像素值的空间位置。
26.定义一个或多个群组的集合可以包括定义针对群组中的每一个群组的像素值范围,其中将特定子集内的像素值中的每一个像素值所述分类到群组中的一个群组中可以包括将像素值和针对群组的被定义的像素值范围中的一个或多个像素值范围进行比较。
27.一个或多个群组的集合可以包括多个群组。群组的集合可以包括三个或更多个群组。
28.图像处理系统可以被配置为实时地处理像素值。
29.对特定像素值的所述处理可以包括在合并操作中执行多个处理功能,该多个处理功能取决于对特定子集的像素值到一个或多个群组中的分类。例如,多个处理功能可以包括以下中的两项或多项:(i)缺陷像素检测,(ii)缺陷像素校正,(iii)去噪,(iv)锐化,以及(v)去马赛克。
30.图像处理系统还可以包括存储库,该存储库被配置为存储群组指示数据,群组指示数据指示像素值能够被分组到的一个或多个群组,其中处理模块可以被配置为在多次迭代中的每次迭代中,通过对流的像素值的相应特定子集操作,来处理流的相应特定像素值,通过在所述多次迭代中的每次迭代中:从存储器中取回针对至少一个群组的群组指示数据;使用取回的群组指示数据来定义群组的集合,特定子集内的数据值能够被分组到该群组的集合中;所述处理是指:(i)将特定子集内的像素值中的每个像素值分类到群组的集合中的群组中,以及(ii)根据对特定子集的像素值到群组中的分类,使用特定子集的像素值中的一个或多个像素值来处理特定像素值;以及将针对群组的集合中的至少一个群组的组指示数据存储在存储库中,用于后续迭代中。所述存储针对至少一个群组的群组指示数据可以包括存储被分类为该群组的一部分的像素值的平均值,作为针对群组的指示值。所述存储针对至少一个群组的群组指示数据可以包括存储以下至少一项:(i)对被分类为该群组的一部分的数据值的散布的指示,(ii)被分类为该群组的一部分的数据值的指示位置,以及(iii)对群组的成员的数量的指示。
31.针对群组的群组指示数据可以指示将被分类到群组中的像素值的范围。
32.针对群组的群组指示数据可以包括将被分类到群组中的像素值的范围内的指示值。指示值周围的像素值的范围的界限可以由校准过程定义。校准过程可以是:静态校准过程、动态校准过程或者实时校准过程。
33.针对组的组指示数据可以包括,对将被分类到群组中的像素值的范围的上界和下界的指示。
34.接收到的多个像素值可以是像素值的流的一部分。例如,图像处理系统可以在相机管线中被实施。像素值的流可以将图像表示为像素值的二维数组,并且其中数据值的流内的像素值的子集中的每一个子集可以表示二维数组内的像素值的连续块。像素值的特定子集可以表示包括并围绕对应的特定像素值的像素值的块。
35.群组的集合可以最多包括n个组,并且处理模块还可以被配置为:在对特定子集的
像素值到群组中的分类之后,并且在处理特定像素值之前,基于被分类到群组中的每个群组中的像素值的数量,选择性地丢弃群组中的一个或多个群组,使得最多m个群组被保留,其中n≥m。根据对特定子集的像素值到一个或多个群组中的分类,使用特定子集的像素值的一个或多个像素值处理特定像素值可以包括:如果特定像素值在被保留的群组内,则确定特定像素值不表示缺陷像素;以及如果特定像素值不在被保留的群组内,则确定特定像素值表示缺陷像素。
36.处理模块可以被配置为:针对群组的集合的至少一个群组中的每个群组,确定表示该群组的位置的质心;以及针对群组的集合的至少一个群组中的每个群组,确定该群组内像素值的平均值。所述处理特定像素值可以包括:基于至少一个群组的至少一个确定的质心,将降噪、锐化以及去马赛克中的一项或多项应用到特定像素值。所述处理特定像素值可以包括,如果特定像素值被确定为表示缺陷像素:则基于群组的确定的质心,选择被保留的群组中的一个或多个保留的群组;以及利用基于针对一个或多个所选择的群组的所确定的一个或多个平均值得到的值来替换特定像素值。
37.提供了在图像处理系统中处理像素值的方法,该方法包括:
38.接收多个像素值;以及
39.通过对接收到的像素值的特定子集进行操作,来实施对特定像素值的处理,对接收到的像素值的特定子集进行操作通过执行以下来进行:
40.定义一个或多个群组的集合,在特定子集内的像素值能够被分组到该一个或多个群组中;
41.基于该像素值的值,将特定子集内的像素值的每一个像素值分类到一个或多个群组的集合的群组中的一个群组中;
42.根据对特定子集的像素值到一个或多个群组中的分类,使用特定子集的像素值中的一个或多个像素值,来处理特定像素值;以及
43.输出经处理的特定像素值。
44.在一些示例中,提供了一种被配置为处理数据值的流的数据处理系统,该数据处理系统包括:
45.存储库,该存储库被配置为存储群组指示数据,群组指示数据指示数据值能够被分组到的一个或多个群组;以及
46.处理模块,该处理模块被配置为在多次迭代中的每次迭代中,通过对流的数据值的相应特定子集进行操作,来处理流的相应特定数据值,对流的数据值的相应特定子集进行操作通过在多次迭代中的每次迭代中执行以下来进行:
47.从存储库取回针对至少一个群组的群组指示数据;
48.使用取回的群组指示数据来定义群组集合,特定子集内的数据值能够被分组到群组集合中;
49.将特定子集内的数据值中的每个数据值分类到群组集合的群组中的一个群组中;
50.根据对特定子集的数据值到群组中的分类,使用特定子集的数据值中的一个或多个数据值来处理特定数据值;以及
51.将针对群组集合中的至少一个群组的群组指示数据存储在存储库中,用于后续迭代中;
52.其中处理模块被配置为输出经处理的数据值。
53.提供了被配置为处理像素值的流的图像处理系统,该图像处理系统包括:
54.处理模块,该处理模块被配置为通过对流的像素值的特定子集进行操作,来实现对流的特定像素值的处理,对流的像素值的特定子集进行操作通过执行以下来进行:
55.将特定子集内的像素值中的每个像素值分类到群组集合的群组中;
56.根据对特定子集的像素值到群组中的分类,使用特定子集的像素值中的一个或多个像素值来处理特定像素值,其中所述处理特定像素值包括,在合并操作中执行多个处理功能,该多个处理功能取决于对特定子集的数据值到群组中的分类;以及
57.输出经处理的特定像素值。
58.提供了被配置为处理像素值的图像处理系统,该图像处理系统包括处理模块,处理模块被配置为:
59.接收多个像素值,所接收的像素值中的每个像素值具有第一数量的比特;以及
60.通过对接收到的像素值的特定子集进行操作,实现对特定像素值的处理,对接收到的像素值的特定子集进行操作通过执行以下来进行:
61.将特定子集内的像素值中的每个像素值分类到一个或多个群组集合中的群组中;
62.确定与特定子集内的像素值有关的平均值,该特定子集内的像素值被分类到一个或多个群组中,其中所确定的平均值具有第二数量的比特,其中所述第二数量大于所述第一数量;
63.基于所确定的平均值替换特定像素值;以及
64.输出经处理的特定像素值。
65.本文所述的数据处理系统和图像处理系统,可以在集成电路上以硬件体现。可以提供在集成电路制造系统处制造如本文所述的数据处理系统或图像处理系统的方法。可以提供集成电路定义数据集,当其在集成电路制造系统中被处理时,配置系统以制造如本文所述的数据处理系统或者图像处理系统。可以提供非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当其被处理时,使得布局处理系统生成在集成电路制造系统中所使用的电路布局描述,以制造如本文所述的数据处理系统或者图像处理系统。
66.可以提供集成电路制造系统,包括:
67.非暂时性计算机可读存储介质,其上存储有计算机可读的集成电路描述,其描述了如本文所述的数据处理系统或者图像处理系统;
68.布局处理系统,其被配置为处理集成电路描述,以便生成:体现如本文所述的数据处理系统或者图像处理系统的集成电路的电路布局描述;以及
69.集成电路生成系统,其被配置为根据电路布局描述制造数据处理系统或者图像处理系统。
70.尽管本文所述的方法最适合于在专用硬件中实现,但是该方法可以在通用硬件上运行的软件中被实现。因此,可以提供用于执行本文所述的任何方法的计算机程序代码。可以提供非暂时性计算机可读存储介质,在其上存储有计算机可读指令,当该计算机可读指令在计算机系统处被执行时,使得计算机系统执行本文所述的任何方法。
71.如对技术人员而言显然的是,上述特征可以被适当地组合,并且可以与本文所述的示例的任何方面进行组合。
附图说明
72.现在将参考附图详细描述示例,其中:
73.图1a示出了现有技术的示例图像处理系统;
74.图1b示出了表示图像的像素值的2d数组;
75.图2示出了根据本文所述示例的图像处理系统;
76.图3是用于处理数据值的流的方法的流程图;
77.图4示出了数据值的2d数组,突出显示了将被用于处理2d数组中第一数据值的数据值的第一子集;
78.图5示出了数据值的2d数组,突出显示了将被用于处理2d数组中第二数据值的数据值的第二子集;
79.图6示出了由数据值的不同群组跨越的数据值的范围;
80.图7示出了被用于确定群组的范围的界限作为群组的平均值的函数的校准曲线;
81.图8是示出了在本文所述示例中涉及处理像素值的一些步骤的流程图;
82.图9a示出了在处理模块处所接收的第一示例图像的表示;
83.图9b示出了当第一示例图像被从处理模块输出时该第一示例图像的表示;
84.图10a示出了在处理模块处所接收的第二示例图像的表示;
85.图10b示出了当第二示例图像被从处理模块输出时第二示例图像的表示;
86.图11是用于实现动态范围增强的方法的流程图;以及
87.图12示出了用于生成体现数据处理系统的集成电路的集成电路制造系统。
88.参考附图示出了各种示例。技术人员将理解,附图中所示出的元件边界(例如,框、框组、或者其他形状)表示边界的一个示例。可能在一些示例中,一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,在整个附图中使用公共的附图标记来指示类似的特征。
具体实施方式
89.通过示例的方式呈现以下描述,以使本领域技术人员能制造和使用本发明。本发明并非限于本文所述的实施例,并且对所公开的实施例的各种修改,对本领域技术人员来说将是显然的。
90.现在实施例将仅通过示例的方式进行描述。根据本文所述的实施例,数据值(例如,像素值)的流在数据处理系统(例如,诸如相机管线的图像处理系统)中被处理。作为示例,经处理的像素值可以表示图像。
91.已经认识到,处理模块通过对围绕特定数据值的数据值的相应子集(例如,当前正在被处理的以特定数据值为中心的数据值的核)进行操作来处理来自流的特定数据值的情况下,针对流中的特定数据值而被操作的数据值的子集,将至少部分地与针对流中的另一(例如,下一个)特定数据值而被操作的数据值的子集相重叠。因此,与用于处理流中的一个数据值的数据值的子集有关的一些信息:与用于处理流中的下一个数据值的数据值的子集有关,并且可以被用于,用于处理流中的下一个数据值的数据值的子集。换句话说,来自处理流中的当前数据值的信息(例如,指示数据值可以被分组到的一个或多个群组的群组指示数据),可以被用于简化处理流中的下一个数据值的任务(例如,用于定义数据值可以被
分组到的群组集合)。以此方式,该处理涉及,对在流中的连续数据值之间可以被共享的数据值的子集内的数据值执行聚类。与流中的每个数据值被单独处理的现有技术系统相比,这降低了图像处理系统的延时和功耗。
92.特别是,使用先验知识的贝叶斯准则可以简化聚类问题。被确定用于聚类先前子集(前面的子集)内的数据值的群组,可能与被确定用于聚类当前子集内的数据值的群组相类似,因为这两个子集相互之间部分地重叠(例如,两个子集可以基本上相互重叠)。因此,我们可以使用被定义用于先前数据值的先前群组,作为用于定义将要用于当前数据值的群组的起点。在当前数据值已经被处理时,针对已经被用于当前数据值的群组的群组指示数据可以被存储,使得在下一次迭代中(即,在处理流的下一个数据值时),群组指示数据可以被取回并且被用于定义:下一个子集内的数据值可以被分组到的群组。这极大地简化了聚类问题,使得即使是在对处理功率和大小有严格限制的设备(例如,诸如手持式相机、智能电话和平板电脑等的移动设备)上,它也可以确定性地实时解决(即,它不再是np困难问题)。
93.因此,在本文所述的一些示例中,边缘检测算法没有被用于标识核内的数据值的群组,而是聚类算法被用于标识核内的数据值的群组。边缘检测算法通常导致核内的数据值被分成两个群组的二元分离:所检测到的边缘两侧各是一个群组。例如,如上文所述,图1b示出了基于相对于边缘124的像素值的位置,而被分类为a或者b的像素值。以此方式,边缘124被减薄(或阈值化)成单个像素宽度。然而,在现实中,图像中的边缘通常是柔和的,并且可以具有有限宽度,使得一些像素可以位于边缘内,而不是在边缘的一侧或另一侧,使得沿着边缘可以存在“模糊”、或者半色调的像素值的集合。边缘检测器将会把这些边缘像素值分离到由边缘定义的两个群组的一个群组中。做出错误选择或者将中间值(在边缘124上或者附近)归属给a群组或者b群组(如图1b所示),可能导致像素的误分类,这反过来可以导致性能不佳以及在经处理的图像数据中沿着边缘124或者在边缘124附近的误差引入。然而,相比之下,聚类算法可以生成用于中间像素值的单独群组,该中间像素值在a群组和b群组内的像素的值之间。特别地,聚类算法可以容易地将核内的像素值分组到两个以上的群组中。此外,在聚类算法中,核内的像素值的分组并不依赖于核内的像素值的空间位置。在此意义下,聚类算法可以自由地将核内的像素值分类到群组中,而无需考虑核内的像素值的空间位置。相反,群组集合被定义,特定子集内的像素值可以被分组到该群组集合中,并且然后,特定子集内的像素值中的每个像素值基于该像素值的值而被分类到群组中的一个群组中。例如,群组可以通过定义针对群组中的每个群组的像素值的范围来定义,其中通过将像素值与针对群组所定义的像素值范围中的一个或多个范围进行比较,特定子集内的像素值中的每个像素值被分组到群组中的一个群组中。
94.在本文所述的示例中使用的聚类方式可以处理:(i)任何角度的边缘(即,不考虑边缘的角度);(ii)角(例如,如果核内的四分之一圆与核内的其余部分不同);(iii)核内的多于一个边缘;以及(iv)柔和边缘(例如,可以跨越一个或多个像素使得一些像素可以位于边缘内、具有有限宽度的边缘)。这与标准边缘检测器形成对比,标准边缘检测器不能处理上述四种情况中的任何一种情况。
95.此外,由于数据在流的连续数据值之间共享,因此与流中的每个数据值被单独处理的现有技术系统相比,可以使用更小的核大小,并且仍然保持良好的处理结果。例如,5x5
的核可以被使用,而不是使用7x7的核,这大概将核中的数据值的数量减半。核大小的减小倾向于减小图像处理系统的硅面积,并且降低由图像处理系统消耗的处理功耗。
96.此外,在本文所述的示例中,多个处理功能(其通常将由单独的处理模块执行)在合并操作中被执行(例如,由单个处理模块执行),该多个处理功能取决于被分组到群组中的子集的像素值的分类。这意味着,针对多个处理功能,聚类过程仅需要被执行一次。多个处理功能可以例如包括以下中的两个或多个:(i)缺陷像素检测;(ii)缺陷像素校正;(iii)去噪;(iv)锐化;以及(v)去马赛克。合并多个功能可以在图像处理系统中减少处理模块的数量以及线存储模块的数量,这将减少图像处理系统的硅面积和功耗。此外,与不同功能由单独的块实现时相比,通过在合并操作中应用多个处理功能(例如,利用单个的处理模块),调谐功能的操作更简单。针对可能倾向于相互对抗的功能(诸如去噪和锐化),调谐特别被简化。针对复制了某种功能的功能(诸如,缺陷像素检测和缺陷像素校正),调谐也被简化。此外,通过在合并操作中执行:依赖于对特定子集的数据值到群组中的分类的多个处理功能;针对多个处理功能,对数据值到群组中的分类是一致的,从而避免了由于针对不同功能的不一致的聚类决策而可能发生的伪像。
97.此外,在一些示例中,像素值可以被替换为:相类似像素值的群组内的像素值的平均值。该平均过程可以被用于增强(即,增加)像素值的动态范围。例如,平均值可以利用比每个单独输入的像素值中的比特数量更多的比特来确定。
98.图像处理系统中的处理模块可以以硬件实现,例如,以固定功能电路。与通过在通用硬件上运行软件实现处理模块相比,专用固定功能硬件通常在处理数据值时更高效(就处理速度和功耗而言)。在硬件已经被制造完成之后操作难以(或不可能)改变的意义上,以硬件实现处理模块不如以软件实现处理模块那样灵活,而通过将不同的软件代码加载到存储要被执行的软件的存储器中,软件可以容易地被改变。然而,在数据处理系统(诸如,相机管线,或者实时地以固定方式处理数据值的流的其他系统)中,以硬件实现处理模块的优点(就处理速度和功耗而言)往往会胜过硬件实现不灵活的缺点。通过在单个合并操作中实现多个处理功能,图像处理系统中处理模块的数量被减少,从而显著减小实现该数据处理系统的硬件的大小(就硅面积而言)。例如,在现有技术系统中的四个或五个不同的处理模块,可以被合并为本文所述示例中的仅一个处理模块。
99.以下参考图像处理系统描述示例,但是本文所述的概念可以被应用于处理数据值的流的其他类型的数据处理系统(例如,音频处理系统和信号处理系统)。图2示出了图像处理系统204,该图像处理系统204被布置为接收来自图像传感器202的图像数据(例如,像素值)。从图像传感器202接收的图像数据,可以被称为“原始”图像数据或者“未经处理的”图像数据。如上所述,诸如图像传感器202的图像传感器,可以包括传感器阵列(例如,电荷耦合器件(ccd)或者互补金属氧化物半导体(cmos)传感器),该传感器阵列可以在各个像素位置感测入射光,以确定可以被馈入到图像处理系统204的原始图像数据(例如,未经处理的像素值)。图像处理系统204可以被描述为相机管线。图2中所示的系统可以在设备中被实现,诸如相机。在一些示例中,图像传感器202可以捕获图像的序列,该图像的序列可以被用于表示视频序列的帧。图像数据可以是很多不同可能格式中的一种格式,例如,像素值可以是单色像素值,其中每个像素值与相同的、单色通道相关。在其他示例中,像素值可以包括红色、绿色和蓝色(rgb)值,以表示相应像素位置处的表示相应三个颜色通道的强度。在一
些示例中,原始图像数据可以与多个颜色通道有关,但是用于每个特定像素位置的原始图像数据,可以仅包括以诸如bayer模式的模式布置的单个颜色值(例如,红色、绿色或者蓝色的颜色值),并且在这些示例中,去马赛克过程可以被执行,使得针对每个像素位置的颜色值的全部集合(例如,三种颜色值,诸如红色、绿色和蓝色的颜色值)被确定。去马赛克过程在下面被描述。其他颜色格式可以被用在其他示例中。图像传感器202可以以光栅扫描顺序将像素值提供给图像处理系统204,使得:在像素的线(例如,像素的行)的像素值从图像传感器202被实时接收时,像素的线的像素值在图像处理系统204中被接收和处理。
100.图像处理系统204可以包括多个处理模块206、210和214,这些处理模块用于将相应处理功能应用到图像数据。处理模块可以,例如,在专用硬件模块中被实现(例如,在固定功能电路中),使得:处理模块可以被优化用于以高效方式(例如,至少就延时、功耗以及硅面积而言的“高效”)对像素值执行特定的处理功能。图像处理系统204还包括存储库212,存储库212被耦合到处理模块210。如下面所更详细地描述的,存储库212被配置为存储群组指示数据,群组指示数据指示像素值可以被分组到的一个或多个群组。(多个)处理模块206和214利用虚线块来表示,因为这些模块的数量在不同实施方式中可能变化,并且在一些实施方式中,该数量可以是零。(多个)处理模块206和214可以对像素值执行任何适当的功能,例如,调整像素值的增益,调整像素值的白平衡等。如果处理模块要求访问来自图像的多于一条线的像素值(例如,2d滤波模块),则线存储模块(或者“线存储体”)可以在处理模块之前在图像处理系统204中被实现。例如,处理模块210要求访问像素值的多个行,例如,处理模块210可以被配置为:实现2d滤波过程,缺陷像素检测,缺陷像素校正,锐化和/或去马赛克。如上所述,在这些类型的过程中,特定像素值可以基于在包括特定像素值的像素值的核(例如,以特定像素值为中心)内的像素值来处理。线存储模块208被实现为:存储像素的多个线的像素值,并且可以将来自多个线的像素值提供给处理模块210。经处理的图像数据从图像处理系统204被输出,并且可以以任何适当方式被使用,例如,被输出到显示器,被存储在存储器中,被传输给另一设备等。
101.参考图3中所示的流程图来描述图像处理系统204的操作。图像传感器202捕获图像数据,例如,针对图像内不同像素的像素强度值。用于在图像传感器处捕获这些像素强度值的技术在本领域中是已知的,并且该过程的细节超出了本说明书的范围。在步骤s302中,图像处理系统204接收来自图像传感器202的数据值的流。像素值以特定顺序从图像传感器202被馈入到图像处理系统204,从而形成像素值的流,例如,光栅扫描顺序,像素值的行在图像处理系统204处按顺序被接收。像素值可能被以不同的顺序被传递到图像处理系统204,例如,交互书写的顺序,并且像素值的多个线可能以并行方式被一次传递到图像处理系统204。然而,由于图像传感器202和图像处理系统204可能由不同方所设计,存在假定、或标准的像素值从图像传感器202被传递到图像处理系统204的顺序是方便的,并且光栅扫描顺序是所使用的常用顺序。因此,在本文所述的示例中,我们指的是以光栅扫描顺序接收像素值的行,但是应当理解其他顺序可以被使用,并且像素值的列可以被接收,而不是像素值的行,因此在我们引用像素值的“行”的情况下,应当理解我们通常是指像素值的“线”,其可以例如是行或者列。
102.如上所述,图像处理系统204可以或者可以不:在像素值被存储在线存储模块208之前,在(多个)处理模块206中对像素值执行一些处理。如上所述,线存储模块208允许来自
多个行的像素值被一起提供给处理模块210。
103.图4示出了像素值的流表示形成图像的像素值的二维数组402的示例,其中数组包括六行像素值,其中每行包括七个像素值。显然,在更复杂的示例中,图像内可能存在更多的像素值,例如数百万的像素值被布置成使得存在数百或数千行以及数百或数千列像素。
104.处理模块210通过对5x5的核406内的像素值进行操作来处理特定像素值404,核406围绕并且包括像素值404(例如,核406以像素值404为中心)。在步骤s304中,处理模块210接收来自线存储模块208的核406中的二十五个像素值。核406定义了表示在像素值的二维数组内的像素值的连续块的像素值的子集,该像素值的二维数组表示图像。
105.在步骤s305中,针对第一子集(例如,核406)的处理,子集索引i被设置使得i=0。
106.在步骤s306中,处理模块210定义了一个或多个群组集合,第一子集的像素值(即,核406内的像素值)可以被分组到该一个或多个群组。这可以通过:分析子集406的像素值,以及基于其像素值执行聚类过程,以将像素值分组到群组中来完成。这可以涉及边缘检测过程,以标识图像中不同材料之间的边缘(即,外观中的锐利变化)。图4示出了场景中的两个边缘(408和410),使得三个不同的区域被形成在核406内。因此,三个群组被定义(a、b和c)。
107.在步骤s308中,处理模块210将子集406的像素值中的每个像素值分类到:群组集合的群组中的一个群组中(a,b或者c)。在图4中,每个像素值被标记有“a”、“b”或者“c”以表示该像素值已经被分类到哪个群组中。
108.在步骤s310中,处理模块210根据对子集406的像素值到群组(a、b或者c)中的分类,处理像素值404。由处理模块210执行的处理可以,例如,涉及以下中的一项或多项:缺陷像素检测、缺陷像素校正、去噪、锐化以及去马赛克。注意,本文中所提到的去噪(或者滤波)在空间域中被执行,即,去噪是空间去噪(或者空间滤波)。如果处理模块210执行多于一个处理功能,则这些处理功能可以以合并的方式来执行,使得不同处理功能的矛盾目的可以以一致的方式来控制,并且使得图像处理系统的调谐被简化。
109.在步骤s312中,经处理的像素值404从处理模块210被输出,用于在图像处理系统204中使用。经处理的像素值可以由图像处理系统204内的其他处理模块214使用,和/或从图像处理系统204被输出。
110.在步骤s314中,处理模块210将群组指示数据存储在存储库212中,该群组指示数据可以在处理下一个像素值时被使用。群组指示数据提供三个群组(a、b或者c)的指示,该指示在处理像素值404时被使用。例如,步骤s314可以涉及:将像素值的平均值μ(例如,均值或者中间值)存储为对群组的指示值,该像素值在步骤s308中被分类作为该群组的一部分。因此,作为示例,三个指示值μa、μb和μc可以被存储,以指示三个群组a、b和c。如下面所更详细描述的,被存储用于群组的群组指示数据可以包括针对该群组的质心位置,该质心位置可以被用作缺陷像素校正过程的一部分,以选择适当的群组,来自该群组的平均值可以被用于替换缺陷像素值。
111.图5示出了形成图像的像素值502的二维数组,该图像与上文参考图4所述的图像相同。图5示出了当处理模块210正在处理在图4中所示的像素值404之后的下一个像素值504的情况(其中,在此示例中“下一个”是指光栅扫描顺序)。为了处理像素值504,处理模块210对核506进行操作,核506定义了图像中像素值的子集。由于图4和图5中的图像相同,因
此在两个图像中边缘408和边缘410处于相同的位置。可以理解,像素值的子集506与像素值的子集406部分地重叠,像素值的子集406被用于处理像素值404。在步骤s316中,索引i递增,使得在第一次迭代步骤s316上涉及将子集索引设置为1。
112.在步骤s318中,处理模块210从存储库212取回所存储的针对先前子集(即,第(i-1)个子集)的群组指示数据。针对群组的群组指示数据指示了落入该群组的值的范围。群组指示数据可以在不同示例中采用不同形式,但是如上所述,针对群组的群组指示数据可以表示针对群组的指示值(例如,被确定为在先前迭代中被包括在该群组中的像素值的平均值(例如,均值或者中间值))。作为示例,在步骤s318中三个指示值(μa、μb和μc)可以被取回,这三个指示值具有图6中所示的值。图6示出了可能的像素值的标度600,范围从0到最大的可能像素值(“max”),例如,最大的可能像素值由像素值中的比特数量所设置。例如,如果像素值具有八个比特,则可以表示的最大整数像素值是255,所以可能的像素值的整个范围将从0跨越到255。显然,在其他示例中,其他数量的比特可以被用于像素值,使得max的值可以不同。此外,在一些示例中,像素值可以是允许像素值为负的格式,使得零不在范围的底部。在步骤s318中被取回的针对群组的群组指示数据,可以包括对群组的质心位置的指示。
113.在上文所述的示例中,像素值包括单个颜色分量。例如,在单色图像中,每个像素值与相同的单色通道有关。为了简单和清楚起见,本文关于单色图像的像素值描述了示例。然而,如下面所更详细解释的,在另一示例中,图像可以包括与多个颜色通道共同相关的像素值,但是可能的情况是每个特定像素值与那些颜色通道中的单个颜色通道有关。例如,图像传感器可以根据预定模式生成像素值(例如,bayer模式,使得一些像素值表示红色颜色值,一些像素值表示蓝色颜色值,以及一些像素值表示绿色颜色值)。去马赛克过程可以被应用于生成全颜色数据(例如,用于每个像素的三种颜色分量)。在进一步的示例中,每个像素值可以包括多个颜色分量(例如,在去马赛克过程已经被执行后)。作为示例,像素值可以包括三种分量(例如,红色、绿色和蓝色分量),三种颜色分量中的每种可以,例如具有八个比特。主要参考包括与单个颜色通道相关的像素值的单色图像来描述的、在本文所述的方法中使用的概念,可以被用于处理彩色图像,彩色图像中的像素值包括与多个颜色通道相关的数据(在去马赛克之前或者之后)。注意,在本文所述的示例中,在像素值具有多个分量的情况下,到群组中的一个群组中的像素的分类被每像素确定一次(并非每分量一次),即,像素值的每个分量被分类到相同的群组中。这确保了在所有颜色通道上做出一致的聚类决策。
114.在步骤s320中,处理模块210使用所取回的群组指示数据(例如,指示值μa、μb和μc),来定义第i个子集506内的数据值可以被分组到的群组集合。例如,校准过程可以被用于定义:围绕针对群组的指示值μ的数据值的范围的界限。例如,图7是示出了校准曲线702的图形。校准曲线示出了由于图像传感器202中的噪声而经历的典型标准偏差,作为像素值的函数。随着像素值增加,标准偏差倾向于增加。校准曲线702可以基于由通用图像传感器经历的可能噪声而被预先设置(例如,在设计时间期间),使得校准曲线不是专门为特定图像传感器202而定制的。作为备选,可以在制造时间在传感器上执行校准过程(例如,在制造传感器时),并且校准曲线702可以在制造时间被存储(这可以被称为“静态”校准过程)。备选地,可以通过测试专门的图像传感器以检测针对不同像素值的标准偏差来设置校准曲线702。换句话说,传感器噪声曲线(或者“校准曲线”)可以从对实时图像中噪声的分析来生
成。这可以通过以下方式来完成:使用图像传感器202来确定针对具有单一颜色和亮度的对象的像素值,以及确定像素值中的差异。通过改变对象的颜色和亮度,可以在像素值的范围上检测出典型的标准偏差,从而确定校准曲线702。例如,可以基于较早的、最近处理的图像来执行传感器的校准(这可以被称为“动态”校准过程)。一些示例可以使用“实时”校准过程,其中校准被确定以用于一次迭代,并且校准的结果与群组指示数据被一起存储,使得它们可以在下一次迭代被使用。
115.校准曲线702可以被用于定义围绕指示值μa、μb和μc的像素值的范围,使得三个群组602a、602b和602c可以被定义。在图6中利用虚线示出了群组602a、602b和602c的范围的界限。在不同示例中,范围的界限可以以不同方式来确定。举一些示例,围绕指示值μ的范围可以由
±
σ,
±
2σ或
±
σ2给出,其中σ是如由用于指示值μ的校准曲线702所指示的标准偏差(使得σ2是方差)。可以看出,值范围602a的大小小于值范围602b的大小,值范围602b的大小小于值范围602c的大小。这是因为,根据校准曲线702,针对较大的指示值μ,群组的范围从指示值μ进一步扩展。可以存在针对每个颜色分量(例如,红色、绿色和蓝色分量)的相应校准曲线,或者可以存在被用于所有颜色分量的单个校准曲线,。在上文所述的示例中,范围的界限仅取决于预期的噪声(例如,如由校准曲线所指示)。然而,在一些示例中,方差可以取决于除噪声之外的因素(例如,表面的色差或纹理)。此外,在一些示例中,校准曲线未被用于定位范围。例如,每个范围的界限可以是相等的大小,该相等的大小可以是固定或者可变的。
116.在上文给出的示例中,针对群组的指示值μ是该群组中的数据值的平均值,使得群组范围在指示值μ的两侧延伸。在其他示例中,指示值可以表示群组的值的范围内的另一值,例如,针对群组的指示值可以是群组内值的最小值或者最大值,使得群组范围仅在指示值的一侧进行延伸(例如,如果指示值是群组的最小值,则范围只会在该指示值之上;如果指示值是群组的最大值,则范围只会在该指示值之下)。此外,尽管在上文所述的示例中,被存储在存储库212中的针对群组的群组指示数据仅是指示值μ(例如,从校准曲线702推断出围绕指示值的群组的边界),在其他示例中,可以将要被分类到群组的像素值的范围的上界和下界,存储为针对群组的群组指示数据。这将意味着更多数据(是最初系统的两倍)将被存储在存储库212中,以指示群组,但是将不需要使用校准曲线。在这两个示例中,针对群组的群组指示数据指示了(可能间接地),将被分类到群组中的数据值的范围。
117.三个群组已经被定义,这三个群组与在先前迭代中被使用的群组602a、602b和602c相对应。由这些群组之间的间隙定义另外的群组,使得在此示例中多至七个群组被确定,如由范围6041至6047所示。因此,在此示例中,处理模块210已经定义了七个群组604,这七个群组共同跨越了可能的数据值的整个范围。群组604是连续的,所以它们相互不重叠。这意味着,对于每个可能的像素值(在图6中所示的示例中,从零到max),一个并且仅有一个群组604被定义。在一些情况下,可能定义少于七个群组,例如,如果群组602a在零处开始。
118.注意,在此1d示例中,在数据值是单个分量值的情况下,群组602a、602b和602c易于被定义,并且这些群组之间的间隙生成另外的明确定义的群组。在数据值具有多个分量(例如,红色、绿色和蓝色分量)的其他示例中,群组可以被定义为:围绕针对群组的指示值(μ)的区域(例如,长方体或者其他简单形状)。区域被选择以使得它们相互不重叠。在这些多分量示例中,群组/区域定义可以与本文所详细描述的1d示例中的群组大致相同的方式
来更新。然而,区域之间的间隙没有被这样明确定义。用于处理多分量示例中的间隙的一种选项是不定义针对间隙的群组。这将意味着,一些可能的像素值将不会落入群组中的一个群组中。用于处理多分量示例中间隙的另一选项是,定义单个的“间隙”群组,从而未落入围绕针对群组指示值的区域(例如,长方体)中的一个区域内的任何像素值,被分类到“间隙群组”中。以此方式,“良好空间”就可以被区域(例如,长方体)跟踪,并且值空间的其余部分可以被标志为“坏的”(或者“噪声”、“损坏”或者“需要修理”)。
119.总体上,在步骤s318中可以从存储库212取回最多针对m个群组的群组指示数据,其中像素值可以被分组到的、所定义的群组集合最多包括n个群组,其中n≥m,其中额外定义的群组由围绕所取回的群组、并且在所取回的群组之间的间隙来定义。总体上,m≤n≤2m 1,并且作为示例,n可以等于2m 1。在上文给出的1d示例中,所取回的群组中的每个群组的两侧存在间隙,m=3并且n=7。
120.在步骤s322中,处理模块210将在第i个子集506内的像素值中的每个像素值分类到,在步骤s320中所定义的群组604的一个群组中。在子集506内的像素值中的每个像素值,基于该像素值的值而被分类到群组604中的一个群组中。换句话说,如果像素值落入针对特定群组的值范围中,则像素值被分类到该特定群组中。在图5中,每个像素值被标记有“a”、“b”或者“c”,以表示该像素值已经被分类到哪个群组中。群组a与群组6042相对应,群组b与群组6044相对应,以及群组c与群组6046相对应。
121.步骤s318和步骤s322与步骤s306和步骤s308相比,更易于实现。步骤s318至步骤s322将聚类问题转化为并非np困难的一个问题,并且可实时解决,即使在对大小和功耗具有严格限制的诸如手持式相机、智能手机和平板电脑的设备上。这是通过应用贝叶斯方法来实现的,使得在先前迭代中所使用的群组的知识被用作起点(即,作为“先验”),用于定义用于当前迭代的群组。步骤s318和s320定义群组604而并不需要分析子集506中的像素值,并且因此这些步骤可以在覆盖小的硅面积的、具有低功耗的硬件上被非常快速地执行。此外,一旦群组(6041至6047)已经被定义,通过将像素值与由群组覆盖的值的范围进行比较,来将像素值中的每个像素值分类到群组中的一个群组中是简单的。从子集506到群组中的一个群组中的像素值的分类,并不取决于子集506内的像素值的位置。因此,分类过程并不需要分析像素值的位置,并且可以简单地将像素值与针对群组中的每个群组所定义的值的范围进行比较。由于像素值的分类并不取决于像素值的位置,并且不寻找特定边缘,分类过程可以是比边缘检测过程更简单的过程,边缘检测过程尝试标识图像内的边缘408和边缘410的位置,以便确定核506内的区域(区域与场景中的不同材料相关联),并且然后可以基于每个像素值的位置以及所确定的区域的位置来对每个像素值进行分类。步骤s318至步骤s322的分组方法的另一个优点是,图像中边缘的取向并不影响分组过程的有效性。这与一些已知的边缘检测算法形成了对比,诸如仅在某些角度处寻找边缘的sobel滤波器。例如,canny滤波器通常使用垂直sobel滤波器和水平sobel滤波器,并且然后尝试将它们组合成通用滤波器;而相比之下,在本文所述的示例中所采用的聚类方法,可以处理所有角度和弯曲的边缘和角等。
122.如下面所更详细描述的,在子集506中的像素值已经被分类到七个群组6041至6047之后,并且在步骤s324中的处理像素值504之前,群组中的一些群组可以基于被分类到群组604的每个群组中的数据值的数量而被丢弃。参考上文所述的示例,其中在步骤s318中最多
针对m个群组的群组指示信息被取回,并且在步骤s320中,最多n个群组被定义,其中n》m,则群组中的一些群组可以被丢弃,使得m个群组被保留。例如,如果m个群组被取回,并且n个群组被定义,则(n-m)个群组可以被丢弃。例如,在步骤s322之后,七个群组6041至6047的填充可以被分析,以确定群组604中的哪三个群组有最高的填充,并且这三个群组将被保留(例如,群组6042、6044和6046可以被保留),而其他四群组将被丢弃(例如,群组6041、6043、6045和6047可以被丢弃)。
123.在一些示例中,不同数量的群组可以被丢弃,并且在一些其他示例中,在此阶段任何群组都不被丢弃。
124.注意,在上文所述示例中,包括像素值504本身的群组可以被丢弃。然而,在一些示例中(例如,未实现缺陷像素校正的示例),包括像素值504的群组被认为是感兴趣的群组(当处理像素值504本身时),值得保留,即使包括像素值504的群组并非是最高填充的群组之一。因此在这些示例中,包括像素504的群组被保留而不管该群组的填充,并且然后一个或多个其他的群组也可以基于它们的相应填充而被保留。
125.此外,在一些示例中,可以将两个或多个群组合并到一起以形成合并的群组。例如,并非丢弃群组,而是群组可以与另一临近的群组合并(就由群组所表示的值而言的“临近”)。例如,具有非常相似的值的两个小型群组有时可以更好被地表示为一个群组。
126.在步骤s324中,处理模块210根据对子集506的像素值到群组中的分类,来处理像素值504。由处理模块210执行的处理可以,例如涉及以下中的一项或多项:(i)缺陷像素检测和/或缺陷像素校正;(ii)去噪;(iii)锐化以及(iv)去马赛克。例如,由处理模块210执行的处理可以,例如涉及以下中的两项或多项:(i)缺陷像素处理(例如,缺陷像素检测和/或缺陷像素校正);(ii)去噪;(iii)锐化和(iv)去马赛克。在一些示例中,处理模块执行包括去噪和锐化的多个处理功能。如下文参考图8中所示的示例流程图更详细地描述的,处理模块210可以在合并操作中执行多于一个的处理功能。这可以有助于以一致的方式来控制不同处理功能的矛盾目的,该一致的方式可以易于被调谐。
127.在步骤s326中,经处理的像素值504从处理模块210被输出,用于在图像处理系统204中使用。经处理的像素值可以由图像处理系统204内的其他处理模块214使用,和/或被从图像处理系统204输出。
128.在步骤s328中,处理模块210将群组指示数据存储在存储库212中,该群组指示数据可以在处理下一个像素值时被使用。群组指示数据提供对所保留的群组的指示(例如,群组6042、6044和6046),在步骤324中所保留的群组在处理像素值504时被使用。例如,步骤s328可以涉及:针对群组,将在步骤s322中被分类成该群组的一部分的像素值的平均值μ(例如,均值、中间值、加权平均值或者群组中的像素值的修整集合的均值(例如,群组中像素值四分位数的均值),仅给出可以被使用的平均值的一些示例),存储为针对群组的指示值。因此,作为示例,三个指示值μa、μb和μc可以被存储,以指示三个群组6042、6044和6046。被存储的针对群组的群组指示数据可以包括针对群组的指示位置(例如,质心位置),该指示位置可以被用作缺陷像素校正过程的一部分,以选择适当的群组,来自该群组的平均值可以被用于替换缺陷像素。指示位置的其他示例包括,针对群组的加权质心位置和平均修整质心。此外,被存储的针对群组的群组指示数据可以包括,对被分类成该群组的一部分的数据值的散布的指示,该指示可以被用于定义针对群组的范围。对数据值的散布的有用指
示包括:标准偏差、范围、以及四分位数范围,仅给出一些示例。此外,被存储的针对群组的群组指示数据可以包括对群组的相关性的指示(例如,群组的成员的数量,即,已经被包括在该群组中的像素值的数量)。
129.在一些示例中,像素值可以被分组到少于三个不同的群组中(例如,如果子集内的所有像素值具有相同的像素值,则仅一个群组被填充)。在这些情况下,针对少于三个群组(即,少于m)的群组指示数据被存储在步骤s328中。这是为什么在一些情况下,在一些迭代中,可以在步骤s318中取回针对少于三个群组(即,少于m)的群组指示数据。
130.在步骤s330中,处理模块210确定是否存在任何要处理的像素值,并且如果存在,则该方法传递回步骤316,其中索引i递增,并且该方法通过执行针对下一个像素值的步骤s318至步骤s328来重复。如果确定在步骤s330中不存在要处理的像素值,则方法在步骤s332中结束。
131.在图3中所示的方法中,在每个经处理的像素值已经被确定时,每个经处理的像素值被输出(例如,在步骤s312和s326中)。当整批像素值已经被处理完成时,将可以批量输出经处理的像素值的群组。例如,当像素值的行已经被确定时,则该行中的所有经处理的像素值可以被一起输出。此外,该方法可以等到图像内的所有像素值已经被处理完之后才输出任何像素值。
132.图8是示出了在步骤s324中,由处理模块210执行以在合并操作中执行多个处理功能的步骤的示例的流程图。多个处理功能包括以下中的两项或多项:缺陷像素检测、缺陷像素校正、空间去噪、锐化和去马赛克。
133.在分类步骤s322之后,该方法传递到步骤s802,如上所述,在步骤s802中,在步骤s320中被定义的群组中的一个或多个群组被选择性地丢弃,使得m个群组被保留。如在上面给出的示例中所描述的,具有最少像素值数量的群组被丢弃。因此,填充最少的群组被丢弃。在步骤s802之后,m个群组被保留,并且该方法传递到步骤s324,步骤s324包括在下面所更详细描述的步骤s804至s818。
134.在步骤s804中,处理模块210确定针对所保留的群组中的每个群组的质心。针对群组的质心表示该群组的位置。该位置是图像内的群组的空间位置。针对群组的质心,可以通过找到已经被分类到该群组中的像素值的平均(均值)位置而被确定。备选地,针对群组的质心,可以通过找到已经被分类到该群组中的像素值的加权平均(例如,加权均值)位置而被确定,例如,其中,与被应用到更远离该群组的中心的像素值的权重相比,更高的权重被应用于更靠近该群组的中心的像素值(例如,其中的距离可以被测量为欧几里得距离或者曼哈顿距离)。
135.在步骤s806中,处理模块210确定针对所保留群组中的每个群组的平均值。针对群组的平均值可以是,已经被分类到该群组中的像素值的均值、或者中间值。针对群组的平均值提供了群组内像素值的代表值。
136.在步骤s808中,处理模块210确定正在被处理的当前像素值是否在所保留群组中的一个群组内。当前的像素值是第i个像素值,并且可以被称为特定像素值。
137.在图8中所示的示例中,缺陷像素校正是正在被执行的过程中的一个过程。如果当前像素值并未在所保留群组中的一个群组内,则该方法传递到步骤s810,在步骤s810中确定当前像素值表示缺陷像素。针对不在所保留群组中的一个群组内的第i个像素值504,该
像素值504必须与子集506中的绝大部分其他像素值不相似,这被解释为意味着像素值504是缺陷像素。换句话说,如果像素值504并不表示缺陷像素,则该像素值不太可能不在所保留群组中的一个群组中。以此方式,缺陷像素检测功能已经被执行。
138.在步骤s812中,处理模块210基于在步骤s804中确定的所保留的群组的质心,选择所保留群组中的一个或多个群组。例如,处理模块210可以基于在步骤s804中确定的所保留群组的质心,选择最接近于像素值504的所保留的群组。例如,参考图5,如果像素值504被确定为表示缺陷像素(即,像素值504未被分类为群组a中的一部分),则群组a、b和c的质心将被考虑,以确定哪个质心最接近图像中像素值504的位置。在此示例中,针对群组a的质心将是最接近于像素值504的位置的质心。在此示例中,针对群组b和群组c的质心将比针对群组a的质心离开像素值504的位置更远。因此,在此示例中,针对像素值504,在步骤s812中将选择群组a(如果该像素值被确定为表示缺陷像素)。
139.在步骤s814中,缺陷像素被替换为:基于所确定的针对所选择的(多个)群组的(多个)平均值的值。如果在步骤s812中单个群组被选择,则处理模块210利用所选择的群组的平均值替换第i个像素值504,在步骤s806中确定所选择的群组的平均值。在图5中所示出的示例中,像素值504可以被替换为群组a中的像素值的平均值(例如,均值或者中间值)。如果像素值504被确定是缺陷的,则被包括在最接近的保留群组中的像素值的平均值是分配给像素值504的适当值。如果存在多个(例如,两个)基本上同等接近的所保留群组,并且像素值504不在它们的任何一个内,则很可能的是,像素值504在最接近的所保留群组之间的边缘上,或者在边缘附近。在这种情况下,在步骤s812中选择多个群组,并且在步骤s814中,用于替换像素值504的适当值是最接近的所保留群组的平均值的加权平均值。基于像素值504的位置与(例如,两个)最接近的所保留群组的质心位置之间的距离,确定加权平均值的权重。
140.以此方式,在步骤s812和步骤s814中,缺陷像素校正功能已经被执行。在步骤s814之后,该方法传递到步骤s818,下文描述步骤s818。
141.如果,在步骤s808中,确定当前像素值504在所保留的群组中的一个群组内,则该方法传递到步骤s816,在步骤s816中,确定该当前像素值504不表示缺陷像素。为了使第i个像素值504在所保留群组中的一个群组内,像素值504必须与子集506中的其他像素值中的至少一些相类似,并且这被解释为意味着该像素值504不是缺陷像素。该方法随后传递到步骤s818。
142.在步骤s818中,处理模块210基于所确定的所保留群组的质心,将去噪、锐化和去马赛克中的一项或多项应用到第i个像素值。群组的质心可以被用于指示第i个像素是否接近边缘(例如,边缘408或者边缘410)。例如,第i个像素可以位于位置(0,0)处。如果另一群组(即,不包括第i个像素的群组)的质心接近位置(0,0),则存在临近第i个像素的边缘。在此上下文中如何构成“接近”是实现决策,并且在不同示例中可以不同。
143.如果第i个像素值不接近边缘,则基于与像素值504相同的群组内的像素值,可以应用空间去噪以减少图像中随机噪声的出现,并且在此情况下,很少的或者无锐化可以被应用到像素值504。去噪可以涉及,利用在相同群组(例如,群组a)内的像素值的平均值替换像素值504。平均值可以是,例如,均值、加权均值和修整的像素值的集合的均值(例如,四分位数的平均值)。在处理模块210处接收的像素值可以具有b个比特,其中给出一些示例,b可
以是8、10或者12。这些像素值可以源自传感器,并且可以是一个或多个最低有效比特(lsb)的情况,例如,像素值的两个最低有效比特基本上表示噪声。该噪声可以是以下中一个或多个的组合:模拟到数字转换产生的噪声(adc噪声)、热噪声、量化噪声、功率平面噪声和随机高斯噪声。根据中心极限定理,所有这些类型的噪声通过去噪过程而以确定性方式减少,该去噪过程采用像素值的群组的平均值。本文所述的聚类方法使像素值能够被替换为,来自该像素值的局部区域的相似像素值的平均值,即,该像素值是其一部分的群组的平均值。这使像素值的精度能够被增加,即,像素值中的噪声可以被减少。特别地,该像素值的信噪比(snr)可以比从传感器输出的像素值的snr更优(即,更高)。这是在没有任何时间平均化的情况下实现的,使得这可以实时的在图像的像素值上实现,例如,在相机管线中。例如,如上文所述,在处理模块210处接收的输入像素值的一个或多个lsb可以由噪声支配(例如,输入像素值的两个lsb可以由噪声支配);而从处理模块输出的像素值可以具有由噪声支配的更少的lsb(例如,输出像素值中没有lsb或者一个lsb可以由噪声支配)。
144.如果第i个像素值接近边缘,则可以更强烈的应用锐化以增强边缘锐度,例如,使得在边缘两侧的两个群组之间的差异更加突出。这可以通过使第i个像素值偏离边缘另一侧上的群组中的像素的平均值来完成。在这种情况下,空间去噪不会在边缘上进行滤波以便避免模糊边缘,而是,空间去噪仅在已被分类到与第i个像素值相同的群组中的像素值上进行滤波。
145.使用相似颜色值的群组的一些去马赛克技术在本领域中已知。在已经使用本文所述的新颖方法形成像素的群组之后,这些群组可以被用于使用群组的现有算法,诸如去马赛克。为了防止或者至少减少色度伪像的引入,基于已经被分类到与第i个像素值相同的群组中的像素值(并且不基于已经被分类到其他群组中的像素值),去马赛克被应用。如上文所述,针对不同的颜色通道,对像素值到群组中的分类是一致的。参考bayer图像描述去马赛克的示例,其中50%的像素值被用于绿色通道,25%的像素值被用于红色通道,以及25%的像素值被用于蓝色通道。去马赛克过程的输出是,针对像素中每个像素的红色、绿色和蓝色值。绿色平面被第一个处理,以确定针对当前群组(即,包括第i个像素的群组)的像素值的绿色分量的值,当前群组最初不具有绿色像素值。这可以通过插值、预测或猜测绿色分量值来完成。因此,在该第一阶段结束时,我们具有针对正在被处理的当前群组中的每个像素的绿色分量值。然后,在绿色颜色通道中的当前群组的像素值间的强度差异,可以被用于在红色颜色通道和蓝色颜色通道中进行插值,以便确定针对当前群组的像素的红色和蓝色分量值,当前群组最初分别不具有红色或者蓝色像素值。在该第二遍中进行的红色平面和蓝色平面的像素值的确定,可以利用双线性滤波器来执行,以基于由绿色平面确定的权重重建丢失的75%的数据。未能准确地检测/定位边缘(即,未能正确地将像素值分配到群组中),可能生成错误的像素/颜色,因为来自其他群组的像素值然后将使针对当前群组而确定的像素值失真。
146.在步骤s818之后,该方法传递到上文所述的步骤s326。
147.通过在同一处理模块210内应用多个处理功能,关于像素值如何被处理的一致决策被做出,并且像素值的处理是确定性的并且易于调谐。例如,去噪和锐化功能在合并操作中被执行,使得这些功能不会将矛盾操作应用到特定像素值。类似地,色度误差不太可能从去马赛克过程中产生,导致较低的可接受的空间去噪水平,并且因此有更高水平的图像清
晰度。
148.在图8中所示的示例中,缺陷像素校是正被执行的过程中的一个过程。在一些其他的示例中,缺陷像素修理并非被执行的过程中的一个过程,并且这样,步骤s808、步骤s810、步骤s812、步骤s814和步骤s816没有被执行。
149.图8示出了多个处理功能在同一处理模块210内被应用的示例,其被并入到图3中所示的方法中,在该方法中,根据如上所述的聚类方法,像素值被分类到群组中。然而,在备选示例中,以合并方式在同一处理模块内应用多个处理功能的概念,不依赖于像素值被分类到群组中的方式。因此,在一些示例中,边缘检测过程可以被用于将子集内的像素值分类到一个或多个群组中,并且然后,多个处理功能可以以合并方式被应用,其中该多个处理功能取决于对子集的像素值到群组中的分类。因此,该方法可以包括在当前子集内检测边缘(例如,使用已知的边缘检测技术),其中当前子集内的像素值中的每个像素值,基于该像素值与所检测的边缘相比的相对位置而被分类到群组集合的群组中的一个群组内。
150.图9a至图10b示出了示例,在该示例中处理模块210被用于将缺陷像素检测、缺陷像素校正、去噪以及锐化应用到两个测试图像。这些示例不实现去马赛克,但是去马赛克可以被包括在其他示例中。
151.图9a示出了在处理模块210处被接收的第一示例图像902的代表。图像902已经被人工生成为测试图像,使得该图像具有大量缺陷像素(图像902中每300个像素中大约有一个是缺陷的,而真实的、质量差的传感器通常可能每2000个像素中有一个是缺陷的),所以测试图像902就缺陷像素而言比由真实图像传感器捕获的标准图像更差。图像902具有被施加到该图像的随机噪声,随机噪声可以在其他方面是平坦区域的

有斑点的’性质中看到。此外,图像902已经被降采样,因此不同区域之间的边缘已经被模糊。
152.图9b示出了图像904,图像904是第一示例图像902在其从处理模块210被输出时的代表。可以看到,几乎所有的缺陷像素已经被修理。特别地,所有单重和双重缺陷像素已经被修理,并且大多数三重和四重缺陷像素群组已经被修理。同样明显的是,图像的平坦区域中的噪声已经被减少。不同颜色区域之间的边缘已经被锐化。
153.图10a示出了在处理模块210处接收的第二示例图像1002的代表。图像1002也已经被人工生成为测试图像,使得其具有大量缺陷图像(再次,在图像1002中每300个像素中大约有一个是缺陷的)。图像1002具有被施加到该图像的随机噪声,随机噪声可以在其他方面是平坦区域的

有斑点的’性质中看到。此外,图像1002已经被降采样,因此不同区域之间的边缘已经被模糊。进一步注意的是,图像1002中的边缘是环形的,因此他们在图像中处于不同位置处、处于不同的取向。
154.图10b示出了图像1004,图像1004是第二示例图像1002在其从处理模块输出时的代表。可以看到,几乎所有的缺陷像素已经被修理。再次,所有单重和双重缺陷像素已经被修理,并且大多数三重和四重缺陷像素群组已经被修理。同样明显的是,图像的平坦区域中的噪声已经被减少。不同颜色区域之间的、处于所有边缘定向的边缘已经被锐化。
155.图9a至图10b中所示的示例示出了该处理的有效性。此外,这是利用单个处理模块实现缺陷像素检测、缺陷像素校正、去噪和锐化来实现的,而不是利用针对每个单独功能的单独处理模块来实现。此外,在处理模块中所使用的核是:图9a至图10b中被用来处理图像的示例中的5x5的核,该核小于可能先前已经被用在实现处理功能之一的一个处理模块中
的核。实现更少和更小的处理模块,导致更小的硅面积和更低的功耗(因为功能没有在众多处理模块中被复制),并且不同的处理功能不会做出矛盾决策,因此结果图像更优并且调谐更简单。这是将贝叶斯准则应用到如上所述的分组过程来实现的,使得分组的知识从一次迭代转入下一次迭代。
156.在图4和图5中所示出的示例中,像素值的子集406和506是像素值的5x5的块。在其他示例中,该子集可以具有不同的大小。
157.此外,在上文所述的示例中,像素值的子集是正方形,例如,核406和核506是正方形。然而,在其他的示例中,像素值的子集可以是像素值的非正方形块。例如,使用表示其宽度比高度更长的像素值的块的子集可能是有益的。仅是举出示例,子集可以是3x5的像素值的块(即,三行以及五列)。由于线存储模块208存储数据值的行(例如,因为数据值以光栅扫描顺序到达),行的数量的减少意味着线存储模块208可以具有减小的大小,并且在等待线存储模块208接收足够的像素值以用于处理模块210处理像素值中所引起的延时可以被减少。虽然,出于以上原因,减少子集中的行的数量可能是有利的,但是对于减少子集中列的数量却不是这样(当数据值被以行被接收时,例如,以光栅扫描顺序或者交互书写顺序),因此具有比行更多的列的子集可以是有益处的。这允许子集保持较大的总体大小,尽管减少了子集中行的数量。子集的大小和形状可以根据由处理模块210执行的处理功能来设计。
158.在上文所述的示例中,针对特定像素值的像素值的子集包括并且围绕该特定像素值,例如,子集以特定像素值为中心。在图像的边缘上、或者在图像的边缘附近的像素值可以以不同的方法来处理。例如,针对在边缘上或者临近边缘的像素的核(或者“子集”)的大小和/或形状,可以被修改以考虑到图像的边缘。备选地,图像可以被延伸(例如,通过对跨图像边缘的现有像素值的反射),使得针对在图像边缘上或者临近图像边缘的像素的核(或者“子集”)的大小和形状不需要被修改。边缘像素的处理可以在不同的实施方式中变化。
159.在上文参考图3所描述的方法中,在处理模块处接收到数据值之后,存在针对第一子集(其可以被认为是针对索引i=0)的“启动”程序(包括步骤s306至s314),并且然后,存在“再现”程序(包括步骤s318至s330),“再现”程序针对后续的子集而被执行(例如,针对i≥1)。如上所述,再现程序比启动程序更易于实现。在一些示例中,启动程序未被执行,使得再现程序可以针对子集中的每个子集来执行。这更易于实现,并且意味着同一程序针对所有的像素值而被执行,因此硬件可以被简化。再现程序可以从图像中的第一像素开始,例如,使用其平均值(μ)被设置为0.5的单个群组。这可以使得一个或多个像素中的第一像素的伪像被处理,但是这将易于实现。备选地,再现程序可以在图像中第一像素要被处理之前,启动一个或多个像素(例如,两个像素),例如,通过利用延伸超出图像边缘的图像的反射区域。以μ=0.5的单个群组启动,将意味着第一次迭代具有单个群组,所有的像素值被分类到该单个群组中,并且针对该群组的群组指示数据(例如,像素值的平均值)可以被转发到第二次迭代。在第二次迭代中,多个群组(例如,三个群组)可以被定义(例如,第一群组,围绕从第一次迭代转发的平均值;针对在第一群组之下的值的群组;以及针对在第一群组之上的值的群组)。像素值可以被分类到该三个群组中,并且针对该三个群组的群组指示数据(例如,像素值的平均值)可以被转发到第三次迭代。第三次迭代可以被用于将要被处理的第一“真实”(即,非反射的)像素,例如,图像的左上方的像素。上文所定义的再现程序(例如,步骤s318至s332),然后可以基于针对群组的群组指示数据(例如,三个像素值的平均
值)而被执行以用于图像中的第一像素,并且然后,该过程可以如上文所述地继续进行。
160.因此,启动程序(即,步骤s306至步骤s314)不必在所有示例中执行。在对不存在于图像中的反射像素执行初始迭代的示例中,这些初始迭代可以在水平消隐间隔期间被执行,使得由执行初始迭代导致的可察觉延时很少或者没有。在一些示例中,在迭代针对图像中的真实像素值被执行之前,多于两次的初始迭代可以被执行(或者仅一次初始迭代)。通过利用图像反射,当数据被处理以获得图像的真实像素值的时候,针对群组的群组指示数据将得到良好的训练。这些针对反射像素的初始迭代,可以仅在执行针对图像的第一像素(例如,图像的左上方像素,当图像被以光栅扫描顺序处理时)的迭代之前被执行。对于图像的后续行,针对行的最左侧像素的迭代可以使用,被存储用于上面的线的最左侧像素的群组指示数据。这意味着,针对线的最左侧像素的群组指示数据可以被存储在存储库212中,至少直到该群组指示数据被用于处理下面的线的最左侧像素。
161.以上所给出的示例是关于处理像素值的图像处理系统204而被描述的。相同的原理可以应用于其他类型的数据处理系统,例如,其中数据值不是像素值的情况。
162.例如,数据值的流可以表示数据值的一维数组。在这种情况下,在数据值的流内数据值的子集中的每个子集表示在一维数组内的数据值的连续块。
163.例如,如果数据处理系统是音频处理系统并且数据值是音频信号的音频样本,则数据值的1d流可以被使用。例如,音频信号可以在麦克风处被接收和采样,并且音频样本可以被传递到音频处理系统。音频处理系统可以执行一些处理功能,这些功能中的一些功能可以根据如本文所述的贝叶斯方法实现聚类过程,由此群组指示数据可以被存储在一次迭代中,用于在处理流中的下一个数据值时在后续迭代中定义群组集合中使用。经处理的音频信号的音频样本可以被输出,例如,经由扬声器。
164.在另一示例中,如果数据处理系统是信号处理系统并且数据值是所传输信号的信号样本,则数据值的1d流可以被使用。例如,信号可以在设备处通过有线或无线通道而被接收,在该设备中信号处理系统被实现。该设备可以对所接收的信号进行采样,并且然后,信号处理系统可以执行一些处理功能,这些处理功能中的一些功能可以根据如本文所述的贝叶斯方法实现聚类过程,由此群组指示数据可以被存储在一次迭代中,用于在处理流中的下一个数据值时在后续迭代中定义群组集合中使用。经处理的信号样本可以被用于从所接收的信号中提取数据。
165.在上文所述的示例中,像素值可以由多个像素值的平均值替换。例如,如果像素值被确定为表示缺陷像素(即,如果像素不在所保留的群组中的一个群组内),则该像素值由所保留群组中的一个或多个群组的平均值替换。此外,如果像素值在所保留的群组的一个群组内(例如,如果该像素值被确定为不表示缺陷像素),则去噪可以被应用,其中该像素值由该像素值所位于的群组的平均值替换。当像素值被多个像素值的平均值替换时,动态范围增强可以被应用,由此被用于表示像素值的比特数量可以被增加。平均值可以是,例如,均值、加权均值或者群组中像素值的修整集合的均值(例如,群组中像素值的四分位数的均值),仅是给出可以被使用的平均值的一些示例。通过确定已经被分类到同一群组中的像素值的平均值,平均值的精度的比特数可以大于每个单独像素值的比特数。这是因为平均化过程降低了噪声。换句话说,平均化过程增加了信噪比(snr)。这意味着从处理模块210输出的像素值的snr可以大于由图像传感器(例如,图像传感器202)捕获并且被提供给图像处理
系统204的像素值的snr。因此,平均值可以被确定具有比其要替换的像素值更多的比特数。以此方式增加比特数,增加了像素值的动态范围。聚类方法允许从像素值的群组确定平均值,该像素值与要被替换的像素值相似(相似是就位置而言,即,它们都在像素值的同一子集内,并且相似是就像素值而言,因为它们被分组到同一群组中)。因此,平均化以确定的方式降低了随机噪声,从而提升信噪比。例如,可以被降低的随机错误包括由于模数转换(adc噪声)、热噪声、量化噪声、功率平面噪声和随机高斯噪声(给出一些示例)而导致的错误。在整个核上的平均化将模糊或者软化核内的边缘。然而,通过在相似像素值的单个群组内的像素值上平均化,核内群组之间的边缘未被损坏。所输出的像素值(即,被平均的像素值)具有比输入像素值更多的每像素值的比特,并且所输出的比特具有比输入像素值更优的snr。
166.更一般地,动态范围增强方法可以被应用,而不必是图8中所示出的示例方法的一部分。例如,图11示出了用于实现动态范围增强的方法的流程图,该实现动态范围范围增强的方法可以由处理模块210使用上述的聚类方法来执行。在步骤s1102中,像素值在处理模块210处被接收。所接收像素值中的每个像素值具有第一比特数量,例如,每个所接收的像素值可以具有b
input
个比特,其中仅举出一些示例,b
input
可以是8、10或者12等。在步骤s1104中,索引i被设置为零。在步骤s1106中,第i个子集的像素值可以被分组到的群组集合被定义。第i个子集可以,例如包括核(例如,核406或者核506)内的像素值,该核以第i个像素值为中心。如上文示例中所描述的,群组可以被定义,例如,在步骤s306或者在步骤s320中。在步骤s1108中,第i个子集内的数据值中的每个数据值被分类到所定义的群组的一个群组中。如上所述,对像素值到群组中的分类可以基于像素值与针对群组中每个群组而定义的值范围的比较,或者可以基于在核内检测一个或多个边缘,并且基于核内像素值相对于所检测的(多个)边缘的位置对像素值进行分类。
167.在步骤s1110中,被分类到群组中的一个群组中的第i个子集内的像素值的平均值被确定。例如,步骤s1110可以涉及,确定已经被分类到与第i个像素值(即,在第i个子集中心的像素值)相同的群组中的像素值的平均值。如上所述,平均值可以是,例如,均值、加权均值或者群组中像素值的修整集合的均值(例如,群组中像素值的四分位数的均值),仅是给出可以被使用的平均值的一些示例。所确定的平均值具有第二比特数量b
average
,b
average
大于第一比特数量b
input
,即,b
average
》b
input
。例如,b
average
可以比b
input
大一、二、三或者四,仅是给出一些示例。如上文所解释的,更多的比特可以被用于平均值(与输入像素值的比特数量相比),因为在相似像素值的特定群组上进行平均化,增加了该值的信噪比。通过使用用于平均值的更多比特,平均值具有比输入像素值更高的精度。由于平均化在相似的像素值上被执行(即,被分类到同一群组中的像素值),则平均化并未模糊图像中的边缘。
168.在步骤s1112中,基于所确定的平均值,第i个像素值被替换。例如,第i个像素值可以被替换为所确定的平均值。
169.在步骤s1114中,经处理的第i个像素值被输出,例如,从用于在图像处理系统204中使用的处理模块210。经处理的像素值可以由图像处理系统204内的其他处理模块214使用,和/或从图像处理系统204输出。
170.在步骤s1116中,处理模块210确定是否存在要处理的像素值,并且如果存在,则该方法传递到步骤s1118,其中索引i递增。然后,该方法传递回到步骤s1106,并且该方法通过执行针对下一个像素值的步骤s1106至s1116来重复。如果确定在步骤s1116中不存在要处
理的像素值,则该方法在步骤s1120中结束。
171.在图11中所示的方法中,每个经处理的像素值在该像素值已经被确定时被输出(在步骤s1114中)。可以在整批像素值已经被处理时,批量输出经处理的像素值的群组。例如,当一行像素值已经被确定时,则在该行中的所有经处理的像素值可以被一起输出。此外,该方法可以等到图像内的所有像素值已经被处理完之后才输出任何像素值。
172.根据图11中所示的方法,所输出的像素值的比特数大于输入像素值的比特数。因此,像素值的动态范围可以被增加。例如,所输出的像素值的每个像素值可以比对应的输入像素值多一个或两个比特。基于其中具有8至16个像素值的典型群组,根据中心极限定理,通过平均化像素值可以实现1.5到2个比特以上的精度。上文所述的平均化过程允许,输出像素值中的数据量大于对应的输入像素值中的数据量,因为信息在多个像素值上被共享。
173.值得注意的是,这与生成比源图像更高像素密度的超分辨率不同,因为,利用本文所述的动态范围增强,保留了相同的像素密度,但是针对每个像素的每像素有用比特数被增加了。
174.值得进一步注意的是,这与时间去噪不同,时间去噪在时间域中操作,而不是在空间域中(如在上文所述的平均化过程中),尽管如此,每当空间噪声降低被增强时,时间去噪的精度、效果和影响将得到改进。
175.本文描述了图像处理系统,并且在图2中示出了包括多个功能块。这仅是示意性的,并非旨在限定这些实体的不同逻辑元件之间的严格划分。每个功能块可以以任何适当方式来提供。应当理解,本文所述的作为由图像处理系统形成的中间值,不需要由图像处理系统在任何点上物理地生成,并且该中间值可以仅表示逻辑值,逻辑值方便地描述了由图像处理系统在其输入和输出之间执行的处理。
176.本文所述的处理系统(即,图像处理系统和数据处理系统)可以在集成电路上以硬件来体现。本文所述的处理系统可以被配置为执行本文所述的任何方法。通常,上文所述的功能、方法、技术或者组件中的任何项可以以软件、固件、硬件(例如,固定逻辑电路)或者其任何组合来实现。术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”在本文中可以被用于概括地表示软件、固件、硬件、或者其任何组合。在软件实施方式的情况下,模块、功能、组件、元件、单元、块或者逻辑表示:在处理器上被执行时执行专门任务的程序代码。本文所述的算法和方法可以由执行代码的一个或多个处理执行,该代码使得(多个)处理器执行该算法/方法。计算机可读存储介质的示例包括:随机存取存储器(ram)、只读存储器(rom)、光盘、闪存、硬盘存储器和可以使用磁、光、和其他技术来存储指令或者其他数据的并且可以由机器访问的其他存储设备。
177.本文所使用的术语计算机程序代码和计算机可读指令,是指用于处理器的任何种类的可执行代码,包括:以机器语言、解释语言或者脚本语言表示的代码。可执行代码包括:二进制代码、机器代码、字节代码、定义集成电路的代码(诸如,硬件描述语言或者网表)、以及以诸如c、java或者opencl的编程语言代码表示的代码。可执行代码可以是,例如,任何类型的软件、固件、脚本、模块或者库,当在虚拟机或者其他软件环境处被适当地执行、处理、解释、编译、执行时,使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。
178.处理器、计算机或者计算机系统可以是具有处理能力使得其可以执行指令的任何类型的设备、机器或者专用电路或者其集合或者部分。处理器可以是任何类型的通用或者
专用处理器,诸如,cpu、gpu、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或者计算机系统可以包括一个或多个处理器。
179.还旨在包含定义如本文所述的硬件配置的软件,诸如hdl(硬件描述语言)软件,如被用于设计集成电路,或者用于配置可编程芯片,以执行期望的功能。即,可以提供计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,该计算机可读程序代码在集成电路制造系统中被处理时,配置该系统制造被配置为执行本文所述任何方法的图像处理系统或者数据处理系统,或者制造包括本文所述任何装置的图像处理系统或者数据处理系统。集成电路定义数据集可以是,例如集成电路描述。
180.因此,可以提供在集成电路制造系统处制造如本文所述图像处理系统或者数据处理系统的方法。此外,可以提供集成电路定义数据集,当该数据集在集成电路制造系统中被处理时,使得制造图像处理系统或者数据处理系统的方法被执行。
181.集成电路定义数据集可以是计算机代码的形式,例如,作为用于配置可编程芯片的代码、网表,作为在任何级别定义集成电路的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示,诸如verilog或者vhdl,以及作为低级电路表示,诸如oasis(rtm)和gdsii。逻辑地定义集成电路(诸如,rtl)的更高级别表示可以在计算机系统处被处理,以便生成由该表示定义的集成电路的制造定义,该计算机系统被配置为在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义以及用于组合这些元件的规则。通常情况下,软件在计算机系统处执行以便定义机器,一个或多个中间用户步骤可能是需要的,以便使被配置为用于生成集成电路的制造定义的计算机系统执行定义集成电路以便生成该集成电路的制造定义的代码。
182.现在将参照图12描述:在集成电路制造系统处处理集成电路定义数据集以便配置系统来制造图像处理系统的示例。
183.图12示出了集成电路(ic)制造系统1202的示例,该系统1202被配置为制造如本文任何示例中所述的图像处理系统。特别地,ic制造系统1202包括布局处理系统1204和集成电路生成系统1206。ic制造系统1202被配置为:接收ic定义数据集(例如,定义如本文的任何示例中所述的图像处理系统);处理ic定义数据集;以及根据ic定义数据集生成ic(例如,ic定义数据集体现了如本文的任何示例中所述的图像处理系统)。对ic定义数据集的处理将ic制造系统1202配置为:制造体现了如本文的任何示例所述的图像处理系统的集成电路。
184.布局处理系统1204被配置为接收并且处理ic定义数据集,以确定电路布局。从ic定义数据集确定电路布局的方法是本领域中已知的,并且,例如可以涉及综合rtl代码以确定将被生成的电路的门级表示,例如,就逻辑组件而言(例如,nand、nor、and、or、mux和flip-flop组件)。通过确定用于逻辑组件的位置信息,电路布局可以从电路的门级表示来确定。这可以被自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1204已经确定了电路布局时,该系统1204可以将电路布局定义输出给ic生成系统1206。电路布局定义可以是,例如,电路布局描述。
185.如本领域已知的,ic生成系统1206根据电路布局定义生成ic。例如,ic生成系统1206可以实现半导体器件制造工艺来生成ic,这可以涉及光刻和化学处理步骤的多步骤序
列,在这些步骤期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩膜的形式,掩膜可以被用在用于根据电路定义生成ic的光刻工艺中。备选地,被提供给ic生成系统1206的电路布局定义可以是计算机可读代码的形式,ic生成系统1206可以使用该电路布局定义来形成用于在生成ic中使用的适当掩膜。
186.由ic制造系统1202执行的不同过程可以都在一个位置中被实现,例如,由一方。备选地,ic制造系统1202可以是分布式系统,使得过程中的一些过程可以在不同位置处被执行,并且可以由不同方执行。例如,以下阶段中的一些阶段可以在不同位置中和/或被不同方执行:(i)综合表示ic定义数据集的rtl代码以形成要被生成的电路的门级表示;(ii)基于门级表示生成电路布局;(iii)根据电路布局形成掩膜;以及(iv)使用掩膜制造集成电路。
187.在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为:制造图像处理数据,而不对ic定义数据集进行处理,以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置处理器(诸如,fpga)的配置,并且对该数据集的处理将ic制造系统配置为:生成具有该定义的配置的可重新配置处理器(例如,通过将配置数据加载到fpga)。.
188.在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使得集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集,以上文参照图12所述方式的集成电路制造系统的配置,可以使得如本文所述的设备被制造。
189.在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合的软件。在图12中所示的示例中,ic生成系统可以由集成电路定义数据集进一步配置为:在制造集成电路时,根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者以其他方式提供与该集成电路一起使用的集成电路的程序代码。
190.当与已知实施方式相比时,本技术中在设备,装置,模块和/或系统(以及本文实现的方法中)中所阐述的概念的实现可以引起性能改进。性能改进可以包括以下中的一个或多个:增加的计算性能、降低的延时、增加的吞吐量和/或降低的功耗。在制造这种设备、装置、模块、和系统(例如,在集成电路中)期间,性能改进可以与物理实施方式进行折衷,从而改进了制造的方法。例如,性能改进可以与布局面积进行折衷,从而匹配已知实施方式的性能,但是使用更少的硅。例如,这可以通过以串行方式重新使用功能块或者在设备、装置、模块和/或系统之间共享功能块来完成。相反,引起设备、装置、模块和系统的物理实施方式的改进的(诸如,减小的硅面积)在本技术中阐述的概念,可以被折衷来得到改进的性能。例如,这可以通过在预定区域预算内制造模块的多个实例来完成。
191.本技术人在此独立地公开了本文所述的每个单独的特征以及两个或更多个这些特征的任何组合,在某种程度上,根据本领域技术人员的共同常识,这些特征或者组合能够基于本说明书整体而被执行,而不管这些特征或者特征的组合是否解决了本文所公开的任何问题。鉴于前面的描述,对于本领域技术人员显然的是,可以在本发明的范围内进行各种修改。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献