课程讲义:http://vision.stanford.edu/teaching/cs131_fall1718/files/04_filters.pdf
图像采样(sampling)和量化(quantization)
首先,自然界中的每一景象都是“continuous”,然而这在计算机的世界观中是不可接受的。所以必须把模拟信号进行采样和量化才能得到图像矩阵,当然了,这一过程产生误差和丢失信息也是不可避免的。图像矩阵的每一个元素都是一个像素点(pixel dot,以下像素点和矩阵元素等价),分辨率(resolution, 单位dpi,dots per inch)表示单位面积之内的像素点个数,当图像矩阵确定时,仅和人眼的直接观察效果有关。像素点的内容决定了图片的类型:
黑白图片:矩阵元素是0-1binary,0表示黑,1表示白。
灰阶图片:矩阵元素是[0,N],0表示黑,N表示白,共切割为N-1阶。
彩色图片:矩阵元素是[0,N],按照一定的标准(如RGB, Lab, HSV, etc.)可以覆盖常见色域的N-1种颜色
##图像直方图(histogram)
概念同统计学中的直方图概念,即:对一定范围内(如每行、每图像块、每幅全图像,etc.)的像素点,按照各个像素的值进行频数统计并作图。
图像函数
前面我们是通过矩阵的角度理解“图像”的,换个角度,把一幅“图像”看作一个函数,定义域是全体像素坐标,映射关系是每个像素坐标处对应的像素值。有了“函数”的抽象,则可以利用信号与系统的知识对函数进行operate。
线性系统(滤波器(filter))
滤波器是处理一幅图获得另一幅图的装置(或者函数、系统等等任何方便理解的名词都可),文中举了移动平均和阈值两种滤波器。其系统函数分别如下:
g
(
n
,
m
)
=
1
9
∑
k
=
n
−
1
n
+
1
∑
l
=
m
−
1
m
+
1
f
[
k
,
l
]
g(n, m)=\dfrac{1}{9}\sum\limits_{k=n-1}^{n+1} \sum\limits_{l=m-1}^{m+1} f[k,l]
g(n,m)=91k=n−1∑n+1l=m−1∑m+1f[k,l]
g
(
n
,
m
)
=
{
1
,
f
(
n
,
m
)
≥
a
0
,
f
(
n
,
m
)
<
a
g(n, m)=\left\{\begin{array}{cc} 1, & f(n, m)\geq a\\ 0, & f(n, m)< a \end{array}\right.
g(n,m)={1,0,f(n,m)≥af(n,m)<a
以下知识主要基于《信号与系统》和《离散时间信号处理》:
1.线性(linear)系统S[f(x, y)]的定义主要有来自两条:
数乘条件:
S
[
α
f
(
n
,
m
)
]
=
α
S
[
f
(
n
,
m
)
]
S[\alpha f(n, m)]=\alpha S[ f(n, m)]
S[αf(n,m)]=αS[f(n,m)]
可加条件:
S
[
f
i
(
n
,
m
)
+
f
j
(
n
,
m
)
]
=
S
[
f
i
(
n
,
m
)
]
+
S
[
f
j
(
n
,
m
)
]
S[f_i(n, m)+f_j(n, m)]=S[f_i(n, m)]+S[f_j(n, m)]
S[fi(n,m)+fj(n,m)]=S[fi(n,m)]+S[fj(n,m)]
综合等价于为:
S
[
α
f
i
(
n
,
m
)
+
β
f
j
(
n
,
m
)
]
=
α
S
[
f
i
(
n
,
m
)
]
+
β
S
[
f
j
(
n
,
m
)
]
S[\alpha f_i(n,m)+\beta f_j(n,m)]=\alpha S[f_i(n,m)]+\beta S[f_j(n,m)]
S[αfi(n,m)+βfj(n,m)]=αS[fi(n,m)]+βS[fj(n,m)]
2.移不变(shift invariant)系统的要求:若
g
(
n
.
m
)
=
S
[
f
(
n
,
m
)
]
g(n.m)=S[f(n,m)]
g(n.m)=S[f(n,m)],则
g
(
n
−
s
,
m
−
t
)
=
S
[
f
(
n
−
s
,
m
−
t
)
]
g(n-s,m-t)=S[f(n-s,m-t)]
g(n−s,m−t)=S[f(n−s,m−t)]
如无特殊说明,本文所指的“系统”均为线性移不变系统(LSI),除了前述3个条件外,其他条件重要性略低,可参考上述两书,此处不再赘述。
另有冲激函数
δ
(
m
,
n
)
\delta(m, n)
δ(m,n)的定义:此函数在原点处的值为1,在其他处的值为0。
则所有图像函数都可以看作产生位移的冲激函数的线性组合,对于原函数的operate可以由移不变性质转化为对于冲激函数的operate,大大化简了信号处理过程。
卷积(convolution)
卷积的表达式:
f
∗
g
(
n
,
m
)
=
∑
l
∑
k
f
(
k
,
l
)
g
(
n
−
k
,
m
−
l
)
f*g(n, m)=\sum_{l} \sum_{k} f(k,l)g(n-k,m-l)
f∗g(n,m)=∑l∑kf(k,l)g(n−k,m−l)
信号输入LSI系统进行process的过程可以看作和系统函数进行卷积的过程。值得注意的是,卷积表达式是无穷的,而图片和计算机处理过程通常是有限的,所以必须考虑边缘效应(edge effect)。如图,对F进行九宫格移动平均得到等大的G,其中计算G左上角格时F的边缘溢出,需要进行扩展(pad),即假设溢出区域的值用于计算,padding的方案包括用0pad、边缘值pad等。
相关(correlation)
顾名思义,相关是用来描述两幅图像内容相似度的函数。定义式如下:
r
f
∗
∗
g
(
k
,
l
)
=
∑
m
∑
n
f
(
n
,
m
)
g
∗
(
n
−
k
,
m
−
l
)
=
∑
m
∑
n
f
(
n
+
k
,
m
+
l
)
g
∗
(
n
,
m
)
=
f
(
k
,
l
)
∗
g
∗
(
−
k
,
−
l
)
r_{f**g}(k,l)=\sum_{m} \sum_{n} f(n,m)g^{*}(n-k,m-l)=\sum_{m} \sum_{n} f(n+k,m+l)g^{*}(n,m)=f(k,l)*g^{*}(-k,-l)
rf∗∗g(k,l)=m∑n∑f(n,m)g∗(n−k,m−l)=m∑n∑f(n+k,m+l)g∗(n,m)=f(k,l)∗g∗(−k,−l)
上式中
g
∗
g^{*}
g∗表示g的共轭对称函数。在实值函数中为g本身。