计算机视觉——光流
作者:互联网
光流
是空间运动物体在观察成像平面上的像素运动的瞬时速度。(可以就把光流理解为瞬时速度)
光流法
是通过上下帧像素点的位置关系来判断物体运动的信息的方法。
光流场
可以理解为光流的集合。
基本假设条件
使用光流法必须假设两个条件:
1.亮度不变:同一目标在不同帧时的亮度不改变。
2.时间连续或运动为“小运动”:相邻帧运动幅度不能过大。
基本约束方程
由第一个假设条件得到基本约束方程:上一时刻的光照强度等于下一时刻的
最后推导得:
Ix、Iy可由图像得到,u、v为需求的光流矢量(x,y轴的速度矢量)。
不同光流场计算方法
由于只有一个方程,但需要求两个量,还需要加入其他条件,因此有了不同的计算方法:
1.基于梯度的方法
2.基于匹配的方法
3.基于能量的方法
4.基于相位的方法
5.神经动力学方法
稠密光流和稀疏光流
先利用两幅图说明一下两种光流的区别:
(1)稠密:对图像中某一区域进行逐点匹配
(2)稀疏:选取一组特殊的点进行跟踪匹配,如:角点。
区别:
由图不难看出,稠密光流需要匹配的点更多,因此需要更多的计算时间,但也拥有更高的准确率;稀疏计算时间相对较短。
LK光流法
该方法在之前两个基本假设的前提下,加了”空间一致“的假设。
空间一致:相邻的像素有相似的运动行为,也就是目标像素周围m×m区域内的像素点,都有相同的光流矢量。
金字塔LK光流法
由于现实生活中存在许多不满足第二条基本假设(小运动)的情况,因此产生了金字塔LK光流法。
思想:
1.假如图像中目标运动幅度过大,则在保留目标块大小的同时缩小图像尺寸的,缩小n次后,每次缩小后的图像作为金字塔的一层,尺寸越小的越在上层。(设最上层为第1层,最下为第n层)
2.首先计算并观察第1层目标块的光流,然后传到下一层,再计算下一层的再传到下下层。
3.最终根据前n-1层的光流信息得到原始图像的光流信息。
因为原图中上下帧目标块的距离过大,很难计算出它的运动信息。
举例:
一个人快速的从你面前(贴的很近)用着风骚的走位闪过。这时,你只知道有个风一样的男人从你面前飘过,而不清楚他是如何经过的。此时,你决定用上面的思想确定他的运动情况。然后你走到离刚刚很远的地方,让那个风男子重复之前的动作,你会发现他原来是从左边到了右边(这是你视觉投影的平面上他运动的距离变短);你上前几步,再让他走,发现他从左到右过程中还用了闪电步。就这样,一步一步的你回到最初的位置,就能较准确的得到风男子究竟是如何运动的了
举例不恰当,搬来大佬博客里的图
虽然小尺寸图像得到的光流信息不准确,但正事根据各个尺寸计算得到的光流信息的指引,才能得到最终较为准确的光流。
基于光流的目标检测
由于各个物体之间存在着相对运动,即相对速度也不同,因此可以根据相对速度不同区分出前景和背景以及不同的物体。
基于光流的目标检测优点在于,即使是图像背景关系复杂且不知道其中具体有哪些物体、有没有物体的情况下,也能根据相对速度检测出来。
但也要注意一种特殊情况:光源固定不动、物体没有运动,但光源与物体产生了相对运动,产生了光流。如:太阳与地球上的一棵树。
参考:
https://blog.csdn.net/qq_41368247/article/details/82562165
https://blog.csdn.net/plateros/article/details/102931138
标签:计算机,假设,物体,光流法,图像,光流,视觉,运动 来源: https://blog.csdn.net/weixin_47703176/article/details/118054547