我是靠谱客的博主 爱听歌龙猫,最近开发中收集的这篇文章主要介绍图像的小波变换处理(二)Matlab处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

小波Wvlt(Wavelet),“小波”就是小区域、长度有限、均值为0的波形。
所谓“小”是指它具有减衰性;而称之为“波”是它则是指它的动波动性,其振幅正负相间的震荡形式。

近似值:是缩放因子计算的系数,表示信号的低频分量

细节值:是缩放因子计算的系数,表示信号的高频分量

小波变换:可以表示成由低通滤波器和高通滤波器组成的一棵树。原始信号经过一对互补的滤波器组进行的分解称为一级分解,可以进行多级分解。

 

小波重构:利用信号的小波分解的系数还原出原始信号(IDWT离散小波逆变换)。为分分解的逆过程,先进行增采样,及在每两个数之间插入一个0,与共轭滤波器卷积,最后对卷求结果。

二维离散小波变换:是一维离散小波变换的推广,是将二维信号在不同尺度上的分解,得到原始信号的近似值细节值。由于信号是二维的,因此分解也是二维的。分解的结果为:近似分量、水平细节分量、垂直细节分量和对角细节分量。

Matlab图像处理——dwt2()二维离散小波变换图像单层小波分解

%利用函数dwt2()实现图像单层小波分解及显示
close all;   %关闭当前所有图形窗口
clear all;    %清楚工作空间变量
clc;            %清除命令行数据
X=imread('girl.bmp');   %读取图像  
X=rgb2gray(X);             %转换为灰度图像
[ca1,chd1,cvd1,cdd1] = dwt2(X,'bior3.7');   %进行单层小波分解
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])  
figure         %显示小波变换各个分量                   
subplot(141); 
imshow(uint8(ca1)); %近似系数分量
title('近似分量')
subplot(1,4,2); 
imshow(chd1);   %细节系数的水平分量
title('细节水平分量')
subplot(1,4,3);   
imshow(cvd1);   %细节系数的垂直分量
title('细节垂直分量')
subplot(1,4,4); 
imshow(cdd1);    %细节系数的对角分量
title('细节对角分量')                  
figure
subplot(121),imshow(X);        %显示原图  
title('原图')
subplot(122),imshow([ca1,chd1;cvd1,cdd1]); %显示小波变换分量组合图像
title('小波变换分量组合图像')

 

Matlab图像处理——dwt2()实现图像的重构

%利用函数idwt2()实现图像的重构及显示
close all;   %关闭当前所有图形窗口
clear all;    %清楚工作空间变量
clc;            %清除命令行数据
load woman;  %读取待处理的图像数据                       
nbcol = size(map,1);       %获取颜色映射的列数         
[cA1,cH1,cV1,cD1] = dwt2(X,'db1');   %对图像数据x利用db1小波,进行单层图像分割
sX = size(X);                                      %读取原图像大小
A0 = idwt2(cA1,cH1,cV1,cD1,'db4',sX);   %用小波分解第一层系数进行重构
set(0,'defaultFigurePosition',[100,100,1000,500]);  %修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])       %修改图形背景颜色设置
subplot(131),imshow(uint8(X));      %显示原图像
title('原图像')    
subplot(132),imshow(uint8(A0));    %显示重构后的图像
title('重构图像')
subplot(133),imshow(uint8(X-A0));  %显示差异图像
title('差异图像')

 

 Matlab图像处理——利用函数upcoef2()实现图像多层小波重构及显示

