文章目录

  • Haar变换
    • 原理说明
    • 实例演示
    • MATLAB实现

Haar变换

这是小波变换的第二篇,我们继续谈Haar变换。在第一篇中,我们介绍了一位情况下的Haar变换,这篇博文中主要介绍二维Haar变换。最后,通过一个图像压缩的案例说明二维Haar变换的应用。

原理说明

给定一个二维信号,我们这里假设是一个4×44\times44×4的图片,

f=[21567658215577210]f=\begin{bmatrix}2&1&5&6\\7&6&5&8\\2&1&5&5\\7&7&2&10\end{bmatrix}f=⎣⎢⎢⎡​2727​1617​5552​68510​⎦⎥⎥⎤​

如何进行二维的哈尔变换呢?

步骤是这样的:(1)首先,沿着矩阵的每一行做一维的Haar变换;(2)然后,沿着矩阵的每一列做一维的哈尔变换;(3)对于每个低频分量矩阵(近似信息)重复步骤(1)和(2)直到完成指定的等级划分。下图给出了两级划分的示意图:

这里的A表示近似信息(approximation coefficients),H表示水平细节信息(horizontal detail coefficients),V表示垂直细节信息(vertical detail coefficients),D表示对角线细节信息(diagonal detail coefficients)。很多数学软件中是这样称呼的,了解了这个可以帮助我们快速上手软件进行实际操作。

行分解和列分解的顺序是可以互换的,保持一致即可。

明白了基本原理,下面我们来进行实际计算,对于fff,(如果不清楚如何做一维高频和低频分解,可参看博文《小波变换一之Haar变换》)

第一次行分解得到低频信息L=[3211213213232527262]L=\begin{bmatrix}\frac{3}{\sqrt{2}}&\frac{11}{\sqrt{2}}\\\frac{13}{\sqrt{2}}&\frac{13}{\sqrt{2}}\\\frac{3}{\sqrt{2}}&5\sqrt{2}\\7\sqrt{2}&6\sqrt{2}\end{bmatrix}L=⎣⎢⎢⎢⎡​2​3​2​13​2​3​72​​2​11​2​13​52​62​​⎦⎥⎥⎥⎤​

第一次列分解得到高频信息H=[12−1212−321200−42]H=\begin{bmatrix}\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&-\frac{3}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&0\\0&-4\sqrt{2}\end{bmatrix}H=⎣⎢⎢⎢⎡​2​1​2​1​2​1​0​−2​1​−2​3​0−42​​⎦⎥⎥⎥⎤​

对LLL进行列高频分解得到A1=[8128.511]A_1=\begin{bmatrix}8&12\\8.5&11\end{bmatrix}A1​=[88.5​1211​]

对LLL进行列低频分解得到H1=[−5−1−5.5−1]H_1=\begin{bmatrix}-5&-1\\-5.5&-1\end{bmatrix}H1​=[−5−5.5​−1−1​]

对HHH进行列高频分解得到V1=[1−20.5−4]V_1=\begin{bmatrix}1&-2\\0.5&-4\end{bmatrix}V1​=[10.5​−2−4​]

对HHH进行列低频分解得到D1=[010.54]D_1=\begin{bmatrix}0&1\\0.5&4\end{bmatrix}D1​=[00.5​14​]

我们还可以对A1A_1A1​继续进行二层分解,这里就不做演示了。

实例演示

这里我们通过对一张图片做Haar变换,然后我们去掉其高频信息部分,实现对图像的压缩。

下面是进行了三次分解,然后分别过了到第一层的高频信息和第一层兼第二层的高频信息的效果!过滤掉第一层的高频信息,图像压缩为原来的四分之一,可以看到图像还是基本清晰的。过滤掉第二层和第二层的高频信息以后,可以看到图片稍微有点模糊了。

MATLAB实现

下面是使用MATLAB实现上面变换的代码,有兴趣的童鞋可以参考一下。

clear, clc;% 读取原始图像
X = rgb2gray(imread('http://www.lenna.org/lena_std.tif'));
% 进行小波分解
[C, S] = wavedec2(X, 3, 'haar');% 获得分解以后的低频近似信息
L = appcoef2(C, S, 'haar', 3);
% 分别获得各层级的高频细节信息
[H3, V3, D3] = detcoef2('all', C, S, 3);
[H2, V2, D2] = detcoef2('all', C, S, 2);
[H1, V1, D1] = detcoef2('all', C, S, 1);% 去掉第一层的高频信息(替换成0),然后进行小波重建
% 注意这里乘以3是有HVD三种高频信息
D = [C(1: end - 3*size(H1, 1)*size(H1, 2)), zeros(1, 3*size(H1, 1)*size(H1, 2))];
CD1 = waverec2(D, S, 'haar');
% 去掉第一和第二层的高频信息,然后进行小波重建
D = [C(1: end - 3*size(H1, 1)*size(H1, 2) - 3*size(H2, 1)*size(H2, 2)), ...zeros(1, 3*size(H1, 1)*size(H1, 2) + 3*size(H2, 1)*size(H2, 2))];
CD2 = waverec2(D, S, 'haar');%按照分解层级将分解系数排列拼接为一副图像
DD1 = [L, H3; V3, D3];
DD2 = [DD1, H2; V2, D2];
DD3 = [DD2, H1; V1, D1];
% 结果显示
subplot(2, 2, 1), imshow(X, []), title('原始图像');
subplot(2, 2, 2), imshow(DD3, []), title('小波分解系数');
subplot(2, 2, 3), imshow(CD1, []), title('压缩一(去掉第一层高频信息)');
subplot(2, 2, 4), imshow(CD2, []), title('压缩二(去掉第二层高频信息)');

