LK光流算法总结-精选.doc

合集下载

光流计算方法

光流计算方法

光流计算方法光流计算是计算机视觉中的一项重要任务,它用于估计图像中物体的运动信息。

通过分析连续帧之间的像素变化,光流计算方法可以推断出物体的速度和方向。

本文将介绍光流计算的基本原理和常用方法。

一、光流计算的原理光流计算的基本原理是利用图像中像素的亮度变化来推断物体的运动。

当物体在图像中移动时,其像素的亮度也会发生变化。

光流计算的目标是通过分析这些亮度变化来估计物体的运动速度和方向。

二、光流计算的方法1. 基于亮度一致性约束的光流计算方法基于亮度一致性约束的光流计算方法假设图像上的亮度在时间上保持不变。

根据这个假设,可以得到一个基本的光流方程。

通过求解这个方程,可以得到物体的运动速度。

2. 基于亮度梯度的光流计算方法基于亮度梯度的光流计算方法利用图像中像素的亮度梯度来推断物体的运动。

通过计算像素的梯度向量,可以得到物体的运动速度和方向。

3. 基于相位相关的光流计算方法基于相位相关的光流计算方法利用图像中像素的相位信息来推断物体的运动。

通过计算像素的相位相关性,可以得到物体的运动速度和方向。

4. 基于稠密光流的光流计算方法基于稠密光流的光流计算方法将光流计算应用到整个图像中的每个像素。

通过计算每个像素的运动速度和方向,可以得到整个图像的光流场。

三、光流计算的应用光流计算在计算机视觉中有着广泛的应用。

其中一些应用包括:1. 视频稳定通过光流计算,可以估计视频中相邻帧之间的运动信息,从而实现视频的稳定。

2. 目标跟踪通过光流计算,可以估计目标在图像中的运动轨迹,从而实现目标的跟踪。

3. 动作识别通过光流计算,可以分析视频中人物的运动信息,从而实现动作的识别。

4. 自动驾驶光流计算在自动驾驶中有着重要的应用。

通过估计道路上物体的运动信息,可以实现车辆的自动驾驶。

四、光流计算的挑战和改进光流计算面临许多挑战,比如图像噪声、运动模糊和遮挡等。

为了提高光流计算的准确性和鲁棒性,研究人员提出了许多改进方法,如基于深度学习的光流估计和基于稠密匹配的光流计算方法。

LK光流法和三帧差分法的运动目标检测算法

LK光流法和三帧差分法的运动目标检测算法

LK光流法和三帧差分法的运动目标检测算法谢红;原博;解武【摘要】The three?frame difference method is one of the most common moving target detection algorithms at pres?ent. Its execution is quite fast, and there inevitable exists various disturbances, and it is susceptible to the environ?mental noise. This method is also likly to form large cavities inside the detected moving targets, which affects the fi?nal result of the detection. To solve these problems, this article combines the three?frame difference method with the Lucas?Kanade optical flow method. The Lucas?Kanade optical flow method is used to calculate and get the general rectangular areas containing the moving targets. Different thresholds are selected inside and outside the determined regions to extract the moving targets by the three?frame difference method, and then to constitute a kind of three?frame difference method that has rated thresholds. The corners calculated by the optical flow method are used to im?prove the contours of the targets. In this way, the threshold segmentation of the traditional three?frame difference method is converted into another mode, which combines the threshold segmentation with the region segmentation. The experimental results show that, the improved algorithm has good noise immunity and can get better detection re?sults than the three?frame difference method.%三帧差分法是目前较为常见的运动目标检测算法之一.它的执行速度较快,但是它会存在各种干扰以及易受到环境噪声的影响,而且容易在检测到的运动目标内部产生较大的空洞,以致影响到最后的检测效果.针对这些问题,将Lucas?Kanade光流法与三帧差分法进行结合.利用Lucas?Kanade光流法计算得到运动目标的大致矩形区域.在确定的区域内外通过选取不同的阈值利用三帧差分算法提取运动目标,构成一种分级阈值的三帧差分法.并且利用前面光流法计算得到的角点来完善目标轮廓.这样将传统三帧差分算法的阈值分割转换成阈值分割与区域分割相结合的模式.试验结果表明,该改进算法具有良好的抗噪性,能够得到比原算法更好的检测效果.【期刊名称】《应用科技》【年(卷),期】2016(043)003【总页数】6页(P23-27,33)【关键词】目标检测;检测算法;三帧差分法;LK光流法;抗噪性;阈值分割;区域分割【作者】谢红;原博;解武【作者单位】哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001;哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001;哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001【正文语种】中文【中图分类】TP911.73运动目标检测就是将视频序列中的运动目标与所在的背景图像相分离,从而可以获得目标的前景,也就是确切的运动目标。

LK光流算法总结

LK光流算法总结

运动目标检测之Lucas-Kanade光流算法读书笔记视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。

随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之一。

而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展前景。

一目标检测运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。

目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差分法和光流法。

1背景差分法背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。

缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检测的结果2帧间差分法帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。

当监控场景中出现异常物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,判断它是否大于阈值来分析视频或图像序列的运动特性,确定图像序列中有无物体运动。

图像序列逐帧的差分,相当于对图像序列进行了时域下的高通滤波。

calcopticalflowpyrlk 用法

calcopticalflowpyrlk 用法

Calcopticalflowpyrlk是OpenCV中的一个函数,用于计算稀疏特征光流。

在计算机视觉中,光流是指图像中的像素随着时间的变化而产生的位移。

光流可以用来估计目标的运动轨迹,对于运动跟踪、目标检测等任务具有重要意义。

1. 算法原理calcopticalflowpyrlk算法是基于图像金字塔的Lucas-Kanade算法的改进版本。

它通过构建图像金字塔来实现多尺度处理,从而提高光流的稳定性和精度。

该算法首先对输入的两幅图像进行金字塔分解,然后从粗到细依次计算光流,最终得到目标的像素位移。

2. 输入参数calcopticalflowpyrlk函数的输入参数包括当前帧图像、前一帧图像、前一帧的特征点、输出的特征点位置、特征点的状态等。

其中,前一帧的特征点可以通过GoodFeaturesToTrack函数或其他方式获得。

3. 输出结果calcopticalflowpyrlk函数的输出结果包括当前帧的特征点位置、特征点的运动状态等。

这些结果可以用来进行目标跟踪、运动分析等应用。

4. 使用步骤使用calcopticalflowpyrlk函数进行光流计算的步骤如下:(1)导入OpenCV库import cv2(2)读取输入的两幅图像prev_img = cv2.imread('prev.jpg')curr_img = cv2.imread('curr.jpg')(3)获取前一帧的特征点prev_pts = cv2.goodFeaturesToTrack(prev_img, maxCorners=100, qualityLevel=0.01, minDistance=10)(4)调用calcopticalflowpyrlk函数计算光流curr_pts, status, err = cv2.calcOpticalFlowPyrLK(prev_img, curr_img, prev_pts, None)(5)根据光流结果进行目标跟踪等应用...5. 注意事项在使用calcopticalflowpyrlk函数时,需要注意以下几点:(1)输入的两幅图像应该是连续的帧,且图像尺寸应该相同。

光流(OpticalFlow)原理及其算法示例

光流(OpticalFlow)原理及其算法示例

光流(OpticalFlow)原理及其算法示例光流的概念最早是由Gibson在1950年提出的。

它是空间移动物体在像素观察平面中移动的瞬时速度。

是一种计算物体在相邻帧间运动信息的方法。

一般来说,光流(Optical Flow)是物体在三维空间中的运动在二维像平面上的投影。

它是由物体和相机的相对速度产生的,反映了物体在极小时间内对应的图像像素的运动方向和速度。

Lucas–Kanade方法(KLT)是一种基于光流原理的特征点跟踪算法。

