本人毕业设计做的是红外运动识别系统,通过Matlab做了仿真。其中视频资源来自优酷。毕设论文随后上传。以下是matlab代码

clear all
%创建必要的视频处理对象
videofile = 'people_net.mp4';
%获取视频帧像素
info = VideoReader(videofile);
cols=info.Width;
rows=info.Height;
%创建视频系统对象,读取视频文件
hReader = vision.VideoFileReader(videofile, 'ImageColorSpace', 'RGB',...      'VideoOutputDataType', 'single');
hFlow = vision.OpticalFlow(  'OutputValue', 'Horizontal and vertical components in complex form', ...'ReferenceFrameDelay', 3, 'Method','Horn-Schunck');
%创建两个均值对象,用于分析光流矢量
hMean1 = vision.Mean;
hMean2 = vision.Mean('RunningMean', true); %累计平均值,每次输入一个数据,计算所有历史输入的均值
%创建中值滤波对象,用来移除对象分割产生的斑点噪声
hFilter2 = vision.MedianFilter;
hFilter1 = vision.MedianFilter([3 3]);%创建形态学闭运算,填充分割后的目标空洞
hClose = vision.MorphologicalClose('Neighborhood', strel('disk',15));%30正好,有点大
hBlob = vision.BlobAnalysis( 'CentroidOutputPort', false, 'AreaOutputPort', true, ...           %此参数为最佳无需改动'BoundingBoxOutputPort', true,'PerimeterOutputPort',true, 'OutputDataType', 'double',  'MinimumBlobArea', 1000,...'MaximumBlobArea', 20000, 'MaximumCount', 1);
%创建形态学腐蚀对象,移除不需要的对象
hErode = vision.MorphologicalErode('Neighborhood', strel('square',5));
%创建嵌入形状对象,狂出目标边界
hShape1 = vision.ShapeInserter( 'BorderColor', 'Custom',  'CustomBorderColor', [0 1 0]);
hShape2 = vision.ShapeInserter( 'Shape','Lines',  'BorderColor', 'Custom', ...'CustomBorderColor', [255 255 0]); %创建视频播放对象,用来显示原始视频,运动矢量,分割结果,和最终结果
sz = get(0,'ScreenSize');
pos = [(sz(3)-4*(cols+75))/2, (sz(4)-rows)/2 cols+60 rows+80];
hVideo1 = vision.VideoPlayer('Name','Original Video','Position',pos);
pos(1) = pos(1)+cols+75;
hVideo2 = vision.VideoPlayer('Name','Motion Vector','Position',pos);
pos(1) = pos(1)+cols+75;
hVideo3 = vision.VideoPlayer('Name','Thresholded Video','Position',pos);
pos(1) = pos(1)+cols+75;
hVideo4 = vision.VideoPlayer('Name','Results Video','Position',pos);%从视频中检测跟踪目标
%显示光流矢量的像素点
[xpos,ypos]=meshgrid(1:3:cols,1:3:rows);%每隔5行5列选择像素点
xpos=xpos(:);
ypos=ypos(:);
locs=sub2ind([rows,cols],ypos,xpos);
i = 0;                     %截图标志位
ii = 0;                    %提示窗标志位
j = 0;                     %图片指针
C_k = 0;                   %长宽比指针
S_m = 0;                   %形状分散度指针
%循环处理视频每一帧,直到文件结束
while ~isDone(hReader)%暂停0.3s,为肉眼观察pause(0.3);%从视频文件读取视频帧数frame  = step(hReader);%把图像转换为灰度图像gray_1 = rgb2gray(frame);gray = step(hFilter1,gray_1);%一、计算光流矢量,返回一个复数矩阵,分别代表每个像素点u和vflow = step(hFlow, gray);%每隔5行5列选择一个像素点,绘制它的光流图。放大20倍%lines每行对应一条线,分别是第1和第2个点的x,y坐标lines = [xpos, ypos, xpos+20*real(flow(locs)), ypos+imag(flow(locs))];%将光流场矢量添加到视频帧上vector = step(hShape2, frame, lines);%二、计算光流矢量幅值,因为光流是一个复数矩阵,所以要用到共轭相乘magnitude = flow .* conj(flow);%计算光流幅值平均值,表征速度阈值threshold = 0.5 * step(hMean2, step(hMean1, magnitude));%使用阈值分割提取运动对象,然后去掉噪声carobj_1 = im2bw(magnitude,threshold);carobj = step(hFilter2,carobj_1);%通过形态学腐蚀去掉背景,然后形态学关闭填补目标(BLOB)孔洞%形态学腐蚀carobj1 = step(hErode, carobj);%闭运算填充carobj2 = step(hClose, carobj1);%三、统计估计目标(BLOB)的面积area和边框bbox[left,bottom,width,height][area, bbox,perimeter] = step(hBlob, carobj2);   %从grow的位置开始统计grow=0;idx = bbox(:,1) > grow;%% 计算目标中心坐标 即:矩形框的中心坐标x  = bbox(:,1)+int32(bbox(:,3)/2);y  = bbox(:,2)+int32(bbox(:,4)/2);%% 对目标进行提取infeed = 100;if  (x >= infeed & i == 0 & x<= (infeed+10))i = i+1;carobj_new1 = double(imcrop(gray,[bbox(idx,1),bbox(idx,2),bbox(idx,3)+1,bbox(idx,4)+1]));imshow(carobj_new1);end%% 对目标进行识别C = double(bbox(idx,4))/double(bbox(idx,3));if area >0S = perimeter*perimeter/double(area);if S >= 50S_m = S_m+1;endendif (C >=1.4 & C<=4)C_k = C_k+1;if (C_k>=10 & S_m>=10 & ii==0)errordlg('有人闯入','MATLAB warning');ii = ii+1;endend%%%计算目标面积和边框面积的百分比ratio = zeros(length(idx), 1);ratio(idx) = single(area(idx,1))./single(bbox(idx,3).*bbox(idx,4));%当面积大于5%认为是目标flag = ratio > 0.3;%统计数量count = int32(sum(flag));%给目标添加边框%result = step(hShape1, frame, bbox);result = step(hShape1, frame,bbox);%显示最终处理结果step(hVideo1, frame);             %原始视频step(hVideo2, gray);              %空域滤波结果step(hVideo3, vector);            %添加光流矢量step(hVideo4, result);            %带框目标j = j+1;end
release(hReader);

