2019-10-13 21:00:10 weixin_44225182 阅读数 219

小波变换实现图像压缩

代码

X=imread('a5.jpg');
X=rgb2gray(X);
subplot(221); imshow(X);
title('原始图像');
%对图像用小波进行层小波分解
[c,s]=wavedec2(X,2,'haar');
%提取小波分解结构中的一层的低频系数和高频系数
cal=appcoef2(c,s,'haar',1);
ch1=detcoef2('h',c,s,1);      %水平方向
cv1=detcoef2('v',c,s,1);      %垂直方向
cd1=detcoef2('d',c,s,1);      %斜线方向
%各频率成份重构
a1=wrcoef2('a',c,s,'haar',1);
h1=wrcoef2('h',c,s,'haar',1);
v1=wrcoef2('v',c,s,'haar',1);
d1=wrcoef2('d',c,s,'haar',1);
c1=[a1,h1;v1,d1];
subplot(222),imshow(c1,[]);
title ('分解后低频和高频信息');
%进行图像压缩
%保留小波分解第一层低频信息
%首先对第一层信息进行量化编码
ca1=appcoef2(c,s,'haar',1);
ca1=wcodemat(ca1,440,'mat',0);
%改变图像高度并显示
ca1=0.5*ca1;
subplot(223);imshow(cal,[]);
title('第一次压缩图像');
%保留小波分解第二层低频信息进行压缩
ca2=appcoef2(c,s,'haar',2);
%首先对第二层信息进行量化编码
ca2=wcodemat(ca2,440,'mat',0);
%改变图像高度并显示
ca2=0.25*ca2;
subplot(224);imshow(ca2,[]);
title('第二次压缩图像');  

结果
在这里插入图片描述
在这里插入图片描述

2019-08-29 14:35:50 lhw19931201 阅读数 1036

小波变换是多尺度多分辨率的分解方式,可以将噪声和信号在不同尺度上分开。

小波图像去噪处理

clear;                   
[A,map]=imread('lenna.jpg');                
X=rgb2gray(A);  
%画出原始图像  
subplot(2,2,1);imshow(X);
title('原始图像');  
%产生含噪图像  
x=imnoise(X ,'gaussian',0,0.003);
%画出含噪图像  
subplot(2,2,2);imshow(x);  
title('含噪声图像');  
%下面进行图像的去噪处理  
%用小波函数sym4对x进行2层小波分解  
[c,s]=wavedec2(x,2,'sym4');  
%提取小波分解中第一层的低频图像,即实现了低通滤波去噪  
a1=wrcoef2('a',c,s,'sym4');  % a1为 double 型数据;
%画出去噪后的图像  
subplot(2,2,3); imshow(uint8(a1)); % 注意 imshow()和image()显示图像有区别,imshow()不能显示 double 型数据,必须进行转换 uint8(a1);
title('第一次去噪图像');           % 并且image() 显示图像有坐标;
%提取小波分解中第二层的低频图像,即实现了低通滤波去噪  
%相当于把第一层的低频图像经过再一次的低频滤波处理  
a2=wrcoef2('a',c,s,'sym4',2);  
%画出去噪后的图像  
subplot(2,2,4); imshow(uint8(a2)); %image(a2);
title('第二次去噪图像');
%保存图像  
% imwrite(x,'2.jpg');
% imwrite(uint8(a1),'3.jpg'); %imwrite()保存图像,也需要将数据类型转化为uint8
% imwrite(uint8(a2),'4.jpg');

运行结果如图:

可以看出第一次去噪已经滤去了大部分的高频噪声,但图像还是含有很多的高频噪声;第二次去噪是在第一次的基础上,再次滤去其中的高频噪声。

参考:https://www.cnblogs.com/warmbeast/p/7809728.html

2018-08-20 08:25:18 iefenghao 阅读数 12658

小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分析,通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。(摘自百度百科)

1 小波变换MATLAB程序

//小波变换
I=imread('66.jpg');
subplot(2,2,1);
imshow(I);
title('原始图像');
J=rgb2gray(I);
subplot(3,2,2);
imshow(J);
colormap(map);
title('灰度图像');
 [cA1,cH1,cV1,cD1] = dwt2(J,'bior3.7');   
A1 = upcoef2('a',cA1,'bior3.7',1); 
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
subplot(3,2,3); image(wcodemat(A1,192));
title('近似系数 A1')
subplot(3,2,4); image(wcodemat(H1,192));
title('水平细节 H1')
subplot(3,2,5); image(wcodemat(V1,192));
title('垂直细节 V1')
subplot(3,2,6); image(wcodemat(D1,192));
title('对角线细节 D1')
Y1=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,2);image(Y1);title('一重小波重构图像');

