背景技术
通常,由数码相机或摄像机等图像捕捉设备记录的图像,经影像处理后,可用黑白两种单色表示,即感光元件上各个象素点的图像信息可用二进制数“0”和“1”代替,用于表示所述象素点记录的是目标还是背景,这种只有两种单色表示的图像被称为二值图像。
图像捕捉设备的镜头模组中经常会有灰尘或图像捕捉时有小昆虫或扬尘等位于镜头和被捕捉物体之间,因此,图像捕捉设备捕捉得到的二值图像中的目标会出现微小的空隙,如图1所示,其中状态A所示的二值图像中的象素点“1”和象素点“2”为目标中的微小空隙。二值图像中的背景也会出现微小的杂点,如状态A所示的二值图像中的象素点“3”。因此,需要对图像捕捉设备记录的二值图像进行空间滤波处理,以消除二值图像的目标中的微小空隙和背景中的微小杂点。
目前,图像捕捉设备的感光元件上各个象素点的图像信息并不能独立输出,而是以行为单位的串行输出。而空间滤波时为了确定图像的目标中是否具有微小空隙以及背景中是否具有杂点,需要对图像的目标或背景中的各象素点及其周边的象素点进行分析,且考虑到空间滤波所用的时间,业界通常采用3*3象素点矩阵对图像进行空间滤波。
在图像的空间滤波技术中,利用3*3象素点矩阵执行“或运算”来更新图像的中心象素点,该算法也称为“膨胀”。如图1所示,其中,黑色的象素点表示记录了目标的图像信息或杂点的图像信息,白色的象素点代表背景或目标中的空隙。从状态A到状态B,以每个记录了目标的图像信息的象素点为中心象素的3*3象素点矩阵中,每个象素点都被“膨胀”成记录了目标的图像信息的象素点。利用3*3象素点矩阵执行“与运算”来更新图像的中心象素点,如图2所示,该算法也称为“收缩”。对如图1所示的状态B中 的像素点进行“收缩”,得到状态C。
经过状态A到状态B的“膨胀”与状态B到状态C的“收缩”后,图像中象素点1和象素点2在状态A中并没有记录目标的图像信息,在状态B中象素点1和象素点2被“膨胀”成记录了目标的图像信息的象素点,经过“收缩”一次到达状态C时,象素点1和象素点2还是表示为记录了目标的图像信息的象素点,经历“膨胀”再“收缩”的过程,可以去除目标中的微小空隙。因此,可以利用先“膨胀”再“收缩”,即可去除图像的目标中的微小空隙。
如图3所示,状态C经过“收缩”得到状态D,记录了目标的图像信息的象素点仅剩下象素点1,而在状态C中记录了物体信息的象素点2和象素点3在状态D中均没有记录目标的图像信息。如图4所示,状态D经过“膨胀”得到状态E,将状态E与状态C对比可以看出,在状态C中记录了目标的图像信息的象素点经过先“收缩”再“膨胀”后,变成了没有记录目标的图像信息的象素点。因此,经过,可以利用先“收缩”再“膨胀”的方法消除背景中的微小杂点。
目前,3*3象素点矩阵的空间滤波通常将图像上各象素点的图像信息存储在存储器中,当需要处理该图像时,通过软件读取图像中各象素点的信息以及以该象素点为中心的周围8个相关象素点的信息,在通过软件进行“膨胀”或“收缩”处理,以消除背景中的杂点或清除图像的目标中的微小空隙,以使目标和背景更为清晰。由于,利用软件从存储器中读取数据必须一个一个读取,即一个脉冲只能读取一个数据,那么按照上述方式对一张图像先进行“收缩”再“膨胀”消除背景中的杂点或先进行“膨胀”再“收缩”消除图像的目标中的空隙则需要太长的时间。例如:一张1024*768的影像,共需要1024*768*3*3*2个读取步骤,因此,对于象素集成度高的图像,空间滤波处理的速度相当慢。
发明内容
鉴于此,有必要提供一种可快速实现空间滤波的图像处理装置。
还有必要提供一种可快速实现空间滤波的图像处理方法。
一种图像处理装置,包括读取单元、多个依次连接的矩阵单元、选择单 元以及控制单元,所述读取单元用于读取图像的象素点的图像信息,所述象素点的图像信息依次经过所述多个依次连接的矩阵单元进行膨胀或收缩处理,所述多个依次连接的矩阵单元将膨胀或收缩处理后的象素点的图像信息分别传出,所述控制单元用于输出控制信号,所述控制信号用于控制所述多个依次连接的矩阵单元中的各个矩阵单元执行膨胀处理还是收缩处理,所述选择单元与所述多个依次连接的矩阵单元中的各个矩阵单元的输出端和所述控制单元均相连,用于根据所述控制信号选择性地输出所述多个依次连接的矩阵单元中的多个矩阵单元的处理结果。
一种图像处理方法,包括如下步骤:依次读取多个象素点的图像信息;所述多个象素点的图像信息经过一系列延时后同时输出;对所述同时输出的多个象素点的图像信息进行连续膨胀或收缩处理;将每次膨胀或收缩处理后的结果分别传出;选择性地输出上述传出的处理结果。
上述图像处理装置和方法通过多个依次连接的矩阵单元对象素点的图像信息进行多次膨胀或收缩处理,以实现图像的一次读取和多次处理,减少读取步骤,节省了读取时间,从而提高图像处理速度。
具体实施方式
请参阅图5,其为一较佳实施方式的图像处理装置100的功能模块图,图象处理装置100用于对图像进行空间滤波处理。
图像处理装置100包括读取单元10、多个依次连接的矩阵单元20、与各个 矩阵单元20的输出端均相连接的选择单元30以及与各矩阵单元20的输入端和选择单元30的输入端均相连的控制单元50。读取单元10用于逐行读取感光元件中各象素点的图像信息。矩阵单元20用于对读取单元10读取的象素点进行“膨胀”或“收缩”处理,并将处理后的结果传出。选择单元30用于选择第几个矩阵单元20的传出作为图形处理装置100的输出,以确定进行图像“膨胀”或“收缩”处理的次数,进而确定消除象素点半径N(即包含杂点所在象素点在内的N*N象素点矩阵的边长N)为多大的杂点或空隙。控制单元50用于输出控制信号至各矩阵单元20和选择单元30,以控制矩阵单元20进行“膨胀”或“收缩”,以及控制选择单元30进行选择。
控制信号为一段二进制的代码,其分为高位段代码和低位段代码,高位段代码用于控制选择单元30进行选择,低位段代码分别用于控制各个矩阵单元20进行“膨胀”或“收缩”,且每一位低位段代码控制一个矩阵单元20。代码的位数可以根据矩阵单元20的数量进行确定,如矩阵单元20为8个,则控制代码的位数为11位,其格式为SSS,XXXX XXXX,X代表用于控制矩阵单元20的低位代码,例如当X为1时,接收该为1的控制信号的矩阵单元20执行“膨胀”,反之,则执行“收缩”;S则代表用于控制选择单元30的高位代码。如控制信号为“011 1001XXXX”时,第一个和第四个矩阵单元20(与读取单元10连接的矩阵单元20为第一个,以下依次为第二、第三......第N个)执行“膨胀”处理,第二和第三个矩阵单元20执行“收缩”处理。选择单元30选择第4个矩阵单元20的传出L(3)作为图像处理装置100的输出,该输出表示对图像分别进行了两次“膨胀”和两次“收缩”。若对一张1024*768的图像进行上述两次“膨胀”和两次“收缩”,采用传统方法则需要(1024-2)*(768-2)*3*3*4个读取步骤,而采用图像处理装置100进行上述两次“膨胀”和两次“收缩”,只需要(1024-2)*(768-2)*3*3个读取步骤,因此,采用图像处理装置100可以大大提高空间滤波处理的速度。
请参阅图6,矩阵单元20包括延迟单元21以及执行“与运算”或者“或运算”的处理单元23。延迟单元23用于延迟读取单元10读取的象素点的图像信息,延迟单元21包括多个依次连接的寄存单元210,寄存单元210用于寄存读取单元10读取的一个象素点的图像信息(以下象素点的“图像信息”用“PII”表示),并且每经过一个时钟信号寄存单元210都更新一次,即寄存单元210 依次将自己寄存的象素点的PII传输至下一个寄存单元210,并更新下一个寄存单元210,而第一个寄存单元210则用读取单元10在这一时钟信号读取的象素点的PII进行更新。
处理单元23包括膨胀处理模块230、收缩处理模块231以及检测模块233。其中膨胀处理模块230对处理单元20读取的多个象素点的PII进行“或运算”。收缩处理模块231对处理单元20读取的多个象素点的PII进行“与运算”。检测模块233用于检测控制单元50发送来的控制信号,以确定让膨胀处理模块230进行工作还是让收缩处理模块231进行工作,如当检测模块233检测到控制信号为0时,让收缩处理模块231进行工作,反之,让膨胀处理模块230进行工作。
若读取单元10读取如图3所示的状态C中12*7的图像,且欲消除状态C中象素点半径小于3的杂点,对应的,矩阵单元20至少应具有26个寄存单元210(即两行加两个)。图3所示状态C的12*7图像中各个象素点的PII从第一行的第一个象素点(图3左上角)开始,从左向右,从上到下依次传递给二十六个寄存单元210(直接与读取单元10相连的寄存单元210为第一个,后面的依次为第二个、第三个等)。处理单元23与读取单元10的输出端、第一、第二、第十二、第十三、第十四、第二十四、第二十五、第二十六个寄存单元210的输出端(共八个寄存单元210的输出端)相连。
当读取单元10读取的如图3状态C所示的图像的第一行的第一个象素点的PII传递到延迟单元21的第二十六个寄存单元210中时,第二十五、第二十四个寄存单元210存着读取单元10读取的第一行中的第二和第三个象素点的PII;第十二、第十三、第十四个寄存单元210存着第二行前三个象素点的PII;第一、第二个寄存单元210存着第三行前两个象素点的PII;第三行第三个象素点的PII在读取单元10中即将输出。上述的这九个象素点刚好组成第一个3*3象素点矩阵,下一个时钟信号到来时,处理单元23同时得到这九个象素点的PII,并通过这九个图像信息计算出以第二行第二个象素点为中心的第一个象素点矩阵。再来一个时钟信号时,上述的九个输出端的输出变为以第二行第三个象素点为中心的第二个像素点矩阵。如此,每一个时钟信号的到来可以完成第一个象素点矩阵即同时完成九个象素点的PII的读取,相比现有技术中只能逐个读取感光元件中象素点的PII的软件方法而言,大大增加了空间滤波的速度。
图6所示的实施方式中,读取单元10也相当于一个寄存单元210,用来存储当前象素点矩阵的最后一个象素点的PII,所以处理单元23有一个象素点的PII是从读取单元10上获得的,其他八个象素点的PII从延迟单元21的八个寄存单元210的输出端获得。其他实施方式中,若延迟单元21中的寄存单元210的数量大于或等于二十六个时(即大于或等于图像中两行加两个的象素点的个数),处理单元23则可以直接从延迟单元21的九个寄存单元210的输出端获得象素点的PII。其中,每个象素点的PII为一个二进制数据,本实施方式中,每个寄存单元为一个一位的D触发器。
可以看出,图5所示的实施方式中从读取单元10输出的图像信息不立刻被读取,而是延迟二十六个脉冲后(即图像中两行加两个的象素点的个数),再开始读取数据。换句话说,图像中的第三行第三个象素点的图像信息输出时开始第一次读取,因为多个寄存单元210上的PII是同时输出的,所以处理单元23可以同时读取到构成第一个象素点矩阵的九个被延迟的象素点的PII。
由于图像往往不只是图3状态C所示的12*7的分辨率,如1024*768,若仿照图6所示的矩阵单元20的技术方案,则沿迟单元21中至少需要1024*2+2=2050个寄存单元210。如此之多的寄存单元210会使得矩阵单元20的元件数量太多,体积也将较大。为此,有必要提供一种元件数量较少的延迟单元21。
请参阅图7,其为另一实施方式的矩阵单元40的结构示意图,其相对于图6所示的矩阵单元20的区别在于,延迟单元41采用第一存储单元410和第二存储单元412代替图6中的部分寄存单元210。读取单元10的输出端、第一存储单元410、第二存储单元412以及处理单元43依次串联;读取单元10的输出端还进一步串联有四个寄存单元210;第一存储单元410的输出端串联有三个寄存单元210;第二存储单元412的输出端串联有两个寄存单元210。处理单元43分别与连接于读取单元10的输出端的后三个寄存单元210、连接于第一存储单元410输出端的三个寄存单元210、连接于第二存储单元412输出端的二个寄存单元210、第二存储单元412的输出端(共九个)相连,以同时获得该九个输出端的九个象素点的PII。
为了方便理解,下面仍以读取单元10读取图3所示状态C的图像为例进行说明。第一存储单元410和第二存储单元412分别用于存储图像中的一行象素 点的PII,即12个象素点的PII。由于前一个象素点的PII的输出到存储器的存储动作需要一个脉冲的时间,即需要一个寄存单元210的延迟时间,所以可存储12个象素点的PII的第一存储单元410或第二存储单元412便相当于12+1=13个延迟,即等于13个寄存单元210。从而使得第一存储单元410的输出要比读取单元10的输出晚一个脉冲时间,第二存储单元412的输出又要比第一存储单元410的输出晚一个脉冲时间,所以图7中的第一存储单元410的输出端比第二存储单元412多连接一个寄存单元210,以存储第一存储单元410比第二存储单元412早输出的一个象素点的PII。同理,读取单元10的输出端也需要比第一存储单元410的输出端多连接一个寄存单元210。如此可确保一个象素点矩阵的九个象素点的PII能同时在各个输出端输出,处理单元43即可同时获得九个象素点的PII。
上述图像处理装置100仅仅是以九个象素点作为一个象素点矩阵的空间滤波进行举例,其还可以延伸到十六个等其他数量的象素点作为一个象素矩阵的情况,只需要按照上述实施方式的技术思想对应变更寄存单元210的数量与排列方式以及存储器的个数和容量即可。其原理都是将读取单元10的输出端象素点的PII进行延迟,以实现后续的多个象素点的PII同时读取,从而减少空间过滤的时间,使得图像处理速度大幅度提高。另外,图像处理装置100设置多个矩阵单元20、40,并分别设置各矩阵单元20、40进行“膨胀”或“收缩”操作,通过选择单元30选择进行“膨胀”和“收缩”的次数,使图像处理装置100一次即可完成数次“膨胀”和“收缩”操作,大大提高图像空间滤波的速度。
请参阅图8,一种图像处理方法,包括如下步骤:
步骤501,依次读取多个象素点的PII并输出。
步骤503,所述多个象素点的PII经过一系列延时后同时输出;
步骤505,对所述同时输出的多个象素点的PII进行连续膨胀或收缩处理。所述矩阵单元能同时处理多个象素点的图像信息,且同时处理的多个象素点属于同一象素点矩阵。所述象素点矩阵由图像中某一象素点以及以该象素点为中心的周围象素点组成,如3*3象素点矩阵。
步骤507,将膨胀或收缩处理的结果分别传出。
步骤509,选择性地输出上述传出的处理结果。
上述图像处理方法通过连续对多个象素点的PII进行“膨胀”或“收缩”处理后分别传出,并选择性输出上述传出的处理结果,如此即可实现图像的一次读取和多次处理,减少读取步骤,节省了重复读取的时间,进而提高了图像处理的速度。