%利用函数upcoef2()实现图像多层小波重构及显示
close all;   %关闭当前所有图形窗口
clear all;    %清楚工作空间变量
clc;            %清除命令行数据
X=imread('flower.tif'); %读取图像        
X=rgb2gray(X);           %转换为灰度图像
[c,s] = wavedec2(X,2,'db4');    %对图像进行小波2层分解
siz = s(size(s,1),:);             %提取第2层小波分解系数矩阵大小
ca2 = appcoef2(c,s,'db4',2);    %提取第1层小波分解的近似系数
chd2 = detcoef2('h',c,s,2);     %提取第1层小波分解的细节系数水平分量
cvd2 = detcoef2('v',c,s,2);       %提取第1层小波分解的细节系数垂直分量
cdd2 = detcoef2('d',c,s,2);    %提取第1层小波分解的细节系数对角分量
a2 = upcoef2('a',ca2,'db4',2,siz);  %提取第1层小波分解的细节系数水平分量
hd2 = upcoef2('h',chd2,'db4',2,siz); %利用函数upcoef2()实现图像多层小波重构
vd2 = upcoef2('v',cvd2,'db4',2,siz);
dd2 = upcoef2('d',cdd2,'db4',2,siz);
A1=a2+hd2+vd2+dd2;           %重构近似图像
[ca1,ch1,cv1,cd1] = dwt2(X,'db4');    %对图像进行小波单层图像分解
a1 = upcoef2('a',ca1,'db4',1,siz);   %利用函数upcoef2()提取1层小波分解系数进行重构
hd1 = upcoef2('h',cd1,'db4',1,siz);  
vd1 = upcoef2('v',cv1,'db4',1,siz);
dd1 = upcoef2('d',cd1,'db4',1,siz);
A0=a1+hd1+vd1+dd1;           %重构近似图像
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像的默认设置
set(0,'defaultFigureColor',[1 1 1])    %修改图形背景颜色的设置
figure                                           %显示2层分解重构后的分量
subplot(141),imshow(uint8(a2));
title('2层分解重构后的近似分量')
subplot(142),imshow(hd2);
title('2层分解重构后的细节水平分量')
subplot(143),imshow(vd2);
title('2层分解重构后的细节垂直分量')
subplot(143),imshow(dd2);
title('2层分解重构后的细节对角分量')
figure                                           %显示单层分解重构后的分量
subplot(141),imshow(uint8(a1));
title('单层分解重构后的近似分量')
subplot(142),imshow(hd1);
title('单层分解重构后的细节水平分量')
subplot(143),imshow(vd1);
title('单层分解重构后的细节垂直分量')
subplot(143),imshow(dd1);
title('单层分解重构后的细节对角分量')
figure                                          
subplot(131),imshow(X);   %显示原图像
title('原图像')
subplot(132),imshow(uint8(A1));      %显示2层分解重构后的分量
title('2层分解重构后的近似图像')
subplot(133),imshow(uint8(A0));      %显示单层分解重构后的分量
title('单层分解重构后的近似图像')

 

 

 

 

Matlab图像处理——基于小波分解和小波阈值去噪实现图像去噪

%基于小波分解和小波阈值去噪实现图像去噪
close all;   %关闭当前所有图形窗口
clear all;    %清楚工作空间变量
clc;            %清除命令行数据
load gatlin2;  %装载并显示原始图像
init=2055615866;
randn('seed',init)  %随机值
XX=X+2*randn(size(X));  %添加随机噪声
[c,l]=wavedec2(XX,2,'sym4'); %对图像进行清噪处理,用sym4小波函数对x进行两层分解
a2=wrcoef2('a',c,l,'sym4',2);  %重构第二层图像的近似系数
n=[1,2];                              %设置尺度向量
p=[10.28,24.08];                  %设置阈值向量
nc=wthcoef2('t',c,l,n,p,'s');   %对高频小波系数进行阈值处理
mc=wthcoef2('t',nc,l,n,p,'s');  %再次对高频小波系数进行阈值处理
X2=waverec2(mc,l,'sym4');   %图像的二维小波重构
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像的默认设置
set(0,'defaultFigureColor',[1 1 1])    %修改图形背景颜色的设置     
figure
colormap(map)
subplot(131),image(XX),axis square;   %显示含噪声的图像
title('含噪声的图像')
subplot(132),image(a2),axis square;     %显示小波分解去噪后的图像  
title('小波分解去噪后的图像')
subplot(133),image(X2),axis square;     %小波阈值去噪后的图像 
title('小波阈值去噪后的图像')
ps=sum(sum((X-mean(mean(X))).^2));  %计算信噪比
pn=sum(sum((a2-X).^2));
disp('利用小波二层分解去噪的信噪比')
snr1=10*log10(ps/pn)
disp('利用小波阈值去噪的信噪比')
pn1=sum(sum((X2-X).^2));   
snr2=10*log10(ps/pn1) 

 

最后

以上就是爱听歌龙猫为你收集整理的图像的小波变换处理(二)Matlab处理的全部内容,希望文章能够帮你解决图像的小波变换处理(二)Matlab处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部