Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >光流法学习「建议收藏」

光流法学习「建议收藏」

作者头像
全栈程序员站长
发布于 2022-09-06 04:05:12
发布于 2022-09-06 04:05:12
51100
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

光流的计算

光流估计就是指利用时间上相邻的两帧图像,得到点的运动。满足以下几点假设:

  • 前后两帧点的位移不大(泰勒展开)
  • 外界光强保持恒定。
  • 空间相关性,每个点的运动和他们的邻居相似(连续函数,泰勒展开)

在相邻的两帧图像中,点(x,y)发生了位移(u,v),那么移动前后两点的亮度应该是相等的。如下:

从这个式子出发,我们将其利用Taylor展开做一阶线性近似。其中Ix, Iy, It分别是Image对这几个变量的偏导数。

上面两式联立,可以得到,

上式中,

可以通过图像沿xx方向和yy方向的导数计算,

可以通过

计算。未知数是

, 正是我们想要求解的每个像素在前后相邻两帧的位移。

上面就是光流估计的基本思想。上述式子虽然给出了光流估计的思路,但是还是没有办法解出位移量。

L-K方法

Lucas-Kanade方法是一种具体的求解方法。L-K方法依据相邻像素之间的位移相似的假设,通过一个观察窗口,将窗口内的像素点的位移看做是相同的,建立了一个超定方程,使用最小二乘法进行求解。下面是观察窗口为5×5的时候,建立的方程。

使用最小二乘法求解,可以得到如下的式子,求和号代表是对窗口内的每一个像素点求和。

上式即是L-K方法求解光流估计问题的方程。

金字塔方法

在最开始的假设中,第一条指出点的位移应该是较小的。从上面的分析可以看出,当位移较大时,Taylor展开式一阶近似误差较大。其修正方法就是这里要介绍的金字塔方法。我们通过将图像降采样,就能够使得较大的位移在高层金字塔图像中变小,满足假设条件1.如下所示。

求像素梯度

而图像是一个二维函数f(x,y),其微分当然就是偏微分。因此有:

因为图像是一个离散的二维函数,ϵ不能无限小,我们的图像是按照像素来离散的,最小的ϵ就是1像素。因此,上面的图像微分又变成了如下的形式(ϵ=1):

这分别是图像在(x, y)点处x方向和y方向上的梯度,从上面的表达式可以看出来,图像的梯度相当于2个相邻像素之间的差值。

梯度的方向是函数f(x,y)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小,图像处理中把梯度的模简称为梯度,由图像梯度构成的图像成为梯度图像(we can get the gradient image through computing the gradient of each pixel in the image) 经典的图像梯度算法是考虑图像的每个像素的某个邻域内的灰度变化,利用边缘临近的一阶或二阶导数变化规律,对原始图像中像素某个邻域设置梯度算子,通常我们用小区域模板进行卷积来计算,有Sobel算子、Scharr 算子(opencv)Robinson算子、Laplace算子等

Opencv求光流函数

函数位置opencv-2.4.9/modules/video/src/lkpyramid.cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void cvCalcOpticalFlowPyrLK(
                            const CvArr* prev,
                            const CvArr* curr,
                            CvArr* prevPyr,
                            CvArr* currPyr,
                            const CvPoint2D32f* prevFeatures,
                            CvPoint2D32f* currFeatures,
                            int count,
                            CvSize winSize,
                            int level,
                            char* status,
                            float* track error,
                            CvTermCriteria criteria,
                            int flags );

1. 光流估计 https://xmfbit.github.io/2017/05/03/cs131-opticalflow/

2. 图像梯度的基本原理 https://blog.csdn.net/saltriver/article/details/78987096

3. 数字图像的梯度概念以及计算(the gradient of the image) https://blog.csdn.net/computer_liuyun/article/details/21328753

4. opencv入门12:梯度和边缘检测-GRADIENTS AND EDGE DETECTION https://harveyyeung.github.io/2018/05/11/PracPythonOpenCV/PracPythonOpenCV12/#espandi

5. Lucas-Kanade算法原理介绍及OpenCV代码实现分析 https://blog.csdn.net/banyao2006/article/details/39484113#commentBox

6. [learning opencv]第十章 跟踪与运动:金字塔Lucas-kanade(cvCalcOpticalFlowPyrLK)检测光流 https://blog.csdn.net/moc062066/article/details/6636106

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155021.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
光流法原理概述「建议收藏」
光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。
全栈程序员站长
2022/09/15
3.1K0
L-K光流推导及OpenCV代码实现
光流简单的来说就是通过摄像头的移动,在移动过程中,每一帧的图像特征点会发生移动,这个移动的过程中(x1,y1,z1)在我们下一帧的动作中,去找到原来的所有特征点的新坐标,而这个移动路径,就是所谓的,光
Pulsar-V
2018/04/18
1.5K0
L-K光流推导及OpenCV代码实现
跟踪算法(一)光流法跟踪
COPY FROM:http://blog.csdn.net/crzy_sparrow/article/details/7407604
全栈程序员站长
2022/09/15
1.2K0
DeepFlow高效的光流匹配算法(上)
本周主要介绍一篇基于传统光流法而改进的实现快速的稠密光流算法。该算法已经集成到OpenCV中,算法介绍网址:http://lear.inrialpes.fr/src/deepmatching/
点云PCL博主
2019/09/09
3.7K0
DeepFlow高效的光流匹配算法(上)
VSLAM前端:金字塔光流跟踪算法
 像素点在二维图像中的运动被定义为光流,其在相邻帧图像中存在有位移运动,即存在像素的光流。我们的目的是计算出光流,计算要满足几个前提假设:1.灰度不变性:同一个像素的灰度值在各个图像中是固定不变的;2. 相邻帧之前像素的位移不能太大;3.运动像素周围的像素具有同样的运动规律。
