压缩感知中很重要的一步就是重构算法,重构算法关系着重建信号的质量。基追踪算法是凸松弛法是很有代表性的一种算法。
由于我们所要求解的问题是方程的个数远远大于未知数的个数,用0范数求解是很难求解出来的,这样就找到一种用范数来代替范数求解的方法,BP (Basis Pursuit )算法就是利用范数求解的一种很好的方法。BP算法不是直接寻求信号的稀疏表示,只是表示的用于最小化的的系数[1],通过等价信号的最小化的范数表示。下面介绍BP算法的原理。
BP算法中0范数的模型为:
范数是稀疏变换中不为零的个数,(1)式的求解比较困难,通过上面的说明,0范数可以用范数进行代替,则(1)式可以表示为:
(2)式表示的是理想的一种情况,在实际的应用中,会混入噪声,也就是:
那么(2)式可表示为:
(4)式中为噪声的能量。由于实际模型中会混入噪声,这就需要一种抑制噪声的模型,也就是改进后的BP算法,改进后的BP算法对噪声有一定的抑制作用,那么改进后的模型为 :
BP算法的信号重构
本节对BP算法进行重构,采用一维离散信号和二维lena信号对其进行信号重构,来观察BP算法的重构功能。
(1)一维离散信号的BP算法仿真
本次仿真使用matlab随机生成的一维离散信号,稀疏度k=30,信号长度N=1000,观测向量的长度M=200,那么采样率M/N=0.2,其中的观测矩阵是高斯随机矩阵。采用BP算法对一维信号进行重构,重构图如图1:
图1:BP算法一维信号重构图
由图1可以得到,BP算法对一维信号有很好的重构功能。
2)二维lena图像的BP算法重构
BP算法对二维信号进行重构,在这里我们采取和MP算法二维信号重构的方法,也是先采取离散余弦变换(dct)使数据稀疏,算法重构结束之后再进行离散反余弦变换(idct),这样就转化为了我们所需要的。本次在matlab中的仿真,我们采用的是256X256的Lena的二维图像,M=180,N=256,稀疏度k=40,M/N=0.7,观测矩阵是高斯随机矩阵,采用BP算法对二维图像进行重构,重构效果如图2(b):
(a) 原始图像 (b) BP算法重构图片
(M/N=0.7)