SL-PCA(子空间学习模型)——前景提取

 

目录

1、算法评价

2、综述

2.1 子空间学习方法的背景建模

3、Matlab code


Paper:

  • subspace learning for background modeling:a survey 2009, T.Bouwmans
  • A Bayesian Computer Vision Systemfor Modeling Human Interactions,Nuria Oliver,2000PAMI

Code:

这个算法是基于PCA的,思想比较简单。前20帧图像组成协方差矩阵,用于PCA求特征值,选取前M(=10)个最大的特征值和特征向量,作为主成分的基,然后再变换回去。然后原始帧减去背景向主成分基投影,再变换回去。然后原始帧-变换回来的帧做差,进行阈值分离。

1、算法评价

  • 评价来源:《handbook on background modeling and foreground detection for video surveillance》chap1-20,subspace learning models

这个模型有一些局限性:

  • 前景目标的大小必须要小,同时在训练帧的时期内不能长时间停留在同一位置。一些作者部分地放宽这些限制。例如Xu提出递归地应用一个误差补偿步骤来减小前景移动物体对特征背景模型的影响。
  • 对于背景保持而言,使用PCA进行背景模型更新的计算量非常大。同时由于缺乏一个鲁棒的分析机制,起一点或者前景目标可能会被划分为背景模型。已经开发了一些增量机制来对奇异值更加鲁棒。增量PCA计算量更小,但是背景图像会被前景目标污染。为了解决这个问题,Li提出了增量PCA在奇异值存在的时候也能鲁棒。然而,当保持背景模型更新增量式更新时,它对不同帧分配了同样的权重。因此,clean帧和含有前景目标的帧具有相同的贡献。结果就是背景模型会有相对的污染。在这种情况下,Skocaj使用了一个加权增量,同时更加鲁棒。不同帧的权重是不同的,这个方法也得到了更好的背景模型。但是,权重应用于整个框架,而没有考虑不同图像部分对构建背景模型的贡献。为了实现权重的像素级精度,Zhang和Zhuang [374]提出了增量PCA的自适应加权选择。此方法通过在更新过程中为每个新帧上的每个像素分配权重来执行更好的模型。实验[174]表明,该方法比SL-IRPCA [189]获得更好的结果。
  • 由于多通道数据的集成不是很简单,因此该模型的应用主要限于灰度图像和像素级。通常,它涉及更高的维数空间,并给管理数据带来更大的难度。最近,Han and Jain [131]提出了一种使用加权增量式二维主成分分析的有效算法。将该算法应用于3通道(RGB)和4通道(RGB + IR)数据。结果显示,在存在多模式背景和阴影的情况下,效果得到了明显改善
  • 表示不是多模式的,因此无法正确处理各种照明变化。最近,董等人[95]提出使用多子空间学习来处理不同的光照变化。特征空间被组织成代表不同照明条件的cluster簇。局部主成分分析(LPCA)转换用于分别学习每个聚类的特征子空间。当当前图像到达时,算法选择共享最接近光照条件的学习子空间。结果[95]表明,LPCA算法优于原始PCA,尤其是在突然的光照变化下。以类似的方式,Kawan ishi等[159] [160]生成了很好地表达天气和场景照明条件的背景图像。该方法通过超长期监视收集了大量图像,并根据一天中的时间对其进行分类,并应用PCA重建背景图像。最近,使用了除PCA以外的其他重构子空间模型。例如,Yamazaki等[357]和蔡等人。 [313]使用独立成分分析(ICA). Bucak等人以另一种方式[41]提出了一个增量非负矩阵分解(INMF)来减小维度。为了考虑空间信息,李等人[187]使用了Incremental Rank-(R1,R2,R3)张量(IRT)。最近,克里希纳等[173]使用了局部保存投影(LoPP),也被称为拉普拉斯特征图。 LoPP是一种经典的线性技术,可沿最大方差的方向投影数据并最佳地保留观察矩阵的邻域结构。此外,LoPP共享了非线性技术的许多数据表示属性,这对于分离背景和前景很有用。可以找到对用于背景建模和前景检测的重构子空间学习模型的完整综述[35]。即T.Bouwmans. subspace learning for background modeling:a survey 2009 。

2、综述

  • Paper:T.Bouwmans. subspace learning for background modeling:a survey 2009

第三类使用子空间学习方法。在[1]中,将使用主成分分析(SL-PCA)的子空间学习应用于N幅图像,以构建背景模型该模型由均值图像和包含PCA的前p个重要特征向量的投影矩阵表示。这样,通过计算输入图像及其重构之间的差异来实现前景分割。出于同样的想法,SL​​-PCA [10]的许多改进被开发为更加健壮和快速[33-45]。在同一类别中,Yamazaki等 [30]和蔡等人 [46]已经使用了独立成分分析(SL-ICA)。 Bucak等人以另一种方式 [31,47]提出了一种增量非负矩阵因式分解(SL-INMF)以减小维度。为了考虑空间信息,李等人[32]使用了增量等级-(R1,R2,R3)张量(SL-IRT)。表1概述了统计背景建模方法。第一列指示类别模型,第二列指示每种方法的名称。它们的相应首字母缩写在第一个括号中指示,每种方法计数的论文数在第二个括号中指示。第三列给出了作者的姓名和相关出版物的日期。高斯模型和支持向量模型是为动态背景而设计的,子空间学习模型是位光照变化设计的。

