禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》
这部分内容粗糙了,对其完善。我们常见的图像变换大部分是正交变换,但是不是说图像变换都是正交变换。
这里写目录标题
开始
这里的内容属于信号处理和线性代数的交叉学科。具体来说,它涉及到离散时间信号处理中的变换理论,特别是矩阵表示的离散变换。信号处理中的变换,如离散傅里叶变换(DFT)、离散余弦变换(DCT)等,可以将信号从一个域(如时域)转换到另一个域(如频域),从而进行更有效的分析和处理。如何从原始数据(例如时间序列或图像像素值)转换到变换域中的表示形式,然后再如何从变换域返回到原始数据的过程。这种变换在信号处理、图像处理以及数据压缩等领域中非常常见。
说来话就长了,从线性组合到矩阵表示,从一维到二维,从线性变换到正交变换。
离散时间信号的变换公式:
T
(
u
)
=
∑
x
=
0
N
−
1
f
(
x
)
h
(
x
,
u
)
T(u) = \sum_{x=0}^{N-1} f(x) h(x, u)
T(u)=x=0∑N−1f(x)h(x,u)
这个公式表示离散时间信号
f
(
x
)
f(x)
f(x)通过一个变换函数
h
(
x
,
u
)
h(x, u)
h(x,u)变换为新的信号
T
(
u
)
T(u)
T(u)。其中,
N
N
N是信号的长度,
x
x
x是信号的索引,
u
u
u是变换后的信号的索引。
矩阵表示
(
T
(
0
)
T
(
1
)
⋮
T
(
N
−
1
)
)
=
(
h
(
0
,
0
)
h
(
1
,
0
)
⋯
h
(
N
−
1
,
0
)
h
(
0
,
1
)
h
(
1
,
1
)
⋯
h
(
N
−
1
,
1
)
⋮
⋮
⋱
⋮
h
(
0
,
N
−
1
)
h
(
1
,
N
−
1
)
⋯
h
(
N
−
1
,
N
−
1
)
)
(
f
(
0
)
f
(
1
)
⋮
f
(
N
−
1
)
)
\begin{pmatrix} T(0) \\ T(1) \\ \vdots \\ T(N-1) \end{pmatrix} = \begin{pmatrix} h(0, 0) & h(1, 0) & \cdots & h(N-1, 0) \\ h(0, 1) & h(1, 1) & \cdots & h(N-1, 1) \\ \vdots & \vdots & \ddots & \vdots \\ h(0, N-1) & h(1, N-1) & \cdots & h(N-1, N-1) \end{pmatrix} \begin{pmatrix} f(0) \\ f(1) \\ \vdots \\ f(N-1) \end{pmatrix}
T(0)T(1)⋮T(N−1)
=
h(0,0)h(0,1)⋮h(0,N−1)h(1,0)h(1,1)⋮h(1,N−1)⋯⋯⋱⋯h(N−1,0)h(N−1,1)⋮h(N−1,N−1)
f(0)f(1)⋮f(N−1)
这个矩阵表示将离散时间信号
f
f
f通过矩阵
H
H
H变换为新的信号
T
T
T。这样的公式用于表示一个线性变换,其中:
- 左侧的列向量 ( T ( 0 ) T ( 1 ) ⋮ T ( N − 1 ) ) \begin{pmatrix} T(0) \\ T(1) \\ \vdots \\ T(N-1) \end{pmatrix} T(0)T(1)⋮T(N−1) 是变换后的结果。
- 右侧的 N × N N \times N N×N矩阵是一个变换矩阵,其元素由 h ( i , j ) h(i, j) h(i,j)给出。
- 最右侧的列向量 ( f ( 0 ) f ( 1 ) ⋮ f ( N − 1 ) ) \begin{pmatrix} f(0) \\ f(1) \\ \vdots \\ f(N-1) \end{pmatrix} f(0)f(1)⋮f(N−1) 是变换前的输入。
逆变换公式:
f ( x ) = ∑ x = 0 N − 1 T ( u ) κ ( x , u ) f(x) = \sum_{x=0}^{N-1}T(u) \kappa(x, u) f(x)=x=0∑N−1T(u)κ(x,u)
- 矩阵表示:
( f ( 0 ) f ( 1 ) ⋮ f ( N − 1 ) ) = ( κ ( 0 , 0 ) κ ( 1 , 0 ) ⋯ κ ( N − 1 , 0 ) κ ( 0 , 1 ) κ ( 1 , 1 ) ⋯ κ ( N − 1 , 1 ) ⋮ ⋮ ⋱ ⋮ κ ( 0 , N − 1 ) κ ( 1 , N − 1 ) ⋯ κ ( N − 1 , N − 1 ) ) ( T ( 0 ) T ( 1 ) ⋮ T ( N − 1 ) ) \begin{pmatrix} f(0) \\ f(1) \\ \vdots \\ f(N-1) \end{pmatrix} = \begin{pmatrix} \kappa(0, 0) & \kappa(1, 0) & \cdots & \kappa(N-1, 0) \\ \kappa(0, 1) & \kappa(1, 1) & \cdots & \kappa(N-1, 1) \\ \vdots & \vdots & \ddots & \vdots \\ \kappa(0, N-1) & \kappa(1, N-1) & \cdots & \kappa(N-1, N-1) \end{pmatrix} \begin{pmatrix} T(0) \\ T(1) \\ \vdots \\ T(N-1) \end{pmatrix} f(0)f(1)⋮f(N−1) = κ(0,0)κ(0,1)⋮κ(0,N−1)κ(1,0)κ(1,1)⋮κ(1,N−1)⋯⋯⋱⋯κ(N−1,0)κ(N−1,1)⋮κ(N−1,N−1) T(0)T(1)⋮T(N−1)
线性变换
正变换
正变换是从原始空间(如时域或空间域)到变换域(如频域或其他变换域)的转换。这个过程通常涉及到矩阵运算,其中原始数据向量与变换矩阵相乘得到变换域中的表示。
假设有一个 n n n维的向量 x \mathbf{x} x,它代表了原始数据(如时间序列或图像的一行像素值)。变换矩阵 T \mathbf{T} T 是一个 n × n n \times n n×n的矩阵,那么正变换可以表示为:
y = T ⋅ x \mathbf{y} = \mathbf{T} \cdot \mathbf{x} y=T⋅x
这里的 y \mathbf{y} y就是在变换域中的表示。
逆变换
逆变换是从变换域回到原始空间的过程,即通过已知的变换域表示恢复原始数据。这个过程同样涉及到矩阵运算,但这次是使用变换矩阵的逆矩阵(后面正交矩阵是其转置)。
如果 T \mathbf{T} T是可逆的,那么逆变换可以表示为:
x = T − 1 ⋅ y \mathbf{x} = \mathbf{T}^{-1} \cdot \mathbf{y} x=T−1⋅y
在某些情况下,如果 T \mathbf{T} T不是方阵或者不是可逆的,可能会使用 T \mathbf{T} T的伪逆矩阵或者其转置来进行逆变换。
矩阵表示的离散变换是信号处理中一个非常强大的工具,允许以数学上简洁的方式表示和分析信号的变换过程,在信号处理中具有广泛的应用,包括但不限于:
频谱分析:通过离散傅里叶变换(DFT),可以将时域信号转换为频域信号,从而分析信号的频率成分。
数据压缩:通过离散余弦变换(DCT),可以将信号转换为一组系数,然后通过舍弃高频系数来实现数据压缩。
滤波:通过设计适当的变换矩阵,我们可以实现各种滤波器,如低通滤波器、高通滤波器等。
两者的关系
正变换的核函数
h
(
x
,
u
)
h(x, u)
h(x,u)与逆变换
κ
(
x
,
u
)
\kappa(x, u)
κ(x,u)的核函数之间有约束关系。
T
=
(
h
(
0
,
0
)
h
(
1
,
0
)
⋯
h
(
N
−
1
,
0
)
h
(
0
,
1
)
h
(
1
,
1
)
⋯
h
(
N
−
1
,
1
)
⋮
⋮
⋱
⋮
h
(
0
,
N
−
1
)
h
(
1
,
N
−
1
)
⋯
h
(
N
−
1
,
N
−
1
)
)
\bm T = \begin{pmatrix} h(0, 0) & h(1, 0) & \cdots & h(N-1, 0) \\ h(0, 1) & h(1, 1) & \cdots & h(N-1, 1) \\ \vdots & \vdots & \ddots & \vdots \\ h(0, N-1) & h(1, N-1) & \cdots & h(N-1, N-1) \end{pmatrix}
T=
h(0,0)h(0,1)⋮h(0,N−1)h(1,0)h(1,1)⋮h(1,N−1)⋯⋯⋱⋯h(N−1,0)h(N−1,1)⋮h(N−1,N−1)
T
−
1
=
(
κ
(
0
,
0
)
κ
(
1
,
0
)
⋯
κ
(
N
−
1
,
0
)
κ
(
0
,
1
)
κ
(
1
,
1
)
⋯
κ
(
N
−
1
,
1
)
⋮
⋮
⋱
⋮
κ
(
0
,
N
−
1
)
κ
(
1
,
N
−
1
)
⋯
κ
(
N
−
1
,
N
−
1
)
)
\bm T^{-1} = \begin{pmatrix} \kappa(0, 0) & \kappa(1, 0) & \cdots & \kappa(N-1, 0) \\ \kappa(0, 1) & \kappa(1, 1) & \cdots & \kappa(N-1, 1) \\ \vdots & \vdots & \ddots & \vdots \\ \kappa(0, N-1) & \kappa(1, N-1) & \cdots & \kappa(N-1, N-1) \end{pmatrix}
T−1=
κ(0,0)κ(0,1)⋮κ(0,N−1)κ(1,0)κ(1,1)⋮κ(1,N−1)⋯⋯⋱⋯κ(N−1,0)κ(N−1,1)⋮κ(N−1,N−1)
正交变换
正交变换是一个线性变换,它在欧几里得空间中保持向量的长度(模)和两个向量之间的夹角不变。这种变换可以被认为是保持了几何形状不变的变换。在数学中,特别是在线性代数中,正交变换常通过正交矩阵来表示。
定义
在一个 n n n维的欧几里得空间 R n \mathbb{R}^n Rn中,一个线性变换 T : R n → R n T:\mathbb{R}^n \to \mathbb{R}^n T:Rn→Rn被称为正交变换,如果它满足以下条件之一:
-
保持内积不变:对于所有的向量 v , w ∈ R n \mathbf{v}, \mathbf{w} \in \mathbb{R}^n v,w∈Rn,有
( T ( v ) , T ( w ) ) = ( v , w ) , (T(\mathbf{v}), T(\mathbf{w})) = (\mathbf{v}, \mathbf{w}), (T(v),T(w))=(v,w),
其中 ( ⋅ , ⋅ ) (\cdot, \cdot) (⋅,⋅)表示标准的内积。 -
保持长度不变:对于所有向量 v ∈ R n \mathbf{v} \in \mathbb{R}^n v∈Rn,有
∥ T ( v ) ∥ = ∥ v ∥ , \|T(\mathbf{v})\| = \|\mathbf{v}\|, ∥T(v)∥=∥v∥,
这里的 ∥ ⋅ ∥ \|\cdot\| ∥⋅∥表示向量的欧几里得范数。 -
保持正交性:如果 v \mathbf{v} v和 w \mathbf{w} w正交,则 T ( v ) T(\mathbf{v}) T(v)和 T ( w ) T(\mathbf{w}) T(w)也正交。
矩阵表示
如果一个 n × n n \times n n×n的实矩阵 Q Q Q表示一个正交变换 T T T,那么该矩阵 Q Q Q称为正交矩阵,并且满足以下性质:
- Q Q Q的列向量构成 R n \mathbb{R}^n Rn的一个标准正交基。
- Q Q Q的行向量也构成 R n \mathbb{R}^n Rn的一个标准正交基。
-
Q
Q
Q的逆矩阵等于它的转置矩阵,即
Q − 1 = Q T . Q^{-1} = Q^{T}. Q−1=QT. - Q Q Q的行列式的绝对值为1,这意味着 det ( Q ) = ± 1 \det(Q) = \pm 1 det(Q)=±1。如果行列式为1,则 Q Q Q代表了一个旋转;如果行列式为-1,则 Q Q Q代表了一个反射。
几何解释
在几何上,正交变换可以看作是在保持距离和角度不变的情况下对空间进行操作。这样的变换包括但不限于:
- 旋转:绕某个轴的旋转,保持空间中所有点的距离不变。
- 反射:关于某个平面或直线的镜像变换。
- 螺旋运动:结合了旋转和平移的变换,但是平移部分通常不在正交变换的定义范围内。
二维变换(图像变换)
正向离散变换
正向离散变换的一般关系式为:
T
(
u
,
v
)
=
∑
x
=
0
M
−
1
∑
y
=
0
N
−
1
f
(
x
,
y
)
h
(
x
,
y
,
u
,
v
)
T(u, v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) h(x, y, u, v)
T(u,v)=x=0∑M−1y=0∑N−1f(x,y)h(x,y,u,v)
其中,
u
=
0
,
1
,
⋯
,
M
−
1
u = 0, 1, \cdots, M-1
u=0,1,⋯,M−1,
v
=
0
,
1
,
⋯
,
N
−
1
v = 0, 1, \cdots, N-1
v=0,1,⋯,N−1。
T
(
u
,
v
)
T(u, v)
T(u,v)是变换系数,
h
(
x
,
y
,
u
,
v
)
h(x, y, u, v)
h(x,y,u,v)是正变换的核函数。
逆向离散变换
逆向离散变换的一般关系式为:
f
(
x
,
y
)
=
∑
u
=
0
M
−
1
∑
v
=
0
N
−
1
T
(
u
,
v
)
κ
(
x
,
y
,
u
,
v
)
f(x, y) = \sum_{u=0}^{M-1} \sum_{v=0}^{N-1} T(u, v) \kappa(x, y, u, v)
f(x,y)=u=0∑M−1v=0∑N−1T(u,v)κ(x,y,u,v)
其中,
x
=
0
,
1
,
⋯
,
M
−
1
x = 0, 1, \cdots, M-1
x=0,1,⋯,M−1,
y
=
0
,
1
,
⋯
,
N
−
1
y = 0, 1, \cdots, N-1
y=0,1,⋯,N−1。
κ
(
x
,
y
,
u
,
v
)
\kappa(x, y, u, v)
κ(x,y,u,v)是逆变换的核函数。
可分离核函数
如果正变换的核函数
h
(
x
,
y
,
u
,
v
)
h(x, y, u, v)
h(x,y,u,v)可以表示为:
h
(
x
,
y
,
u
,
v
)
=
h
1
(
x
,
u
)
h
2
(
y
,
v
)
h(x, y, u, v) = h_1(x, u) h_2(y, v)
h(x,y,u,v)=h1(x,u)h2(y,v)
则称该核函数是可分离的。具有可分离核函数的二维变换可以分解为相应的一维行变换和列变换计算。
对称核函数
如果 h 1 ( y , v ) = h 2 ( y , v ) h_1(y, v) = h_2(y, v) h1(y,v)=h2(y,v),则称正变换的核函数是对称的。逆变换的核函数也有相同的结论。
矩阵形式
常用的正交变换都是可分离核函数,且是对称核函数。在这种情况的矩阵表示,二维离散变换可以分解为一系列一维离散变换的组合。具体来说,对于一个 M × N M \times N M×N的二维矩阵 f f f,其2D变换 F F F可以通过以下步骤计算:
- 行变换:首先,对矩阵 f f f的每一行进行1DT,得到一个中间矩阵 F ′ F' F′。
- 列变换:然后,对矩阵$F’ 的每一列进行 1 D T ,得到最终的 2 D T 结果 的每一列进行1DT,得到最终的2DT结果 的每一列进行1DT,得到最终的2DT结果F$。
数学上,这个过程可以表示为:
F
=
W
M
f
W
N
T
F = W_M f W_N^T
F=WMfWNT
其中,
W
M
W_M
WM和
W
N
W_N
WN分别是
M
×
M
M \times M
M×M和$ N \times N$的1DT矩阵。
同样,逆变换也可以通过类似的步骤实现:
f
=
W
M
−
1
F
(
W
N
−
1
)
T
f = W_M^{-1} F (W_N^{-1})^T
f=WM−1F(WN−1)T
其中,
W
M
−
1
W_M^{-1}
WM−1和
W
N
−
1
W_N^{-1}
WN−1分别是
W
M
W_M
WM和
W
N
W_N
WN的逆矩阵。这种分解方法利用了2D DFT的可分离性,使得计算更加高效。
常用的图像变换(包括正交变换和非正交变换)
图像处理中使用变换域方法的关键步骤。
- 变换图像 (Transform the image):将图像从空间域转换到变换域。这通常通过傅里叶变换、离散余弦变换等方法实现。
- 输入图像在空间域。
- 在变换域中执行任务 (Carry the task(s) in the transformed domain):在变换域中对图像进行处理,例如滤波、压缩、增强等操作。
- 通过变换将图像转换到变换域。
- 在变换域中执行操作。
- 应用逆变换返回到空间域 (Apply inverse transform to return to the spatial domain):将处理后的图像从变换域转换回空间域,得到最终的处理结果。
- 通过逆变换将处理后的图像转换回空间域,得到最终的输出图像。
这种变换域方法在图像处理中非常常见,因为它可以简化某些操作,例如滤波和压缩,使得这些操作在变换域中更容易实现。
常用的正交变换
图像正交变换是一种用于图像处理的技术,它通过对图像进行特定的线性变换来转换图像数据,以便更好地分析、处理或压缩图像。正交变换在图像处理中非常重要,它们能够将图像中的信息重新组织成更易于处理的形式,并且通常能够去除数据间的冗余,从而实现有效的数据压缩和噪声去除。
图像正交变换的类型
-
离散余弦变换(DCT, Discrete Cosine Transform)
- DCT 是一种广泛应用于图像和视频压缩的标准技术,尤其是在JPEG图像压缩标准中。DCT 将图像从空间域转换到频率域,这样可以突出图像的主要特征,同时去除高频噪声。DCT 的主要优点是它只使用实数运算,而且结果是实数系数,便于处理和存储。
-
离散傅里叶变换(DFT, Discrete Fourier Transform)
- DFT 是一种通用的正交变换,它可以将信号从时间域(或空间域)转换到频率域。DFT 使用复数表示,因此结果包含实部和虚部。快速傅里叶变换(FFT)是一种高效的算法,用于计算DFT及其逆变换。在图像处理中,DFT 可以帮助识别图像中的周期性结构,如纹理。
-
哈尔变换(Haar Transform)
- 哈尔变换是一种简单的正交变换,它基于哈尔基函数。哈尔基函数是一些简单的方波函数,哈尔变换可以有效地检测图像中的边缘和其他突变特征。哈尔变换主要用于图像压缩和特征提取。
-
小波变换(Wavelet Transform)
- 小波变换是一种多分辨率分析工具,它可以提供时间和频率上的局部化信息。与传统的傅里叶变换相比,小波变换更适合于分析非平稳信号,因为它可以在不同的尺度上提供不同的分辨率。在图像处理中,小波变换可以用于边缘检测、图像增强、去噪和压缩。
-
K-L变换(Karhunen-Loève Transform, KLT)
- K-L变换是一种基于统计特性的正交变换,它将图像投影到一组最佳的正交基上,这些基向量是从图像协方差矩阵的特征向量中获得的。K-L变换能够最大化地保持图像的信息,并最小化数据的冗余,因此非常适合于图像压缩。如数据分析中进行主成分分析(PCA)。
除了 K-L 变换之外,其他正交变换都是行列可分离的,并且具有快速算法。
非正交变换
在实际应用中,非正交变换也是非常常见的。非正交变换指的是变换基不是正交的,也就是说,变换基向量之间不是互相垂直的。这种变换在许多领域都有广泛的应用,特别是在信号处理、图像处理和机器学习中。
1. 独立成分分析 (ICA)
独立成分分析是一种统计技术,用于从多变量信号中分离出统计独立的信号源。ICA 的变换基一般不是正交的,因为信号源之间的关系通常是复杂的,不一定满足正交条件。
2. 字典学习 (Dictionary Learning)
字典学习是一种方法,用于从一组训练样本中学习一个过完备字典,使得样本可以表示为字典中几个原子的线性组合。这种字典往往是非正交的,因为它包含多个可能重叠的基础元素。
3. 稀疏编码 (Sparse Coding)
稀疏编码的目标是寻找一个稀疏的表示,使得信号可以由少量的非零系数表示。这种表示通常是非正交的,因为它允许信号在多个不同的基函数上表示,而不是仅限于正交基。
4. 深度学习中的卷积核
在深度学习中,卷积神经网络 (CNN) 使用的卷积核通常不是正交的。这些卷积核可以捕捉到输入数据中的复杂特征,而不必局限于正交的基函数。
5. 图像处理中的超分辨率
超分辨率算法通常使用非正交的变换来提高图像的分辨率。这种方法可以捕捉到更多的细节,而不仅仅是基于正交基的变换。
6. 自然语言处理中的词嵌入
在自然语言处理中,词嵌入(如 Word2Vec 或 GloVe)通常使用非正交的空间来表示词汇。这种表示方式能够捕捉词汇之间的语义关系,而不仅仅是简单的正交关系。
7. 模式识别
在模式识别中,特征选择和提取常常涉及非正交的特征集。这些特征可能在某些情况下相互依赖,但仍然能有效地用于分类和识别任务。
8. 压缩感知 (Compressive Sensing)
压缩感知是一种信号处理技术,用于从少量测量中重建信号。压缩感知中的测量矩阵通常是随机的,且不一定是正交的,但仍然能保证信号的可靠恢复。
非正交变换在实际应用中重要,是因为它们能够更好地适应现实世界的数据特性,捕捉到更加复杂的关系和结构,从而在某些场景下提供更好的性能。