求高手指教!!!压缩感知重构算法GPSR,分块实现,无法重建。

光脚丫丫 光脚丫丫 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
程序如下:
clc
clear
totalframes = seq_frames('foreman_cif.yuv',[352 288],'YUV420_8');

frame1stimage = save_yuvframe('foreman_cif.yuv',[352 288],1,'foreman_1stframe.jpg'); %提取第一帧,保存图片的格式可以为.jpg .bmp .png
%saveY(;,;,frame) = save_eframes( 'foreman_cif.yuv',[352 288],totalframes)



% 读文件
t0=cputime;
%im=uint8(im);
%seg = frame_block(im,8,1); %可改变,块大小8*8
X=imread('foreman_1stframe.jpg');
if ndims(X)>2
X=rgb2gray(X); %转化成灰度图像
end
X=imresize(X,[256 256]); %大小调整为256*256
X=double(X);
[a,b]=size(X);
%size_block=8*8;
n=8*8;
X2=zeros(n);
X3=zeros(a,b); % 恢复矩阵

% 小波变换矩阵生成
ww=DWT(n);
% 随机矩阵生成
M=48;
%M=4;
R=randn(M,n);

R = orth(R')';

hR = @(x1) (R)*x1; %定义转置操作
hRt = @(x1) (R)'*x1;


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


% GPSR 算法
%for i=1:n % 列循环

% regularization parameter
tau =0.01*max(abs(R'*y)); %tau[0.01-0.02] 与X同维数大小
debias = 0;
stopCri = 3;
tolA = 0.01; %默认参数值的设置,调用函数式用
[x_BB_notmono,x_debias_BB_notmono,obj_BB_notmono,...
times_BB_notmono,debias_start_BB_notmono,mse]= ...
GPSR_BB(y,hR,tau,...
'Debias',debias,...
'AT',hRt,...
'Monotone',0,...
'Initialization',0,...
'StopCriterion',stopCri,...
'ToleranceA',tolA,...
'ToleranceD',0.0001);
t_BB_notmono = times_BB_notmono(end);
X2(:,i_y)=x_BB_notmono;
% end

X3((i_x-1)*n+1:i_x*n,(i_y-1)*n+1:i_y*n)=ww'*sparse(X2)*ww; % 小波反变换
end

end
X3=full(X3);
%use_time=toc
%errorx=sum(sum(abs(X3-X).^2)); % MSE误差
%psnr(I)=10*log10(255*255/(errorx/a/b)) % PSNR
%save GPSR_50_0.5_PSNR.mat psnr time;
%psnr=s+psnr(I);
t1=cputime-t0
errorx=sum(sum(abs(X3-X).^2)) % MSE误差
psnr=10*log10(255*255/(errorx/a/b)) % PSNR


%load GPSR_50_0.5_PSNR.mat

%figure(1)
%plot(time,psnr)
%title('抽样比例为0.5的psnr')
%grid on
%xlabel('times')
%ylabel('psnr')

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

能跑通但是出来的图形,不是重建图形。
如下:
原图
重构出来的

想不通错哪里了??

















...全文

相关推荐

压缩感知重建算法——GPSR算法

总结来说,GPSR算法是压缩感知领域的一种高效重构方法,具有快速和准确的特点,尤其在处理块稀疏信号时表现突出。

yangxiuping123

MATLAB实现GPSR算法与压缩感知技术应用指南

稀疏信号是指在一个线性空间中,大部分元素都为零或者接近零,只有少数元素是非零的信号。在数学上,这可以通过稀疏向量来表示,即向量中的绝大多数元素值为零或者可以忽略不计的值。稀疏信号的这种特性使得它们在信号处理中占据了重要的地位,因为稀疏信号能够被压缩感知(Compressed Sensing, CS)理论所利用,从而实现高效的信号采样和重建。在应用层面上,稀疏信号广泛存在于自然界和工程领域。例如,在图像处理中,可以认为一幅图像在变换域(如离散余弦变换DCT域或小波变换域)是稀疏的;

狗雄

压缩感知重构算法实战详解

梯度投影稀疏重建(GPSR)是一类高效的L1正则化求解器,特别适用于大规模问题。其核心思想是将L1项转化为边界约束,通过梯度投影在非负象限上求解。

多行不易

压缩感知算法与梯度投影实现案例分析

SBHE (Sparsity-Based Highly Efficient) 矩阵是一类在压缩感知领域中具有高效性能的矩阵设计。它结合了稀疏性与高效性的双重特征,能够在信号采样与恢复过程中,实现较高的压缩比和较好的重建精度。SBHE矩阵的设计通常基于特定的稀疏性约束和高效采样策略,使得它们在处理稀疏信号时表现出独特的性能优势。在定义上,SBHE矩阵通常是由随机生成的稀疏向量组成的,这意味着矩阵中的大部分元素都是零,而其余元素非零。这种稀疏结构有助于减少存储需求,并且能够提供更高的计算效率。

马屿人

压缩感知之GPSR算法

总的来说,这个压缩包提供的GPSR算法及其相关文件,不仅涵盖了压缩感知的基本理论,还提供了具体的MATLAB实现,是学习和研究压缩感知及其应用的好资源。

gakki_Yuibo
评论 3
收藏 已收藏
分享
返回顶部
光脚丫丫
机器视觉 4,514 成员 15,347 内容