没有合适的资源?快使用搜索试试~ 我知道了~
Haar小波在图像处理和数字水印等方面应用较多,这里简单的介绍一下哈尔小波的基本原理以及其实现情况。 一、Haar小波的基本原理 数学理论方面的东西我也不是很熟悉,这边主要用简单的例子来介绍下Haar小波的使用情况。
资源推荐
资源详情
资源评论
哈尔小波变换的原理及其实现
(Haar)
分类: 图像处理 DSP
数字信号处理
2013-03-16 00:1692 人阅读 评论(0)收藏 举报
Haar 小波在图像处理和数字水印等方面应用较多,这里简单的介绍一下哈尔小波的基本原
理以及其实现情况。
一、Haar 小波的基本原理
数学理论方面的东西我也不是很熟悉,这边主要用简单的例子来介绍下 Haar 小波的
使用情况。
例如:有 a=[8,7,6,9]四个数,并使用 b[4]数组来保存结果.
则一级 Haar 小波变换的结果为:
b[0]=(a[0]+a[1])/2, b[2]=(a[0]-a[1])/2
b[1]=(a[2]+a[3])/2, b[3]=(a[2]-a[3])/2
即依次从数组中取两个数字,计算它们的和以及差,并将和一半和差的一半依次保存
在数组的前半部分和后半部分。
例如:有 a[8],要进行一维 Haar 小波变换,结果保存在 b[8]中
则一级 Haar 小波变换的结果为:
b[0]=(a[0]+a[1])/2, b[4]=(a[0]-a[1])/2
b[1]=(a[2]+a[3])/2, b[5]=(a[2]-a[3])/2
b[2]=(a[4]+a[5])/2, b[6]=(a[4-a[5]])/2
b[3]=(a[6]+a[7])/2, b[7]=(a[6]-a[7])/2
如果需要进行二级 Haar 小波变换的时候,只需要对 b[0]-b[3]进行 Haar 小波变换.
对于二维的矩阵来讲,每一级 Haar 小波变换需要先后进行水平方向和竖直方向上的
两次一维小波变换,行和列的先后次序对结果不影响。
二、Haar 小波的实现
使用 opencv 来读取图片及像素,对图像的第一个 8*8 的矩阵做了一级小波变换
[cpp]view plain copy
1. #include<cv.h>
2. #include<highgui.h>
3. #include<iostream>
4. usingnamespacestd;
5.
6.
7.
8. intmain()
9. {
10.
11. IplImage*srcImg;
12. doubleimgData[8][8];
13. inti,j;
14.
15. srcImg=cvLoadImage("lena.bmp",0);
16.
17. cout<<"原 8*8 数据"<<endl;
18. for(i=0;i<8;i++)
19. {
20. for(j=0;j<8;j++)
21. {
22. imgData[i][j]=cvGetReal2D(srcImg,i+256,j+16);
23. cout<<imgData[i][j]<<"";
24. }
25. cout<<endl;
26. }
27.
28.
29. doubletempData[8];
30.
31.
32. //行小波分解
剩余6页未读,继续阅读
资源评论
sundongwei1988
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功