资源简介
对视频中运动目标提取 通过对视频进行预处理(中值滤波) 帧间差分法运动目标区域提取 运动目标区域形态学处理 获取运动目标 并对目标区域占比进行计算做出相应提示
代码片段和文件信息
clear all;
%读入视频数据
mov = VideoReader(‘C:\Users\Administrator\Desktop\毕设\test.avi‘);
nb =mov.NumberOfframes;%视频帧数
T=10;%运动目标检测阈值 可变
P=0.05;%运动目标占比阈值 可变
for i=2:nb
x=read(mov i);%读取视频帧
y=read(mov i-1);
img=y;
m=rgb2gray(x);%灰度图转换
n=rgb2gray(y);
m=medfilt2(m);%中值滤波
n=medfilt2(n);%中值滤波
c=abs(m-n);%差分
% c=medfilt2(c);%中值滤波
c(abs(c)>=T)=255;%运动目标检测
c(abs(c) c=logical(c);%转换为0,1
c=bwareaopen(c20);%删除小面积对象
se1=strel(‘square‘3);
se2=strel(‘square‘13);
c=imdilate(cse2);%形态学膨胀处理
run=c;
%运动目标提取
c=uint8(c);
sh(::1)=c.*img(::1);%点乘操作
sh(::2)=c.*img(::2);
sh(::3)=c.*img(::3);
imshow(sh);
title(sprintf(‘运动目标提取 第%d帧‘i-1));
[Lbw4 numbw4] = bwlabel(run); % %Lbw4为贴标签之后的矩阵,numbw4为标签个数
stats = regionprops(Lbw4);%获取区域的某个属性(面积、最小包围矩形的坐标长宽等)的值
for i = 1 : numbw4
tempBound = stats(i).BoundingBox ;
%计算运动目标区域占比
moving=find(c==i);
moving=length(moving);
mn=size(c);
all_area=mn(1)*mn(2);
pro=moving/all_area;
if pro >P
rectangle(‘position‘tempBound‘edg
- 上一篇:连续小波变换的matlab实现
- 下一篇:Arnold置乱变换的matlab代码.
相关资源
- Arnold置乱变换的matlab代码.
- 连续小波变换的matlab实现
- INS/GNSS松耦合matlab仿真
- SIFT算法的matlab实现
- matlab处理来自串口的数据并绘图
- MATLAB的FFT算法实现
- SVG无功补偿仿真
- 相移光纤光栅的MATLAB仿真.
- matlab代码DFT.zip
- 电机map图绘制
- MATLAB2012B+CCS3.3+TI28035TI28335代码生成配
- EKF扩展卡尔曼在线滤波
-
异步电机矢量控制仿真模型simuli
n - anfis matlab
- BPSk循环谱
- MATLAB 使用混沌算法对图像进行加密
- SNV变换算法
- matlab实现基于Household变换的QR分解程序
- K-mean聚类、LVQ聚类和混合高斯聚类的
- SVM MATLAB toolbox
- matlab nasch双车道模型
- 基于体绘制的头部三维重建,并用m
- 脉冲响应模型辨识 matlab
- MATLAB SYSTEM VIEW通信原理实验及系统仿
- MATLAB SVD
- 欧拉法解常微分方程组数值解的MATL
- matlab对有周期性噪声的图像去噪
- 基于MUSIC的均匀矩形阵DOT估计matlab仿真
- 钢琴曲《卡农》的matlab程序
- MATLAB 回声状态网络ESN工具箱 ESN_Tool
评论
共有 条评论