本文首先介绍光流的原理,然后介绍了KLT及其相关的KLT变体算法。

光流约束方程假设I(x,y,t)为时刻t像素点(x,y)的像素值(亮度),该像素点在两个图像帧之间移动了Δx,Δy,Δt。

因此我们可以得出相同亮度的结论:假设运动很小,我们可以从泰勒级数推导一阶泰勒展开式:因此,其中(dx/dt, dy/dt) = (u, v)为待解像素的光流。

(∂I/∂x,∂I/∂y) = (I_x, I_y)是像素灰度空间微分,t = I_x是像素坐标点的时间灰度微分。

整理成矩阵形式:该公式表明,同一坐标位置上的时间灰度微分是空间灰度微分与该位置上相对于观测者的速度的乘积。

假设空间一致性,对于周围的多个点,有:这个方程组的方程多于未知数,因此通常是超定的。

Lucas-Kanade方法通过最小二乘原理获得折衷解决方案:这就是光流算法的孔径问题。

为了找到光流,需要另一组方程,并附加约束条件。

所有的光流方法都引入了估算实际流的附加条件。

局部差分法:Lucas-Kanade算法为了使方程可求解,进行以下假设:•亮度是恒定的,图像中对象的像素亮度在连续帧之间不会改变;•短距离(短期)运动,相邻帧之间的时间足够短,并且物体运动很小;•空间一致性,相邻像素具有相似的运动;恒定亮度是指某些像素的跟踪不随时间变化:公式表示被跟踪像素的灰度不随时间变化:连续时间意味着相邻帧之间的运动很小。

换句话说,运动的变化可以被认为是亮度相对于时间的导数。

用金字塔lk光流算法

用金字塔lk光流算法

用金字塔lk光流算法
金字塔LK光流算法是一种基于图像处理和计算机视觉的技术,用于检测和跟踪图像中的运动。

该算法的基本思想是通过计算同一场景下不同尺度的图像之间的光流来估计物体的运动。

该算法的实现过程包括以下几个步骤:
1. 图像金字塔构建:将原始图像缩小为不同尺度的图像,以便在不同分辨率下进行光流计算。

2. 特征提取:在每个尺度的图像上提取特征点,通常使用Harris 角点检测算法。

3. 光流计算:对于每个特征点,将其在前一帧图像中的位置与当前帧图像中的位置进行匹配,并计算其运动向量,即光流。

4. 运动估计:通过对所有特征点的光流进行加权平均,估计物体的整体运动。

金字塔LK光流算法具有较高的精度和鲁棒性,适用于各种不同的应用场景,如视频稳定、目标跟踪和运动分析等。

- 1 -。

光流计算及其原理分析

光流计算及其原理分析

光流计算及其原理分析光流是图像亮度的运动信息描述。

光流法计算最初是由Horn和Schunck于1981年提出的,创造性地将⼆维速度场与灰度相联系,引⼊光流约束⽅程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提出了2个假设:①运动物体的灰度在很短的间隔时间内保持不变;②给定邻域内的速度向量场变化是缓慢的。

