随着人工智能和机器人技术的飞速发展,实时三维形状测量技术受到越来越多的关注
[1]。常用的三维重建方法有结构光、激光雷达、飞行时间和立体视觉等。其中立体视觉由于方便快捷、低成本、高精度的优点,被广泛应用于工业制造
[2]、农业生产
[3]和医学
[4]等领域中。
基于立体视觉的三维重建依赖于从不同视角获取目标物体的多幅图像,之后通过图像上的像素信息得到同一空间点在各幅图像间的对应关系以及空间映射关系,再通过像素点和空间坐标之间的关系得到目标物体的三维信息
[5]。在基于立体视觉的三维重建中,其测距原理是三角测量技术,核心是对多幅图像间的相同特征点进行匹配。因此,特征点匹配的精度直接影响三维重建模型的准确度,匹配点的数量直接影响三维重建的结果。相关学者提出了多种基于不同工作原理的立体匹配方法来提高特征点匹配的精度
[6-8],其中KLT算法由于其速度快、准确率高的优点,受到了广泛的关注,并得到实际应用
[9-11]。
KLT算法属于光流法的一种,通过将特征点进行提取与匹配并利用图像信息的窗口在特定图像的灰度差平方和作为度量完成算法运行。由于光流法本质上是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息与三维信息,因此KLT算法需要在满足一定拍摄条件与基本假设下才能成立:1)亮度恒定;2)极短时间内物体伴随的是微小运动;3)相邻的临界点做的是相似运动。
KLT算法在追踪结构振动中应用广泛,韩国学者Jeon等
[12]针对传统的KLT算法无法跟踪特征点,在测量电缆结构位移期间使用卷积神经网络自动选择感兴趣区域(ROI),并使用改进的KLT算法使得电缆特征点的跟踪更稳健,均方根误差为1.077像素,成功地测量了电缆位移;Tan等
[13]检测桁架结构每个节点周围ROI内的高质量特征点,然后这些点由KLT算法沿着视频帧序列获得振动位移时程。除了结构振动方面的应用,KLT算法在追踪系统构建上的应用也受到了业内的广泛关注,Huang等
[14]提出了一种利用像素级感知陀螺仪辅助的KLT特征追踪技术,该技术在相机进行快速自转运动时,依然能够保持高准确度和鲁棒性;Saboo等
[15]进一步创新,开发了一种集成了基于特征的KLT算法改进版和基于颜色的追踪技术的追踪系统,用于精确追踪手部。通过将新的特征点加入这一综合追踪方案中,显著提升了追踪的稳定性,减少了传统KLT算法中可能出现的跟踪丢失现象。
在数据密集型处理任务中,KLT算法与其他技术结合使用并不断进行优化,以提升数据处理的精确度。Li等
[16]采用了KLT光流算法对关键特征点进行追踪,并通过极线几何、三角测量以及PnP算法来精确计算纯视觉姿态;Jang等
[17]提出了一种基于KLT算法的轻量级匹配技术,旨在降低目标检测过程中的计算成本的同时生成目标的局部轨迹平滑估计;除此以外,KLT追踪器还可以与K-means聚类算法结合使用,通过分析运动特征点,对目标区域进行细致分析,排除背景干扰,并根据目标的特征将其有效地分类为独立对象
[18]。在增强现实领域,通过将ORB特征匹配与RANSAC算法相结合,以获取单应矩阵,随后利用KLT跟踪算法对标记进行追踪,从而显著提升了配准过程的稳定性与准确性
[19]。
但在KLT算法使用过程中,计算窗口的大小与图像金字塔级别数等参数的设置,会显著影响到特征点的匹配数量。由于计算窗口的可调整范围很大,在以往的研究中,学者多使用默认参数,并没有考虑如何选择最佳参数使匹配效果达到最优。
模拟退火算法在图像处理中应用广泛,如在医学图像中的基于模拟退火算法的稀疏表示图像去噪。该方法使用模拟退火算法优化自适应字典,并获取对应的稀疏系数。然后通过优化后的字典和稀疏系数进行逆运算,从而实现图像去噪
[20];在图像加密中与遗传算法结合,基于遗传算法和模拟退火算法原理,改进了“置乱-扩散”加密框架,并结合高维混沌系统,提出了一种新型的彩色图像加密方法,使得算法的安全性得到保障
[21]等。
为了优化特征点匹配与提取效果,本文提出了改进的KLT算法,针对算法参数的可调节性,引入模拟退火算法,确定能够达到最佳匹配效果的算法参数,提高匹配点的数量,改善三维重建的效果。
1 方法与原理
1.1 KLT匹配算法
KLT算法利用图像序列中像素强度在时间域上的变化以及相邻帧之间的相关性,找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
具体流程如下,在第一幅图像中设定一个邻域窗口,利用其灰度信息在第二幅图像中进行搜寻对应窗口,获得对应的位置后进行两幅图像偏移量计算。而后将偏移量施加在要追踪的点上,实现目标在第二幅图像中的定位,通常在10次迭代内收敛。将图像匹配问题,从传统的滑动窗口搜索方法变为一个求解两幅图像偏移量的过程,极大地提高计算速度。在追踪过程中,邻域大小、前后误差阈值以及算法新引入的金字塔级别数等参数设置,都会影响目标追踪效果。
邻域大小为被跟踪的每个点周围的像素区域大小,邻域定义了空间梯度矩阵计算的区域,高度和宽度必须是奇数,最小值为5×5,增加邻域的大小会增加计算时间。
金字塔级别数,被指定为整数。KLT算法的点跟踪器生成一个图像金字塔,与前一个级别相比,每个级别的分辨率降低了50%,见
图1。设置大于1的金字塔级别数,使算法能够从最低级别开始,以多个分辨率级别跟踪点。增加金字塔级别的数量可以使算法处理帧之间更大的点位移,同时也会增加计算成本,通常推荐值为1~4。
前后误差阈值是确保算法精度的参数。跟踪器会跟踪从前一帧到当前帧的每个点,然后将相同的点跟踪回前一帧,计算双向误差,见
图1。该值是从点的原始位置到反向跟踪后的最终位置的距离(以像素为单位),当误差大于设置的阈值时,对应的点被认为是无效的。通常推荐值在0~3个像素之间。
1.2 模拟退火算法
模拟退火(Simulated annealing,SA)算法思想最早由Metropolis等提出,其核心Metropolis准则可使模拟退火算法收敛于全局最优解,跳出局部最优解
[22]。
经梳理,模拟退火算法步骤如下:
a) 设定初始参数T以及每个T值所在阶段的循环次数N。T参数决定着点随机扰动的范围,以及对于非最优点的取舍程度。随机一点作为初始点(x0 , y0),将其作为最优点。
b) 基于最优点进行随机扰动,增加或减少的范围与T相关。若扰动产生点更优,则将新点作为最优点;若产生点更差,则根据Metropolis准则,以一定概率判断取舍。此过程循环N次。
c) 此时获得的最优点可能还不够精准,这时根据一定规律降低T的值,使得b)中扰动范围降低,新产生点的取舍更慎重。
d) 循环b)、c)步,确定一个终止条件,最终获得最优点。
模拟退火算法与其他搜索方法相比,具有如下的特点:
1) 以一定的概率接受恶化解。使模拟退火算法在迭代过程中不仅接受使目标函数变“好”的试探点,而且还能以一定的概率接受使目标函数值变“差”的试探点。在复杂问题中不会限于若干局部最优解而停滞不前,增加了搜索过程的灵活性。
2) 算法的控制参数将优化过程分成各个阶段,各阶段下随机扰动的范围不同。在初始阶段扰动范围大,最终阶段扰动范围变小,以提高模拟退火算法全局最优解的可靠性。
3) 在其他优化方法中,常需要目标函数的导数值等辅助信息来确定搜索方向。而模拟退火算法不受连续可微的约束,其定义域可以任意设定,对导数不存在函数的优化问题就比较方便。
经过多学者的研究证明,模拟退火算法可以准确收敛至目标最优点
[22-25]。
1.3 基于模拟退火优化的KLT算法
在实际应用中,在略不同的位置对目标拍摄两张图像。在第一幅图像中用最小特征值算法(minimum eigenvalue algorithm)检测角点作为特征点,而后运用KLT算法在第二幅图像中匹配出前图的特征点。由于KLT算法受参数影响大,本文采用模拟退火算法来确定KLT算法的最佳参数。经过1.1节的分析可知,金字塔级别数可调范围太小,级别太高时计算时间长、效率也会降低,于是本文将级别数定为5。前后误差阈值是降低错误匹配的控制参数,考虑到像素点对应的物理尺寸较小,将误差阈值设定为3。计算邻域范围的可调节程度是最大的,是本文研究的重点,运用模拟退火算法,将邻域大小
x0作为优化内容,最终得到最大匹配点数量对应的邻域大小参数。具体设计的计算方法如
图2所示。本文设计的模拟算法各参数见
表1。将初始
T值设为100以提高初次取点范围,对应地将上下限定为205和5,其间有101个奇数。模拟退火算法具有鲁棒性,其最终解的求得并不十分依赖于初始解的选取,所以将初始解设为105。在第一次循环中,在105附近的100个点中随机扰动20次,取得一个最优点;第二次循环中,缩小范围,在最优点附近40范围内扰动20次获得最优解。
本文基于模拟退火的KLT算法流程如下:
输入:左右视图,初始参数
输出:左右图像的匹配点
a) 对左图提取角点作为特征点。
b) 初始化KLT算法的邻域窗口大小x0=105,计算对应的匹配点数量y0。
c) 初始化模拟退火算法的参数。
d) 对x0进行随机扰动得到x1,计算相应的y1初始化模拟退火算法的参数。判断y1与y0的大小,如果y1 > y0,则将最优参数进行更新x0= x1;若y1 < y0,则计算rand(1)与exp(-(y0-y1)/T ),根据其大小关系,判断是否接受x1。
e) 将d)步循环N次,获得此时的最优参数,以0.4T进行衰减。
f) 将d)、e)步循环M次,获得最优参数x0。
g) 以x0作为邻域窗口大小,使用KLT算法获得左右图像匹配点。
2 实验与结果
2.1 实验
为验证本文提出的方法,用3 008×4 112分辨率的AVT相机在实验室内与室外选取立体特征明显的目标若干,每个物体从2个方位进行拍摄,部分拍摄物体在
图3中展示。为便于三维重建,采用张氏标定法
[26],以棋盘格对相机进行标定,见
图4。
2.2 算法性能评价
为验证本文建立的模拟退火算法获得结果的可靠性,对拍摄物体进行特征点检测与图像匹配。分别应用本文方法与传统方法对拍摄图像进行匹配,匹配效果对比见
图5。本文另外使用穷举法,选取12个物体的图像共24张,使KLT算子对左右图像进行匹配,邻域参数由5一直递增到205,获得的最大匹配点数作为真实的最优值。对12个目标的匹配特征点数量与匹配完成度具体结果见
表2,并对传统方法匹配完成度和本文提出方法完成度进行比较,结果见
图6。同时使用本文提出的方法计算最优值、传统方法获得的匹配点数与真实的最优值误差,并将本文方法与穷举法所需时间进行对比,结果见
图7。
在
图5中,左图与右图重叠显示,匹配到的特征点分别以绿点和红点表示,匹配点之间连线为黄色,由于点过于密集,可能导致原图的遮掩。由
图5可见,本文提出方法能获得更多匹配点。在
表2中对不同方法匹配效果进行具体量化,结合
表2和
图6可见,本文提出方法平均匹配完成度为89.4%,而传统方法平均匹配完成度仅为76.1%。由
图7可知本文提出方法的可靠性,计算所得最优值与真实值相比十分吻合,传统方法的误差与穷举法的平均误差为16.1%,本文方法的误差几乎为0%,并且经过计算,运行所需时间降低40%。
2.3 三维重建效果
经过优化的KLT匹配算法最终服务于目标的三维重建。本文选择两个典型目标,运用所提出的方法获得最优KLT匹配参数,运用SFM (structure from motion)技术进行三维重建,效果见
图8。
图8(a)表示原图中的一张,在重建过程中主要针对目标进行特征点提取,
图8(b)表示匹配到的特征点,由于特征点过于密集,导致特征点与匹配效果将原目标遮掩。但可以从
图8(c)重建结果中看出,本文提出的方法由于采用了最佳匹配参数,三维重建效果较好。
3 结论
1) 本文将模拟退火算法与KLT匹配算法相结合,寻求最佳参数使得匹配效果达到最优。在多个拍摄目标的应用中,本文提出的方法基本能够寻找到KLT算子的最优参数使匹配点数量达到最多,平均匹配完成度达到了89.4%。
2) 将本文提出方法与穷举法相比,匹配点数量误差几乎为0%,与传统方法相比匹配效果大幅提升,并且计算时间比穷举法节约40%。
3) 本文选择了两个典型目标,运用所提出的方法获得最优KLT匹配参数,并最终较好地实现了目标的三维重建。
4) 本文提出的方法在匹配准确率上明显提高,并且匹配的效果也得到了大幅提升。但在特征点匹配时部分点会发生偏移,可在未来的研究中进一步改善。同时在算法运算过程的简化方面还有进步空间。