一种用于投影交互系统的连续帧连通域并行标记方法与流程

文档序号:11135307阅读:359来源:国知局
一种用于投影交互系统的连续帧连通域并行标记方法与制造工艺

本发明涉及计算机视觉处理技术领域,具体涉及一种用于投影交互系统的连续帧连通域并行标记方法。



背景技术:

人机交互技术时计算机科学中至关重要的一个领域,其发展历史基本上代表了计算机的发展。从最早的大型机上的笨拙的开关系统到到期键盘和鼠标的出现,以及当下非常流行的触摸屏,人机交互技术的发展速度日新月异。今年来,由于计算机视觉技术的飞速发展,以及新的传感器的出现,使得各种便携式的人机交互方式层出不穷。

但是,由于目前Kinect等深度相机在距离精度和空间分辨率上都明显不足,利用Kinect等深度相机直接与计算机进行交互并不能达到进行精细操作的目睹,不能直接在利用投影仪投射在墙壁上的显示区域内进行便捷而灵敏的操作,尤其是双击这种空间精度和时间精度要求较高的操作。

利用光笔和摄像头组合形成的系统,对投影图像进行操作,从而达到操控计算机的目的。为了获取当前手指或者光笔所在的位置,需要对摄像机捕获的图像进行分析,从中提取前景像素,并且进行连通区域分析,从而完成手指或者光笔的检测和定位。

传统的连通标记方法,都是针对单帧图像进行的,在利用摄像机进行实时检测时,相邻两帧图像之间的差异其实很小,如果每一帧图像都完全重新标记,则需要进行大量的重复计算,效率不高,对投影系统的流畅影响很大。



技术实现要素:

本发明的目的在于提供一种用于投影交互系统的连续帧连通域并行标记方法,以实现连续帧连通域快速标记。

为实现上述目的,本发明采用了以下技术方案:

一种用于投影交互系统的连续帧连通域并行标记方法,其包括以下步骤:

(1)对第一帧图像进行分块标记,获取图像视频,对图像视频的第一帧图像的连通区域进行标记,得到子行对应的标记图;

(2)获取新生像素和消失像素,将当前帧图像与前一帧图像使用帧差法计算,得到两者的侦差图,对帧差图进行分块标记,通过不同分块之间的子行融合,得到当前帧图像中消失像素子行和新生像素子行;

(3)通过对消失像素子行及新生像素子行的处理,完成对前一帧图像进行标记结果的修正,并将修正结果融入到当前帧图像的标记结果中。

所述的用于投影交互系统的连续帧连通域并行标记方法,步骤(1)中,所述对第一帧图像进行分块标记,获取图像视频,对图像视频的第一帧图像的连通区域进行标记,得到子行对应的标记图,具体包括以下步骤:

(11)利用线程对每个子块进子行检测;

(12)通过计算每个子块中最大子行数目,进行子行序号整理;

(13)将子行的起点和终点按照分块在图像中位置进行还原;

(14)对所有子行按照序号依次进行分析,将相接的子行进行融合;

(15)根据融合子行的相接关系,构建关系图,得到连通域标记图。

所述的用于投影交互系统的连续帧连通域并行标记方法,步骤(15)中,所述根据融合子行的相接关系,构建关系图,得到连通域标记图,具体包括以下步骤:

(151)为每个子行分配一个线程;

(152)在每个子行所在位置的下一行,搜索其中的所有子行,通过比较相互的起点和终点位置,分析其是否相接,若相接,则在相应结点之间建立联系,完成关系图的构建;

(153)对关系图进行扫描,得到连通区域标记图。

所述的用于投影交互系统的连续帧连通域并行标记方法,步骤(3)中,通过对消失像素子行及新生像素子行的处理,完成对前一帧图像进行标记结果的修正,并将修正结果融入到当前帧图像的标记结果中,具体包括以下步骤:

(31)为每一个消失像素子行,分配一个线程;

(32)在消失像素子行所在的行中,分析消失像素子行所造成的原有像素子行的断裂、缩短和消失,通过比较消失像素子行的起点和终点位置与原有像素子行的起点和终点的位置,判断发生变动的消失像素子行,对于已经消失的原有像素子行,直接从关系图中删除,但不修改与其关联的像素子行中的连接信息;

