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}.
\]

others

\[\sum_{k=0}^n \sin (kx) = \frac{\cos(\frac{1}{2}x) - \cos (\frac{2n+1}{2}x)}{2 \sin (\frac{x}{2})}, \quad x \in (2K\pi, 2(K+1)\pi)
\]

proof:

\[\begin{array}{ll}
2\sin (\frac{x}{2}) \sum_{k=0}^n \sin (kx)
&=\sum_{k=0}^n [\cos (\frac{2k-1}{2}x) -\cos (\frac{2k+1}{2}x) ]\\
&= \cos(\frac{1}{2}x) - \cos (\frac{2n+1}{2}x).
\end{array}
\]

类似地

\[\sum_{k=0}^n \cos (kx) = \frac{\sin(\frac{2k+1}{2}x) + \sin (\frac{1}{2}x)}{2 \sin (\frac{1}{2}x)}, \quad x \in (2K\pi, 2(K+1)\pi)
\]

proof:

\[\begin{array}{ll}
2\sin (\frac{x}{2}) \sum_{k=0}^n \cos (kx)
&=\sum_{k=0}^n [\sin (\frac{2k+1}{2}x) -\sin (\frac{2k-1}{2}x) ]\\
&= \sin(\frac{2k+1}{2}x) + \sin (\frac{1}{2}x).
\end{array}
\]

Fourier-related Transforms

DFT

\[s(x, u) = \frac{1}{\sqrt{N}} e^{\frac{-j2\pi xu}{N}}
\]

\(\mathbf{s}_u^H \mathbf{s}_u = 1\)是显然的, 又注意到

\[\mathbf{s}_u^H \mathbf{s}_{u'} = \frac{1}{N}\sum_{x=0}^{N-1} e^{\frac{-j2\pi x(u-u')}{N}},
\]

\[\sum_{n=0}^{N-1} a^n = \frac{1-a^N}{1-a},
\]

由于

