一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

关于小波变换我只是有一个很朴素了理解。不过小波变换可以和傅里叶变换结合起来理解。

傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数。

小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数。

不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性。

小波变换步骤:

1.把小波w(t)和原函数f(t)的开始部分进行比较,计算系数C。系数C表示该部分函数与小波的相似程度。

2.把小波向右移k单位,得到小波w(t-k),重复1。重复该部知道函数f结束.

3.扩展小波w(t),得到小波w(t/2),重复步骤1,2.

4.不断扩展小波,重复1,2,3.

我这里使用的haar小波,缩放函数是[1 1],小波函数是[1 -1]。是最简单的小波了。

先看看分解的效果,这次我选用了大图:

尺度为2的全分解小波包:

下面是matlab代码:

main.m

复制代码
 1 clear all;
 2 close all;
 3 clc;
 4 
 5 img=double(imread('Lena (2).jpg'));
 6 [m n]=size(img);
 7 
 8 [LL LH HL HH]=haar_dwt2D(img);  %当然dwt2(img,'haar')是一样的,我只是想明白细节
 9 img=[LL LH;HL HH];      %一层分解
10 
11 imgn=zeros(m,n);
12 for i=0:m/2:m/2
13     for j=0:n/2:n/2
14         [LL LH HL HH]=haar_dwt2D(img(i+1:i+m/2,j+1:j+n/2)); %对一层分解后的四个图像分别再分解
15         imgn(i+1:i+m/2,j+1:j+n/2)=[LL LH;HL HH];  
16     end
17 end
18 
19 imshow(imgn)
复制代码

haar_dwt2D.m

复制代码
 1 function [LL LH HL HH]=haar_dwt2D(img)
 2     [m n]=size(img);
 3     for i=1:m       %每一行进行分解
 4         [L H]=haar_dwt(img(i,:));
 5         img(i,:)=[L H];
 6     end
 7     for j=1:n       %每一列进行分解
 8        [L H]=haar_dwt(img(:,j));
 9        img(:,j)=[L H];
10     end
11     %本来分解不应该加mat2gray的,不过为了有好的显示效果就加上了
12     LL=mat2gray(img(1:m/2,1:n/2));          %行列都是低频  
13     LH=mat2gray(img(1:m/2,n/2+1:n));        %行低频列高频
14     HL=mat2gray(img(m/2+1:m,1:n/2));        %行高频列低频
15     HH=mat2gray(img(m/2+1:m,n/2+1:n));      %行列都是高频
16     
17 end
复制代码

haar_dwt.m

复制代码
 1 function [L H]=haar_dwt(f)  %显然,我没有做边界处理,图片最好是2^n*2^n型的
 2     n=length(f);
 3     n=n/2;
 4     L=zeros(1,n);   %低频分量
 5     H=zeros(1,n);   %高频分量
 6     for i=1:n
 7         L(i)=(f(2*i-1)+f(2*i))/sqrt(2);
 8         H(i)=(f(2*i-1)-f(2*i))/sqrt(2);
 9     end
10     
11 end
复制代码

 

posted on   一杯清酒邀明月  阅读(1225)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示