小波变换的原理

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

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

举一些小波的例子:

可以看到,能量集中在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则置零这样就抛弃掉了图像中影响不大的低幅值高频信息,还原出来的图像没有明显的质量下降,但是占用空间却变小了。

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

效果:

图像小波变换的matlab实现详解

1、 一维小波变换的 Matlab 实现

(1) dwt 函数

功能:一维离散小波变换

格式:[cA,cD]=dwt(X,‘wname’)

[cA,cD]=dwt(X,Lo_D,Hi_D)

说明:[cA,cD]=dwt(X,‘wname’) 使用指定的小波基函数 ‘wname’ 对信号 X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。

(2) idwt 函数

功能:一维离散小波反变换

格式:X=idwt(cA,cD,‘wname’)

X=idwt(cA,cD,Lo_R,Hi_R)

X=idwt(cA,cD,‘wname’,L)

X=idwt(cA,cD,Lo_R,Hi_R,L)

说明:X=idwt(cA,cD,‘wname’) 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。

‘wname’ 为所选的小波函数

X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。

X=idwt(cA,cD,‘wname’,L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。

2、二维小波变换的 Matlab 实现

(1) wcodemat 函数

功能:对数据矩阵进行伪彩色编码

格式:Y=wcodemat(X,NB,OPT,ABSOL)

Y=wcodemat(X,NB,OPT)

Y=wcodemat(X,NB)

Y=wcodemat(X)

说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;

OPT 指定了编码的方式(缺省值为 ‘mat’),即:

OPT=‘row’ ,按行编码

OPT=‘col’ ,按列编码

OPT=‘mat’ ,按整个矩阵编码

ABSOL 是函数的控制参数(缺省值为 ‘1’),即:

ABSOL=0 时,返回编码矩阵

ABSOL=1 时,返回数据矩阵的绝对值 ABS(X)

(2) dwt2 函数

功能:二维离散小波变换

格式:[cA,cH,cV,cD]=dwt2(X,‘wname’)

[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)

说明:[cA,cH,cV,cD]=dwt2(X,‘wname’)使用指定的小波基函数 ‘wname’ 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。

(3) wavedec2 函数

功能:二维信号的多层小波分解

格式:[C,S]=wavedec2(X,N,‘wname’)

[C,S]=wavedec2(X,N,Lo_D,Hi_D)

说明:[C,S]=wavedec2(X,N,‘wname’) 使用小波基函数 ‘wname’ 对二维信号 X 进行 N 层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。

(4) idwt2 函数

功能:二维离散小波反变换

格式:X=idwt2(cA,cH,cV,cD,‘wname’)

X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)

X=idwt2(cA,cH,cV,cD,‘wname’,S)

X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)

