繁体   English   中英

Matlab中的光流

[英]Optical Flow in Matlab

您如何在Matlab中计算和显示两个图像的光流? 他们是否为此内置了功能,如果是,那么如何实现呢?

如果您仅对如何将光流可视化为颜色和/或箭头感兴趣,下面是一个简单的脚本,向您展示如何在Matlab中完成它:

% Generate an example flow field
[u,v] = meshgrid(linspace(-1,1)/sqrt(2));
mag = sqrt(u.^2 + v.^2);
an = (atan2(v,u)+pi)/(2*pi);

%display as arrows
subplot(1,2,2);
quiver(u(1:5:end,1:5:end),v(1:5:end,1:5:end));
axis image

%display as color
subplot(1,2,1);
imagesc(hsv2rgb(an,mag,mag));
axis image

在Matlab中关于光流的工具箱 (我现在正在做广告)具有至少三种不同的方式,通过箭头和颜色编码的组合来可视化光流。 要将其与avi电影文件一起使用,请执行以下操作:

in.movieType = 'example.avi'; % assumes a file 'example.avi' in current folder. 
% in.movieType = 'synthetic';  % generate synthetic video. 
% in.movieType = 'camera';     % assumes a camera available in the system. 

in.method =  @Flow1;       %Locally regularized and vectorized method
% in.method =  @FlowLK;      %Lucas and Kanade 
% in.method =  @FlowHS;      %Horn and Schunk, variational (global regularization)

in.bRecordFlow = 1; %record the optical flow, not only display it

% resolution of flow field [Height Width]:
in.flowRes = [24 24];     %flow resolution <= video resolution

% DO THE CALL TO THE TOOLBOX(initiate the session):
pathToSave = vidProcessing(in);

% view interactively the saved session:
FancyFlowPlayer(pathToSave);

如果可以访问Matlab计算机视觉工具箱,则可以使用Lucas-Kanade Optical FLow,Horn-Schunck和Farnebäck的内置功能。 它们都需要灰度图像序列。 它们返回一个Flow对象,其中包含x,y方向上的流以及大小和角度。 对于显示,您可以使用绘图或颤动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM