一种用于时域视觉传感器信号处理的快速角点检测方法与流程

文档序号:17094238发布日期:2019-03-13 23:43阅读:182来源:国知局
一种用于时域视觉传感器信号处理的快速角点检测方法与流程

本发明属于机器视觉技术领域,尤其是涉及一种用于时域视觉传感器信号处理的快速角点检测方法。



背景技术:

在人类的所有信息来源中,图像信息占到80%以上。目前硅基半导体图像传感器(包括ccd以及cmos图像传感器)已经完全取代碘化银胶片,成为最主要的光电成像器件。以其产生的数字图像为基础,计算机视觉、机器视觉获得了越来越广泛的使用,业已成为人工智能的一支重要组成部分。

根据成像原理,当前使用的图像都是基于“帧采样”方式产生的:

1、所有像素同时复位后开始感光(收集光电荷),在达到设定曝光时间后停止感光;

2、依次读出每个像素所收集的光电荷,并将其转换为电压;

3、该电压经模数转换后变为数字量,输出后存储。该数字量即为该点的亮度值。所有像素亮度值组成的二维矩阵即为所拍摄图像。

在使用上述“帧采样”图像传感器(相机)的机器视觉系统中,计算机依次处理相机拍摄的图像序列(通常为30帧/秒),采用各种图像处理算法提取图像中的特征、目标并进行各种识别、分析和理解。

当上述“帧采样”方式应用于高速视觉处理时存在以下显著的缺点:

(1)数据冗余。相邻两帧间存在大量冗余信息,与上一帧完全相同的背景区域被重复采样读出。这些冗余信息同时对系统的处理和存储造成巨大压力;

(2)高延迟。场景中发生的变化必须按照逐帧的方式进行采样和输出。这种“变化—感知”间的高延迟对于高速运动目标的识别和跟踪显然是不利的。而如果采用高速相机进行拍摄,则由(1)带来的处理与存储压力会更加巨大。

在生物视觉系统中不存在“帧”的概念,视觉感光细胞只对变化敏感,并将这种变化以神经脉冲的方式传递到大脑视皮层进行处理。近年来,神经工程学研究者根据生物视觉“变化采样”的原理,提出采用超大规模集成电路(vlsi)技术实现仿生视觉传感器。其工作原理包括:

(1)只对场景中的“变化事件(activityevent,ae)”敏感并采样输出。按其性质,ae可分为空间变化(像素与其周边像素的亮度关系发生变化)和时间变化(像素亮度发生变化)两类。目前仿生视觉传感器中最重要的一个分类是异步时域视觉传感器(asynchronoustemporalvisionsensor,atvs);

(2)atvs像素自主检测所受光照的变化:如果没有变化(小于设定阈值),则保持无输出;否则像素产生的ae通过芯片级的串行总线异步输出,像素间互不关联。ae表示为ae=(x,y,p),其中(x,y)为该像素在vs像素阵列中的地址,p表示该ae的极性,例如光强增加为“1”,光强减小为“0”。这种采用地址来表示ae的方法称为地址事件表示(address-event-representation,aer)。对于运动目标来说,ae主要是由目标边界(轮廓)产生的。

(3)由于atvs中所有像素均使用同一组串行总线输出ae,因此需要使用仲裁器来判决同时发生ae的输出顺序,这意味着属于一个移动目标的ae并不是被连续输出的,即两个相邻输出的ae可能并不属于同一个运动目标。

(4)atvs输出的每一个ae被外部接口控制器赋予一个时间戳t,该时间戳指出事件输出的具体时间,因此ae完整表示为ae=(x,y,p,t)。

综上所述,atvs由于只对场景中的变化敏感,因此具有数据量小、实时响应的特点,非常适合于各类机器视觉中的目标定位、跟踪、测速以及形状分析等应用,同时在相同分辨率的情况下,对于系统的处理速度与存储量要求也大为降低。