处理之后的图像

2 多重小波变换MATLAB程序

//多重小波变换
I=imread('66.jpg');
subplot(2,2,1);
imshow(I);
title('原始图像');
J=rgb2gray(I);
 [cA1,cH1,cV1,cD1] = dwt2(J,'bior3.7');    
A1 = upcoef2('a',cA1,'bior3.7',1); 
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,2);image(Y);title('一重小波重构图像');
A1 = upcoef2('a',cA1,'bior3.7',2); 
H1 = upcoef2('h',cH1,'bior3.7',2);
V1 = upcoef2('v',cV1,'bior3.7',2);
D1 = upcoef2('d',cD1,'bior3.7',2);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,3);image(Y);title('二重小波重构图像');
A1 = upcoef2('a',cA1,'bior3.7',3); 
H1 = upcoef2('h',cH1,'bior3.7',3);
V1 = upcoef2('v',cV1,'bior3.7',3);
D1 = upcoef2('d',cD1,'bior3.7',3);
Y=idwt2(A1,H1,V1,D1,'bior3.7');
subplot(2,2,4);image(Y);title('三重小波重构图像');

实验结果

下一篇数字图像处理--图像的增强

 

2014-10-31 16:50:38 adong76 阅读数 3938


参考:

http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/chapter12/chapt12_ahz.htm


Matlab 小波变换

lean图像的行列应该满足2的幂次方

img  =  imread('lena.jpg');
img =rgb2gray(img);
img = double(img);

[ca1 ch1,cv1,cd1] = dwt2(img,'haar');
figure;
imshow([uint8(ca1),uint8(ch1);uint8(cv1),uint8(cd1)]);
title('first wavelet decomposition');

[ca2 ch2,cv2,cd2] = dwt2(ca1,'haar');
figure;
imshow([uint8(ca2),uint8(ch2);uint8(cv2),uint8(cd2)]);
title('second wavelet decomposition');

% restruct img
img_ca1 =  idwt2(ca2,ch2,cv2,cd2,'haar');
img_re = idwt2(img_ca1,ch1,cv1,cd1,'haar');
figure;
imshow( uint8(img_re));
title('wavelet restruct');

2015-10-27 18:13:44 robin1987z 阅读数 11660
小波变换原理  

  所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。

  相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。

  举一些小波的例子:


可以看到,能量集中在x轴0值附近,以y轴的0值为基线,上下两个区域的波形面积相等。


  众所周知,图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。

  小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器,

这里我们以一个图像的横向一维为例,讲讲小波的分解与还原,采用的是Haar小波做分解:

图像原始像素矩阵:[6 4 8 7 5 9 3 2]

分解低通滤波器:[ 1  1]/sqrt(2)

分解高通滤波器:[-1 1]/sqrt(2)

1.用低通滤波器与原始像素矩阵做卷积得:[8 10 12 15 12 14 12 5]/sqrt(2)

下采样得:[10 15 14 5]/sqrt(2)    ----->L

2.用高通滤波器与原始像素矩阵做卷积得:[-4 2 -4 1 2 -4 6 1]/sqrt(2)

下采样得:[2 1 -4 1]/sqrt(2)    ----->H

上例为一维情况,二维情况在做完横向滤波之后再进行纵向滤波即可。


逆变换过程:

重构低通滤波器:[1  1]/sqrt(2)

重构高通滤波器:[1 -1]/sqrt(2)

1.对L数组插值得:[0 10 0 15 0 14 0 5]/sqrt(2)

再用低通滤波器做卷积得:[10 10 15 15 14 14 5 5]/2

2.对H数组插值得:[0 2 0 1 0 -4 0 1]/sqrt(2)

再用高通滤波器做卷积得:[2 -2 1 -1 -4 4 1 -1]/2

两个数组求和得:[6 4 8 7 5 9 3 2] ,矩阵被还原了。


基于小波变换的图像压缩

我们知道,图像的低频部分保存的是图像的轮廓信息,而高频保存的是图像的边缘和细节信息,大量的研究表明,幅值低的高频信息对于图像共享较小,

丢弃对图像质量的影响不大,所以小波变换的特性给了图像压缩一个很好的工具,将原图进行小波分解以后,为高频信息设置一个阈值a,假如该点的值小于a则置零这样就抛弃掉了图像中影响不大的低幅值高频信息,还原出来的图像没有明显的质量下降,但是占用空间却变小了。

给一个别人论文里的示例和统计:


效果:


图像Haar小波变换

阅读数 3098

小波变换图像处理

阅读数 4753

图像处理-小波变换

阅读数 5254

没有更多推荐了,返回首页