matlab图像小波变换-初步1

来源:互联网 发布:学游戏美工要多少钱 编辑:程序博客网 时间:2024/05/17 20:36

正做图像处理相关的工作,学习图像处理相关理论知识,动手实践一下就遇到问题了

%.m file

X = imread('src.bmp');

figure(1);
imshow(X);title('原始图像');

[cA,cH,cV,cD] = dwt2(X,'db1');

figure(2);

subplot(2,2,1),imshow(cA,),title('cA');

subplot(2,2,2),imshow(cH,),title('cH');

subplot(2,2,3),imshow(cV,),title('cV');

subplot(2,2,4),imshow(cD,),title('cD');

X1 = idwt2(cA,cH,cV,cD,'db1');
figure(3);
imshow(X1,[]);title('重构图像');

 

 

对图像进行单层二维离散小波变换dwt2后,显示变换后图像的低频分量cA,水平分量cH,竖直方向分量cV和对角线方向分量cD。

ch、cV、cD感觉还有点那个意思,但是低频分量cA全白,查看workspace中的数据发现cA的最小值为34.5,最大值为227.5,都没有超过255,为什么会显示全白呢?

查看matlab菜单help->product help发现imshow函数可以显示多种数据格式,它有一个显示范围,小于最小值显示black,大于最大值显示white;若为uint8型默认显示范围为0-255,若为double型则默认显示范围为0.0-1.0之间的数,现在可以解释为什么cA部分图像为全白了。

解决方式:1将小波变换结果转换成uint8类型,2指定imshow显示范围

修改后即可正常显示变换结果了

subplot(2,2,1),imshow(cA,[]),title('低频分量cA');
subplot(2,2,2),imshow(cH,[]),title('水平方向分量cH');
subplot(2,2,3),imshow(cV,[]),title('竖直方向分量cV');
subplot(2,2,4),imshow(cD,[]),title('对角方向分量cD');

 

 

 

 

原创粉丝点击