已有的研究成果中基于harris算子原理,采用事件驱动的方式,通过计算“事件时间表面”的梯度进行角点检测。由于需要进行梯度计算,因此计算量较大,实时性较差;基于fast算子原理设计了事件驱动的焦点检测方法,在两个同心圆周上进行角点检测。该方法虽然避免了梯度计算,但由于要进行大量的连续相似像素搜索,因此计算量较大,抗噪声性能较弱。



技术实现要素:

有鉴于此,本发明旨在提出一种用于时域视觉传感器信号处理的快速角点检测方法,以实现角点检测,同时可以同时判断角点的方向及类型,为进一步的目标识别提供更加丰富的特征信息。

为达到上述目的,本发明的技术方案是这样实现的:

一种用于时域视觉传感器信号处理的快速角点检测方法,具体包括如下步骤:

(1)数据初始化;

(2)读入指定类型的新事件ae(x,y,p,t);

(3)更新事件队列,构建局部最近事件分布图;

(4)局部最近事件分布图分区二值化;

(5)角点检测;

(6)若还有未处理事件,返回(2);否则结束。

进一步的,所述步骤(1)中,具体包括如下步骤:

(1)构建固定长度l的先进先出队列qe,用于保存过去一段时间内发生的指定类型事件,建议值l=2000;

(2)构建局部最近事件分布图a,其中a为一个初值为0的7*7二维数组;

(3)将最开始的l个指定类型事件存在qe,从第l+1个事件开始处理;

(4)构建角点查找表。

进一步的,所述步骤(3)中,将ae(x,y,p,t)存入队列qe头部,删除队尾的最旧事件,完成更新事件队列。

进一步的,所述步骤(3)中,构建当前事件的局部最近事件分布图具体包括如下步骤:

(31)新建空的a;

(32)在l中搜索以(x,y)为中心的7*7小窗口内各像素发生的事件,若找到将a中的对应位置置1;

(33)对a中进行消噪:若某个位置为1,而其周围所有位置均为0,则判断该位置的事件为“疑似噪声”,将该位置清0。

进一步的,所述步骤(4)具体包括将构建得到的7*7局部最近事件分布图均匀地划分为8个扇形区域,统计各扇形区域的面积,除去中心点,每个扇形区域的面积为(49-1)/8=6个像素。每个扇形的面积si(i=1,…,8)为:

si=∑k0.5/1*a(x,y),s.t.a(x,y)∈si式1

其中a(x,y)为si中的像素值(有事件为1,无事件为0),当像素由两个扇形区域平分时,k=0.5,否则k=1。

将以上得到的si进行二值化:

其中bsi为si的分区二值化值,tl为“有事件阈值”,建议值4.5,分区二值化后的局部最近事件的每个分区的取值为1或0。

进一步的,所述步骤(5)具体包括如下:

将局部最近事件分布图各分区的二进制值按照i至viii的顺序排列:

bs=b1b2b3b4b5b6b7b8,bi=0or1,i∈[1,…,8]式3

该0/1串表明了事件点周围的最近事件分布情况;

判断方法如下:

标准化:将bs循环右移,直到b1为1,并将右移次数n的二进制表示附加在bs后面,n=000~111,作为该候选角点的方向,bs不可能为全0(噪声已在构建a时被删除);

根据bs的2-8位在角点查找表中检索当前bs是否表示角点:如果是,返回{角点类型、角点位置、角点方向},否则返回空。

相对于现有技术,本发明所述的一种用于时域视觉传感器信号处理的快速角点检测方法具有以下优势:

(1)本发明由于atvs采用仿生视觉的变化驱动采样、异步自主输出、地址事件表示的成像原理,因此具有极低数据冗余、高实时性与时间分辨率的特殊优势,非常适合应用于高速运动场景的视觉应用,在无人飞行器、自主机器人等领域具有广阔的应用前景

