连通域检测方法、电路、设备、计算机可读存储介质与流程

文档序号:16369171发布日期:2018-12-22 08:36阅读:176来源:国知局
连通域检测方法、电路、设备、计算机可读存储介质与流程
本发明涉及图像处理
技术领域
,尤其是涉及连通域检测方法、电路、设备、计算机可读存储介质。
背景技术
计算机视觉是使用计算机和摄像设备对生物视觉的一种模拟,通过对采集的图像进行处理,以获得相应场景的三维信息,是一门关于如何运用摄像设备和计算机来获取被拍摄对象的数据与信息的技术,目前被广泛应用。连通域检测是计算机视觉的一种典型应用,例如,在bm(blockmatching,块匹配)、sgbm(semi-globalblockmatching,半全局块匹配)等针对深度图的处理过程中,均会进行连通域检测。但是,传统的连通域检测算法,处理能力受到多方面因素的限制,继而导致连通域检测算法的应用场景受限。技术实现要素:本发明提供连通域检测方法、电路、设备、计算机可读存储介质。本发明第一方面,提供一种连通域检测方法,所述方法包括:从外部存储介质的第一类地址块中读取图像数据块;其中,原始图像数据被划分为多个图像数据块,针对每个图像数据块,包括所述原始图像数据的部分行数据,且每行数据包括所述原始图像数据的部分列数据;将读取的图像数据块存储到内部存储介质的第二类地址块中;利用所述第二类地址块中存储的图像数据块进行连通域检测;其中,所述第一类地址块是所述外部存储介质的任意地址块;所述第二类地址块是所述内部存储介质的任意地址块。本发明第二方面,提供一种检测电路,所述检测电路用于:从外部存储介质的第一类地址块中读取图像数据块;其中,原始图像数据被划分为多个图像数据块,针对每个图像数据块,包括所述原始图像数据的部分行数据,且每行数据包括所述原始图像数据的部分列数据;将读取的图像数据块存储到内部存储介质的第二类地址块中;利用所述第二类地址块中存储的图像数据块进行连通域检测;其中,所述第一类地址块是所述外部存储介质的任意地址块;所述第二类地址块是所述内部存储介质的任意地址块。本发明第三方面,提供一种连通域检测设备,所述连通域检测设备包括:存储器,用于存储程序代码;检测电路,用于调用所述程序代码,当所述程序代码被执行时,实现上述连通域检测方法。本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时,实现上述连通域检测方法。基于上述技术方案,本发明实施例中,若片上缓存的存储资源有限,不会频繁从ddr读取数据,减少数据读取次数,节约大量ddr带宽,提高连通域检测性能。为了减少读取次数,也可以减少占用的片上缓存的存储资源。附图说明为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其它的附图。图1a-图1d是连通域检测的应用场景示意图;图2是一个连通域检测方法的实施例示意图;图3是另一个连通域检测方法的实施例示意图;图4是连通域检测设备的一个实施例框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。应当理解,本文中使用的术语“和/或”是指包含一个或者多个相关联的列出项目的任何或所有可能组合。尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或者,“当……时”,或者,“响应于确定”。本发明实施例中提出一种连通域检测方法,用于对图像进行连通域检测,参见图1a所示,为图像的一个示例,为了方便描述,将这个图像称为原始图像数据,原始图像数据可以是采集的,也可以是生成的,对此不做限制。在原始图像数据中,每个方格代表一个像素点,如像素点11、像素点12、像素点13等,每个像素点的取值可以包括但不限于:像素值、灰度值、rgb(redgreenblue,红绿蓝)值、disparity(差距)值等,对此不做限制,这个取值与原始图像数据有关。为了方便描述,后续以灰度值为例进行说明。参见图1a所示,原始图像数据包括16行像素点,12列像素点,在实际应用中,原始图像数据的行数远远大于16行,如原始图像数据的行数为800行,原始图像数据的列数远远大于12列,如原始图像数据的列数为1200列。为了方便描述,本应用场景下,以16行像素点,12列像素点为例进行说明。参见图1b所示,假设灰色像素点区域(如像素点11、像素点12、像素点22等组成的区域)是一个连通域,为了检测到该连通域,则可以进行如下操作:选取某个像素点a,判断像素点a的相邻像素点(如上、下、左、右)中是否存在符合要求的像素点。符合要求的像素点是指有效像素点(本文中,假设所有像素点都是有效像素点,实际应用中,可能存在无效像素点),且其灰度值与像素点a的灰度值之间的差值小于阈值(可以根据经验进行配置)。若存在符合要求的像素点,则继续判断该像素点的相邻像素点中是否存在符合要求的像素点,以此类推,直到无法查询到符合要求的像素点。这样,就可以找到灰色像素点区域的所有像素点,而这些像素点就组成一个连通域。例如,选取像素点11,相邻像素点为像素点12、像素点21,经过判断(如有效像素点的判断、阈值的判断等),像素点12是符合要求的像素点,像素点21不是符合要求的像素点。因此,继续选取像素点12,相邻像素点为像素点11、像素点13、像素点22,像素点11已进行过判断,此时不再判断,经过判断,像素点13不是符合要求的像素点,像素点22是符合要求的像素点。因此,继续选取像素点22,相邻像素点为像素点12、像素点21、像素点23、像素点32,像素点12已进行过判断,此时不再判断,经过判断,像素点21不是符合要求的像素点,像素点23和像素点32均是符合要求的像素点。因此,继续选取像素点23和像素点32,以此类推,灰色像素点区域的所有像素点均是符合要求的像素点。进一步的,还可以计算灰色像素点区域的区域面积,若这个区域面积小于阈值,就认为这个灰色像素点区域不是连通域,若这个区域面积大于阈值,就认为这个灰色像素点区域是连通域。在一个例子中,原始图像数据可以存储到ddr(doubledatarate,双倍速率同步动态随机存储器),当然,也可以将原始图像数据存储到其它存储介质,对此不做限制,后续以原始图像数据存储到ddr为例进行说明。在将原始图像数据存储到ddr时,原始图像数据是按行存储的,例如,依次存储像素点11-像素点1c的灰度值,在像素点1c的灰度值之后,依次存储像素点21-像素点2c的灰度值,在像素点2c的灰度值之后,依次存储像素点31-像素点3c的灰度值,以此类推,最后存储的是像素点gc的灰度值。为了实现连通域检测,则可以将ddr中的数据(如原始图像数据中每个像素点的灰度值)读取到片上缓存,并利用片上缓存的数据进行连通域检测。例如,若由cpu(centralprocessingunit,中央处理器)实现连通域检测,则由cpu将ddr中的数据读取到cpu的片上缓存,并利用片上缓存的数据进行连通域检测;若由检测电路实现连通域检测,则由检测电路将ddr中的数据读取到检测电路的片上缓存,并利用片上缓存的数据进行连通域检测。但是,传统的连通域检测方式,需要占用片上缓存的大量存储资源,而由于片上缓存的存储资源有限,因此,传统的连通域检测方式,处理能力受到多方面因素的限制,继而导致连通域检测方式的应用场景受到限制。例如,片上缓存的存储资源,只能存储12个像素点的灰度值,因此,cpu或者检测电路第一次读取数据时,是将ddr中的像素点11-像素点1c的灰度值读取出来,并将像素点11-像素点1c的灰度值存储到自身的片上缓存。在选取像素点11后,像素点12和像素点21是相邻像素点,由于片上缓存具有像素点12的灰度值,因此,利用像素点12的灰度值确定像素点12是符合要求的像素点。由于片上缓存没有像素点21的灰度值,因此可以将片上缓存的数据删除,并将ddr中的像素点21-像素点2c的灰度值读取出来,并将像素点21-像素点2c的灰度值存储到自身的片上缓存。这样,由于片上缓存具有像素点21的灰度值,因此,利用像素点21的灰度值确定像素点21不是符合要求的像素点。以此类推,针对选取的每个像素点执行上述操作。综上可以看出,由于片上缓存的存储资源有限,导致cpu或者检测电路需要频繁从ddr中读取数据,占用大量ddr带宽,连通域检测性能很低。为了减少读取次数,则可以增加片上缓存的存储资源,例如,为了检测出灰色像素点区域这个连通域,则可以从ddr中读取所有像素点的灰度值,这样,存储资源需要存储16*12个像素点的灰度值,即占用大量存储资源。显然,当原始图像数据的行数更多,列数更多时,则需要的存储资源更多。参见图1b所示,为了检测出灰色像素点区域这个连通域,在选取像素点12后,需要对像素点13进行判断,由于该像素点13不是符合要求的像素点,因此,像素点14-像素点1c的灰度值已经没有价值,即不需要使用像素点14-像素点1c的灰度值。同理,也不需要使用像素点29-像素点2c的灰度值、像素点34-像素点3c的灰度值、使用像素点44-像素点4c的灰度值,以此类推,对此不再赘述。显然,原始图像数据中存在大量不需要判断的像素点。针对上述发现,本发明实施例中,在将原始图像数据存储到ddr时,原始图像数据不是按行存储的,而是按图像数据块存储的。例如,假设图像数据块的大小为3行*4列,则可以将原始图像数据划分成18个图像数据块,参见图1c所示,将原始图像数据划分成图像数据块1-图像数据块18。基于此,可以依次将图像数据块1-图像数据块18存储到ddr。例如,在存储图像数据块1时,依次存储像素点11-像素点14的灰度值,在像素点14的灰度值之后,不是存储像素点15的灰度值,而是依次存储像素点21-像素点24的灰度值,在像素点24的灰度值之后,依次存储像素点31-像素点34的灰度值。这样,可以完成图像数据块1的存储。然后,存储图像数据块2,即在像素点34的灰度值之后,依次存储像素点15-像素点18的灰度值,以此类推,最终完成图像数据块1-图像数据块18的存储,最后存储的是图像数据块18。基于上述存储方式,本发明实施例中,在将ddr中的数据读取到片上缓存时,可以读取ddr的图像数据块的数据(即各像素点的灰度值),并将读取的数据存储到片上缓存。例如,参见图1c所示,为了检测出灰色像素点区域这个连通域,只需要读取图像数据块1的数据、图像数据块2的数据、图像数据块4的数据、图像数据块7的数据、图像数据块10的数据、图像数据块13的数据、图像数据块16的数据,而不用读取所有图像数据块的数据。这样,若片上缓存的存储资源有限,不会频繁从ddr中读取数据,减少数据读取次数,节约大量ddr带宽,提高连通域检测性能。而且,为了减少读取次数,也可以减少占用的片上缓存的存储资源。例如,片上缓存的存储资源只需要存储4*3*6+4个像素点的灰度值,可以显著减少占用的存储资源。综上所述,本发明实施例中,在ddr采用图像数据块(即block)的方式存储数据后,使得cpu或者检测电路的一次读取过程,可以读取更多的行数据、列数据,降低按行读取对ddr的访问次数,如一次读取3行*4列的数据。当然,当图像数据块的行数和列数为其它值时,如8行*16列,一次也可以读取8行*16列的数据,也就是一次ddr访问就可以读出8行16列的数据。以下对本发明提出的连通域检测方法进行说明,该连通域检测方法可以应用于cpu(采用软件方式实现),也可以应用于检测电路(采用硬件方式实现),对此不做限制。为了方便描述,后续以应用于检测电路为例进行说明。其中,所述检测电路可以包括但不限于:fpga(fieldprogrammablegatearray,现场可编程门阵列)芯片或者asic(applicationspecificintegratedcircuit,专用集成电路)芯片。当然,还可以为其它类型芯片,对此不做限制。在一个例子中,由于在检测电路实现连通域检测方法,因此,可以将检测电路的存储介质称为内部存储介质,并将存储原始图像数据的存储介质称为外部存储介质,这个外部存储介质不是检测电路的存储介质。其中,内部存储介质可以包括但不限于检测电路的片上缓存,而外部存储介质可以包括但不限于动态随机存储器,如上述ddr,其也可以称为检测电路的片外ddr。为了在外部存储介质(如ddr)存储原始图像数据的图像数据块,参见图2所示,本发明实施例中提出的连通域检测方法,可以包括以下步骤:步骤201,将原始图像数据划分成多个图像数据块。其中,将原始图像数据划分成多个图像数据块,包括:按照m*n(即m行*n列)的划分策略,将原始图像数据划分成多个图像数据块。其中,对于每个图像数据块,最多可以包括原始图像数据的m行数据,最多可以包括原始图像数据的n列数据。而且,m为大于等于1的整数值,n为大于等于1的整数值,m小于原始图像数据的总行数,n小于原始图像数据的总列数。例如,m和n均可以根据经验配置,对此不做限制,只要m大于等于1,小于原始图像数据的总行数,n大于等于1,小于原始图像数据的总列数即可。例如,当m为3,n为4时,则每个图像数据块,最多包括原始图像数据的3行数据,最多包括原始图像数据的4列数据,参见图1c所示,为m为3,n为4的图像数据块示例。又例如,当m为8,n为6时,则每个图像数据块,最多包括原始图像数据的8行数据,最多包括原始图像数据的6列数据。步骤202,将外部存储介质的存储空间划分成与多个图像数据块对应的多个第一类地址块(为了区分方便,可以将外部存储介质中的每个地址块称为第一类地址块),即每个图像数据块对应外部存储介质的一个第一类地址块。参见图1c所示,在将原始图像数据划分成18个图像数据块后,可以将外部存储介质的存储空间划分成18个第一类地址块。其中,第一类地址块1用于存储图像数据块1的数据,即该第一类地址块1依次存储像素点11-像素点14的灰度值,像素点21-像素点24的灰度值,像素点31-像素点34的灰度值。此外,第一类地址块2用于存储图像数据块2的数据,第一类地址块3用于存储图像数据块3的数据,以此类推,对于其它第一类地址块不再赘述。其中,由于图像数据块最大可以为m*n,因此,每个第一类地址块的大小为m*n,即可以存储m*n个像素点的灰度值。参见图1c所示,第一类地址块1-第一类地址块18可以为3*4。对于第一类地址块16-第一类地址块18来说,其大小也为3*4,虽然这些第一类地址块只存储1*4个灰度值。步骤203,将每个图像数据块存储到该图像数据块对应的第一类地址块。例如,可以将图像数据块1的数据存储到第一类地址块1,将图像数据块2的数据存储到第一类地址块2,以此类推,具体存储方式参见上述步骤。在一个例子中,由于检测电路采用图像数据块的方式,从外部存储介质的第一类地址块中读取数据,并将数据存储到内部存储介质,因此,可以将内部存储介质的存储空间划分成第二类地址块(为了区分方便,可以将内部存储介质中的每个地址块称为第二类地址块),由于图像数据块最大为m*n,因此每个第二类地址块的大小为m*n,即可以存储m*n个像素点的灰度值。其中,第二类地址块的数量为至少一个,与内部存储介质(如片上缓存)的存储资源有关,由于内部存储介质的存储资源有限,因此,内部存储介质中的第二类地址块的数量,通常小于外部存储介质中的第一类地址块的数量。例如,假设内部存储介质的存储资源只能存储48个像素点的灰度值,而每个第二类地址块的大小可以为3*4,即每个第二类地址块用于存储12个像素点的灰度值,基于此,可以将内部存储介质的存储空间划分成4个第二类地址块,这4个第二类地址块可以分别为第二类地址块1-第二类地址块4。为了将外部存储介质的第一类地址块中的数据,存储到内部存储介质的第二类地址块,则可以将每个第一类地址块映射到一个第二类地址块,即每个第一类地址块具有一个对应的第二类地址块,这样,可以将该第一类地址块的数据存储到该第二类地址块。例如,可以将第一类地址块1映射到第二类地址块1,这样,可以将第一类地址块1的数据存储到第二类地址块1。其中,在将第一类地址块映射到第二类地址块时,由于第二类地址块的数量小于第一类地址块的数量,因此,每个第二类地址块可以对应一个或者多个第一类地址块,而每个第一类地址块可以只对应一个第二类地址块。在将第一类地址块映射到第二类地址块之后,可以获取第一类地址块和第二类地址块的映射关系,并在映射表中记录第一类地址块和第二类地址块的映射关系。其中,第一类地址块和第二类地址块的映射关系可以根据经验配置,对此不做限制,在得到该映射关系后,就可以在映射表中记录该映射关系,如表1所示,为映射表的一个示例,对此映射表的内容不做限制。表1第一类地址块第二类地址块1、5、9、13、1712、6、10、14、1823、7、11、1534、8、12、164在上述应用场景下,参见图3所示,为连通域检测方法的流程图,包括:步骤301,从外部存储介质的第一类地址块中读取图像数据块。其中,原始图像数据被划分为多个图像数据块,针对每个图像数据块,包括该原始图像数据的部分行数据,且每行数据包括原始图像数据的部分列数据。其中,该第一类地址块是外部存储介质(如ddr)的任意地址块。在一个例子中,从外部存储介质的第一类地址块中读取图像数据块,包括:可以从外部存储介质的第一类地址块的起始地址开始,依次读取m*n个像素点的数据,并将读取的数据组成图像数据块。其中,该m和该n均为大于等于1的整数值,该m为图像数据块的行数,该n为图像数据块的列数。而且,该m小于原始图像数据的总行数,该n小于原始图像数据的总列数。步骤302,将读取的图像数据块存储到内部存储介质的第二类地址块中。其中,该第二类地址块是内部存储介质(如片上缓存)的任意地址块。其中,将读取的图像数据块存储到内部存储介质的第二类地址块中,包括:从映射表中确定该第一类地址块(即图像数据块所在的第一类地址块)对应的第二类地址块;将读取的该图像数据块存储到该第一类地址块对应的第二类地址块;该映射表用于记录第一类地址块和第二类地址块的映射关系。在一个例子中,将读取的图像数据块存储到该第一类地址块对应的第二类地址块,可以包括:若该第一类地址块对应的第二类地址块已经存储图像数据块,则删除该第二类地址块中存储的图像数据块,并将读取的图像数据块存储到该第二类地址块。若该第一类地址块对应的第二类地址块没有存储图像数据块,则可以直接将读取的图像数据块存储到该第二类地址块。步骤303,利用第二类地址块中存储的图像数据块进行连通域检测。其中,在利用第二类地址块中存储的图像数据块进行连通域检测之后,在对第二类地址块中存储的图像数据块中的像素点进行连通域检测时,可以确定与该像素点关联的图像数据块,并从用于存储该图像数据块的第一类地址块中读取该图像数据块,并将读取的图像数据块存储到内部存储介质的第二类地址块中,继续利用第二类地址块中存储的图像数据块进行连通域检测。在一个例子中,确定与该像素点关联的图像数据块,可以包括但不限于如下方式:若检测到当前图像数据块的最后一列数据,则可以将该最后一列数据的下一列数据所在的图像数据块,确定为与该像素点关联的图像数据块。和/或,若检测到当前图像数据块的最后一行数据,则可以将该最后一行数据的下一行数据所在的图像数据块,确定为与该像素点关联的图像数据块。在一个例子中,从用于存储该图像数据块的第一类地址块中读取该图像数据块,可以包括但不限于如下方式:在用于对像素点进行连通域检测的当前图像数据块的检测完成之后,从用于存储该图像数据块的第一类地址块中读取该图像数据块。或者,在确定出与该像素点关联的图像数据块之后,可以直接从用于存储该图像数据块的第一类地址块中读取该图像数据块。在一个例子中,按照m*n(即m行*n列)的划分策略,将原始图像数据划分成多个图像数据块后,如果最下边的图像数据块和/或最右边的图像数据块超出边界(即原始图像数据的边界),也就是说,可能会存在一部分无效数据。基于此,在连通域检测的过程中,这部分无效数据会根据图像的尺寸进行判断,不参与连通域检测。具体的,在比较过程中,会记录当前的比较位置,并当该位置与图像的尺寸进行比较,从而不能超出图像的边界。例如,参见图1a和图1b所示,原始图像数据包括16行像素点,12列像素点,可以将原始图像数据划分成图1c所示的18个图像数据块。由于每个图像数据块为3行*4列,因此,实际上,图像数据块16-图像数据块18还有两行数据,参见图1d所示,这两行数据均用w表示,即所有w均为无效数据,通过使用原始图像数据的尺寸(size),就可以识别出这些无效数据。以下结合图1c所示的应用场景,对上述步骤301-步骤303进行说明。参见图1c所示,假设灰色像素点区域(如像素点11、像素点12、像素点22等组成的区域)是一个连通域,为了检测到连通域,可以进行如下操作:从外部存储介质的第一类地址块1中读取图像数据块1,图像数据块1包括原始图像数据的3行数据,且每行数据包括原始图像数据的4列数据。具体的,可以从第一类地址块1的起始地址开始,依次读取3*4个像素点的数据,并将这些数据组成图像数据块1。由于第一类地址块1依次存储像素点11-像素点14的灰度值,像素点21-像素点24的灰度值,像素点31-像素点34的灰度值,因此,从第一类地址块1的起始地址开始读取3*4个像素点的数据时,可以读取到上述像素点的灰度值,并将这些灰度值组成图像数据块1。通过查询表1,确定第一类地址块1对应第二类地址块1,因此,可以将图像数据块1存储到第二类地址块1中。由于第二类地址块1当前没有存储图像数据块,因此,可以直接将图像数据块1存储到第二类地址块1中。进一步的,由于图像数据块1的大小为3行*4列,而第二类地址块1的大小也为3行*4列,因此,该第二类地址块1能够存储该图像数据块1。然后,利用第二类地址块1中存储的图像数据块1进行连通域检测。具体的,选取像素点11,相邻像素点为像素点12、像素点21,由于图像数据块1存在像素点12、像素点21,因此不再从外部存储介质读取新的图像数据块。经过判断(如有效像素点的判断、阈值判断等),像素点12是符合要求的像素点,像素点21不是符合要求的像素点。选取像素点12,相邻像素点为像素点11、像素点13、像素点22,像素点11已进行过判断,不再判断,经过判断,像素点13不是符合要求的像素点,像素点22是符合要求的像素点。然后,选取像素点22,相邻像素点为像素点12、像素点21、像素点23、像素点32,由于像素点12和像素点21已进行过判断,因此不再判断,经过判断,像素点23和像素点32均是符合要求的像素点。然后,可以选取像素点23和像素点32,以先选取像素点23,后选取像素点32为例进行说明。选取像素点23,相邻像素点为像素点13、像素点22、像素点24、像素点33,由于像素点13和像素点22已进行过判断,因此不再判断,经过判断,像素点24是符合要求的像素点,而像素点33不是符合要求的像素点。选取像素点24,相邻像素点为像素点14、像素点23、像素点25、像素点34。由于像素点24是当前图像数据块1的最后一列数据,因此,将最后一列数据的下一列数据所在的图像数据块2,确定为与像素点11关联的图像数据块。在一个例子中,在确定出与像素点11关联的图像数据块2后,可以直接从外部存储介质的第一类地址块2中读取图像数据块2。或者,在另一个例子中,在当前的图像数据块1的检测完成后,才可以从外部存储介质的第一类地址块2中读取图像数据块2。对此过程不做限制,后续以直接从第一类地址块2中读取图像数据块2为例,然后通过查询表1,确定该第一类地址块2对应的第二类地址块2,并将该图像数据块2存储到该第二类地址块2中。针对像素点24,由于相邻像素点(像素点14、像素点23、像素点25、像素点34)已经存储在内部存储介质的第二类地址块1和第二类地址块2中,因此对像素点24的相邻像素点进行判断。由于像素点23已进行过判断,因此不再判断,经过判断,像素点25是符合要求的像素点,像素点14、像素点34不是符合要求的像素点。进一步,选取像素点25后,确定像素点26是符合要求的像素点,选取像素点26后,确定像素点27是符合要求的像素点。选取像素点32,由于像素点32是当前图像数据块1的最后一行数据,因此,将下一行数据所在的图像数据块4,确定为与像素点11关联的图像数据块。然后,从第一类地址块4中读取图像数据块4,通过查询表1,确定第一类地址块4对应的第二类地址块4,将图像数据块4存储到第二类地址块4中。针对像素点32,由于像素点22已进行过判断,因此不再判断,经过判断,像素点42是符合要求的像素点。然后,选取像素点42后,确定像素点52是符合要求的像素点,选取像素点52后,确定像素点62是符合要求的像素点。选取像素点62后,确定关联的图像数据块7,并从第一类地址块7中读取图像数据块7,通过查询表1,确定该第一类地址块7对应的第二类地址块3,并将图像数据块7存储到第二类地址块3中。针对像素点62,经过判断,像素点72是符合要求的像素点。然后,选取像素点72后,确定像素点82是符合要求的像素点,选取像素点82后,确定像素点92是符合要求的像素点。选取像素点92后,确定关联的图像数据块10,并从第一类地址块10中读取图像数据块10,通过查询表1,确定第一类地址块10对应的第二类地址块2,删除第二类地址块2中存储的图像数据块2,并将图像数据块10存储到第二类地址块2中。针对像素点92,经过判断,像素点a2是符合要求的像素点。以此类推,像素点b2、像素点c2、像素点d2、像素点e2、像素点f2、像素点g2、像素点g3也是符合要求的像素点,对此判断过程不再赘述。综上所述,灰色像素点区域的所有像素点均是符合要求的像素点,然后,基于灰色像素点区域的区域面积,确定这个灰色像素点区域是连通域。在上述实施例中,利用第二类地址块中存储的图像数据块进行连通域检测,包括:在对第二类地址块中存储的图像数据块中的第一像素点进行连通域检测时,可以从该图像数据块中选取该第一像素点关联的第二像素点;若存在该第二像素点的状态信息,则可以根据该第二像素点的状态信息进行连通域检测。其中,该状态信息可以用于指示第二像素点是否进行过连通域检测,而且,该状态信息可以包括未进行连通域检测;或已进行连通域检测,且检测结果为不连通;或已进行连通域检测,且检测结果为连通。进一步的,根据该第二像素点的状态信息进行连通域检测,包括:若该状态信息为未进行连通域检测,则可以检测第二像素点与第一像素点是否属于同一个连通域,并根据检测结果更新该第二像素点的状态信息。若该状态信息为已进行连通域检测,且检测结果为不连通,则可以确定第二像素点和第一像素点不属于同一个连通域。若该状态信息为已进行连通域检测,且检测结果为连通,则可以确定第二像素点和第一像素点属于同一个连通域,也就是说,第二像素点已进行了连通域检测,不必再重复进行连通域检测。在一个例子中,从该图像数据块中选取该第一像素点关联的第二像素点之后,若不存在该第二像素点的状态信息,则可以检测第二像素点与第一像素点是否属于同一个连通域,并根据检测结果更新第二像素点的状态信息。在一个例子中,在从外部存储介质的第一类地址块中读取图像数据块时,还可以从外部存储介质中读取该图像数据块中的每个像素点对应的状态信息,并将读取的状态信息存储到内部存储介质的寄存器中。基于此,则检测电路可以从内部存储介质的寄存器中,获取到第二像素点的状态信息。进一步的,在将读取的状态信息存储到内部存储介质的寄存器中后,在使用图像数据块中的像素点进行连通域检测后,还可以确定该像素点对应的状态信息,并在寄存器中更新该像素点对应的状态信息;然后,可以将寄存器中的所有状态信息更新到外部存储介质,如外部存储介质的寄存器中。以下结合图1c所示的应用场景,对上述状态信息的相关过程进行说明。为了降低重复计算次数,可以为每个像素点记录状态信息,如使用2个比特表示像素点的状态信息。例如,00表示像素点的状态信息是未进行连通域检测,01表示像素点的状态信息是已进行连通域检测,且检测结果为不连通,10表示像素点的状态信息是已进行连通域检测,且检测结果为连通。为了记录像素点的状态信息,外部存储介质可以包括寄存器,这个寄存器用于记录所有像素点的状态信息。例如,当像素点数量为16*12时,寄存器包括16*12*2个比特,这些比特依次记录了每个图像数据块中各像素点的状态信息。例如,第1、2个比特用于记录像素点11的状态信息,第3、4个比特用于记录像素点12的状态信息,第5、6个比特用于记录像素点13的状态信息,第7、8个比特用于记录像素点14的状态信息,第9、10个比特用于记录像素点21的状态信息(而不是记录像素点15的状态信息),以此类推。为了记录像素点的状态信息,内部存储介质也可以包括寄存器,该寄存器用于记录所有像素点的状态信息,也可以记录部分像素点的状态信息。考虑到内部存储介质的存储资源有限,因此,该寄存器用于记录部分像素点的状态信息,例如,内部存储介质包括4个第二类地址块,每个第二类地址块的大小为3*4时,则寄存器包括3*4*4*2个比特,这些比特依次记录了每个第二类地址块的图像数据块中各像素点的状态信息。例如,第1、2个比特用于记录第二类地址块1的第一个像素点的状态信息,第3、4个比特用于记录第二类地址块1的第二个像素点的状态信息,以此类推,第25、26个比特用于记录第二类地址块2的第一个像素点的状态信息,以此类推,不再赘述。在初始状态下,外部存储介质的寄存器的所有比特为0,表示所有像素点的状态信息是未进行连通域检测。内部存储介质的寄存器的所有比特为0,表示第二类地址块1-4中存储的所有像素点的状态信息是未进行连通域检测。参见图1c所示,假设灰色像素点区域(如像素点11、像素点12、像素点22等组成的区域)是一个连通域,为了检测到连通域,可以进行如下操作:从第一类地址块1中读取图像数据块1,并从外部存储介质的寄存器中读取图像数据块1对应的状态信息,例如,外部存储介质的寄存器的第1-24个比特。然后,将图像数据块1存储到第二类地址块1中,并将读取的状态信息存储到内部存储介质的寄存器的第1-24个比特,即第1-24个比特均为0。参见表2所示,为内部存储介质的寄存器的示例,第1-24个比特为第二类地址块1中图像数据块的状态信息,寄存器的第25-48个比特为第二类地址块2中图像数据块的状态信息,寄存器的第49-72个比特为第二类地址块3中图像数据块的状态信息,寄存器的第73-96个比特为第二类地址块4中图像数据块的状态信息。初始状态下,这96个比特均为空(没有值),在将图像数据块1对应的24个比特记录到寄存器后,如表2所示,第1-24个比特为0。表2000000000000000000000000在选取像素点11时,像素点12是符合要求的像素点,像素点21不是符合要求的像素点,因此,将像素点11、像素点12的状态信息修改为已进行连通域检测,且检测结果为连通,并将像素点21的状态信息修改为已进行连通域检测,且检测结果为不连通,也就是说,将像素点11对应的第1、2个比特修改为10,将像素点12对应的第3、4个比特修改为10,将像素点21对应的第9、10个比特修改为01,参见表3所示,为修改后的状态信息示例。表3101000000100000000000000在选取像素点12时,像素点12关联的像素点(相邻像素点)为像素点11、像素点13、像素点22。通过查询表3,确定像素点11对应的状态信息为10(即已进行连通域检测,且检测结果为连通),不再对像素点11进行判断,确定像素点12与像素点11属于同一个连通域(只是初步确定,最终还需要根据面积等因素,确定是否真的是连通域)。通过查询表3,确定像素点13对应的状态信息为00(即未进行连通域检测),检测像素点13与像素点11是否属于同一个连通域,由于像素点13不是符合要求的像素点,因此,像素点13的状态信息是已进行连通域检测,且检测结果为不连通,将像素点13对应的第5、6个比特修改为01。此外,由于像素点22是符合要求的像素点,即像素点22的状态信息是已进行连通域检测,且检测结果为连通,将像素点22对应的第11、12个比特修改为10,参见表4所示,为修改后的状态信息示例。表4101001000110000000000000在选取像素点22时,与像素点22关联的像素点为像素点12、像素点21、像素点23、像素点32,通过查询表4,确定像素点12对应的状态信息为10,即已进行连通域检测,且检测结果为连通,并确定像素点21对应的状态信息为01,即已进行连通域检测,且检测结果为不连通。此外,由于像素点23对应的状态信息为00,因此,可以对像素点23进行连通域检测,确定像素点23是符合要求的像素点,由于像素点32对应的状态信息为00,因此,可以对像素点32进行连通域检测,确定像素点32是符合要求的像素点。然后,可以将像素点23对应的第13、14个比特修改为10,将像素点32对应的第19、20个比特修改为10,参见表5所示,为修改后的状态信息示例。表5101001000110100000100000以此类推,在每次进行连通域检测时,可以查询像素点的状态信息,若该状态信息是01或者10,则不再对该像素点进行连通域检测,若该状态信息是00,则对该像素点进行连通域检测。在对该像素点进行连通域检测后,还可以根据检测结果更新该像素点的状态信息,如将00更新为01或者10。在对图像数据块1中各像素点进行检测后,得到的状态信息参见表6所示。此外,在从第一类地址块2中读取图像数据块2后,还可以从外部存储介质的寄存器中读取图像数据块2对应的24个比特,将图像数据块2对应的24个比特记录到内部存储介质的寄存器,如表7所示,第25-48个比特为0。表6101001010110101001100101表7101001010110101001100101000000000000000000000000在对图像数据块2中各像素点进行检测后,得到的状态信息可以参见表8所示。在从第一类地址块4中读取图像数据块4后,从外部存储介质的寄存器中读取图像数据块4对应的24个比特,将图像数据块4对应的24个比特记录到内部存储介质的寄存器中,如表9所示,即第73-96个比特为0。表8101001010110101001100101010101001010100101010100表9在对图像数据块4中各像素点进行检测后,得到的状态信息参见表10所示。在从第一类地址块7中读取图像数据块7后,从外部存储介质的寄存器中读取图像数据块7对应的24个比特,将图像数据块7对应的24个比特记录到内部存储介质的寄存器中,如表11所示,即第49-72个比特为0。表10表11在对图像数据块7中各像素点进行检测后,得到的状态信息参见表12所示。在从第一类地址块10中读取图像数据块10后,从外部存储介质的寄存器中读取图像数据块10对应的24个比特,将图像数据块10对应的24个比特记录到内部存储介质的寄存器中。由于这24个比特记录到寄存器的第25-48个比特,而第25-48个比特已经有图像数据块2的状态信息,因此,将第25-48个比特的状态信息“010101001010100101010100”更新到外部存储介质的寄存器,即将外部存储介质的寄存器的第25-48个比特(是图像数据块2对应的状态信息)更新为“010101001010100101010100”。然后,将内部存储介质的寄存器的第25-48个比特更新为图像数据块10对应的24个0,如表13所示。表12表13以此类推,对于之后的状态信息更新过程不再赘述。从上述实施例中可以看出,内部存储介质的寄存器中只存储最后4个图像数据块对应的状态信息,对于这4个图像数据块的连通域检测,可以基于状态信息(如00、01、10等)分析连通域检测结果,从而可以避免多次重复计算,减少计算次数。在连通域检测完成后,内部存储介质的寄存器已经存储最后4个图像数据块的状态信息,然后,可以从外部存储介质的寄存器中读取其它图像数据块的状态信息,并利用所有状态信息分析出连通域。例如,若依次对图像数据块1、图像数据块2、图像数据块4、图像数据块7、图像数据块10、图像数据块13、图像数据块16进行连通域检测,在连通域检测完成后,内部存储介质的寄存器可以存储图像数据块7、图像数据块10、图像数据块13、图像数据块16的状态信息,因此,可以从外部存储介质的寄存器中读取图像数据块1、图像数据块2、图像数据块4的状态信息,这样,就可以基于图像数据块1、图像数据块2、图像数据块4、图像数据块7、图像数据块10、图像数据块13、图像数据块16的状态信息,分析出连通域,对此过程不再赘述。在连通域检测完成后,还可以将内部存储介质的寄存器中存储的所有状态信息,更新到外部存储介质的寄存器中,对此更新过程不再赘述。基于与上述方法同样的发明构思,本发明实施例中还提供一种检测电路,用于:从外部存储介质的第一类地址块中读取图像数据块;其中,原始图像数据被划分为多个图像数据块,针对每个图像数据块,包括所述原始图像数据的部分行数据,且每行数据包括所述原始图像数据的部分列数据;将读取的图像数据块存储到内部存储介质的第二类地址块中;利用所述第二类地址块中存储的图像数据块进行连通域检测;所述第一类地址块是所述外部存储介质的任意地址块;所述第二类地址块是所述内部存储介质的任意地址块。所述检测电路在利用所述第二类地址块中存储的图像数据块进行连通域检测之后还用于:在对所述第二类地址块中存储的图像数据块中的像素点进行连通域检测时,确定与所述像素点关联的图像数据块;从用于存储所述图像数据块的第一类地址块中读取所述图像数据块,并将读取的图像数据块存储到内部存储介质的第二类地址块中。所述检测电路在确定与所述像素点关联的图像数据块时具体用于:若检测到当前图像数据块的最后一列数据,将最后一列数据的下一列数据所在的图像数据块,确定为与所述像素点关联的图像数据块;和/或,若检测到当前图像数据块的最后一行数据,将最后一行数据的下一行数据所在的图像数据块,确定为与所述像素点关联的图像数据块。所述检测电路在从用于存储所述图像数据块的第一类地址块中读取所述图像数据块时具体用于:在用于对所述像素点进行连通域检测的当前图像数据块的检测完成之后,从用于存储所述图像数据块的第一类地址块中读取所述图像数据块。所述检测电路在从外部存储介质的第一类地址块中读取图像数据块时具体用于:从外部存储介质的第一类地址块的起始地址开始,依次读取m*n个像素点的数据,并将读取的数据组成所述图像数据块;其中,m和n为大于等于1的整数值,m为所述图像数据块的行数,n为所述图像数据块的列数。所述检测电路还用于:将所述原始图像数据划分成多个图像数据块,并将所述外部存储介质的存储空间划分成与所述多个图像数据块对应的多个第一类地址块;将每个图像数据块存储到该图像数据块对应的第一类地址块。所述检测电路在将读取的图像数据块存储到内部存储介质的第二类地址块中时具体用于:从映射表中确定所述第一类地址块对应的第二类地址块;将读取的图像数据块存储到所述第一类地址块对应的第二类地址块;其中,所述映射表用于记录第一类地址块和第二类地址块的映射关系。所述检测电路在利用所述第二类地址块中存储的图像数据块进行连通域检测时具体用于:在对所述第二类地址块中存储的图像数据块中的第一像素点进行连通域检测时,从所述图像数据块中选取所述第一像素点关联的第二像素点;若存在所述第二像素点的状态信息,则根据所述第二像素点的状态信息进行连通域检测;其中,所述状态信息用于指示所述第二像素点是否进行过连通域检测。所述检测电路在根据所述第二像素点的状态信息进行连通域检测时具体用于:若所述状态信息为未进行连通域检测,则检测所述第二像素点与所述第一像素点是否属于同一个连通域,根据检测结果更新第二像素点的状态信息;若所述状态信息为已进行连通域检测,且检测结果为不连通,则确定所述第二像素点和所述第一像素点不属于同一个连通域;若所述状态信息为已进行连通域检测,且检测结果为连通,则确定所述第二像素点和所述第一像素点属于同一个连通域。所述检测电路在选取与所述第一像素点关联的第二像素点之后还用于:若不存在所述第二像素点的状态信息,则检测所述第二像素点与所述第一像素点是否属于同一个连通域,根据检测结果更新第二像素点的状态信息。所述检测电路还用于:在从外部存储介质的第一类地址块中读取图像数据块时,从所述外部存储介质中读取所述图像数据块中的每个像素点对应的状态信息;将读取的状态信息存储到所述内部存储介质的寄存器中;所述检测电路在将读取的状态信息存储到所述内部存储介质的寄存器中之后还用于,在使用所述图像数据块中的像素点进行连通域检测后,确定该像素点对应的状态信息,并在所述寄存器中更新该像素点对应的状态信息;将所述寄存器中的所有状态信息更新到所述外部存储介质。所述检测电路包括:fpga芯片或者asic芯片。基于与上述方法同样的发明构思,本发明实施例中还提供一种连通域检测设备,如图4所示,所述连通域检测设备包括存储器和检测电路(如fpga芯片或者asic芯片):存储器,用于存储程序代码;检测电路,用于调用所述程序代码,当所述程序代码被执行时,实现上述连通域检测方法。基于与上述方法同样的发明构思,本发明实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时,实现上述连通域检测方法。上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本发明实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进,均应包含在本发明的权利要求范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1