【问题标题】:compressive sensing and Haar wavelet压缩感知和 Haar 小波
【发布时间】:2015-05-16 21:57:41
【问题描述】:

我想使用 CS 从更少的样本中重建图像。

我使用高斯随机矩阵作为测量矩阵。我的问题是 Psi 矩阵 我想成为 Haar 小波 系数,但我不知道如何定义它。

我使用了 DCTFourier 基础,效果很好。这是我的 傅立叶 代码。

谁能告诉我如何将 Psi 矩阵定义为 haar 小波 变换?

提前致谢。

clc
clear all
close all
[fn,fp]=uigetfile({'*.*'});
tic 
A=im2double(rgb2gray(imread([fp,fn])));
figure(1),imshow(A)
xlabel('original')
x=A(:);
n=length(x);
m=1900;
Phi=randn(m,n);   %Measurment Matrix
Psi=fft(eye(n));   %sensing Matrix( or can be dct(eye(n)) )
y=Phi*x;  %compressed signal
Theta=Phi*Psi;
%Initial Guess:  y=Theta*s => s=Theta\y
s2=Theta\y;
%Solution
s1=OMP( Theta, y, 1e-3);
%Reconstruction
x1=Psi*s1;
figure,imshow(reshape(x1,size(A))),xlabel('OMP')
toc

【问题讨论】:

    标签: matlab haar-wavelet


    【解决方案1】:

    您只需要生成一个适当维度的 haar 矩阵。考虑这个 MATLAB 函数:

    function [h]=haargen(N)
    % Generating Haar Matrix
    ih=zeros(N,N); 
    h(1,1:N)=ones(1,N)/sqrt(N);
    for k=1:N-1 
    p=fix(log(k)/log(2)); 
    q=k-(2^p); 
    k1=2^p; t1=N/k1; 
    k2=2^(p+1); t2=N/k2; 
    for i=1:t2 
    h(k+1,i+q*t1)   = (2^(p/2))/sqrt(N); 
    h(k+1,i+q*t1+t2)    =-(2^(p/2))/sqrt(N); 
    end 
    

    结束

    【讨论】:

    • 是的,我知道,但它不起作用。我的意思是在使用 OMP 算法重建后,输出就像嘈杂的形状或类似的东西,但是当我使用 DCT 或傅立叶运行代码时,它运行良好。
    • @HaybertMarkarian 这很明显,因为如果您看到 haar 矩阵的原子就像方波,即条目是 root(2)、1 或 -1。并且由于稀疏约束,您的重建将受到影响。而对于 DCT 或 DFT,我们有不同频率的正弦/余弦,我们正在寻找一种最佳的傅立叶级数表示。
    • @HaybertMarkarian 还有一件事,使用 haar 矩阵,您可以获得 haar 变换系数。在小波中,您通常在几个层次上进行分解。并且 Haar 变换的能量堆积特性不是很好。
    • @HaybertMarkarian 或者,对于在 CS 中使用小波,我们首先对信号进行变换以获得系数向量,然后通过阈值处理使其稀疏,然后使用测量矩阵对其进行感知。最后我们尝试恢复它。
    • 感谢您的帮助。实际上,我转换了我的信号并通过阈值化使其稀疏,并用高斯矩阵对其进行感知。但在这种情况下我的问题是恢复信号。如您所知,基于 Cs,我们有 y=phix=phipsys=tethas 和 OMP 恢复算法,我从 Justin Romberg 的网站下载了它希望我定义 psy 矩阵而且我不知道如何在小波情况下定义它!因为我只有高斯矩阵的 phi 和包含我信号的稀疏小波系数的 x。
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2013-07-23
    • 2016-04-09
    • 2012-05-30
    • 2012-08-17
    • 2015-01-26
    • 2016-09-19
    • 2012-01-29
    相关资源
    最近更新 更多