算法原理假设图像上⼀个像素点(x,y),在t时刻的亮度为E(x+Δx,y+Δy,t+Δt),同时⽤u(x,y0和v(x,y)来表⽰该点光流在⽔平和垂直⽅向上的移动分量:u=dx/dtv=dy/dt在经过⼀段时间间隔Δt后该点对应点亮度为E(x+Δx,y+Δy,t+Δt),当Δt很⼩趋近于0时,我们可以认为该点亮度不变,所以可以有:E(x,y,t)=E(x+Δx,y+Δy,t+Δt)当该点的亮度有变化时,将移动后点的亮度由Taylor公式展幵,可得:忽略其⼆阶⽆穷⼩,由于Δt趋近于0时,有:式中w=(u,v),所以上式就是基本的光流约束⽅程。

其中令表⽰图像中像素点灰度沿x,y,t⽅向的梯度,可将上式改写成:Lucas-Kanade是⼀种⼴泛使⽤的光流估计的差分⽅法,这个⽅法是由Bruce D. Lucas和Takeo Kanade发明的。

它假设光流在像素点的邻域是⼀个常数,然后使⽤最⼩⼆乘法对邻域中的所有像素点求解基本的光流⽅程。

通过结合⼏个邻近像素点的信息,卢卡斯-⾦出⽅法(简称为L-K⽅法)通常能够消除光流⽅程⾥的多义性。

⽽且,与逐点计算的⽅法相⽐,L-K ⽅法对图像噪声不敏感。

不过,由于这是⼀种局部⽅法,所以在图像的均匀区域内部,L-K⽅法⽆法提供光流信息。

Lucas-Kanade改进算法Jean-Yves Bouguet提出⼀种基于⾦字塔分层,针对仿射变换的改进Lucas-Kanade算法。

为什么要⽤⾦字塔?因为lk算法的约束条件即:⼩速度,亮度不变以及区域⼀致性都是较强的假设,并不很容易得到满⾜。

改进的lk光流法在slam中的应用

改进的lk光流法在slam中的应用

第29卷㊀第6期2019年11月㊀㊀㊀黑㊀龙㊀江㊀科㊀技㊀大㊀学㊀学㊀报JournalofHeilongjiangUniversityofScience&Technology㊀㊀Vol.29No.6㊀㊀Nov.2019㊀㊀㊀㊀㊀㊀改进的LK光流法在SLAM中的应用程俊廷1ꎬ㊀郭博洋1ꎬ㊀田㊀宽2(1.黑龙江科技大学机械工程学院ꎬ哈尔滨150022ꎻ2.辽宁工程技术大学机械工程学院ꎬ辽宁阜新123000)摘㊀要:传统LK光流法在SLAM中基于光流场的空间一致性假设ꎬ在图像阴影㊁边界及遮挡等处追踪特征点容易失败ꎮ假设在微小位移下某窗口内所有像素运动距离一致ꎬ在此微小位移下该窗口内所有像素灰度不变ꎬ将此作为新的约束与像素运动方程联立ꎬ通过拉格朗日乘数法进行求解计算ꎬ引入Hessian矩阵判断窗口内各像素点对约束方程的良态性ꎬ得到像素准确的运动ꎮ结果表明ꎬ改进的LK光流法可以使特征点追踪精度提高20.95%ꎬ同时耗费时间降低20.30%ꎬ有效提升了SLAM前端处理速度ꎮ关键词:即时定位与地图构建ꎻ光流ꎻ像素ꎻ特征追踪doi:10.3969/j.issn.2095-7262.2019.06.018㊀㊀中图分类号:TP391文章编号:2095-7262(2019)06-0736-05文献标志码:AApplicationofimprovedLKopticalflowmethodinSLAMChengJunting1ꎬ㊀GuoBoyang1ꎬ㊀TianKuan2(1.SchoolofMechanicalEngineeringꎬHeilongjiangUniversityofScience&TechnologyꎬHarbin150022ꎬChinaꎻ2.CollegeofMechanicalEngineeringꎬLiaoningTechnicalUniversityꎬFuxin123000ꎬChina)Abstract:ThispaperproposesanimprovedLKopticalflowmethodasanalternativetotheexistingLKopticalflowmethodinSLAMbasedontheassumptionofspatialconsistencyofopticalflowfieldandinherentlyvulnerabletofailuresintrackingfeaturepointsinimageshadowꎬboundaryꎬandocclusion.Thisstudyassumesthatꎬunderthesmalldisplacementꎬthemotiondistanceissameforallpixelsinawindowandnochangesoccurinthegrayscaleofallpixelsinthewindowꎬandcombinesthenewlyas ̄sumedconstraintwiththepixelmotionequationꎬwhichiscalculatedbyLagrangemultipliermethod.TheimprovementinthestabilityofthesolutionofthebasicconstraintequationisachievedbydeterminingthegoodstateofeachpixelinthewindowtotheconstraintequationbyintroducingHessianmatrixtorealizetheaccuratemotionofthepixels.Theexperimentsshowthatthemethodcouldenablea20.95%im ̄provementinthetrackingaccuracyanda20.30%reductioninthetimeconsumptionꎬthuscontributingtoaneffectiveimprovementintheprocessingspeedofSLAM.Keywords:SLAMꎻopticalflowꎻpixelꎻfeaturetracking㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀收稿日期:2019-10-05㊀㊀基金项目:黑龙江省省属高等学校基本科研业务费科研项目(Hkdpt201802)㊀㊀第一作者简介:程俊廷(1973-)ꎬ男ꎬ内蒙古自治区凉城人ꎬ教授ꎬ博士ꎬ研究方向:计算机视觉㊁图像处理ꎬEmail:chengjunting@163.comꎮ0㊀引㊀言即时定位与地图构建(SimultaneouslocalizationandmappingꎬSLAM)ꎬ是指移动机器人携带特定传感器ꎬ能够在未知环境中估计自己的运动ꎬ并且可以得到环境的地图模型[1]ꎮ近年来ꎬ已经广泛应用于自动驾驶㊁无人机导航避障等领域ꎮ实际使用中SLAM强调实时性ꎬ其整体系统消耗时间主要存在于视觉前端的特征追踪部分ꎮ现有的SLAM系统在特征追踪部分主要采取特征点法与光流法ꎬ其中特征点法耗时长ꎬ在使用时需额外采取GPU等措施进行加速计算ꎬ从而导致系统成本上升ꎮ与特征点法相比ꎬ光流法可以省去特征点的计算步骤ꎬ直接描述像素的运动ꎮ使用光流法的SLAM系统以(Lucas-kanadeꎬLK)光流[2]为主ꎬ通过假设图像某窗口内的像素具有空间一致性ꎬ利用最小二乘法对窗口内所有像素进行求解得到像素运动ꎮBouguet等[3]改进了LK光流法ꎬ采用金字塔光流形式对物体进行追踪ꎬ可以提升追踪特征点的准确性ꎮ郭瑞峰等[4]使用LK光流法进行多信息融合目标跟踪算法改善了动态目标物体的特征提取与检测ꎬ具有较高实时性ꎮ王泽民等[5]提出了一种基于LK光流的动态场景SLAM新方法ꎬ这种方法在室内场景下可以有效提高定位精度ꎬ能够满足系统需求ꎮLK光流基于灰度不变㊁连续运动和空间一致性三个假设ꎮ由于空间一致假设性太强ꎬ在图像遮挡㊁阴影㊁边界等地方容易失效ꎬ故笔者提出一种新的LK光流方法ꎬ保留传统LK光流前两个假设ꎬ使用像素运动距离一致性代替空间一致性假设ꎬ引入Hessian矩阵对像素点良态性进行评价ꎬ改进LK光流算法ꎮ1㊀LK光流法及其改进1.1㊀LK光流法在SLAM中ꎬ输入的往往是视频信息ꎬ每秒的视频流约30~60帧图像ꎬ可以认为这些图像是随时间连续变化的ꎮ将连续序列图像看作时间的函数I(t)ꎬ则在任意t时刻ꎬ对位于图像(xꎬy)处的像素ꎬ其灰度可以表示为I(xꎬyꎬt)ꎮ在t1时刻ꎬ记第1帧图像(x1ꎬy1)处的像素灰度为I1(x1ꎬy1ꎬt1)ꎮ在t2时刻ꎬ该像素点运动到(x2ꎬy2)处ꎬ记其灰度为I2(x2ꎬy2ꎬt2)ꎮ根据灰度不变假设ꎬ则有:I2(x2ꎬy2ꎬt2)=I1(x1ꎬy1ꎬt1)ꎮ(1)式(1)给出了相邻时刻间两张图像上像素的对应关系ꎮ设像素在x方向上的运动距离为dxꎬ在y方向上的运动距离为dyꎬ两图像的时间差为dtꎬ则可得x2=x1+dxꎬy2=y1+dyꎬt2=t1+dtꎮ将其代入式(1)有:I2(x2ꎬy2ꎬt2)=I2(x1+dxꎬy1+dyꎬt1+dt)ꎮ(2)对(2)式进行泰勒展开并保留一阶项ꎬ有:㊀㊀I2(x1+dxꎬy1+dyꎬt1+dt)ʈI2x1ꎬy1ꎬt1()+㊀㊀㊀㊀㊀∂I∂x1dx+∂I∂y1dy+∂I∂t1dtꎮ(3)联立式(1)与式(3)ꎬ整理可得:∂I∂xdx+∂I∂ydy+∂I∂tdt=0ꎮ(4)式(4)两边同除dtꎬ有∂I∂xdxdt+∂I∂ydydt=-∂I∂tꎬ(5)式中:∂I/∂x 图像在该像素处x方向上的梯度ꎬ记为Ixꎻ∂I/∂y 图像在该像素处y方向上的梯度ꎬ记为Iyꎻdx/dt 图像在该像素处x轴上的运动速度ꎬ记为vxꎻdy/dt 图像在该像素处y轴上的运动速度ꎬ记为vyꎻ∂I/∂t 图像对时间的变化量ꎬ记为Itꎮ整理式(5)有:Ixvx+Iyvy=-Itꎮ(6)式(6)中Ix㊁Iy㊁It均为已知量ꎬ可以从图像中获取ꎮvx㊁vy未知ꎬ为待求量ꎮSLAM中应用传统LK光流法求解vx与vy需要假设空间一致性ꎬ即认为图像某窗口内所有像素都具有相同运动ꎬ此时对窗口内每一个像素都可以获取一个关于vx㊁vy的方程ꎬ联立所有方程ꎬ再通过最小二乘法求解ꎬ这样就可以得到像素点在图像间的具体运动ꎮ但是由于空间一致性假设对图像梯度变化具有强烈敏感性ꎬ而图像在阴影㊁遮挡等地方图像梯度变化非常大ꎬ此时空间一致性假设往往失效ꎬ则直接会导致LK光流追踪特征失败ꎮ1.2㊀运动距离一致性假设为了降低图像梯度对光流法假设的影响ꎬ文中提出运动距离一致性假设ꎮ运动距离一致性假设认为图像某窗口所有像素在微小位移下所移动的距离相同ꎬ此时将此约束与式(6)联立ꎬ可求得窗口内像737第6期程俊廷ꎬ等:改进的LK光流法在SLAM中的应用素得具体运动ꎮ如图1所示ꎮ图1㊀连续帧间像素运动距离相同Fig.1㊀Pixelsmovesamedistancebetweensuccessiveframes由图1可见ꎬ取第1帧图像在t1时刻某窗口内三个像素点为O1㊁P1㊁N1ꎬ在t2时刻该三点像素分别运动至O2㊁P2㊁N2位置ꎬ根据运动距离一致性假设ꎬ则有Pix(O1O2)=Pix(P1P2)=Pix(N1N2)ꎬ(7)式中ꎬPix( ) 像素运动距离ꎮ事实上ꎬ在SLAM中对于输入的连续帧而言ꎬ由微小平移或者旋转所导致的像素移动ꎬ都可以认为图像窗口内所有像素的运动均符合式(7)ꎬ故图像窗口内任意像素的运动距离均可表示为:d(xꎬy)=Pix( )ꎬ(8)式中ꎬd(xꎬy) (xꎬy)处的像素运动距离ꎮ联立式(6)与式(8)ꎬ可以看成在满足式(8)约束下求式(6)的问题ꎬ使用拉格朗日乘数法进行求解ꎬ设拉格朗日乘子为λꎬ有F(vxꎬvyꎬλ)=Ixvx+Iyvy+It+λ Pix( )ꎮ(9)F(vxꎬvyꎬλ)分别对vx㊁vy㊁λ求偏导ꎬ并令其为0ꎬ便可求得vx与vyꎮ1.3㊀Hessian矩阵即使使用运动距离一致性假设代替空间一致性假设ꎬ但是在光流估计过程中仍不能保证图像窗口内所有像素运动连续ꎮ如果此时图像窗口内存在不符合式(9)的像素点ꎬ则光流对物体特征的追踪可靠性会降低[6]ꎮ为此ꎬ在假设窗口内像素运动距离一致性的基础上引入Hessian矩阵ꎬ通过判断Hes ̄sian矩阵条件数的大小来去除运动不稳定的特征点ꎮ令式(9)为0ꎬ此时分别对x和y求偏导ꎬ有:Ixxvx+Iyxvy=-λ∂Pix( )∂x-ItxꎬIxyvx+Iyyvy=-λ ∂Pix( )∂y-Ityꎮüþýïïïï(10)将式(10)写为矩阵形式ꎬ即有:IxxIyxIxyIyyéëêêùûúúvxvyéëêêùûúú=-λ ∂Pix( )∂x+Itxλ ∂Pix( )∂y+Ityéëêêêêùûúúúúꎮ(11)记Hessian矩阵为:T=IxxIyxIxyIyyéëêêùûúúꎮ(12)通过式(2)可求得T的条件数为:Cond(T)=μmaxμminꎬ式中:μmax T矩阵较大的特征值ꎻμmin T矩阵较小的特征值ꎮ对于式(11)的解而言ꎬ其具有不稳定性ꎮ具体可以通过Cond(T)的值来判断ꎮ当Cond(T)的值很大或很小ꎬ则说明Hessian矩阵特征值差异较大ꎬ这意味着式(11)的解就不稳定ꎬ光流追踪的可靠性就比较低ꎬ需要舍弃此像素点ꎬ认为其追踪失败ꎻ如果Cond(T)的值接近1ꎬ则说明Hessian矩阵的特征值接近ꎬ即式(11)具有稳定解ꎬ此时光流追踪的特征点就比较可靠ꎬ可以作为物体运动的判断依据ꎬ提高SLAM精度ꎮ事实上ꎬ在工程或项目中引入Hessian矩阵对像素点良态性进行评价并无具体标准ꎬ在实际操作中往往使用经验公式ꎮ首先利用Hessian矩阵剔除窗口内不可靠点ꎬ再将各点对应条件数的倒数作为该点的权重W(Pix)ꎬ并将每点权重进行归一化处理ꎮ其具体评价步骤如下:(1)计算图像窗口中每一像素点的一阶梯度和二阶梯度ꎻ(2)计算每个像素点对应Hessian矩阵的秩det(T)ꎬ计算每个像素点的条件数Cond(T)ꎬ设定某一阈值Qꎬ则有:W(Pix)=0ꎬifdetT()<Qꎬ1Cond(T)ꎬifdet(T)ȡQꎬìîíïïïï(13)(3)对权重W(Pix)进行归一化ꎻ(4)求解窗口内各像素点的运动ꎮ综上ꎬ引入Hessian矩阵后ꎬ可以通过计算Cond(T)的值来判断像素邻域内的不可靠点ꎮ837黑㊀龙㊀江㊀科㊀技㊀大㊀学㊀学㊀报㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第29卷㊀2㊀实验结果与分析实验平台采用个人PCꎬPC安装ubuntu16.04双系统ꎬ实验数据采用慕尼黑工业大学提供的公开RGB-D数据集(TUM数据集)ꎬ该数据集中包含了独立采集的各类型图像ꎮ文中使用了TUM数据集中 freiburg1_desk 模块所包含的99帧图像ꎮ在使用该模块数据之前首先需要使用TUM提供的时间戳对齐脚本将彩色图与深度图的采样时间对齐ꎬ然后将对齐之后的图像信息作为实验原始数据来源ꎮ表1给出了改进后的LK光流法与传统的LK光流法在20帧内追踪特征点的数量n与消耗时间t上的对比数据ꎮ由表1可知ꎬ随着帧数的增加ꎬ改进后的LK光流法能够在更短的时间内更加准确的追踪特征点ꎮ与传统LK光流法比较ꎬ改进后的LK光流法能够将追踪特征点的精度提高20.95%ꎬ且追踪速度提高20.30%ꎮ表1㊀改进后的LK光流与传统LK光流对比Table1㊀ComparisonbetweenimprovedLKopticalflowandtraditionalLKopticalflow图像/帧n/个t/s传统改进后传统改进后2174217420.02865310.02060475161216640.02295470.014578610156616340.02094130.013850015148016220.01877560.016114220127513780.01752940.0146231利用传统LK光流法与改进后的LK光流法去追踪完整的99帧图像时ꎬ追踪的特征点数量与耗时的对比关系如图2所示ꎮ光流追踪中的若干帧情况如图3所示ꎮ从图2a可以看出ꎬ前40帧内传统LK光流法丢失特征点较多ꎬ而改进后的LK光流法曲线位于传统LK光流法上方ꎬ意味着改进后的LK光流法在特征点追踪方面更准确ꎬ可以比传统光流法够追踪更多的特征点ꎮ图2b给出了两种方法在耗费时间方面的关系ꎮ与传统LK光流法相比ꎬ改进后的LK光流法在追踪相同帧上的特征点时具有更快的追踪速度ꎬ这在SLAM中这意味着使用改进后的LK光流法可以节省大量前端数据采集和处理时间ꎮ图2㊀特征点数量和耗时对比Fig.2㊀Numberoffeaturepointsandtimecomparison改进后的光流法追踪结果如图3所示ꎮ图3㊀改进后的光流法追踪结果Fig.3㊀TrackingresultsofimprovedopticalflowmethodSLAM通常对初始帧采取Fast或ORB特征点937第6期程俊廷ꎬ等:改进的LK光流法在SLAM中的应用检测方法提取角点ꎬ接着使用对极几何㊁PnP或者ICP等方法计算相机位姿ꎬ再对之后视频帧使用光流追踪ꎬ提取出特征点ꎮ由于篇幅原因ꎬ文中只列出了99帧实验图像中的6帧图像ꎮ其中图3a是第1帧图像ꎬ在第1帧图像中采用Fast角点检测方法提取角点ꎬ之后使用改进后的LK光流法去追踪第1帧提取的角点ꎮ图3b~f分别是第2帧㊁第5帧㊁第10帧㊁第15帧和第20帧的角点追踪图像ꎮ所追踪的角点都是由第1帧的角点而来ꎮ通过图像可以明显看出相机的拍摄视角不同ꎬ在图像中物体边界㊁阴影等地方的特征点仍然会被顺利追踪到ꎬ这证明了在相机位姿改变过程中使用改进后的LK光流法可以准确追踪前面提取出的角点ꎬ解决了传统LK光流法在这些地方追踪特征失败的问题ꎮ与第1帧相比ꎬ可以看出当相机视角内有旧的视角移除时ꎬ这部分的特征点就会被丢掉ꎬ但其它部分已被检测或追踪的角点仍可以正确且稳定的被追踪ꎻ当相机视角内有新的视角进入时ꎬ算法并没有检测新的特征点ꎬ这是因为实验只是为了证实角点追踪的可靠性ꎬ而不是为了进行实时的角点检测ꎮ3㊀结束语针对使用传统LK光流法追踪图像特征时ꎬ空间一致性假设容易导致特征点追踪失败的问题ꎬ采用像素运动距离一致性假设替代空间一致性假设ꎬ引入Hessian矩阵判断像素邻域内的不可靠点ꎮ通过使用TUM公开数据集进行测试ꎬ与传统LK光流法相比ꎬ改进后的LK光流法可以使特征点追踪精度提高20.95%ꎬ同时耗费时间降低20.30%ꎬ可以极大提高SLAM前端数据处理效率ꎮ但本模型仍存在进一步改进的地方ꎬ即由于光流法是建立在灰度不变假设的基础之上ꎬ而像素灰度值不变也是很强的假设ꎮ当调整相机曝光参数ꎬ或者相机拍摄环境发生光照变化时ꎬ图像整体会变亮或变暗ꎬ此时图像整体灰度值的变化会使灰度不变假设失效ꎬ可能导致算法失败ꎬ如何减小算法对灰度不变假设的依赖这一工作还有待进一步研究ꎮ参考文献:[1]㊀高㊀翔ꎬ张㊀涛.视觉SLAM14讲:从理论到实践[M].北京:电子工业出版社ꎬ2017.[2]㊀LucasBꎬKanadeT.Aniterativeimageregistrationtechniquewithanapplicationtostereovision[C]//ProceedingsOfDARPAIUWorkshop.Vancouver:IJCAIꎬ1981:121-130. [3]㊀BouguetJY.Pyramidalimplementationoftheaffinelucaskanadefeaturetrackerdescriptionofthealgorithm[J].IntelCorporationꎬ2001ꎬ5(10):4-15.[4]㊀郭瑞峰ꎬ贾㊀榕.LK光流法的多信息融合目标跟踪算法研究[J].现代电子技术ꎬ2019ꎬ42(18):55-59. [5]㊀王泽民ꎬ李建胜ꎬ王安成ꎬ等.一种基于LK光流的动态场景SLAM新方法[J].测绘科学技术学报ꎬ2018ꎬ35(2):187-190. [6]㊀杨国亮ꎬ王志良ꎬ牟世堂ꎬ等.一种改进的光流算法[J].计算机工程ꎬ2006ꎬ32(15):187-188.(编辑㊀李德根)047黑㊀龙㊀江㊀科㊀技㊀大㊀学㊀学㊀报㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第29卷㊀。

光流计算方法(一)

光流计算方法(一)

光流计算方法(一)光流计算方法总览什么是光流计算光流计算是计算机视觉领域的一个重要问题,目的是根据连续帧图像中的像素点的移动情况,预测出物体在像素坐标系上的运动。

光流计算在诸多领域中有着广泛的应用,如目标跟踪、运动估计和自动驾驶等。

传统光流计算方法传统的光流计算方法主要基于亮度恒定和空间一致性假设,以下是常用的传统光流计算方法:1.Lucas-Kanade(LK)光流法:该方法使用了一个局部区域内的亮度一致性约束,并用一个线性模型来估计光流。

LK算法在计算速度上较快,但对于大位移和纹理较弱的区域容易产生误差。

2.Horn-Schunck(HS)光流法:HS算法使用了整个图像的亮度一致性约束,并假设光流平滑。

该算法对于光照变化较小的场景效果较好,但对于纹理较弱的区域容易受到噪声的干扰。

3.Belief Propagation(BP)光流法:BP算法通过将光流估计问题转化为图像分割的问题,并使用信念传播算法求解。

该方法在处理纹理较强和大位移的情况下表现较好,但计算复杂度较高。

基于深度学习的光流计算方法近年来,基于深度学习的光流计算方法取得了显著的进展,以下是一些常用的方法:1.FlowNet系列:FlowNet是一种基于卷积神经网络(CNN)的光流估计框架,包括FlowNetS、FlowNetC、FlowNet2等。

该系列方法通过从图像对中学习光流的表示,能够捕捉到更复杂和准确的光流信息。

2.PWC-Net:PWC-Net是一种金字塔卷积网络,用于稠密光流估计。

它通过使用金字塔结构和多尺度特征来实现精确且鲁棒的光流估计。

3.LiteFlowNet:LiteFlowNet是一种轻量级的光流计算网络,能够实现实时的光流估计。

它通过优化模型架构和参数化策略来减少计算量,同时保持较高的光流精度。

总结光流计算是计算机视觉中一项重要且具有挑战性的任务。

传统的光流计算方法在某些场景下表现较好,但在大位移和纹理较弱的情况下容易出现误差。

目标跟踪之klt---光流跟踪法

目标跟踪之klt---光流跟踪法

⽬标跟踪之klt---光流跟踪法近来在研究跟踪,跟踪的⽅法其实有很多,如粒⼦滤波(pf)、meanshift跟踪,以及KLT跟踪或叫Lucas光流法,这些⽅法各⾃有各⾃的有点,对于粒⼦滤波⽽⾔,它能够⽐较好的在全局搜索到最优解,但其求解速度相对较慢,由于其是基于颜⾊直⽅图的计算,所以对相同颜⾊东西不太能够区别,meanshift⽅法很容易陷⼊局部最优,但速度还是挺快,所以现在很有⼀些⼈是将meanshift跟pf结合做跟踪,恰好在很多⽅⾯能够互补。

Kanade-Lucas-Tomasi⽅法,在跟踪⽅⾯表现的也不错,尤其在实时计算速度上,⽤它来得到的,是很多点的轨迹“trajectory”,并且还有⼀些发⽣了漂移的点,所以,得到跟踪点之后要进⾏⼀些后期的处理,说到Kanade-Lucas-Tomasi⽅法,⾸先要追溯到Kanade-Lucas两⼈在上世纪80年代发表的paper:An Iterative Image Registration Technique with an Application to Stereo Vision,这⾥讲的是⼀种图像点定位的⽅法,即图像的局部匹配,将图像匹配问题,从传统的滑动窗⼝搜索⽅法变为⼀个求解偏移量d的过程,后来Jianbo Shi和Carlo Tomasi两⼈发表了⼀篇CVPR(94')的⽂章Good Features To Track,这篇⽂章,主要就是讲,在求解d的过程中,哪些情况下可以保证⼀定能够得到d的解,这些情况的点有什么特点(后来会发现,很多时候都是寻找的⾓点)。

PS: 其实我很奇怪这个算法为什么叫做KLT算法,⽽不加上Jianbo Shi的名字~ 好吧,前戏就这么多,接下来进⼊正题,KLT是如何实现跟踪的? 先说KLT算法的⼏个前提假设: 1)亮度恒定 2)时间连续或者是运动是“⼩运动”3)空间⼀致,临近点有相似运动,保持相邻 这⼏个为什么要这么假设,我在后⾯来解释,很直观的讲,如果判断⼀个视频的相邻两帧I、J在某局部窗⼝w上是⼀样的,则在窗⼝w内有:I(x, y, t) = J(x', y', t+τ),亮度恒定的假设(假设1)即为了保证其等号成⽴不受亮度的影响,假设2是为了保证KLT能够找到点,假设3则为以下原因假设(即对于同⼀个窗⼝中,所有点的偏移量都相等): 在窗⼝w上,所有(x, y)都往⼀个⽅向移动了(dx, dy),从⽽得到(x', y'),即t时刻的(x, y)点在t+τ时刻为(x+dx, y+dy),所以寻求匹配的问题可化为对以下的式⼦寻求最⼩值,或叫做最⼩化以下式⼦: ⽤积分来表⽰上述式⼦,以上式⼦可等效为: 这个式⼦的含义,即找到两副图像中,在W窗⼝中,I、J的差异,其中I以x-d/2为中⼼,J以x+d/2为中⼼,w/2为半径的⼀个矩形窗⼝间的差异,好吧,结合我们微积分的知识,函数ε(d)要取得最⼩值,这个极值点的导数⼀定为0,即的值为0,由泰勒展开的性质:可以得到:于是,问题转化为:其中:从⽽,问题即为:=>即其等式可看作为:其中,Z为⼀个2*2的矩阵,e为⼀个2*1的向量,为了要使d能够得到解,则Z需要满⾜条件,即Z*Z'矩阵可逆,其中Z'为Z矩阵的转置(ZT),在⼀般情况下,⾓点具有这样的特点。

