首页 > 编程语言 >光流算法从理论到实践专题2

光流算法从理论到实践专题2

时间:2022-10-05 21:00:09浏览次数:69  
标签:顶层 专题 像素 算法 图像 光流 金字塔 像素点


1、资料搜索

​总结:光流--LK光流--基于金字塔分层的LK光流--中值流​

​光流算法从理论到实践专题1​

2、本人总结

       我在“​​光流算法从理论到实践专题1​​”已经详细介绍了光流的基本概念以及最基本的LK光流算法。下面我们开始针对光流中的假设进行细化分析,其实在我给大家讲解光流概念的时候,里面就有一个存在一个不严谨的假设:假设上帧与当前帧的时间间隔比较短,但是当运动是快速运动的时候,我们该如何解决呢。我们可以举例来说明一下,加入我们是一个1000X1000分辨率的图像,结果前后两帧图像相同位置的像素偏移了[10,10]。但是如果我们把图像分辨率缩放为100X100,那么像素偏移则变为[1,1]。因此,这篇博客针对这个问题,开始引入 金字塔分层的LK光流法

2.1 概念

      该方法是由Bouguet提出,通过使用​​金字塔​​分层的方式,将原始图像逐层分解处理。说白了,就是金字塔上层的一个像素可以代表下层金字塔的几个像素。通过金字塔来实现自上而下的运动量。

2.2 算法简单流程

(1)首先建立一个高斯金字塔对原始图像进行分层,其中底层为原始图像,高层为最低分辨率图像;

(2)之后需要计算光流,即从顶层

光流算法从理论到实践专题2_像素点

开始,通过最小化每个领域范围内的匹配误差和,来得到顶层中每个点的光流

光流算法从理论到实践专题2_OpenCV_02

假设图像每次缩放为原来的一半,经过L层金字塔后,其中第0层为原图像,假设已知位移距离为d,每层的位移为:

光流算法从理论到实践专题2_特征值_03

(3)顶层的光流计算结果反馈到

光流算法从理论到实践专题2_特征值_04

层,可以得到初始的光流值

光流算法从理论到实践专题2_特征值_05

(4)重复上面的操作,知道第0层对应的

光流算法从理论到实践专题2_光流_06

准确值 = 估计量 + 残差

因此,每层中每个点的光流都是基于领域内所有匹配点所有的匹配误差最小化:

光流算法从理论到实践专题2_光流_07

关于实验的效果图和公式的推导就是 “​​光流算法从理论到实践专题1​​”,所以这里就不在说明。

说明:根据上面的操作不仅可以解决两帧之间的大运动,还在一定程度上解决孔径问题(因为,相同大小的窗口,在高层覆盖的范围会更大些)

有的时候考虑到顶层,其实就是减少了物体的位移,也就是减少了光流值。因此,我们先假设其对应的光流估计值

光流算法从理论到实践专题2_像素点_08

2.3 特征点的选择

        因为光流是对图像中的每个像素进行操作,如果所有的像素都进行金字塔光流计算,那么帧与帧之间的时间间隔就会很大。为了解决这个问题,大家都会想到是否可以初步选取一些鲁棒的特征点。我们在上一专题中已经推导出公式:

光流算法从理论到实践专题2_光流_09

 

光流算法从理论到实践专题2_像素点_10

,其中根据矩阵的可逆性,要求矩阵G的最小特征值要足够的大,才能够保证像素点容易进行跟踪。

因此,需要按照下面步骤选取特征点:

(1)记录图像I每个像素对应的矩阵G,计算其特征值

光流算法从理论到实践专题2_特征值_11


(2)遍历图像I得到每个G对应特征值的最小值和最大值;

(3)保留最小特征值大于

光流算法从理论到实践专题2_光流_12

值对应的像素点;

(4)保留上一步中得到像素点中特征值局部最大的像素点;(范围可以自己选择,一般为3 X 3);

(5)剔除上一步保留像素点中分布密集的一些像素点,确保任何像素点之间的距离都大于给定的阈值(5~10个像素);

2.4 总结

      总结上面的内容,首先,计算顶层图像上的光流。然后,根据最顶层的

光流算法从理论到实践专题2_特征值_04

光流的计算结果去估计次顶层的初始值,来计算次顶层上光流的精确值。最后,根据上层光流的计算结果估计下一层

光流算法从理论到实践专题2_光流_14

光流的初始值,并计算其精确值反馈到下一层,直到计算出最底层的原始图像的光流。

注意:

(1)在每层图像中光流计算之前在图像周围要添加额外的像素圈,将像素圈内的像素值填充为图像的真实边界值。这样计算边界点的邻域时,相当于计算该点邻域有效部分;

(2)在每层图像上,都要根据光流估计值预先平移领域窗口,这样操作后计算的残差位移向量d就非常小,就可以使用标准的LK算法进行计算了。

光流算法从理论到实践专题2_特征值_15

更多《计算机视觉与图形学》知识,可关注下方公众号:

光流算法从理论到实践专题2_光流_16

标签:顶层,专题,像素,算法,图像,光流,金字塔,像素点
From: https://blog.51cto.com/u_15717531/5732928

相关文章

  • 排序算法
    例如12,23,8,15,33,24,77,551.选择排序即从最小数开始排序,一次排一个2.冒泡排序从最后一个数开始比前一个数小就互换,比前一个数大就判断前一个数和再前一个数,一次迭代排好一......
  • Gym 100959B Airports(Prim算法,曼哈顿距离变换,曼哈顿距离最大生成树)
    今天训练遇到了这样一个题:给出平面上的n(1e5)个点,求d的最大值,使得所有距离不小于d的点连边后,图是联通的。显然可以转化为求最大生成树的最小边权。一种办法是优化边数,跑k......
  • 金融系统中的RSA算法
    =======================**基础知识**=======================对称性算法:信息传递的双方的加解密信息,需要保护的是加解密信息;因为此时加解密的方式是一样的;非对称性......
  • 【code基础】 回溯算法
    回溯算法也叫回溯搜索法,其本质是穷举,也可以加上剪枝操作进行优化回溯是递归的副产品,只要有递归就存在回溯的思想回溯算法可以抽象为树形结构回溯法解决如下问题:组合......
  • 【优化调度】基于粒子群算法求解单一水库优化调度(目的函数总发电量)附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 磅客策招聘|3D视觉、医学3D重建算法工程师
    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁。公司介绍磅客策(上海)智能医疗科技有限公司Puncture(Shanghai)Intelligent......
  • 算法突破:二分查找
    LeetCode75学习计划适用于想为技术面试做准备但不确定应该聚焦于哪些题目的用户。学习计划中的题目都是经过精心挑选的,Level1和Level2学习计划是为初级用户和中级用户......
  • 【算法学习】匈牙利算法
    匈牙利算法一、历史匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,广泛应用在运筹学领域,美国数学家哈罗德·库恩于1955年提出该算法,之所以被称作匈牙......
  • 栈的应用----中缀表达式转后缀表达式的算法
    前提一个中缀表达式可以对应多个后缀表达式,机器算法得出的是性质最好的左优先的后缀表示式。 算法核心思想1、一切过程皆是数据。2、一个中缀表达式的操作数,左右两边......
  • 黑豹招聘|SLAM、三维视觉算法工程师等岗位(校招/社招/实习)
    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁。公司介绍陕西黑豹高科技术有限公司是一家军民融合企业,专注于移动视觉感知,实......