一种基于FPGA的海量像素分块的连通区域识别方法及装置与流程

文档序号:25172848发布日期:2021-05-25 14:43阅读:134来源:国知局
一种基于FPGA的海量像素分块的连通区域识别方法及装置与流程

本发明涉及图像处理领域,尤其涉及一种基于fpga的海量像素分块的连通区域识别方法及装置。



背景技术:

虚拟现实产品已成为目前最受关注的智能设备,为给客户带来良好的体验,vr设备对硬件提出了更高的要求,用户想要真正的进入虚拟世界,步态分析技术必不可少。目前主流的步态分析技术主要包括:基于计算机视觉的人体步态捕捉与分析、基于惯性传感器的人体步态捕捉与分析、基于无线信号的人体步态捕捉与分析。基于计算机视觉的人体步态捕捉又分为基于红外摄像头、基于2d摄像头、基于深度3d摄像头等多种。本装置针对基于红外摄像头的光学步态捕捉而设计。

由于虚拟现实需要给用户带来最真实的体验,所以前端数据成像单元要求实时性非常高,所需要的成像单元需要高分辨率高帧率的红外摄像机,一般的体验帧率都高达每秒200hz、分辨率都高达2kx2k以上。面对采集系统带来的高帧率高分辨率的海量数据,后端的视频数据处理单元需要有非常强大的计算能力和并行处理能力分析出成像系统中反光球形成的连通区域。常用的处理单元有基于dsp的、基于windows、基于fpga等asic处理单元。由于连通域标记算法具有重复比较、判断、转移工作,很少出现乘法除法等复杂运算,造成高速微处理器内部的多级指令流水线操作连续断流,使dsp以及windows的处理效率远远低于其峰值计算能力。再加上数据采集单元数据速率都高达ghz,dsp,windows的io接口接收能力有限,数据采集便存在困难。

目前连通区域标记算法有行程扫描算法、轮廓标记算法、基于游程码的区域标记算法等等。有的算法需要一次遍历图像完成标记,有的则需要两次或更多次遍历图像。多次遍历图象存在处理延时,缓存图象等问题。而部分算法对连通区域的个数也有限制。实际应用中我们希望反光球越密集越好,这样三维空间中动态还原的更准确,也就造成了不同算法的时间效率的差别。

再加上针对海量高分辨率图像这些算法都存在不能同时并行处理导致需要开辟大量的内存缓存图像,带来额外的经济损失。



技术实现要素:

本发明提供一种基于fpga的海量像素分块的连通区域识别方法及装置,用以解决标记连通区域时间较长满足不了高帧率下实时处理能力、且对连通区域的个数及形状有局限性导致连通区域增多以及反光球由于光照环境改变导致形状变化,识别能力欠佳等技术问题。

为实现上述目的,本发明提出一种基于fpga的海量像素分块的连通区域识别方法,所述基于fpga的海量像素分块的连通区域识别方法包括以下步骤:

s1:通过fpga高速io口接收前端成像单元的高带宽像素输入数据;

s2:将采集到的高带宽像素输入数据进行数据分块处理,降低像素时钟频率,达到后续的可靠操作;

s3:根据设置好的适合环境和反光镜分割的阈值进行视频图像的二值化;

s4:通过fpga内部自带的缓存单元建立块与块之间的冲突表,完成各个分块模块中连通区域的初始化标记;

s5:将各连通区域的具有等价关系的链表进行合并,完成整帧视频的反光球连通区域标记;

s6:将连通区域统计特征输出给后续处理单元,获取人体步态的三维坐标的基础信息。

步骤s6中所述连通区域统计特征包括:连通区域的个数、连通区域中心坐标值、连通区域大小及圆度。

所述步骤s2还包括以下子步骤:

s21:按照纵列将每行图像分成四块,其中块与块之间延时一行;

s22:第一个时间段t处理块1的第一行;

s23:第二个时间段2t处理块1的第二行,同时延时△t并行处理块2的第一行;

s24:第三个时间段3t处理块1的第三行,同时延时△t并行处理块2的第二行,延时△t处理块3的第1行;

s25:第四个时间段4t处理块1的第四行,同时延时△t并行处理块2的第三行,延时△t处理块3的第2行,延时△t处理块4的第1行;