视觉里程计原理(二)特征匹配与追踪(LK光流法)

视觉里程计原理(二)特征匹配与追踪(LK光流法)

TermCriteria termcrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01);//指定光 流法搜索算法收敛迭代的类型 calcOpticalFlowPyrLK(img1, img2, points1, points2, status, err, winSize, 3, termcrit, 0, 0.001);
Machine Perception and Interaction Group (MPIG)

Pyramid Implementation
Initial guess
Machine Perception and Interaction Group (MPIG)

Eliminate errors
example
Machine Perception and Interaction Group (MPIG)

optical flow
What’s optical flow?
Machine Perception and Interaction Group (MPIG)
Machine Perception and Interaction Group (MPIG)

rich feature descriptors
example
code FlannBasedMatcher matcher; std::vector< DMatch > matches; matcher.match(descriptors1,descriptors2,matches); Mat img_matches; drawMatches( img1, keypoints1, img2, keypoints2, matches, img_matches ); //-- Draw matches imshow("Matches", img_matches ); //-- Show detected matches

一种稀疏光流计算方法

一种稀疏光流计算方法
( x , y ) 2 W ( x, y)(I ( x, y) U I t )
(4)
其中, W 是窗函数,在邻域中心点具有较高值,边缘点其值较小。用矩阵表示即为:
- 50 /cst
ATWA U ATW b
其中, W diag W ( x1 , y1 ),W ( x2 , y2 ),
3.1 Shi-Tomasi 角点检测
Shi-Tomasi 角点检测算法[10]是 Harris 角点检测算法[11]的改进。角点是一种局部特征点,在角点处,图像 灰度的一阶导数为局部最大,图像的灰度在各个方向上均有变化。设图像在点 ( x, y) 处的灰度为 I ( x, y) ,以该 点为中心建立一个 n * n 的窗口 ,将窗口平移 x, y 产生灰度变化 E (x, y) 如下式:
2 Lucas Kanade 光流算法
1981年,Lucas和Kanade提出了一阶局部的LK算法[7]。该算法假设在一个小邻域内,光流矢量保持不变, 运用最小二乘法获得光流。考虑点 ( x, y) ,围绕其建立一个 n * n 的小邻域 ,并假设光流 U (u, v)T 在这个邻 域内保持不变。对邻域 内的每一个像素我们可以写出一个约束方程,那么在邻域 内共可以获得 N n2 个 光流约束方程,其中第 i 个像素的约束方程为:
[4]
T
设置的阈值像中具有大 特征值的像素点,再对这些像素点利用 LK 算法计算光流。
3 本文的稀疏光流算法
本文提出的稀疏光流计算方法包括两个处理过程。第一个过程提取图像中具有大特征值的像素点,这和 角点检测算法的工作原理是一样的。因此在该过程本文采用 Shi-Tomasi 角点检测算法检测角点。第二个过程 则为在提取的角点处利用 LK 方法计算光流。