运动目标识别系统Matlab仿真——附上程序相关推荐

  1. UVW平台运动控制算法以及matlab仿真

    UVW平台运动控制算法以及matlab仿真 比奇小说网 m.biqi.org 最近公司同事因为对某视觉对位平台的运动控制算法有疑问,所以来请教我. 由于我也是第一次接触到UVW自动对位平台(也可以叫X ...

  2. 卫星伪距定位matlab,GPS卫星运动及定位matlab仿真.doc

    书山有路勤为径! PAGE GPS卫星运动及定位matlab仿真 摘要 全球定位系统是具有全球性.全能性.全天候优势的导航定位.定时和测速系统,现在在全球很多领域获得了应用. GPS卫星的定位是一个比 ...

  3. matlab在数字传输系统,数字基带传输系统matlab仿真.doc

    数字基带传输系统matlab仿真 姓名:范浩如 学号:107551400879 数字通信作业:二进制调制最佳接收机的matlab仿真第一章 基础理论知识第一节 知识框架图 数字基带信号传输模型第一步: ...

  4. 高斯信道、单径Rayleigh信道和多径衰落信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)

    前3节仿真了基带BPSK调制下DSSS-CDMA系统在高斯信道.单径Rayleigh衰落信道和多径衰落信道下的性能仿真,同时采用了m序列和正交Gold序列进行对比. 高斯信道下基带模型的多用户BPSK ...

  5. 多径衰落信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)

    接上一节 单径Rayleigh信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列.Gold序列和正交Gold序列) 下面再来看一下m序列与正交Gold序列在多径衰落信道下的性能. ...

  6. 单径Rayleigh信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)

    接上一节 高斯信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列.Gold序列和正交Gold序列) 下面再来看一下m序列与正交Gold序列在单径Rayleigh衰落信道下的性能. ...

  7. matlab仿真限幅发散,基于模糊控制的直流电机调速系统MATLAB仿真_贾东耀

    基于模糊控制的直流电机调速系统MATLAB 仿真 贾东耀,曾智刚 (广东工业大学,广州市 510090) 摘 要:采用Fuzzy-PI 控制策略进行直流电机的调速系统设计,它克服了简单模糊控制和传统P ...

  8. matlab中megn函数,直接序列扩频完整系统matlab仿真

    <直接序列扩频完整系统matlab仿真>由会员分享,可在线阅读,更多相关<直接序列扩频完整系统matlab仿真(9页珍藏版)>请在人人文库网上搜索. 1.直接序列扩频通信系统仿 ...

  9. 光伏储能直流系统MATLAB仿真(PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统)

    PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统 资源地址: 光伏储能直流系统MATLAB仿真(PV光伏阵列+BoostDCDC变换器+负载+双向DCDC变换器+锂离 ...

最新文章

  1. android md日期选择器,移动端日期选择
  2. Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
  3. 牛客题霸 NC17 最长回文子串
  4. 用python做透视表_用Python实现数据的透视表的方法
  5. docker 修改服务器,docker-修改容器挂载目录的3种方法小结
  6. 格式化linux grub,linux grub 引导启动过程详解
  7. TSubclassOf
  8. dealloc不调用的情况
  9. 5万能搞定百平家装主材、家具、家电吗?
  10. mysql数据库优化面试redis持久化_【大厂面试06期】谈一谈你对Redis持久化的理解?...
  11. vuejs2.0从入门到放弃--入门实例(四)
  12. 阿里云丁宇:阿里巴巴15年云原生实践
  13. 数据结构 课程设计报告 :校园导航系统
  14. 国外IDC管理系统哪个比较好用
  15. The Fool 傻子
  16. 数据处理奇技巧——hive篇
  17. 新计算机如何用光盘安装系统,win7如何用光盘装系统_使用光盘重装win7系统步骤...
  18. 我与编程,编程予我。
  19. Revit建模软件:如何在Revit中准确放置族组件?
  20. 上班第一天,大家都在干什么呢?‘Java研发工程师上班‘

热门文章

  1. chinese-ocr-lite(pytorch) 转 caffe
  2. 基于BERT做中文文本分类(情感分析)
  3. rls lms 对比 matlab,自适应均衡器的LMS和RLS两种算法的特性与仿真分析
  4. 二零零七年五一节自驾游记(十)--------0501若尔盖花湖II
  5. 【过滤器】(1)过滤器原理、使用方式的简单介绍
  6. A100 Jeston TX1TX2使用教程-接口说明
  7. 图片文件压缩并上传至阿里云OSS
  8. 教培机构如何搭建在线教育网校平台
  9. 期货开户客户出入金是什么时间?
  10. 论珊瑚虫并不光彩的历史