s26:依次类推第n个时间段nt处理图像块1第n行,n+1时间段处理块2的第2行,n+2时间段处理块3的第n行,n+3时间段处理块4的第n行,至图像处理完成。

所述t为扫描一行的时间单元。

所述步骤s4还包括以下子步骤:

s41:启动四个数据块之间的数据标记;

s42:为每个块分配一个初始化的标记值ln;

s43:将每块图像按照从左到右的顺序逐像素开始扫描,并进行连通区域的标记;

s44:为块2到块4分别建立冲突表bn,所述块2的冲突表为b1,块3的冲突表为b2,块4的冲突表为b3,所述冲突表用于分别存储对应分块的最后一列的二值化像素值和标定值;

s45:判断当前像素点在每行的位置;

s46:第一个像素点查询左边块的冲突表进行初始化标记,中间像素点根据本块内部上一行和左边像素进行初始化标记,最后一个像素点建立与左边相邻块之间的冲突表并根据本块内部上一行和左边像素进行初始化标记;

s46:初始化标记完成;

s47:进行等价表的整理。

所述步骤s42中的标记值可随意分配,但各个块之间不能重叠,即每个块之间的标记值不能超过下一块的标记值。

所述步骤s47还包括以下子步骤:

s471:将具有等价关系的临时标记全部等价为其中的最小值;

s472:判断块1的等价表t1是否为空,若是则跳转至s473,若否则读出t1的等价关系值,进行等价关系的搜索,找到等价关系的最小值,将等价表中的所有等价位置用最小的等价值代替,在读取初始等价关系时,t1的l1从1开始标记,标记的值即真实存在的值,等价表t1整理完毕得到块1标记结果中的最大值k1;

s473:判断块2的等价表t2是否为空,若是则跳转至s474,若否则进行t2等价表的搜索,在块2的等价关系整理过程中,将从初始链表t2中读出的等价值进行处理:若大于等于l2表示新的等价关系,则根据t1标记结果中的最大值k1进行处理;若小于l2表示为t1链表中传递过来的等价值,由于t1的等价值都已经标识过,所以当小于l2时直接采用临时标记值标记写入等价表e1;等价表t2整理完毕得到块2标记结果中的最大值k2;

s474:重复步骤s473,进行块n的等价表tn的整理,并记录整理的最大值kn,从tn表中读出的等价关系值根据kn重新定义;

s475:建立最终等价关系表e,以实现整合整帧图像的目的。

所述基于fpga的海量像素分块的连通区域识别装置包括:视频采集模块、行分块模块、二值化模块、连通区域并行标记模块、连通区域等价关系合并模块和连通区域统计特征输出模块:

所述视频采集模块还包括至少两个fpga高速io口,用于接收前端成像单元的高带宽像素输入数据;

所述行分块模块,用于接收视频采集模块采集到的高带宽像素输入数据,降低像素时钟频率,达到后续的可靠操作;

所述二值化模块,用于接收行分块模块处理后的输入数据,并根据设置好的阈值对视频图像进行二值化处理;

所述连通区域并行标记模块,用于接收控制器传输的数据,并根据控制指令将一组输入数据转变为两组输出数据;

所述连通区域等价关系合并模块,用于将各连通区域的具有等价关系的链表进行合并,完成整帧视频的反光球连通区域标记;

所述连通区域统计特征输出模块,用于将连通区域统计特征输出给后续处理单元,获取人体步态的三维坐标的基础信息。

所述视频采集模块中采集的输入数据,像素时钟在800mhz以上。

本申请的有益效果:

(1)通过连通区域的标记算法,对每个像素点实施比较判断标定等处理,实现方法简单且易于算法的快速移植性;

(2)分块的处理方式对于大分辨率高刷新率的图像处理仅仅需要在扫描之前将图像进行简单的分块处理就能保证处理的实时性,在虚拟现实中实时性是最关注的因素,故该算法满足了应用的实施需求;

(3)分块的处理方式易于扩展,在本设计中2k×2k的分辨率,高达800mhz的像素时钟装置中分为四块即可完成操作,在后续应用中分辨率刷新率提升时可以分更多的块进行处理,且处理方式不变,算法可直接移植;

