✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
基于小波变换的图像分解和重建是一种常用的,其中峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)常被用来评估重建图像与原始图像之间的质差异。以下是一种基本的基于小波变换的图像解和重建步骤,以及如何使用PSNR进行质量对比的方法:
- 选择合适的小波函数和分解层数。常见的小波函数包括haar、db1(Daubechies-1)、db2等,分解层数定义了图像分解的级别。
- 将原始图像应用小波变换,得到图像小波系数。这可以通过将图像分解为不同尺度和方向上的频带来实现。
- 根据需求,对小波系数进行处理,例如对低频系数进行细节清晰化、对高频系数进行压缩等。
- 使用处理后的小波系数进行图像重建,将系数应用逆小波变换。
- 计算重建图像与原始图像之间的PSNR,以衡量两者之间的图像质量差异。PSNR的计算公式为:PSNR = 10 * log10(MAX^2 / MSE),其中MAX是像素最值(通常为255),MSE是均方误差,用于衡量两幅图像之间的差异。
- 对比不同参数、不同小波函数或不同分解层数对重建图像质量的影响,通过PSNR值的变化来评估重建结果的好坏。
⛄ 部分代码
clear all;
X=imread('1.bmp','bmp');
subplot(321);imshow(X);
title('原始图像');
%三级小波分解及显示
[c,s]=wavedec2(X,3,'db2');
ca3=appcoef2(c,s,'db2',3);
ch3=detcoef2('h',c,s,3);
cv3=detcoef2('v',c,s,3);
cd3=detcoef2('d',c,s,3);
ch2=detcoef2('h',c,s,2);
cv2=detcoef2('v',c,s,2);
cd2=detcoef2('d',c,s,2);
ch1=detcoef2('h',c,s,1);
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);
A2=[ca3*4,ch3*4;cv3*4,cd3*4]
%显示分解结果
k=s(2,1)*2-s(3,1)
ch2=padarray(ch2,[k k],1,'post');
cv2=padarray(cv2,[k k],1,'post');
cd2=padarray(cd2,[k k],1,'post');
A1=[A2,ch2*4;cv2*4,cd2*4];
k=s(2,1)*4-s(4,1)
ch1=padarray(ch1,[k k],1,'post');
cv1=padarray(cv1,[k k],1,'post');
cd1=padarray(cd1,[k k],1,'post');
A=[A1,ch1*4;cv1*4,cd1*4]
min=min(A(:));
max=max(A(:));
subplot(322);imshow(A,[min max]);
title('小波变换的三级分解图');
%尺度为1的低频分量重构
[c s]=wavedec2(X,3,'db2');
siz1=s(size(s,1),:);
ca1=appcoef2(c,s,'db2',1);
a1=upcoef2('a',ca1,'db2',1,siz1);
nbc1=size(X,1);
subplot(323);
RL1=wcodemat(a1,nbc1)
image(RL1);
title('LL1小波系数重构图')
%尺度为2的低频分量重构
[c s]=wavedec2(X,3,'db2');
siz2=s(size(s,2),:);
ca2=appcoef2(c,s,'db2',2);
a2=upcoef2('a',ca2,'db2',2,siz2);
nbc2=size(X,2);
subplot(324);
RL2=wcodemat(a2,nbc2)
image(RL2);
title('LL2小波系数重构图')
%尺度为3的低频分量重构
[c s]=wavedec2(X,3,'db2');
siz3=s(size(s,3),:);
ca3=appcoef2(c,s,'db2',3);
a3=upcoef2('a',ca3,'db2',3,siz3);
nbc3=size(X,3);
subplot(325);
RL3=wcodemat(a3,nbc3)
image(RL3);
title('LL3小波系数重构图')
% %LL1重构图像与原始图像峰值信噪比
PSNR1=psnr(X,RL1);
PSNR1=PSNR1
% %LL2重构图像与原始图像峰值信噪比
PSNR2=psnr(X,RL2);
PSNR2=PSNR2
% %LL3重构图像与原始图像峰值信噪比
PSNR3=psnr(X,RL3);
PSNR3=PSNR3
%
% %LL1重构图像与原始图像峰值信噪比
% [m,n]=size(RL1);
% mse=0;
% for i=1:m
% for j=1:n
% a=(X(i,j)-RL1(i,j))^2;
% b=im2double(a);
% mse=mse+b;
% end
% end
% mse=mse/(256*256);
% PSNR1=10*log10((255*255)/mse)
% %LL2重构图像与原始图像峰值信噪比
% [m,n]=size(RL2);
% mse=0;
% for i=1:m
% for j=1:n
% a=(X(i,j)-RL2(i,j))^2;
% b=im2double(a);
% mse=mse+b;
% end
% end
% mse=mse/(256*256);
% PSNR2=10*log10((255*255)/mse)
% %LL3重构图像与原始图像峰值信噪比
% [m,n]=size(RL3);
% mse=0;
% for i=1:m
% for j=1:n
% a=(X(i,j)-RL3(i,j))^2;
% b=im2double(a);
% mse=mse+b;
% end
% end
% mse=mse/(256*256);
% PSNR3=10*log10((255*255)/mse)
⛄ 运行结果
⛄ 参考文献
[1] 王翰林,周宇轩,王伟.基于curvelet变换快速迭代收缩阈值算法的压缩采样磁共振图像重建[J].北京生物医学工程, 2018.
[2] 叶双清,杨晓梅.基于小波变换和非局部平均的超分辨率图像重建[J].计算机应用, 2014, 34(4):5.DOI:10.11772/j.issn.1001-9081.2014.04.1182.
[3] 杨莹,牟轩沁,罗涛,等.基于小波变换的X射线图像超动态范围重建[C]//全国省.中国图象图形学会;中国体视学会;兰州交通大学, 2008.DOI:10.1360/972009-1549.