资源简介
我自己写的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图像处理自适应中值滤波
相关资源
- MODIS、Landsat等遥感影像批量空间插值
- 高斯混合概论假设密度滤波MATLAB代码
- 基于Matlab神经网络的图像识别
- 追赶法的简单MATLAB代码
- 模式识别第四版matlab代码
- 16QAM数字通信系统——MATLAB代码
- 多元线性回归Matlab代码
- EMD matlab代码
- 压缩感知小波变换synsq_toolboxmatlab代码
- GPS软件接收机MATLAB代码
- ZF预编码MATLAB代码实现
- 最小二乘辨识模型+matlab代码
- AdaBoost等MatLab代码
- matlab代码,通过蒙特卡罗方法计算n维
- LFM信号模糊函数Matlab代码
- 能量检测matlab代码
- 将二进小波变换用于图像增强的MATL
- 基于RBF神经网络的PID控制仿真代码
- RBF插值算法Matlab代码
- 图像预处理MATLAB代码包括图像去孔洞
- matlab编写的有关图像识别分类方法的
- 随机森林matlab代码
- capon算法的DOA估计MATLAB代码
- 图像局部提取并保存的Matlab代码实现
- 图像分类的MATLAB代码
- 无线定位的各种经典算法的matlab代码
- 地理加权回归GWRmatlab代码
- 基于DCT变换的数字水印算法matlab代码
- k近邻matlab代码
- DBSCAN聚类算法matlab代码
评论
共有 条评论