图像处理设备及连通域标记方法、系统、装置、存储介质与流程

文档序号:14348262阅读:211来源:国知局
图像处理设备及连通域标记方法、系统、装置、存储介质与流程

本发明涉及图像处理技术领域,特别涉及一种图像处理设备及连通域标记方法、系统、装置、存储介质。



背景技术:

连通域标记算法是图像处理中最常用的算法之一,在vr(即virtualreality,虚拟现实)等领域具有非常普遍的应用。

传统的连通域标记算法分为两类,每一类都是较为明显的缺点。

其中,第一类连通域标记算法是每一个点的8邻域都用一个数组记录此8邻域中mark值的连接情况,如第10个像素点中,mark值233与mark值251是连通的;第100个像素点,mark值233与mark值1、mark值14是连通的,最终结果将mark值1,14,233,251连接在一起,这种算法的最大缺点是需要占用大量内存,一个像素点就要申请一个数组来记录mark值连通情况,如一幅图像总共有imax*jmax个像素点点,则总共需要申请内存大小为:整形imax*jmax*9的内存(9为记录该点在内8领域mark值连通情况)。此算法需要大量内存,这是其最大缺点。

而第二类连通域标记算法则是每一个像素点判断mark值连接情况后,如mark值233与mark值255连通,此时,立即全域搜索,将mark值233点的mark值改为255,这样就相当于对前面的数据进行了修改,此算法申请内存较小,但是每次都全域更新,将导致算法速度较慢。

综上所述可以看出,如何减少连通域标记过程中所占用的内存,并提高运算速度是目前亟待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种图像处理设备及连通域标记方法、系统、装置、存储介质,能够有效地减少连通域标记过程中所占用的内存,并提高运算速度。其具体方案如下:

第一方面,本发明公开了一种图像连通域标记方法,包括:

启动对二值化图像的逐点扫描操作;

在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值,并记录此种mark值以及与此种mark值对应的mark_id号;若所述邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值;其中,所述目标前景像素点为所述二值化图像中的任一前景像素点;

在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

可选的,所述启动对二值化图像的逐点扫描操作的步骤,包括:

启动n个扫描线程,分别以所述二值化图像上的n个不同像素点为扫描起始点对所述二值化图像进行逐点扫描;其中,n为正整数。

可选的,所述为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值的步骤,包括:

从当前二值化图像中已设置的各种mark值中确定出当前最大mark值;

将当前最大mark值加1,得到所述目标前景像素点对应的mark值;

为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的mark值。

可选的,所述为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值的步骤,包括:

将与当前二值化图像中已设置的各种mark值均不相同的一种mark值确定为所述目标前景像素点对应的mark值;

为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的mark值。

可选的,所述记录此种mark值以及与此种mark值对应的mark_id号的步骤,包括:

利用第一数组记录此种mark值,以及利用第二数组记录与此种mark值对应的mark_id号。

第二方面,本发明公开了一种图像连通域标记系统,包括:

扫描启动模块,用于启动对二值化图像的逐点扫描操作;

参数设置记录模块,用于在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值,并记录此种mark值以及与此种mark值对应的mark_id号;若所述邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值;其中,所述目标前景像素点为所述二值化图像中的任一前景像素点;

id号更新模块,用于在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

第三方面,本发明公开了一种图像连通域标记装置,包括存储器和处理器;其中,所述处理器执行所述存储器中保存的图像连通域标记程序代码时实现前述公开的图像连通域标记方法。

第四方面,本发明公开了一种图像处理设备,包括前述公开的图像连通域标记装置。

可选的,所述图像处理设备,还包括:

图像采集装置,用于采集原始图像,并对所述原始图像进行二值化处理,得到二值化图像;

连通域显示装置,用于对所述图像连通域标记装置确定出的连通域进行显示处理。

第五方面,本发明公开了一种存储计算机可读程序代码的存储介质,所述计算机可读程序代码被一个或多个处理器执行以实现前述公开的图像连通域标记方法。

可见,本发明在对任一前景像素点进行扫描时,如果该前景像素点的邻域范围内所有像素点均未被设置mark值,则为该邻域范围内所有前景像素点均设置与当前被扫描前景像素点对应的一种mark值,并记录此种mark值以及与此种mark值对应的mark_id号,而如果上述邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值;在对所有像素点扫描完毕之后,把处于连通状态的不同像素点所对应的mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,这样后续便可根据mark_id号来确定连通域,

由上可见,本发明实现了对图像连通域进行标记的目的,并且,本发明只有在新的一种mark值被设置之后,才需记录此种mark值以及相应的mark_id号,这样对于mark值相同的多个像素点来说,无需记录多组与mark值连通情况相关的数据,而只需记录一个mark值以及相应的一个mark_id号即可,从而大幅减少了连通域标记过程中所占用的内存。而且,本发明只需在所有像素点完成扫描之后,统一对mark_id号进行更新即可,而无需对记录下来的数据进行频繁地更新,从而提高了整体的运算速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种图像连通域标记方法流程图;

图2为一种前景像素点的邻域范围内像素分布示意图;

图3为本发明实施例公开的一种具体的图像连通域标记方法流程图;