(33)为每一个新生像素子行,分配一个线程。

(34)在新生像素子行所在的行中,分析新生像素子行所造成的子行的融合、边长和新出现,通过比较新生像素子行的起点和终点位置与原有像素子行的起点和终点的位置,判断发生变动的新生像素子行,对于新生的像素子行,将其添加到关系图中,但不修改与其关联的像素子行中的连接信息;

(35)将所有发生了变化消失像素子行、新生像素子行,及其关联的消失像素子行、新生像素子行的序号进行记录;

(36)为关系图中每一个发生了变化的消失像素子行、新生像素子行分配一个线程,去掉其原有的连接信息,在其下一行中搜索可能存在的连接像素子行,修改连接信息,完成对上一帧标记信息的修改。

由上述技术方案可知,本发明所述的用于投影交互系统的连续帧连通域并行标记方法,在处理连续帧图像时能够快速完成二值图像中连通区域的标记功能。在进行连续帧图像标记时速度较快,提高了连通区域标记的速度。

附图说明

图1是本发明的流程图;

图2是本发明子行融合时的示意图;

图3是本发明第一帧前景图像;

图4是本发明当前帧图像。

图5是图3与图4的帧差图。

图6是图5的扫描分析图;

图7是图3的连通域标记示意图。

具体实施方式

下面结合附图对本发明做进一步说明:

一种用于投影交互系统的连续帧连通域并行标记方法,包括以下步骤:

S1:对第一帧图像进行分块标记,获取图像视频,对图像视频的第一帧图像的连通区域进行标记,得到子行对应的标记图:

本专利中的连通域标记方法,是利用子行作为基本单位的图来进行表达的。因此,在对图像进行分块处理时,可以将一行作为一个子块进行分割,每个线程处理一行图像,这样既可以保证数据的连贯性,利于流水线,同时又适合算法以行为单位进行表达的特点。如果GPU的线程数足够多,还可以将一行分割为多段,进一步提高并行度。

如图2所示,一行20个像素,被分成4个子块进行并行处理,黑色粗线条的竖线表示相邻分块之间的分割线。图2中,白色像素表示前景像素。本行中总共存在3个子行,但是由于分块,导致第一个子行变成2段,第二个子行变成3段,因此需要在分块的结果上进行子行融合(该任务由第一个线程进行处理)。

利用四个线程对四个子块进行子行检测,具体过程如下:

S11:每个线程单独检测,得到如下的子行结果:

子块0:[0:0:3,4]

子块1:[0:0:0,0],[1:0:4,4]

子块2:[0:0:0,4]

子块3:[0:0:0,0],[1:0:4,4]

S12:序号整理:

为了防止不同子块之间的子行序号发生重复,需要计算每个子块中的最大子行数目(比如子块尺寸为1*5,则最多有3个子行),然后第N个(从0开始计数)子块的子行序号都加上3*N。

子块0:[0:0:3,4]

子块1:[3:0:0,0],[4:0:4,4]

子块2:[6:0:0,4]

子块3:[9:0:0,0],[10:0:4,4]

S13:子行位置整理:

同时,将子行的起点和终点按照分块在图像中位置进行还原。即将子行的起点和终点都加上5*N(5是每个子块的宽度)。此时图2的子行扫描结果如下所示:

子块0:[0:0:3,4]

子块1:[3:0:5,5],[4:0:9,9]

子块2:[6:0:10,14]

子块3:[9:0:15,15],[10:0:19,19]

S14:子行融合

对此时所有的子行,按照序号依次进行分析,看相邻的两个子行是否相接。如果相接,则将它们融合为一个。通过修改前一个子行的终点位置实现融合。最终融合之后的子行信息如下:

[0:0:3,5],[4:0:9,15],[10:0:19,19]

为了防止不同的行,出现子行序号重合的问题,同样也需要对融合后的子行序号进行整理。如果一行的最大子行数目为M,当前为第y行(从0开始计数),则每个子行的序号,都需要加上y*M。

S15:关系图构建:

在对图像中所有的行完成并行处理之后,需要分析相邻行之间的子行的相接关系,从而完成关系图,最终得到连通域标记的结果。下面以图3为例,来说明该过程的细节过程:

