资源简介
我自己写的matlab代码,对于森林火灾识别效果不错,和大家分享一下,视频我的主页里也有
代码片段和文件信息
clear;
[filenamepathname]=uigetfile(‘*.avi‘‘请选择文件‘);
fpath=[pathname filename];
read_obj=VideoReader(fpath);
fr_num = read_obj.NumberOfframes;% 视频帧数
num_1=0;
for n =50:fr_num-1
fr = read(read_obj n);
%----动态监测----得到currentframe和grayframe_1----------------------
currentframe = read(read_obj n);
I=0.3*currentframe(::1)+0.59*currentframe(::2)+0.11*currentframe(::3); %来源于基于视频图像的火灾检测设计与实现_孙凯军
grayframe_1=[round(I)];
%----------------
%1---fr=imread(‘dde1.jpg‘);
% 读取该图像作为背景
fr_bw1 = rgb2gray(fr);
% 将背景转换为灰度图像
fr_size = size(fr);
%取帧大小
width = fr_size(2);
height = fr_size(1); %获取原图像的尺寸
fg = zeros(height width); %前景读取的第二张图片获得
bg_bw = zeros(height width);%背景读取的第一张图片获得
fr_bw1 = double(fr_bw1);%256 400
% --------------------- mog variables -----------------------------------
C = 3; % 组成混合高斯的单高斯数目 (一般3-5)
D = 2.5; % 阈值(一般2.5个标准差)
alpha = 0.01; % learning rate 学习率决定更新速度(between 0 and 1) (from paper 0.01)
thresh = 0.25; % foreground threshold 前景阈值(0.25 or 0.75 in paper)
sd_init = 36; % initial standard deviation 初始化标准差(for new components) var = 36 in paper
w = zeros(heightwidthC); %256 1200 % initialize weights array 初始化权值数组
w(::1) = 1;
w(::2:C) = 2^-10; % 第一个高斯分布的初始权重为1,其余分布的权重为0
mean = zeros(heightwidthC);%256 1200 % pixel means 像素均值
mean(::1) = fr_bw1; % 第一个高斯分布的初始均值为参考帧的值,其余分布的均值为0s
sd = sd_init*ones(heightwidthC); % pixel standard deviations 像素标准差
matchcnt = ones(height widthC); % 匹配的次数,初始值都设为1
u_diff = zeros(heightwidthC); % difference of each pixel from mean 图片与高斯均值的差
% 从第二帧开始处理
fr = read(read_obj n+2); % 读取n1-n2帧并转化为灰度图、双精度
fr_bw = rgb2gray(fr); % convert frame to grayscale 转换为灰度图像
fr_bw = double(fr_bw); % 将灰度图值设置为双精度
%求导入进来的图片与各个高斯均值的差
for m=1:C
u_diff(::m) = abs(fr_bw - double(mean(::m)));
end
% update gaussian components for each pixel 更新每个像素的背景模型
%rank_ind = zeros(C1);
for i=1:height
for j=1:width
match = 0; %像素与高斯模型匹配的标识
match_ind = 0;%为该像素最匹配的高斯模型的标号
for k=1:C %与第k个高斯模型进行比对,然后更新参数
if (abs(u_diff(ijk)) <= D*sd(ijk) && (match == 0)) % pixel matches component像素匹配了高斯中的第k个模型
match = 1;
% variable to signal component match 设置匹配标记
match_ind = k;
% update weights mean sd p 更新权值,均值,标准差和参数学习率
p = alpha/w(ijk); %理应使用p = alpha/gaussian才对,这里勉强
w(ijk) = (1-alpha)*w(ijk) + alpha;
%p = alpha/w(ijk); %理应使用p = alpha/gaussian才对,这里勉强
mean(ijk) = (1-p)*mean(ijk) + p*double(fr_bw(ij));
sd(ijk) = sqrt((1-p)*(sd(ijk)^2) + p*((double(fr_bw(ij)) - mean(ijk)))^2);
- 上一篇:车牌识别MATLAB算法
- 下一篇:matlab图像处理自适应中值滤波
相关资源
- 读取txt文件内容matlab代码实现
- 细胞图像分割matlab代码
- 基于MP的时频分析MATLAB代码
- WCDMA matlab代码
- 图像降噪Matlab代码
- 圣诞树(matlab代码)
- 心音信号处理分析(附matlab代码)
- Pattern Recognition and Machine Learning(高清
- 均值滤波和FFT频谱分析Matlab代码
- 欧拉放大论文及matlab代码
- GPS信号的码捕获matlab代码.7z
- matlab读取SP3文件
- 图像的饱和度,亮度,色调的matlab代
- 肤色检测matlab代码
- sutton强化学习随书MATLAB代码
- 压缩鬼成像matlab代码
- 压缩感知(Compressed Sensing CS)matlab代
- 基于OFDMA系统的多用户资源分配算法,
- Allan方差分析MATLAB代码,含MPU6050八小
- 均匀球体剖面重力异常正演模拟Matl
- 印章识别matlab代码
- 连续潮流matlab代码
- 线性拟合仿真-最小二乘法、正交回归
- 矩阵填充MATLAB代码
- 大型飞机航拍图处理matlab代码
- LMS语音信号去噪matlab代码
- 卡尔曼滤波MATLAB代码
- Matlab代码编写的semi-supervised CCA 程序
- EOF分析matlab代码
- 尾灯识别matlab代码
评论
共有 条评论