发明内容
针对上述问题,本发明提出了一种基于金字塔结构的光流法(Pyramidal KLT)和Harris二次匹配算法的并行跟踪匹配计算方法,并提出了面向可穿戴设备的混合追踪SCAAT技术。采用双核CPU+GPU群核并行处理方法,在CPU内进行基本调度运算、P-KLT跟踪算法与二次匹配计算,同时在GPU内进行基于Harris算法的角点检测和提取。通过这种并行方式,能够提高跟踪算法的鲁棒性和稳定性,而且实时性强、运算效率高,能够弥补普通计算方法同步性低、计算速度慢的缺陷。
为实现上述方法,本专利采用如下的具体跟踪与匹配算法,其包括以下步骤:
(1)提出一种面向可穿戴设备的混合跟踪与特征提取技术,保证多跟踪器的实时性数据采集同时避免数据冲突;
(2)Harris角点检测CRF优化方法,对CRF算法进行改进,完成自然特征无标记目标的特征点精确提取;
(3)基于GPU并行进程机制实现对Harris角点的检测,侧重阐述了在多设备控制条件下Harris角点检测并行算法的实现方法;
(4)基于CPU的P-KLT并行特征跟踪算法,给出相邻帧中特征点的位移偏差;
(5)二次匹配优化算法,采用BGNCC初始粗匹配和RANSAC精匹配提高匹配鲁棒性。
所述步骤(1)中,本发明提出了一种面向可穿戴设备的特征跟踪方法,使用多传感器SCAAT-EKF(single-constraint-at-a-timeExtendedKalman Filtering)互补式融合的数据采集数据方式,最大程度降低模块的局限性,将不同类型的姿态信息进行整合与分析,从而避免跟踪失败,增强跟踪鲁棒性和稳定性。
所述步骤(2)中,针对原始的Harris算法单一阈值设定、定位精度低等缺点,对原始的Harris算法进行了改进。原始Harris算法中角点响应函数中的k值是一个经验常数,随意性比较大,会造成Harris角点提取可靠性的降低,在图片不一样的情况下,很容易影响到角点提取的准确性,改进的算法根据角点响应CRF函数计算原图像上对应的每个像素的CRF。具体包括以下步骤:
步骤A:建立与图像x方向一阶导数和Y方向-阶导数局部自相关函数相联系的2*2自相关对称矩阵M。
步骤B:将2*2自相关对称矩阵M代入Harris算子角点响应函数CRF。
步骤C:根据像素点的CRF值判断是否为提取出的角点。
所述步骤(3)中,本发明中选择的方法摒弃了之前广为运用的CPU角点检测算法而选取了另一种基于GPU的并行Harris角点检测算法。该算法依据GPU计算特点和任务划分的特点,采用CPU+GPU协作计算模式,将任务划分成多个子任务,并对划分的子任务给出合理的并行调度算法,使GPU和CPU各自发挥特点,从而充分挖掘GPU通用计算能力。
所述步骤(4)中,理论上的KLT算法是基于窗口内小而连贯运动假设,然而面向可穿戴设备的视频跟踪器拍摄的是大而不连贯运动,因此普通KLT算法在实际跟踪中实时性差、失败率高。因此借助图像金字塔方式来解决:首先根据SACCT算法在较大的空间尺度上进行跟踪获取图像帧,再通过求解SSD函数得到窗口位移d=(dx,dy),最后使用P-KLT迭代结构算法对图像金字塔自下向上采样并对图像像素进行处理,由此可保证KLT算法在对于缩放变换的有效性。
所述步骤(5)中,根据以上步骤采用Harris算子提取出的目标角点,利用BGNCC方法进行角点粗匹配,使用RANSAC方法进行错误匹配角点的剔除,最后再根据互相的匹配角点,计算其方差,根据方差排序,排除掉偏移量比较大的点,利用计算排序后的匹配角点的偏移均值,从而得到目标物体的位置。具体包括以下两部分:(1)采用BGNCC算法进行特征点初步匹配。(2)使用RANSAC算法消除BGNCC算法的错误匹配角点,采用角点均值方差的方法排除偏移值比较大的一些角点,通过计算其偏移均值的方法,计算目标的跟踪窗口。
本发明的有益效果在于:这种面向可穿戴设备的跟踪与匹配并行计算方法充分考虑了目标追中的不稳定性和匹配错误率高的缺点,在提高运算效率的同时,增强跟踪鲁棒性和稳定性,克服了普通计算方法同步性低、计算速度慢的缺陷,解决了多传感器跟踪数据冲突与单一矩阵变换匹配率低的问题,满足了面向可穿戴设备目标跟踪的高要求,尤其是在可穿戴设备视觉并行跟踪中更能体现其优势。
具体实施方式
本发明的面向可穿戴设备的跟踪与匹配并行计算方法,包括以下步骤:
(1)面向可穿戴设备的混合跟踪与特征提取技术;
(2)Harris角点检测CRF优化方法,对CRF算法进行改进,完成自然特征无标记目标的特征点精确提取;
(3)基于GPU并行进程机制实现对Harris角点的检测;
(4)基于CPU的P-KLT并行特征跟踪算法,给出两帧中特征点的位移偏差;
(5)二次匹配优化算法,采用BGNCC初始粗匹配和RANSAC精匹配提高匹配鲁棒性。
一、面向可穿戴设备的混合跟踪方法
可穿戴技术是在混合跟踪技术基础上发展而来,是体态跟踪与监测的核心技术,能够提供高精度鲁棒性的姿态与位置信息。当前可穿戴设备包括智能眼镜、智能手表、数据手套等可整合进用户随身配件的设备,在硬件上主要集成GPS定位、陀螺仪、朝向仪、加速度传感器、惯性跟踪器、压力重力传感器和视觉摄像机等模块。特征跟踪使用多传感器SCAAT-EKF(single-constraint-at-a-timeExtended Kalman Filtering)互补式融合的数据采集方法,能够最大程度降低模块的局限性,将不同类型的姿态信息进行整合与分析,能够避免跟踪失败,增强跟踪鲁棒性和稳定性。SCAAT-EKF方法能够高效融合异步串行传感器测量数据,有效避免数据冲突而产生的错误。
SCAAT解决了在传感器单个测量参数个数小于传感器状态估计参数个数条件下的退化解问题,其核心思想是单个传感器测量只提供用户状态部分信息并能够增量提高先验状态,从而在单个传感器测量被迭代用于合并一个新传感器的可测数据时获得低延迟和高精度的估计值。面向可穿戴设备的跟踪技术难点在于视频摄像头的跟踪,需要根据采集到的画面进行角点提取和匹配,从而完成对目标的实时跟踪。如图1所示,当使用EKF实现基于SCAAT的姿态跟踪时,需要对所有跟踪器构建一个统一的过程模型,而对每个跟踪器单独构建一个测量模型,以协调处理跟踪器之间的测量不同步和不完整测量信息,这样就能解决视频跟踪与其他传感器测量信息的融合,利用多通道采集方法全方位跟踪目标动态特性。以下部分着重阐述了可穿戴设备视觉并行跟踪算法的设计。
二、针对CRF改进的Harris角点提取优化运算方法
Harris角点检测是Moravec角点检测算子的改进,特别是给出与自相关函数相联系的矩阵M。M矩阵的特征值是自相关函数的一阶曲率,根据曲率的大小就能判断出该点是否为点特征。其具体实现原理为:在图像中设计一个局部检测窗口,通过判断该窗口沿任一方向作微小偏移是否都会引起窗口的平均能量有很大变化且超过设定的阈值,如果是就将窗口的中心像素点提取为角点。根据以上原理简列步骤如下:
首先,建立于图像x方向一阶导数和Y方向-阶导数局部自相关函数相联系的2*2自相关对称矩阵M。根据Harris算法公式:
上式中I为图像的灰度函数,ω指定一个图像窗口,ω(x,y)是加权窗口,在指定的窗口内为统一值,其他处为0。根据全微分公式,可变换为如下形式:
对于任何微小的移动E(u,v)根据上式的导数项展开后化为二次型有:
其中求得M即为自相关对称矩阵。
然后,将2*2自相关对称矩阵M代入Harris算子角点响应函数CRF(Corner ResponseFunction):CRF=det(M)-ktr2(M),其中,M为特征矩阵,det为矩阵的行列式,tr为矩阵的迹,k是常数,一般取0.04≤k≤0.06。由于原始算法单一阈值设定、定位精度低等缺点,考虑到CRF实质是角点检测信号,行列式的值大、迹的值大小为角点信号,反之为边缘信号,或者是其他信号,对原始算法进行改进,优化后的算法采用下式进行计算角点响应函数:
其中,ε是一个值很小的数,能够避免矩阵M的迹有可能出现零的情况。
最后,根据像素点的CRF值判断是否为提取出的角点,当CRF值大于某一对应阈值R且在其领域内取得局部极大值时就被判断为Harris角点,反之则不是所要获取的角点。
三、基于GPU的并行Harris角点检测算法
本发明在优化Harris角点提取算法的基础上,实现了使用GPU进行角点检测,同时与特征点跟踪匹配并行处理,利用双核CPU+GPU架构完成对面向可穿戴设备SCAAT算法的自然无标记特征的提取,如图2所示。实现HatriS角点检测的并行运算主要步骤如下:
步骤1:系统可穿戴设备初始化并取得设备信息,根据设备数目枚举设备信息等。
步骤2:读取图像数据,将位图数据读入特定的结构体中,对图像的Flag、Color、Size、Hight、Width等数据进行存储。
步骤3:对X、Y方向的高斯求导模板数据处理,并将模板数据传输到GPU全局存储器和常数存储器中,采用并行GPU页存储技术,加速高斯模板访问速度。
步骤4:系统调度第一个内核执行影像高斯卷积计算函数,这个进程中主要包含以下4个步骤:
(1)确定内核的执行配置,根据数据密度和计算量,设定线程的网格维度和块维度。
(2)输入数据分解,每个线程块把相关的数据从显存读取到共享存储器,同一线程块的各线程均完成相应数据加载(通过线程块内同步确保完成)。由于共享存储器位于GPU内,且距离计算单元很近,其访问速度很快,所以要最大程度地利用共享存储器。
(3)发起内核进行线程间的并行计算,线程块利用共享存储器和寄存器在同步控制下,并行完成每一个像素对相应X和Y方向的影像高斯卷积数据的计算。
(4)将GPU计算的数据结果从GPU共享存储器中写回各自对应的全局存储器。
步骤5:系统调度第二个内核计算梯度图像中对应影像像素点兴趣值,整个过程封装在内核函数中,同时完成X和Y方向的影像像素点梯度平方值的求和。
步骤6:数据读出,由于GPU存储空间有限,所以运算结束后,还需将兴趣值结果从GPU传回CPU。
步骤7:由系统进行非最大值抑制计算,并计算出符合阈值要求的像素点坐标。
步骤8:图像数据输出,适当修改图像文件的位图信息结构体,将参数数据写入到文件中,形成处理后的图像。
四、P-KLT并行特征跟踪算法
经过以上步骤能够精确提取出某一帧的特征点,KLT跟踪算法是将这些特征点同上一帧进行比较,得出位置偏移量从而实现特征的跟踪。由于这种跟踪方法精确度高,因此需要较高的时间同步性,采用角点检测与跟踪匹配并行的计算方法能够最大程度地增强程序处理的时序性与稳定性,降低匹配错误率。除此之外,由于帧之间的偏差较小,而且经过Harris算法提取出的特征点都进行了矩阵变换,因此仅对特征点进行局部范围搜索比较,不需要对每个特征点进行比较。虽然KLT算法能够加速特征点的搜索和跟踪,但是由于不支持两帧之间的同比例缩放,常导致跟踪失败。因此采用图像金字塔KLT(Pyramidal KLT)方式,在较大的尺度上进行跟踪,通过金字塔结构自上而下对图像采样处理,从而保证KLT算法在对处于缩放变换时的有效性,利用平移矩阵得到更理想的跟踪效果。具体的算法实现步骤如下:
步骤1:获取图像帧。根据SCAAT混合跟踪方法得到一个灰度图像包含特征局部区域信息的窗口W,并认为时间连续和空间一致,t时刻的图像图像帧用I表示,t+τ时刻的图像帧用J表示,I(X)与J(X)分别表示对应时刻的像素,满足条件公式:J(AX+d)=I(X)。理想条件下帧J中存在一点J(AX+d)和帧I中的I(X)点是同一个像素,但由于实际提取图像信息时噪音的存在,因此将运动参数的求解转化为找到使SSD函数最小化时的特征窗口位移d。
步骤2:求解SSD函数。设n(X)为在时间τ内由于光照变化产生的噪声,则J(AX+d)=J(X)+n(X),将n(X)平方并在整个窗口上积分,得到最小化误差SSD函数:
ε=∫∫(n(X))2ω(X)
步骤3:计算特征窗口位移d。上式中ω(X)为特征区域内像素点的加权系数,通常取为1,对公式进行泰勒级数展开,并截取线性项,根据SSD函数两边求导后得到式:当导数为零时误差最小,最终得到Td=a。其中:
求解上式可得到特征窗口位移d=(dx,dy)。
步骤4:使用P-KLT迭代结构优化算法。具体步骤为,首先,在金字塔的最底层对帧图像进行仿射矩阵变换即KLT算法。然后将计算出的值以初始运动预测结果的方式传递给上一层,这个值即为两帧之间的像素位移和仿射变换结果,接着将得到的结果进行第一步的矩阵变换,并将值以同样的方式传递给下一层,最后反复迭代至金字塔的最高层。这样就能将不满足小而连贯运动缩放比例的帧出现的可能性降低,从而实现更快更长的运跟踪。
五、二次匹配并行计算方法
针对在GPU中根据Harris算子提取出的目标角点,在双核CPU并行进程中调用二次匹配算法,利用特征点分布特性和双向最大归一化相关系数(Bidirectional GreatestNormalized CorrelatiVe Coefficient,BGNCC)进行粗匹配,然后使用随机采样符合法(Random Sampl e Consensus,RANSAC)方法进行错误匹配角点的剔除,最后再根据互相的匹配角点,计算其方差,根据方差排序,排除掉偏移量比较大的点,然后计算排序后的匹配角点的偏移均值,从而得到目标物体的位置。具体步骤如下:
首先,对特征点进行双向最大归一化BGNCC初始粗匹配。设W1、W2为两幅大小相同的窗口,(x1,y1)的取值范围是匹配窗口的大小,从W1图像窗口中提取的特征点为pi,从W2图像窗口中提取的特征点为pj,u1,u2为相关窗口内像素灰度的均值。则归一化互相关函数NCC公式为:
NCC匹配方法能够去除低频噪声干扰,首先在帧A取得一角点,寻找在相邻帧B中和该角点相关性(即Cij值)最大的角点,根据设定的阈值g,若Cij大于g,将筛选后的特征角点作为给定角点的匹配点,当双向搜寻到最大相关性的角点彼此对应时,完成角点初始粗匹配。
其次,对特征点采用随机采样RANSAC算法精匹配。BGNCC虽然可以得到比较高的正确匹配率,到那时当物体运动时仍会存在误匹配。特征点匹配的正确性对后续目标位置偏移的估计有直接影响,因此采用RANSAC算法消除错误匹配并求出图像间的最优变换。RANSAC算法基本思想:构造一个目标函数输出矩阵M,多次提取最小点集估计该函数中参数的初始值,根据初始参数来判断是否满足需要的估计参数,从而把数据分为“匹配点”和“排除点”,最后反过来利用所有的“匹配点”重新计算目标函数的参数。如图3所示,根据以上思想列出具体算法步骤如下:
步骤1:初始化N=1,TrialCount=0。N为得到比例p所需要的采用次数,p取大于0.95的值。TrialCount为当前采样次数。N与p满足以下关系:p=1-(1-ε′s)N,其中s为每次采样的特征点的数目。
步骤2:判断N是否大于TrialCount,如果是则随机选取满足三点不共线特征的四个点,并限制随机选取的次数,如果超过限制次数或者是N小于TrialCount,则输出矩阵F。
步骤3:在满足以上条件后计算矩阵F,得出实际匹配点与其估计的匹配点之间的几何距离dis。其中基本变换矩阵F的计算公式为:x′TFx=0,x、x′T为两幅图像的任一对匹配点。采用Sampson距离计算公式划分匹配点和排、、除点:
步骤4:通过dis与阈值t的比较,统计匹配点个数ninliers并存储匹配点,判断当前采样次数是否大于最大采样次数,如果是则退出循环输出矩阵F,如果没有到达最大采样次数,则重置N,TrialCount执行步骤1,直到满足条件退出循环。这样就能利用二次匹配并行算法计算出角点偏移均值,从而完成精确角点匹配与跟踪。