資源簡介
本代碼建立高斯混合模型(高斯多模型)(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
評論
共有 條評論