压缩感知重构算法之基追踪降噪(Basis Pursuit De-Noising, BPDN)

题目:压缩感知重构算法之基追踪降噪(Basis Pursuit De-Noising, BPDN)

        本篇来探讨基追踪降噪(Basis Pursuit De-Noising, BPDN),与基追踪不同之处在于,基追踪降噪在模型中考虑到了噪声的存在,而这在实际中是非常有意义的。因为考虑到了噪声,所以不同于BP的最优化模型可以转化为线性规划问题,BPDN的最优化模型可以转化为二次规划问题。

1、基追踪降噪的提出

        文献【1】为了使基追踪能够适应有噪声的数据,提出了基追踪降噪:

        然后将基追踪降噪转化为扰动线性规划(perturbed linear program)问题:

        基追踪降噪最优化模型中的参数λ可按如下规划选取:

        并没有查到简单的MATLAB函数求解扰动线性规划问题。作者发布了文献【1】中的算法MATLAB源代码工具箱Atomizer(下载链接:http://sparselab.stanford.edu/atomizer/),并有一个说明文档,在工具箱\Documentation目录下(AboutAtomizer1208.ps,若想打开需要转换一下格式,不成功者可以参考链接http://download.csdn.net/detail/jbb0523/9583505)

2、利用l1-magic工具箱实现基追踪降噪

        l1-magic工具箱(链接:http://users.ece.gatech.edu/~justin/l1magic/)解决的七类问题中,并没有出现文献【1】式(5.1)类型,但在文献【2】中提到:


        即问题(3)与问题(1)等价。下面是l1-magic的(P2)问题:

        可以看出文献【2】的问题(3)与l1-magic中的问题(P2)等价,因此,我们完全可以使用l1-magic工具箱中求解(P2)的函数l1qc_logbarrier.m解决基追踪降噪(使用时注意,函数l1qc_logbarrier还调用了工具箱其它的函数)。

3、将基追踪降噪转化为二次规划问题

        文献【2】给出了将基追踪降噪转化为二次规划问题的过程:


        对于线性代数和矩阵分析基础不好的人,这个过程可能并不是很容易看明白,现详细推导如下:

Step0:

与基追踪推导类似,将变量x变为两个非负变量uv之差:

Step1:

 ,其中 

Step2:

Step3:

因为是一个数(或者说是1×1的矩阵)

所以

Step4:

因为

所以

Step5:

Step6:

综合Step3、Step4、Step5的结果,Step2可化为:

Step7:

与基追踪推导类似:

其中, 表示转置

Step8:

综合Step6与Step7的结果,Step0可化为:

其中

Step9:

因为是一个与变量无关的常数,因此不影响最优化极值点的位置

所以Step8可写为标准的二次规划形式:

        求得最优化解z0后可得变量x的最优化解x0=z0(1:n)-z0(n+1:2n)。

4、基于quadprog的基追踪降噪MATLAB代码(BPDN_quadprog.m)

        根据以上推导结果,可以写出基于MATLAB自带二次规划函数quadprog的代码:

function [ x ] = BPDN_quadprog( y,A,tao )
%BPDN_quadprog(Basis Pursuit DeNoising with quadprog) Summary of this function goes here
%Version: 1.0 written by jbb0523 @2016-07-22 
%Reference:Nowak R D, Wright S J. Gradient projection for sparse reconstruction:
%Application to compressed sensing and other inverse problems[J]. 
%IEEE Journal of selected topics in signal processing, 2007, 1(4): 586-597.
%(Available at: http://pages.cs.wisc.edu/~swright/papers/FigNW07a.pdf)
    [y_rows,y_columns] = size(y);  
    if y_rows<y_columns  
        y = y';%y should be a column vector  
    end 
    n = size(A,2);
    %according to section II-A of the reference
    b = A'*y;
    c = tao*ones(2*n,1)+[-b;b];
    B = [A'*A,-A'*A;-A'*A,A'*A];
    lb = zeros(2*n,1);
    z0 = quadprog(B,c,[],[],[],[],lb);
    x = z0(1:n) - z0(n+1:2*n);
end

5、基追踪降噪单次重构测试代码

        测试代码与OMP测试代码有改动,首先是测量矩阵Phi使用函数orth进行了正交化,其次是观测值y加入了噪声e,可以用比较软件Beyond Compare具体比较不同之处: 

%压缩感知重构算法测试  
clear all;close all;clc;  
M = 64;%观测值个数  
N = 256;%信号x的长度  
K = 10;%信号x的稀疏度  
Index_K = randperm(N);  
x = zeros(N,1);  
x(Index_K(1:K)) = 5*randn(K,1);%x为K稀疏的,且位置是随机的  
Psi = eye(N);%x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta  
Phi = randn(M,N);%测量矩阵为高斯矩阵
Phi = orth(Phi')';
A = Phi * Psi;%传感矩阵  
sigma = 0.005;
e = sigma*randn(M,1);
y = Phi * x + e;%得到观测向量y  
%% 恢复重构信号x  
tic  
lamda = sigma*sqrt(2*log(N));
theta =  BPDN_quadprog(y,A,lamda);
x_r = Psi * theta;% x=Psi * theta  
toc  
%% 绘图  
figure;  
plot(x_r,'k.-');%绘出x的恢复信号  
hold on;  
plot(x,'r');%绘出原信号x  
hold off;  
legend('Recovery','Original')  
fprintf('\n恢复残差:');  
norm(x_r-x)%恢复残差 

运行结果如下:(信号为随机生成,所以每次结果均不一样)

         1)图:

        2)Command Windows

Optimization terminated: relative functionvalue changing by less

 thansqrt(OPTIONS.TolFun), no negative curvature detected in current

 trust region model and the rate of progress(change in f(x)) is slow.

Elapsed time is 8.706162 seconds.

 恢复残差:

ans =

   0.2723

6、结束语

        从Command Windows输出可以看到,本次运行花费了8.706162秒,误差为0.2723。相比于之前的单次重构测试,这个运行时长非常长,误差非常大。为什么呢?

        有关运行时间长,是不是由于该二次规划变量只有一个非负约束,故可行域范围比较大,所以时间会很长;而误差大也是可以理解的,因为本来该方法的观测值就是含有噪声的,但问题也就来了,这不是基追踪“降噪”么?为什么没把“噪声”给“降”掉呢?

7、参考文献:

1Chen S S, Donoho D L, Saunders MA. Atomicdecomposition by basis pursuit[J]. SIAM review, 2001, 43(1): 129-159.(Available at: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4272&rep=rep1&type=pdf)

 2Nowak R D, Wright SJ. Gradientprojection for sparse reconstruction: Application to compressed sensing andother inverse problems[J]. IEEE Journal of selected topics in signalprocessing, 2007, 1(4): 586-597. (Available at: http://pages.cs.wisc.edu/~swright/papers/FigNW07a.pdf)

从去噪到压缩感知论文。Image denoising based on compressed sensing、Abstract—A denoising algorithm seeks to remove noise, errors, or perturbations from a signal. Extensive research has been devoted to this arena over the last several decades, and as a result, todays denoisers can effectively remove large amounts of additive white Gaussian noise. A compressed sensing (CS) reconstruction algorithm seeks to recover a structured signal acquired using a small number of randomized measurements. Typical CS reconstruction algorithms can be cast as iteratively estimating a signal from a perturbed observation. This paper answers a natural question: How can one effectively employ a generic denoiser in a CS reconstruction algorithm? In response, we develop an extension of the approximate message pass- ing (AMP) framework, called denoising-based AMP (D-AMP), that can integrate a wide class of denoisers within its iterations. We demonstrate that, when used with a high-performance denoiser for natural images, D-AMP offers the state-of-the- art CS recovery performance while operating tens of times faster than competing methods. We explain the exceptional performance of D-AMP by analyzing some of its theoretical features. A key element in D-AMP is the use of an appropriate Onsager correction term in its iterations, which coerces the signal perturbation at each iteration to be very close to the white Gaussian noise that denoisers are typically designed to remove. Index Terms—Compressed sensing, denoiser, approximate message passing, Onsager correction.
追踪算法,又称为“meanshift算法”,是一种用于图像处理和计算机视觉领域的目标跟踪算法。它的原理是根据颜色或纹理特征,通过不断迭代计算目标区域的平均值或中心点来实现目标的追踪。 在Matlab中,可以使用内置的Image Processing Toolbox来实现追踪算法。首先,需要定义目标区域的初始位置和大小。然后,通过选择适当的颜色空间和特征提取方法,将图像转换为特征空间。接下来,计算目标区域的直方图,并使用直方图反向投影到整个图像上。根据目标区域的直方图与图像的相似性,通过不断迭代计算目标区域的平均值或中心点,并更新目标区域的位置和大小。 具体实现过程如下: 1. 读取图像并将其转换为适当的颜色空间,例如RGB或HSV。 2. 定义目标区域的初始位置和大小,可以通过鼠标交互或手动指定。 3. 在目标区域周围选择一个固定大小的窗口。 4. 使用窗口计算目标区域的颜色或纹理直方图。 5. 将目标区域的直方图与整个图像的直方图进行相似性度量,例如计算相关性或巴氏距离。 6. 根据相似性度量的结果,更新目标区域的位置和大小。 7. 如果更新的目标区域与上一次迭代的目标区域相差很小,则停止迭代,否则返回第4步继续迭代。 8. 显示目标追踪结果,即绘制出目标区域。 需要注意的是,追踪算法在实际应用中可能会受到光照变化、目标形变以及背景干扰等因素的影响,因此需要一定的预处理和后处理措施来提高追踪的准确性和稳定性。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值