[发明专利]一种基于事件相机的特征点跟踪方法有效
申请号: | 201910672162.2 | 申请日: | 2019-07-24 |
公开(公告)号: | CN110390685B | 公开(公告)日: | 2021-03-09 |
发明(设计)人: | 史殿习;李凯月;李睿豪;伽晗;王明坤 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06T7/246 | 分类号: | G06T7/246;G06T7/269;G06T7/73;G01C21/16 |
代理公司: | 长沙中科启明知识产权代理事务所(普通合伙) 43226 | 代理人: | 任合明 |
地址: | 410003 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 事件 相机 特征 跟踪 方法 | ||
1.一种基于事件相机的特征点跟踪方法,其特征在于包括以下步骤:
第一步,构建基于事件相机的特征点跟踪系统,事件相机的特征点跟踪系统由数据获取模块、初始化模块、事件集选取模块、匹配模块、特征点更新模块、模板边更新模块组成;
数据获取模块与初始化模块、事件集选取模块、模板边更新模块相连;数据集获取模块从事件相机数据集上下载数据,将获取到的图像帧发送给初始化模块,将事件流发送给事件集选取模块,将IMU数据即惯性测量单元数据发送给模板边更新模块;
初始化模块与数据获取模块、事件集选取模块、匹配模块相连;初始化模块从数据获取模块接收图像帧,从图像帧中提取特征点和边图,得到特征点的位置和特征点周围的模板边的位置,将特征点的位置发送给事件集选取模块,将特征点周围的模板边的位置发送给匹配模块;
事件集选取模块与数据获取模块、初始化模块、特征点更新模块、匹配模块相连,事件集选取模块从数据获取模块接收事件流,从初始化模块或特征点更新模块接收特征点的位置,从特征点更新模块接收特征点的光流,在每个特征点周围从事件流中选取特征点的事件集,将每个特征点的位置以及对应的事件集发送给匹配模块;
匹配模块与初始化模块、事件集选取模块、特征点更新模块、模板边更新模块相连,匹配模块从事件集选取模块接收特征点的位置以及每个特征点对应的事件集,从初始化模块或模板边更新模块接收特征点周围的模板边的位置,将特征点的事件集与特征点周围的模板边进行匹配,求出每个特征点的光流,将每个特征点的位置、特征点周围的模板边的位置和特征点的光流发送给特征点更新模块;
特征点更新模块与匹配模块、模板边更新模块、事件集选取模块相连,特征点更新模块从匹配模块接收特征点的位置、特征点周围的模板边的位置、特征点的光流,利用特征点的光流计算特征点新的位置,将特征点周围的模板边的位置以及特征点新的位置发送给模板边更新模块,将特征点的光流和特征点新的位置发送给事件集选取模块,并将特征点新的位置输出;
模板边更新模块与数据获取模块、特征点更新模块、匹配模块相连,模板边更新模块从特征点更新模块接收特征点周围的模板边的位置和特征点新的位置,从数据获取模块接收IMU数据,通过IMU数据来更新特征点周围的模板边的位置,将模板边更新后的位置发送给匹配模块;
第二步,数据获取模块从事件相机数据集中获取图像帧、事件流和IMU数据;
第三步,采用基于事件相机的特征点跟踪系统对从t0时刻开始到tN时刻结束的时间段内数据获取模块得到的事件流中的特征点进行跟踪,将时间区间[t0,tN]分成一系列的子时间区间[t0,t1],...,[tk,tk+1],...,[tN-1,tN],N表示子时间区间个数,N的大小由事件流时间长度决定,取值范围为N≥1;第k+1个时间子区间表示为[tk,tk+1];跟踪过程如下:
3.1,令时间序号k=0;
3.2,若k=0,初始化模块进行初始化操作,方法为:
3.2.1初始化模块采用Harris角点检测法从数据获取模块得到的图像帧中提取特征点,将提取到的特征点放到集合FD中,令FD为{f0,...,fi,...,fn},fi代表检测到的第i个特征点,n为特征点个数;将特征点的位置看做时间的函数,将t0时刻FD中n个特征点的位置放在特征点位置集合FD0中,FD0={f0(t0),...,fi(t0),...,fn(t0)},fi(t0)代表特征点fi在t0时刻的位置,将FD0发送给事件集选取模块;
3.2.2初始化模块使用Canny边检测法从数据获取模块得到的图像帧中提取边图,每个图像帧对应一个边图;
3.2.3初始化模块选取FD中n个特征点对应的模板边,将FD中n个特征点对应的t0时刻模板边的位置集合PBD0发送给匹配模块,方法为:
3.2.3.1令i=1;
3.2.3.2以特征点fi在t0时刻的位置fi(t0)为中心,在fi(t0)周围选取一个矩形区域大小为s×s,即该矩形的长和宽均为s;将3.2.2检测到的边图中在内的边作为fi的模板边,模板边上的像素点即为fi的模板点;定义内的模板点的集合也即fi对应的模板边,将放到模板边集合PB中,
pj为fi的第j个模板点,将pj的位置视作时间的函数,pj(t0)表示pj在t0时刻的位置,表示在t0时刻pj在矩形区域内,mi表示中模板点的个数;
3.2.3.3令i=i+1;
3.2.3.4若i≤n,转3.2.3.2;否则,表示得到了FD中n个特征点对应的模板边构成的模板边集合PB,定义中模板点在t0时刻的位置的集合令PB中n个模板边中模板点在t0时刻的位置集合将PBD0发送给匹配模块,转第四步;
第四步,事件集选取模块从数据获取模块接收事件流,根据不同的k值分别从初始化模块或特征点更新模块接收不同的数据,在n个特征点周围从事件流中选取特征点的事件集S,将FDk和特征点的事件集S发送给匹配模块,方法是:
4.1若k=0,事件集选取模块从数据获取模块接收事件流,从初始化模块接收tk时刻n个特征点的位置集合FD0,令t1=t0+1,单位为秒,转4.3;
4.2若k≥1,事件集选取模块从数据获取模块接收事件流,从特征点更新模块接收tk时刻n个特征点的位置集合FDk和tk-1时刻n个特征点的光流集合Gk-1,预估子时间区间[tk,tk+1]的大小,根据公式(2)计算tk+1:
其中表示在子时间区间[tk-1,tk]上特征点fi的光流;表示在子时间区间[tk-1,tk]上所有特征点的平均光流,转4.3;
4.3在tk时刻n个特征点的位置集合FDk中每个位置的周围选取每个特征点对应的事件集,方法是:
4.3.1令i=1;
4.3.2从事件流中选出符合公式(3)要求的事件,将这些事件放到特征点fi在tk时刻对应的事件集中,并将放到事件集S中:
表示在一个三维时空区域内的事件的集合,空间范围为特征点fi在tk时刻的位置fi(tk)周围的矩形区域时间范围为区间[tk,tk+1];ed代表中的第d个事件,d={1,2,...,zi},zi表示内事件的个数;xd表示事件ed在像素坐标系中的坐标,表示事件ed发生的时间,表示ed的像素坐标在内;
4.3.3令i=i+1;
4.3.4若i≤n,转4.3.2;否则,说明得到了tk时刻FD中n个特征点对应的事件集S,将FDk和S发送给匹配模块,转第五步;
第五步,匹配模块从事件集选取模块接收FDk和S,若k=0,从初始化模块接收n个特征点对应的模板边的位置集合PBDk,转第六步;若k≥1,从模板边更新模块接收n个特征点对应的模板边的位置集合PBDk,转第六步;
第六步,匹配模块将S与特征点周围的模板边进行匹配,求出tk时刻n个特征点的光流集合Gk,将n个特征点的位置集合FDk、n个特征点对应的模板边的位置集合PBDk和光流集合Gk发送给特征点更新模块,具体方法为:
6.1令i=1;
6.2对特征点fi构造匹配误差函数,方法是:
按公式(4)修正事件ed在tk时刻的位置:
x′d表示计算得到的事件ed在tk时刻的位置,简称为事件ed运动修正的位置,表示在时间区间[tk,tk+1]上特征点fi的光流;符号·表示点乘,定义符号
构造匹配误差函数如下:
e表示误差,pj(tk)代表tk时刻模板点pj的位置;rdj表示ed由模板点pj生成的概率,即ed与pj匹配的概率;公式中双竖线表示对双竖线内的向量进行取模操作,rdj的计算公式如下:
6.3采用EM-ICP算法最小化匹配误差函数,求解得到最优的光流方法是:
6.3.1初始化
6.3.2通过公式(6)计算rdj;
6.3.3更新光流:
6.3.4计算光流的变化量并令将放到tk时刻光流集合Gk中;
6.3.5若表示得到最终的优化结果转6.4;若转6.3.2;σ为光流的变化量阈值;
6.4令i=i+1;
6.5若i≤n,转6.2;否则说明得到了tk时刻光流集合Gk,将FDk、PBDk和Gk发送给特征点更新模块,转第七步;
第七步,特征点更新模块从匹配模块接收FDk、PBDk和Gk,通过光流计算tk+1时刻n个特征点的位置集合FDk+1,将Gk和FDk+1发送给事件集选取模块,将FDk+1和PBDk发送给模板边更新模块,方法是:
7.1令i=1;
7.2计算tk+1时刻fi的位置fi(tk+1),将fi(tk+1)放到集合FDk+1中,
为光流与时间相乘,表示从tk时刻到tk+1时刻特征点fi运动距离;
7.3令i=i+1;
7.4若i≤n,转7.2;否则说明得到了tk+1时刻n个特征点的位置,并得到集合FDk+1,FDk+1={f1(tk+1),...,fi(tk+1),...,fn(tk+1)};将Gk和FDk+1发送给事件集选取模块,将FDk+1和PBDk发送给模板边更新模块;并将tk+1时刻n个特征点的位置集合FDk+1进行显示或存储到结果文件中,转第八步;
第八步,模板边更新模块从数据获取模块接收IMU数据,从特征点更新模块接收FDk+1和PBDk,使用IMU数据对PBDk中的位置进行更新,得到tk+1时刻n个特征点对应的模板边的位置集合PBDk+1,将PBDk+1发送给匹配模块,方法如下:
8.1令i=1;
8.2更新特征点fi对应的模板边在tk+1时刻的位置,方法是:
8.2.1令j=1;
8.2.2定义符号F为与fi相对应的三维空间中的点,Pj为与模板点pj相对应的三维空间中的点,F和Pj均用三维坐标(x,y,z)的形式表示;将模板点pj使用齐次坐标形式表示,格式为(x,y,1),前两维分别表示pj在像素坐标系下的横坐标和纵坐标,得到如下方程:
在tk时刻,
在tk+1时刻,
其中K为事件相机的内参矩阵,为事件相机自带参数;R为从tk时刻到tk+1时刻事件相机的旋转矩阵,t为从tk时刻到tk+1时刻事件相机的平移向量,均通过获取到的IMU数据计算得到;为Pj在tk时刻相机坐标系下的深度、为Pj在tk+1时刻相机坐标系下的深度,为F在tk时刻相机坐标系下的深度、为F在tk+1时刻相机坐标系下的深度;
8.2.3将公式(10)中的两个等式相减,得到tk+1时刻模板点pj相对于fi的相对位置
Pj和F在tk+1时刻的相机坐标系中具有相同的深度,即将公式(9)带入公式(11),并对公式(11)进行化简得到:
对公式(12)化简得到tk+1时刻模板点相对位置的公式为:
符号Nor()表示齐次化操作,即将括号内的坐标转化为齐次坐标;按公式(14)得到tk+1时刻模板点pj的位置pj(tk+1),将pj(tk+1)放到tk+1时刻特征点fi周围模板边的位置集合
8.2.4令j=j+1;
8.2.5如果j≤mi,转8.2.2;否则表示得到了将放到tk+1时刻n个特征点周围模板边的位置集合PBDk+1中,转8.3;
8.3令i=i+1;
8.4若i≤n,转8.2;否则说明得到PBDk+1,将PBDk+1发送给匹配模块,转第九步;
第九步,令k=k+1;
第十步,若kN,转第四步;否则结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910672162.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种闪烁噪声下的多目标跟踪方法及系统
- 下一篇:裸眼3D显示方法及系统