小波之小波变换

基本概念

        小波变换(wavelet transform)是指用有限长或快速衰减的“母小波”(mother wavelet)的振荡波形来表示信号。该波形被缩放和平移以匹配输入的信号。小波变化的发展,承袭Gabor transform的局部化思想,并且克服了傅里叶和Gabor transform的部分缺陷,小波变换提供了一个可以调变的时频窗口,窗口的宽度(width)随着频率变化,频率增高时,时间窗口的宽度就会变窄,以提高分辨率.小波在整个时间范围内的振幅平均值为0,具有有限的持续时间和突变的频率与震幅,可以是不规则,或不对称的信号。小波变换分成两个大类:离散小波变换(DWT) 和连续小波变换(CWT)。两者的主要区别在于,连续变换在所有可能的缩放和平移上操作,而离散变换采用所有缩放和平移值的特定子集。下面是连续小波变换的原理图。
在这里插入图片描述
        这里就不给出公式了,如果觉得很难理解小波变换的话,推荐视频Understanding Wavelets, Part 1: What Are Wavelets。对于离散小波变换,主要有两个作用去噪和压缩。对于图像而言,主要用到二维离散小波变换。
在这里插入图片描述

示例演示

        为了用于图像处理,我们实现了一维离散小波变换和其逆变换,然后在此基础上实现二维离散变换和其逆变换。完整工程代码。

/**********************************************************************

Copyright (c) Mr.Bin. All rights reserved.
For more information visit: http://blog.csdn.net/webzhuce

**********************************************************************/
# include<opencv2/opencv.hpp>
# include<iostream>
 #include "wavelet.h"
 
 using namespace std;
 using namespace cv;
 
 int main() {
 	Mat image = imread("image.png", 0);
 	imshow("OriginImage", image);
 
 	Mat decomposition = DWT2(image, 1);
 	Mat uchardecomposition;
 	decomposition.convertTo(uchardecomposition, CV_8UC1);
 	imshow("Decomposition", uchardecomposition);
 	//imwrite("result.png", ucharresult);
 
 	Mat reconstruction = IDWT2(decomposition, 1);
 	Mat ucharreconstruction;
 	reconstruction.convertTo(ucharreconstruction, CV_8UC1);
 	imshow("Reconstruction", ucharreconstruction);
 	imwrite("reconstruction.png", ucharreconstruction);
 
 	Mat diff = ucharreconstruction - image;
 	imshow("diff", diff);
 	waitKey(0);
 	return 0;
 }

运行结果

原始图
在这里插入图片描述
小波分解图
在这里插入图片描述
小波重构图

在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值