以像素速率进行图像处理的方法与装置的制作方法

文档序号:6351619阅读:199来源:国知局
专利名称:以像素速率进行图像处理的方法与装置的制作方法
技术领域
本发明总体上涉及数字信号处理及计算机图形,尤其涉及以像素速率进行的图像处理。
背景技术
在处理两维(2-D)图像时,已经知道的是要对连续的像素块应用小的矩阵或者核(kernel),以便生成输出像素。例如,在2-D卷积运算中,nXm矩阵(“卷积模板”)一般在光栅图案之后应用到图像,并且对于图像中的每个像素,该卷积模板的中心在那个像素上并且与图像中对应的nXm个像素进行卷积,以计算输出像素值。然后,这样生成的输出像素共同形成新的(处理后的)数字图像。依赖于所使用的卷积模板,2-D卷积运算可以过滤掉噪声、增强目标边缘或者在数字图像上实现其它期望的效果。类似地,在2-D相关运算中,矩阵也在光栅模式下应用到图像并且与每个像素及其相邻的像素进行计算,以生成对应的输出像素。这些和其它基于核的2-D处理操作可以以软件或硬件实施,并且可以应用到静止图像或者视频序列中的帧。图I示出了具有26 X 20像素阵列的示例图像100,每个小方块代表一个像素。3 X 3的核102可以应用到图像100,从左上角(S卩,像素Al)开始,并且以光栅模式一行一行地从一个边缘到另一个边缘。对于图像100中的每个像素,在那些像素数据与核矩阵的值进行计算之前,对应像素块(那个像素及其相邻的像素)的数字值需要从存储器设备或者输入缓冲区检索。检索像素数据并且将核与所述像素数据进行计算的步骤一般是流水线作业的,通过时钟以像素速率驱动。当核前进到下一个像素时,例如,从像素K16 (标记为“I”)前进到像素L16 (标记为“2”),只需要检索一列新的像素数据(S卩,像素M15-17中的那些)。即,在流水线作业处理中的每个时钟周期期间,只从存储器或者输入缓冲区检索一列新的像素数据,并且通常同时只生成一个输出像素值。因而,当处理完全位于图像100边界中的那些像素块(“内部像素块”)时,在检索像素数据列的速率与输出像素的速率之间可以存在一对 一的关系。但是,当核到达图像的边缘而且即将开始扫描并对新的一行或一帧进行操作时,这种获取一列并输出一个像素的定时模式就不能保持了。同样是关于图像100和核102,图2说明了这个问题。图2中被核102覆盖的像素块(其中心在像素Z16)可以称为“边缘像素块”。当核102从第16行上的最后一个像素(像素Z16)移到第17行上的第一个像素(像素A17)时,在可以计算对应于像素A17的输出像素值之前,需要获取两列新的像素数据(即,像素A16-18和B16-18中的那些)。类似的问题对其它尺寸的核及当核转换到视频序列中新的一帧时也存在。为了保持在转换期间的输出像素速率,传统的2-D图像处理方法将需要用于要获取的额外列的额外时钟周期或者比用于非边界像素块的大得多的存储器带宽。因为缺乏效率,所以这些解决方案都不是所期望的。