tum数据集lk光流法

tum数据集lk光流法

tum数据集lk光流法TUM数据集LK光流法——从光流法的基础到TUM数据集LK光流法的应用光流法是一种计算机视觉中常用的技术,它可以用来描述图像间的运动信息。

在众多的光流法方法中,LK光流法是一种经典的算法。

TUM数据集LK光流法就是利用LK光流法对TUM数据集进行光流估计。

本文将会从光流法基础的介绍、LK光流法的原理、TUM数据集的介绍以及TUM数据集LK光流法的应用等方面,阐述光流法和LK光流法并重视之后的TUM数据集LK光流法的实现和应用。

一、光流法基础光流法是通过在某个点处求导来描述这个点的运动。

具体来说,是通过在两个连续帧中同一点处的像素值来计算出这个点的运动。

这个运动矢量就是光流。

光流法的使用需要做出两个假设:运动是连续的;亮度不变。

这两个假设虽然在计算中不一定一定成立,但是它们是常用的假设。

光流法的数学模型可以表示为:I(x+u, y+v, t+1) - I(x, y, t) = 0其中I(x+u, y+v, t+1)表示下一帧图像中坐标为(x+u, y+v)处的像素值,I(x, y, t)表示当前帧图像中坐标为(x, y)处的像素值,(u,v)表示这个点的运动矢量。

