基于Lucas-Kanade算法的三维光流提取matlab仿真
目录
1.算法描述
2.仿真效果预览
3.MATLAB核心程序
4.完整MATLAB
1.算法描述
光流的概念:(Optical flow or optic flow)
它是一种运动模式,这种运动模式指的是一个物体、表面、边缘在一个视角下由一个观察者(比如眼睛、摄像头等)和背景之间形成的明显移动。光流技术,如运动检测和图像分割,时间碰撞,运动补偿编码,三维立体视差,都是利用了这种边缘或表面运动的技术。
二维图像的移动相对于观察者而言是三维物体移动的在图像平面的投影。
有序的图像可以估计出二维图像的瞬时图像速率或离散图像转移。
光流算法:
它评估了两幅图像的之间的变形,它的基本假设是体素和图像像素守恒。它假设一个物体的颜色在前后两帧没有巨大而明显的变化。基于这个思路,我们可以得到图像约束方程。不同的光流算法解决了假定了不同附加条件的光流问题。
Lucas–Kanade算法:
这个算法是最常见,最流行的。它计算两帧在时间t 到t + δt之间每个每个像素点位置的移动。 由于它是基于图像信号的泰勒级数,这种方法称为差分,这就是对于空间和时间坐标使用偏导数。
图像约束方程可以写为I (x ,y ,z ,t ) = I (x + δx ,y + δy ,z + δz ,t + δt )
I(x, y,z, t) 为在(x,y,z)位置的体素。
我们假设移动足够的小,那么对图像约束方程使用泰勒公式,我们可以得到:
H.O.T. 指更高阶,在移动足够小的情况下可以忽略。从这个方程中我们可以得到:
2.仿真效果预览
matlab2022a仿真如下:
3.MATLAB核心程序
function [ux,uy,uz]=LK3D( image1, image2, r )
%This function estimates deformations between two subsequent 3-D images% June 2012% Default parameter
if nargin==2r=2;
end[height,width,depth]=size(image1);
image1=im2double(image1);
image2=im2double(image2);% Initializing flow vectors
ux=zeros(size(image1)); uy=ux; uz=ux;% Computing image derivatives
[Ix,Iy,Iz,It]=imageDerivatives3D(image1,image2);for i=(r+1):(height-r)for j=(r+1):(width-r)for k=(r+1):(depth-r)blockofIx=Ix(i-r:i+r,j-r:j+r,k-r:k+r);blockofIy=Iy(i-r:i+r,j-r:j+r,k-r:k+r);blockofIz=Iz(i-r:i+r,j-r:j+r,k-r:k+r);blockofIt=It(i-r:i+r,j-r:j+r,k-r:k+r);A=zeros(3,3);B=zeros(3,1);A(1,1)=sum(sum(sum(blockofIx.^2)));A(1,2)=sum(sum(sum(blockofIx.*blockofIy)));A(1,3)=sum(sum(sum(blockofIx.*blockofIz)));A(2,1)=sum(sum(sum(blockofIy.*blockofIx)));A(2,2)=sum(sum(sum(blockofIy.^2)));A(2,3)=sum(sum(sum(blockofIy.*blockofIz)));A(3,1)=sum(sum(sum(blockofIz.*blockofIx)));A(3,2)=sum(sum(sum(blockofIz.*blockofIy)));A(3,3)=sum(sum(sum(blockofIz.^2)));B(1,1)=sum(sum(sum(blockofIx.*blockofIt)));B(2,1)=sum(sum(sum(blockofIy.*blockofIt)));B(3,1)=sum(sum(sum(blockofIz.*blockofIt)));invofA=pinv(A);V=invofA*(-B);ux(i,j,k)=V(1,1);uy(i,j,k)=V(2,1);uz(i,j,k)=V(3,1);endend
end
end
a92
4.完整MATLAB
V
基于Lucas-Kanade算法的三维光流提取matlab仿真相关推荐
- matlab三维路径规划,【路径规划】基于A星算法的三维路径规划matlab源码
%% 该函数用于演示基于A_Star算法的三维路径规划算法 %% 清空环境 clc clear %% 数据初始化 %下载数据 starttime=cputime; load HeightData z ...
- 基于Luca-Kanade光流算法的图像运动场提取matlab仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 光流是一种运动模式,这种运动模式指的是一个物体.表面.边缘在一个视角下由一个观察者(比如眼睛.摄像头等)和背景之间形成的明显移 ...
- Lucas–Kanade算法
本文转自:http://blog.csdn.net/JustRemind/article/details/23745579 原文地址:http://www.cnblogs.com/gnuhpc/ ...
- 基于K-Means聚类算法的主颜色提取
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 01.简介 本期我们将一起实现基于K-Means聚类算法的主色提取 ...
- 基于二维切片图序列的三维立体建模MATLAB仿真
目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 isosurface 等值面函数 调用格式: fv = isosurface(X,Y,Z,V,i ...
- 基于粒子群算法的配电网重构研究matlab程序
基于粒子群算法的配电网重构研究matlab程序 参考文献:基于改进灰狼算法的含分布式电源配电网重构研究 (本文未考虑分布式电源) 摘要:使用基本环矩阵编码的智能优化算法在处理配电网重构问题中,通常使用 ...
- 【ISAR成像定标方法(3)—基于SGP4模型的空间目标定标方法MATLAB仿真】
目录 前提介绍 基于SGP4模型的转速估计 基于SGP4模型的空间目标定标仿真实验 结语 前提介绍 本章内容简介:本文研究了使用双行轨道报和SGP4模型估计空间LEO目标位置信息,并根据几何关系推测目 ...
- matlab地球卫星模型,地球卫星三维运行轨道MATLAB仿真
地球卫星三维运行轨道MATLAB仿真 1.问题的描述 3 轨道上运行的地球卫星,根据牛顿第二定律F=ma以及万有引力定律F=-GmME*r/r, 3可得a=-GME*r/r,即 x''= -GME*x ...
- LMS算法的基本理论和MATLAB仿真
LMS算法的基本理论和MATLAB仿真 1 基本理论 2 仿真 2.1 第一种信号:期望信号+噪声 2.1.1 没有蒙特卡洛 2.1.2 有蒙特卡洛 2.2 第二种信号:期望信号+幅相误差 2.3 第 ...
最新文章
- Enda 的 2015 下半年读书计划
- Linux之终端命令格式的组成
- U3D physics总结
- 015:字符串:格式化
- 设计模式之(Factory method)工厂方法模式
- 节点对象转节点_节点流程对象说明
- after you've written your business model
- vue.js基础知识篇(5):过渡、Method和Vue实例方法
- mongodb集群分片环境搭建
- 入门快应用的另一种姿势
- 河北520分理科计算机专业,河北最幸运考生,520分“捡漏”考上中国人民公安大学,网友:铁饭碗...
- QT/QML Text 部分功能(自动省略 自动换行 自动调节字体大小 调节行间距
- 图标字体化浅谈[转]
- 知识点 —— Python基础-1
- html anki编辑器,打造你的专属单词本——Anki 初探(无痛入门)
- 【读书笔记】投资中最简单的事-邱国鹭,别人恐惧我贪婪,别人贪婪我respect
- Android快速开发,十个最常用的框架
- 2021年山东省安全员C证考试题库及山东省安全员C证考试报名
- Android Room 数据库使用记录
- Android 9 低内存应用程序保活