matlab光流法处理视频,关于光流法视频检测图像处理的

如题,本人新人,学习matlab不久,很多还是不明白,比如,我在网上找了一个HS(一种光流法算法)的matlab程序,对其中2张图片进行了处理,希望得到2张图片的光流算法的运动目标的对比图,得到的结果我看不懂啊(一团蓝色的东西),我上传了附件,另外也附上代码

function [u, v] = HS(im1, im2, alpha, ite, uInitial, vInitial, displayFlow, displayImg)

if nargin<1 || nargin<2

im1=imread('yos9.bmp');

im2=imread('yos10.bmp');

end

if nargin<3

alpha=1;

end

if nargin<4

ite=100;

end

if nargin<5 || nargin<6

uInitial = zeros(size(im1(:,:,1)));

vInitial = zeros(size(im2(:,:,1)));

elseif size(uInitial,1) ==0 || size(vInitial,1)==0

uInitial = zeros(size(im1(:,:,1)));

vInitial = zeros(size(im2(:,:,1)));

end

if nargin<7

displayFlow=1;

end

if nargin<8

displayImg=im1;

end

%% Convert images to grayscale

if size(size(im1),2)==3

im1=rgb2gray(im1);

end

if size(size(im2),2)==3

im2=rgb2gray(im2);

end

im1=double(im1);

im2=double(im2);

im1=smoothImg(im1,1);

im2=smoothImg(im2,1);

tic;

%%

% Set initial value for the flow vectors

u = uInitial;

v = vInitial;

% Estimate spatiotemporal derivatives

[fx, fy, ft] = computeDerivatives(im1, im2);

% Averaging kernel

kernel_1=[1/12 1/6 1/12;1/6 0 1/6;1/12 1/6 1/12];

% Iterations

for i=1:ite

% Compute local averages of the flow vectors

uAvg=conv2(u,kernel_1,'same');

vAvg=conv2(v,kernel_1,'same');

% Compute flow vectors constrained by its local average and the optical flow constraints

u= uAvg - ( fx .* ( ( fx .* uAvg ) + ( fy .* vAvg ) + ft ) ) ./ ( alpha^2 + fx.^2 + fy.^2);

v= vAvg - ( fy .* ( ( fx .* uAvg ) + ( fy .* vAvg ) + ft ) ) ./ ( alpha^2 + fx.^2 + fy.^2);

end

u(isnan(u))=0;

v(isnan(v))=0;

%% Plotting

if displayFlow==1

plotFlow(u, v, displayImg, 5, 5);

end

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值