发明内容
本发明的实施方式提供了 2-D图像处理中改进的定时控制,即使当处理操作转换到新的一行或者一帧像素时,也能保持存储器获取与像素输出的恒定速率。在本发明的一方面,一种用于处理具有多个像素的一个或多个图像的方法包括以光栅模式处理图像的第一边缘和第二边缘之间的连续像素块。在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时,从存储设备获取所述下一个像素块的一个新向量(即,一行或者一列)。在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时,所述下一个像素块中位置超出所述第二边缘的新向量利用预先确定的像素值填充,同时从所述存储设备获取下一行或下一帧像素上第一个像素块的一个 新向量。在所述每单个时钟单位中,生成一个输出像素值,由此保持了存储器获取与像素输出的恒定速率。在本发明的另一方面,一种用于处理具有多个像素的一个或多个图像的装置包括(i)用于以光栅模式处理图像的第一边缘与第二边缘之间的连续像素块的装置;(ii)用于在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时,从存储设备获取所述下一个像素块的一个新向量的装置;(iii)用于在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时,利用预先确定的像素值填充所述下一个像素块中位置超出所述第二边缘的新向量并且同时从所述存储设备获取下一行或下一帧像素上第一个像素块的一个新向量的装置;及(^)用于在所述每单个时钟单位中输出一个输出像素值,由此保持存储器获取与像素输出的恒定速率的装置。在又一方面,一种用于以光栅模式处理图像的第一边缘与第二边缘之间的连续像素块的装置包括输入数据接口,与一个或多个存储设备耦合,以便接收所述图像的至少一个像素值输入流;像素处理部件(cell)的阵列,每个部件都包括存储在两维图像处理过程中要应用到所述图像的核的系数值的系数存储单元、存储所述图像的像素值的像素存储单元、复用器单元及一个或多个部件内操作单元,所述像素存储单元耦合到相邻部件的另一个像素存储单元或者耦合到所述输入数据接口,由此允许所述像素值首先经所述输入数据接口接收并且随后跨所述阵列从一个向量传递到相邻的向量,如果所述每个部件不在所述阵列的中心向量中的话,该复用器单元具有耦合到所述像素存储单元、所述阵列同一行上的中心向量存储单元及位于所述中心向量与所述每个部件之间的任何像素存储单元的输A ;部件间操作单元,处理来自所述像素处理部件阵列的输出,以生成输出像素值;以及定时控制模块,协调所述输入数据接口、所述像素处理部件的阵列以及所述部件间操作单元的操作。在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时,所述定时控制模块使得从所述一个或多个存储设备获取所述下一个像素块的一个新向量。在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时,所述定时控制模块使得所述下一个像素块中位置超出所述第二边缘的新向量利用预先确定的像素值填充,同时使得从所述一个或多个存储设备获取下一行或下一帧像素上的第一个像素块的一个新向量,由此保持存储器获取与像素输出的恒定速率。
现在将参考如附图中所示出的本发明的示例实施方式更具体地描述本发明。尽管以下参考示例实施方式对本发明进行描述,但是应当理解,本发明不限于此。获得本发明教导的本领域普通技术人员将想到附加的实现方式、修改和实施方式及其它的应用领域,这些都在这里所述的本发明范围之内,而且本发明对它们可以有显著的用途。