在本文中,我们提出了一项关于子空间学习方法的调查,该方法最近引起了人们对照明变化的关注。这些方法可以分为PCA的改进和变体。这些改进包括通过使用增量和鲁棒的PCA算法来增强适应性和鲁棒性[33-45]。这些变体包括使用其他子空间学习算法,如独立分量分析(ICA)[30,46],增量非负矩阵因式分解(INMF)[31,47]和增量Rank-(R1,R2,R3)张量(IRT)[32]。

2.1 子空间学习方法的背景建模

分为重构和判别方法:

  • -重构子空间学习:重构方法可以很好地近似数据,因此可以提供良好的重构。另一个优点是重构方法是无监督的技术。此外,重构方法可以实现增量更新,这非常适合实时应用。这些方法与任务无关。最常见的重建方法如下:主成分分析(PCA)[49],独立成分分析(ICA)[50]和非负矩阵因式分解(NMF)[51]。 PCA将大量可能相关的数据转换为较少数量的不相关数据,称为主成分。 ICA是PCA的一种变体,其中假定组件在统计上是相互独立的,而不仅仅是不相关的。较强的条件可以消除PCA的旋转不变性,即ICA提供了双向数据的有意义的唯一双线性分解,可以将其视为许多独立源信号的线性混合。非负矩阵分解(NMF)可找到非负数据的线性表示形式。给定非负数据矩阵V,NMF将近似分解V≈WH分解为非负因数W和H。与PCA和ICA相比,非负约束使该表示成为纯加性,即不允许相减。
  • -判别子空间学习:判别方法是监督技术,可以很好地分离数据,因此可以提供良好的分类。此外,判别方法在空间和计算上都是有效的。这些方法是任务相关的。最常见的判别方法如下:线性判别分析(LDA)[52]和规范相关分析(CCA)[53]。 LDA将数据投影到低维向量空间上,以使类间距离与类内距离之比最大化。目标是实现最大的歧视。典型相关分析是一个多元统计模型,可以促进对多个因变量和多个自变量之间的相互关系进行研究。典型相关可同时从多个自变量中预测多个因变量。

所有这些方法最初都是使用批处理算法实现的,这些算法要求数据必须事先可用并且必须一起给出。但是,这种类型的批处理算法不适用于背景建模的应用,在该背景建模中,从相机增量接收数据。此外,当数据集的维数很高时,计算和存储复杂性都会急剧增加。因此,迫切需要增量方法来实时计算针对顺序到达的数据的自适应子空间[54]。遵循这些约束,重建方法最适合于背景建模。此外,他们不受监督的方面可以避免在学习步骤中进行人工干预。

在以下各节中,我们调查了应用于背景建模的子空间学习方法:主成分分析,独立成分分析,非负矩阵分解和增量等级-(R1,R2,R3)张量。这四种方法是重构方法。

3、Matlab code

%% 2019.12.11 subspace learning PCA
% 基于PCA的背景建模方法
clear all;
addpath('D:\dataset\');
grl = VideoReader('demo.avi');

%初始化参数
HistorySize = 20;%20帧用于背景建模
Thresh = 450;
frame_init = rgb2gray(read(grl,1));
[row, col] = size(frame_init);
nFrames=grl.NumberOfFrames;% 帧的总数
pca_data = [];
P1 = [];
for iter_n = 1:nFrames
     currFrame = rgb2gray(read(grl,iter_n));%当前帧
    if (iter_n < HistorySize)%建模数据,每一列为一帧样本
       pca_data(:, iter_n) = double(reshape(currFrame,1,[])');%有20个样本,对20的维度进行降维
    elseif iter_n == HistorySize%获取主成分
        pca_data(:, iter_n) = double(reshape(currFrame,1,[])');
        remove_mean = @(Q)Q - repmat(mean(Q,2), [1,HistorySize]);
        mean_BG = mean(pca_data,2);
        mean_face=reshape(mean_BG, row, col);%背景图像
        P1 = remove_mean(pca_data);%减去均值
        C = P1 * P1';
        d = 10;%截取前10个最大的特征值
        [V,Dvalue] = eigs(C,d); D = diag(Dvalue); %V特征向量,D特征值
        [D,I] = sort(D, 'descend'); V = V(:,I);

        UL = V(:, 1:d)' * P1;%每一列都是特征脸
        
    else%前景背景分离
        %重构
        VecInput = double(reshape(currFrame,1,[])');
        MeanNormInput = VecInput-mean_BG;%减去背景
        ProjectedTestImage = (V(:,1:d)'*MeanNormInput); 
        backTestImage = V(:,1:d) * ProjectedTestImage;%变换回来
        backTestImage = backTestImage + mean_BG;
        backTestImage_real = reshape(backTestImage, row, col);
        
        fore = abs(backTestImage_real - double(currFrame)).^2 > Thresh;
        figure(1);imshow(fore,[])
        figure(2);imshow(currFrame,[]);
        pause(0.5);
%         d = 10;%
%         descriptor = V(:,1:d)' * P1;%PCA基下的表示系数
% 
%         H = descriptor(f);%重建算子
    end
        
end

 

 

 

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值