(2)本发明的显著优点是计算简单,计算量小,使用普通嵌入式处理器即可实时完成角点检测;同时本方法可以提取角点的方向及类型,为进一步的目标识别提供更加丰富的特征信息,为准确的目标识别、跟踪提供了更加实用和鲁棒性的方法。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的帧采样成像与变化采样成像的比较示意图;

图2为本发明实施例所述的atvs结构示意图;

图3为本发明实施例所述的角点示意图;

图4为本发明实施例所述的局部最近事件分布图示意图;

图5为本发明实施例所述的本发明的计算原理示意图;

图6为本发明实施例所述的基于局部最近事件分布图的角点判断方法示例;

图7为本发明实施例所述的本发明的方法的流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本发明。

本发明公开了一种用于时域视觉传感器信号处理的快速角点检测方法,并给出具体实现步骤。与“帧采样”成像方式不同,视觉传感器只对拍摄场景中的光强变化敏感,其输出的视觉信息具有实时、极低冗余和小数据量的特点,处理运算量和存储需求较传统的帧采样成像大为降低,因此更加适合高速视觉应用。本发明采用事件驱动的方式,根据事件间的时空相关性判断每个输入事件是否由角点产生。在计算过程中,首先构造以输入事件为中心的“局部最近事件分布图”,然后对“局部最近事件分布图”进行分区统计及二值化处理。依据得到的分区二值化表示,采取查表法判断输入事件是否由角点产生。除角点检测,本方法可以同时判断角点的方向及类型,为进一步的目标识别提供更加丰富的特征信息。

图1显示了帧采样成像与变化采样成像的比较。在传统的“帧采样”成像方式中,所有像素点使用固定周期内的光电转换累计量作为输出值,其优势是包含了所有空间信息,缺点是固定帧间间隔损失了时域连续性。仿生视觉成像的变化采样则只对光强变化敏感,以“事件”的形式输出变化的位置、属性和发生时间,具有极短的变化感知延迟和很小的数据量,但缺乏像素间的空间信息(像素间的强度对比)。

图2给出了atvs结构。atvs像素的感光模块将光照强度转换为光电流强度,量化比较模块经过积分比较光强的变化幅度。当变化幅度超过前次积分值的预定比例(通常设置为15%)时,像素会向仲裁模块发出输出请求。外围接口电路将像素输出的坐标、变化极性和实际输出时间组合为一个“事件”输出。

图3给出了角点示意图。在帧图像中,角点是通过像素间的灰度差异检测出来的。(a)中直线上的各点只有垂直梯度,水平梯度为0,因此不存在角点。(b)中两直线交点处的像素其水平梯度和垂直梯度均不为0,可以判定为角点。(c)中的线段交叉点的自相关矩阵的特征值r较小(式6),两个相互垂直的特征值中,一个较大另一个较小,是否判定为角点取决于判断规则。

图4为局部最近事件分布图示意。(a)中t为时间轴,x-y为空间位置坐标,箭头表示最近发生的事件。由一个角点形状引发的多个事件在空间上是局部的,在时间上是相近的。(b)将(a)的情况用二维数组表示,中心点为当前处理事件的位置,周围最近有事件发生的像素涂为深色,即将时间分布转换为空间分布。

图5给出了本发明的计算原理。构建以当前事件为中心的7*7局部最近事件分布图(a),将其分为8等份,每份代表了该区域的重新情况(b);根据每个区域中事件的出现多少,将每个扇形区域进行二值化表示(c)。

图6给出了基于局部最近事件分布图的角点判断方法示例。(a)中两个间隔为3的1表示一条直线,无角点;(b)中两个1间隔由一个位置,判断为焦点;(c)中出现了连续的三个1,可认为事件呈区域型分布,无角点。

图7给出了本发明的计算步骤。

原理说明

一、局部最近事件分布图的定义

