文章主要针对event-based的traking中,两种事件图像的表示类型,TS(time surface)和EM(event map)的在不同的场景中运行进行比较,然后提出了一种TS和EM结合互补增强版。有源码:https://github.com/gogojjh/ESVO_extension
首先搞清楚什么是TS(time surface)和EM(event map)。
EM(event map):在一个时间区间内(时间区间应该是不固定的)的一组事件n(事件数量是确定的)被聚集到图像上形成事件图像(事件帧),有事件的点(无论on/off?)像素为255,剩下的像素为0。
特点是异步的方式输出(事件数量够了就冲冲冲?),优点是快,生成一个EM的时间<0.5ms。缺点是这一组事件的数量n应该怎么设置,如果n设置少了,那么摄像机快速移动或者场景对比度高(就是事件量暴增)的情况下,短时间内生成的EM数量也会暴增,这个时候tracker计算负担会增加。
TS(time surface):就是这个公式,x表示一个像素,t是某个时间戳,tlast(x)表示在t之前在像素x上生成的最后一个事件时的时间,I(x,t)表示在时间t的时候,像素x的强度,所以可以看出来,如果在像素x上生成的最后一个事件时的时间tlast(x)刚好等于时间戳t,那么此时像素x的强度刚好是1,在像素x上生成的最后一个事件时的时间tlast(x)离t越久,那么x的强度I(x,t)的值就越小(越接近0),所以说TS强调了最近的事件和不是过去的事件。TS处理的时候为了方便还会把[0,1]的强度值变为[0,255]。
特点是同步的(时间戳或时间间隔固定?),优点是信息量更多,缺点是一个TS的生成时间是5-10ms。另一个缺点是面对无纹理或者相对静态的情况下,事件数量少,固定时间间隔生成的TS所能捕获到的事件数量不多,会导致track崩掉?
作者综合TS和EM的特点做了一个Enhanced Tracker with Degenearcy Check,TS和EM都作为输入,优先使用TS的tracker。这里使用了一个因子λ,λ是Hessian matrix的最小特征值(Hessian matrix怎么来的,懒得算),然后设置一个阈值λth,如果λ<λth,则使用EM的tracker。
接下来是实验,用eigen来搞定非线性优化,因为优化是与已知的3Dmap之间进行的,所以还得用ESVO的mapping模块实时生成3dmap。数据集使用了两个公共的,和一个模拟的[Esim: an open event camera simulator]。
整了6个tracker来跑,TS,EM2000,3000,4000,5000,TSEM4000,这些数字就是EM的那个数量n,TSEM4000就是作者提出来的那个缝合。实验结果如下,
TS在simu office 6DoF,rpg bin, rpg box这三个表现好,因为这三个纹理比较多,相反的,EM在这三个数据集上表现得比较拉。
在室内飞行的upenn indoor flying3数据集上,EM比TS强,因为这个数据集悬停比较多,不动的情况下恒定速率的TS可能会产生不可靠的事件帧(因为获得信息少)。
作者提出的缝合在室内飞行的upenn indoor flying3上,TS发生退化,λ降低到阈值,tracker切换到了EM,所以ATE没拉跨。
作者也表示缝合tracker在simu poster 6DoF, simu checkerboard 6DoF, 和rpg box表现不行的原因是参数没调好。
然后是计算时间的比较:
感觉都差不多? 作者说位姿估计花了大约7-8ms,作者的缝合里的Degenearcy Check花了大约0.5-1.5ms。