图像处理系统的制作方法

文档序号:6620443阅读:153来源:国知局
图像处理系统的制作方法
【专利摘要】本发明的各实施方式总体上涉及图像处理系统。具体地,本文描述了一种图像处理系统,其中多行处理块具有多个输入和多个输出。为了提供多个输出,多行处理块具有对多个输入进行并行操作的多个处理单元。多行处理块的多个输出耦合至图像处理系统中的后续多行处理块的相应的多个输入。
【专利说明】图像处理系统

【背景技术】
[0001]图像可以由像素的二维(2D)阵列来表示。例如,数码相机包括图像传感器(例如电荷耦合器件(CCD)或者互补金属氧化物半导体(CMOS)传感器)的阵列以用于捕捉表示图像的像素值。对表示图像的像素值进行处理的图像处理系统是可用的。对图像的像素值所执行的图像处理可以包括许多不同功能。例如,像素值可以通过诸如滤波和锐化之类的功能进行修改(例如用于提高图像的感知质量)。图像处理的其它功能可以是将图像数据压缩或者编码为特定格式,诸如联合图像专家组(JPEG)格式或者运动图像专家组(MPEG)格式。
[0002]图像处理系统可以以流水线布置(pipeline arrangement)来实施,据此图像处理系统的多个处理块对表示图像的像素值执行相应的功能。图像处理系统将经常包括单行处理块和多行处理块两者。单行处理块作用于来自图像的单行(例如一排)像素而不需要访问来自图像的其它像素行(例如排)的像素值。单行处理块的示例包括用于对像素值的增益进行调节的块、用于对像素值的白平衡进行调节的块以及沿一行(例如一排)像素执行滤波的一维(ID)滤波块。
[0003]与之相比,当多行处理块作用于来自图像的一行(例如一排)像素的像素值时,其需要访问来自该图像的多个像素行(例如多排)的像素值。例如,多行处理块可能需要访问来自高于光栅扫描中的当前像素的数排的像素值。多行处理块的示例包括2D滤波块以及在不与图像中的像素行(例如排)平行的方向上执行滤波的ID滤波块。为了允许多行处理块访问来自图像的多行(例如排)的像素值,图像处理系统包括行存储模块,行存储模块存储图像的多行(例如多排)像素值。实施行存储模块使用功率和硅面积以便存储多行像素值。
[0004]图像处理系统经常包括多于一个的多行处理块。在这种情况下,行存储模块(其在这里也可以被称作“行存储组”)在图像处理系统中的每个多行处理块之前实施。这在图1中示出,图1图示了包括两个多行处理块和1022 (例如其可以是2D处理块)的图像处理系统的一部分的简化示意图。该图像处理系统还包括两个行存储模块KM1和1042。行存储模块KM1的多个输出耦合至处理块102i的相应的多个输入。处理块102i的输出耦合至行存储模块1042的输入。该连接由图1中的虚线所示出,因为在自处理块102i的输出与至行存储模块1042的输入之间可能存在或者可能不存在作用于图像数据的其它功能块(图1中未示出)。行存储模块1042的多个输出耦合至处理块1022的相应的多个输入。
[0005]如图1所示,在操作中,行存储模块KM1被布置为接收输入数据流。该输入数据流可以以串行方式(根据光栅扫描)向行存储模块KM1提供与图像的排相关的像素值。行存储模块KM1存储图像的多排的像素值。在一个示例中,在多个连续时钟周期中的每个时钟周期上,行存储模块KM1可以从图像的相应的多排向多行处理块102i提供多个像素值。多行处理块102i在每个时钟周期对输入进行处理(例如通过执行2D滤波以因此基于周围的像素值对中心排的像素值进行滤波)并且提供单个输出像素值(例如中心排的经滤波的像素值)。该单排输出流可以从多行处理块102i传送至行存储模块1042。如以上所描述的,在图像处理系统中可能存在或者可能不存在在处理块和行存储模块1042之间实施的其它功能块。
[0006]行存储模块1042和多行处理块1022对应于行存储模块KM1和多行处理块1021;并且以相对应的方式工作。以这种方式,从行存储模块1042向处理块1022的多个输入提供多个输出,它们随后被多行处理块1022处理(例如滤波)以提供像素值的单个输出流。
[0007]行存储模块104在图像处理系统中的每个多行处理块102之前实施,以提供相应的多行处理块102所需的多排输入。


【发明内容】

