1.问题描述:

空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。也就是说,由空间域到图像平面的投影。而通俗来讲,把图像中的每一个点的瞬时速度和方向找出来就是光流。然后使用最小二乘法对邻域中的所有像素点求解基本的光流方程。因为方程个数已经超过了为未知量个数假定像素位置p周围的领域像素由;将其写为矩阵的形式,则有

2.部分程序:

function [u,v]=LucaKanade(im1,im2)
numLevels=3;
window=9;
iterations=1;
alpha = 0.001;

hw = floor(window/2);
pyramid1=im1;
pyramid2=im2;
for i=2:numLevels
    im1 = impyramid(im1, 'reduce');
    im2 = impyramid(im2, 'reduce');
    pyramid1(1:size(im1,1), 1:size(im1,2), i) = im1;
    pyramid2(1:size(im2,1), 1:size(im2,2), i) = im2;
end;
for p = 1:numLevels
   
    im1 = pyramid1(1:(size(pyramid1,1)/(2^(numLevels - p))), 1:(size(pyramid1,2)/(2^(numLevels - p))), (numLevels - p)+1);
    im2 = pyramid2(1:(size(pyramid2,1)/(2^(numLevels - p))), 1:(size(pyramid2,2)/(2^(numLevels - p))), (numLevels - p)+1);
       
    if p==1
    u=zeros(size(im1));
    v=zeros(size(im1));
    else  
    u = 2 * imresize(u,size(u)*2,'bilinear');   
    v = 2 * imresize(v,size(v)*2,'bilinear');
    end
    
    for r = 1:iterations
   
    u=round(u);
    v=round(v);
    
        for i = 1+hw:size(im1,1)-hw
            for j = 1+hw:size(im2,2)-hw
            patch1 = im1(i-hw:i+hw, j-hw:j+hw);
      
            lr = i-hw+v(i,j);
            hr = i+hw+v(i,j);
            lc = j-hw+u(i,j);
            hc = j+hw+u(i,j);
           
                  if (lr < 1)||(hr > size(im1,1))||(lc < 1)||(hc > size(im1,2))  
                  else
                  patch2 = im2(lr:hr, lc:hc);
      
                  fx = conv2(patch1, 0.25* [-1 1; -1 1],'same') + conv2(patch2, 0.25*[-1 1; -1 1],'same');
                  fy = conv2(patch1, 0.25* [-1 -1; 1 1],'same') + conv2(patch2, 0.25*[-1 -1; 1 1],'same');
                  ft = conv2(patch1, 0.25*ones(2),'same') + conv2(patch2, -0.25*ones(2),'same');

Fx = fx(2:window-1,2:window-1)';
                  Fy = fy(2:window-1,2:window-1)';
                  Ft = ft(2:window-1,2:window-1)';

A = [Fx(:) Fy(:)];      
                  G=A'*A;
              
                  G(1,1)=G(1,1)+alpha; G(2,2)=G(2,2)+alpha;
                  U=1/(G(1,1)*G(2,2)-G(1,2)*G(2,1))*[G(2,2) -G(1,2);-G(2,1) G(1,1)]*A'*-Ft(:);
                  u(i,j)=u(i,j)+U(1); v(i,j)=v(i,j)+U(2);
                  end
            end
        end
    end
end
end

3.仿真结论:

C-79

LK光流算法的matlab仿真与仿真相关推荐

  1. 光流 | 金字塔迭代(Iterative Pyramidal)LK光流算法(Matlab源代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  2. 图像缩放算法_技术专栏|基于无人机LK光流算法的适用性及其优化方法探究

    点击上方蓝字关注我们 问题描述 ◆ ◆ ◆ 一般的LK光流算法存在一个比较明显的局限性.我们知道,一般的LK光流算法必须包含三个假设: (1)亮度恒定: (2)时间连续或者运动是小运动: (3)空间一 ...

  3. 【视频抖动程度检测】基于LK光流算法的视频图像序列抖动程度计算matlab仿真

    1.软件版本 matlab2021a 2.算法原理概述 根据LK光流提取算法,得到视频前后两帧图像的光流,假设, X(t),Y(t) 表示t时刻光流场的X分量和Y分量: 那么晃动计算公为: 其中R为光 ...

  4. 光流 | HS光流算法与LK光流算法(基于OpenCV)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  5. 【老生谈算法】matlab实现金字塔LK光流法源码——金字塔LK光流法

    基于金字塔LK光流法的MATLAB代码 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于金字塔LK光流法的MATLAB代码.docx ...

  6. OpenCV3学习(11.2)LK光流法原理及opencv实现

    光流的概念:(Optical flow or optic flow) 它是一种运动模式,这种运动模式指的是一个物体.表面.边缘在一个视角下由一个观察者(比如眼睛.摄像头等)和背景之间形成的明显移动.光 ...

  7. 基于Luca-Kanade光流算法的图像运动场提取matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 光流是一种运动模式,这种运动模式指的是一个物体.表面.边缘在一个视角下由一个观察者(比如眼睛.摄像头等)和背景之间形成的明显移 ...

  8. 【控制】粒子群优化(PSO,Particle Swarm Optimization)算法及 Matlab 仿真实现

    文章目录 定义 对比模拟捕食 通俗解释 粒子抽象 关于速度和位置 速度和位置的更新 标准PSO算法流程 标准PSO算法的流程 PSO流程图解 学习因子 c1.c2c_1.c_2c1​.c2​ 分析 仿 ...

  9. 模糊PID算法及其MATLAB仿真(1)

    目录 1.PID控制基础 2.模糊控制 3.模糊PID简介 4.模糊自整定PID的理论内容(重点内容) 4.1 基本原理 4.2 模糊子集及其论域的确定 4.3 模糊规则的建立 4.4 模糊推理 4. ...

最新文章

  1. Oracle Database 11.2.0.4.0 已在 中标麒麟Linux x86-64 NeoKylin Linux Advanced Server 6 上通过认证...
  2. C#中如何得到机器的IP地址
  3. matlab fig格式图片转化为png格式
  4. (chap3 Http报文内的http信息) HTTP报文格式
  5. Yii的各种render
  6. 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)
  7. 修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...
  8. JDK的bug导致Java文件删除不了,必须fgc
  9. Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
  10. 基于链表的模拟21点游戏 C语言
  11. 获取当前user的Session状态
  12. Pycharm设置一种好看的皮肤/主题
  13. emoji字符串 php,使用emoji字符组成任意汉字
  14. [写轮眼]QQ服务调校
  15. 头像框DIY制作小程序源码王者吃鸡等气泡头像框在线生成源码
  16. wordpress面包屑-wordpress面包屑设置方法
  17. java文件在浏览器下载和预览
  18. 网络红人斌少最新资料
  19. 家庭服务器 作用,家庭网络存储服务器四大主要功能
  20. 【Python爬虫】Python+Selenium爬取百度圣卡/网易白金卡手机靓号

热门文章

  1. 主流支付平台的业务流程简介
  2. 【贪玩巴斯】关于修改系统hosts文件提升网络访问速度以便于提高抢课几率(好文分享)//2021-2-10
  3. android设置listview的item颜色相间排列
  4. Eclipse安装插件的方法
  5. Minecraft PCL 启动器
  6. windows10映射网络驱动器教程、步骤(出现网络错误、浏览不能选择的解决办法)
  7. 复变函数课后习题答案详解
  8. Matlab:实现光波偏振态仿真
  9. 赤手空拳如何成就百万富翁?——网络营销之七(第四招:百度文库+)
  10. javax.mail.MessagingException: 500 Error: bad syntax问题