根据以下优选实施方式的描述及附图,本领域技术人员可以想到其它的目标、特征和优点,其中图I示出了具有像素阵列的示例图像;图2示出了在传统2-D图像处理方法中遇到的恒定像素速率的破坏;图3示出了根据本发明的实施方式、利用3X3的核进行2-D图像处理的示例方法;图4示出了根据本发明的实施方式、利用5X3的核进行2-D图像处理的示例方法;图5示出了根据本发明的实施方式的示例2-D图像处理引擎;以及图6示出了根据本发明的实施方式、用于图像处理的示例2-D卷积引擎。
具体实施例方式本发明的实施方式改进了图像处理,并且,即使当处理操作转换到新的一行或一帧像素时,也可以保持进入的像素速率与输出的像素速率之间一对一的关系,而不需要附加的时钟周期或者存储器带宽。通过在当前行上的新一列边缘像素块被复制或填零的时候预先获取下一行或下一帧的第一个像素块中的一列新的像素数据,根据本发明的改进的定时控制利用了空闲的存储器带宽。在当前行上的边缘像素块被处理的时候,下一行或下一帧的第一个像素块中的数据准备好进行计算,而不需要额外的时钟周期或者额外的存储器带宽。本发明的更多细节、特征和优点可以参考附图及以下的详细说明来理解。参考图3,示出了根据本发明的实施方式、利用3X3的核302进行2-D图像处理的示例方法。图3示出了数字图像300的一部分,在这部分上,以光栅模式扫描核302。如在此所使用的,术语“光栅模式”指在2-D图像处理操作(例如卷积或相关)期间在图像上逐行或一行接一行地扫描核的模式。一般来说,核一次前进一个像素,并且从图像的一个边缘前进到相对的边缘,由此覆盖连续的像素块,其中每个新块都只包括不在其相邻块中的一列新像素。但是,光栅模式不一定要求扫描覆盖图像的每个单行或者恒定地从一行移到其下一个相邻的行。例如,光栅模式可以覆盖图像的奇数行,然后覆盖偶数行。光栅模式也不一定要求图像的每一行上特定的扫描方向。此外,本领域技术人员将认识到,当术语“列”和“行”中一个在另一个的上下文中使用时,术语“列”和“行”具有相对的重要性。因此,其中按列扫描核并且预先获取新像素数据行的2-D图像处理实现方式也属于在此公开的本发明的范围之内。在图3中,核302以光栅模式在图像300之上一行接一行地扫描。当核302在第8行上前进到图像300的右边缘时,被核302覆盖的最后一个完整的像素块的中心围绕像素Y8,而在那一行上获取的最后一列新数据对应于像素Z7-9。像素Z7-9的值可以在一个时钟单位中从存储设备(例如,存储器、输入缓冲区或者先入先出(FIFO)设备)获取。如在此所使用的,术语“时钟单位”指在流水线图像处理操作期间提供定时基准或者同步逻辑门或运算设备的时间单位,例如一个完整的时钟周期或者半个时钟周期。当核前进到第8行的最后一个像素(即,像素Z8)时,下一个要处理的像素块,即块304,延伸超出了图像300的右边缘。作为替代,在其它情况下需要从存储设备获取的一列新的像素数据(在列Z+1上且在像素块304中)将接收从图像300的右边缘的对应部分中的像素复制的值。S卩,在一种实施方式中,新的列(列Z+1)将是已经在前一个时钟单位中获取的最后一列(像素Z7-9)的值的拷贝。在另一种实施方式中,图像处理器可以配置成用零或者其它的数字值填充新的列。即,总的来说,“新的”列(列Z+1)通过不需要从存储设备获取的像素值来填充。在列Z+1利用预先确定的值(例如,或者是复制的值,或者是零)填充的时候,存储器带宽可用于要从存储设备获取的新数据。因此,本发明的实施方式利用了这种空闲的存储器带宽,并且可以使下一行或者下一帧图像上的第一列像素数据预先获取。在图3所示的这个特定的例子中,在单个时钟单位中,当第8行上的列Z+1利用从列Z复制的像素值填充或者简单地用零填充的时候,第9行上的第一列(像素A8-10)的像素值可以从存储设备预先获取。然后,在下一个时钟单位中,第9行上的第二列像素数据可以从存储设备预先获取。第9行上第一个像素块延伸超出图像300左边缘的部分可以用第一列(像素A8-10,已经在前一个时钟单位中预先获取)的像素值或者零填充。作为到目前为止所述的定时安排的结果,即使在2-D图像处理操作从图像300的第8行转换到第9行的时候,图像处理器也已经能够在每单个时钟单位期间获取一列而且仅一列新的像素数据。因此,这种以恒定的输入像素速率执行并且与其它计算步骤流水线作业的存储器获取可以确保每个时钟单位一个输出像素值的恒定输出速率。图4示出了根据本发明的实施方式、利用5X3的核进行2-D图像处理的示例方法。图4示出了数字图像400的一部分,在这部分之上,以光栅模式扫描核402。在时钟单位T中,当核402的中心前进到像素X8时,下一个要处理的像素块,块404,将以Y8为中心并且延伸超出图像400的右边缘。在所述单个时钟单位T期间,在列Z+1用零或者从像素Z7-9复制的值填充的时候,下一行(第9行)上的第一列,像素A8-10,可以从存储设备预先获取。在下一个时钟单位T+1中,要处理的下一个像素块,406,将以像素Z8为中心,而且进一步扩展超出图像400的右边缘。在所述单个时钟单位T+1期间,在列Z+2用零或者从像素Z7-9复制的值填充的时候,第9行上的第二列可以从存储设备预先获取。在下一个时钟单位T+2中,要处理的下一个像素块,408,将以像素A9为中心。在所述单个时钟单位T+2期间,第9行上的第三列可以从存储设备预先获取。第9行上的列A-I和A-2可以利用预先确定的像素值(例如零或者像素A8-10的值)填充。在时钟单位T+2结束时,第9行上的第一个像素块(408)的所有元素都已经准备好与核402进行计算。本发明的实施方式可以以软件、固件和/或硬件实施。更优选地,本发明的实施方式是在作为数字图像处理系统或图形加速装置的一部分的2-D卷积或相关计算引擎中实现的。、
图5示出了根据本发明的实施方式的示例2-D图像处理引擎500。2-D图像处理引擎500包括像素处理部件的阵列(在该实施方式中,是5X3阵列)、输入数据接口 502、部件间操作单元504和定时控制模块506。阵列中的每一个像素处理部件都包括存储在2-D图像处理(例如,卷积或者相关运算)期间要应用到像素块的核的系数值的系数存储单元,例如数据寄存器(例如,Cai和CB2)。每个像素处理部件还包括存储像素块的像素值的对应像素存储单元,例如数据寄存器(例如,Dai和DB2)。每个像素存储单元都与同一行上的相邻像素处理部件的像素存储单元耦合。如果像素处理部件在输入侧的边缘列(在这里是列E)中,那么像素存储单元还耦合到数据输入接口 502,以接收新的像素数据。因此,新的一列像素值可以经数据输入接口 502获得并且暂时存储在输入侧边缘列中的像素存储单元中,并且在像素存储单元的每一列中先前存储的像素值可以“推到”或者复制到左侧的下一列。这种布置形成了一条数据路径, 由此一列像素值可以从数据输入接口 502向左传递,每个时钟单位跳一列。到每个时钟单位结束时,先前存储在最左边一列(在这里是列A)的像素存储单元中的像素值被改写,并因此被丢弃。每个像素处理部件,如果它不在中心列(在这里是列C)的话,那么还包括复用器单元(“MUX”)。该复用器单元具有一个耦合到同一部件中的像素存储单元的输入。此外,该复用器单元具有耦合到同一行上的中心列像素存储单元及位于所述中心列与当前部件之间的任何像素存储单元的输入。因此,针对不在阵列左或右边缘上的每一列(“非边缘列”)创建了数据路径,以将其内容向外复制到其它的列。如本领域技术人员可以认识到的,关于复用器单元在非中心列部件中引入附加的延迟方面,可以在中心列部件中包括延迟元件,以便抵消部件之间的延迟。每个像素处理部件还包括从同一部件中的对应的系数存储单元接收输入的一个或多个部件内操作单元(例如,运算或逻辑设备,如乘法器)。该部件内操作单元还直接从对应的像素存储单元(在这里是中心列,列C)或者从复用器单元的输出(如在非中心列中)接收输入。部件内操作的结果还可以进一步利用部件间操作单元504 (细节没有示出)进行处理,以生成例如输出像素值的处理后的输出。2-D图像处理引擎500的输入数据接口 502将所述阵列与为三行像素处理部件提供新像素值的一个或多个存储设备(未示出,例如输入缓冲区和/或输入先入先出(IFIF0)设备)耦合。更具体而言,在传递到剩余的列之前,新的像素值经输入线521、522和523输入到输入侧上的边缘列(在这里是列E)中的像素存储单元。提供了两个复用器(MUX1和MUX3)以便例如在处理图像的顶部或者底部行的时候允许中心行(在这里是第2行)的像素值复制到非中心行。一般来说,输入图像像素数据全部都暂时存储在输入缓冲区中,因此,所有三条输入线521、522和523都耦合到所述输入缓冲区。根据本发明的一种实施方式,其中一条输入线(例如,为底部行输入馈送的线523)可以直接耦合到IFIF0,接收一行像素值的实时馈送,因此节省了在其它情况下所需要的三分之一的缓冲区空间和存储器带宽。定时控制模块506相对于其系数值存储在系数存储单元中的核来协调计算图像的连续像素块的流水线处理。在每个时钟单位中,定时控制模块506使一列新的像素值经数据输入接口 502获取到像素存储单元DE1、DE2和De3中(在这里是在列E中)。在当前行上的图像的边缘列的像素值获取到边缘列像素存储单元(在这里是列E)之后,在下一个时钟单位(T+1)中,定时控制模块506可以使图像的下一行(或者下一帧的新行)上的第一列经数据输入接口 502预先获取到边缘列(在这里是列E)中。这个边缘列的像素值现在复制到了左侧相邻列(在这里是列D)中的像素存储单元。于是,在所述下一个时钟单位(T+1)中,该边缘列的像素值可以由边缘列(在这里是列E)中的复用器单元进行选择,用于部件内的操作。在时钟单位(T+1)期间,定时控制模块506可以使图像的下一行上的第二列经数据输入接口 502预先获取到边缘列(在这里是列E)中,同时把该下一行上第一列的像素值推到左侧相邻的列(在这里是列D)中,并且把当前行上的边缘列的像素值推到下一个左侧相邻的列(在这里是列C)中。在下一个时钟单位(T+2)中,边缘列的像素值可以再次被列D和列E中的复用器单元选择,用于部件内的操作。在时钟单位(T+2)期间,定时控制模块506可以使图像的下一行上的第三列预先获取到边缘列(在这里是列E)中,同时把该下一行上的第一和第二列的像素值推到左侧的两个相邻的列(在这里分别是列C和列D)中。下一个时钟单位(T+3)将看到2-D图像处理引擎500准备好进行对图像的下一行上第一个像素的计算。图5中所示的2-D图像处理引擎500的体系结构在两个维度都是可以缩放的,以适应任意的核尺寸。图6示出了根据本发明的实施方式、用于图像处理的示例2-D卷积引擎600,该引擎具有5X5的像素处理部件的阵列。对于2-D卷积运算,每个像素处理部件中的部件内操作单元都是乘法器,并且部件间操作单元包括级联的加法器,用于把所有乘法器的输出乘积相加,以最终生成处理后的输出。2-D图像处理引擎600具有比2-D图像处理引擎500更多的行,2-D图像处理引擎600在其输入数据接口 602中包括附加的复用器,以便把中心行像素值路由到非中心的行。根据以上所述的存储器获取和数据路由技术,定时控制模块606协调流水线处理中各个元件的操作,其中输入像素速率和输出像素速率保持一对一的关系。根据图3-6所示出的例子,可以认识到,本发明的实施方式可以在2-D图像处理操作中实施,把任意的nXm核矩阵应用到连续的像素块,其中n和m —般都是奇数。根据一些实施方式,在此所公开的方法与装置可以改变成适于其中n和m是偶数的nXm核矩阵。此外,这种2-D图像处理不限于卷积运算,还可以应用到2-D相关或者其它操作。尽管以上描述包括许多细节和特征,但是应当理解,包括这些仅仅是为了说明,而 不是要解释为对本发明的限制。对本领域技术人员来说,很显然,在不背离本发明主旨与范围的情况下,可以对以上所述的实施方式进行其它的修改。相应地,这种修改被认为在意图由以下权利要求及其合法的等价物所涵盖的本发明的范围之内。
权利要求
1.一种用于处理具有多个像素的一个或多个图像的方法,所述方法包括 以光栅模式在图像的第一边缘和第二边缘之间处理连续的像素块; 在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时, 从存储设备获取所述下一个像素块的一个新向量;以及 在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时, 用预先确定的像素值填充所述下一个像素块中位置超出所述第二边缘的新向量,以及从所述存储设备获取下一行像素或下一帧像素上的第一个像素块的一个新向量;以及在所述每单个时钟单位中,输出一个输出像素值,由此保持存储器获取与像素输出的恒定速率。
2.如权利要求I所述的方法,其中所述处理连续的像素块包括对所述连续的像素块应用nXm核矩阵,其中η和m是奇数。
3.如权利要求I所述的方法,其中所述处理连续的像素块包括两维卷积运算。
4.如权利要求I所述的方法,其中所述处理连续的像素块包括两维相关运算。
5.如权利要求I所述的方法,其中所述预先确定的像素值为零。
6.如权利要求I所述的方法,其中所述预先确定的像素值是所述第二边缘的对应部分的像素值。
7.一种用于处理具有多个像素的一个或多个图像的设备,所述设备包括 用于以光栅模式在图像的第一边缘和第二边缘之间处理连续的像素块的装置; 用于在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时,从存储设备获取所述下一个像素块的一个新向量的装置;以及 用于在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时,用预先确定的像素值填充所述下一个像素块中位置超出所述第二边缘的新向量,以及从所述存储设备获取下一行像素或下一帧像素上的第一个像素块的一个新向量的装置;以及 用于在所述每单个时钟单位中,输出一个输出像素值,由此保持存储器获取与像素输出的恒定速率的装置。
8.如权利要求7所述的设备,其中所述用于处理连续的像素块的装置还包括用于对所述连续的像素块应用nXm核矩阵的装置,其中η和m是奇数。
9.如权利要求7所述的设备,其中所述用于处理连续的像素块的装置还包括用于两维卷积运算的装置。
10.如权利要求7所述的设备,其中所述用于处理连续的像素块的装置还包括用于两维相关运算的装置。
11.如权利要求7所述的设备,其中所述预先确定的像素值为零。
12.如权利要求7所述的设备,其中所述预先确定的像素值是所述第二边缘的对应部分的像素值。
13.一种用于以光栅模式在图像的第一边缘和第二边缘之间处理连续的像素块的装置,所述装置包括 输入数据接口,与一个或多个存储设备耦合,以接收所述图像的至少一个像素值输入流;像素处理部件的阵列,每个像素处理部件包括 系数存储单元,存储在两维图像处理期间要应用到所述图像的核的系数值, 像素存储单元,存储所述图像的像素值,所述像素存储单元耦合到相邻部件的另一个像素存储单元或者耦合到所述输入数据接口,由此允许所述像素值首先经由所述输入数据接口接收,然后跨所述阵列从一个向量传递到相邻的向量, 复用器单元,如果每个所述像素处理部件不在所述阵列的中心向量中的话,所述复用器单元具有耦合到所述像素存储单元、所述阵列的同一行上的中心向量像素存储单元及位于所述中心向量与每个所述像素处理部件之间的任何像素存储单元的输入,以及一个或多个部件内操作单元; 部件间操作单元,处理来自所述像素处理部件的阵列的输出,生成输出像素值;以及定时控制模块,协调所述输入数据接口、所述像素处理部件的阵列以及所述部件间操作单元的操作,其中 在每单个时钟单位期间,当要处理的下一个像素块没有延伸超出所述第二边缘时,所述定时控制模块使得从所述一个或多个存储设备获取所述下一个像素块的一个新向量,以及 在每单个时钟单位期间,当所述要处理的下一个像素块延伸超出所述第二边缘时,所述定时控制模块使得所述下一个像素块中位置超出所述第二边缘的新向量利用预先确定的像素值填充,同时使得下一行像素或下一帧像素上的第一个像素块的一个新向量从所述一个或多个存储设备获取,由此保持存储器获取与像素输出的恒定速率。
全文摘要
本发明的实施方式提供了2-D图像处理中改进的定时控制,即使当处理操作转换到一行或一帧新的像素时也能保持存储器获取与像素输出的恒定速率。通过在当前行上的边缘像素块的一个新列被复制或填零时预先获取下一行或下一帧的第一个像素块中的一列新像素数据,根据本发明的改进的定时控制利用了空闲的存储器带宽,因此进入的像素速率与输出的像素速率之间一对一的关系不需要附加的时钟周期或存储器带宽就可以保持。在处理当前行上的边缘像素块的时候,下一行或下一帧的第一个像素块中的数据准备好进行计算,而不需要额外的时钟周期或者额外的存储器带宽。
文档编号G06K9/20GK102687162SQ201080059520
公开日2012年9月19日 申请日期2010年11月2日 优先权日2009年11月17日
发明者B·勒纳, G·G·卡拉纳姆, M·迈耶-庞德萨克, P·萨克 申请人:美国亚德诺半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1