\[e^{-j2\pi x (u - u')} = 1, \forall u \not = u'.
\]

DHT

DISCRETE HARTLEY TRANSFORM

\[s(x, u) = \frac{1}{\sqrt{N}}\mathrm{cas}(\frac{2\pi xu}{N}) = \frac{1}{\sqrt{N}}[\cos (\frac{2\pi ux}{N}) + \sin (\frac{2\pi ux}{N})].
\]
\[2\cos (\frac{2\pi ux}{N})
\cos (\frac{2\pi u'x}{N})
=\cos (\frac{2\pi (u-u')x}{N})
+\cos (\frac{2\pi (u+u')x}{N}) \\
2\sin (\frac{2\pi ux}{N})
\sin (\frac{2\pi u'x}{N})
=\cos (\frac{2\pi (u-u')x}{N})
-\cos (\frac{2\pi (u+u')x}{N}) \\
2\sin (\frac{2\pi ux}{N})
\cos (\frac{2\pi u'x}{N})
=\sin (\frac{2\pi (u+u')x}{N})
-\sin (\frac{2\pi (u-u')x}{N}) \\
\]

故想要证明其为标准正交基, 只需注意到:

\[\sum_{x=0}^{N-1} \sin (\frac{2\pi k x}{N})
=\frac{\cos(\frac{k\pi}{N}) - \cos (\frac{(2N-1)k\pi}{N})}{...},
\]

\(k\not=0\)的时候, 有

\[\cos (\frac{(2N-1)k\pi}{N}) = \cos (\frac{k\pi}{N}),
\]

\[\sum_{x=0}^{N-1}\sin (\frac{2\pi kx}{N}) =0, k\not=0.
\]

类似可得:

\[\sum_{x=0}^{N-1}\cos (\frac{2\pi kx}{N}) =0, k\not=0.
\]

正交性如此是易证明的, 实际上标准性是显然的.

DCT

DISCRETE COSINE TRANSFORM

\[s(x, u) = \alpha (u) \cos (\frac{(2x + 1)u\pi}{2N}), \\
\alpha (u) =
\left \{
\begin{array}{ll}
\sqrt{\frac{1}{N}}, & u=0, \\
\sqrt{\frac{2}{N}}, & u=1,2,\cdots, N-1. \\
\end{array}
\right .
\]

其标准正交的思路和DHT是如出一辙的.

与DFT的联系

  1. 定义
\[g(x) =
\left \{
\begin{array}{ll}
f(x), & x = 0, 1, \cdots, N-1, \\
f(2N-x-1), & u=N, N+1, \cdots, 2N-1. \\
\end{array}
\right .
\]

此时\(g(x) = g(2N-1-x)\);

  1. 计算DFT
\[\mathbf{t}_F = \mathbf{A}_F \mathbf{g} =
\left [
\begin{array}{c}
\mathbf{t}_1 \\
\mathbf{t}_2 \\
\end{array}
\right ].
\]
  1. 定义
\[h(u) = e^{-j\pi u / 2N}, u=0,1,\cdots, N-1, \\
\mathbf{s} = [1 / \sqrt{2}, 1, 1, \cdots, 1]^T.
\]
\[\mathbf{t}_C = \mathrm{Re}\{\mathbf{s\circ h \circ t_1}\}.
\]

其中\(\mathrm{Re}\)表示实部, \(\circ\)表示逐项乘法.

证明是平凡的.

DST

DISCRETE SINE TRANSFORM

\[s(x, u) = \sqrt{\frac{2}{N+1}} \sin (\frac{(x+1)(u+1)\pi}{N+1}).
\]

与DFT的联系

  1. 定义
\[g(x) =
\left \{
\begin{array}{ll}
0, & x = 0, \\
f(x-1), & x = 1, \cdots, N, \\
0, & x = N + 1, \\
-f(2N-x+1), & u=N+1, \cdots, 2N+1. \\
\end{array}
\right .
\]

此时\(g(x) = -g(2N + 2 - x)\).

  1. DFT
\[\mathbf{t}_F = \mathbf{A}_F \mathbf{g} =
\left [
\begin{array}{c}
0 \\
\mathbf{t}_1 \\
0 \\
\mathbf{t}_2 \\
\end{array}
\right ].
\]
\[\mathbf{t}_S = -\mathrm{Imag}\{\mathbf{t}_1\}.
\]

其中\(\mathrm{Imag}\)表虚部.

DFT, DHT, DCT, DST的更多相关文章

  1. 频域分辨率与DFT,DCT,MDCT理解

    搞了这么久音频算法,有些细节还没有很清楚. 比如DFT和DCT有哪些区别,DFT系数为什么会是对称的,同样帧长的数据,各自的频域分辨率是多少? 今天决定搞清楚这些问题, 首先DFT的系数对称(2N点的 ...

  2. 【转】由DFT推导出DCT

    原文地址:http://blog.sina.com.cn/s/blog_626631420100xvxd.htm 已知离散傅里叶变换(DFT)为: 由于许多要处理的信号都是实信号,在使用DFT时由于傅 ...

  3. FFTW中文参考

    据说FFTW(Fastest Fourier Transform in the West)是世界上最快的FFT.为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中 ...

  4. FFTW3学习笔记2:FFTW(快速傅里叶变换)中文参考

    据说FFTW(Fastest Fourier Transform in the West)是世界上最快的FFT.为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中 ...

  5. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

  6. FFTW简介及使用

    http://fftw.org/ FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) i ...

  7. C++开源库集合

    | Main | Site Index | Download | mimetic A free/GPL C++ MIME Library mimetic is a free/GPL Email lib ...

  8. Discrete cosine transform(离散余弦转换)

    A discrete cosine transform (DCT) expresses a finite sequence of data points in terms of a sum of co ...

  9. [转载] OpenCV2.4.3 CheatSheet学习(二)

    二.矩阵操作(拷贝.洗牌.局部访问): src.copyTo(dst) 把src矩阵中的数据拷贝到dst. src.convertTo(dst, type,scale, shift) 缩放并转换到另外 ...

随机推荐

  1. 浅谈MySQL数据库面试必要掌握知识点

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 MySQL官方地址 https://www.mysql.com/ MySQL 8系列最新版本为8.0.27,5系列的最 ...

  2. 日常Java 2021/10/13

    Java枚举 values(), ordinal()和valueOf()方法位于java.lang.Enum类中: values()返回枚举类中所有的值 ordinal()方法可以找到每个枚举常量的索 ...

  3. day05 django框架之路由层

    day05 django框架之路由层 今日内容概要 简易版django请求声明周期流程图(重要) 路由匹配 无名有名分组 反向解析 无名有名解析 路由分发 名称空间 伪静态 虚拟环境 简易版djang ...

  4. Output of C++ Program | Set 17

    Predict the output of following C++ programs. Question 1 1 #include <iostream> 2 using namespa ...

  5. Linux:cut命令...未完待续

    一.定义 正如其名,cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut是以每一行为一个处理对象的,这种机制和sed是一样的. 2.剪切依据 cut命令主要是接受三 ...

  6. SSO(单点登录)示例

    此文为转载文章,出处:https://www.cnblogs.com/jpfss/p/9273680.html SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需 ...

  7. 【Spark】【RDD】从HDFS创建RDD

    1.在HDFS根目录下创建目录(姓名学号) hdfs dfs -mkdir /zwj25 hdfs dfs -ls / 访问 http://[IP]:50070 2.上传本地文件到HDFS hdfs ...

  8. NGNIX 开启socket分发的使用配置

    worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/err ...

  9. java多线程2:Thread中的方法

    静态方法: Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程". 为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面 ...

  10. 【dva】如何监听异步请求是否完成(页面loading)

    方案1.你可以在model里面操作 在model里面的state里面声明一个变量state,默认是false,effect函数执行开始就将其改为true,然后等call()然后结束后又将其改为fals ...