Matlab 基于小波变换的图像分解

Matlab 基于小波变换的图像分解,matlab,wavelet,Matlab,Wavelet,我使用下面的代码对图像进行小波分解。但是我希望详细的系数('h','v'和'd')是一个文件,而不是3个不同的图像 X=imread('snow.tif'); close all clf image(X) colormap('default') axis ('image'); set(gca,'XTick',[],'YTick',[]); title('Original') pause dwtmode('sym') wname = 'bior4.4' t = wtree(X,2,'bior4

我使用下面的代码对图像进行小波分解。但是我希望详细的系数('h','v'和'd')是一个文件,而不是3个不同的图像

X=imread('snow.tif');
close all
clf
image(X)
colormap('default')
axis ('image'); set(gca,'XTick',[],'YTick',[]); title('Original')
pause

dwtmode('sym')
wname = 'bior4.4'

t = wtree(X,2,'bior4.4');
plot(t)
pause
close(2)

[wc,s] = wavedec2(X,5,wname);

a1 = appcoef2(wc,s,wname,1);         
h1 = detcoef2('h',wc,s,1);           
v1 = detcoef2('v',wc,s,1);           
d1 = detcoef2('d',wc,s,1);           

a2 = appcoef2(wc,s,wname,2);
h2 = detcoef2('h',wc,s,2);
v2 = detcoef2('v',wc,s,2);
d2 = detcoef2('d',wc,s,2);

“一个文件”是什么意思?您要水平堆放还是垂直堆放?作为不同的通道(如RGB?)。请澄清。无论是水平还是垂直,都可以。一个文件意味着要存储在一起的变量。在这种情况下,你可以把这些组件做成一个三维矩阵。尝试这样做:
matrix1=cat(3,h1,v1,d1);matrix2=cat(3,h2,v2,d2)这样,每个分解都是一个3D矩阵。
h
组件是第一个通道,
v
组件是第二个通道,
d
组件是第三个通道。