图4为与图2对应的mark值标记结果示意图;

图5为一种具体的数组信息记录示意图;

图6为另一种前景像素点的邻域范围内像素分布示意图;

图7为与图6对应的mark值标记结果示意图;

图8为对数组中记录的mark_id号进行更新后的信息记录示意图;

图9为对数组中记录的mark值进行更新后的信息记录示意图;

图10为本发明实施例公开的一种具体的图像连通域标记方法流程图;

图11为本发明实施例公开的一种图像连通域标记系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种图像连通域标记方法,参见图1所示,该方法包括:

步骤s11:启动对二值化图像的逐点扫描操作。

本实施例中,所述启动对二值化图像的逐点扫描操作的步骤,具体可以包括:启动n个扫描线程,分别以所述二值化图像上的n个不同像素点为扫描起始点对所述二值化图像进行逐点扫描;其中,n为正整数。

为了进一步提高图像连通域标记速度,本实施例可以同时启动多个扫描线程,与不同扫描线程对应的扫描起始点在图像位置上可以是均匀分布的像素点,例如,可以同时开启16个扫描线程,这16个扫描线程对应的16个扫描起始点分别位于二值化图像对应的九宫格的16个格点上。

另外,本实施例中,上述二值化图像具体可以是由外部设备直接输入的二值化图像,当然也可以是对当前实时采集到的rgb格式的原始图像进行二值化处理后得到的图像。

步骤s12:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值,并记录此种mark值以及与此种mark值对应的mark_id号;其中,所述目标前景像素点为所述二值化图像中的任一前景像素点。

可以理解的是,本实施例中的前景像素点是指二值化图像的前景区域中的像素点。同理,背景像素点是指二值化图像的背景区域中的像素点。

另外,上述目标前景像素点的邻域范围是指上述目标前景像素点的所有邻域像素点所包围的范围,该范围内不仅包括上述目标前景像素点的所有邻域像素点,还包括上述目标前景像素点自身。图2为一种前景像素点的邻域范围内像素分布示意图,图2中的“1”表示二值化图像中的前景像素点,“0”则表示二值化图像中的背景像素点。

本实施例中,所述记录此种mark值以及与此种mark值对应的mark_id号的步骤,具体可以包括:利用第一数组记录此种mark值,以及利用第二数组记录与此种mark值对应的mark_id号。需要说明的是,在对像素点进行扫描的过程中所记录的mark值与mark_id号之间是一一对应的。

也即,本实施例可以利用两个数组来进行信息记录,其中一个数组用来记录各种mark值,而另一数组则用来记录与每种mark值对应的mark_id号。由上可见,本发明实施例只有在新的一种mark值被设置之后,才需记录此种mark值以及相应的mark_id号,这样对于mark值相同的多个像素点来说,无需记录多组与mark值连通情况相关的数据,而只需记录一个mark值以及相应的一个mark_id号即可,从而大幅减少了连通域标记过程中所占用的内存。

步骤s13:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值。

也即,在对目标前景像素点进行扫描时,如果所述目标前景像素点的邻域范围内的所有像素点中已被设置有一种或多种mark值,本实施例可以从所述一种或多种mark值中选取出一种mark值作为目标mark值。当然,如果所述目标前景像素点的邻域范围内的所有像素点中已被设置有多种mark值,则本实施例也可以从上述多种mark值中选取出两种或两种以上的mark值,每种选取出来的mark值均称为目标mark值,例如,假设所述目标前景像素点的邻域范围内的所有像素点中已被设置有mark值a、mark值b和mark值c,则从中选取出了mark值a和mark值b这两种mark值,这样上述mark值a和mark值b均为目标mark值,接着可以为上述邻域范围内还未被设置mark值的部分像素点设置与上述mark值a相同的mark值,对于上述邻域范围内还未被设置mark值的剩下的像素点则设置与上述mark值b相同的mark值。

可以理解的是,本实施例中,如果当前正在扫描的像素点为背景像素点,则不进行mark值设置等任何处理,直接跳至扫描下一个像素点。

步骤s14:在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

在一种具体实施方式中,上述将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号的过程,具体可以包括:从所述任意多种mark_id号选取出任一种mark_id号作为目标mark_id号,然后将所述任意多种mark_id号均更新为所述目标mark_id号。

在另一种具体实施方式中,上述将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号的过程,具体可以包括:创建一个与当前所有mark_id号均不相同的一个新的mark_id号,然后将所述任意多种mark_id号均更新为上述新的mark_id号。

由上可见,本发明实施例实现了对图像连通域进行标记的目的,并且,本发明只有在新的一种mark值被设置之后,才需记录此种mark值以及相应的mark_id号,这样对于mark值相同的多个像素点来说,无需记录多组与mark值连通情况相关的数据,而只需记录一个mark值以及相应的一个mark_id号即可,从而大幅减少了连通域标记过程中所占用的内存。而且,本发明实施例只需在所有像素点完成扫描之后,统一对mark_id号进行更新即可,而无需对记录下来的数据进行频繁地更新,从而提高了整体的运算速度。

