有没有学会多少数字图像处理知识不清楚,但熟练了不少latex的公式语法……
简答(8*3)
概述:数字图像化过程
- 采样:采样的实质就是用多少点来描述一幅图像,采样结果质量的高低就是图像分辨率。
- 分色:指RGB图像数据被转换为最接近等量的青、品红、黄、黑(CMYK)数值的工艺。
- 量化:量化指将采样后离散图像的值表示为与其幅度成比例的整数。
- 编码:图像数字化后得到的图像数据量十分巨大,由于图像数据本身固有的冗余性和相关性,可以使用编码将大的图像数据文件转换成较小的图像数据文件。
图像压缩算法:给出两个压缩算法(符号编码,统计编码,变换编码,模型编码)各种编码包括哪些,简单描述基本原理。
- 统计编码:
- huffman编码:
- (1)将信源符号xi按出现概率从大到小排序;
- (2)将最小的两个信源相加,重复这一步骤,始终将概率较大的分支放在上部,直到只剩下一个信源符号且概率为1;
- (3)对每对组合的上边与下边标号1与0;
- (4)由每个信源到概率1.0处的路径形成的0、1逆序列为赫夫曼编码。
- 香农-费诺编码:跟huffman编码无本质区别,不过是自上而下的
- (1)将信源符号按出现的概率从大到小排列;
- (2)将信源分成两部分,使两部分的概率尽可能接近,重复直至不可再分;
- (3)从左至右依次为这两部分标记0、1;
- (4)将各个部分标记的0、1串拼接起来得到编码。
- huffman编码:
- 变换编码:
- 基本原理:图像数据一般具有较强的相关性,图像经过正交变换后,分散在原空间的图像数据在新的坐标系中得到集中,只要删除接近于0的系数并且对较小的系数进行粗量化,保留包含图像主要信息的系数,以此进行编码。
- 包括:基于FFT的图像压缩技术、基于DCT 的图像压缩技术、基于哈达玛变换的图像压缩技术。
形态学运算
- 膨胀:B对A的膨胀实质上就是一个由所有平移z组成的集合,这些平移量满足:当B的反射集平移了z之后,与集合A的交集不为空。
- 腐蚀:B对A的腐蚀即为平移量z的集合,这些平移量满足集合B平移z之后仍然属于集合A。
- 开运算:先腐蚀、再膨胀,可以去除轮廓毛刺,分离图像轮廓。
- 闭运算:先膨胀、再腐蚀,可以去除图像中的小孔,填平轮廓缺口。
滤波器(巴特沃斯、理想)及他们的公式
- 理想低通滤波器:指可以截断傅里叶变换中的所有处在离变换原点的距离比指定距离
D
0
D_0
D0要远的位置。传递函数:
H ( u , v ) = { 1 D ( u , v ) ≤ D 0 0 D ( u , v ) > D 0 H(u,v)= \begin{cases} 1&D(u,v)\leq D_0 \\ 0&D(u,v)>D_0 \\ \end{cases} H(u,v)={10D(u,v)≤D0D(u,v)>D0
D 0 D_0 D0是一个非负整数,被称为截止频率, D ( u , v ) D(u,v) D(u,v)是指点 ( u , v ) (u,v) (u,v)到频率平面原点的距离, D ( u , v ) = u 2 + v 2 D(u,v)=\sqrt{u^2+v^2} D(u,v)=u2+v2。 - 巴特沃斯低通滤波器:物理上可以实现的一种低通滤波器为巴特沃斯低通滤波器,一个阶为
n
n
n,截止频率为
D
0
D_0
D0的巴特沃斯低通滤波器的传递函数为:
H ( u , v ) = 1 1 + [ D ( u , v ) / D 0 ] 2 n H(u,v)=\frac{1}{1+[D(u,v)/D_0]^{2n}} H(u,v)=1+[D(u,v)/D0]2n1 - 低通滤波去掉了高频部分,即去掉了细节,使图像变得模糊。
- 理想高通滤波器和巴特沃斯高通滤波器与低通滤波相反,保留了高频部分,即保留了细节和轮廓。
- 带通和带阻滤波器:允许一定频率范围内的信号通过而阻止其他频率范围信号通过,传递函数为:
H ( u , v ) = { 1 D 1 ( u , v ) ≤ D 0 或 D 2 ( u , v ) ≤ D 0 0 其 他 H(u,v)= \begin{cases} 1&D_1(u,v) \leq D_0 或 D_2(u,v) \leq D_0\\ 0&其他 \\ \end{cases} H(u,v)={10D1(u,v)≤D0或D2(u,v)≤D0其他
D 1 = ( u − u 0 ) 2 + ( v − v 0 ) 2 D 2 = ( u + u 0 ) 2 + ( v + v 0 ) 2 \begin{aligned} D_1=\sqrt{(u-u_0)^2+(v-v_0)^2} \\ D_2=\sqrt{(u+u_0)^2+(v+v_0)^2} \end{aligned} D1=(u−u0)2+(v−v0)2D2=(u+u0)2+(v+v0)2
图像特征描述
- 颜色:直方图
- 边界:
- 边界长度、边界的直径。
- 形状数:值最小的4链码的一阶差分码。
- 傅里叶描述子:傅里叶的高频部分对应一些细节,低频分布对应基本形状。
- 统计矩:描述对边界的一维表示。
- 区域:
- 区域面积:描述区域的大小
- 区域中心
- 纹理:
- 统计法:基于图像的灰度直方图的特征描述纹理
- 傅里叶频谱法:全局纹理模式在频域中容易得到分辨
- 不变矩
- 特征点:SIFT、SURF
图像增强算法
- 直接灰度变换:
- 求反:适用于增强嵌入图像暗色区域的白色或灰色细节。
- 线性灰度变换:将需要的图像细节灰度拉伸,不需要的灰度进行压缩,增强对比度
- 对数变换:增强图像暗的部分,频谱中低部分
- 幂函数:增强图像亮的部分,频谱中高部分
- 直方图均衡化:将原属图像不均匀的直方图变成均匀分布的形式,使图像高对比同时具有多变的灰度。
程序设计题(8*3)
快速傅里叶
图像的二维快速傅里叶变换可以看成先对行做一次一维快速傅里叶变换,再对列做一次快速傅里叶变换。
首先,一维离散傅里叶变换公式为:
F
(
u
)
=
∑
x
=
0
M
−
1
f
(
x
)
e
−
i
2
π
u
x
/
M
,
u
=
0
,
1
,
2
,
.
.
.
,
M
−
1
F(u)=\sum_{x=0}^{M-1}f(x)e^{-i2\pi ux/M},u=0,1,2,...,M-1
F(u)=∑x=0M−1f(x)e−i2πux/M,u=0,1,2,...,M−1
设原始信号序列为
f
(
x
)
f(x)
f(x),长度为
L
(
L
=
2
N
)
,
x
=
0
,
1
,
2
,
.
.
.
,
L
−
1
,
W
L
u
x
=
e
−
i
2
π
u
x
/
L
=
c
o
s
(
2
π
u
x
/
L
)
+
i
s
i
n
(
2
π
u
x
/
L
)
L(L=2^N),x=0,1,2,...,L-1,W_L^{ux}=e^{-i2\pi ux/L}=cos(2\pi ux/L)+isin(2\pi ux/L)
L(L=2N),x=0,1,2,...,L−1,WLux=e−i2πux/L=cos(2πux/L)+isin(2πux/L),因此按
x
x
x奇偶性分为两组:
{
f
1
(
x
)
=
f
(
2
r
)
r
=
0
,
1
,
2
,
.
.
.
,
L
/
2
−
1
f
2
(
x
)
=
f
(
2
r
+
1
)
r
=
0
,
1
,
2
,
.
.
.
,
L
/
2
−
1
\begin{cases} f_1(x)=f(2r)&r=0,1,2,...,L/2-1 \\ f_2(x)=f(2r+1)&r=0,1,2,...,L/2-1 \end{cases}
{f1(x)=f(2r)f2(x)=f(2r+1)r=0,1,2,...,L/2−1r=0,1,2,...,L/2−1
得到蝶形公式:
{
F
(
u
)
=
F
1
(
u
)
+
W
L
u
F
2
(
u
)
F
(
u
+
L
/
2
)
=
F
1
(
u
)
−
W
L
u
F
2
(
u
)
\begin{cases} F(u)=F_1(u)+W_L^uF_2(u) \\ F(u+L/2)=F_1(u)-W_L^uF_2(u) \end{cases}
{F(u)=F1(u)+WLuF2(u)F(u+L/2)=F1(u)−WLuF2(u)
根据上式,计算
L
L
L长度序列时,只需要计算L/2长度的序列,以此类推,最终只需要计算长度为2的序列。通过递归或递推可实现。
直方图均衡化
- 遍历图像,统计每个灰度级下像素的个数
- 计算每个灰度的像素所占的比例
- 按比例重新计算每个灰度级的灰度
gray = []
N = image.row * image.col
out = image.clone()
for row,col in image
gray[image.at(row,col)]++
gray_freq = []
// 计算频率
for g in gray:
gray_freq = g / N
gray_total = []
// 计算累积
for i in range(0,255):
gray_total[i] = i > 0 ? gray_total[i-1]+gray_freq[i]:gray_freq[0]
for row,col in out:
out.at(row,col) = Math.floor(gray_total[image.at(row,col)]*255)
return out
算术压缩
算术编码不是将单个信源符号映射成一个码字,而是把整个信源表示成实数线上的0到1之间的一个区间,其长度等于该序列的概率,再在该区间内选择一个代表性的小数转换为二进制,作为其实际的编码输出。
// 根据出现的频率初始化初始区间的映射,形如:
map = {
'00':{low:0,high:0.1},
'01':{low:0.1,high:0.5},
...
}
// 编码过程
range = 1.0
low = 0.0;
high = 0.0
for sign in code:
range_high = map[sign].high
range_low = map[sign].low
low = low + range * range_low
high = low + range * range_high
range = high - low
// 编码结果在[low,high)中选择
res = low
print(res)
// 解码过程
range = 1
low = 0
rr = ''
while res:
res = (res - low) / range
// 根据区间查map表得知是哪个信源
sign = map.find(r)
rr += sign
range = sign.high - sign.low
low = sign.low
print(rr)
canny图像分割
- 利用高斯滤波平滑图像。
- 计算滤波后图像的幅度和方向。
- 对梯度幅度应用非极大值抑制,找出图像梯度中的局部极大值点,把其他局部极大值点置零,得到细化的边缘。
- 用双阈值算法检测和边缘连接,使用两个阈值 T 1 T_1 T1和 T 2 T_2 T2, T 1 T_1 T1用来找到每一条线段; T 2 T_2 T2用来在线段的每个方向上寻找边缘断裂处,连接这些边缘点。
论述题(13*3)
采样定理
设
f
(
x
)
f(x)
f(x)是一带限函数,即
F
(
u
)
=
0
,
∣
u
∣
>
Ω
M
F(u)=0,|u| > \Omega_M
F(u)=0,∣u∣>ΩM,
Ω
M
\Omega_M
ΩM即为
f
(
x
)
f(x)
f(x)的最高频率。如果采样频率
Ω
s
>
2
Ω
M
\Omega_s > 2\Omega_M
Ωs>2ΩM,或采样周期
T
<
1
2
Ω
M
T<\frac{1}{2\Omega_M}
T<2ΩM1,其中
Ω
s
=
1
/
T
\Omega_s = 1/T
Ωs=1/T,T为采样周期。那么
f
(
x
)
f(x)
f(x)就唯一地由其样值
f
s
(
x
)
f_s(x)
fs(x)决定。临界采样率
2
Ω
M
2\Omega_M
2ΩM被称为奈奎斯特频率,
1
2
Ω
M
\frac{1}{2\Omega_M}
2ΩM1被称为奈奎斯特间隔。
卷积定理
函数卷积的傅里叶变换是函数傅里叶变换的乘积,分为时域卷积和频域卷积。时域内的卷积对应频域内的乘积,同样频域内的卷积对应时域内的乘积。
- 卷积定理公式:
f ( u , v ) ∗ h ( u , v ) ↔ F ( u , v ) ⋅ G ( u , v ) f(u,v)*h(u,v) \leftrightarrow F(u,v) \cdot G(u,v) f(u,v)∗h(u,v)↔F(u,v)⋅G(u,v) - 卷积公式:
f ( x , y ) ∗ g ( x , y ) = ∬ f ( u , v ) g ( x − u , y − v ) d u d v f(x,y)*g(x,y)=\iint f(u,v)g(x-u,y-v)dudv f(x,y)∗g(x,y)=∬f(u,v)g(x−u,y−v)dudv
约束最小二乘滤波
- 约束最小二乘滤波只要求噪声方差和均值的知识,而这些参数经常能通过一幅给定的退化图像计算出来。
- 约束最小二乘滤波所处理的每一幅图像都能产生最优的结果。一幅图像的输入输出可以表示成
g
(
x
,
y
)
=
H
[
f
(
x
,
y
)
]
+
n
(
x
,
y
)
g(x,y)=H[f(x,y)]+n(x,y)
g(x,y)=H[f(x,y)]+n(x,y),表达为向量-矩阵形式为
g
=
Hf+n
\textbf{g = Hf+n}
g = Hf+n,约束最小二乘滤波的核心是解决退化函数对噪声的敏感性问题,因此其约束条件为:
∣ ∣ g − H f ^ ∣ ∣ = ∣ ∣ n ∣ ∣ 2 ||g-H\hat{f}||=||n||^2 ∣∣g−Hf^∣∣=∣∣n∣∣2
最终解得其最优解为:
∣ ∣ n ∣ ∣ 2 = ∑ x = 0 M − 1 ∑ y = 0 N − 1 n 2 ( x , y ) = M N [ σ n 2 + m n 2 ] ||n||^2=\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}n^2(x,y)=MN[\sigma_n^2+m_n^2] ∣∣n∣∣2=∑x=0M−1∑y=0N−1n2(x,y)=MN[σn2+mn2]
其中 σ n 2 = 1 M N ∑ ∑ [ n ( x , y ) − m n ] 2 \sigma^2_n=\frac{1}{MN}\sum\sum[n(x,y)-m_n]^2 σn2=MN1∑∑[n(x,y)−mn]2为整幅图像上采用取样平均的方法估计的噪声方差,
m n = 1 M N ∑ ∑ n ( x , y ) m_n=\frac{1}{MN}\sum\sum n(x,y) mn=MN1∑∑n(x,y)为样本均值。
运动图像复原
由匀速运动图像的退化函数
H
(
u
,
v
)
=
T
π
(
u
a
+
v
b
)
s
i
n
[
π
(
u
a
+
v
b
)
]
e
−
j
π
(
u
a
+
v
b
)
H(u,v)=\frac{T}{\pi(ua+vb)}sin[\pi(ua+vb)]e^{-j\pi(ua+vb)}
H(u,v)=π(ua+vb)Tsin[π(ua+vb)]e−jπ(ua+vb)
可用直接逆滤波消除运动模糊。
- 求得模糊图像的傅里叶变换 G ( u , v ) G(u,v) G(u,v)。
- 观察图像,估计水平方向和垂直方向的移动距离 a , b a,b a,b,得到卷积核,即确定退化函数 H ( u , v ) H(u,v) H(u,v)。
- 计算复原图像的傅里叶变换 F ^ = H − 1 ( u , v ) G ( u , v ) \hat{F}=H^{-1}(u,v)G(u,v) F^=H−1(u,v)G(u,v)
- 对得到的频域图像 F ^ \hat{F} F^进行傅里叶逆变换,即可得到复原图像。-
图像量化
图像的量化就是将离散的图像的值表示成为与其幅度成比例的整数。
一般过程是设立一组判决电平,每个判决电平覆盖一定的区间,所有判决电平覆盖整个有效区间。若像素的采样值落在某个判决电平的区间上,则该采样取这个量化级的代表值。
设量化操作在
K
K
K维欧几里得空间
R
K
R^K
RK上进行,
X
X
X为
R
K
R^K
RK上的一个
K
K
K维随机向量,
x
x
x为
X
X
X的取值,
A
⊆
R
K
A \subseteq R^K
A⊆RK是
X
X
X的取值空间即值域,则
A
A
A的一个
N
N
N级量化器
Q
=
{
Y
,
φ
}
Q=\{Y,\varphi\}
Q={Y,φ}由三部分组成:
- 对A的分割
φ
=
{
R
i
∣
i
=
1
,
.
.
.
,
N
}
\varphi =\{R_i | i=1,...,N\}
φ={Ri∣i=1,...,N},且:
{ ⋃ i = 1 N R i = A R i ∩ R j = 0 i ≠ j \begin{cases} \bigcup_{i=1}^{N}R_i=A\\ R_i \cap R_j = 0& i \neq j \end{cases} {⋃i=1NRi=ARi∩Rj=0i=j - 码本的再生字符集 Y = { y i ∣ i = 1 , . . . , N } Y=\{y_i|i=1,...,N\} Y={yi∣i=1,...,N}
- 量化操作
Q
Q
Q的映射:
Q : A → Y y i = Q ( { x ∣ x ∈ R i } ) \begin{aligned} Q:A \rightarrow Y \\ y_i=Q(\{x|x \in R_i\}) \end{aligned} Q:A→Yyi=Q({x∣x∈Ri}) - 当 K = 1 K=1 K=1时为标量量化, K > 1 K>1 K>1时是向量量化。
图像滤波
图像滤波可用于图像增强、图像复原、图像去噪、边缘检测等,既可以在空域进行,也可以在频域进行。滤波是一个邻域算子,利用给定像素周围的像素值确定该点的输出像素值。
公式:
O
(
i
,
j
)
=
∑
m
,
n
I
(
i
+
m
,
j
+
n
)
K
(
m
,
n
)
O(i,j)=\sum_{m,n}I(i+m,j+n)K(m,n)
O(i,j)=∑m,nI(i+m,j+n)K(m,n)
其中
K
(
m
,
n
)
K(m,n)
K(m,n)为kernal,卷积核。使用不同的卷积核可以达到不同的图像处理效果。
- 线性平滑滤波器(均值滤波):去噪、模糊。
- 中值滤波器:去噪。
- 锐化滤波器:强调细节。
- 低通/高通滤波: 去除/保留细节。
- 同态滤波:压缩亮度范围,提高对比度。
- 逆滤波:适用于无噪声的退化图像复原。
- 维纳滤波:综合退化函数和噪声统计特性,使福源图像和原图像均方差最小。
- 约束最小二乘方滤波:仅仅利用噪声的方差和样本均值的知识执行复原算法。
综合应用(20*1)
用无人机识别森林大火
- 无人机森林防火系统主要包括图像采集、无线传输和图像识别三个部分。
- 在利用神经网络对火灾图像进行训练和识别前,要对火灾图像进行特征提取,以确保识别的精确度。
- 林火图像的特征包括静态特征和动态特征,静态特征包括森林地形、海拔、火烧地的轮廓形状等;动态特征则包括火线的长度、宽度、角度、尖角数量变化和烟雾扩散特征等,该区域作为前景区,也是无人机识别的重点。
- 提取火焰像素的,提取森林图像模型中的RGB分量以及颜色模型中的饱和度S,建立RGB和S分量之间的关系模型,满足该模型的则认为是火焰像素,进行分割提取。
- 对提取处的火焰像素进行形态学运算,进行先腐蚀后膨胀的开运算,以消除图像噪声(如树枝摇曳等干扰),至此可以实现对火灾进行识别,用于训练集的提取。
- 识别的改进:对分割出来的前景图像进行二值化,并利用canny算子进行边缘检测,这样可以更好地提取出尖角和面积等特征。与干扰项(阳光、灯光)等进行特征的对比,利用BP神经网络和SVM支持向量机模型进行训练,得到最终的识别模型。
医学白细胞与红细胞检测
- 读入图像,提取图像RGB值。
- 颜色空间转换:RGB模型描述的图像不适合医学图像的识别,将其转换至HSI模型,表示色调、饱和度、亮度(即直接对应图像的灰度),使用HSI模型非常适合人类的感官来识别图像。
- 图像的增强和降噪:通过直方图均衡化调整图像的灰度,在频域中利用巴特沃斯低通滤波进行降噪,利用Robert模板卷积进行边缘锐化,为之后的分析打下基础。
- 利用OSTU阈值分割二值化,进行前景图像的分割提取。
- 通过分割后的图形,提取出细胞周长、面积和形态纹理的特征参数
- 将图形的特征导入SVM支持向量机模型进行训练,导出模型进行识别。