发明内容
本发明解决的技术问题在于提供一种边界跟踪方法及装置,以实现在边界跟踪时不需要重复扫描,从而减少工作量。
为此,本发明解决技术问题的技术方案是:
本发明提供了一种边界跟踪方法,所述方法包括:
从待处理图像中提取边界点集合,所述边界点集合包括第一目标区域的边界点;
从所述边界点集合中选取一个边界点作为第一种子点;
循环执行第一跟踪步骤,直至满足第一结束条件;所述第一跟踪步骤包括:在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,将所述第一目标点作为更新后的第一种子点;所述第一目标条件包括:属于所述边界点集合,并且在之前执行的第一跟踪步骤中未作为第一目标点;所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第一目标条件的像素点;
将循环执行所述第一跟踪步骤时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的所述第一目标区域的边界点。
可选的,所述方法还包括:
每一次执行第一跟踪步骤时,将当前执行第一跟踪步骤时更新前的第一种子点,或者将当前执行第一跟踪步骤时更新后的第一种子点,从所述边界点集合中删除;
在所述第一种子点的邻域中查找到满足第一目标条件的像素点,包括:
在所述第一种子点的邻域中查找到满足第二目标条件的像素点,所述第二目标条件包括:属于所述边界点集合;
所述第一结束条件包括:
在所述第一种子点的邻域中未查找到满足第二目标条件的像素点。
可选的,所述边界点集合还包括第二目标区域的边界点;所述方法还包括:
获取按照顺序跟踪到的所述第二目标区域的边界点;
若所述第一目标区域的任一个边界点和所述第二目标区域的任一个边界点相邻,将所述按照顺序跟踪到的所述第一目标区域的边界点、以及所述按照顺序跟踪到的所述第二目标区域的边界点进行合并,将合并后的边界点作为按照顺序跟踪到的第三目标区域的边界点,所述第三目标区域包括所述第一目标区域和所述第二目标区域。
可选的,所述获取按照顺序跟踪到的所述第二目标区域的边界点,包括:
从所述边界点集合中选取一个边界点作为第二种子点,所述第二种子点不属于所述第一目标区域;
循环执行第二跟踪步骤,直至满足第二结束条件;所述第二跟踪步骤包括:在所述第二种子点的邻域中查找到满足第三目标条件的像素点,作为第二目标点,将所述第二目标点作为更新后的第二种子点;所述第三目标条件包括:属于所述边界点集合,并且在之前执行的第二跟踪步骤中未作为第二目标点;所述第二结束条件包括:所述第二种子点的邻域中未查找到满足第三目标条件的像素点;
将循环执行所述第二跟踪步骤时,依次查找到的第二目标点或者依次查找到的第二种子点,作为按照顺序跟踪到的所述第二目标区域的边界点。
可选的,在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,包括:
在所述第一种子点的邻域中按照预定顺序依次查找满足第一目标条件的像素点,将第一个查找到的满足第一目标条件的像素点作为所述第一目标点。
可选的,所述预定顺序包括:
8-邻域顺时针顺序、8-邻域逆时针顺序、或者先4-邻域后对角线邻域的顺序。
可选的,从所述边界点集合中选取一个边界点作为第一种子点,包括:
从所述边界点集合中,任意选取一个边界点作为第一种子点。
本发明还提供了一种边界跟踪装置,所述装置包括:提取单元、选取单元和跟踪单元;
所述提取单元,用于从待处理图像中提取边界点集合,所述边界点集合包括第一目标区域的边界点;
所述选取单元,用于从所述边界点集合中选取一个边界点作为第一种子点;
所述跟踪单元,用于循环执行第一跟踪功能,直至满足第一结束条件;所述第一跟踪功能包括:在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,将所述第一目标点作为更新后的第一种子点;所述第一目标条件包括:属于所述边界点集合,并且在之前执行的第一跟踪功能中未作为第一目标点;所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第一目标条件的像素点;
所述跟踪单元还用于,将循环执行所述第一跟踪功能时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的所述第一目标区域的边界点。
可选的,还包括:
删除单元,用于每一次执行第一跟踪功能时,将当前执行第一跟踪功能时更新前的第一种子点,或者将当前执行第一跟踪功能时更新后的第一种子点,从所述边界点集合中删除;
当在所述第一种子点的邻域中查找到满足第一目标条件的像素点时,所述跟踪单元具体用于,在所述第一种子点的邻域中查找到满足第二目标条件的像素点,所述第二目标条件包括:属于所述边界点集合;
所述第一结束条件包括:
在所述第一种子点的邻域中未查找到满足第二目标条件的像素点。
可选的,所述边界点集合还包括第二目标区域的边界点;所述装置还包括:合并单元;
所述跟踪单元,还用于获取按照顺序跟踪到的所述第二目标区域的边界点;
所述合并单元,用于若所述第一目标区域的任一个边界点和所述第二目标区域的任一个边界点相邻,将所述按照顺序跟踪到的所述第一目标区域的边界点、以及所述按照顺序跟踪到的所述第二目标区域的边界点进行合并,将合并后的边界点作为按照顺序跟踪到的第三目标区域的边界点,所述第三目标区域包括所述第一目标区域和所述第二目标区域。
可选的,当获取按照顺序跟踪到的所述第二目标区域的边界点时,所述跟踪单元具体用于:
从所述边界点集合中选取一个边界点作为第二种子点,所述第二种子点不属于所述第一目标区域;
循环执行第二跟踪功能,直至满足第二结束条件;所述第二跟踪功能包括:在所述第二种子点的邻域中查找到满足第三目标条件的像素点,作为第二目标点,将所述第二目标点作为更新后的第二种子点;所述第三目标条件包括:属于所述边界点集合,并且在之前执行的第二跟踪功能中未作为第二目标点;所述第二结束条件包括:所述第二种子点的邻域中未查找到满足第三目标条件的像素点;
将循环执行所述第二跟踪功能时,依次查找到的第二目标点或者依次查找到的第二种子点,作为按照顺序跟踪到的所述第二目标区域的边界点。
可选的,当在所述第一种子点的邻域中查找到满足第一目标条件的像素点作为第一目标点时,所述跟踪单元具体用于,在所述第一种子点的邻域中按照预定顺序依次查找满足第一目标条件的像素点,将第一个查找到的满足第一目标条件的像素点作为所述第一目标点。
可选的,所述预定顺序包括:
8-邻域顺时针顺序、8-邻域逆时针顺序、或者先4-邻域后对角线邻域的顺序。
可选的,所述选取单元具体用于,从所述边界点集合中,任意选取一个边界点作为第一种子点。
通过上述技术方案可知,本发明实施例在实现边界跟踪时,从待处理图像中提取出边界点集合,从边界点集合中选取出第一种子点。之后循环执行第一跟踪步骤,直至满足第一结束条件。其中,第一跟踪步骤用于查找第一目标区域的下一个边界点,第一结束条件用于表示已经查找到第一目标区域的所有边界点。因此,本发明实施例实际上是当未查找到第一目标区域的所有边界点时,循环执行第一跟踪步骤,从而循环查找下一个边界点,当查找到第一目标区域的所有边界点时,结束循环过程,将循环执行所述第一跟踪步骤时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的第一目标区域的边界点。可见本实施例提供的边界跟踪方式,由于是先提取边界点集合,再根据边界点集合进行边界跟踪,可以只在提取边界点集合时扫描一次,不需要重复扫描从而减少了工作量。
具体实施方式
图像可以分为目标区域和背景区域。通常情况下,目标区域包括图像的关键信息。而确定目标区域的边界则是对图像进行识别的前提,对特征描述、识别和理解等进一步的图像处理起到了重要作用。
边界跟踪技术指的是按照某一顺序,例如按照顺时针或者逆时针顺序跟踪图像中目标区域的边界点。
如图1所示的爬虫法(也称虫随法)是一种常见的边界跟踪技术。然而,由于爬虫法在有些情况下,边界跟踪结果可能会不准确,例如目标区域上的某些凸部(例如图1右下角所示的凸部)可能会被迂回过去,导致按照顺序跟踪到的边界点不能准确地反映目标区域的边界,即边界跟踪不准确。为了解决这一问题,往往需要多选一些起始点重复扫描,不仅导致工作量很大,而且即使重复扫描也可能仍不能解决边界跟踪不准确的问题。
并且,在使用爬虫法时,若图像中具有多个目标区域,对每个目标区域都需要扫描至少一次,进一步导致工作量增大,尤其是图像中具有较多的目标区域时。另外,为了使得已经完成跟踪的目标区域对下一个目标区域的确定不会产生影响,需要将已经完成跟踪的目标区域中的所有像素点(包括边界点和内部点)全部加入到背景区域中,也会导致工作量增大。
本发明实施例提供一种边界跟踪方法及装置,以实现在边界跟踪时不需要重复扫描,从而减少工作量。此外,能够提高边界跟踪的准确性。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
请参阅图2,本发明实施例提供了边界跟踪方法的一种方法实施例。本实施例的所述方法包括:
S201:从待处理图像中提取边界点集合,所述边界点集合包括第一目标区域的边界点。
在本实施例中,当获取用户输入的原始图像后,可以直接将原始图像作为待处理图像,也可以对原始图像进行图像处理,比如对原始图像的尺寸进行调整、将原始图像转换成灰度图像、对原始图像进行图像滤波等,将处理后的图像作为待处理图像。
在本实施例中,可以从待处理图像中提取所有目标区域的边界点,构成所述边界点集合;或者也可以从待处理图像中提取第一目标区域的边界点,构成所述边界点集合。
S202:从所述边界点集合中选取一个边界点第一种子点。
本实施例中选取出第一种子点,实际上是将第一种子点作为起始点,从起始点开始按顺序跟踪第一目标区域的边界点。
在选取第一种子点时,无需通过遍历选取特定的边界点,而是可以从边界点集合中任意选取一个边界点作为第一种子点,从而进一步节省了工作量。例如图3所示,边界点集合中包括第一目标区域的边界点A1、A2、A3、A4、……、A29和A30,从边界点集合中任意选取出边界点A1作为第一种子点。
S203:循环执行第一跟踪步骤,直至满足第一结束条件。
第一跟踪步骤用于查找第一目标区域的下一个边界点,第一结束条件用于表示已经查找到第一目标区域的所有边界点。因此,本步骤实际上是当未查找到第一目标区域的所有边界点时,循环执行第一跟踪步骤,从而循环查找下一个边界点,当查找到第一目标区域的所有边界点时,则结束循环。
本步骤在具体实现时,可以包括:步骤S2031、S2032和S2033。
其中,S2031:判断是否满足第一结束条件,如果是,则执行S2032,如果否,则执行S2033。S2032:此时未满足第一结束条件,因此执行第一跟踪步骤,并返回执行S2031。S2033:此时满足第一结束条件,因此结束循环过程,即执行S204。
下面分别对第一跟踪步骤和第一结束条件进行说明。
所述第一跟踪步骤包括:在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,将所述第一目标点作为更新后的第一种子点。所述第一目标条件包括:属于所述边界点集合,并且在之前执行的第一跟踪步骤中未作为第一目标点。下面通过一个具体例子加以说明。
参阅表1和图3,在S202中选取出边界点A1为第一种子点。
第1次执行第一跟踪步骤:此时并不存在之前执行的第一跟踪步骤,因此在边界点A1的邻域查找到满足第一目标条件的边界点A2作为第一目标点,将第一种子点从边界点A1更新为边界点A2。
第2次执行第一跟踪步骤:在边界点A2的邻域查找到满足第一目标条件的边界点A3作为第一目标点,将第一种子点从边界点A2更新为边界点A3。
……
第29次执行第一跟踪步骤:在边界点A29的邻域查找到满足第一目标条件的边界点A30作为第一目标点,将第一种子点从边界点A29更新为边界点A30。
第30次执行第一跟踪步骤:在边界点A30的邻域查找到满足第一目标条件的边界点A1作为第一目标点,将第一种子点从边界点A30更新为边界点A1。
通过30次循环执行第一跟踪步骤,依次查找到的第一种子点为:A1、A2、A3、A4、…、A29、A30。依次查找到的第一目标点为:A2、A3、A4、…、A29、A30、A1。
表1
所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第一目标条件的像素点。例如在表1和图3所示的例子中,在第30次执行第一跟踪步骤后,第一种子点为边界点A1,而由于边界点A2和边界点A30在之前执行的第一跟踪步骤中均做过第一目标点,因此,在边界点A1的邻域中,已经不能查找到满足第一目标条件的像素点,此时满足第一结束条件,结束循环过程,执行步骤S204。
为了进一步减少工作量并且提高边界跟踪的准确性,在第一种子点的邻域中查找第一目标点,即逐一判断邻域中的各个点是否属于边界点集合时,若遇到上一次执行第一跟踪步骤时更新前的第一种子点,则跳过该点,也就是说不需要判断该点是否属于边界点集合,而是从下一个点开始继续查找第一目标点,因此,所述第一目标条件还可以包括:不属于上一次执行第一跟踪步骤时的更新前的第一种子点。例如,在表1和图3所示的例子中,第2次执行第一跟踪步骤时,由于边界点A1为第1次执行第一跟踪步骤时更新前的第一种子点,因此在边界点A2的邻域中只能查找到边界点A3作为第一目标点,而不会将边界点A1作为第一目标点。
S204:将循环执行所述第一跟踪步骤时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的所述第一目标区域的边界点。
在结束S203的循环过程之后,既可以将循环过程中依次查找到的第一目标点作为按照顺序跟踪到的所述第一目标区域的边界点,也可以将循环过程中依次查找到的第一种子点作为按照顺序跟踪到的所述第一目标区域的边界点。例如在表1和图3所示的例子中,将依次查找到的第一目标点为:A2、A3、A4、…、A29、A30、A1作为按照顺序跟踪到的所述第一目标区域的边界点,或者将依次查找到的第一种子点:A1、A2、A3、A4、…、A29、A30作为按照顺序跟踪到的所述第一目标区域的边界点。
通过上述技术方案可知,本发明实施例在实现边界跟踪时,从待处理图像中提取出边界点集合,从边界点集合中选取出第一种子点。之后循环执行第一跟踪步骤,直至满足第一结束条件。其中,第一跟踪步骤用于查找第一目标区域的下一个边界点,第一结束条件用于表示已经查找到第一目标区域的所有边界点。因此,本发明实施例实际上是当未查找到第一目标区域的所有边界点时,循环执行第一跟踪步骤,从而循环查找下一个边界点,当查找到第一目标区域的所有边界点时,结束循环过程,将循环执行所述第一跟踪步骤时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的第一目标区域的边界点。可见本实施例提供的边界跟踪方式,由于是先提取边界点集合,再根据边界点集合进行边界跟踪,可以只在提取边界点集合时扫描一次,不需要重复扫描从而减少了工作量。
在本实施例的步骤S201中,从待处理图像中提取出边界点集合,下面说明一种可选的提取方式。
步骤S201可以包括:S2011和S2022。
S2011:确定所述待处理图像的目标区域,所述待处理图像的目标区域包括所述第一目标区域和第二目标区域。
在本实施例中,可以使用任一种能够分割出有效目标的图像分割算法,例如常用的阈值法、边缘检测以及机器学习等,从待处理图像中确定出目标区域,也就是将待处理图像中的目标区域和背景区域进行区分。具体在区分时,可以将待处理图像中的背景区域和目标区域采用不同的灰度值进行表示,例如,背景区域通过某一灰度值表示,目标区域通过与背景区域不同的、一个或多个灰度值进行表示。
其中,所述待处理图像的目标区域可以包括所述待处理图像的所有目标区域。
S2012:提取出所述待处理图像的目标区域的边界点,构成所述边界点集合。
在确定出目标区域后,可以根据目标区域的像素点之间的位置关系,提取出所述待处理图像的目标区域的所有边界点,构成所述边界点集合。其中,本实施例对所述边界点集合的具体数据形式并不加以限定,例如可以表示为链表、数组、容器等数据结构。
在提取所述边界点集合后,还可以将所述边界点集合中的边界点在所述待处理图像中标记出来,例如通过某一特定灰度值表示。
在本实施例S203的第一跟踪步骤中,在第一种子点的邻域中查找第一目标点。下面通过一个边界跟踪方法的实施例,具体说明如何查找第一目标点。
请参阅图4,本发明实施例提供了边界跟踪方法的另一种方法实施例。本实施例的所述方法包括:
S401:从待处理图像中提取边界点集合,所述边界点集合包括第一目标区域的边界点。
S402:从所述边界点集合中选取一个边界点作为第一种子点。
步骤S401、步骤S402与步骤S201、步骤S202类似,相关之处请参见图2所示的实施例,这里不再赘述。
S403:循环执行第一跟踪步骤,直至满足第一结束条件。
所述第一跟踪步骤包括:在所述第一种子点的邻域中查找到满足第二目标条件的像素点,作为第一目标点,将所述第一目标点作为更新后的第一种子点,并且将当前执行第一跟踪步骤时更新前的第一种子点,或者将当前执行第一跟踪步骤时更新后的第一种子点,即第一目标点,从所述边界点集合中删除。所述第二目标条件包括:属于所述边界点集合。
所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第二目标条件的像素点。
可见,由于每一次执行第一跟踪步骤时,都将第一目标点或者更新前的第一种子点从边界点集合中删除,因此,第一跟踪步骤中只需在第一种子点的邻域中查找属于所述边界点集合的像素点,即可查找到第一目标点,而无需再判断是否属于之前执行的第一跟踪步骤中的第一目标点。下面以删除更新前的第一种子点为例加以说明。
参阅表2和图3,在S402中选取出边界点A1为第一种子点。边界点集合包括:边界点A1、A2、A3、A4、……、A29和A30。
第1次执行第一跟踪步骤:在边界点A1的邻域查找到满足第二目标条件的边界点A2作为第一目标点,将第一种子点从边界点A1更新为边界点A2,将边界点A1从边界点集合中删除。
第2次执行第一跟踪步骤:由于边界点集合不包括边界点A1,因此在边界点A2的邻域中查找满足第二目标条件的像素点时,只能查找到边界点A3,而不会查找到边界点A1,将边界点A3作为第一目标点,将第一种子点从边界点A2更新为边界点A3,将边界点A2从边界点集合中删除。
……
第29次执行第一跟踪步骤:由于边界点集合只包括边界点A29和A30,在边界点A29的邻域查找满足第二目标条件的像素点时,只能查找到边界点A30,将边界点A30作为第一目标点,将第一种子点从边界点A29更新为边界点A30,将边界点A29从边界点集合中删除。
在第29次执行第一跟踪步骤后,由于边界点集合只包括边界点30,因此在边界点A30的邻域中未查找到满足第二目标条件的像素点,因此此时满足第一结束条件,因此结束循环过程,执行步骤S404。
表2
为了进一步减少工作量并且提高边界跟踪的准确性,在第一种子点的邻域中查找第一目标点,即逐一判断邻域中的各个点是否属于边界点集合时,若遇到上一次执行第一跟踪步骤时更新前的第一种子点,则跳过该点,也就是说不需要判断该点是否属于边界点集合,而是从下一个点开始继续查找第一目标点,因此,所述第二目标条件还可以包括:不属于上一次执行第一跟踪步骤时的更新前的第一种子点。
S404:将循环执行所述第一跟踪步骤时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的所述第一目标区域的边界点。
例如在表2和图3所示的例子中,可以将依次查找到的第一目标点为:A2、A3、A4、…、A29、A30作为按照顺序跟踪到的所述第一目标区域的边界点,此时还可以在第一次执行第一跟踪步骤时更新前的第一种子点A1添加到第一位;或者将依次查找到的第一种子点:A1、A2、A3、A4、…、A29作为按照顺序跟踪到的所述第一目标区域的边界点,此时还可以将最后一次执行第一跟踪步骤的第一目标点A30添加到最后一位。
通过上述技术方案可知,本实施例在每一次执行第一跟踪步骤时,都将第一种子点或者第一目标点从边界点集合删去,因此只需从第一种子点的邻域查找属于所述边界点集合的像素点,即可查找到第一目标点。并且这种方式能够保证已经查找到的边界点不会对后续查找边界点产生影响,例如不会出现将同一个边界点多次作为第一种子点的情况出现。而且,本发明中先提取第一目标区域的所有边界点,再进行边界跟踪,因此只需删除边界点即不会对其他目标区域的边界跟踪产生影响,相比于爬虫法中需要将所有像素点加入到背景区域,工作量相对更小。
为了能够降低边界被迂回过去的可能性,提高边界跟踪的准确性,本发明实施例在第一种子点的邻域中查找第一目标点时,可以按照预定的顺序进行查找,例如按照预定的顺时针或者逆时针顺序。
具体地,第一跟踪步骤中的在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,包括:在所述第一种子点的邻域中按照预定顺序依次查找满足第一目标条件的像素点,将第一个查找到的满足第一目标条件的像素点作为所述第一目标点。其中在每一次执行第一跟踪步骤时,预定顺序都不变。
其中,所述预定顺序可以包括:8-邻域顺时针顺序、8-邻域逆时针顺序、或者先4-邻域方向后对角线方向,下面分别具体说明。
8-邻域顺时针顺序指的是在第一种子点的8-邻域中沿着顺时针方向的顺序。例如图5示出了一种8-邻域顺时针顺序,中心点seed为第一种子点。在执行第一跟踪步骤时,按照图5所示的顺序,依次在第一种子点的8-邻域中查找满足第一目标条件的像素点,将第一个查找到满足第一目标条件的像素点作为第一目标点。
8-邻域逆时针顺序指的是在第一种子点的8-邻域中沿着逆时针方向的顺序。例如图6示出了一种8-邻域逆时针顺序,中心点seed为第一种子点。在执行第一跟踪步骤时,按照图6所示的顺序,依次在第一种子点的8-邻域中查找满足第一目标条件的像素点,将第一个查找到满足第一目标条件的像素点作为第一目标点。
先4-邻域后对角线邻域的顺序指的是先在第一种子点的4-邻域,后在第一种子点的对角线邻域的顺序。其中,第一种子点的4-邻域和对角线邻域可以均沿着顺时针方向的顺序,或者均沿着逆时针方向的顺序。若第一种子点的4-邻域和对角线邻域均沿着顺时针方向的顺序,则在4-邻域中的第1个邻域点沿着顺时针方向的下一个邻域点为对角线邻域中的第1个邻域点。若第一种子点的4-邻域和对角线邻域均沿着逆时针方向的顺序,则在4-邻域中的第1个邻域点沿着逆时针方向的下一个邻域点为对角线邻域中的第1个邻域点。例如图7示出了一种先4-邻域后对角线邻域的顺序,中心点seed为第一种子点。在执行第一跟踪步骤时,按照图7所示的顺序,首先按照顺时针方向,依次在第一种子点的4-邻域中查找满足第一目标条件的像素点,之后按照顺时针方向,依次在第一种子点的对角线邻域中查找满足第一目标条件的像素点,其中,在4-邻域中查找的第1个邻域点沿着顺时针方向的下一个邻域点为:在对角线邻域中查找的第1个邻域点。
在一些情况下,按照特定的顺序查找第一目标点能够降低边界被迂回过去的可能性,提高边界跟踪的准确性。例如对于类似于“8”字形状的目标区域,按照8-邻域顺时针顺序或者逆时针顺序查找第一目标点,能够避免只跟踪到上半部分或者下半部分的情况出现。
在本发明实施例中,由于第一目标区域可能不是一个完整的区域,此时还需要将第一目标区域与其他目标区域相合并,下面以待处理图像具有第一目标区域和第二目标区域为例进行说明。
请参阅图8,本发明实施例提供了边界跟踪方法的另一种方法实施例。
本实施例与图2所示的实施例相比,除了步骤S201至S204之外,还包括:步骤S801和S802。其中需要说明的是,步骤S201中提取出的边界点集合,除了包括第一目标区域的边界点,还包括第二目标区域的边界点。
S801:获取按照顺序跟踪到的所述第二目标区域的边界点。
其中,S801可以具体包括S8011至S8013。
S8011:从所述边界点集合中选取一个边界点作为第二种子点,所述第二种子点不属于所述第一目标区域。
在步骤S8011之前,可以将第一目标区域的边界点从所述边界点集合中删除,此时,可以从删除后的边界点集合中任意选取一个边界点作为第二种子点。例如图9所示,删除后的边界点集合中包括第二目标区域的边界点B1、B2、……、B7、……、B12,从边界点集合中任意选取出边界点B1作为第二种子点。
S8012:循环执行第二跟踪步骤,直至满足第二结束条件。
所述第二跟踪步骤包括:在所述第二种子点的邻域中查找到满足第三目标条件的像素点,作为第二目标点,将所述第二目标点作为更新后的第二种子点;所述第三目标条件包括:属于所述边界点集合,并且在之前执行的第二跟踪步骤中未作为第二目标点;所述第二结束条件包括:所述第二种子点的邻域中未查找到满足第三目标条件的像素点。
第二跟踪步骤、第二结束条件分别与第一跟踪步骤、第一结束条件类似,具体请参见上述实施例的相关描述,这里不再赘述。
S8013:将循环执行所述第二跟踪步骤时,依次查找到的第二目标点或者依次查找到的第二种子点,作为按照顺序跟踪到的所述第二目标区域的边界点。
可见,即使待处理图像具有多个目标区域,本发明实施例也可以只在提取边界点集合时扫描一次,从而无需扫描多次,节省了大量的工作量。
S802:若所述第一目标区域的任一个边界点和所述第二目标区域的任一个边界点相邻,将所述按照顺序跟踪到的所述第一目标区域的边界点、以及所述按照顺序跟踪到的所述第二目标区域的边界点合并后,作为按照顺序跟踪到的第三目标区域的边界点,所述第三目标区域包括所述第一目标区域和所述第二目标区域。通过这种合并处理,能够进一步降低边界被迂回过去的可能性,从而提高边界跟踪的准确性。
本发明实施例在跟踪到第一目标区域和第二跟踪区域的边界点之后,还可以判断第一目标区域和第二目标区域是否相邻,如果相邻,则进行合并处理,即合并为一个目标区域。通过这种合并处理,能够进一步降低边界被迂回过去的可能性,从而提高边界跟踪的准确性。
需要说明的是,本发明实施例中的边界跟踪方法,可以用于封闭式目标区域、开放式目标区域、以及独立点目标区域。其中,封闭式目标区域可以为环形目标区域,本发明实施例可以对环形目标区域的内边界和外边界均进行边界跟踪。本发明实施例用于开放式目标区域时,由于第一次执行第一跟踪步骤时的第一种子点可能是从边界点集合中任意选取的,因此可能未完成所有边界点的跟踪过程,例如若步骤S801中选取边界点B7作为第一种子点,可能S803中只能跟踪到边界点B7至B12这部分目标区域的边界点,此时可以通过重新选取种子点,例如选取边界点B6作为第二种子点,重新执行一遍S802和S803,即跟踪到边界点B6到B1这部分目标区域的边界点,将这两部分目标区域的边界点进行合并处理,能够得到完整的目标区域的边界点。
下面本发明实施例还提供一种具体的实施方式。
请参阅图10,本发明实施例提供了边界跟踪方法的另一种方法实施例。本实施例的所述方法包括:
S1001:获取原始灰度图像ImgOrg,将原始灰度图像转换为待处理图像ImgBin。其中,待处理图像ImgBin的背景区域和目标区域采用不同的灰度值进行表示。
S1002:确定待处理图像ImgBin的所有目标区域,提取出待处理图像ImgBin的所有目标区域的边界点,构成边界点集合PointsSet,并根据这些边界点生成边界图像ImgBnd,也就是说,边界图像ImgBnd为仅包括这些边界点的图像。令边界个数N=0。
S1003:判断边界点集合PointsSet是否为空,如果是,执行S1007,如果否,执行S1004。
S1004:令边界个数N=N+1,从边界点集合PointsSet中任意选取一个边界点作为起始种子点seed。
S1005:按照图5、图6或者图7所示的任一种预定顺序,在边界图像ImgBnd中判断是否能在种子点seed的8-邻域中查找到边界点nextseed,实际上即判断是否能够查找到满足第二目标条件的像素点,如果是,则执行S1006,如果否,返回执行步骤S1003。
其中,在判断是否能在种子点seed的8-邻域中查找到边界点nextseed时,由于种子点seed的8-邻域中包括上一次执行S1005时的种子点,因此在查找时可以跳过该点,即不判断该点是否属于边界点集合。例如按照图5所示的预定顺序查找时,若上一次执行S1005时的种子点为图5中的1位置,则在本次执行S1005时,在查找种子点seed的邻域时,跳过1位置,从1位置的下一顺序2位置开始查找,不仅能够节省重复计算,而且跟踪边界点时不会发生折返现象。
S1006:将查找到的边界点nextseed从边界点集合PointsSet中删除,在边界图像ImgBnd中将该点设置为背景像素,同时将该点按顺序加入到集合BoundaryN中,将该点作为更新后的种子点seed,返回执行S1005。
S1007:将各个集合BoundaryN中按顺序存放的边界点,作为按照顺序跟踪到的各个目标区域的边界点,即作为已跟踪的各个边界。
S1008:此时边界点集合PointsSet为空,即无遗漏地完成了对所有目标区域的边界点的查找。判断已跟踪的各个边界是否相邻,如果是,执行S1009,如果否,执行S1010。
S1009:则将相邻的边界进行合并处理,也就是将相邻的边界的边界点存放在一个集合中。该步骤之后执行S1010。
S1010:此时已完成对原始灰度图像ImgOrg的边界跟踪,结束流程。
对应上述方法实施例,本发明还提供了边界跟踪装置的装置实施例,下面具体说明。
请参阅图11,本发明提供了边界跟踪装置的一种装置实施例,本实施例的所述装置包括:提取单元1101、选取单元1102和跟踪单元1103。
提取单元1101,用于从待处理图像中提取边界点集合,所述边界点集合包括第一目标区域的边界点。
在本实施例中,当获取用户输入的原始图像后,提取单元1101可以直接将原始图像作为待处理图像,也可以对原始图像进行图像处理,比如对原始图像的尺寸进行调整、将原始图像转换成灰度图像、对原始图像进行图像滤波等,提取单元1101将处理后的图像作为待处理图像。
在本实施例中,提取单元1101可以从待处理图像中提取所有目标区域的边界点,构成所述边界点集合;或者也可以从待处理图像中提取第一目标区域的边界点,构成所述边界点集合。
选取单元1102,用于从所述边界点集合中选取一个边界点作为第一种子点。
本实施例中选取出第一种子点,实际上是将第一种子点作为起始点,从起始点开始按顺序跟踪第一目标区域的边界点。
在选取第一种子点时,无需通过遍历选取特定的边界点,而是可以从边界点集合中任意选取一个边界点作为第一种子点,从而进一步节省了工作量。
跟踪单元1103,用于循环执行第一跟踪功能,直至满足第一结束条件。
第一跟踪功能用于查找第一目标区域的下一个边界点,第一结束条件用于表示已经查找到第一目标区域的所有边界点。因此,跟踪单元1103实际上是当未查找到第一目标区域的所有边界点时,循环执行第一跟踪功能,从而循环查找下一个边界点,当查找到第一目标区域的所有边界点时,则结束循环。其中,跟踪单元1103可以先执行第一子功能,第一子功能包括:判断是否满足第一结束条件,如果是,则执行第一跟踪功能,并执行第一子功能,如果否,则停止执行第一跟踪功能。
下面分别对第一跟踪功能和第一结束条件进行说明。
所述第一跟踪功能包括:在所述第一种子点的邻域中查找到满足第一目标条件的像素点,作为第一目标点,将所述第一目标点作为更新后的第一种子点。所述第一目标条件包括:属于所述边界点集合,并且在之前执行的第一跟踪功能中未作为第一目标点。所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第一目标条件的像素点。
为了进一步减少工作量并且提高边界跟踪的准确性,在第一种子点的邻域中查找第一目标点时,即逐一判断邻域中的各个点是否属于边界点集合时,若遇到上一次执行第一跟踪功能时更新前的第一种子点,则跳过该点,也就是说不需要判断该点是否属于边界点集合,而是从下一个点开始继续查找第一目标点,因此,所述第一目标条件还可以包括:不属于上一次执行第一跟踪功能时的更新前的第一种子点。
跟踪单元1103,还用于将循环执行所述第一跟踪功能时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的所述第一目标区域的边界点。
在结束第一跟踪功能的循环过程之后,既可以将循环过程中依次查找到的第一目标点作为按照顺序跟踪到的所述第一目标区域的边界点,也可以将循环过程中依次查找到的第一种子点作为按照顺序跟踪到的所述第一目标区域的边界点。
通过上述技术方案可知,本发明实施例在实现边界跟踪时,提取单元1101从待处理图像中提取出边界点集合,选取单元1102从边界点集合中选取出第一种子点。之后跟踪单元1103循环执行第一跟踪功能,直至满足第一结束条件。其中,第一跟踪功能用于查找第一目标区域的下一个边界点,第一结束条件用于表示已经查找到第一目标区域的所有边界点。因此,本发明实施例实际上是当未查找到第一目标区域的所有边界点时,循环执行第一跟踪功能,从而循环查找下一个边界点,当查找到第一目标区域的所有边界点时,结束循环过程,将循环执行所述第一跟踪功能时,依次查找到的第一目标点或者依次查找到的第一种子点,作为按照顺序跟踪到的第一目标区域的边界点。可见本实施例提供的边界跟踪方式,由于是先提取边界点集合,再根据边界点集合进行边界跟踪,可以只在提取边界点集合时扫描一次,不需要重复扫描从而减少了工作量。
本实施例的提取单元1101用于从待处理图像中提取出边界点集合,其中,提取单元1101可以包括确定子单元和提取子单元。
确定子单元用于确定所述待处理图像的目标区域,所述待处理图像的目标区域包括所述第一目标区域和第二目标区域。
在本实施例中,可以使用任一种能够分割出有效目标的图像分割算法,例如常用的阈值法、边缘检测以及机器学习等,从待处理图像中确定出目标区域,也就是将待处理图像中的目标区域和背景区域进行区分。具体在区分时,可以将待处理图像中的背景区域和目标区域采用不同的灰度值进行表示,例如,背景区域通过某一灰度值表示,目标区域通过与背景区域不同的、一个或多个灰度值进行表示。其中,所述待处理图像的目标区域可以包括所述待处理图像的所有目标区域。
提取子单元用于提取出所述待处理图像的目标区域的边界点,构成所述边界点集合。
在确定出目标区域后,可以根据目标区域的像素点之间的位置关系,提取出所述待处理图像的目标区域的所有边界点,构成所述边界点集合。其中,本实施例对所述边界点集合的具体数据形式并不加以限定,例如可以表示为链表、数组、容器等数据结构。在提取所述边界点集合后,还可以将所述边界点集合中的边界点在所述待处理图像中标记出来,例如通过某一特定灰度值表示。
本实施例的在每一次执行第一跟踪功能时,都可以将第一种子点或者第一目标点从边界点集合删去,因此只需从第一种子点的邻域查找属于所述边界点集合的像素点,即可查找到第一目标点。具体地,所述装置还包括:删除单元,用于每一次执行第一跟踪功能时,将当前执行第一跟踪功能时更新前的第一种子点,或者将当前执行第一跟踪功能时更新后的第一种子点,从所述边界点集合中删除。当在所述第一种子点的邻域中查找到满足第一目标条件的像素点时,跟踪单元1103具体用于,在所述第一种子点的邻域中查找到满足第二目标条件的像素点,所述第二目标条件包括:属于所述边界点集合;所述第一结束条件包括:在所述第一种子点的邻域中未查找到满足第二目标条件的像素点
可见这种方式能够保证已经查找到的边界点不会对后续查找边界点产生影响,例如不会出现将同一个边界点多次作为第一种子点的情况出现。而且,本发明中先提取第一目标区域的所有边界点,再进行边界跟踪,因此只需删除边界点即不会对其他目标区域的边界跟踪产生影响,相比于爬虫法中需要将所有像素点加入到背景区域,工作量相对更小。
为了能够降低边界被迂回过去的可能性,提高边界跟踪的准确性,本发明实施例在第一种子点的邻域中查找第一目标点时,可以按照预定的顺序进行查找,例如按照预定的顺时针或者逆时针顺序。具体地,当在所述第一种子点的邻域中查找到满足第一目标条件的像素点作为第一目标点时,跟踪单元1103具体用于,在所述第一种子点的邻域中按照预定顺序依次查找满足第一目标条件的像素点,将第一个查找到的满足第一目标条件的像素点作为所述第一目标点。在每一次执行第一跟踪功能时,预定顺序都不变。
其中,所述预定顺序可以包括:8-邻域顺时针顺序、8-邻域逆时针顺序、或者先4-邻域方向后对角线方向。其中,第一种子点的4-邻域和对角线邻域可以均沿着顺时针方向的顺序,或者均沿着逆时针方向的顺序。若第一种子点的4-邻域和对角线邻域均沿着顺时针方向的顺序,则在4-邻域中的第1个邻域点沿着顺时针方向的下一个邻域点为对角线邻域中的第1个邻域点。若第一种子点的4-邻域和对角线邻域均沿着逆时针方向的顺序,则在4-邻域中的第1个邻域点沿着逆时针方向的下一个邻域点为对角线邻域中的第1个邻域点。
在一些情况下,按照特定的顺序查找第一目标点能够降低边界被迂回过去的可能性,提高边界跟踪的准确性。例如对于类似于“8”字形状的目标区域,按照8-邻域顺时针顺序或者逆时针顺序查找第一目标点,能够避免只跟踪到上半部分或者下半部分的情况出现。
在本发明实施例中,由于第一目标区域可能不是一个完整的区域,此时还需要将第一目标区域与其他目标区域相合并。具体地,所述边界点集合还包括第二目标区域的边界点;所述装置还包括合并单元;跟踪单元1103,还用于获取按照顺序跟踪到的所述第二目标区域的边界点;所述合并单元,用于若所述第一目标区域的任一个边界点和所述第二目标区域的任一个边界点相邻,将所述按照顺序跟踪到的所述第一目标区域的边界点、以及所述按照顺序跟踪到的所述第二目标区域的边界点进行合并,将合并后的边界点作为按照顺序跟踪到的第三目标区域的边界点,所述第三目标区域包括所述第一目标区域和所述第二目标区域。
可见本发明实施例在跟踪到第一目标区域和第二跟踪区域的边界点之后,还可以判断第一目标区域和第二目标区域是否相邻,如果相邻,则进行合并处理,即合并为一个目标区域。通过这种合并处理,能够进一步降低边界被迂回过去的可能性,从而提高边界跟踪的准确性。
其中,当获取按照顺序跟踪到的所述第二目标区域的边界点时,跟踪单元1103可以具体用于:
从所述边界点集合中选取一个边界点作为第二种子点,所述第二种子点不属于所述第一目标区域;
循环执行第二跟踪功能,直至满足第二结束条件;所述第二跟踪功能包括:在所述第二种子点的邻域中查找到满足第三目标条件的像素点,作为第二目标点,将所述第二目标点作为更新后的第二种子点;所述第三目标条件包括:属于所述边界点集合,并且在之前执行的第二跟踪功能中未作为第二目标点;所述第二结束条件包括:所述第二种子点的邻域中未查找到满足第三目标条件的像素点;
将循环执行所述第二跟踪功能时,依次查找到的第二目标点或者依次查找到的第二种子点,作为按照顺序跟踪到的所述第二目标区域的边界点。
可见,即使待处理图像具有多个目标区域,本发明实施例也可以只在提取边界点集合时扫描一次,从而无需扫描多次,节省了大量的工作量。
需要说明的是,本发明实施例中的边界跟踪方法,可以用于封闭式目标区域、开放式目标区域、以及独立点目标区域。其中,封闭式目标区域可以为环形目标区域,本发明实施例可以对环形目标区域的内边界和外边界均进行边界跟踪。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。