[0008]提供该
【发明内容】
,以简化形式对以下在【具体实施方式】中进一步被描述的所选择的概念进行介绍。该
【发明内容】
并非意在标识所请求保护的主题的关键特征或者必要特征,也并非意在用来对所请求保护的主题的范围进行限制。
[0009]这里描述了一种图像处理系统,其中多行处理块具有多个输入和多个输出。为了提供多个输出,该多行处理块具有对多个输入进行并行操作的多个处理单元。该多行处理块的多个输出耦合至图像处理系统中的后续多行处理块的相对应的多个输入。
[0010]特别地,提供了一种图像处理系统,该图像处理系统包括第一多行处理块,该第一多行处理块包括被配置为并行地接收与图像的相应的多个像素行相关的像素值的多个输入。该第一处理块包括被配置为互相并行操作的多个处理单元。每个处理单元被配置为通过向在第一处理块的所述输入中的至少一些输入处所接收的像素值应用多行处理来提供与图像的所述像素行中的相应一个像素行相关的经处理的像素值。图像处理系统进一步包括第二多行处理块,第二多行处理块包括被配置为从第一处理块并行地接收由第一处理块的处理单元提供的经处理的像素值的多个输入。第二处理块被配置为对从第一处理块接收的经处理的像素值应用多行处理。
[0011]图像处理系统可以具有比多行处理块少的行存储模块。例如,一个行存储模块可以被包括在图像处理系统中以向第一多行处理块提供多个输入,但是第一多行处理块的输出可以直接被提供至第二多行处理块的输入。以这种方式,图像处理系统中就不需要包括另一个行存储模块来向第二多行处理块提供输入。
[0012]相同原理可以应用于图像处理系统中一系列多于两个的多行处理块。以这种方式,第二多行处理块可以向第三多行处理块的输入提供多个输出。
[0013]还提供了一种处理图像的方法,其中该方法包括:在第一多行处理块的多个输入处并行地接收与图像的相应的多个像素行相关的像素值;彼此并行地操作第一处理块的多个处理单元,其中每个处理单元的操作通过对在第一处理块的所述输入中的至少一些输入处接收的像素值应用多行处理来提供与图像的所述像素行中的相应一个像素行相关的经处理的像素值;并且在第二多行处理块的多个输入处从第一处理块并行地接收由第一处理块的处理单元的操作所提供的经处理的像素值,其中第二处理块被配置为对从第一处理块接收的经处理的像素值应用多行处理。
[0014]还提供了一种图像处理系统,其包括行存储模块以及一个或多个多行处理块的集合。行存储模块被配置为:在多个处理周期中的每个处理周期接收与图像的N个像素行相关的像素值,其中N>1 ;并且在每个处理周期并行地输出与图像的M个像素行相关的像素值,其中M>N。每个多行处理块包括:被配置为并行地接收与图像的相应的多个像素行相关的像素值的多个输入;以及被配置为互相并行地操作的多个处理单元,每个处理单元被配置为通过向在多行处理块的输入中的至少一些输入处接收的像素值应用多行处理来提供与图像的所述像素行中的相应一个像素行相关的经处理的像素值,其中该集合中的多行处理块中的第一个多行处理块被布置为并行地接收与从行存储模块输出的M个像素行相关的像素值,并且其中该集合中的多行处理块中的最后一个多行处理块被布置为在每个处理周期中提供与图像的像素行中的N个像素行相关的经处理的像素值,以在图像处理系统中进一步处理。
[0015]还提供了一种使用一个或多个多行处理块的集合对图像进行处理的方法,该方法包括:在多个处理周期中的每个处理周期在行存储模块接收与图像的N个像素行相关的像素值,其中N>1 ;在每个处理周期从行存储模块并行地输出与图像的M个像素行相关的像素值,其中M>N ;在该集合中的多行处理块中的第一个多行处理块的多个输入处并行地接收从行存储模块输出的、与图像的M个像素行相关的像素值;彼此并行地操作多行处理块中的第一个多行处理块的多个处理单元,其中每个处理单元的操作通过向在该集合的多行处理块中的第一个多行处理块的至少一些输入处接收的像素值应用多行处理来提供与图像的像素行中的相应的一个像素行相关的经处理的像素值;并且在每个处理周期从该集合中的多行处理块中的最后一个多行处理块提供与图像的像素行中的N个像素行相关的经处理的像素值,以在图像处理系统中进一步处理。
[0016]如对本领域技术人员而言显而易见的,以上特征可以酌情进行组合,并且可以与示例的任意方面进行组合。

【专利附图】

【附图说明】
[0017]现在将通过参考附图对示例进行详细描述,其中:
[0018]图1是现有技术的图像处理系统的一部分的简化示意图;
[0019]图2示出了图像处理设备的功能块的简化框图;
[0020]图3是图像处理系统的一部分的简化示意图;
[0021]图4是对图像进行处理的过程的流程图;
[0022]图5a至图5c示出了由多行处理块内的三个处理单元应用的滤波的简化表示;
[0023]图6是另一个图像处理系统的一部分的简化示意图;以及
[0024]图7是并行地对来自N个像素行的像素值进行处理的方法的流程图,其中N>1。
[0025]贯穿附图使用共同的附图标记来指示相似的特征。