(4)一次扫描不需要存储视频每一帧的信息量,节约了存储资源,在pcb设计中既满足了板卡轻量、小型的要求,还可以节省物料,节约经济成本。

附图说明

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

图1为连通区域识别装置模块组成图;

图2为本发明分块排列示意图;

图3为本发明并行标记流程图;

图4为本发明等价表整理流程图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。

如图1所示,一种基于fpga的海量像素分块的连通区域识别装置,包括视频采集模块、行分块模块、二值化模块、连通区域并行标记模块、连通区域等价关系合并模块、连通区域统计特征输出模块,其中各模块说明如下:

s101:视频采集模块利用fpga丰富的高速的io口,接收前端成像单元的高带宽像素的输入,针对装置中的2kx2k@200mhz的视频,一般都采用多对lvds接口传输以及接收数据;

s102:针对s101采集输入的数据,像素时钟基本在800mhz以上,比如2048x2048x200=800mhz,如此高的像素时钟fpga的并行处理单元如查找表,触发器等都无能为力,故本装置采用一种巧妙的数据分块机制,降低像素时钟频率达到后续的可靠操作,具体分块实施方案后面详细介绍;

s103:二值化模块主要根据设置好适合环境和反光球分割的阈值进行视频图像的二值化,该模块相对独立简单为后续模块的基础模块;

s104:连通区域并行标记模块是本装置的核心单元,该模块以fpga内部自带的缓存单元建立块与块之间的冲突表完成各个分块模块中连通区域的初始化标记;

s105:连通区域等价关系合并模块基于s103模块的基础上,将各个连通区域的具有等价关系的链表进行合并,完成整帧视频的反光球连通区域标记;

s106:连通区域统计特征输出为本装置输出给后续处理单元,获取人体步态的3维坐标的基础信息,统计特征主要包括连通区域的个数、连通区域中心坐标值连通区域大小以及圆度等信息,该模块不需要进行图像的二次扫描即可完成,只需要占用少许的时钟单元,并且与前面的模块处于并行操作,达到了实时处理的能力,真正做到了低延时的解决方案。

针对关键模块s102,s104介绍本装置的具体实施步骤:

本设计s102模块中按照纵列将每行图像分为4块解决海量像素以及高刷新率的问题;这样800mhz时钟像素即可降低到200mhz时钟内,不会带来任何时序上的困难;其中块与块之间延时一行。

如图2所示,对一个时间段t(扫描一行的时间单位)只有块1的第一行,第二个时间段2t处理块1的第2行同时延时(2个时钟周期防止处理数据赋值的延时)并行处理块2的第1行,第三个时间段3t处理块1的第3行,延时处理块2的第2行,延时处理块3的第1行,4t时间处理块1的第4行,延时处理块2的第3行,延时处理块3的第2行,延时处理块4的第1行;依次类推,n时间t处理图像块1第n行,n+1时间段处理块2的第2行,n+2时间段处理块3的第n行,n+3时间段处理块4的第n行;由于fpga的并行性操作,处理n行图像只需要(n+3)t时间即可处理完毕,并且图像是按照行扫描的方式输入后端接收,故缓存只需要缓存3行图像奇可以达到处理需求;这种分块模块只需要比扫描一帧图像多3t+的时间和少许的内部fifo缓存即可完成操作,带来了极大的实时效果。

s104模块进行连通区域的并行标记,该模块是装置的核最重要模块,如何利用分块图像进行并行化连通域标记,如何处理块与块之间共同的连通域等问题是本装置的核心处理能力。

连通域标记算法的核心是扫描各个像素点,将二值化为1的像素赋予一个标记,并且记录该标记与其领域常见的4领域8领域的像素为1的图像的标记点之间的连通性以及等价关系,建立一个等价表。后面根据一定的规则合并等价表,将具有等价关系的标记点给予同一个数值表示同一连通区域;在连通域标记算法中连通域具有传递性,即当前像素的标记值跟上一行同一位置和同一行左边的像素的标记值具有相关性;所以在分块图像中,块与块之间的图像标记值如何给定便需要左边相邻的像素点的标记值和像素值来做判断;如何建立和获取左边相邻块的连通性以及如何能并行处理块与块之间的标记是设计中最需要解决的问题。

