- 读Stauffer, C. and W. E. L. Grimson (1999). Adaptive background mixture models for real-time tracking, IEEE.
这篇文章首次将GMM模型引入cv领域中,提供了一个用背景减图法进行于前景检测的背景建模方法。文章中将每一个像素点都建立一个混合高斯模型(即用多个高斯来描述该像素点),并且能够在线近似更新该点的模型。训练阶段,当建立了多个高斯时,这些混合高斯的分布将会被评估决定哪些高斯最有可能代表背景模型。在检测阶段,将会计算每个像素点的值与混合高斯中高斯的相似度,如果到达预定阈值,则认为属于背景,否则属于前景。
文章中给出了GMM的表达式,权值更新方程,均值和方差更新方程,以及对每个点选择GMM个数B的方法。
GMM的优点是可以在动态环境中使用,包括摇动的树叶,缓慢的光线变化等,室内外环境稳定性和鲁棒性都还不错;可以处理多模态数据;当背景再次出现时,可以很快的恢复模型。
GMM算法需要手动输入2个参数,alpha和T,alpha为学习速率,T为混合高斯个数选择阈值,对于不同的场景和不同的摄像头这2个参数不需要另外改变。
缺点是对于急剧的光照变化,大云大风天气效果不好。并且有2个参数值需要手动调整,不是很方便。
作者提出未来的改进方向:加大混个高斯的个数,协方差矩阵不使用简化的,加入预测信息,相邻像素点信息等。
2. 读KaewTraKulPong, P. and R. Bowden (2001). An improved adaptive background mixture model for real-time tracking with shadow detection.
本文对上一篇文章的gmm参数更新方程做了改进,并且在不同的阶段使用了不同的更新方程。比如在最开始出现的L帧中,作者采用EM算法来更新那3个参数,当L帧过后,作者采用另外一组方程来更新。这组方程比较经典,后面很多人的文章都直接使用该方法或者在该方法上做改进。Opencv源码中的gmm模型之一就是这篇文章来的。
当然这篇文章还引入了影子抑制的算法,是根据图像的亮度模型和色彩模型来做的。
论文写作学习:怎么将简单的程序编程(这里就几个更新公式)写成一篇论文呢?其实就是写公式的推导过程和参数的选择过程。什么贝叶斯网络一大把的概率公式等也只是求了个最大似然估计,即参数的估计。而估计出来的参数有离散的公式计算,直接编程即可。
3. 读Zivkovic, Z. and F. van der Heijden (2006). "Efficient adaptive density estimation per image pixel for the task of background subtraction." Pattern recognition letters 27(7): 773-780.
本篇论文是opencv源码库中采用的第二个gmm模型。其文章的亮度是在第二篇文章的更新方程上对权值引入了一个先验密度分布,先验函数为dirichlet 函数。从作者的实验效果来看,这种改进对性能的提升效果不是特别明显。当然本文除了gmm的改进外,还对非参数估计的前景检测算法做了改进,这里就没仔细去看了。
本文做的改进前后参数方程推导大致如下:
4. 读Zivkovic, Z. and F. van der Heijden (2004). "Recursive unsupervised learning of finite mixture models." Pattern Analysis and Machine Intelligence, IEEE Transactions on 26(5): 651-656.
这篇文章并不是针对cv领域的gmm,其提出的算法是一个通用框架,所以上面第3篇文章具体到cv领域时就是用的本文的理论。所以没仔细读该文章。这2篇文章的作者是一样的。