Gonzalez R. C. and Woods R. E. Digital Image Processing (Forth Edition)

基本

酉变换

一维的变换:

\[\mathbf{t} = \mathbf{A} \mathbf{f}, \\
\mathbf{f} = \mathbf{A}^{H} \mathbf{t}, \\
\mathbf{A}^H = {\mathbf{A}^*}^{T}, \mathbf{A}^H\mathbf{A} = \mathbf{I}.
\]

以及二维的变换:

\[\mathbf{T} = \mathbf{A} \mathbf{F} \mathbf{B}^T, \\
\mathbf{F} = \mathbf{A}^H \mathbf{T} \mathbf{B}^*, \\
\mathbf{A}^H\mathbf{A=I}, \mathbf{B}^{T}\mathbf{B}^* =\mathbf{I}.
\]

以一维的为例, 实际上就是

\[t_u = \sum_{x = 0}^{N-1} f_x s(x, u) = \mathbf{f}^T \mathbf{s}_u, u=0,1,\cdots, N-1,\\
\mathbf{s}_u = [s(0, u), s(1, u), \cdots, s(N-1, u)]^T.
\]

\[\mathbf{A} = [\mathbf{s}_0, \cdots, \mathbf{s}_{N-1}]^{T}.
\]

注: 下面假设:\(N=2^n\).

WALSH-HADAMARD TRANSFORMS

\[s(x, u) = \frac{1}{\sqrt{N}} (-1)^{\sum_{i=0}^{n-1}b_i(x)b_i(u)},
\]

注意, 这里\(b_i(u)\)表示\(u\)的二进制的第\(i\)位, 比如\(4\)的二进制为\(100\), 此时\(b_0 = 0, b_2=1\).

变换矩阵可以通过更通俗易懂的方式搭建:

\[\mathbf{A}_W = \frac{1}{\sqrt{N}} \mathbf{H}_N, \\
\mathbf{H}_{2N} =
\left [
\begin{array}{cc}
\mathbf{H}_N & \mathbf{H}_N \\
\mathbf{H}_N & -\mathbf{H}_N \\
\end{array}
\right ], \\
\mathbf{H}_{2} =
\left [
\begin{array}{cc}
1 & 1 \\
1 & -1 \\
\end{array}
\right ].
\]

sequency-ordered WHT

\[\mathbf{H}_{4} =
\left [
\begin{array}{cc}
1 & 1 & 1 & 1\\
1 & -1 & 1 & -1 \\
1 & 1 & -1 & -1\\
1 & -1 & -1 & 1 \\
\end{array}
\right ].
\]

可以发现, 第1行(\(u=0, 1, 2, 3\))的符号变换最快的(类似与DFT中的频率的概念), 故sequency-order, 即按照符号变换快慢的递增排列, 其公式如下:

\[s(x, u) = \frac{1}{\sqrt{N}}(-1)^{\sum_{i=0}^{n-1}b_i(x)p_i(u)}, \\
p_0 (u) = b_{n-1}(u), \\
p_{n-1-i}(u) = b_i(u) + b_{i+1}(u), \quad i = 0, \cdots, n-2.
\]

记\(\mathbf{H}_{W'}\)为sequency-order的, 则 \(\mathbf{H}_{W'}\)的第\(u\)行与\(\mathbf{H}_{W}\)的第\(v\)行存在如下的关系:

  1. 考虑\(n\)bit的二进制, 则
\[u: (u_{n-1}u_{n-2}\cdots u_0),\\
v: (v_{n-1}v_{n-2}\cdots v_0).
\]
  1. 将\(u\)转换成其gray code格式
\[g_i = u_i \oplus u_{i+1}, \quad i=0, \cdots, n-2\\
g_{n-1} = s_{n-1}.
\]

其中\(\oplus\)表示异或操作.

3. 对\(g\)进行bit-reverse, 即\(g_i, g_{n-1-i}\)调换位置, 则

\[v_i = g_{n-1-i}.
\]