二、LK光流法LK光流法的原理是要求解上述方程在u,v两个方向上的导数。

LK 光流法的优点是计算量小,速度快,而且可以同时考虑多个点的运动。

LK光流法的基本操作是对模板进行块状分割进行求解,并对小区域内像素值进行相减,根据一定的公式求得光流u,v。

LK光流法的数学模型可以表示为:[∑IxIx, ∑IxIy] [u] = [- ∑IxIt][∑IxIy, ∑IyIy] [v] [- ∑IyIt]其中Ix和Iy是当前点(x,y)灰度图像在x和y方向上的梯度,It为两个连续帧(x,y)处图像的时间差。

三、TUM数据集TUM(Technische Universität München)数据集是目前使用最为广泛的数据集之一。

LK光流算法总结

LK光流算法总结

LK光流算法总结1.时序连续性假设:相邻图像之间的运动是连续的,即相邻帧像素之间的灰度值变化不大。

2.灰度恒定假设:在图像的小区域内,灰度值保持不变,即光流约束方程成立。

3.亮度差异小假设:两帧图像之间的光照变化较小,使得标准LK法的约束条件成立。

1.特征点选择:选择图像中的一组稀疏特征点,通常选择具有较强纹理信息或边缘明显的像素点,以便在两帧图像之间进行匹配。

2.特征匹配:通过在第一帧图像中的特征点附近,在第二帧图像中找到与之对应的点,建立点对的对应关系。

3.构造光流约束方程:利用灰度恒定假设,将特征匹配得到的点对所在的小区域内的像素灰度值进行相等约束。

4.最小二乘法求解:将光流约束方程转化为一个最小二乘问题,通过最小化目标函数来求解运动向量。

5.求解结果:得到每个特征点的运动向量,即图像中每个像素的运动速度。

1.算法简单:LK光流算法只需要基于灰度恒定假设建立光流约束方程并应用最小二乘法求解,计算量较小,易于实现。

2.对小运动和小区域适应性好:由于采用局部约束条件,LK光流算法在小运动和小区域的运动估计中表现良好。

3.特征点稀疏性:LK光流算法通过特征点的选取,使得运动向量的估计更集中在感兴趣的区域,而不是整个图像。

然而,LK光流算法也存在一些缺点:1.对大运动和非纹理区域的适应性较差:LK光流算法在大运动和非纹理区域的运动估计中容易失效,因为违反亮度恒定和小运动假设。

2.特征点选取的影响:LK光流算法的性能受到特征点选择的影响较大,如果选择的特征点不合适,可能会导致运动向量的估计精度下降。

总结而言,LK光流算法是一种简单且有效的光流估计算法,广泛应用于计算机视觉和图像处理领域。

尽管存在一些缺点,但在特定的场景下,LK光流算法仍然具有较好的性能和应用前景。

未来可以通过与其他算法的结合或改进来进一步提升其运动估计的准确性和鲁棒性。

经典光流综述

