目录
参考资料:
- https://blog.youkuaiyun.com/u010087338/article/details/117696482
- 《数字图像滤波算法的研究及应用》倪层敏 著
1、均值、标准差、方差
- 均值、期望:估算样品集合的平均水平
X ‾ = ∑ i = 1 n X i n \overline{\text{X}}=\dfrac{\sum_{i=1}^nX_i}{n} X=n∑i=1nXi - 标准差:
s = ∑ i = 1 n ( X i − X ‾ ) 2 n − 1 s=\sqrt{\dfrac{\sum_{i=1}^n(X_i-\overline{X})^2}{n-1}} s=n−1∑i=1n(Xi−X)2 - 方差:估算样品集合的散步度,单元维度偏离其均值的程度
s 2 = ∑ i = 1 n ( X i − X ‾ ) 2 n − 1 s^2=\dfrac{\sum_{i=1}^n(X_i-\overline{X})^2}{n-1} s2=n−1∑i=1n(Xi−X)2
2、协方差
- 协方差(covariance):模拟方差的定义,度量各个维度偏离其均值的程度
c o v ( X , Y ) = ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) n − 1 cov(X,Y)=\dfrac{\sum_{i=1}^n(X_i-\overline{X})(Y_i-\overline{Y})}{n-1} cov(X,Y)=n−1∑i=1n(Xi−X)(Yi−Y)
通俗理解:方差是计算一个班级每个人身高的离散程度之和。协方差是计算一个班级每个人(i=0,1,2…)的身高和体重(两个变量)的相互影响,然后求和。
其他公式:(E表示数学期望)
C o v ( X i , X j ) = E [ ( X i − E [ X i ] ) ( X j − E [ X j ] ) ] Cov(X_i,X_j)=E[(X_i-E[X_i])(X_j-E[X_j])] Cov(Xi,Xj)=E[(Xi−E[Xi])(Xj−E[Xj])]
2.1、协方差矩阵
描述多个随机变量之间的协方差的方阵。协方差是两个随机变量的线性相关程度的度量。
如果有n个随机变量 X 1 , X 2 , … , X n X_1,X_2,…,X_n X1,X2,…,Xn,那么它们的协方差矩阵 ∑ \sum ∑可以表示为:
∑ = [ C o v ( X 1 , X 1 ) C o v ( X 1 , X 2 ) ⋯ C o v ( X 1 , X n ) C o v ( X 2 , X 1 ) C o v ( X 2 , X 2 ) ⋯ C o v ( X 1 , X n ) ⋮ ⋮ ⋱ ⋮ C o v ( X n , X 1 ) C o v ( X n , X 2 ) ⋯ C o v ( X n , X n ) ] (c) \sum= \begin{bmatrix} Cov(X_1,X_1)&Cov(X_1,X_2) & \cdots & Cov(X_1,X_n)\\ Cov(X_2,X_1)&Cov(X_2,X_2) & \cdots & Cov(X_1,X_n)\\ \vdots & \vdots & \ddots & \vdots\\ Cov(X_n,X_1)&Cov(X_n,X_2) & \cdots & Cov(X_n,X_n) \end{bmatrix} \tag{c} ∑= Cov(X1,X1)Cov(X2,X1)⋮Cov(Xn,X1)Cov(X1,X2)Cov(X2,X2)⋮Cov(Xn,X2)⋯⋯⋱⋯Cov(X1,Xn)Cov(X1,Xn)⋮Cov(Xn,Xn) (c)
2.1.1、协方差矩阵奇异值分解(SVD)
- 将X的转置( X T X^T XT)与X相乘,等效于计算X和X在每个维度上对应坐标的内积。
- 内积反映两个向量在某个维度上的相似程度,越相似内积越大
- 因此 X T X X^TX XTX的每个元素就是X和X在该维度上坐标的协方差(还没很理解enmm)
协方差矩阵是一个描述两个或多个随机变量之间的线性关系的矩阵,它的元素是各对随机变量之间的协方差。协方差矩阵可以进行奇异分解(SVD),参考下面SVD解析,假设X是一个np的数据矩阵,每一行是一个p维的观测值,每一列斯一个n维的变量,那么X的协方差矩阵S可以写为:
S
=
1
n
−
1
X
T
X
S=\dfrac{1}{n-1}X^TX
S=n−11XTX
S的奇异值分解可以写为:
S
=
U
∑
V
T
S=U\sum V^T
S=U∑VT
其中,U、V都是p*p的正交矩阵(
U
T
U
=
V
V
T
=
I
U^TU=VV^T=I
UTU=VVT=I,
I
I
I是单位矩阵),
∑
\sum
∑是pp的对角矩阵(
∑
=
d
i
a
g
(
σ
1
,
σ
2
,
…
,
σ
p
\sum=diag(\sigma_1,\sigma_2,…,\sigma_p
∑=diag(σ1,σ2,…,σp,
σ
i
\sigma_i
σi是S的第i个奇异值,按降序排列)。
奇异值分解的几何意义是将原始数据在一个新的坐标系下展开,即各个主成分之间没有线性相关性。
- ∑ \sum ∑表示各个主成分对数据方差的贡献,越大的奇异值对应越重要的主成分;
- V表示原始数据在新坐标下的投影;
∑ \sum ∑是主成分对数据方差的贡献,也就是各主成分的长度。它们不是权重,因为它们不一定加起来等于1。
2.1.2、多维度高斯分布
(这部分有些云里雾里,先记下后面再看)
多维高斯分布有2个参数:
μ
\mu
μ:可以用所有样品的均值来估计,代表总体数据的平均值
∑
\sum
∑:就是上述协方差矩阵,代表不同维度的相关联程度
3、奇异值分解(SVD)
参考:https://zhuanlan.zhihu.com/p/448767610?utm_id=0
奇异值分解(SVD,Singular Value Decomposition),主要思想就是主成分分解,求解奇异值。奇异值分解可以看作是对矩阵S进行一个旋转、缩放和再旋转的操作,使得S变成一个对角矩阵。这样可以提取出S的主要特征,例如方向、变化程度和线性相关性。
粗俗理解就是一个矩阵(A)转化为3个矩阵(
U
、
∑
、
V
T
U、\sum、V^T
U、∑、VT)乘积:
A
=
U
∑
V
T
A=U\sum V^T
A=U∑VT
其中:
A:M*N的矩阵;
U
U
U:M*M的正交矩阵(即
U
T
U
=
I
U^TU=I
UTU=I),
U
=
A
A
T
U=AA^T
U=AAT;
∑
\sum
∑:M*N的对角矩阵(除主对角线全部是0),主对角线每个元素为奇异值
V:N*N的正交矩阵,
V
T
=
A
T
A
V^T=A^TA
VT=ATA
4、傅里叶变换
傅里叶(Fourier)变换,简称DFT变换(更准确应该叫离散傅里叶变换),是把满足某些条件的函数表示为三角函数(正弦函数/余弦函数)或它们积分的线性组合,傅里叶变换是对傅里叶级数控制到有限的有限序列长后的离散化。
- 满足一定条件的函数通过一定的分解,可延拓为周期为l的函数,进一步展开为傅里叶级数,即:
f
(
x
)
=
a
0
2
+
∑
n
=
1
∞
(
a
n
c
o
s
n
π
x
l
+
b
n
s
i
n
n
π
x
l
)
f(x)=\dfrac{a_0}{2}+\sum^\infin_{n=1}(a_ncos\dfrac{n\pi x}{l}+b_nsin\dfrac{n\pi x}{l})
f(x)=2a0+n=1∑∞(ancoslnπx+bnsinlnπx)
其中,系数
a
n
a_n
an,
b
n
b_n
bn:
a
n
=
1
l
∫
−
l
l
f
(
x
)
c
o
s
n
π
x
l
d
x
,
(
n
=
0
,
1
,
2
,
…
)
a_n=\dfrac 1 l \int_{-l}^l f(x)cos\dfrac{n\pi x}{l}dx,(n=0,1,2,…)
an=l1∫−llf(x)coslnπxdx,(n=0,1,2,…)
b
n
=
1
l
∫
−
l
l
f
(
x
)
s
i
n
n
π
x
l
d
x
,
(
n
=
1
,
2
,
…
)
b_n=\dfrac 1 l \int_{-l}^l f(x)sin\dfrac{n\pi x}{l}dx,(n=1,2,…)
bn=l1∫−llf(x)sinlnπxdx,(n=1,2,…)
4.1、一维DFT变换
一元连续函数f(x)的傅里叶变换F(u):
F
(
u
)
=
∫
−
∞
∞
f
(
x
)
e
−
j
2
π
u
x
d
x
F(u)=\int_{-\infin}^\infin f(x)e^{-j2\pi ux}dx
F(u)=∫−∞∞f(x)e−j2πuxdx
F(u)的傅里叶反变换为:
f
(
x
)
=
∫
−
∞
∞
F
(
u
)
e
−
j
2
π
u
x
d
u
f(x)=\int_{-\infin}^\infin F(u)e^{-j2\pi ux}du
f(x)=∫−∞∞F(u)e−j2πuxdu
4.1.1、一维离散傅里叶变换
对上述 f ( x ) f(x) f(x)进行等间隔采样,设采样了N个样本,这离散序列可表示为 { f ( 0 ) , f ( 1 ) , … , f ( N − 1 ) } \{f(0),f(1),…,f(N-1)\} {f(0),f(1),…,f(N−1)},记x为离散实变量,u为离散频率变量。
- 一维离散傅里叶变换:
F ( u ) = ∑ x = 0 N − 1 f ( x ) e − j 2 π u x / N , u = 0 , 1 , 2 , … , N − 1 F(u)=\sum_{x=0}^{N-1}f(x)e^{-j2\pi ux/N},u=0,1,2,…,N-1 F(u)=x=0∑N−1f(x)e−j2πux/N,u=0,1,2,…,N−1 - F(u)对反变换:
f ( x ) = 1 N ∑ x = 0 N − 1 F ( u ) e j 2 π u x / N , x = 0 , 1 , 2 , … , N − 1 f(x)=\dfrac{1}{N}\sum_{x=0}^{N-1}F(u)e^{j2\pi ux/N},x=0,1,2,…,N-1 f(x)=N1x=0∑N−1F(u)ej2πux/N,x=0,1,2,…,N−1
5、插值
5.1、最邻近插值(The nearest interpolation)
可以理解为线性插值+选取最邻近的像素,甚至没有插值运算,用处不大
5.2、线性插值
仅在一维空间上进行插值(就是一条直线上)。如下图,已知A、B两点坐标,可以通过公式
y
−
y
0
y
1
−
y
0
=
x
−
x
0
x
1
−
x
0
\dfrac{y-y_0}{y_1-y_0}=\dfrac{x-x_0}{x_1-x_0}
y1−y0y−y0=x1−x0x−x0求出函数表达式,再进行插值。
5.3、双线性插值
就是做了2次线性插值,如下图,已知 A 00 、 A 01 、 A 10 、 A 11 A_{00}、A_{01}、A_{10}、A_{11} A00、A01、A10、A11四个点坐标,求Q点坐标(x, y)?
- y − y 0 y 1 − y 0 = x − x 0 x 1 − x 0 \dfrac{y-y_0}{y_1-y_0}=\dfrac{x-x_0}{x_1-x_0} y1−y0y−y0=x1−x0x−x0可以将 y 0 、 y 1 y_0、y_1 y0、y1提取出来,简化为:
y = x 1 − x x 1 − x 0 y 0 + x − x 0 x 1 − x 0 y 1 y=\dfrac{x_1-x}{x_1-x_0}y_0+\dfrac{x-x_0}{x_1-x_0}y_1 y=x1−x0x1−xy0+x1−x0x−x0y1- 先通过 A 00 、 A 10 A_{00}、A_{10} A00、A10求B0的坐标(这里一次线性插值就行了),通过 A 01 、 A 11 A_{01}、A_{11} A01、A11求B1的坐标
B 0 ( x , y ) ≈ x 1 − x x 1 − x 0 A 00 + x − x 0 x 1 − x 0 A 10 B0(x,y)≈\dfrac{x_1-x}{x_1-x_0}A_{00}+\dfrac{x-x_0}{x_1-x_0}A_{10} B0(x,y)≈x1−x0x1−xA00+x1−x0x−x0A10
B 1 ( x , y ) ≈ x 1 − x x 1 − x 0 A 01 + x − x 0 x 1 − x 0 A 11 B1(x,y)≈\dfrac{x_1-x}{x_1-x_0}A_{01}+\dfrac{x-x_0}{x_1-x_0}A_{11} B1(x,y)≈x1−x0x1−xA01+x1−x0x−x0A11- Q点坐标可以通过 B 0 、 B 1 B_0、B_1 B0、B1求得:
Q ( x , y ) ≈ y 1 − y y 1 − y 0 B 0 + y − y 0 y 1 − y 0 B 1 Q(x,y)≈\dfrac{y_1-y}{y_1-y_0}B_{0}+\dfrac{y-y_0}{y_1-y_0}B_{1} Q(x,y)≈y1−y0y1−yB0+y1−y0y−y0B1- 将2代入3中,化简得:
Q ( x , y ) ≈ y 1 − y y 1 − y 0 B 0 + y − y 0 y 1 − y 0 B 1 ≈ y 1 − y y 1 − y 0 ( x 1 − x x 1 − x 0 A 00 + x − x 0 x 1 − x 0 A 10 ) + y − y 0 y 1 − y 0 ( x 1 − x x 1 − x 0 A 01 + x − x 0 x 1 − x 0 A 11 ) Q(x,y)≈\dfrac{y_1-y}{y_1-y_0}B_{0}+\dfrac{y-y_0}{y_1-y_0}B_{1}\\≈\dfrac{y_1-y}{y_1-y_0}(\dfrac{x_1-x}{x_1-x_0}A_{00}+\dfrac{x-x_0}{x_1-x_0}A_{10})+\dfrac{y-y_0}{y_1-y_0}(\dfrac{x_1-x}{x_1-x_0}A_{01}+\dfrac{x-x_0}{x_1-x_0}A_{11}) Q(x,y)≈y1−y0y1−yB0+y1−y0y−y0B1≈y1−y0y1−y(x1−x0x1−xA00+x1−x0x−x0A10)+y1−y0y−y0(x1−x0x1−xA01+x1−x0x−x0A11)- 双线性插值只会使用相邻4个点,因此4中的分母都是1
另外,从一幅MxM的图像,插值生成一幅NxN的图像。当需要求出 生成图像的坐标(x, y)所对应的原图像坐标是多少时,求出来的原图像坐标很可能会有小数。我们可以分别计算两幅图像的理论上几何中心点坐标(可能是浮点数),然后2幅图像中心点坐标的比值为N:M,来计算偏移。
原图像坐标 ( x m , y m ) , m = 0 , 1 , . . . , M − 1 (x_m,y_m), m=0,1,...,M-1 (xm,ym),m=0,1,...,M−1。几何中心 ( x M − 1 2 , y M − 1 2 ) (x_{\frac{M-1}{2}},y_{\frac{M-1}{2}}) (x2M−1,y2M−1)
生成图像坐标 ( x n , y n ) , n = 0 , 1 , . . . , N − 1 (x_n,y_n) ,n=0,1,...,N-1 (xn,yn),n=0,1,...,N−1。几何中心 ( x N − 1 2 , y N − 1 2 ) (x_{\frac{N-1}{2}},y_{\frac{N-1}{2}}) (x2N−1,y2N−1)
方法1: