happy_back
happy_back
采纳率0%
2017-12-24 03:23

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

5
  • matlab

分解的代码:

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条回答

  • miaotk 渺天客 4年前

    楼主其实已经完成了小波重构,没显示出来只是因为数据格式不对。
    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');

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前