说明:X=idwt2(cA,cH,cV,cD,‘wname’) 由信号小波分解的近似信号 cA 和细节信号 cH、cH、cV、cD 经小波反变换重构原信号 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号 X ;X=idwt2(cA,cH,cV,cD,‘wname’,S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 个数据点。

(5) waverec2 函数

说明:二维信号的多层小波重构

格式:X=waverec2(C,S,‘wname’)

X=waverec2(C,S,Lo_R,Hi_R)

说明:X=waverec2(C,S,‘wname’) 由多层二维小波分解的结果 C、S 重构原始信号 X ,‘wname’ 为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。

图像处理工具箱1. 图像和图像数据

缺省情况下,MATLAB将图像中的数据存储为双精度类型(double),64位浮点

数,所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即图像矩

阵中每个数据占用1个字节。

在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。另外,uint8

与double两种类型数据的值域不同,编程需注意值域转换。

3、图像处理工具箱所支持的图像类型

3.1、真彩色图像

R、G、B三个分量表示一个像素的颜色。如果要读取图像中(100,50)处的像素值,

可查看三元数据(100,50,1:3)。

真彩色图像可用双精度存储,亮度值范围是[0,1];比较符合习惯的存储方法是用无

符号整型存储,亮度值范围[0,255]

3.2、索引色图像

包含两个结构,一个是调色板,另一个是图像数据矩阵。调色板是一个有3列和若干行

的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。

注意:MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。

小波变换matlab程序,图像小波变换原理_图像小波变换的matlab实现详解相关推荐

  1. 图像仿射变换原理3:仿射变换类型及变换矩阵详解

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 仿射变换博文传送门(带星号的为付费专栏文章): *图像仿射变换原理1:齐次坐标来龙去脉详解 ...

  2. matlab双目相机标定校正_双目相机的标定过程详解!-----MATLAB

    基于双目视觉的测距.三维重建等过程中的第一步就是要进行标定.双目相机的标定过程在网上有很多资料,但是基本都没有matlab官方网址讲的好.所以请参考MATLAB官方文档:https://ww2.mat ...

  3. java controller注解原理_@Controller、@RestController注解区别详解

    @Controller.@RestController注解区别: @RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用. 一.@Contr ...

  4. 图像的泊松(Poisson)编辑、泊松融合完全详解

    图像的泊松(Poisson)编辑.泊松融合完全详解(1) --泊松方程的理论推导       图像的泊松(Poisson)编辑.泊松融合完全详解(2) --从物理模型跨入图像模型以及算法详解     ...

  5. OpenCv--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解

    (一)Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 1--Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类 2--创建一个Mat对象的方法很多,我们现在先看一下M ...

  6. 图像特征提取(VGG和Resnet特征提取卷积过程详解)

    图像特征提取(VGG和Resnet算法卷积过程详解) 第一章 图像特征提取认知 1.1常见算法原理和性能 众所周知,计算机不认识图像,只认识数字.为了使计算机能够"理解"图像,从而 ...

  7. 弦割法matlab求x 3,用matlab程序实现单点弦割法和双点弦割法解方程

    <用matlab程序实现单点弦割法和双点弦割法解方程>由会员分享,可在线阅读,更多相关<用matlab程序实现单点弦割法和双点弦割法解方程(2页珍藏版)>请在人人文库网上搜索. ...

  8. InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)...

    上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢? 测试代码 publi ...

  9. 解决C#程序只允许运行一个实例的几种方法详解

    解决C#程序只允许运行一个实例的几种方法详解 参考文章: (1)解决C#程序只允许运行一个实例的几种方法详解 (2)https://www.cnblogs.com/randyzhuwei/p/5403 ...

  10. 共模扼流圈的工作原理与作用以及特点和应用详解

    共模扼流圈的工作原理与作用以及特点和应用详解 - 电子常识 - 电子发烧友网 http://www.elecfans.com/dianzichangshi/20170609523118.html 共模 ...

最新文章

  1. 那些没出现在近几年顶会上重要论文
  2. 前两天谁要的抢红包利器,给你安排了
  3. 汇编:ret以及retf指令
  4. setsockopt()函数 参数详解
  5. 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
  6. c语言取子程序地址,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  7. NLP 中的文本分类
  8. opencv java水平投影_OpenCV实现图像在水平方向上投影
  9. Linux 命令之 scp 文件传输
  10. VueCli 中安装 axios
  11. Win32屏幕保护程序
  12. 红警3修改器无法连接服务器,红警3序列号修改器-不能加入游戏怎么办?红警3连局域网说cd-– 手机爱问...
  13. mti杂波抑制仿真 matlab,雷达MTI/MTD杂波抑制技术研究
  14. 开学作业——如何做好课堂笔记
  15. 七年级上册计算机知识点总结,七年级上册数学知识点总结
  16. 数字逻辑——卡诺图化简练习题
  17. dax和m的区别_动态股票K线图----从M语言到DAX表达式
  18. QT中窗口置顶失效问题解决方案
  19. python基础实例教程 微课版-Python爬虫开发实战教程(微课版)
  20. shell实现文本处理详解

热门文章

  1. 关于脏读,不可重复读,幻读的理解
  2. 串口通信实验(通过串口控制LED、蜂鸣器)
  3. 爬虫工具八爪鱼初体验
  4. python对图片进行裁剪_python利用四个坐标点对图片进行裁剪
  5. 六:Python断言方法:assert
  6. 实用Python识别图片上的数字(转载)
  7. Unity 小程序开发
  8. 分享一个蛋白互作网站——String (一)
  9. 一文汇总卡方检验分析步骤
  10. 【H.264/AVC 句法和语义详解】(十二):H264中的帧场编码模式详解