分块压缩感知程序运行显示dwt的参数不足,不会,求解

% 本程序实现图像LENA的压缩传感
% 程序作者:沙威,香港大学电气电子工程学系,wsha@eee.hku.hk
% 算法采用正交匹配法,参考文献 Joel A. Tropp and Anna C. Gilbert
% Signal Recovery From Random Measurements Via Orthogonal Matching
% Pursuit,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12,
% DECEMBER 2007.
% 该程序没有经过任何优化

%function Wavelet_OMP

clc
clear
% 读文件
X=imread('D:\用户目录\我的文档\MATLAB\New Folder\lena bmp 标准测试图像.bmp');
X=double(X);
[a,b]=size(X);
size_kuai=16*4;
X2=zeros(size_kuai); % 恢复矩阵
X3=zeros(a,b); % 恢复矩阵
% 小波变换矩阵生成
ww=DWT(size_kuai);
% 随机矩阵生成
M=12*4;
R=randn(M,size_kuai);

tic
for i_x=1:ceil(a/size_kuai)
for i_y=1:ceil(b/size_kuai)
XX=X((i_x-1)*size_kuai+1:i_x*size_kuai,(i_y-1)*size_kuai+1:i_y*size_kuai);
% 小波变换让图像稀疏化(注意该步骤会耗费时间,但是会增大稀疏度)
X1=ww*sparse(XX)*ww';
X1=full(X1);
% 测量
Y=R*X1;
% OMP算法
for i=1:size_kuai % 列循环

rec=omp_fenkuai(Y(:,i),R,size_kuai);
X2(:,i)=rec;
end
X3((i_x-1)*size_kuai+1:i_x*size_kuai,(i_y-1)*size_kuai+1:i_y*size_kuai)=ww'*sparse(X2)*ww; % 小波反变换
end
end
X3=full(X3);
use_time=toc

% 原始图像
figure(1);
imshow(uint8(X));
title('原始图像');
% 压缩传感恢复的图像
figure(2);
imshow(uint8(X3));
title('分块恢复的图像');

% 误差(PSNR)
errorx=sum(sum(abs(X3-X).^2)); % MSE误差
psnr=10*log10(255*255/(errorx/a/b)) % PSNR

% OMP的函数
% s-测量;T-观测矩阵;N-向量大小
function hat_y=omp_fenkuai(s,T,N)

Size=size(T); % 观测矩阵大小
M=Size(1); % 测量
hat_y=zeros(1,N); % 待重构的谱域(变换域)向量

Aug_t=[]; % 增量矩阵(初始值为空矩阵)
r_n=s; % 残差值