小波变换二之Haar变换相关推荐

  1. 小波变换一之Haar变换

    小波变换一之Haar变换 Haar变换 案例一简单一维信号变换 案例二多分辨率一维信号变换 Haar变换 案例一简单一维信号变换 下面是一个一维信号(一组数):f={2,2,2,4,4,4}f = \ ...

  2. Fourier变换、STFT变换、Gabor变换、小波变换、Haar变换、Hilbert变换

    参考:https://blog.csdn.net/chenaiyanmie/article/details/80246108#傅立叶变换 参考:http://www.360doc.com/conten ...

  3. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  4. 计算机图形学(四)几何变换_4_二维复合变换_4_二维刚体变换

    二维复合变换_4_二维刚体变换 如果一个变换矩阵仅包含平移和旋转参数 ,则它是一个刚体变换矩阵 (rigid-body transforma-tion matrix) .二维刚体变换矩阵的一般形式为 ...

  5. 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

    接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...

  6. 图像加密 关于二维Arnold变换,广义Arnold变换和更一般形式变换的练习(Matlab实现)

    索引 1. 将其离散化,应用到图像变换,假设图像大小为 N × N N\times N N×N, ( m n ) = ( 1 1 1 2 ) ( i j ) m o d N , i , j = 0 , ...

  7. c语言二维图形变换程序,C语言图形编程(五、二维图形变换-01)(国外英文资料).doc...

    C语言图形编程(五.二维图形变换-01)(国外英文资料) C语言图形编程(五.二维图形变换-01)(国外英文资料) The first user coordinates to the screen c ...

  8. 二维离散变换由c语言编写,离散余弦变换(DCT)的DSP程序设计与实现

    <离散余弦变换(DCT)的DSP程序设计与实现>由会员分享,可在线阅读,更多相关<离散余弦变换(DCT)的DSP程序设计与实现(15页珍藏版)>请在人人文库网上搜索. 1.DS ...

  9. MATLAB对autumn.tif文件计算二维DCT变换

    %对autumn.tif文件计算二维DCT变换 RGB = imread('autumn.tif'); I = rgb2gray(RGB); %真彩色图像转换成灰度图像 J = dct2(I); %计 ...

  10. 计算机图形学-二维图形变换 笔记总结与代码实战

    文章目录 1.向量基础知识 2.图形坐标系 3.二维图形变换原理 4.二维图形几何变换 5.窗口视区变换 基本二维几何变换代码 二维复合变换实战-五星红旗绘制 1.向量基础知识 为什么向量如此重要:在 ...

最新文章

  1. linux 进程综合指令
  2. Vue 递归实现树形结构
  3. 高可用系统架构设计 技术方案
  4. 网管必知远程终端3389端口合理修改秘藉
  5. 上游供应链厂商确认高通已获准向华为出售4G芯片
  6. [原创] Ubuntu 安装vim与中文帮助文档
  7. 使用Mediacoder压制带有图片的ass字幕
  8. easyUI filebox限定文件大小
  9. select into 时有无strict关键字的区别
  10. 不能随便输入的“netsh winsock reset”
  11. Unity 回合制战斗
  12. Linux课堂笔记--第九天
  13. IconResource:安卓、IOS、网页等开发图标素材源
  14. 写一个python程序、求解使得npv值为零的折现率_计算题专题:净现值NPV分析与习题...
  15. 建筑施工技术【12】
  16. Zabbix 5.4.12 源码编译安装
  17. 进入命令提示符窗口+常用DOS命令提示符
  18. 有关putian shoes,你需要了解的事情
  19. 633_AUTOSAR_AUTOSAR_TR_Glossary_文档阅读3
  20. 基于STM32F103C8T6的IIC通信协议及硬件通信和软件OLED温度显示项目

热门文章

  1. 高级前端工程师知识图谱
  2. 机器学习的应用–大数据
  3. 能气死古人的诗歌改编
  4. 1.2Sakura语法基础篇
  5. 浅谈严格控制普通高等学校招生规模
  6. 【论文学习】《On Prosody Modeling For ASR+TTS Based Voice Conversion》
  7. python大作业数据_python 爬虫初探和简单数据分析及可视化,帮学妹写个大作业...
  8. 马克思主义哲学(认识论)
  9. 中国一线二线三线城市名单
  10. Rayman的绝顶之路——Leetcode每日一题打卡16