atvs产生的异步事件流包含了场景中的变化信息,这些变化信息是以连续的事件流(变化位置-时间-极性(事件))来体现的。由于单独一个事件并不能反映整体空间的变化情况,因此就必须根据过去一段时间中事件的发生情况进行角点(或其他特征)检测。事件驱动型角点检测的特点:

1、由角点运动引起的所有变化事件是同时发生但串行输出的,因此检测也是一个事件驱动的串行过程,当足够多事件被输出时就能判断出角点的存在;

2、每当处理系统读入一个事件,即可对该事件的位置是否构成一个角点进行判断。角点检测依赖其空间特点,因此需要对该事件相邻位置在过去一段时间中发生事件的情况进行考察:过去一段时间中该事件周围发生事件的位置是否构成了一个角点。“过去一段时间”的长度应尽可能保证构成角点的所有点都发生过一次事件,如果这个时间太短,则有可能检测不成功;

3、atvs事件包括了光强“增加”事件和“减弱”事件两种。这两种事件理论上是对称出现的,因此单独考虑一种即可;

4、由于atvs的像素面积较大,事件中噪声事件的比例较高,因此在算法中必须考虑噪声的影响。

综上所述,以读入事件的位置为中心的各像素在过去一段时间中发生的事件可构成一个“局部最近事件分布图”,即将事件的时间局部性转换为空间分布:发生事件的位置标记位为1,未发生事件的位置标记为0。进而根据“1”的位置分布进行角点判断。

二、局部最近事件分布图的构造方法

atvs的像素面积通常较“帧采样”图像传感器的像素面积大10倍以上,因此噪声水平较高。atvs噪声表现为突发、孤立的“噪声事件”。由于在角点检测的过程中需要判断事件位置的空间连续性,因此必须消除这些噪声。本发明依据噪声具有的突发、孤立的特点进行消噪。构建局部最近事件分布图的过程如下:

1、构建一个固定长度l的先进先出队列保存过去一段时间内发生的事件,l与atvs事件发生频率有关;局部最近事件分布图为一个初值为0的7*7二维数组;

2、读入一个指定类型的事件ae(i,j,p,tc)(p表示增事件或减事件),新建对应的局部最近事件分布图a,中心点置1:

3、在过去事件队列中,依次搜索以(i,j)为中心的7*7小窗口内各像素发生的同类型事件,若找到将a中的对应位置置1;如果未找到事件,则当前事件点为非角点,转而检测下一个事件。

4、在得到的a中进行消噪:若某个位置为1,而其周围所有位置均为0,则判断该位置的事件为“疑似噪声”,将该位置清0。

三、角点检测

局部最近事件分布图表示了某点周围事件的出现情况。为了应对事件分布的离散分布(直线运动产生的事件并非严格的直线分布),提高算法的健壮性,本发明采用基于局部最近事件分布图“分区二值化”的判断方法。

1、局部最近事件分布图的分区二值化

为考察待检测点周围事件的分布情况,按照附图5将7*7大小的局部最近事件分布图均匀地划分为8个扇形区域,通过统计各扇形区域的面积来表征事件分布:

因为中心像素点总为1,因此不计算在内,每个扇形区域的面积为(49-1)/8=6个像素。扇形区域的面积si(i=1,…,8)为:

si=∑k0.5/1*a(x,y),s.t.a(x,y)∈si(1)

上式中a(x,y)为si中的像素,当像素由两个扇形区域平分时,k=0.5,否则k=1。

为了便于角点判断,将以上得到的si进行二值化处理:

上式中bsi为si的分区二值化表示,tl为“有事件阈值”。经分区二值化,局部最近事件分布图形成如图5(c)形式,每个分区的取值为1或0。

2、角点检测

将局部最近事件分布图各分区的二进制值按照i~viii的顺序排列,得到:

bs=b1b2b3b4b5b6b7b8,bi=0or1,i∈[1,…,8](3)

bi表示各个分区二值化的结果(0/1),该01串表明了事件点周围的最近事件分布情况。判断方法如下:

