在OpenCV里使用光流算法

前面学习了使用一些运动算法来检测物体的运行,其实还有别的方法来检测运动的物体。比如节日庆祝时进行烟花表演,可以看到一道道光的轨迹,这说明物体在运动,同时也看到光在运动。另外,当你坐在火车上,朝车窗外观看时,会发现近处的物体在飞速地离去,而远处的山又好像静止不动,为什么同样速度的物体会有速度上感觉的差异的呢?其实这是人眼的成像原理导致的。通过这样的原理,其实也可以反过来应用,视频里运动速度的快与慢,不正是表现了物体与摄像机的远近。因此,这种现象就值得研究了,比如四轴飞行器在室内定位,就可以通过摄像头来观察周围的物体,来判断飞行器飞了多高和飞了多远。把这种视学运动的现象就叫做光流(Optical flow)。光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流(optical flow)。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在二维图像平面上(人的眼睛或者摄像头)的投影。如下图所示:

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读