经典光流综述
实验发现,当 h 时,上述算法的结果能收敛到正确的h值上去, 这表明最初的偏差值可以最多取到波长的一半。我们从中可以获得启发: 抑制图像高频的部分,可以扩大h的收敛域。我们将图像进行平滑便可以 达到这个效果,但这同时损失了图像的细节部分,会反过来造成匹配的 不够准确,尤其当平滑窗口大于我们匹配的区域时,我们将得不到匹配 结果。
2.1 Lucas-Kanade(LK)算法
前面我们提到过算法是基于h很小的假设,所以当h很大的时候计算 出来的 结果误差很大甚至是错误的,文中在一维的情况下对正弦曲线的 匹配进行了上述算法的计算实验,设:
F ( x) sin x, G ( x) F ( x h) sin( x h).
2.1 Lucas-Kanade(LK)算法
根据我们的线性假设,曲线 线性较好的地方求出的h必然更 为准确,而线性性能的度量可以 用曲线的二阶导来表示,二阶导 较小的地方如拐点,即二阶导为 零处则线性最好,所以我们给每 个x处得出的h一个权值:
w( x) 1 . G ` ( x) F ` ( x)
2.经典光流法
Lucas-Kanade(LK) pyramidal LK(PRLK)


2.1 Lucas-Kanade(LK)算法

LK算法的原型最初是一篇讲述配准问题的论文,该文主要论述了 如何对两幅图像中的感兴趣区域进行配准,这实际也是一种求光 流的方法,但这里配准过程中使用的是牛顿迭代的方法,而经典 LK光流法中使用的是解线性方程组的方法。 《An Iterative Image Registration Technique with an Application to Stereo Vision》发表在1981年的 《Proceedings of Imaging Understanding Workshop》上。该 文通过空间的灰度梯度信息,求解两幅图像之间相应区域的匹配 问题,它可以用在各种线性变换下,甚至是旋转变换。它被引用 的次数达到了2330多次。

SLAM程序阅读(第8讲LK光流法)

SLAM程序阅读(第8讲LK光流法)

SLAM程序阅读(第8讲LK光流法)本期,⼩绿带⼤家阅读⾼翔Slambook第8讲中LK光流法程序。

细⼼的同学已经发现,⼩绿换了⽂章的封⽪,因为有⼀些同学都觉得原来那张图⽐较捞,不沉稳也不正经…⽽更细⼼的同学也会发现,⼩绿连题⽬都改了,原来叫“解读”,现在叫“阅读”,这也是因为⼀些热⼼的同学在后台积极提问,然⽽⼩绿作为⼀个门徒,实在是有些束⼿⽆策,没法很透彻的解答同学们的问题…确实,⽐⽅说在第7讲中的⼏个.cpp,求E矩阵需要使⽤findEssentialMat函数,求F矩阵需要使⽤findFundamentalMat函数,这两个函数虽由OpenCV提供,⽽且原理使⽤对极约束,但具体求取E、F时构造的是如何的⼀个最⼩⼆乘问题?求解时⼜使⽤何种⽅式求解?再⽐如说三⾓测量中,使⽤的triangulatePoint函数,其1、2号形参是两个projection matrix,也叫投影矩阵,那么这两个投影矩阵是怎么求得?⼜为什么简单地把R、t做⼀个增⼴就叫做projection matrix⽽不叫function matrix….等等诸如此类的问题,⼩绿确实由于没有深⼊阅读OpenCV源码,直接当做封装好的函数,当做⼀个⼯具去使⽤,却并没有深⼊其原理。

所以从本期开始,⼩绿没法再带着⼤家去“解读”程序啦o(╥﹏╥)o…⼩绿只能带着⼤家去“阅读”程序~~好了,闲话到此为⽌,现在咱们来看⼀下Slambook第8讲的第⼀个程序:useLK.cpp。

⾸先,来了解⼀下程序的⽤途:useLK.cpp这个程序是⼀个演⽰使⽤LK光流法跟踪特征点运动轨迹的实例,通过从数据库截取9张RGB图像(这⾥虽然data数据集⾥包含了9张深度图,然⽽只是为了读取RGB图像⽅便,为了使⽤associate.txt中排好序的图像名称,⽽在之后使⽤直接法求解位姿时才使⽤深度信息),在第⼀张图像中寻找FAST⾓点作为特征点,进⽽在后续的图像中使⽤LK光流法对这些⾓点进⾏跟踪。

基于LK光流法的单目视觉里程计

基于LK光流法的单目视觉里程计

基于LK光流法的单目视觉里程计陈伟杰;孙作雷【摘要】在移动机器人快速发展的今天,视觉里程计是通过视觉传感器进行导航定位的主要方式之一.文章介绍了基于单个摄像头的单目视觉里程计的一种实现方法,使用SURF算法提取特征点,用LK光流法进行特征追踪,相比于传统特征匹配在运算效率上有极大的提高,再对特征点计算位移与旋转量,以里程计的方式达到定位目的.详细介绍了视觉里程计的数学原理以及SURF算法和LK算法的原理及其数学推导、单目视觉里程计的尺度不确定原理.最后通过对比确定LK算法的优势以及最优参数的选择.【期刊名称】《微型机与应用》【年(卷),期】2017(036)021【总页数】4页(P45-47,50)【关键词】视觉里程计;LK光流法;图像处理;特征跟踪;多视图几何【作者】陈伟杰;孙作雷【作者单位】上海海事大学机器辨识与交互研究组,上海201306;上海海事大学机器辨识与交互研究组,上海201306【正文语种】中文【中图分类】TP242.6+2智能机器人在近年来越来越多地进入公众视野。

要想让机器人实现全自主的移动,其关键技术是即时定位与地图构建(Simultaneous Localization and Mapping,SLAM),使机器人通过传感器感知周边环境,通过传感器反馈信息构建出一幅“地图”,从而达到自主定位和导航的功能。

根据传感器的种类不同,SLAM技术可以进行分类,如激光SLAM[1]、视觉SLAM。

其中视觉传感器可以获取到的影像数据包含着丰富的信息。

视觉里程计(Visual Odometry,VO)就是一种基于视觉传感器的机器人定位方法,无需场景和运动的先验信息,可以不受移动部件的打滑、磨损、漂移等因素的误差影响,而且只要有光线的地方利用相机就可以使用,因而被广泛应用到各种移动机器人中,如火星探测器“勇气号”和“机遇号”[2]、无人飞行器[3]以及陆地机器人[4]等。

视觉里程计的概念最早在1980年提出[5],其大致理论框架为:特征提取、特征匹配或追踪以及运动估计,主要理论依据是机器视觉中的多视图几何[6],即通过前后帧图像的匹配特征点对集合计算出相机在获取两帧图像时的位姿变化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运动目标检测之Lucas-Kanade 光流算法读书笔记视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。

随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之一。

而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展前景。

一目标检测运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。

目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差分法和光流法。

1 背景差分法背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。

缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检测的结果2 帧间差分法帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。

当监控场景中出现异常物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,判断它是否大于阈值来分析视频或图像序列的运动特性,确定图像序列中有无物体运动。

图像序列逐帧的差分,相当于对图像序列进行了时域下的高通滤波。

缺点:不能提取出对象的完整区域,只能提取出边界;同时依赖于选择的帧间时间间隔。

对快速运动的物体,需要选择较小的时间间隔,如果选择不合适,当物体在前后两帧中没有重叠时,会被检测为两个分开的物体:而对慢速运动的物体,应该选择较大的时间差,如果时间选择不适当,当物体在前后两帧中几乎完全重叠时,则检测不到物体。

3 光流算法光流,它是一种运动模式,这种运动模式指的是一个物体、表面、边缘在一个视角下由一个观察者(比如眼睛、摄像头等)和背景之间形成的明显移动。

光流技术,如运动检测和图像分割,时间碰撞,运动补偿编码,三维立体视差,都是利用了这种边缘或表面运动的技术。

光流是空间运动物体在观测成像面上的像素运动的瞬时速度,光流的研究是利用图像序列中的像素强度的时域变化和相关性来确定各自像素位置的运动,即研究图像灰度在时间上的变化与场景中物体结构及其运动的关系。

图1 运动场与光流场对应关系图光流算法评估了两幅图像的之间的变形,它的基本假设是体素和图像像素守恒。

