文章大意:
PCA方法鲁棒性不佳是由于矩阵的噪声并不完全是高斯噪声。对应到视频序列中就是,长时间的静止视频中每帧的图片相关性极高,而在有物体运动时,往往是部分像素有极大的变化,但是变化的像素较少。这也就是说,视频中图像可以分成相关性极高的背景以及少量像素的前景图像。即低秩部分以及稀疏部分。这是优于PCA的部分,即前景图像对矩阵的分解影响较小。(虽然论文中提到了,矩阵不是特别稀疏时也有很好的性能)
直接提应用方式:
将视频中的一张图片以行的方式依次存入到一个行向量中,而视频包含的图片数作为其矩阵的行数。由此将视频存成一个矩阵,对该矩阵进行分解,然后将两部分恢复成单张图片即可。
我们希望矩阵分解后产生一个低秩的矩阵和一个稀疏的矩阵,即最小化rank(A) + E的0范,因为问题的复杂性,将其放宽到:
即最小化特征值与稀疏矩阵非零元素的和。
inexact_alm结果显示:
这段视频两种方法的差异并没有论文中的明显。
没有查找到PCP方法的代码部分,代码根据下列迭代方式编写
有关公式的理解
不关注k,k+1该部分只是迭代的固有格式,3,4反过来做也可以,4中的L上的k+1改为k应该也行,不过上述写的方式收敛比较快。
有关各部的参数问题
u的取值并没有明确的证明,只有一个最小值的证明。
u存在其最小值,u非常小时会导致迭代时,所有量都会像误差项集中;u非常大时,将导致低秩部分中会混杂入稀疏部分,不过误差项仍会向零向量移动。也就是这时仍是收敛的
u较大时,收敛速度会提高,不过过大会造成混杂,最终效果会变差。u小时,收敛速度较低,不过效果比较好(太小导致不收敛)
lambda的取值一般设定为矩阵行列中值较大的值进行开方后的倒数值。
有关迭代部分的理解:
3式右边的矩阵为低秩的部分,我们希望它的秩更加低,将矩阵进行svd分解后,去除过小奇异值后,将矩阵还原(实际上这常用于图片的压缩)。
4式右边的矩阵为稀疏部分,我们当然希望它更稀疏,也就是将小值的元素部分去除
5式则是误差项的更新。
而结束条件如下:
这里u的取值也提到了。
F范数代表矩阵的能量。
一般形式的图像:加上噪声项的部分,之前看到一篇文章的名字(有关该部分的):
Stable Principle Component Pursuit (SPCP)/ Noisy Robust PCA
最后有关代码编写中的一些备忘:
在分解出的稀疏矩阵中,该矩阵元素为正负均有,最终的显示将图片取绝对值,然后在0-255的范围中显示。