您的位置:首页 > 编程语言 > MATLAB

matlab图像小波变换-初步1

2012-09-18 15:50 253 查看
正做图像处理相关的工作,学习图像处理相关理论知识,动手实践一下就遇到问题了

%.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');



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: