在用matlab做图片的分解与重构,代码运行结果出不来,求大神指教(下附代码和结果) 5C

分解的代码:

X=imread('photo.bmp');
nbcol=size(X,1);
[cA1,cH1,cV1,cD1]=dwt2(X,'db1');
cod_X=wcodemat(X,nbcol);
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
dec2d=[cod_cA1,cod_cH1;cod_cV1,cod_cD1];
subplot(1,2,1); imshow(X,[]);
subplot(1,2,2); imshow(dec2d,[]);


结果:
图片说明

重构代码:
X=imread('photo.bmp');
sX=size(X);
[cA1,cH1,cV1,cD1]=dwt2(X,'db4');
A0=idwt2(cA1,cH1,cV1,cD1,'db4',sX);
subplot(1,2,1); imshow(X,[]);
title('Original Image');
subplot(1,2,2); imshow(A0,[]);
title('Image using idwt2');


结果:
图片说明

求大神纠正,谢谢

2个回答

happy_back
happy_back 谢谢你,这个链接之前我也看到过,我想知道自己的代码为什么运行不出来
2 年多之前 回复

楼主其实已经完成了小波重构,没显示出来只是因为数据格式不对。
A0=idwt2(cA1,cH1,cV1,cD1,'db4',sX);这步的结果里,A0是double型矩阵,应该转为uint8型就能正确显示了。
改成:
X=imread('photo.bmp');
sX=size(X);
[cA1,cH1,cV1,cD1]=dwt2(X,'db4');
A0=idwt2(cA1,cH1,cV1,cD1,'db4',sX);
A1=uint8(A0);
subplot(1,2,1); imshow(X,[]);
title('Original Image');
subplot(1,2,2); imshow(A1,[]);
title('Image using idwt2');

happy_back
happy_back 谢谢你,后来查阅资料发现分解前待处理图像要是灰度图,加一句代码'X=rgb2gray(X);'就ok 了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