MATLAB数字图像处理练习三

一,题目

一、小波分解与重构
对一幅图进行小波分解与小波重构,并计算重构误差。
MATLAB图像处理工具箱中提供了wavedec2函数和waverec2函数来进行多层二维离散小波分解与重构。

二、提取小波系数
先对一幅图进行小波分解;然后采用appcoef2函数提取第1层和第2层近似系数,并用图像显示;最后采detcoef2函数提取第1层和第2层水平、垂直和对角系数,并用图像显示。

三、小波去噪
对一幅图像添加噪声,然后利用小波变换对其去噪。
原理:噪声对应的是高频信息。将带噪图像进行小波变换,然后去除掉变换域系数较小的高频信息,最后进行小波重构得到去噪后的图像。

四、基于小波的图像融合
将如下人脸图像(图1)和面具图像(图2)分别进行小波分解,将分解后的低频分量和高频分量分别叠加,然后利用叠加后的高频分量和低频分量进行重构,从而完成人脸图像和面具图像的图像融合。

二,解答

可参考:https://blog.csdn.net/Chaolei3/article/details/80940459

问题一

clc
clear
load woman%加载matlab中自带的图片
subplot(121);imshow(uint8(X))
[c,s]=wavedec2(X,2,'sym4');%二层离散小波分解,小波基为sym4
a0=waverec2(c,s,'sym4');%小波重构
subplot(122);imshow(uint8(a0))
err=max(max(X-a0));%计算重构误差

MATLAB数字图像处理练习三_第1张图片

问题二

clc
clear
load woman
figure(1)
subplot(131);imshow(uint8(X))
[c,s]=wavedec2(X,2,'db1');%小波基为db1
a1=appcoef2(c,s,'db1',1);%提取第一层小波分解中形成的近似图像,即第一层低频分量
a2=appcoef2(c,s,'db1',2);%提取第二层小波分解中形成的近似图像,即第二层低频分量
subplot(132);imshow(uint8(a1))
subplot(133);imshow(uint8(a2))

MATLAB数字图像处理练习三_第2张图片

[h,v,d]=detcoef2('all',c,s,1);%对二维离散小波变换第一层的高频部分系数进行提取。’h’ –水平高频 or ‘v’ – 垂直高频 or ‘d’ – 对角高频;
figure(2)
subplot(131);imshow(h)
subplot(132);imshow(v)
subplot(133);imshow(d)

MATLAB数字图像处理练习三_第3张图片

[h,v,d]=detcoef2('all',c,s,2);%第二层
figure(3)
subplot(131);imshow(h)
subplot(132);imshow(v)
subplot(133);imshow(d)

MATLAB数字图像处理练习三_第4张图片

问题三

clc
clear
load woman
X=uint8(X);
subplot(131);imshow(X);title('原始图片')
X1=imnoise(X,'salt & pepper',0.05);
subplot(132);imshow(X1);title('加噪后的图片')
[c,s]=wavedec2(X1,2,'db1');
c(c<200)=0;%系数小的为高频信息,噪声为高频信息,去掉高频信息即去掉噪声
X2=waverec2(c,s,'db1');
subplot(133);imshow(X2/255);title('去噪后的图片')

MATLAB数字图像处理练习三_第5张图片

问题四

clc
clear
load bust
x1=uint8(X);
load mask
x2=uint8(X);
figure(1)
subplot(131);imshow(x1,map);title('人脸')%显示带有颜色图 map 的索引图像 X
subplot(132);imshow(x2,map);title('面具')
[c1,s1]=wavedec2(x1,2,'db1');
[c2,s2]=wavedec2(x2,2,'db1');
c=(c1+c2)/2;%融合即相加除以二
s=(s1+s2)/2;
x3=waverec2(c,s,'db1');
subplot(133);imshow(x3,map);title('融合后')

MATLAB数字图像处理练习三_第6张图片

你可能感兴趣的:(数字图像处理练习,matlab,图像处理,开发语言,计算机视觉)