(1)标准化:将s循环右移,直到第一位为1,并将右移次数n的二进制表示附加在s后面,n=000~111,作为该候选角点的方向;

bs=b1b2b3b4b5b6b7b8n1n2n3,ni=0or1,i∈[1,2,3](4)

n1n2n3表示该角点候选的方向。

当b1~b8均为0时,表明当前时间点周围“曾经”发生的时间很少,当前事件点不构成角点,因此不存在标准化表示,直接转去处理下一个事件。

(2)对于标准化的分区二值化表示bs,采取查表的方法判断是否角点以及角点的类型。角点查找表的检索是分区二值化表示bs的b2~b8(b1总为1)。对于b2~b8的128种组合,对应的表项定义了其是否为角点以及角点的类型。例如bs=10000000,000表示水平线段的左端点(i分区为1,其他分区为0,方向角000)。

本发明的具体实施过程如下:

设atvs的像素阵列大小为m*n,事件ae(x,y,p,t)表示地址为(x,y)的像素产生了p属性变化(p=1或0,光强增加或减少),该变化在t时刻被输出。由于理论上增加或减少事件的对称性,只处理1种即可。角点检测具体步骤如下:

1、算法整体流程

(1)算法初始化;

(2)读入指定类型的新事件ae(x,y,p,t);

(3)更新事件队列,构建局部最近事件分布图;

(4)局部最近事件分布图分区二值化;

(5)角点检测;

(6)还有未处理事件,返回(2);否则结束。

2、算法初始化

(1)固定长度l的先进先出队列qe,用于保存过去一段时间内发生的指定类型事件,建议值l=2000;

(2)局部最近事件分布图a为一个初值为0的7*7二维数组;

(3)将最开始的l个指定类型事件存在qe。从第l+1个事件开始处理;

(4)构建角点查找表,详见步骤7。

3、更新事件队列:将ae(x,y,p,t)存入队列qe头部,删除队尾的最旧事件。

4、构建当前事件的局部最近事件分布图

(1)新建空的a;

(2)在l中搜索以(x,y)为中心的7*7小窗口内各像素发生的事件,若找到将a中的对应位置置1;

(3)对a中进行消噪:若某个位置为1,而其周围所有位置均为0,则判断该位置的事件为“疑似噪声”,将该位置清0。

5、局部最近事件分布图的分区二值化

将构建得到的7*7局部最近事件分布图均匀地划分为8个扇形区域,统计各扇形区域的面积,划分方法如图5(b)所示;

除去中心点,每个扇形区域的面积为(49-1)/8=6个像素,每个扇形的面积si(i=1,…,8)为:

si=∑k0.5/1*a(x,y),s.t.a(x,y)∈si式1

其中a(x,y)为si中的像素值(有事件为1,无事件为0),当像素由两个扇形区域平分时,k=0.5,否则k=1;

将以上得到的si进行二值化:

其中bsi为si的分区二值化值,tl为“有事件阈值”,建议值4.5,分区二值化后的局部最近事件分布图形成如图5(c)形式,每个分区的取值为1或0。

6、角点检测

(1)将局部最近事件分布图各分区的二进制值按照i至viii的顺序排列:

bs=b1b2b3b4b5b6b7b8,bi=0or1,i∈[1,…,8]式3

该0/1串表明了事件点周围的最近事件分布情况。判断方法如下:

(2)标准化:将bs循环右移,直到b1为1,并将右移次数n的二进制表示附加在bs后面,n=000~111,作为该候选角点的方向。bs不可能为全0(噪声已在构建a时被删除)。

(3)根据bs的2-8位在角点查找表中检索当前bs是否表示角点:如果是,返回{角点类型、角点位置、角点方向},否则返回空。

7、建立角点查找表

角点查找表的内容如下:

表1

角点查找表共128行,标准化bs中的2~8位为索引项(0000000~1111111),由使用者判定对应的事件分布图是否为角点。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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