文档库 最新最全的文档下载
当前位置:文档库 › 52-小波分析小实验报告

52-小波分析小实验报告

小波分析小实验报告
2004211027 郑吴杰
1选题和实验说明
选题为8.2题。以图8-2中的信号为例,利用高斯小波进行如下计算:
1)计算信号的小波变换。
2)求出模极大曲线。
3)计算其中两个奇异点的Lipschitz指数。

本实验的基本程序参考了wavelab,但全部按解题需求进行了重写。采用wavelab中的数据,即A Wavelet Tour of Signal Processing(2nd edition)中fig6.6的信号,该信号比较简单,所得结果清楚,适合教学演示。实验结果和A Wavelet Tour of Signal Processing(2nd edition)书中的图示基本一致(fig6.6.pdf)。区别在于该书中画的是对[0,1]上的原信号进行处理的过程,而我所给结果是在对采样后(采样间距为1)所得信号上进行处理的过程,对应的信号和尺度坐标会有不同。注意到,则可知尺度为的小波变换对应尺度为的小波变换。
之后,我又用实际图像信号(lenna.jpg中任取一行)进行了实验,发现在计算模极大值时,取邻域为1所得结果更适合fig6.6的演示,但实际应用时容易受噪声干扰,鲁棒性不够。因此,我在基本程序基础上对极大点计算进行了改进,从而较好的去除了噪声的干扰。
2算法流程
实验算法如下:
1)计算信号在多个尺度下的小波变换wt。
2)计算模极大点。
将小波系数绝对值大于左右邻域的点判为模极大点,然后根据参数par计算自适应阈值,小于最大值的1/par的模极大点将被丢弃。最后,小波变换值为正标记为1,小波变换值为负则标记为-1。
3)求出极大曲线序列skellist(另有skelptr、skellen记录每条曲线的起始位置和长度)。
从最细尺度开始连接,即首先根据最细尺度的模极大值确定模极大曲线的数目及其起始点。之后依次往高一级尺度查找模极大曲线的其他点。记当前尺度的模极大点位置为A,则下一级尺度中,与A位置最近且标记相同的模极大点被选中。注意没确定一个点后,都要将该点的值清零。
4)绘制极大曲线在log2s, log2|Wf(s,u)|平面上的曲线图,求出最大斜率即Lipschitz指数+1/2。
为得到最合适的斜率,我采用matlab的polyfit函数对模极大曲线进行直线拟合。但由于横坐标为log2s,在最开始的一段间距内只记录了少数尺度上的值,例如开始长度为2的间距内只记录了最小4个尺度的值,对结果干扰较大,因此对于足够长的极大曲线,我将最小的3个尺度丢弃;同时大尺度上的值也很可能和收敛方向不一致,因此我只取了中间部分的值进行拟合。例如进行32个尺度的小波变换,最后取4:16尺度上的值进行拟合。
3代码实现
我采用Matlab函数编程实现。具体程序见smallExp.m,GetSignal.m,
ImageWT.m,MM_WT.m,SkelMap.m。各个函数的主要说明如下:
1)smallExp.m:f

unction [ Lips ] = smallExp( )
函数功能:检测信号的阶梯型边界点。
首先设计信号,计算信号在多个尺度下的小波变换wt,计算模极大点并连接模极大曲线,然后根据判定阶梯型边界的两种算法检测信号的阶梯型边界点。同时在函数中画出小波变换图和模极大曲线图。
输出参数:
Lips:输出结果即奇异点位置和奇异指数列表。
2)GetSignal.m:function sig = GetSignal()
函数功能:引用wavelab中的数据,即A Wavelet Tour of Signal Processing(2nd
edition)中fig6.6的信号。
输出参数:
sig:所构造的信号
3)ImageWT.m:function ImageWT(wt,n,s_scale,l_scale)
函数功能:画出信号的小波变换结果
输入参数:
wt:小波变换矩阵
n:信号长度
s_scale:小波变换的尺度下界
l_scale:小波变换的尺度上界
4)MM_WT.m:function maxmap = MM_WT(wt, windowSize, par)
函数功能:计算模极大点,小波变换值为局部极大标记为1,小波变换值为局部极小则标记为-1。
输入参数:
wt:小波变换矩阵
windowSize:邻域大小
par:计算自适应阈值所用参数,小于最大值的1/par的极大点将被丢弃。
输出参数:
maxmap:极大点矩阵
5)SkelMap.m:function [skellist,skelptr,skellen] = SkelMap(maxmap)
函数功能:连接模极大曲线
输入参数:
maxmap:极大点矩阵
输出参数:
skellist:模极大曲线列表,依次记录每条曲线,第一行记录尺度,第二行记录位置。
skelptr:模极大曲线起始点列表,依次记录每条曲线的起始点在skellist中的位置。
skellen:模极大曲线长度列表,依次记录每条曲线的长度。
4实验结果
1) 基本实验
图1是A Wavelet Tour of Signal Processing(2nd edition)中fig6.6的信号及
其小波变换。

图1 fig6.6的信号及其小波变换
图2是其模极大曲线,其中模极大点计算时邻域取值为1。

图2 fig6.6的模极大曲线(极大点邻域为1)
图3是图2中第5、第6条曲线在log2s, log2|Wf(s,u)|平面上的曲线图,其中实线对应第5条曲线即奇异点163,虚线对应第6条曲线即奇异点305,两条曲线的斜率分别约为0.5和1.4,因此对应的奇异值为0和0.9,符合我们直观上的理解。所有曲线对应奇异点的奇异值如表1。

图3 模极大曲线在log2s, log2|Wf(s,u)|平面上的曲线图
位置 52 65 77 161 163 305 315 415 418 420 Lipschitz指数 1.2632 1.0468 1.2628 0.0070199 0.0059719 0.8783 0.87816 0.71243 0.38949 0.71159 表1 奇异点及奇异值列表
2) 对实际图像信号的实验
用实际图像信号(lenna.jpg中第30行)进行实验。该信号及其小波变换如图4,计算模极大值时,取邻域为1,所得模极大曲线图如图5,而取邻域为5,所得模极大曲线图如图6。可以看

出,取一个适当的邻域,对于抑制噪声有很好的效果,只要再加上合适的阈值,对粘连的极大点进行合并,那就可以实际用于奇异点检测了。

图4 lenna图像第30行的信号及其小波变换

图5 邻域为1所得模极大曲线图

图6 邻域为5所得模极大曲线图

相关文档
相关文档 最新文档