用MATLAB实现对运动物体识别与跟踪

该博客介绍如何使用MATLAB进行运动物体识别与跟踪。通过帧差法分离运动物体与背景,利用bwareaopen函数处理二值图像,regionprops获取物体质心,然后进行质心追踪。在4K视频的处理中,由于速度问题,无法实现实时预读取,可能存在延迟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不得不说MATLAB的图像处理函数有点多,但速度有时也是出奇的慢。还是想c的指针,虽然有点危险,但速度那是杠杠的。
第二个MATLAB程序,对运动物体的识别与追踪。
这里我们主要运用帧差法实现运动物体与背景图像的分离,由于视频中的物体较为简单,我们只对两帧图像取帧差(也是为了提高速度)
对于运动物体的提取我们运用了MATLAB里自带的函数bwareaopen
bwareaopen(src,int),src为二值图像,int为设置的联通域的大小,是对帧差法,在转化为二值的图像进行操作,结果是将大小小于设定的int的连通域置为0;
对于第一帧与第二帧图像运动物体的坐标的提取我们用了自带的regionprops函数
regionprops(src,’‘)其中src为传入的二值图像,’‘内的为你所需要的属性
具体属性可以查看MATLAB的help
这里写图片描述
这里我们选用了其中的Centroid属性,返回的时连通域的质心坐标,注返回的第一个值为横坐标,第二个值为纵坐标~
对于运动物体的追踪我们用了质心追踪,
在第一二三两帧的帧间差的运动物体的质心求出来后,将质心做差得到的向量预测下一帧间差运动物体可能到达的位置,接下来在对这个位置进行局部的找质心,再做差如此循环。
追踪大致如图(画的不好):
这里写图片描述
这个相对与全局再次进行bwareaopen,regionprops,速度应该会快一下,而且这是进行局部地搜索所以可以减小背景,或其他噪声的影响。
这里写图片描述
如图为直接进行帧间差分后的转化的二值图像,即使噪声很大用局部追踪也能跟上。
具体代码:

yuandian=zeros(2,2);
i=1293;
filename1 = strcat('I:\2d3d\2\dxshiyan2\C',num2str(i),'.jpg');
src1=imread('C1291.jpg');
src2=imread('C1292.jpg');
%src1=rgb2gray(src1);
%src2=rgb2gray(src2);
zhic1=src2-src1;
zhic1=im2bw(zhic1,0.2);
imshow(zhic1);
zhic2= bwareaopen(zhic1,3000);
imshow(zhic2);
quyu=regionprops(zhic2,'Centroid');
[u,v]=zhixin(zhic2,int16(quyu.Centroid(2)),int16(quyu.Centroid(1)));
yuandian(1,1)=u;
yuandian(1,2)=v;
%去一个模板为400*400src1=src2;
src2=imread('C1293.jpg');
%src2=rgb2gray(src2);
zhic2=src2-src1;
zhic1=im2bw(zhic2,0.2);
zhic2= bwareaopen(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值