资源简介
本代码建立高斯混合模型(高斯多模型)(GMM),将其用于计算机视觉领域的视频目标检测视频监控运动检测运动目标检测视频目标跟踪等相关应用中。
代码片段和文件信息
tic;
clear all;
close all;
clc;
A = VideoReader(‘smoke.avi‘);
LEN = A.Numberofframes;%得到视频的帧数
for x = 1 : LEN
pic = read(Ax);%读入一张图片
picture = strcat(‘smoke‘ int2str(x) ‘.jpg‘);
pic1 = pic;%pic1中存放的是处理过后的彩色图像
pic_hsv = rgb2hsv(pic);
imwrite(pic_hsvpicture‘jpg‘);
s = size(pic1);
bw_pic = zeros(s(1) s(2));
for i = 1 : s(1)
for j = 1 : s(2)
if pic_hsv(i j 1) > 0.35 && pic_hsv(i j 1) < 0.65 && ...
pic_hsv(i j 2) > 0.06 && pic_hsv(i j 2) < 0.3 && ...
pic_hsv(i j 3) > 0.5 && pic_hsv(i j 3) <= 1;
pic1(i j 1) = 255;
pic1(i j 2 : 3) = 0;
end
if pic1(i j 1) == 255 && pic1(i j 2) == 0
bw_pic(i j) = 1;
end
end
end
cov_bw_pic = 1 - bw_pic;
fill_pic = imfill(cov_bw_pic ‘holes‘);
fill_pic1 = 1 - fill_pic;
B_pic = bwboundaries(fill_pic1);%得到的是一个P×1的单元
ss = size(B_pic);%ss的值就是连通分量的数量
ss1 = size(B_pic{1 1});%ss1是一个大小为m×2的矩阵
max = ss1(1);
for i = 2 : ss(1)%找到最大的连通区域的边界总个数
ss2 = size(B_pic{i 1});
if ss2(1)> max
max = ss2(1);
end
end
%⑤…………………………将小于最大连通区域的连通分量边界赋零
for k = 1 : ss(1
评论
共有 条评论