基于MATLAB的视频运动目标检测识别
一、课题介绍
视频图像处理技术广泛用于工业、安全、医疗、管理等领域。运动目标的检测和跟踪是图像处理技术在视频序列图像处理方面的一个重要应用,在航天、交通、机器人视觉、视频监控、公共场所客流数据监测等场合发挥着重要作用。
本文介绍了一种基于MATLAB的简易的从视频播放的帧图像中找出目标图像,并进行视频跟踪的实现方法。通过对图像进行阈值处理(图像分割),再对分割后的图像求取形心,以对目标图像进行定位,并最后找到各幅帧图像的目标位置的方法,从而实现对100帧视频图像的实时跟踪。
二、识别过程
100帧视频图像的读取
由于视频是由100帧图像通过连续播放从而达到视频的效果的,所以要达到视频放映的效果,应首先对100帧图像序列进行顺序读取。100帧图像存储在MATLAB的默认路径中,文件名为00000xxx.bmp。要达到读取它们的目的,需要使用循环算法。算法由一个名为read_seqim(i)的函数实现,以下是函数的源程序:
function I=read_seqim(i)
if nargin==0
i=1;min=00000001;
end
name=num2str(i);
if i<=9
min=strcat('0000000',name,'.bmp');
elseif i<=99
min=strcat('000000',name,'.bmp');
else
min=strcat('00000',name,'.bmp');
end
I=imread(min);
其中i为读取图像的序号,通过以上的函数可以很方便的实现对100帧图像中任意一帧的读取,从而为后面的处理提供方便。
图像的阈值处理(图像分割)
阈值(Threshold),也叫门限。阈值化(Thresholding),即按给定阈值进行图像的二值化处理。阈值分割法可分为以下几种:
(1)简单阈值分割法;
(2)多阈值分割法;
(3)最大类间方差法;
(4)最佳阈值法。
许多情况,图像是由具有不同灰度级的几类区域组成。如文字与纸张、地物与云层(航空照片)等,阈值分割是利用同一区域的具有某种共同灰度特性进行分割。而用阈值分割法分割图像就是选取一个适当的灰度阈值,然后将图像中的每个像素和它进行比较,将灰度值超过阈值的点和低于阈值的点分别指定一个灰度值,就可以得到分割后的二值图像,此时目标和背景已经得到了分割。阈值分割法简单,快速,特别适用于灰度和背景占据不同灰度级范围的图像。这里我们使用多阈值分割法。
多阈值分割法就是假设一幅图像包含两个以上的不同类型的区域,可以使用几个门限来分割图象。分割函数如下:
![](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-24e0a1965196da5fd0c947027158fc83_b.jpg)
(5-1)
阈值的确定
由于需要分析的100帧图像的灰度分布大致是相当的,所以我们任意选取一帧图像来求取它的阈值,这里我们选取第50帧图像,具体的源代码如下:
I0=read_seqim(50);%任意读取一帧图像
figure(1),imshow(I0);%原图像显示
I0=double(I0);%化为双精度
figure(2),hist(I0,300);%原图像直方图显示
所得到的图像(如图5-2和5-2所示)如下:
![](/assets/blank.gif)
读取一帧图像的图像显示
![](/assets/blank.gif)
原图像直方图显示
图像的阈值分割
图5-1中的直升机是我们所要跟踪的目标。
图5-2中我们可以看出我们所要得到的目标灰度分布于灰度值在150-200的区域内;图中灰度小于50的区域内有以峰值,为第一图中右边边框的刻度线的灰度表示;图中灰度在200-230区域内为背景的灰度表示,所以这里我们就设定两个阈值T1=50;T2=200.在两阈值中间的区域为目标区域。通过图像分割把目标从图像中提取出来,具体源代码如下:
T1=50;T2=200;%观察并找出阈值
for i=1:200
I=read_seqim(i);
M=double(I);
for m=1:272
for n=1:512
if (M(m,n)>=T1)&&(M(m,n)<=T2)
M(m,n)=1;%设置背景灰度
else
M(m,n)=0;%设置目标灰度
end
end
end%%图像的分割和阈值处理
end
所得到的阈值处理(图像分割)后的图像(如图5-3所示)如下:
![](/assets/blank.gif)
阀值处理后的图像
形心(距心)的求取
成像跟踪系统经过图像的预处理、图像的分割识别等一系列信息处理,最终实现对目标位置的实时精确测量,即对目标或目标的局部实施稳定跟踪。目标跟踪的方法具体有以下几种:
矩心(质心、形心)跟踪;边缘跟踪;峰值跟踪;相关跟踪;滤波跟踪。
这里我们使用矩心(质心、形心)跟踪。矩心也叫质心或重心,是物体对某轴的静力矩作用中心。如果把目标图像看成是一块质量密度不均匀的薄板,以图像上各像素点的灰度作为各点的质量密度。这样就可以借用矩心的定义式来计算目标图像的矩心。由于计算重心的过程是个统计平均过程, 它算出的跟踪点不是个别的最亮点位置, 而是图像中各个像元灰度加权平均的位置, 所以, 以重心为跟踪点, 跟踪的随机误差小, 精度高, 稳定性好。具体的计算方法如下:
![](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-5882bb9899c1f9f2baf7b0f08f8ac29f_b.jpg)
![](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-ca2df466e5ba18477d4ef217dc323477_b.jpg)
(5-2)
其中f(x,y)为(x,y)处的灰度值,N和M分别为图像的列数和行数,以下为求取形心的源程序:
for i=1:200
X=0;Y=0;X1=0;Y1=0;PINJUN=0;PINJUN1=0;
for m=1:272
for n=1:512
x=m*M(m,n); y=n*M(m,n); pinjun=M(m,n);
X=X+x;Y=Y+y;PINJUN=PINJUN+pinjun;
end
X1=X1+X;
Y1=Y1+Y;
PINJUN1=PINJUN1+PINJUN;
end
Xmean=X1/PINJUN1;
Ymean=Y1/PINJUN1; %求取形心的计算
Xmean=(Xmean*100-mod(Xmean*100,100))/100;
Ymean=(Ymean*100-mod(Ymean*100,100))/100;%形心数值取整
end
设置跟踪波门
为了实现对视频目标的跟踪,设置波门是一个十分必要的工作。对边缘跟踪及矩心跟踪来说,都要设置一个波门。波门的尺寸略大于目标图象,波门紧紧套住目标图象。波门是随目标图象视频信号而产生的。在波门以内的信号当作感兴趣的信号予以检出而摒除波门以外的其它信号;也可以针对视场中出现的苦干个目标面同时设置几个波门,分别检出各个波门中的信号。从整个视场中检出波门内的信号的方法属于选通技术的范畴。利用选通技术可以对目标进行有选择的跟踪,同时也可以非常有效地排除背景干扰。
这里的波门设置方法为以形心位置为中心,在图像中包含目标的区域添加一个合适矩形框(即跟踪波门,这里我们取64×32 pixels),以实现对100 帧图像的实时跟踪,以下为波门设置源代码:
for m=(Xmean-16):(Xmean+16)
n=Ymean-32;
I(m,n)=1;
end
for m=(Xmean-16):(Xmean+16)
n=Ymean+32;
I(m,n)=1;
end
for n=(Ymean-32):(Ymean+32)
m=Xmean-16;
I(m,n)=1;
end
for n=(Ymean-32):(Ymean+32)
m=Xmean+16;
I(m,n)=1;
end%画出跟踪波门
波门设置后的图像实现(如图5-4所示):
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
波门设置后的图像
通过上图我们不难看出,我们已经找到了正确的波门,并且实现了目标的定位和跟踪,通过以上简单的方法实现了简易图像跟踪系统的设计,并且较稳定地对目标图像进行了跟踪。
三、参考代码
I0=read_seqim(50);%任意读取一帧图像
figure(1),imshow(I0);%原图像显示
I0=double(I0);
figure(2),hist(I0,300);%原图像直方图显示
T1=50;T2=200;%观察并找出阈值
for i=1:200
I=read_seqim(i);
M=double(I);
for m=1:272
for n=1:512
if (M(m,n)>=T1)&&(M(m,n)<=T2)
M(m,n)=1;%设置背景灰度
else
M(m,n)=0;%设置目标灰度
end
end
end%%图像的分割和阈值处理
X=0;Y=0;X1=0;Y1=0;PINJUN=0;PINJUN1=0;
for m=1:272
for n=1:512
x=m*M(m,n); y=n*M(m,n); pinjun=M(m,n);
X=X+x;Y=Y+y;PINJUN=PINJUN+pinjun;
end
X1=X1+X;
Y1=Y1+Y;
PINJUN1=PINJUN1+PINJUN;
end
Xmean=X1/PINJUN1;
Ymean=Y1/PINJUN1;
%求取形心的计算
for m=(Xmean-16):(Xmean+16)
n=Ymean-32;
I(m,n)=1;
end
for m=(Xmean-16):(Xmean+16)
n=Ymean+32;
I(m,n)=1;
end
for n=(Ymean-32):(Ymean+32)
m=Xmean-16;
I(m,n)=1;
end
for n=(Ymean-32):(Ymean+32)
m=Xmean+16;
I(m,n)=1;
end%画出跟踪波门
figure(3),imshow(I);%连续读出每一帧图像,连续显示已达到视频播放的效果。
基于MATLAB的视频运动目标检测识别相关推荐
- 基于MATLAB的视频运动目标跟踪与检测定位系统
一.课题背景 视频运动目标检测与跟踪算法是计算机视觉领域的一个核心课题,也是智能视频监控系统的关键底层技术.它融合了图像处理.人工智能等领域的研究成果,已经广泛应用于安保监控.智能武器.视频会议.视频 ...
- 基于MATLAB的烟雾火灾检测识别系统
火灾监测报警技术是预防火灾的重要手段.近年来, 火灾发生的频率高.覆盖范围广,给人民群众的生命财产 和社会经济造成了巨大损失,已成为一种普遍且损害巨大 的自然灾害.一旦引起火灾,火势将迅速蔓延,烟雾浓 ...
- 基于Matlab答题卡图像检测识别研究
考试是教育测量的重要手段,也是目前选拔人才 的重要手段.所以公平.公正就显得非常重要,这不仅 体现在考试的过程中,还体现在评卷的过程中.以前, 这些试卷都是进行人工翻阅批改,其中评卷老师的水 平.状态 ...
- 基于MATLAB的路面裂缝检测识别算法仿真
目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %********************
- 基于matlab小波变换的突变检测识别
clear all; close all; clc; %% 原始信号生成与突变点的添加 Fs = 1000; % 采样频率1000Hz Ts = 1 / Fs; % 采样时间间隔1ms L = 100 ...
- Matlab实现---基于平均背景法的视频运动目标检测(有背景更新)
目录 实现目标及说明 代码及说明 完整文件获取 实现目标及说明 MATLAB--编程实现基于平均背景法的视频运动目标检测,并且要不断更新背景. 网上找到的很多关于运动目标检测的,多数是用OpenCV或 ...
- MATLAB视频运动目标检测参考源码
MATLAB视频运动目标检测参考源码 将视频截取成帧 fileName = 'q.avi'; %此处输入视频名称,要带后缀,注意好像只有wmv和avi格式 obj = VideoReader(file ...
- matlab交通标志检测与分类,基于MATLAB的道路交通标志识别.doc
基于MATLAB的道路交通标志识别摘要:本文介绍用MATLAB强大的计算功能和各种功能齐全的函数,图像工具箱来进行道路交通标志的识别.介绍基于LAB颜色模型的颜色特征提取和基于radon变换的形状特征 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
最新文章
- 一文了解卷积神经网络在股票中应用
- Java 7之多线程- Semaphore--转载
- Noip2016day1 天天爱跑步running
- 科大星云诗社动态20210212
- concat() 方法用于连接两个或多个数组。
- 2017年度最值得读的AI论文 | NLP篇 · 评选结果公布
- redis特点单进程单线程高性能服务器,Redis为什么是单线程?Redis又为什么这么快!...
- 异常-throws的方式处理异常
- python第三周测试_python第三周小测
- CF1444C Team-Building(可持久化并查集)(二分图)
- 红橙Darren视频笔记 贝塞尔曲线实现消息拖拽粘性效果 画笔练习
- Linux之父新年首次“炮轰”:英特尔在扼杀整个 ECC 行业
- 2017.5.12PM
- 屏幕录像软件Community Clips Recorder简介及其使用技巧(郝宪玮)
- 小米手机录制数据集软件操作
- 刷主板bios改变机器码_主板BIOS升级超完整教程,一学就会!
- 一个很好用的vue表单工具,快速进行表单开发
- 功放的音箱线连接方式
- 房天下二手交易平台房源数据采集
- 32位plsql连接64位Oracle数据库
热门文章
- Android应用开发必备的20条技能清单
- CIF-BASED COLLABORATIVE DECODING FOR END-TO-END CONTEXTUAL SPEECH RECOGNITION
- 【强化学习笔记】4.3 无模型的强化学习方法-蒙特卡罗算法与重要性采样
- SIMATIC S7-PLCSIM Advanced下载安装
- 【论文笔记】Feature Pyramid Networks for Object Detection
- 在微信小程序中识别付款二维码
- html中数值如何自动取整,excel四舍五入取整函数
- 互联网产品的交互设计方法
- 【附源码】Java计算机毕业设计防疫物资捐赠(程序+LW+部署)
- springboot ajax form json 请求方式