LK光流算法总结
基于LK光流的模板匹配算法的研究与改进

-
电 子 工 业 善 用 i 殳吝
半导 体 制造
工 艺 与 设 备
1 传 统 的基 于 L K 光 流 的 模 板 匹 配 算 法
1 . 1 光 流 法
式 只有 一 个 方程 , 因此 它 的解 是 非 唯 一 的 , 即只 能
确 定一 条 约束 线 , 而不 能 同 时求 出 光 流 的 两 个 速
中 图分 类号 : T P 3 9 1 . 4 1
文 献 标识 码 : A
文 章 编号 : 1 0 0 4 . 4 5 0 7 ( 2 0 1 3 ) 1 0 — 0 0 1 8 0 5
An a l y s i s o f Mo t i o n Pl a n ni ng o n Bo nd Ar m
e f f e c t i v e l y, Me a n wh i l e c a n r e d uc e t h e t i me of ma t c hi ng. Ke ywo r ds :M a c hi ne Vi s i o n; I ns pe c t i o n a n d po s i t i o ni ng ;Opt i c a l lo f w ;Te m pl a t e ma t c h i ng
半导 体 制造 工 艺 与设 备
电 字 工 业 毫 用 殳备
Hale Waihona Puke - 基于 L K光流 的模 板 匹配 算法 的 研 究 与 改 进
王小捷 , 李向 东
( 北 京 中 电 科 电子 装 备 有 限公 司 , 北京 1 0 1 6 0 1 )
摘 要 : 针 对半 导 体设 备 中机 器视 觉 的识 别 定位 问题 ,介 绍 了传 统 的 L K 光流 的 模 板 匹配算 法 , 在 此 基 础 上提 出了 附加 运 动 方 向 光 滑约 束 条件 的 L K 光流 的模板 匹配算 法 该 算 法采 用运 动 方 向光 滑 约 束 条件 作 为正 则化 项 , 较好 的保 持 了运 动 的 边界 . 通过 实验 分 析 . 采 用该 算 法对 芯 片 进 行识 别 定位 , 具 有精 度 高 , 计算 速度 快 的 特 点 , 关键 词 : 机器视觉: 检 测 定位 : 光流 法 ; 模板 匹 配
LK光流算法

已被广泛的应用于运动车辆跟踪和人脸特征点跟踪[47,48];下面介绍文献[27],并对其
进行相关实验。
§4.3.1问题提出
提下,推导出灰度图像光流场计算的基本等式,这是经典光流方法[18,24]。
光流的算法多种多样,其用于目标跟踪常用的算法有:检测和跟踪特征点[25]、跟
好的特征点[26]、金字塔图像的Lucas Kanade特征点跟踪算法(因为其跟踪过程是迭
的光流法计算过程,因此,为了更好的体现光流的作用,本文将其简称为:Lucas
(4-3-13)
B(x,y)~=JL(x+gL
x
,y+gL
y
)
?(x,y)∈[px?ωx,px+ωx]×[py?ωy,py+ωy]
(4-3-14)
注意到A(x,y)和B(x,y)的定义域稍微有些差异。实际上,A(x,y)是在窗口大小为
(2ωx+3)×(2ωy+3)的范围内定义,而不是(2ωx+1)×(2ωy+1)。在后面运用中心差分算子
px+ωx
x=px?ωx
py+ωy
y=py?ωy
(A(x,y)?B(x,y)?[?
B
?x
?B
?y
]υ)?[
?B
?x
?B
?y]
(4-3-18)
注意到A(x,y)?B(x,y)可以看作是在点[x,y]T的一个导数,所以:
δI(x,y)~=A(x,y)?B(x,y)
?(x,y)∈[px?ωx,px+ωx]×[py?ωy,py+ωy]
lk光流估计方法的三大假设

lk光流估计方法的三大假设Lucas-Kanade(LK)光流法是一种基于局部区域的光流估计方法,其基本思想是在图像的每个像素附近构造一个小的局部区域,并假设在这个小区域内,像素的运动是近似恒定的。
LK 光流法基于以下三个主要假设:
1. 空间一致性假设(Spatial Coherence Assumption): LK 方法假设图像上相邻像素点的运动是相似的。
在实际场景中,通常认为一个局部区域内的像素在图像上的运动是比较一致的,即图像上相邻的像素点有相似的运动向量。
2. 灰度不变性假设(Brightness Constancy Assumption):LK 方法假设同一点在不同帧的图像上的灰度值在时间上是不变的,即对于一个小区域内的像素,其灰度值在不同帧上是恒定的。
这个假设是LK 方法求解光流的基础,通过对图像灰度变化进行局部的近似,可以得到运动场的估计。
3. 小运动假设(Small Motion Assumption): LK 方法假设在一个小的时间间隔内,像素的运动是线性的。
这意味着在光流的估计中,我们只考虑相邻帧之间的微小运动。
这个假设使得问题变得更为简单,因为可以使用一阶泰勒展开来近似运动场。
基于这些假设,LK 光流法通过在局部区域内构造一个对灰度变化的空间梯度矩阵,利用灰度不变性和小运动假设,通过最小二乘法求解一个线性方程组,得到该区域内的光流场。
然后,通过在图像的不同位置重复这个过程,就可以得到整个图像上的光流场。
需要注意的是,虽然 LK 光流法在某些场景下效果良好,但在存在大的运动或者场景变化的情况下,其假设可能不再成立,因此在实际应用中,需要根据场景的特点选择合适的光流估计方法。
lk光流法代码

光流法(Lucas-Kanade method)是一种用于估计图像序列中像素点运动的方法。
下面是一个简单的Python代码示例,使用OpenCV库实现LK光流法:```pythonimport numpy as npimport cv2# 读取前后两帧图像cap = cv2.VideoCapture('vtest.avi')ret, old_frame = cap.read()ret, new_frame = cap.read()# 转换为灰度图像old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY) new_gray = cv2.cvtColor(new_frame, cv2.COLOR_BGR2GRAY) # 初始化特征点及对应坐标points = np.float32([[50,50],[100,50],[50,100],[100,100],[50,150],[1 00,150]])# 计算光流场lk_params = dict(winSize = (15,15),maxLevel = 2,criteria = (cv2.TERM_CRITERIA_EPS |cv2.TERM_CRITERIA_COUNT, 10, 0.03))# 使用Lucas-Kanade方法计算光流场flow = cv2.calcOpticalFlowPyrLK(old_gray, new_gray, points, None, lk_params)# 绘制运动轨迹for i,(new,old) in enumerate(zip(flow[1], points)):a,b = new.ravel()c,d = old.ravel()img2.line(a:b[0],c:d[0],color=(0,255,0),thickness=3) img2.circle(a:b[0],c:d[0],5,(0,0,255),-1)img2.circle(c:d[0],a:b[0],5,(0,255,0),-1)cv2.imshow('frame',img2)cv2.waitKey(30)cap.release()cv2.destroyAllWindows()```这个代码首先读取视频文件中的两帧图像,并将它们转换为灰度图像。
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光流算法总结

运动目标检测之Lucas-Kanade光流算法读书笔记视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。
随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之一。
而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展前景。
一目标检测运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。
目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差分法和光流法。
1背景差分法背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。
缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检测的结果2帧间差分法帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。
当监控场景中出现异常物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,判断它是否大于阈值来分析视频或图像序列的运动特性,确定图像序列中有无物体运动。
图像序列逐帧的差分,相当于对图像序列进行了时域下的高通滤波。
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)输入的两幅图像应该是连续的帧,且图像尺寸应该相同。
光流计算及其原理分析

