为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

视频监控系统设计

2017-10-15 22页 doc 370KB 29阅读

用户头像

is_954223

暂无简介

举报
视频监控系统设计视频监控系统设计 大连海事大学课程设计报告 视频监控系统设计 (分题:人体目标轨迹识别) 学 院:信息科学技术学院 专业班级:自动化四班 姓 名:韩志伟 学 号:2220082913 2012-3-23 1 , 论文摘要 本次课程设计主要围绕视频监控系统进行设计。按照循序渐进的方法,由浅入深,对视频监控系统进行相关的设计。本次课程设计中用到的基本方法包括数字图像的表示方法、图像的读写、图像的显示、图像间的转化、图像的相加、相减、绝对相减运算、图像去噪、图像分割、图像亮度调节、图像压缩等。在这些基本方法的基础...
视频监控系统设计
视频监控系统 大连海事大学课程设计报告 视频监控系统设计 (分题:人体目标轨迹识别) 学 院:信息科学技术学院 专业班级:自动化四班 姓 名:韩志伟 学 号:2220082913 2012-3-23 1 , 论文摘要 本次课程设计主要围绕视频监控系统进行设计。按照循序渐进的,由浅入深,对视频监控系统进行相关的设计。本次课程设计中用到的基本方法包括数字图像的示方法、图像的读写、图像的显示、图像间的转化、图像的相加、相减、绝对相减运算、图像去噪、图像分割、图像亮度调节、图像压缩等。在这些基本方法的基础上,进行了视频文件的连接以及显示,并从视频中获取图像。视频监控的主要判别方法有背景差法和帧差法,由这两种方法所进行的控制相互对比,在具体的分题中采用了合适的方法。 , 关键字 图像处理、视频文件连接、视频文件显示、背景差法、帧差法、视频监控判别、视频监控报警 , 主要函数 图像表示、读写、显示函数:imread imshow imview imwrite 不同图像的区别及转化函数:rgb2gray im2bw 图像基本运算函数:imadd imsubtract imabsdiff 图像处理函数:nrfiltdemo imadgdemo edgedemo dctdemo bwlabel regionprops 视频文件的连接、显示函数:aviread aviinfo 摄像头连接、显示函数:videoinput preview 视频获取帧图像函数:getsnapshot 2012-3-23 2 一、学习并掌握图像的基本概念 1、数字图像的表示方法、图像读写及显示方法 例 (1)读入图像 RGB = imread('football.jpg'); //将图片导入内存中 用RGB数组存储 [X,map] = imread('trees.tif'); //X为图片的灰度图,map (2)显示图像 >> RGB=imread('Water lilies.jpg'); >> imshow(RGB) //显示图片 输出结果: (3)查看图片RGB值 >> imview('trees.tif') //显示图片 并可以查看任意一坐标的RGB值 输出结果: 2012-3-23 3 (4)存储图片 >> RGB=imread('Water lilies.jpg'); >> imwrite(RGB,'Water.jpg') //把图像Water lilies.jpg以Water.jpg格式保存在work文件夹下; >> imshow('Water.jpg') 输出结果: 2、不同类型图像(彩色图像、灰度图像、黑白图像)的区别及转换方法 例 (1)彩色图像转换为灰度图 例 I = imread('board.tif'); J = rgb2gray(I); //把图像转化成灰度图 figure, imshow(I), figure, imshow(J); 输出结果: 2012-3-23 4 (2)彩色图像转换为黑白图 例 [X,map]=imread('trees.tif'); BW = im2bw(X,map,0.4); //把图像以0.4为界转化成黑白图像 figure,imshow(X,map), figure, imshow(BW) 输出结果: 3、图像基本运算 (1)图像的色值加法 例 clc close all I = imread('rice.png'); J = imadd(I,90); figure, imshow(I) figure, imshow(J) 输出结果: 2012-3-23 5 (2)图像的色值减法 例 clc close all I = imread('rice.png'); Iq = imsubtract(I,50); figure, imshow(I), figure, imshow(Iq) 输出结果: (3)图像之差 例 clc close all I = imread('cameraman.tif'); J = uint8(filter2(fspecial('gaussian'), I)); %将I经过高斯运算给J K = imabsdiff(I,J); %|I-J|给k figure,imshow(J),figure,imshow(I);figure,imshow(K,[]), % [] = scale data automatically 输出结果: 2012-3-23 6 4、图像处理的三大任务 (1)改善图像质量 a、图像去噪 例 >> nrfiltdemo//图像去噪声 b、图像亮度调节 例 >> imadjdemo//亮度调节 2012-3-23 7 (2)图像分割 边缘检测 >> edgedemo//边缘检测 (3)图像压缩 频率压缩 >> dctdemo//频域压缩 2012-3-23 8 二、转我视频监控系统的基本功能及构成 1、视频文件连接、显示方法(aviread、aviinfo) 例 >> aviinfo( 'vipmen.avi')//视频显示参数 ans = Filename: [1x66 char] FileSize: 16442880 FileModDate: '07-Jan-2006 19:06:02' NumFrames: 283 FramesPerSecond: 30.0000 Width: 160 Height: 120 ImageType: 'truecolor' VideoCompression: 'none' Quality: 0 NumColormapEntries: 0 2、从视频中获取图像的方法 视频文件的连接 videoIn = 'vipmen.avi'; 获取视频第N帧图像 imageFrame=aviread(videoIn,N); 例: videoIn='vipmen.avi'; imageFrame=aviread(videoIn,1); imageFirst=imageFrame.cdata; imshow(imageFirst); 得到的第一帧图像为: 3从图像中指定感兴趣区域、并获取自图像的方法 4、视频监控判别方法 2012-3-23 9 (1)背景差法: 背景差法流程图 2012-3-23 10 三、具有智能判别的视频监控系统设计及实现 摄像头的连接:videoinput 摄像头的显示:preview 从实时视频中获取一帧图像的方法:getsnapshot 分题一:人体目标轨迹识别(进入或离开房间) 开始 连接摄像头并延 时5秒 获取第一帧图像 获取当前帧 获取最大面积区域的 中心横坐标 当前中心坐标减去前一个 中心横坐标 否 中心差>1? 是 判定人体前进方 向 保存当前中心横坐标做下一 次计算中心差用 否 i+1 i>3500? 是 退出 人体目标轨迹识别流程图 2012-3-23 11 原理:本监测系统主要是通过帧差法,获取移动人体的中心坐标,通过临次中心坐标之差正负判别人体移动方向(左或右) 进门识别后右上角会有白色小方框显示: 进门采集图 出门识别后左上角会有一白色小方框显示: 出门采集图 四、分析结果 1、背景对实验结果的干扰 复杂背景对实验结果的干扰比单调色彩实验背景对实验结果要大,选取实验背 景时尽量选取色彩比较简单的背景,而且背景颜色与人体所穿衣服颜色相似时也容 易产生较大干扰。 2、光线对实验结果的干扰 较强光线与较弱光线都容易对实验结果造成一定干扰,光线适中比较合适。 2012-3-23 12 3 、人体移动速度对实验结果的影响 人体移动太快时,容易对采集图像造成影响,对后续结果产生严重影响,可能检 测不到人体移动方向;人体移动太慢时,系统识别不到人体移动,检测不到人体移动 方向。人体正常移动或移动稍快时,实验效果最明显。 4、人体移动方向对实验结果的影响 由于本程序是根据人体中心点在图像横坐标X轴上的移动方向判断人体移动方 向的,所以当人体移动方向与摄像方向一致时,测不出结果,只有垂直时才能明显测 出结果。 5、参数中心点坐标之差对实验结果的影响 参数越大,干扰对实验的影响越小,但是越不容易检测到结果,参数越小越灵敏, 但干扰对实验的影响越大,所以选择一个适当的参数很重要。 6、系统改进 (1)可以在程序中加入中心点的纵坐标变化和人体在图像中面积的变化判断,这样能够 更准确的判断人体移动轨迹。 (2)可以在程序代码中加入声频警告,使系统功能更完善。 (3)可以在程序中加入去除噪声程序,重录制的视频中获得更清晰的图片,减少外部干 扰。 (4)可以在程序中加入人体识别程序,规避物体移动的影响。 五、总结 经过这次的课程设计,学会并掌握了用MATLAB来进行基本的图像处理和视频 监控技术的设计。通过用MATLAB可以进行图片的基本处理,进行图片的查看,修 改,包括对图片进行加、减、绝对减,对图片的去噪、亮度调节。对数字视频进行 播放,并可以从中获取图像。利用摄像头来进行摄像,对相关的视频进行监控,监 控人体目标的移动,获取中心点,判别并显示出人体目标的移动方向。这次的课设 完成了基本,了解了关于MATLAB的更多的对于图像处理的功能。对于视频监 控系统的设计,有了更深的了解和更多的认识。提高了对图像和视频的处理能力, 并能够设计简单的视频监控系统,拓展了知识面。同时也对视频监控技术产生了浓 厚的兴趣,无论重娱乐的角度或实用的角度,视频监控技术都有很重要的作用。 附录; 1、背景差法代码 close all clear all clc videoIn = 'vipmen.avi'; videoInfo = aviinfo(videoIn); num = videoInfo.NumFrames; imageFrame=aviread(videoIn,1); %获取第一帧 imageFirst=imageFrame.cdata; %获取第一帧图片 videoOut = avifile('D:/out1.avi'); %视频保存路径 for i=1:10: num %采集视频循环 aviobj = aviread(videoIn,i); %获取第i帧 image=aviobj.cdata; %获取第i帧图片 subImage=imabsdiff(image,imageFirst); %当前图片与第一帧图片相减 2012-3-23 13 grayImage = rgb2gray(subImage); %图片变成灰度图 % subgray=grayImage(1:50,1:50); %获取指定区域图片 % imshow(subgray); BW=im2bw(grayImage); %变成黑白图片 Sum=sum(BW(:)); %计算图像中1的个数 if Sum>=10 %警告~ grayImage(1:10,1:10)=255; %在有人来了的图片上显示白色方框 disp('有人来了!'); end [X, map] = gray2ind(grayImage, 236); frame = im2frame(X, map); %图像转化成帧 videoOut = addframe(videoOut,frame); %添加帧到视频中去 end videoOut = close(videoOut); 2、帧差法代码 close all clear all clc videoIn = 'vipmen.avi'; videoInfo = aviinfo(videoIn); num = videoInfo.NumFrames; Height=videoInfo.Height; Width=videoInfo.Width; imageFrame=aviread(videoIn,1); %获取第一帧 imageFirst=imageFrame.cdata; %获取第一帧图片 videoOut = avifile('D:/out2.avi'); %视频保存路径 for i=2:5: num %采集视频循环 aviobj = aviread(videoIn,i); %获取第i帧 imageFirst=aviread(videoIn,i-1); %获取第i-1帧 imageFirst=imageFrame.cdata; %获取第i-1帧图片 image=aviobj.cdata; %获取第i帧图片 subImage=imabsdiff(image,imageFirst); %当前图片与第i帧图片相减 grayImage = rgb2gray(subImage); BW=im2bw(grayImage); %变成黑白图片 Sum=sum(BW(:)); %计算图像中1的个数 if Sum>=10 grayImage(1:10,1:10)=255; %在有人来了的图片上显示白色方框 disp('有人来了'); end [X, map] = gray2ind(grayImage, 236); frame = im2frame(X, map); %图像转化成帧 videoOut = addframe(videoOut,frame); %添加帧到视频中去 2012-3-23 14 end videoOut = close(videoOut); 3、人体目标轨迹识别代码 close all clear all clc obj=videoinput('winvideo',1); %连接摄像头 preview(obj); %显示图像 pause(5) preImage=getsnapshot(obj); %获取第一帧图像 preImage2bw=im2bw( preImage); %将第一帧图像变成黑白图 firstImage=preImage; firstImagebw=im2bw(firstImage); firstImagegray=rgb2gray(firstImage); preImagegray=firstImagegray; preCenter=180; nowdifCenter=0; %当前中心点 predifCenter=0; %上次中心点差 videoOut = avifile('D:/人体目别.avi'); Sum=0; disp('开始~'); for i=2:10:1500 getImage=getsnapshot(obj); %获取当前帧 getImage2gray=rgb2gray(getImage); %将当前帧转化成灰度图 getImage2bw=im2bw(getImage); %将当前帧转化成黑白图 preImagegray=rgb2gray(preImage); image2gray=imabsdiff(getImage2gray,preImagegray);%获取当前帧与前一帧 的差值图 image2bw=im2bw(image2gray,0.4); L=bwlabel(getImage2bw); s=regionprops(L,{'Area','Centroid'}); centroids=cat(1,s.Centroid); Num=size(centroids); max=s(1).Area; maxlabel=1; 2012-3-23 15 for j=1:Num %查找最大区域的坐标值 if s(j).Area>=max; max=centroids; maxlabel=j; end end Center=s(maxlabel).Centroid(1,1); %获取中心坐标 Sum=sum(image2bw(:)); nowdifCenter=Center-preCenter; %当前差值图与前次差值图中心坐标之差 if Sum>500 disp('nowdifCenter='); disp(nowdifCenter); if nowdifCenter>=1 %往右走 if predifCenter>=1 getImage2gray(1:10,300:310)=255; disp( 'ÍùÓÒ×ß'); disp('nowdifCenter='); disp(nowdifCenter); end elseif 0.5+nowdifCenter<=0 %往左走 if (predifCenter+1<=0) getImage2gray(1:10,1:10)=255; disp( 'Íù×ó×ß'); disp('nowdifCenter='); disp(nowdifCenter); disp('predifCenter='); disp(predifCenter); end end end [X, map] = gray2ind(getImage2gray, 236); frame = im2frame(X, map); videoOut = addframe(videoOut,frame); predifCenter=nowdifCenter; preCenter=Center; %保存中心坐标 preImage=getImage; end videoOut = close(videoOut); delete(obj); 2012-3-23 16
/
本文档为【视频监控系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索