本装置中我们采用图3的流程图来解释设计中如何并行的利用少量资源达到这个目的:

首先我们并行的启动4个数据块之间的数据标定,并且为每个块分配一个初始化的标记值ln,该标记值可以随意分配,但是各个块之间不能重叠,比如块1=1、块2=1024、块3=2048、块4=3072;然后开始标记,每个块之间的标记值不能超过下一块的标记值,所以我们分配时可以根据实际应用中连通区域的大概个数和复杂度选择合适的值,然后每块图像按照从左到右的顺序开始扫描进行连通区域的标记;

块1由于左边没有相邻的块故标记过程比较简单,不需要利用领域块的性质进行连通区域的标定;

块2到块4由于左边都有相邻的块,在进行每行像素最左边一列像素进行标定时需要利用领域的像素值和标定值进行标定;所以我们需要为块2到块4建立领域最后一列像素的标定值和像素值的表我们取名为冲突表b,如流程图3中所说的冲突表,块2的冲突表为b1,块3的冲突表为b2,块4的冲突表为b3,共需要3张冲突表,3张冲突表bn分别存储块第n块的最后一列的二值化像素值和标定值;因为冲突表只需要存储纵向一列信息值,故深度不会太大,仅仅利用fpga内部资源即可完成操作;

然后根据流程图3我们知道,在每块区域进行标定时我们就根据像素点在行中的位置进行判定就行标定,第一个像素点标定时就需要去查找上一块的冲突表进行判断与标定,中间像素点按常规处理方式进行,最后一个像素点标定时又需要存储标定值和像素值,每行都按照这个规则进行,直到扫描完整帧图像结束;

在处理过程中我们就很好的利用了s102模块的分块模式,因为下一块标记时第一个像素需要查找上一块对应行的最后一个像素值和标定值所以我们采用图2所示的排列方式,在每块处理对应行时都能保证上一块的对应行已经标定结束,这样直到最后一行处理完毕,整个标定也只延时了3行时间;在图像处理中3行处理时间级别在us级别可以忽略;

初始化标记完就需要进行等价表的整理操作,将具有等价关系的临时标记全部等价为其中的最小值。

如图4所示,当一帧扫描结束,在帧间隙时间进行如下操作:

(1)首先判断块1的等价表t1是否为空,如果为空跳到步骤(2)、如果不为空读出t1的等价关系值进行等价关系的搜索找等价关系的最小值,然后把等价表中的所有等价位置用最小的等价值代替;在读取初始等价关系的时候因为t1的l1是从1开始标记,所以标记的值即是真实存在的值,t1整理完毕得到块1标记结果中的最大值k1;

(2)判断块2的等价表t2是否为空,如果为空跳到步骤(3),如果不为空进行t2等价表的搜索;在块2的等价关系整理过程中,从初始化链表t2中读出的等价值需要进行处理,如果>=l2表示新的等价关系,需要根据t1标记结果中的最大值k1进行处理,以便等价值的连续,如果<l2表示为t1链表中传递过来的等价值,由于t1的等价值都已经标识过所以当<l2时直接采用临时标记值标记写入等价表e1;等价表t2整理完毕得到等价表t2标识的最大值k2;

(3)等价表块n的整理规则跟(2)中流程一样,需要注意的是每个块n的整理都需要记录整理的最大值kn,然后从tn表中读出的等价关系值根据kn在从新定义,这样就可以把图像所分的几个块连接到一起。

举例如果一帧图像分为4块,我们假设块1到快4分别从1、1024、2048、3072开始标记,四块标记结束后最大值k1到kn为100、200、300、400,那么块1中标号为1-100的标记值不变还是为1-100,块2中因为存在着200个新标记,等价表中的200个新产生的标记值为1024到1024+200-1,在整理等价表时由于101-1023位置没有初始化等价值为0会导致后续处理出错,故块2的等价关系整理需要从101到299进行标识而不是从位置1024开始,同理块3从300到599进行从新替换等价值,块4从600到999,这样就将所有块的临时标记值进行了连续的初始化等价表e,达到了整合整帧图像的目的,这样处理完毕以后形成的最终等价表e便只有一个,后续的处理都在最终等价表e中进行压缩,分块处理结束。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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