在前述实施例的基础上,本发明实施例公开了一种具体的图像连通域标记方法,参见图3所示,该方法包括:

步骤s21:启动对二值化图像的逐点扫描操作。

步骤s22:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则从当前二值化图像中已设置的各种mark值中确定出当前最大mark值;将当前最大mark值加1,得到所述目标前景像素点对应的mark值;为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的mark值,并记录此种mark值以及与此种mark值对应的mark_id号。其中,所述目标前景像素点为所述二值化图像中的任一前景像素点。

例如,假设当前二值化图像中已设置的mark值分别包括10、11、12、13、14和15,并且,当前正扫描到如图2的中间区域上的前景像素点时,由于此时该前景像素点的邻域范围内所有像素点均未被设置mark值,则可以从上述已设置的mark值中确定出当前最大mark值为15,然后将当前最大mark值进行加1处理,从而得到当前正被扫描的前景像素点对应的mark值16,进而为上述邻域范围内所有前景像素点均设置mark值16,从而得到如图4所示的标记结果。参见图5所示,在为上述邻域范围内所有前景像素点均设置mark值16之后,将上述mark值16记录在第一数组中,并在第二数组中记录与上述mark值16一一对应的mark_id号6。

步骤s23:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值。

例如,当前正扫描到如图6的中间区域上的前景像素点时,由于此时该前景像素点的邻域范围内已被设置有mark值14、mark值15和mark值16,所以此时可以从上述mark值14、mark值15和mark值16中选取出任一种mark值,比如选取出mark值14,然后为上述邻域范围内还未被设置mark值的所有像素点均设置mark值14,结果如图7所示。

步骤s24:在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

例如,根据图5、图6以及图7可知,与mark_id号为4、5和6对应的像素点是连通的,所以此时可以将上述mark_id号4、5和6均更新为有别于当前其他mark_id号的同一种mark_id号,例如均更新为4,从而得到如图8所示的id更新后结果。

另外,本实施例在对mark_id号进行更新之后,可以根据图8中更新后的第二数组对原第一数组进行相应的更新,也即令原第一数组中的mark值相应地更新为当前第二数组中记录的相应的mark_id号,具体结果如图9所示。

在前述实施例的基础上,本发明实施例公开了一种具体的图像连通域标记方法,参见图10所示,该方法包括:

步骤s31:启动对二值化图像的逐点扫描操作。

步骤s32:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则将与当前二值化图像中已设置的各种mark值均不相同的一种mark值确定为所述目标前景像素点对应的mark值;为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的mark值,并记录此种mark值以及与此种mark值对应的mark_id号。其中,所述目标前景像素点为所述二值化图像中的任一前景像素点。

例如,假设当前二值化图像中已设置的mark值分别包括10、11、12、13、14和15,并且,当前正扫描到如图2的中间区域上的前景像素点时,由于此时该前景像素点的邻域范围内所有像素点均未被设置mark值,则可以将与当前二值化图像中已设置的各种mark值均不相同的一种mark值确定为当前正被扫描的前景像素点对应的mark值,比如可以,将9确定为当前正被扫描的前景像素点对应的mark值。

步骤s33:在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值。

步骤s34:在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

关于上述各个步骤更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

相应的,本发明实施例还公开了一种图像连通域标记系统,参见图11所示,该系统包括:

扫描启动模块11,用于启动对二值化图像的逐点扫描操作;

参数设置记录模块12,用于在对目标前景像素点进行扫描时,若所述目标前景像素点的邻域范围内所有像素点均未被设置mark值,则为该邻域范围内所有前景像素点均设置与所述目标前景像素点对应的一种mark值,并记录此种mark值以及与此种mark值对应的mark_id号;若所述邻域范围内的所有像素点中已被设置有一种或多种mark值,则从所述一种或多种mark值中选取出目标mark值,并为该邻域范围内还未被设置mark值的所有像素点均设置与所述目标mark值相同的mark值;其中,所述目标前景像素点为所述二值化图像中的任一前景像素点;

id号更新模块13,用于在对所有像素点完成扫描之后,若任意多种mark_id号对应的像素点处于连通状态,则将所述任意多种mark_id号均更新为有别于当前其他mark_id号的同一种mark_id号,以便后续将对应于同一种mark_id号的所有像素点确定为同一连通域的像素点。

关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

进一步的,本发明实施例还公开了一种图像连通域标记装置,包括存储器和处理器;其中,所述处理器执行所述存储器中保存的图像连通域标记程序代码时实现前述公开的图像连通域标记方法。关于该方法更加具体的步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

进一步的,本发明实施例还公开了一种图像处理设备,包括前述公开的图像连通域标记装置。

另外,上述图像处理设备,还可以包括:

图像采集装置,用于采集原始图像,并对所述原始图像进行二值化处理,得到二值化图像;

连通域显示装置,用于对所述图像连通域标记装置确定出的连通域进行显示处理。

进一步的,本发明还公开了一种存储计算机可读程序代码的存储介质,所述计算机可读程序代码被一个或多个处理器执行以实现前述公开的图像连通域标记方法。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种图像处理设备及连通域标记方法、系统、装置、存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1