• 大小: 22KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Matlab
  • 标签: GMM  meanshift  matlab  

资源简介

基于混合高斯模型并利用meanshift算法结合实现视频中运动目标的跟踪,可处理复杂背景,实时

资源截图

代码片段和文件信息

    %///////////////////////////////////////////////////////////////////////////////////////////%
    close all;
    clear all;
    %% 使用在线k均值的算法实现混合高斯模型参数的初始化

    % -----------------------  利用训练视频序列初始化高斯模型参数 ----------------
    clear;
    clc;
    trainsequence = 80;                                                        % 训练视频序列的帧数
    distance = 10;                                                              % 间隔选取图像,避免物体运动太慢的情况发生
    thresh    = 15;                                                            % 用于选定的各样本与聚类中心均值的做大误差

    % 高斯模型的一些相关参数

    test_start = 1;

    delta = 2.5*3;                                                
    alfa  = 0.001;
    sigma = 6;
    maxK  = 4;
    TH    = 0.25;

    movFile =  ‘F:\Infrared video pedestrian detection\testcap\testcap4\test.avi‘;
    video = mmreader(movFile);
    fileinfo = aviinfo(movFile);
    nframe = fileinfo.Numframes;
    test_sequence = nframe;
    % 初始化parameters的相关参数
    % name       = sprintf(‘%d.jpg‘1);
    % File_name=‘E:\数据库\视频1\4_1Data\‘;
    % str = int2str(0001);
    % name = strcat(File_namestr‘.jpg‘);%
    % first_im   = double(imread(name));                                         % 务必要将数据转化成double型数据,以便下面计算
    mov = read(video1);
    first_im = double(mov);
    height     = size(first_im1);
    width      = size(first_im2);
    parameter  = cell(heightwidth);                                           % 混合高斯模型的参数

    t1 = clock;

    for i = 1:height

        for j = 1:width
            x = (first_im(ij1)+first_im(ij2)+first_im(ij3))/3;
            parameter{ij} = ([xfirst_im(ij1)first_im(ij2)first_im(ij3)01]);     
                                                                               % 该矩阵的第一列为灰度均值,第二列到第四列为对应的RGB值第五列为方差(sigma的平方)
                                                                               % 第六列为与之对应的样本数量
                                                                               % 当出现新的聚类时新添加一行,每列对应第一行的数据格式                                                          
        end    
    end

    % ------------------------- 在线k均值聚类 ----------------------------------

    for frame = 2:distance:trainsequence    

        % 读入视频序列中的一幅新图像
    %     File_name=‘E:\数据库\视频1\4_1Data\‘;
    %     str = int2str(frame);
    %     name = strcat(File_namestr‘.jpg‘);%
    % %     name          = sprintf(‘%d.jpg‘frame);
    %     new           = double(imread(name));
     mov = read(videoframe);
     new = double(mov);

        % 对新读入的图像的像素值归类

        for i = 1:height
            for j = 1:width
                x = (new(ij1)+new(ij2)+new(ij3))/3;

                % 找到最近的聚类中心
                % -------------------------------------------------------------
                min_c     = abs(x - parameter{ij}(11));
                min_no    = 1;

                if size(parameter{ij}1) >=2
                    for c = 2:size(parameter{ij}1) 

评论

共有 条评论