光流计算及其原理分析光流是图像亮度的运动信息描述。
光流法计算最初是由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算法的约束条件即:⼩速度,亮度不变以及区域⼀致性都是较强的假设,并不很容易得到满⾜。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 + δt ) (1)其中,(x, y, t) 为在(x,y )位置的像素。
我们假设移动足够的小,那么对图像约束方程使用泰勒公式,我们可以得到:(3)的梯度,用一阶差分代替一阶微分,于是光流基本计算公式有一般形式:X y tI u I v I +=- (4)u, v 分别是I(x,y,t)的光流向量中x ,y 的组成。
和则是图像在(x ,y ,t )这一点相应方向的差分 。
方程④有两个未知量,尚不能被解决,这也就是所谓光流算法的光圈问题。
那么要找到光流向量则需要另一套解决的方案。
而Lucas-Kanade 算法是一个非迭代的算法。
将上式写为矩阵相乘形式:x y t u I I I v ⎡⎤⎡⎤=-⎢⎥⎣⎦⎣⎦ (5)LK 光流:假设像素流在一个大小为m*m(m>1)的小窗中是一致的,那么从像素1...n , n = m^2 中可以得到下列一组方程:(6)图2 LK 光流算法示意图将⑥写成矩阵的形式,则有:(7)式⑦两个个未知数但是有多于两个的方程,这个方程组自然是个超定方程,也就是说方程组内有冗余为了解决这个超定问题,我们采用最小二乘法解Au b =的向量u :(8)得到:1()T T u A A A b-= (9)考虑矩阵的可逆性:22[]x x yT x y y I I I A A I I I =∑∑∑∑ (10)其中的求和是从1到n 。
于是得:(11)加权窗口:述普通的最小二乘解对窗口内n 个像素qi 一视同仁。
事实上,通常对于靠近中心像素p 的像素更多的权重会更好。
介于此,人们使用最小二乘方程的加权版本:(12)(13)计算的:(14)权重w 通常被设置为qi 和p 之间距离的高斯函数。
三LK 光流法改进算法1 LK 方法的金字塔改进LK 方法有一个缺陷,小速度,亮度不变以及区域一致性都是较强的假设,并不很容易得到满足。
如当物体运动速度较快时,假设不成立,那么后续的假设就会有较大的偏差,使得最终求出的光流值有较大的误差。
我们设邻域窗口半径为w,则光流d 定义为最小化残差方程?的速度:(15)考虑物体的运动速度较大时,算法会出现较大的误差。
那么就希望能减少图像中物体的运动速度。
一个直观的方法就是,缩小图像的尺寸。
假设当图像为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算法假设性太强,使得其应用受到极大限制。
所以出现了好多改进算法。
金字塔光流算法正是针对其小运动假设而做的改进,其用缩小图像尺寸的方法来较小运动矢量。
而前后光流算法可以剔除光流不一致或跳动较大的点,放松光流一致的假设的条件。
后续的改进算法还有很多,可以加上全局变量来处理遮挡的问题等等,目前只是学习的这里。
以上就是此次的读书笔记。