我是靠谱客的博主 含蓄秀发,最近开发中收集的这篇文章主要介绍二维haar小波matlab_MATLAB图像处理中的小波变换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在Matlab图像处理中,小波变换对应的函数都有下面这些:

1、

dwt2二维离散小波变换

[cA,cH,cV,cD]=dwt2(X,'wname')%使用指定的小波基函数对矩阵X进行二维离散小波变换

[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) %使用指定的低通滤波器Lo_D和高通滤波器Hi_D分解信号

%cA--近似分量(低频分量);cH--水平方向细节分量

cV--垂直方向细节分量;cD--对角方向细节分量

这个代码写起来就很简单啦~~~奉上代码

A=imread('lena.png');

[cA,cH,cV,cD]=dwt2(A,'haar');%使用haar小波

figure,imshow(A);title('原图');

figure,subplot(2,2,1),imshow(uint8(cA)),title('低频分量');

subplot(2,2,2),imshow(uint8(cH)),title('水平细节分量');

subplot(2,2,3),imshow(uint8(cV)),title('垂直细节分量');

subplot(2,2,4),imshow(uint8(cD)),title('对角线细节分量');

2、

wavedec2 二维多尺度分解

[C,S]=wavedec2(X,N,'wname')%使用指定的小波基函数对矩阵X进行N层分解

[C,S]=wavedec2(X,N,Lo_D,Hi_D)%使用指定的低通滤波器Lo_D和高通滤波器Hi_D分解信号为N层;

%C为各层分解系数,S为各层分解系数的大小(行数及列数)

在这里,一开始我对这个函数的理解是比较困难的,后来通过一段程序辅助了一下理解:

查阅一些博客,才知道

c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]

s=[m(A(N)) n(A(N)); m(|H(N)|V(N)|D(N)) n(|H(N)|V(N)|D(N));

m(|H(1)|V(1)|D(1)) n(|H(1)|V(1)|D(1));m(X) n(X)]

(ps!!!!!!这张Matlab帮助文档里的图比我列的清楚多了,看不懂在看我的,(*^__^*) 嘻嘻……)

A(N)为第N层低频系数(近似分量),H(N)|V(N)|D(N)对应高频系数,分别对应水平高频分量|垂直高频分量||对角方向高频分量

c的矩阵如下图所示

可以看出c实际上是一个1×117307的行向量(图像大小341*341=117307),c以行向量的形式存储了个分量中所有的值;

工作区各变量的大小如图所示,原图的大小为341×341,第一层分解得出的各分量大小为171×171,第二层分解各分量大小为86×86。

clc,clear all,close all;

X=imread('3.bmp');

[c,s]=wavedec2(X,2,'db1');%进行2尺度二维离散小波分解。分解小波函数-db1

[cH1,cV1,cD1]=detcoef2('all',c,s,1);%尺度1的所有方向的高频系数

[cH2,cV2,cD2]=detcoef2('all',c,s,2);%尺度2的所有方向的高频系数

cA1=appcoef2(c,s,'db1',1);%尺度1的低频系数

cA2=appcoef2(c,s,'db1',2);%尺度2的低频系数

figure,imshow(X);title('原图');

figure;

subplot(1,2,1),imshow(uint8(cA1));axis off;title('尺度1的低频系数图像');

subplot(1,2,2),imshow(uint8(cA2));axis off;title('尺度2的低频系数图像');

figure;

subplot(2,3,1),imshow(uint8(cH1));axis off;title('尺度1水平方向高频系数');

subplot(2,3,2),imshow(uint8(cV1));axis off;title('尺度1垂直方向高频系数');

subplot(2,3,3),imshow(uint8(cD1));axis off;title('尺度1斜线方向高频系数');

subplot(2,3,4),imshow(uint8(cH2));axis off;title('尺度2水平方向高频系数');

subplot(2,3,5),imshow(uint8(cV2));axis off;title('尺度2垂直方向高频系数');

subplot(2,3,6),imshow(uint8(cD2));axis off;title('尺度2斜线方向高频系数');

照例奉上lena小姐姐。。。。。

最后,上一些常见的小波,MATLAB帮助搜索waveinfo可以找到~

(例如,搜索haar小波,waveinfo('haar'))

今天学习的内容大概就是这样,至于关于小波变换的原理,我打算再深入学习一下再写成笔记~~~~嘿嘿嘿~~~~~

最后

以上就是含蓄秀发为你收集整理的二维haar小波matlab_MATLAB图像处理中的小波变换的全部内容,希望文章能够帮你解决二维haar小波matlab_MATLAB图像处理中的小波变换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部