举个例子, 假设\(n=3\), \(u=4 = (100)_2\), 则\(g = (110)_2\), \(v=(011)_2 = 3\). 即\(H_8'\)的第4行为\(H_8\)的第3行(注意均从0开始计数).

proof:

\[\begin{array}{ll}
p_{n-1-i}(u)
&= b_i(u) + b_{i+1}(u) \\
&\Leftrightarrow b_i(g) \\
&= b_{n-1-i}(v).
\end{array}
\]

注意\(\Leftrightarrow\), 是这样的, \(b_i + b_{i+1}\)仅有(0, 1, 2)三种可能性, 而\((-1)^1=-1\)否则为1,而\(b_i(g)=1\)恰好是\(b_i(u) + b_{i+1}(u) = 1\) (根据异或的定义可得), 故可能等价替换.

\[p_0(u) = b_0(v),
\]

是显然的, 证毕.

下图便是按照sequency增序的表示.

SLANT TRANSFORM

\[\mathbf{A}_{SI} = \frac{1}{\sqrt{N}}\mathbf{S}_N, \\
\mathbf{S}_{N} =
\left [
\begin{array}{cccccc}
1 & 0 & \mathbf{0} & 1 & 0 & \mathbf{0} \\
a_N & b_N & \mathbf{0} & -a_N & b_N & \mathbf{0} \\
0 & 0 & \mathbf{I}_{(N/2)-2} & 0 & 0 & \mathbf{I}_{(N/2)-2} \\
0 & 1 & \mathbf{0} & 0 & -1 & \mathbf{0} \\
-b_N & a_N & \mathbf{0} & b_N & a_N & \mathbf{0} \\
0 & 0 & \mathbf{I}_{(N/2)-2} & 0 & 0 & \mathbf-{I}_{(N/2)-2} \\
\end{array}
\right ]
\left [
\begin{array}{cc}
\mathbf{S}_{N/2} & \mathbf{0} \\
\mathbf{0} & \mathbf{S}_{N/2} \\
\end{array}
\right ], \\
\mathbf{S}_2 =
\left [
\begin{array}{cc}
1 & 1 \\
1 & -1 \\
\end{array}
\right ], \\
a_N = [\frac{3N^2}{4(N^2-1)}]^{1/2}, \\
b_N = [\frac{N^2-4}{4(N^2-1)}]^{1/2}.
\]

标准正交性质是容易证明的, 需要特别注意的是, 改变换矩阵是非对称的, 所以逆变换是需要计算逆的\(A_{SI}^{-1}\).

Haar Transform

Haar 是一种小波变换, 这里简单写一下.

\[s(x, u) = \frac{1}{\sqrt{N}} h_u(x / N), \quad x= 0,1,\cdots, N-1, \\
u = 2^p + q, \\
h_u(x) =
\left \{
\begin{array}{ll}
1 & u=0 \: \text{and} \: 0 \le x < 1, \\
2^{p/2} & u > 0 \text{and} \: q/2^p < (q + 0.5)/2^p, \\
-2^{p/2} & u > 0 \text{and} \: (q+0.5)/2^p < (q + 1)/2^p, \\
0 & \text{otherwise}.
\end{array}
\right .
\]

WHT, SLANT, Haar的更多相关文章

  1. 特征检测之Haar

    Harr特征, 主要用于人脸检测,可以参考我的博文 基于MATLAB的adaboost级联形式的人脸检测实现 1 harr特征的原理 2 haar特征的计算 3 haar特征的应用

  2. 浅谈人脸检测之Haar分类器方法

    我们要探讨的Haar分类器实际上是Boosting算法(提升算法)的一个应用,Haar分类器用到了Boosting算法中的AdaBoost算法,只是把AdaBoost算法训练出的强分类器进行了级联,并 ...

  3. OpenCv haar+SVM训练的xml检测人头位置

    注意:opencv-2.4.10 #include "stdio.h"#include "string.h"#include "iostream&qu ...

  4. opencv - haar人脸特征的训练

    step 1: 把正样品,负样品,opencv_createsamples,opencv_haartraining放到一个文件夹下面,利于后面的运行.step 2: 生成正负样品的描述文件 正样品描述 ...

  5. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  6. Haar特征

    转自:http://blog.csdn.net/carson2005/article/details/8094699 Haar-like特征,即很多人常说的Haar特征,是计算机视觉领域一种常用的特征 ...

  7. 浅析人脸检测之Haar分类器方法

    一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发 ...

  8. Looksery Cup 2015 D. Haar Features 暴力

    D. Haar Features Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/prob ...

  9. 目标检测的图像特征提取之(三)Haar特征

    1.Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征. Haar特征分为三类:边缘特征.线性 ...

随机推荐

  1. 日常Java 2021/10/18

    Vecter类实现了一个动态数组,不同于ArrayList的是,Vecter是同步访问的, Vecter主要用在事先不知道数组的大小或可以改变大小的数组 Vecter类支持多种构造方法:Vecter( ...

  2. TLSv1.3 Support:主流 Web 客户端和服务端对 TLSv1.3 的支持情况

    TLSv1.3 Support:主流 Web 客户端和服务端对 TLSv1.3 的支持情况 请访问原文链接:https://sysin.org/blog/tlsv1-3-support/,查看最新版. ...

  3. 双向循环链表模板类(C++)

    双向链表又称为双链表,使用双向链表的目的是为了解决在链表中访问直接前驱和后继的问题.其设置前驱后继指针的目的,就是为了节省其时间开销,也就是用空间换时间. 在双向链表的每个节点中应有两个链接指针作为它 ...

  4. 登录界面.jsp

    <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...

  5. Map集合的认识和理解

    java.util.Map(k,v)集合* Map的特点:* 1.Map集合是一个双列集合,一个元素包含两个值(一个是key,一个是Value)* 2.Map集合中的元素,key和value的类型可以 ...

  6. numpy基础教程--二维数组的转置

    使用numpy库可以快速将一个二维数组进行转置,方法有三种 1.使用numpy包里面的transpose()可以快速将一个二维数组转置 2.使用.T属性快速转置 3.使用swapaxes(1, 0)方 ...

  7. C++STL标准库学习笔记(五)set

    前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...

  8. python之异步编程

    一.异步编程概述 异步编程是一种并发编程的模式,其关注点是通过调度不同任务之间的执行和等待时间,通过减少处理器的闲置时间来达到减少整个程序的执行时间:异步编程跟同步编程模型最大的不同就是其任务的切换, ...

  9. ciscn_2019_s_9

    很简单的一道题 例行检查 没有开启nx保护,就想到了shellcode来做 很明显的栈溢出 唯一的要求就是shellcode长度不能超过0x24 通过jump跳转到shellcode的位置 完整exp ...

  10. [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行

    [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 目录 [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 0x00 摘要 0x0 ...