图像处理算法--光流法-原理

本文介绍了光流概念,重点阐述了OpenCV中的LK光流算法,包括其基本原理、两个光学特性假设、光流约束方程以及如何通过金字塔缩放处理大运动速度问题。后续将转向实战部分,介绍DIS更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 写在前面

        因为项目上需要判断画面是朝着哪个方向在运动,故开始研究光流算法,恰巧Opencv上有这个模块,故了解一下原理,再实战。

参考文章:OpenCV3学习(11.2)LK光流法原理及opencv实现_calcopticalflowpyrlk原理-CSDN博客
1. 光流的概念(Optical flow)

        光流是一种运动模式,指的是一个物体、表面、边缘在一个视角下由一个观察者(比如眼睛、摄像头等)和背景之间形成的明显移动。光流技术,如运动检测和图像分割,时间碰撞,运动补偿编码,三维立体视差,都是利用了这种边缘或表面运动的技术。

        光流用大白话来说,就是在一个移动的序列的图像帧中,图像上每一个像素的x,y位移量,比如第t帧的时候A点的位置是(x1,y1),那么我们在第t+1帧的时候再找到A点,假设此时的坐标为(x2,y2),就可以确定运动公式:(u,v)= (x2,y2) - (x1,y1)。

2. 光流算法
2.1 两个光学特性假设前提
  1.  运动物体的灰度在很短的间隔时间内保持不变;
  2. 给定领域内的速度向量变化是缓慢的。
2.2 光流约束方程

以上就是基本的光流约束方程,约束只有一个,方程解不出来,LK光流算法考虑到像素的领域,将问题转变为计算某些点集的光流,通过联立多个方程,从而让方程有解。

2.3 LK光流算法

        在计算机视觉领域,Lucas-Kanade光流算法是一种两帧差分的光流估计算法。当下比较流行和常见的,计算两帧在时间t到t+△t之间每个像素点位置的移动,原理是基于图像信号的泰勒级数,差分的方式,对空间和时间坐标使用偏导数。

        三个假设:

  1. 亮度恒定,图像场景中的目标像素在帧间运动时外观上保持不变;
  2. 时间连续或者运动很缓慢,时间变化相对图像中的运动比例要足够小;
  3. 领域内光流一致,一个场景中的同一表面的局部领域内具有相似的运动。

        使用金字塔缩放,考虑物体的运动速度较大时,算法会出现较大的误差,那么缩小图像尺寸,减少图像中物体的运动速度。

3. 写在最后

        光流算法的理论已经是10年前的了,opencv4之前都是老版本,更新了一版DIS,下一篇直接上实战。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值