for times=1:M/4 % 迭代次数(稀疏度是测量的1/4)
for col=1:N % 恢复矩阵的所有列向量
product(col)=abs(T(:,col)'*r_n); % 恢复矩阵的列向量和残差的投影系数(内积值)
end
[val,pos]=max(product); % 最大投影系数对应的位置
Aug_t=[Aug_t,T(:,pos)]; % 矩阵扩充
T(:,pos)=zeros(M,1); % 选中的列置零(实质上应该去掉,为了简单我把它置零)
aug_y=(Aug_t'*Aug_t)^(-1)*Aug_t'*s; % 最小二乘,使残差最小
r_n=s-Aug_t*aug_y; % 残差
pos_array(times)=pos; % 纪录最大投影系数的位置
if (norm(r_n)<40) % 残差足够小
break;
end
end
hat_y(pos_array)=aug_y; % 重构的向量

% 程序作者:沙威,香港大学电气电子工程学系,wsha@eee.hku.hk
% 参考文献:小波分析理论与MATLAB R2007实现,葛哲学,沙威,第20章 小波变换在矩阵方程求解中的应用(沙威、陈明生编写).
D:\用户目录\我的文档\MATLAB\New Folder\lena bmp 标准测试图像.bmp
% 构造正交小波变换矩阵,图像大小N*N,N=2^P,P是整数。

function ww=dwt(N)

[h,g]= wfilters('sym8','d'); % 分解低通和高通滤波器

% N=256; % 矩阵维数(大小为2的整数幂次)
L=length(h); % 滤波器长度
rank_max=log2(N); % 最大层数
rank_min=double(int8(log2(L)))+1; % 最小层数
ww=1; % 预处理矩阵

% 矩阵构造
for jj=rank_min:rank_max

nn=2^jj;

%  构造向量
p1_0=sparse([h,zeros(1,nn-L)]);
p2_0=sparse([g,zeros(1,nn-L)]);

%  向量圆周移位
for ii=1:nn/2
    p1(ii,:)=circshift(p1_0',2*(ii-1))';
    p2(ii,:)=circshift(p2_0',2*(ii-1))';
end

%  构造正交矩阵
w1=[p1;p2];
mm=2^rank_max-length(w1);
w=sparse([w1,zeros(length(w1),mm);zeros(mm,length(w1)),eye(mm,mm)]);
ww=ww*w;

clear p1;clear p2;

end

0

1个回答

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
分块压缩感知模型
分块压缩感知,算法是基于OMP算法,变换是DCT变化,且根据纹理自适应选择
分块压缩感知图像处理仿真BCS
利用MATLAB生成phantom,利用医学图像在某些变换域内的稀疏性,编程实现 CT图像的重建。并计算RMSE,与原图像比对。改变bm、bn数值可以改变分块大小,改变p值可以改变采样率。运行时间随着这些参数的改变而改变,原代码运行时间大约1分钟。
压缩感知重构算法中的SP算法
主要是压缩感知中的重构算法中子空间算法的代码
分块压缩感知程序
详细描述了分块压缩程序的编写,以及分析了压缩感知的优缺点
图像分块水印嵌入算法的matlab程序
DWT的分块水印算法,对一幅灰度图像多分块处理,然后再做小波变换,嵌入水印信息。
基于DWT的数字水印算法的MatLab实现
摘 要 数字水印技术是近年来图像保护技术研究领域的一个热点,本文提出了一种基于小波变换的图像数字 水印嵌入算法的Matlab实现"实验结果表明,该算法具有较好的视觉效果和透明性" 关键词 图像保护 小波变换 数字水印 Matlab 需用caj阅读器
Block compressed sensing of natural images
一篇关于图像的文章,最近比较火热的压缩感知理论在图像上的应用,基于分块的压缩感知
IDL大数据分块程序代码
IDL大数据分块实例代码,值得学习。 PRO WRITEREADHDF ;创建隐藏tlb,目的为了显示进度条 wtlb = WIDGET_BASE(map = 0) WIDGET_CONTROL,wtlb,/realize ;tlb居中显示 CENTERTLB,wtlb ;创建进度条 process = IDLITWDPROGRESSBAR( TIME=0,$ GROUP_LEADER=wtlb, $ TITLE='测试分块保存HDF... 请等待') IDLITWDPROGRESSBAR_SETVALUE, process, 0 ;源数据及相关信息 image = DIST(6000) ;求出数据范围 myRANGE=[MAX(image,min=min_xray),min_xray] dims = SIZE(image,/dimension) ;块大小 tileSize = [1024, 1024] ;初始化写入HDF数据 filename = 'c:\test.hdf' sd_id=HDF_SD_START(filename,/CREATE) ; sds_id=HDF_SD_CREATE(sd_id,'largeWrite', $ [dims[0],dims[1]],/FLOAT) ; HDF_SD_SETINFO,sds_id,FILL=0.0,LABEL='data', $ UNIT='float',$ RANGE=myRANGE ; ; Write labels to each of the dimension HDF_SD_DIMSET,HDF_SD_DIMGETID(sds_id,0),NAME='Width',LABEL='Width of data' HDF_SD_DIMSET,HDF_SD_DIMGETID(sds_id,1),NAME='Height',LABEL='Height of data' ;xn和yn分别是行、列的初始循环次数 xn = 0 yn = 0 ;计算循环次数,- 目的为了进度条正确显示 IF(dims[1]/tileSize[1] EQ 0 )AND(dims[0]/tileSize[0] EQ 0) THEN BEGIN TotalNum = 1 ENDIF ELSE IF(dims[1]/tileSize[1] EQ 0 ) THEN BEGIN TotalNum = FIX(dims[0]/tileSize[0])+1 ENDIF ELSE IF(dims[0]/tileSize[0] EQ 0 ) THEN BEGIN TotalNum = FIX(dims[1]/tileSize[1])+1 ENDIF ELSE TotalNum = (FIX(dims[1]/tileSize[1])+1)*(FIX(dims[0]/tileSize[0])+1) ; 更新下进度条 IDLITWDPROGRESSBAR_SETVALUE, process, 1 DoneNum = 0 UpRate = 99/TotalNum ;分别在水平和竖直方向循环 WHILE(yn LT FIX(dims[1]/tileSize[1])) DO BEGIN WHILE(xn LT FIX(dims[0]/tileSize[0])) DO BEGIN ;计算存储的数据块位置 loc = [tileSize[0]*xn,tileSize[1]*yn] ;提取数据相应位置数据 wtImg = image[loc[0]:(loc[0]+tilesize[0]-1),loc[1]:(loc[1]+tilesize[1]-1)] ;写入HDF文件中 HDF_SD_ADDDATA, sds_id, wtImg, $ START=loc, COUNT=tileSize xn++ ;更新进度条 DoneNum = DoneNum+1 IDLITWDPROGRESSBAR_SETVALUE, process, 1+UpRate*DoneNum ENDWHILE ; IF(dims[0] GT tileSize[0]*xn)THEN BEGIN ;计算存储的数据块位置 loc = [tileSize[0]*xn,tileSize[1]*yn] ;提取数据相应位置数据 wtImg = image[loc[0]:(dims[0]-1),loc[1]:(loc[1]+tilesize[1]-1)] ;写入HDF文件中,注意count的变化 HDF_SD_ADDDATA, sds_id, wtImg, $ START=loc, COUNT=SIZE(wtImg,/dimension) ENDIF ; xn = 0 yn++ ;更新进度条 DoneNum = DoneNum+1 IDLITWDPROGRESSBAR_SETVALUE, process, 1+UpRate*DoneNum ENDWHILE ; 最后一行不完整的部分 IF(dims[1] GT tileSize[1]*yn)THEN BEGIN xn = 0 WHILE(xn LT FIX(dims[0] /tileSize[0])) DO BEGIN ;计算存储的数据块位置 loc = [tileSize[0]*xn,tileSize[1]*yn] ;提取数据相应位置数据 wtImg = image[loc[0]:(dims[0]-1),loc[1]:(dims[1]-1)] ;写入HDF文件中 HDF_SD_ADDDATA, sds_id, wtImg, $ START=loc, COUNT=SIZE(wtImg,/dimension) xn++ ;更新进度条 DoneNum = DoneNum+1 IDLITWDPROGRESSBAR_SETVALUE, process, 1+UpRate*DoneNum ENDWHILE ENDIF ;关闭HDF HDF_SD_ENDACCESS,sds_id HDF_SD_END,sd_id IDLITWDPROGRESSBAR_SETVALUE, process, 100 ;销毁没用的 WAIT,0.3 WIDGET_CONTROL,process,/Destroy WIDGET_CONTROL, wtlb,/DESTROY END
压缩感知 _示意程序用DWT实现二维小波变换
压缩感知 Mallat algorithm for 2-D wavelet transform 此示意程序用DWT实现二维小波变换
基于压缩感知图像重建的matlab实现程序
Candes Romberg Tao 基于压缩感知图像重建的matlab实现程序 rice university dsp.rice.neu/cs
CVX工具箱,用于压缩感知
cvx是压缩感知工具箱,主要用于对系数信号的精确重构,希望对你们有用。
多个L1范数算法,学习压缩感知初步了解的东西
我学习压缩感知第一次调代码用的代码,有疑问可以交流讨论。对于新手很有帮助
基于压缩感知的图像重构
文件中包含多种压缩感知图像重构方法,CoSaMp,omp,sp等,能实现图像重构
基于分块可压缩传感的图像重建
基于分块可压缩传感的图像重建,里面包括contourlet、DWT、DDWT、DCT,图像压缩传感与重建。
压缩感知 莱斯大学的一些代码
莱斯大学关于压缩感知的一些代码,供大家参考
基于DWT的数字水印代码
基于DWT的数字水印代码,是MATLAB开发的,里面有素材,可以直接运行。
实现对图像的分块,压缩感知重构代码
实现对图像的分块,并进行基于压缩感知算法的恢复与重构。恩不错的资源 。
分块压缩感知图像重建
该算法通过对图像分块来进行压缩感知图像重建,提高了图像重建的质量和重建速度
输入捕获实验
定时器输入捕获① 初始化定时器和通道对应IO的时钟。 ② 初始化IO口,模式为输入:GPIO_Init(); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 输入 ③初始化定时器ARR,PSC TIM_TimeBaseInit(); ④初始化输入捕获通道 TIM_ICInit(); ⑤如果要开启捕获中断, TIM_ITConfig(); NVIC_Init(); ⑥使能定时器:TIM_Cmd&#40;&#41;; ⑦编写中断服务函数:TIMx_IRQHandler();
多任务压缩感知matlab程序
多任务压缩感知程序,实现多个测试数据的联合稀疏稀疏求解
一个求解器cvx的源代码
一个求解器的源代码,学习压缩感知的可能会用到
常用的块稀疏压缩感知恢复算法(BOMP)
常用的块稀疏压缩感知恢复算法,主要以omp算法为主,包括BOMP
七参数求解
利用C#程序编写求解七参数的代码,十分实用,求解精度高,七参数应用于将WGS-84坐标系坐标转化为北京54坐标系坐标,精度精确到小数点后两位。
Gauss-seidel求n^2阶三对角分块矩阵 MATLAB程序
大连理工大学 研究生 矩阵与数值分析大作业
matlab代码DFT与DCT变换
可以运行,有说明 有对图像DFT与DCT变换的对比与说明
dwt代码,不用matlab自带的dwt
通过低通滤波卷积等实现小波分解变换,不用matlab的自带函数。
压缩感知块稀疏BOMP算法
信号处理中压缩感知块稀疏BOMP算法的代码,之前找不到网上的源码,就只能照着论文自己试着写一下了。希望能对初学压缩感知的人有所帮助。
(分块感知微调字典)Joint Estimation of Dictionary and Image from Compressive Samples
最新的分块感知微调字典Joint Estimation of Dictionary and Image from Compressive Samples.pdf 图像压缩感知相关知识,全英文
基于分块压缩感知的图像重构方法研究
介绍了基于小波变换的分块压缩感知和基于边缘结构信息的改进匹配追踪重构两种图像重构方法
解决系统资源严重不足的问题的文章
仅供参考,我们在使用电脑时经常会遇到电脑提示系统资源严重不足的问题,这是我们可以通过以上方法解决这个犯人的问题
数字水印dwt
数字水印,基于dwt的代码
DWT及MATLAB实现
介绍小波变换的具体算法,及用MATLAB实现的方法
布尔莎七参数求解__C#源码
C#实现 布尔莎七参数求解 包括矩阵运算和参数求解
sqlplus常用命令参数
sqlplus 常用命令行参数,Oracle 中 sqlplus 初学者用的 常用命令行参数
DWT算法实现代码
基于小波变换 DWT 的数字水印算法实现代码
matlab解带参数方程组并对参数赋值
用matlab解带参数的方程组,并对参数进行赋值,对结果进行简化
二维小波变换DWT
对图像进行二维离散小波变换, 变换级数大于等于3级,然后进行阈值化处理(阈值约为10左右),再统计系数中0的个数(百分比表示)并进行重构, 最后计算重构图像的峰值信噪比(PSNR). 中科大倪林老师的第一次作业。
压缩感知-单像素相机-RICE大学的源代码
压缩感知-单像素相机-RICE大学的源代码
大地测量中国地质大学七参数求解
大地测量程序必备,本程序使用了C#编写,操作简单,便于实现,如果有也在学习大地测量学的同学可以进行下载参考学习。
压缩感知算法
压缩感知去算法代码并由参数评估算法,实物图和效果图
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java课程设计不足 数据库课程设计的不足