24小时热门版块排行榜    

CyRhmU.jpeg
查看: 471  |  回复: 1

子不语23

新虫 (初入文坛)

[求助] 有没有哪位现在研究压缩感知,我想请假一下关于重构算法的问题已有1人参与

我目前在做图像压缩的相关课题,采用了压缩感知,并对重构算法进行了改进,结合romp和samp两者算法优点,开始先对稀疏度估计,然后采用romp的正则化思想,最后采用samp中通过步长逼近稀疏度,在理论上是可行的,可是程序出来,效果不明显,和没改进没啥区别啊,有哪位大神指点一下啊,编写程序如下:

while length(I)-1 < 2*k && norm(res) > 10^(-8)
   numIts = numIts + 1;

   %Find J, the biggest n coordinates of u
   u = Phi' * res;%256*1矩阵
   absu = abs(u);
   [b, ix] = sort(absu, 'descend');
   J = ix(1:k);
   Jvals = b(1:k);

   %Find J0, the set of comparable coordinates with maximal energy
   w=1;
   best = -1;
   J0 = zeros(1);
   while w <= k     
      
       first = Jvals(w);
       firstw = w;
       energy = 0;
      
       %进行正则化
       while ( w <= k ) && ( Jvals(w) >= 1/2 * first )
           energy = energy + Jvals(w)^2;
           w = w+1;
       end

       if energy > best
           best = energy;
           J0 = J(firstw:w-1);
       end
   end
   
   %Add J0 to the index set I
   I(length(I)+1: length(I)+length(J0)) = J0;

   PhiSubI = Phi(:, I(2));
   for c=3:length(I)
       if ~isIn(I(2:c-1),I(c))
         PhiSubI(:,c-1) = Phi(:, I(c));
       end
   end

   %最小二乘解,更新残差
   y = lscov(PhiSubI, x);
   newres = x - PhiSubI * y;
   
   %从这一步开始引入步长自适应的计算,设置双阈值进行步长更新
   if  norm(newres)>10^(-6)
       if norm(newres)>=norm(res)
            stg_idx = stg_idx + 1;
            k= stg_idx*step_size;
            %step_size=ceil(0.5*step_size);  
       else
            res = newres;
       end
   else
       if norm(newres)>=norm(res)
            stg_idx = stg_idx + 1;
            k = stg_idx*step_size;
            step_size=ceil(0.5*step_size);  
       else
            res = newres;
       end
   end

[ Last edited by 自私的猫1988 on 2014-12-29 at 11:07 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suntree4152

铁虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
自私的猫1988: 金币+2, 鼓励交流 2014-12-29 11:07:42
子不语23(自私的猫1988代发): 金币+2, 鼓励交流 2015-01-24 20:46:41
据我了解,压缩感知的基本问题是在y=Ax中重构出信号x,其中y为m维信号--压缩采样信号(已知), A为mxn矩阵(已知)。目标是通过最优化稀疏度来重构出x: min ||x||_0, s.t. y=Ax (1),然而要使得(1)能精确唯一重构出真实的原始信号x,对矩阵A的性质是有要求的,并非任意矩阵都可以,具体的条件有RIP-2K条件,mutual coherence条件,K为真实信号x的稀疏度。确定A满足要求后,还需面临的一个问题是(1)很难解,现有的方法有几种,一种是将(1)中的L0范数改为L1范数: min ||x||_1, s.t. y=Ax (2),可以证明单A满足RIP-2k,且其RIP-2K常数满足一定条件时, (1),(2)的解等价,显然(2)是个凸优化问题,比(1)好解多了。另外一种方法是greedy类型的方法,如matching pursuit, orthogonal matching pursuit,虽然是贪婪方法,但是当A满足类似的RIP-2K条件时,也能证明其能收敛到(1)的解,第三种方法是将(1)转换为逐次2阶范数优化问题,具体的算法名我忘了,后两种方法在Elad 2010年的书《sparse and redundance in ... image processing》(书名没记全)里有详细介绍。相应的代码在Elad的网站上就有。你可以上网找相关的资源。
2楼2014-12-28 23:37:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 子不语23 的主题更新
信息提示
请填处理意见