【具体实施方式】
[0026]现在将仅通过示例对实施例进行描述。
[0027]图2示出了图像处理设备的功能块的简化框图。图像处理设备包括图像传感器202、图像处理系统204和存储器206。如图2所示,图像传感器被布置为向图像处理系统204提供图像数据。图像处理系统204被布置为如以下更详细地描述的那样对图像数据进行处理并且提供经处理的图像数据以存储在存储器206中。图像传感器202(例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)传感器)以阵列形式进行布置并且被配置为捕捉表示图像的像素值,像素值随后作为图像数据被提供至图像处理系统204(其在这里可以被称作“图像处理流水线”)。经处理的图像数据包括表示图像的多个经处理的像素值。对图像的像素值所执行的图像处理可以包括许多不同功能。例如,像素值可以通过诸如滤波和锐化之类的功能进行修改(例如,用于提高图像的感知质量)。图像处理的其它功能可以是将图像数据压缩或编码为特定格式,诸如联合图像专家组(JPEG)格式或运动图像专家组(MPEG)格式。图像数据可以与单个图像(例如照片)相关或者与视频流的帧相关。如对于本领域技术人员而言将是显而易见的,从图像处理系统204输出的经处理的图像数据可以以一种或多种方式被使用。例如,经处理的图像数据可以被存储在存储器206中。可替换地或者除此之外,经处理的图像数据可以被提供至显示器以从那里输出。可替换地或者除此之外,经处理的图像数据可以例如通过互联网或者蜂窝通信网络被传送至另一设备。
[0028]以上描述了图像传感器202、图像处理系统204和存储器206存在于相同设备上。然而,在其它示例中,图像传感器202、图像处理系统204和/或存储器206并不存在于相同设备上。例如,图像传感器202可以在相机中实施,相机是与在其中实施图像处理系统204的设备不同的设备。此外,在其它示例中,图像处理系统204可以从除图像传感器202以外的来源接收图像数据。例如,图像数据可以被存储在存储器206中并且可以从存储器206被提供至图像处理系统204。
[0029]图像处理系统204包括单彳丁处理块和多彳丁处理块两者。图3是图像处理系统204的一部分的简化示意图。图3示出了图像处理系统204,其包括被标记为302^302^3023和3024的四个多行处理块、行存储模块304、两个单行处理块306和308以及存储器接口 310。第一多行处理块302i包括在图3中被标记为“μ ”的多个(例如11个)处理单元(它们在这里也可以被称作“内核”)。类似地,第二多行处理块3022包括多个(例如11个)处理单元,第三多行处理块3023包括多个(例如7个)处理单元,并且第四多行处理块3024包括一个处理单元。图像处理系统204可以进一步包括为了清楚起见而未在图3中示出的处理块。单行处理块306被布置为从图像处理系统204的之前块接收图像的像素值。单行处理块306的输出耦合至行存储模块304的输入。行存储模块304的多个输出耦合至多行处理块302i的相应的多个输入。多行处理块302i的多个输出(来自相应的处理单元)耦合至多行处理块3022的相应的多个输入。多行处理块3022的多个输出(来自相应的处理单元)耦合至多行处理块3023的相应的多个输入。多行处理块3023的多个输出(来自相应的处理单元)耦合至多行处理块3024的相应的多个输入。多行处理块3024的输出(来自处理单元)耦合至单行处理块308的输入。单行处理块308的输出耦合至存储器接口 310的输入。
[0030]参考图4对图像处理系统204的操作进行描述,图4是处理图像的过程的流程图。
[0031]在操作中,单行处理块306被配置为对其从图像处理系统204的之前块接收的单行像素值执行处理。单行处理块306作用于来自图像的一排像素的像素值而不需要访问来自图像的其它像素排的像素值。例如,单行处理块306可以对像素值的增益进行调节,对像素值的白平衡进行调节,或者沿一行(例如一排)像素执行一维(ID)滤波。
[0032]在步骤S402中,从单行处理块306输出与图像的多排相关的像素值,并且以串行方式在行存储模块304将其接收。行存储模块304存储图像的多排的像素值。在该示例中,像素值按照对应于图像的像素行(例如排)的行被存储于行存储模块304中。
[0033]在步骤S404中,行存储模块304并行地从图像的相应的多排向处理块提供多个像素值。多个像素值可以在多个处理周期中的每个处理周期中从行存储模块304被提供至处理块302” “处理周期”表示每个像素值(或者像素值组,其中来自多行的像素值被并行处理)在该行(或多行)中的下一个像素值能够被处理块之一处理之前被该处理块处理的时间。也就是说,一个或多个像素值的新的组在多个处理周期中的每个处理周期中由图像处理系统204来处理。在一个示例中,处理周期可以对应于时钟周期。更一般地,处理周期可以对应于一个或多个时钟周期。在图3所示的示例中,一列11个像素值从行存储模块304被提供至处理块302i的相应的11个输入。
[0034]在步骤S406中,处理块302i的每个处理单元接收在处理块302i的至少一些输入处接收的像素值,并且对那些像素值进行处理(例如对像素值进行滤波)以在每个处理周期提供单个输出像素值(例如经滤波的像素值)。在图3所示的示例中,处理块302i中有11个处理单元,其中每个处理单元接收在处理块的所有11个输入处接收的像素值以提供11个并行输出。
[0035]在步骤S408中,处理块的输出作为每个处理周期的一列像素值(例如11个像素值)被提供至处理块3022的相应的输入。从处理块302i的处理单元(μ)输出的像素值可以直接被提供至处理块302-2的输入。不在处理块302i和处理块3022之间实施行存储丰吴块。
[0036]类似于处理块3021;处理块3022包括在图3中被标记为“ μ ”的多个处理单元(它们在这里也可以被称作“内核”)。在步骤S410中,处理块3022的每个处理单元接收在处理块3022的至少一些输入处接收的像素值,并且对那些像素值进行处理(例如对像素值进行滤波)以在每个处理周期提供单个输出像素值(例如经滤波的像素值)。在图3所示的示例中,处理块3022中有11个处理单元,其中每个处理单元接收在处理块3022的11个输入中的一些或全部输入处接收的像素值以提供11个并行输出。
[0037]图像的多排的像素值在图像处理系统204中从多行处理块的多个输出传送至下一个多行处理块的多个输入。这避免了需要在每个多行处理块之前实施相应的行存储模块。
[0038]在图3所示的示例中,第三多行处理块3023在第三多行处理块3023的相应的11个输入处接收来自第二多行处理块3022的11个输出。第三多行处理块3023包括7个处理单元(μ ),其中每个处理单元被配置为接收在处理块3023的11个输入中的至少一些输入处接收的像素值,并且对那些像素值进行处理(例如对像素值进行滤波)以在每个处理周期提供单个输出像素值(例如经滤波的像素值)。来自第三多行处理块3023的相应的7个处理单元的7个输出被提供至第四多行处理块3024的相应的7个输入。
[0039]在图3所示的示例中,第四多行处理块3024在第四多行处理块3024的相应的7个输入处接收来自第三多行处理块3023的7个输出。第四多行处理块3024包括I个处理单元(μ ),其被配置为接收在处理块3024的7个输入处接收的像素值,并且对那些像素值进行处理(例如对像素值进行滤波)以在每个处理周期提供单个输出像素值(例如经滤波的像素值)。来自第四多行处理块3024的处理单元的输出被提供至单行处理块308的输入。
[0040]单行处理块308被配置为对其从第四多行处理块3024接收的像素值执行单行处理。如以上所描述的,单行处理块308可以应用的单行处理的示例包括对像素值的增益进行调节,对像素值的白平衡进行调节,或者沿一行(例如一排)像素执行ID滤波。
[0041]单行处理块308被布置为向存储器接口 310提供输出像素值,存储器接口 310用作图像处理系统204的输出,以由此向存储器206提供经处理的图像数据。如以上所描述的,除此之外或者可替换地,从图像处理系统204输出的经处理的图像数据可以用于除用于在存储器206中进行存储以外的目的,诸如用于显示或者用于在通信会话中进行传输。
[0042]在依据图1所示的概念实施四个多行处理块的图像处理系统中,将包括四个行存储模块:图像处理系统中的四个多行处理块中的每个多行处理块之前有一个行存储模块。相比之下,在图3所示的图像处理系统204中,仅实施了一个行存储模块304。行存储模块由于其功耗和硅面积而是昂贵的资源。因此,减少图像处理系统中的行存储模块的数量有助于降低功耗和硅面积。减少图像处理系统中的行存储模块的数量还可以减少图像处理系统对图像数据进行处理的延时,这对于处理用于实时使用的图像数据而言是特别重要的(例如当捕捉要被实时显示的视频数据时)。
[0043]图像处理系统204不需要四个行存储模块以便实施四个多行处理块,因为多行处理块302中的至少一些多行处理块具有多个输出,该多个输出可以作为多个输入被提供给图像处理系统204中的后续多行处理块。如以上所描述的,多行处理块的示例包括2D滤波块和ID滤波块,该ID滤波块在不平行于图像中的像素行(例如排)的方向上执行滤波。为了便于多行处理块具有多个输出,多行处理块包括并行操作的多个内核(或者“处理单元”)。例如,多行处理块302i每个处理周期计算11个像素值(相比于由图1所示的处理块102i计算的一个像素值)。能够明白,多行处理块302i需要实施11个内核,这比图1所示的处理块中实施的内核多10个。在处理块中的额外内核所需的额外处理逻辑与图像处理系统204中所需的行存储的数量的减少之间存在权衡。随着图像传感器(例如图像传感器202)的分辨率的增加,需要更长的行存储来存储图像的像素排的像素值,并且因此增加了通过减少行存储的数量所实现的好处,并且该权衡中的平衡可以朝向实施额外内核来移动。
[0044]在示例中,第一处理块302i是降噪器块。降噪器块302i进行操作以从像素值去除或减少噪声。降噪器块3021可以对与图像的二维区域相对应的像素值应用二维滤波。例如,该二维滤波可以是对称滤波,例如线性对称滤波。本领域技术人员将了解如何对像素值应用对称滤波。在示例中,二维对称滤波器可以被应用于以目标像素为中心的11 X 11的像素值阵列,以确定目标像素值的经滤波的值。诸如此类的对称滤波使用围绕目标像素值的边界像素值来确定目标像素的经滤波的值。例如,对称滤波器可以使用来自目标像素以上的五排和以下的五排的像素值,以及与目标像素在同一排上的周围像素的值。当计算目标像素的经滤波的值时,被对称滤波器考虑的周围像素值可以根据它们与目标像素的距离进行加权。在这种情况下,更接近于目标像素的像素值可以比更远离目标像素的像素值被加以更重的权重。
[0045]然而,降噪器块302:提供与图像的11个输入排的像素值相对应的11个输出。如果降噪器块302i要使用允许如以上所描述的示例中的两个5像素边界的对称滤波,则降噪器块302i将需要来自行存储模块304的20个输入排的像素值。
[0046]尽管降噪器块302i可以使用如以上所描述的对称滤波来实施,但是为了避免使用边界像素,在图3所示的示例中,使用非对称滤波(例如非对称非线性滤波)来实施降噪器块302”以这种方式,目标像素“Τ”偏离了内核所应用的滤波中所考虑的像素值区域的中心。非对称滤波并非必然考虑以目标像素为中心的像素值区域。例如,降噪器块的每个内核可以实施双边滤波器。双边滤波器是非线性滤波器的示例。本领域技术人员将会了解如何实施双边滤波器。在降噪器块302i中实施的双边滤波器可以对目标像素进行降噪而不使用具有固定系数的对称滤波器内核。当对像素值阵列应用双边滤波器时,在所考虑范围内的像素值根据其强度与目标像素值的强度之间的相似度进行加权。像素值的权重还可以取决于距目标像素的距离,虽然并不强烈。换句话说,与它们被像素和目标像素之间的距离所影响相比,权重在更大程度上被像素值与目标像素值之间的相似度所影响。由于双边滤波所考虑的像素值根据其与目标像素值的相似度进行加权,所以不如使用滤波器以目标像素为中心的对称滤波重要。
[0047]降噪器块具有11个输入、11个内核和11个输出。11个内核中的每个内核接收在降噪器块的11个输入中的每个输入处接收的像素值。以这种方式,11个内核彼此完全重叠并且11个输出与11个输入排对齐。可能有利的是,多行处理块内的所有内核重叠(即,彼此采用相同的输入),因为以这种方式,内核能够并行操作,但是一些存储器(例如寄存器)可能被用来临时存储要被内核考虑的像素值。以这种方式,要被内核考虑的像素值不需要被单独存储以供每个内核使用。换句话说,多行处理块内的内核能够彼此共享一些处理资源。
[0048]图5a至图5c示出了由降噪器块内的11个内核中的3个内核所应用的滤波的简化表示。图5a示出了被降噪器块302i的第11个内核考虑的像素区域。图5b示出了被降噪器块302i的第6个内核考虑的像素区域。图5c示出了被降噪器块302i的第I个内核考虑的像素区域。每个内核在被标记为“行输入I”至“行输入11”的相应输入上接收与已经在降噪器块302i处接收的图像排中的11排相关的像素值。每个内核进行操作以在11个输出行(被标记为“数据输出I”至“数据输出11”)中的相应一个输出行上提供经滤波的像素值。从图5b能够看出,第6个内核通过考虑围绕目标像素并且以目标像素为中心的11X11的像素值阵列来确定用于在第6个输出行(“数据输出6”)上输出的目标像素(“T”)的值。这类似于以上所描述的对称滤波。与之相反,从图5a和图5c能够看出,第I个内核和第11个内核通过考虑与第6个内核所考虑的阵列相同的11X11的像素值阵列来确定其用于在相应的第I个输出行和第11个输出行(“数据输出I”和“数据输出11”)上输出的目标像素(“T”)的值,该阵列并非以第I个内核或第11个内核的目标像素为中心。如以上所描述的,这在使用双边滤波器时是可接受的,因为被应用于像素值的加权取决于像素值和目标像素值之间的相似度而不强烈地(即,以显著程度)取决于像素的位置。
[0049]通过降噪器块302i实施的双边滤波对于滤波器所考虑的像素值和目标像素之间的距离确实具有一些依赖性(虽然是弱依赖性)。因此,对于内核而言,以其相应的目标像素为中心可能是最优的。然而,这将会需要像素值的另外的输入行(例如内核11所考虑的目标像素上方的排的五排像素值,以及内核I所考虑的目标像素下方的排的五排像素值),这进而将要求行存储模块304存储并提供较大排数的像素值。通过改进一些内核所实施的双边滤波而获得的优势可能被与增加行存储模块304的大小相关联的缺点所超过,但这是一种实施选择。此外,如以下所描述的,外部像素行(例如被表示为“数据输出I”和“数据输出11”的第I个输出行和第11个输出行)的准确性可能不像双边滤波器所考虑的中心像素行(例如被表示为“数据输出6”的第六个输出行)的准确性那么重要,因为外部像素行比中心像素行更可能在后续的多行处理块中仅被用作边界像素。
[0050]在示例中,第二处理块3022是缺陷像素修复(DPF)块。DPF块3022进行操作以校正图像中的缺陷像素。缺陷像素具有不正确的值。例如,缺陷像素可能是永远不表现为明亮的坏点(dead pixel)或者始终表现为明亮的亮点(stuck pixel)。DPF块30?应用2D滤波对缺陷像素进行校正。DPF块3022所应用的滤波是对称滤波(例如线性滤波)。如以上所描述的,对称滤波将使用边界像素来最优地执行。然而,DPF块3022具有11个输入、应用对称滤波的11个内核以及11个输出。DPF块3022的11个内核以与以上关于降噪器302!的11个内核所描述的方式类似的方式进行操作,但是DPF块3022的内核应用对称滤波而不是非对称的双边滤波。能够意识到的是,DPF块3022的一些内核将不会接收足够的边界像素以最优地应用对称滤波。DPF块3022的一些内核可以复制多排像素以在滤波过程中用作边界像素。例如,DPF块3022的第11个内核可以复制一排或多排像素值以用作边界像素来表示第11个内核的目标像素上方的一排或多排中的像素值,以便确定用于在第11个输出行(“数据输出11”)上输出的经滤波的像素值。
[0051]因此,比起对于更接近于内核所考虑的11X11阵列的边缘的排,对于更接近于(在第6个输入“行输入6”上所接收的)中心排的排而言,DPF块3022所应用的对称滤波将更准确。这是可接受的,因为针对外部排(例如在输出行I和输出行11上)输出的像素值仅在后续的多行处理块3023中被用于边界像素值,并且因此不需要像将与后续的多行处理块3023中的目标像素相对应的像素值那样准确。
[0052]在示例中,第三多行处理块3023是横向色像差(LCA)校正块。LCA校正块3023进行操作以通过对像素值进行滤波来校正横向色像差。LCA校正块3023包括7个内核,每个内核被配置为对在LCA校正块3023的11个输入中的至少一些输入处接收的像素值实施对称滤波。由于内核的数量小于LCA校正块3023的输入的数量,所以每个内核在对从DPF块3022所接收的像素值应用对称滤波时能够使用边界像素。
[0053]在示例中,第四多行处理块3024是去马赛克器(demosaicer)块3024。在操作中,去马赛克器块3024从彩色采样的稀疏集合重构完整的彩色图像。去马赛克器块3024包括一个内核,该内核被配置为对在去马赛克器块3024的七个输入处接收的像素值实施对称滤波。去马赛克器块3024的内核在对从LCA校正块3023接收的像素值应用对称滤波时能够使用边界像素,因为其从LCA校正块3023接收7排像素值。
[0054]以上针对多行处理块所给出的示例仅当作示例给出。图3中示出了四个多行处理块,但是在其它示例中,图像处理系统204中可以包括多于或者少于四个的多行处理块。在多行处理块302中所实施的内核可以实施对称或非对称滤波(例如双边滤波)。多行处理块302中所实施的每个内核可以对在多行处理块302的所有输入处接收的像素值应用多行滤波。可替换地,多行处理块302中所实施的一些(或全部)内核可以对在多行处理块302的输入的相应子集处接收的像素值应用多行滤波。例如,LCA校正块3023的7个内核中的每个内核可以对在LCA校正块3023的11个输入中的五个输入的子集处接收的像素值应用滤波。
[0055]如以上所描述的,多行处理块302中的内核的数量可以等于处理块302的输入的数量。以这种方式,处理块302的输出的数量与处理块302的输入的数量相同。在以上所描述的示例中的降噪器块3(^和DPF块3022中是这样的情形。可替换地,多行处理块302中的内核的数量可以小于处理块302的输入的数量。以这种方式,处理块302的输出的数量小于处理块302的输入的数量。在以上所描述的不例中的LCA校正块3023和去马赛克器块3024中是这样的情形。可替换地,多行处理块302中的内核的数量可以大于处理块302的输入的数量。以这种方式,处理块302的输出的数量大于处理块302的输入的数量。
[0056]在以上所描述的示例中,多排像素值被存储在行存储模块304中。多排像素值被提供至多行处理块302的输入。这是依据常规光栅扫描,其中像素值逐排按顺序进行扫描。然而,将可能根据像素值的列对其进行组织,而不是根据其排对像素值进行组织。以这种方式,多列像素值将被存储在行存储模块304中并且多列像素值将被提供至多行处理块302的输入。换句话说,多行像素值被存储在行存储模块304中并且被提供至多行处理块302的输入,但是这些行是像素的排还是列对于图像处理系统的实施而言并不重要。
[0057]图6是另一个图像处理系统600的一部分的简化不意图。图像处理系统600对应于图3所示的图像处理系统204。然而,如以下所描述的,图像处理系统600允许增加的并行处理。
[0058]如图6所示,来自图像的三行的像素值通过图像处理系统600的多行处理块602被并行地处理。图6中的箭头表示像素值的行。如图6所示,图像的三行的像素值在多个处理周期中的每个处理周期中(例如在多个时钟周期中的每个时钟周期中)从单行处理块606被提供至行存储模块604。术语“单行处理块”是指正被应用的处理的属性,其中在每行上的像素值的处理在不需要对来自图像的其它像素行的像素值进行访问的情况下进行,而不是指正被并行处理的行的数量。多行处理块602在每个处理周期中对数据进行并行处理,并且将图像行中的三行的像素值作为输出提供至单行处理块608。以这种方式,与其中在每个处理周期中仅图像的一行的像素值被提供至行存储模块304并且仅图像的一行的像素值作为输出被提供至单行处理块308的图像处理系统204的吞吐量相比,图像处理系统600的吞吐量得以增加(例如在该示例中3倍)。也就是说,通过对三行像素值进行并行处理,对于每个处理周期,与图3所示的图像处理系统204相比,由图像处理系统600输出三倍的像素值。图像处理系统600的这种性能的增加需要额外的处理逻辑。对于单行处理块而言,与如针对图像处理系统204所示的每次处理单行像素值相比,可能将需要三倍的处理逻辑。然而,对于多行处理块而言,虽然需要增加处理逻辑以每次处理三行像素值,但是与如针对图像处理系统204所示的每次处理单行像素值相比,将需要少于三倍的处理逻辑。实际上,对于图6所示的多行处理块602,与每次处理单行像素值相比,将需要远少于三倍的处理逻辑。因此,与如图像处理系统204中那样每次处理单行像素值相比,对三行像素值进行并行处理可能是有利的。
[0059]单行处理块606被配置为在每个处理周期中例如并行地接收与图像的三个像素行相关的像素值,或者在像素值像多行处理块602后续对其进行处理的三倍那么快被接收的情况下以串行方式接收,以使得在每个处理周期中接收来自图像的三行的像素值。单行处理块606被配置为在每个处理周期中对来自三行的像素值(例如并行地,或者以三倍于如以上所指出的速度串行地)进行操作,并且在每个处理周期中提供图像的三行的像素值,它们被提供至行存储模块604 (例如并行地或者以三倍于该速度串行地)。行存储模块604被配置为存储三行像素值以及之前所接收的行的像素值。在图6所示的示例中,行存储模块604进一步被配置为向第一多行处理块302i提供13行像素值。
[0060]应当注意的是,11行像素值被提供至图像处理系统204中的多行处理块3021;以便图像处理系统204对来自一个像素行的像素值进行处理,而13 ( S卩,11加2)而非33 ( SP,11乘以3)行像素值被提供至图像处理系统600中的多行处理块6021;以便图像处理系统204对来自三个像素行的像素值进行处理。
[0061]多行处理块602i包括13个处理单元(或“内核”),其中每个处理单元被配置为在多行处理块的至少一些输入处接收在多行处理块处接收的像素值。多行处理块602!的处理单元并行操作以提供与13个像素行相对应的13个经滤波的像素值的输出。
[0062]应当注意的是,在图像处理系统204中的多行处理块中实施11个处理单元,以便图像处理系统204对来自一个像素行的像素值进行处理,而在图像处理系统600中的多行处理块602i中实施13 ( S卩,11加2)而非33 ( S卩,11乘以3)个处理单元,以便图像处理系统600对来自三个像素行的像素值进行处理。
[0063]在第二多行处理块6022的相应输入处接收13个经滤波的像素值。将要意识到的是,第二多行处理块6022具有13个处理单元以向第三多行处理块6023的相应输入提供13个输出。第三多行处理块6023具有9个处理单元以向第四多行处理块6024的相应输入提供9个输出。第四多行处理块6024具有三个处理单元以向单行处理块608的相应输入提供三个输出。单行处理块608具有三个输出,以例如向存储器接口 610并行地提供三个像素行的像素值作为输出。
[0064]在图6所示的图像处理系统600中,与图3所示的图像处理系统204相比,两个额外的数据流被并行处理。这利用多行处理块中的处理逻辑的小幅增加(例如在第一多行处理块302i中从11个处理单元增加到13个处理单元,即,处理单元的数量增加了 18% )来实现。使用相同概念,在其它更为一般的图像处理系统的示例中,来自图像的N个像素行的像素值可以被并行处理,其中N>1。这通过适当改变多行处理块中的处理单元的数量来实现。
[0065]通常,最后一个多行处理块(例如,图像处理系统600中的第四处理块6024)被配置为提供N个输出以由一个或多个单行处理块(例如图像处理系统600中的单行处理块608和/或存储器接口 610)进一步处理,其中NS I。在N>1的情况下,N个输出可以由一个或多个单行处理块(例如单行处理块608和/或存储器接口 610)来进一步并行处理。也就是说,最后一个多行处理块(例如图像处理系统600中的第四处理块6024)被配置为在每个处理周期中向单行处理块608例如并行地输出与图像的三行像素相关的像素值,或者在像素值像多行处理块602之前对其进行处理的三倍那么快被输出的情况下以串行方式输出,以使得来自图像的三行的像素值在每个处理周期中被输出至单行处理块608。
[0066]图7示出了在图像处理系统600中并行地处理来自N个像素行的像素值的方法的流程图,其中N>1。在一般示例中,图像处理系统600包括行存储模块604以及一个或多个多行处理块602的集合。在步骤S702中,行存储模块604从单行处理块606接收与图像的N个像素行相关的像素值。
[0067]在步骤S704中,从行存储模块604并行地输出与图像的M个像素行相关的像素值。在该示例中,M>N。在步骤S706中,在集合中的多行处理块中的第一个多行处理块(即,处理块602^的多个输入处并行地接收从行存储模块604输出的像素值。在步骤S708中,处理块的处理单元被并行操作以通过对在处理块的至少一些输入处接收的像素值应用多行处理来提供与图像的像素行中的相应一个像素行相关的经处理的像素值。像素值由所有多行处理块602来处理。该集合中的多行处理块中的最后一个多行处理块(例如图6所示的示例中的处理块6024)提供与图像的像素行中的N个像素行相关的经处理的像素值(例如作为N个并行输出),以例如由单行处理块608在图像处理系统600中进一步处理。
[0068]作为示例,如果集合中仅有一个多行处理块602,则该集合中的多行处理块中的第一个多行处理块也是该集合中的多行处理块中的最后一个多行处理块。然而,如果所述集合中有多个多行处理块(例如在图6所示的示例中,其中该集合中有四个多行处理块602),则以以上所描述的顺序,由多行处理块之一所提供的经处理的像素值在多行处理块中的另一多行处理块的输入处被接收。
[0069]图7所示的方法步骤在多个处理周期中的每个处理周期上重复。该处理周期可以对应于一个或多个时钟周期。
[0070]增加从其对像素值进行并行处理的像素行的数量可以提高图像处理系统的性能。以这种方式,图像处理系统的性能可轻易缩放以通过对来自较大数量的像素行(例如排)的像素值进行并行处理来应对大量的图像数据。随着图像传感器的分辨率的增加而使得用来表示每个图像的数据量增加,这可能会变得越来越有用。如以上所描述的,在处理块中的额外内核所需的额外处理逻辑和图像处理系统中所需的行存储的数量的减少之间存在权衡。随着在每个处理周期中对来自其的像素值进行处理的像素行的数量的增加,通过实施额外内核所实现的好处也增加(因为如以上所描述的,使用少于N倍的内核以便在每个处理周期中对来自图像的N个像素行的像素值进行处理)。因此,该权衡中的平衡可以进一步朝向实施额外内核而移动。也就是说,当在如图6所示的图像处理系统中引入并行性时,该权衡变得明显更偏向于使用额外内核。
[0071]换句话说,内核为了减少行存储的数量所完成的附加工作能够被利用以便提高图像处理系统中的并行性。也就是说,每个处理周期中所能够处理的像素行的数量以比用于处理额外像素行的硬件的增加大的因数增加。
[0072]本文所描述的图像处理系统可以在设备上以硬件或软件来实施。例如,本文所描述的任意图像处理系统可以在现场可编程门阵列(FPGA)上实施,或者作为固定功能的专用集成电路(ASIC)来实施。
[0073]通常,以上所描述的任意功能、方法、技术或组件能够以使用软件、固件、硬件(例如固定逻辑电路)的模块或者这些实施方式的任意组合来实施。本文使用术语“模块”、“功能”、“组件”、“单元”、“块”和“逻辑”来通常表示软件、固件、硬件或者其任意组合。
[0074]在软件实施方式的情况下,模块、功能、组件、“单元”、“块”或者逻辑表示当在处理器(例如一个或多个CPU)上执行时执行指定任务的程序代码。在一个示例中,所描述的方法可以由计算机来执行,该计算机配置有存储在计算机可读介质上的机器可读形式的软件。一种这样的计算机可读介质的配置是信号承载介质,并且因此被配置为诸如经由网络向计算设备传送指令(例如作为载波)。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且能够被机器访问的其它存储器设备。
[0075]软件可以是包括用于对计算机进行配置以执行所描述的方法的组成部分的计算机程序代码的计算机程序的形式,或者是包括适于在程序运行于计算机上时以及在计算机程序可以包含在计算机可读介质上的情况下执行本文所描述的任意方法的所有步骤的计算机程序代码器件的计算机程序的形式。程序代码可以被存储在一个或多个计算机可读介质中。本文所描述的技术的特征是独立于平台的,这意味着技术可以在具有各种处理器的各种计算平台上实施。
[0076]本领域技术人员还将意识到的是,所有或部分功能、技术或方法可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等来执行。例如,模块、功能、组件或逻辑可以包括电路形式的硬件。这样的电路可以包括在制造过程中可获得的晶体管和/或其它硬件元件。这样的晶体管和/或其它元件可以用来形成电路或结构,作为示例,电路或结构实施和/或包含:诸如寄存器、触发器或锁存器之类的存储器,诸如布尔运算之类的逻辑运算器,诸如加法器、乘法器或移位器之类的算术运算器以及互连。这样的元件可以被提供为定制电路或标准单元库、宏或者其它级别的抽象。这样的元件可以在具体配置中进行互连。模块、功能、组件或逻辑可以包括固定功能的电路以及能够被编程以执行一种或多种功能的电路;这样的编程可以根据固件或软件更新或控制机制来提供。在示例中,硬件逻辑具有实施固定功能操作、状态机或过程的电路。
[0077]还意在包含“描述”或定义实施以上所描述的模块、功能、组件或逻辑的硬件配置的软件,诸如HDL (硬件描述语言)软件,其用于设计集成电路或者用于对可编程芯片进行配置,以执行所期望的功能。
[0078]术语“处理器”和“计算机”在本文被用来指代具有处理能力以使得其能够执行指令的任意设备或其部分,或者能够执行所有或部分功能或方法或其任意组合的专用电路。
[0079]虽然已经以特定于结构特征和/或方法动作的语言对主题进行了描述,但是所要理解的是,所附权利要求中所限定的主题并非必然局限于以上所描述的具体特征或动作。相反,以上所描述的具体特征和动作作为实施权利要求的示例形式而被公开。将要理解的是,以上所描述的好处和优势可以涉及一个示例或者可以涉及若干示例。
[0080]如对于技术人员将是显而易见的,本文所给出的任意范围或数值可以进行扩展或改变而不丧失所寻求的效果。本文所描述的方法的步骤可以在适当情况下以任意适当的顺序来执行或者同时执行。以上所描述的任意示例的各方面可以与所描述的任意其它示例的各方面相结合以形成另外的示例而不丧失所寻求的效果。
【权利要求】
1.一种图像处理系统,包括: 第一多行处理块,包括被配置为并行地接收与图像的相应的多个像素行相关的像素值的多个输入,所述第一处理块包括被配置为彼此并行地操作的多个处理单元, 其中所述处理单元中的每个处理单元被配置为通过对在所述第一处理块的所述输入中的至少一些输入处接收的像素值应用多行处理来提供与所述图像的所述像素行中的相应的一个像素行相关的经处理的像素值;所述图像处理系统进一步包括: 第二多行处理块,包括被配置为从所述第一处理块并行地接收由所述第一处理块的所述处理单元提供的所述经处理的像素值的多个输入,所述第二处理块被配置为对从所述第一处理块接收的所述经处理的像素值应用多行处理。
2.根据权利要求1所述的图像处理系统,进一步包括行存储模块,所述行存储模块被配置为: 接收与所述图像的所述像素行相关的所述像素值;以及 存储在所述行存储模块处接收的所述图像的所述像素行的所述像素值; 其中所述第一处理块的所述多个输入被配置为从所述行存储模块并行地接收与所述图像的所述相应的多个像素行相关的所述像素值。
3.根据权利要求1所述的图像处理系统,进一步包括另外的多行处理块,其中所述第一处理块的所述多个输入被配置为从所述另外的多行处理块并行地接收与所述图像的所述相应的多个像素行相关的所述像素值。
4.根据之前任一项权利要求所述的图像处理系统,其中所述第一处理块的处理单元的数量:(i)等于所述第一处理块的输入的数量,或者(ii)小于所述第一处理块的输入的数量。
5.根据之前任一项权利要求所述的图像处理系统,其中所述第一处理块的所述处理单元中的至少一个处理单元被配置为对在所述第一处理块的所有所述输入处接收的像素值应用多行处理,或者其中所述第一处理块的所述处理单元中的至少一个处理单元被配置为对在所述第一处理块的所述输入的相应子集处接收的像素值应用多行处理。
6.根据之前任一项权利要求所述的图像处理系统,其中所述第一处理块的所述处理单元被配置为应用的所述多行处理是:(i)非对称滤波,或者(ii)对称滤波。
7.根据之前任一项权利要求所述的图像处理系统,其中所述第一处理块的所述输入中的每个输入被配置为在多个处理周期中的每个处理周期上接收与相应的像素行相关的一个像素值。
8.根据之前任一项权利要求所述的图像处理系统,其中所述第二处理块被配置为提供N个输出以用于由所述图像处理系统中的一个或多个单行处理块进一步处理,其中N大于或者等于I。
9.根据权利要求8所述的图像处理系统,其中N大于I并且其中所述N个输出进一步由所述图像处理系统中的所述一个或多个单行处理块来并行地处理。
10.根据之前任一项权利要求所述的图像处理系统,进一步包括至少一个另外的多行处理块,所述至少一个另外的多行处理块被配置为:(i)向所述第一处理块的所述输入并行地提供与所述图像的所述相应的像素行相关的所述像素值,或者(ii)并行地接收由所述第二处理块处理的所述经处理的像素值。
11.一种在图像处理系统中处理图像的方法,所述方法包括: 在所述图像处理系统的第一多行处理块的多个输入处并行地接收与图像的相应的多个像素行相关的像素值; 彼此并行地操作所述第一处理块的多个处理单元,其中所述处理单元中的每个处理单元的操作通过对在所述第一处理块的所述输入中的至少一些输入处接收的像素值应用多行处理来提供与所述图像的所述像素行中的相应的一个像素行相关的经处理的像素值;以及 在所述图像处理系统的第二多行处理块的多个输入处从所述第一处理块并行地接收通过所述第一处理块的所述处理单元的操作而提供的所述经处理的像素值,其中所述第二处理块被配置为对从所述第一处理块接收的所述经处理的像素值应用多行处理。
12.根据权利要求11所述的方法,进一步包括: 在行存储模块处接收与所述图像的所述像素行相关的所述像素值;以及在所述行存储模块中存储在所述行存储模块处接收的所述图像的所述像素行的所述像素值; 其中在第一多行处理块的多个输入处并行地接收与图像的相应的多个像素行相关的像素值的所述步骤包括从所述行存储模块接收所述像素值。
13.根据权利要求11所述的方法,其中在第一多行处理块的多个输入处并行地接收与图像的相应的多个像素行相关的像素值的所述步骤包括从另外的多行处理块接收所述像素值。
14.根据权利要求11至13中任一项所述的方法,其中所述第二处理块提供N个输出以用于由一个或多个单行处理块进一步处理,其中N大于1,并且其中所述方法进一步包括由所述一个或多个单行处理块并行地对所述N个输出进行处理。
15.一种图像处理系统,包括行存储模块以及一个或多个多行处理块的集合, 其中所述行存储模块被配置为: 在多个处理周期中的每个处理周期中接收与图像的N个像素行相关的像素值,其中N>1 ;以及 在所述处理周期中的每个处理周期中并行地输出与所述图像的M个像素行相关的像素值,其中M>N;并且 其中所述多行处理块中的每个多行处理块包括: 多个输入,被配置为并行地接收与所述图像的相应的多个所述像素行相关的像素值;以及 多个处理单元,被配置为彼此并行地操作,所述处理单元中的每个处理单元被配置为通过对在所述多行处理块的所述输入中的至少一些输入处接收的像素值应用多行处理来提供与所述图像的所述像素行中的相应的一个像素行相关的经处理的像素值, 其中所述集合中的所述多行处理块中的第一个多行处理块被配置为并行地接收与从所述行存储模块输出的所述M个像素行相关的所述像素值,并且其中所述集合中的所述多行处理块中的最后一个多行处理块被配置为在所述处理周期中的每个处理周期中提供与所述图像的所述像素行中的N个像素行相关的经处理的像素值,以用于在所述图像处理系统中进一步处理。
16.根据权利要求15所述的图像处理系统,其中在所述集合中仅有一个多行处理块,以使得所述集合中的所述多行处理块中的所述第一个多行处理块也是所述集合中的所述多行处理块中的所述最后一个多行处理块。
17.根据权利要求15所述的图像处理系统,其中在所述集合中有多个多行处理块,并且其中所述多行处理块按顺序被配置用于处理所述像素值,以使得由所述多行处理块之一提供的所述经处理的像素值在所述多行处理块中的另一多行处理块的输入处被接收。
18.根据权利要求15至17中任一项所述的图像处理系统,进一步包括单行处理块,所述单行处理块被配置为在所述多个处理周期中的每个处理周期中向所述行存储模块提供所述图像的所述N个像素行。
19.根据权利要求15至18中任一项所述的图像处理系统,进一步包括单行处理块,所述单行处理块被配置为接收由所述集合中的所述多行处理块中的所述最后一个多行处理块提供的所述图像的所述N个像素行。
20.一种使用一个或多个多行处理块的集合对图像进行处理的方法,所述方法包括: 在多个处理周期中的每个处理周期中,在行存储模块处接收与图像的N个像素行相关的像素值,其中N〉I ; 在所述处理周期中的每个处理周期中,从所述行存储模块并行地输出与所述图像的M个像素行相关的像素值,其中M>N ; 在所述集合中的所述多行处理块中的第一个多行处理块的多个输入处并行地接收从所述行存储模块输出的、与所述图像的所述M个像素行相关的像素值;以及 彼此并行地操作所述多行处理块中的所述第一个多行处理块中的多个处理单元,其中所述处理单元中的每个处理单元的操作通过对在所述集合的所述多行处理块中的所述第一个多行处理块的所述输入中的至少一些输入处接收的所述像素值应用多行处理来提供与所述图像的所述像素行中的相应的一个像素行相关的经处理的像素值, 其中在所述处理周期中的每个处理周期中,所述集合中的所述多行处理块中的最后一个多行处理块提供与所述图像的所述像素行中的N个像素行相关的经处理的像素值以用于在所述图像处理系统中进一步处理。
【文档编号】G06F9/38GK104301584SQ201410341664
【公开日】2015年1月21日 申请日期:2014年7月17日 优先权日:2013年7月18日
【发明者】M·毕晓普, M·泰勒 申请人:想象技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1