博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(图像Haar小波变换)
阅读量:6293 次
发布时间:2019-06-22

本文共 1628 字,大约阅读时间需要 5 分钟。

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

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

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

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

小波变换步骤:

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

clear all;close all;clc;img=double(imread('Lena (2).jpg'));[m n]=size(img);[LL LH HL HH]=haar_dwt2D(img);  %当然dwt2(img,'haar')是一样的,我只是想明白细节img=[LL LH;HL HH];      %一层分解imgn=zeros(m,n);for i=0:m/2:m/2    for j=0:n/2:n/2        [LL LH HL HH]=haar_dwt2D(img(i+1:i+m/2,j+1:j+n/2)); %对一层分解后的四个图像分别再分解        imgn(i+1:i+m/2,j+1:j+n/2)=[LL LH;HL HH];      endendimshow(imgn)

haar_dwt2D.m

function [LL LH HL HH]=haar_dwt2D(img)    [m n]=size(img);    for i=1:m       %每一行进行分解        [L H]=haar_dwt(img(i,:));        img(i,:)=[L H];    end    for j=1:n       %每一列进行分解       [L H]=haar_dwt(img(:,j));       img(:,j)=[L H];    end    %本来分解不应该加mat2gray的,不过为了有好的显示效果就加上了    LL=mat2gray(img(1:m/2,1:n/2));          %行列都是低频      LH=mat2gray(img(1:m/2,n/2+1:n));        %行低频列高频    HL=mat2gray(img(m/2+1:m,1:n/2));        %行高频列低频    HH=mat2gray(img(m/2+1:m,n/2+1:n));      %行列都是高频    end

haar_dwt.m

function [L H]=haar_dwt(f)  %显然,我没有做边界处理,图片最好是2^n*2^n型的    n=length(f);    n=n/2;    L=zeros(1,n);   %低频分量    H=zeros(1,n);   %高频分量    for i=1:n        L(i)=(f(2*i-1)+f(2*i))/sqrt(2);        H(i)=(f(2*i-1)-f(2*i))/sqrt(2);    end    end

参考:

转载于:https://www.cnblogs.com/tiandsp/archive/2013/04/12/3016989.html

你可能感兴趣的文章
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>