首先为每个子行分配一个线程,图3中总共有6个子行(最后一行不参与主动搜索),因此需要分配6个线程。在每一个子行所在位置的下一行,搜索其中的所有子行,通过比较相互的起点和终点位置,分析其是否相接。如果相接,则在相应结点之间建立联系。(最后一行没有下一行,不需要搜索相接的子行)。每个子行只需要搜索它的下一行的位置,而所有线程综合的结果,则完成了整个关系图的构建。如图3所示,子行0找到子行2,子行1找到子行3,子行2和子行3都找到子行5,这样第一个连通域的关系图构建就完成了。同样,子行4找到子行7和子行8,子行6找到子行10。在一次搜索周期内,每个子行只进行了很少的操作,但所有线程分工合作,很快就完成全图范围的关系图构建。对关系图进行扫描,得到最终的连通域标记结果,如图4所示。

S2:获取新生像素和消失像素,将当前帧图像与前一帧图像使用帧差法计算,得到两者的侦差图,对帧差图进行分块标记,通过不同分块之间的子行融合,得到当前帧图像中消失像素子行和新生像素子行;

计算帧差图中消失像素构成的子行,与新生像素构成的子行时所有的分块策略,与第一帧连通域分块标记时的分块策略是一致的。都是将一行作为一个子块进行分割,每个线程处理一行图像。如果GPU的线程数足够多,也是将一行分割为多段,提高并行度。通过在每一个分块中完成帧差图的计算,然后将全图所有的分块的帧差图融合起来,就可以得到最终的结果。

子行的检测和融合:在检测消失像素子行和新生像素子行,以及将不同分块之间的子行进行融合时,策略也与第一帧连通域分块标记时的分块策略是一致的。将位于不同分块,但是又相接的子行根据起点和终点位置融合起来。如图6所示,是当前帧的帧差图中,消失像素子行和新生像素子行的标记结果。经过该过程,就可以得到全图范围的当前帧图像中的消失像素子行和新生像素子行。

S3:通过对消失像素子行及新生像素子行的处理,完成对前一帧图像进行标记结果的修正,并将修正结果融入到当前帧图像的标记结果中。该步骤具体通过以下步骤实现:

S31:为每一个消失像素子行,分配一个线程;

S32:在消失像素子行所在的行中,分析消失像素子行所造成的原有像素子行的断裂、缩短和消失,通过比较消失像素子行的起点和终点位置与原有像素子行的起点和终点的位置,判断发生变动的消失像素子行,对于已经消失的原有像素子行,直接从关系图中删除,但不修改与其关联的像素子行中的连接信息;

S33:为每一个新生像素子行,分配一个线程。

S34:在新生像素子行所在的行中,分析新生像素子行所造成的子行的融合、边长和新出现,通过比较新生像素子行的起点和终点位置与原有像素子行的起点和终点的位置,判断发生变动的新生像素子行,对于新生的像素子行,将其添加到关系图中,但不修改与其关联的像素子行中的连接信息;

S35:将所有发生了变化消失像素子行、新生像素子行,及其关联的消失像素子行、新生像素子行的序号进行记录;

S36:为关系图中每一个发生了变化的消失像素子行、新生像素子行分配一个线程,去掉其原有的连接信息,在其下一行中搜索可能存在的连接像素子行,修改连接信息,完成对上一帧标记信息的修改。

将上述算法用于图6,具体过程如下:

为图中的4个消失子行——子行11,子行12,子行13,子行14,分配线程。在第0行中搜索与子行11有关联的原子行,发现子行0与子行11有交叠,于是修改子行0的位置。同样,原子行5,子行7也需要修改位置。子行9则消失了。为图中4个新出现的子行——子行15,16,17,18,分配线程。在各行中搜索与新出现子行有位置交叠的原子行,发现子行1需要修改位置,而子行16,17,18则都属于新出现的子行。对发生了变动的子行,也就是子行0,5,7,9,1,16,17,18,在原关系图中找到它们的关联子行,即子行3,4,10。为这些子行全部都分配线程。对每个变动子行,及其关联子行,首先去掉其保留的连接信息,然后在其下一行中找到相接子行,建立连接,修改关系图。如果子行位于最后一行,则不需要处理。算法完成,最终得到4个连通域。

以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

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