特征点匹配之-光流法(LK)

本文介绍了光流法(LK)在图像处理中的特征点追踪原理,包括亮度恒定、小运动和空间一致三个假设。通过OpenCV的calcOpticalFlowPyrLK实现光流法,展示了在视频和图像中应用的例子。相比于ORB、SIFT、SURF等方法,光流法不需要计算描述子,减少了计算时间,适用于稀疏场景的特征点追踪。

特征点匹配之-光流法(LK)

一、理论
LK是特征点匹配其实并不确切,更多的应该叫特征点追踪。为什么这么说呢?是因为前面我们提到的ORB,SIFT,SURF(点击查看)都是要计算特征点的描述子的,通过描述子之间的距离来判断特征点是否匹配,而光流法并不需要计算描述子。
LK光流法基于以下三条假设:
(1) 亮度恒定:一个像素点随着时间的变化,其亮度值(像素灰度值)是恒定不变的。这是光流法的基本设定。所有光流法都必须满足。
(2)小运动: 时间的变化不会引起位置的剧烈变化。这样才能利用相邻帧之间的位置变化引起的灰度值变化,去求取灰度对位置的偏导数。所有光流法必须满足。
(3)空间一致:即前一帧中相邻像素点在后一帧中也是相邻的。这是LK光流法独有的假定。因为为了求取x,y方向的速度,需要建立多个方程联立求解。而空间一致假设就可以利用邻域n个像素点来建立n个方程。
二、使用
opencv中calcOpticalFlowPyrLK实现了光流法:

import numpy as np
import cv2
'''
LK for video
'''
cap = cv2.VideoCapture('../asset/video/2.mp4')
# 角点检测所需参数 最大检测数量 角点的检测最低下hi两小于0.3不被计入 最小的欧氏距离
feature_params = dict(maxCorners=100, qualityLevel=0.3, minDistance=7)
# lucas kanade参数
# winSize 选择多少个点进行u,v的求解  图像金字塔的层数
lk_params = dict(winSize=(30, 30), maxLevel=6)
# 随机颜色条
color = np.random.randint(0, 255, (100, 3))
# 拿到第一帧图像
ret, oldframe = cap.read(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值