Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中显示小波变换函数dwt2结果_Matlab_Haar Wavelet_Dwt_Wavelet Transform - Fatal编程技术网

如何在matlab中显示小波变换函数dwt2结果

如何在matlab中显示小波变换函数dwt2结果,matlab,haar-wavelet,dwt,wavelet-transform,Matlab,Haar Wavelet,Dwt,Wavelet Transform,我在一幅图像上应用dwt2函数来应用小波变换,它给出了四幅结果图像cA(低通图像)、cH(水平细节图像)、cV(垂直细节图像)、cD(对角细节图像)。直到现在,每一天都过得很好。我想将这些结果图像可视化 现在,我正在使用下面的代码可视化这四个结果图像 image = imread(imagePath); wavename = 'haar'; [cA,cH,cV,cD] = dwt2(im2double(iamge),wavename); imshow([cA,cH; cV,cD],'Colorm

我在一幅图像上应用dwt2函数来应用小波变换,它给出了四幅结果图像cA(低通图像)、cH(水平细节图像)、cV(垂直细节图像)、cD(对角细节图像)。直到现在,每一天都过得很好。我想将这些结果图像可视化

现在,我正在使用下面的代码可视化这四个结果图像

image = imread(imagePath);
wavename = 'haar';
[cA,cH,cV,cD] = dwt2(im2double(iamge),wavename);
imshow([cA,cH; cV,cD],'Colormap',gray);
当我运行此代码时,可视化结果如下所示

但是我想我的结果应该是这样的,任何人都可以帮我


在问题的第二幅图像中,将显示两级小波变换。使用您的代码示例,您只需要执行一个级别的分解。 要进行两级分解,可以使用函数
N=2
。要创建如图所示的绘图,您必须仔细查看wavedec2的返回值:

(图片由Mathworks提供,摘自[])

向量
C
包含以列方式存储的所有近似系数
S
是所谓的“簿记”矩阵,因为它包含有关数据存储方式的信息

现在,上例中的第一幅图像,
cA2
C
的前32*32个条目。使用
ii
jj
作为索引变量,我们可以得到
C
的相关部分,并使用
重塑
返回图像格式:

ii = 1; jj = prod(S(1,:));
cA2 = reshape(C(ii:jj),S(1,:));
类似地获得了其他二级系数:

ii = jj+1; jj = ii + prod(S(2,:)) - 1;
cH2 = reshape(C(ii:jj),S(2,:));

ii = jj+1; jj = ii + prod(S(2,:)) - 1;
cV2 = reshape(C(ii:jj),S(2,:));

ii = jj+1; jj = ii + prod(S(2,:)) - 1;
cD2 = reshape(C(ii:jj),S(2,:));
也可以使用第三行
S
,以相同的方式获得第一级系数:

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cH1 = reshape(C(ii:jj),S(3,:));

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cV1 = reshape(C(ii:jj),S(3,:));

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cD1 = reshape(C(ii:jj),S(3,:));
% Small rectangles
rectangle('Position',[0,0,S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(1,1),0,S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[0,S(1,2),S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(1,1),S(1,2),S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');

% Large rectangles
rectangle('Position',[0,S(3,2),S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(3,1),0,S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(3,1),S(3,2),S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');
现在,只需根据需要排列图像即可创建绘图:

imshow([[cA2,cH2; cV2,cD2],cH1;cV1,cD1],'Colormap',pink)
要添加边框,可以使用函数和
S
中的信息:

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cH1 = reshape(C(ii:jj),S(3,:));

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cV1 = reshape(C(ii:jj),S(3,:));

ii = jj+1; jj = ii + prod(S(3,:)) - 1;
cD1 = reshape(C(ii:jj),S(3,:));
% Small rectangles
rectangle('Position',[0,0,S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(1,1),0,S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[0,S(1,2),S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(1,1),S(1,2),S(1,1),S(1,2)],'LineWidth',2,'EdgeColor','y');

% Large rectangles
rectangle('Position',[0,S(3,2),S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(3,1),0,S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');
rectangle('Position',[S(3,1),S(3,2),S(3,1),S(3,2)],'LineWidth',2,'EdgeColor','y');

一种更简单的方法是将结果连接为矩阵,然后填充后续矩阵:

image = imread(imagePath);
wavename = 'haar';
[cA,cH,cV,cD] = dwt2(im2double(image),wavename);
[cAA,cAH,cAV,cAD] = dwt2(cA,wavename); % Recompute Wavelet of Approximation Coefs.
Level2=[cAA,cAH; cAV,cAD]; %contacinat
imshow([Level2,cH; cV,cD],'Colormap',gray);
“cameraman.tif”图像的结果为:


对于更多级别,只需计算第二级别近似系数的小波。换句话说,取多个小波,即重新计算当前小波结果的近似系数的小波,得到下一级小波。

感谢它的工作,但有一件事是如何为每个图像添加边界。完美。最简单的方法是使用
矩形('Position',[x,y,w,h])
添加每个边框。你也可以使用
S
的内容来计算每个矩形的
x,y,w,h
。我是matlab新手。你能告诉我如何使用S来计算x,y,w,h吗?我编辑了答案以包括边框。行吗?谢谢,行了。非常感谢您的解决方案。