它假设一个物体的颜色在前后两帧没有巨大而明显的变化。

基于这个思路,我们可以得到图像约束方程。

不同的光流算法解决了假定了不同附加条件的光流问题。

二Lucas –Kanade 算法在计算机视觉中,Lucas –Kanade 光流算法是一种两帧差分的光流估计算法。

这个算法是最常见,最流行的。

它由Bruce D. Lucas 和Takeo Kanade 提出。

它假定在所考虑的像素的局部邻域内,本质上光流是恒定的,由此利用最小二乘法原则对邻域内所有像素求解基本光流方程。

Lucas –Kanade 光流法是一种基于梯度的局部参数化光流估计方法,该算法假定在一个空间尺寸的邻域 E 中光流矢量是恒定的,然后使用加权最小二乘法(weighted least squares)估计光流。

它计算两帧在时间t 到t + δ之t间每个像素点位置的移动。

由于它是基于图像信号的泰勒级数,这种方法称为差分,这就是对于空间和时间坐标使用偏导数。

LK 算法基于以下三个假设:1)亮度恒定。

2)时间连续或者是运动是“小运动”。

3)空间一致,临近点有相似运动,保持相邻。

假设1 亮度恒定的假设即为了保证其等号成立不受亮度的影响,假设 2 是为了保证KLT 能够找到点,假设 3 则为以下原因假设,即对于同一个窗口中,所有的点的偏移量都相等。

图像约束方程可以写为:I (x ,y ,t ) = I (x + δx ,y + δy,t + δ(t1))其中,(x, y, t) 为在(x,y )位置的像素。

我们假设移动足够的小,那么对图像约束方程使用泰勒公式,我们可以得到:I I II (x dx, y dy, t dt) I (x, y, t) dx dy dtx y t(2)因为移动足够小所以忽略二阶和更高阶的项。

从这个方程中我们可以得到:(3)对t 求导,令dx dyu ,vdt dt 分别表示水平方向、垂直方向的光流速度,表示某方向的梯度,用一阶差分代替一阶微分,于是光流基本计算公式有一般形式:I u I v IX y t (4)u, v 分别是I(x,y,t) 的光流向量中x,y 的组成。

和则是图像在(x ,y ,t ) 这一点相应方向的差分。

方程④有两个未知量,尚不能被解决,这也就是所谓光流算法的光圈问题。

那么要找到光流向量则需要另一套解决的方案。

而Lucas-Kanade 算法是一个非迭代的算法。

将上式写为矩阵相乘形式:(5)uI I Ix y tvLK光流:假设像素流在一个大小为m*m(m>1) 的小窗中是一致的,那么从像素 1...n , n = m^2 中可以得到下列一组方程:(6)图2 LK 光流算法示意图将⑥写成矩阵的形式,则有:(7)式⑦两个个未知数但是有多于两个的方程,这个方程组自然是个超定方程,也就是说方程组内有冗余为了解决这个超定问题,我们采用最小二乘法解Au b 的向量u:(8)得到:T 1 Tu ( A A ) A b (9)考虑矩阵的可逆性:TA A2I I Ix x y[ ]2I I Ix y y(10)其中的求和是从 1 到n。

于是得:(11)加权窗口:述普通的最小二乘解对窗口内n 个像素qi 一视同仁。

事实上,通常对于靠近中心像素p 的像素更多的权重会更好。

介于此,人们使用最小二乘方程的加权版本:(12)(13)计算的:(14)权重w通常被设置为qi和p之间距离的高斯函数。

三LK 光流法改进算法1 LK 方法的金字塔改进LK 方法有一个缺陷,小速度,亮度不变以及区域一致性都是较强的假设,并不很容易得到满足。

如当物体运动速度较快时,假设不成立,那么后续的假设就会有较大的偏差,使得最终求出的光流值有较大的误差。

我们设邻域窗口半径为w,则光流 d 定义为最小化残差方程?的速度:考虑物体的运动速度较大时,算法会出现较大的误差。

那么就希望能减少图像中物体的运动速度。

一个直观的方法就是,缩小图像的尺寸。

假设当图像为400×400 时,物体速度为[16 16], 那么图像缩小为200×200 时,速度变为[8,8] 。

缩小为100*100 时,速度减少到[4,4] 。

所以在源图像缩放了很多以后,原算法又变得适用了。

所以光流可以通过生成原图像的金字塔图像,逐层求解,不断精确来求得。

假设图像的宽高每次缩放为原来的一般,共缩放了Lm层,则第0 层为原图像。

设已知原图的速度向量为d,则每一层的速度为(16)基于金字塔的光流法的大概步骤如下:现在最深层Lm中求解光流。

这次计算的结果反馈给上一次Lm-1,作为该层初始时的光流值得估计g。

就这样一层一层的向上反馈,直到最高层,即原图。

对于每一层L,上方程变为:(17)每一层的计算结果通过如下方程反馈给上一层作为初始的光流估计:(18)由于金字塔的缩放减小了光流值,最底层的光流估计值可以设为0,即(19)图 3 金字塔光流示意图2 前后光流估计算法统的光流计算方法主要是基于灰度守恒和光流场的平滑性假设,但这些假设在阴影、边界和遮挡性的地方不再成立,为此,对其进行改进。

前向-后向光流方程:(20)光流约束方程为:(21)尽管Lucas-Kanade光流法计算简单,光流估计精度较高,但它有一个致命缺点,假定邻域Ω内各像素点光流保持恒定,而且光流计算依赖于窗口权重函数,这意味着如果在邻域Ω内存在严重违反光流约束方程的点或邻域Ω运动不连续,将使得估计的光流可靠性严重降低。

为此,引入Hessian 矩阵判断领域Ω内每点对于基本约束方程的“良态性”。

? 分别对x 和y 求偏导数, 可得:方程(22)写成矩阵形式,即:(23)定义Hessian 矩阵:(24)Hessian 矩阵的条件数:(25)其中、分别为Hessian 矩阵H的最大特征值和最小特征值,可以通过Hessian 矩阵的条件数大小来判断方程(23) 解的稳定性,如果Hessian 矩阵的条件数很大则方程(23) 为病态方程,对应的Hessian 矩阵秩很小,其解不稳定,计算的光流不可靠;如果Hessian 矩阵的条件数接近1,对应的Hessian 矩阵秩很大,方程(23) 为良态,其解鲁棒性较好。

由此可以通过计算Hessian 矩阵的条件数来剔除邻域Ω内不可靠点。

Hessian 矩阵的条件数很好地刻画了线性方程(11) 解的稳定性,而且条件数越大,对应的Hessian 矩阵的秩越小,为此可以先利用Hessian 矩阵剔除邻域Ω内不可靠点,并把各点对应条件数的倒数作为该点权重,其算法如下:(1) 计算图像中每点的一阶和二阶梯度;(2) 分别计算每点对应Hessian 矩阵的秩det(H) 和条件数Cond(H),设定阈值τ,并对每个邻域Ω内的) (X W 进行归一化处理, 则:(3) 采用加权最小二乘法求解式(21) 光流场(u,v) 。

四总结如上所述,光流法基本思想是像素守恒,其思想简单,易于理解。

LK 算法是对光流法的改进,在光流法上假设了小窗口光流一致原则和小运动以及亮度守恒,使得光流的求解变得非常的简单,并且能够进行大量实际应用。

但是,正是由于LK 算法假设性太强,使得其应用受到极大限制。

所以出现了好多改进算法。

金字塔光流算法正是针对其小运动假设而做的改进,其用缩小图像尺寸的方法来较小运动矢量。

而前后光流算法可以剔除光流不一致或跳动较大的点,放松光流一致的假设的条件。

后续的改进算法还有很多,可以加上全局变量来处理遮挡的问题等等,目前只是学习的这里。

以上就是此次的读书笔记。

相关文档
最新文档