您现在的位置:首页 >> 图像处理 >> 内容

基于Lucas-Kanade算法的双目图像光流提取matlab仿真

时间:2023/3/17 19:40:22 点击:

  核心提示:A478,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJaZkp9v

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

         根据图像前景和背景的运动,检测视频的变化,空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。可以用来检测运动抖动物体

4.部分源码

........................................................................

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 = imgaussfilt(im1,2);

im2 = imgaussfilt(im2,2);

 

 

 

u = zeros(size(im1)); % create u and v matrices

v = zeros(size(im2));

 

 

IxMask = [-1 1; -1 1]; % Create the X derivative filter

IyMask = [-1 -1; 1 1]; % Create the Y derivative filter

 

ItMask_1 = [-1 -1; -1 -1]; %Create both the filters for the time derivative

ItMask_2 = [1 1; 1 1];

 

im1x = conv2(im1, IxMask,'same');

im2x = conv2(im2, IxMask,'same');

im1y = conv2(im1, IyMask,'same');

im2y = conv2(im2, IyMask,'same');

 

im1t = conv2(im1, ItMask_1,'same');

im2t = conv2(im2, ItMask_2,'same');

 

Ix = (im1x + im2x) ./ 2;

Iy = (im1y + im2y) ./ 2;

It = (im1t + im2t) ./ 2;

 

newnumb1 = size(im1,1) - mod(size(im1,1),windowSize);

newnumb2 = size(im1,2) - mod(size(im1,2),windowSize);

 

for i = 1 : newnumb1 - windowSize

    for j = 1 : newnumb2 - windowSize

        

        Ixwindow=Ix(i  : i + windowSize , j : j + windowSize);

        Iywindow=Iy(i  : i + windowSize , j : j + windowSize);

        Itwindow=It(i  : i + windowSize , j : j + windowSize);

        

        Ixwindow = reshape(Ixwindow , [1 , size(Ixwindow,1)^2 ])';

        Iywindow = reshape(Iywindow , [1 , size(Iywindow,1)^2 ])';

        Itwindow = reshape(Itwindow , [1 , size(Itwindow,1)^2 ])';

        

        A=[Ixwindow Iywindow];

        B=Itwindow;

        [outpute]=inv(A'*A)*A'*B;

        

        u(i  , j) = outpute(1);

        v(i  , j) = outpute(2);

    end

end

u(isnan(u))=0;

v(isnan(v))=0;

A478

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168