matlab图像小波变换-初步1

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

%.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('重构图像');

 

 

matlab图像小波变换-初步1_第1张图片

对图像进行单层二维离散小波变换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部分图像为全白了。

matlab图像小波变换-初步1_第2张图片

解决方式: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');

 

matlab图像小波变换-初步1_第3张图片

 

 matlab图像小波变换-初步1_第4张图片

 

你可能感兴趣的:(工作,matlab,图像处理)