猫叔Rex
2021/04/07
1.8K0
VSLAM前端:金字塔光流跟踪算法
python光流法算法学习「建议收藏」
光流法是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。 简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。
全栈程序员站长
2022/09/15
1.7K0
CV学习笔记(八):光流法原理
在之前的几篇关于OpenCV的文章中我集中介绍了OpenCV中比较常用的操作和函数.在我们基础的学习中,这些函数其实在图像进行预操作的过程中已经够用了.因此在之后的文章中,我们要继续深入使用OpenCV中的一些函数来去实现几个简单的实例.能够在学习的过程中获得满足感.
云时之间
2020/02/24
1.3K0
光流法与直接法视觉里程计
根据使用的图像信息不同,可分为: 稀疏直接法:只处理稀疏角点或关键点 稠密直接法:使用所有像素 半稠密直接法:使用部分梯度明显的像素
小飞侠xp
2019/06/20
1.1K0
光流估计综述:从传统方法到深度学习
近年来,深度学习技术,作为一把利剑,广泛地应用于计算机视觉等人工智能领域。如今时常见诸报端的“人工智能时代”,从技术角度看,是“深度学习时代”。
小白学视觉
2020/09/22
3.8K0
光流估计综述:从传统方法到深度学习
深度揭秘京东全景主图背后的技术
作者 黄志标:中国科学院大学硕士,京东AI与大数据部算法工程师。 擅长图像检索、深度学习领域。曾参与京东的上亿重图检测项目,目前主要负责京东全景主图、视频审核项目。 安山:山东大学机器人研究中心硕士,京东AI与大数据部资深算法工程师。 研究兴趣为大规模图像检索、计算机视觉。负责京东图像搜索引擎、知识产权保护、深度学习算法移动化。在计算机视觉领域获得2项发明专利授权,另有十余项专利申请。 据京东财报显示,京东集团第二季度净利润达9.765亿,年度活跃用户达2.583亿,订单完成量为5.912亿。扎实的用户基
京东技术
2018/06/20
9230
Opencv----Optical Flow
光流是相机或物体运动引起的两连续帧图像中物体的运动模式, 是一个二维的位移向量场, 每一个向量表示第一个点到第二个点之间的位移
devecor
2019/11/25
1.4K0
Opencv----Optical Flow
DeepFlow高效的光流匹配算法(下)
本周主要介绍一篇基于传统光流法而改进的实现快速的稠密光流算法。该算法已经集成到OpenCV中,算法介绍网址:http://lear.inrialpes.fr/src/deepmatching/
点云PCL博主
2019/09/24
5.9K0
DeepFlow高效的光流匹配算法(下)
OpenCV中的光流及视频特征点追踪
这篇博客将介绍光流的概念以及如何使用 Lucas-Kanade 方法估计光流,并演示如何使用 cv2.calcOpticalFlowPyrLK() 来跟踪视频中的特征点。
玖柒的小窝
2021/10/25
1K0
光流法详解之一(LK光流)
Lucas–Kanade光流算法是一种两帧差分的光流估计算法。它由Bruce D. Lucas 和 Takeo Kanade提出 [1]。
一棹烟波
2019/05/25
5.3K0
LK金字塔光流法与简单实现
不务正业预警 眼看着一个学期又告一段落,几个月来拢共还是没写几篇博客。不过手头上倒是还积累着不少资料值得一写,趁着新春得闲可以好好梳理梳理了。
全栈程序员站长
2022/09/15
1.2K0
CV学习笔记(九):光流法的实现
在这一篇文章中,我们使用OpenCV中的calcOpticalFlowPyrLK()函数来实现,是基于金字塔LK光流算法,计算某些点集的稀疏光流。
云时之间
2020/02/26
1K0
旷视等提出GIF2Video:首个深度学习GIF质量提升方法
论文:GIF2Video: Color Dequantization and Temporal Interpolation of GIF images
机器之心
2019/04/30
8210
旷视等提出GIF2Video:首个深度学习GIF质量提升方法
Optical Flow
光流法实际是通过检测图像像素点的强度随时间的变化进而推断出物体移动速度及方向的方法。
刘笑江
2019/12/30
5610
Optical Flow
CV学习笔记(十四):边缘检测
在这一篇文章里我们将去学习在计算机视觉中边缘检测的知识,并且去使用OpenCV来实现Canny边缘检测算法。
云时之间
2020/03/27
2.2K0
CV学习笔记(十四):边缘检测
在这一篇文章里我们将去学习在计算机视觉中边缘检测的知识,并且去使用OpenCV来实现Canny边缘检测算法。
云时之间
2020/04/01
5230
CV学习笔记(十四):边缘检测
相关推荐
光流法原理概述「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验