![](https://img-blog.csdnimg.cn/20200527203341943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjI4NDYz,size_16,color_FFFFFF,t_70#pic_center)
l
e
v
e
l
i
level_i
leveli层图片生成方式:
G
i
(
I
m
a
g
e
)
=
{
I
m
a
g
e
(
i
=
0
)
r
e
d
u
c
e
(
G
i
−
1
(
I
m
a
g
e
)
)
(
0
<
i
<
N
)
)
(1)
G_i(Image)= \begin{cases} Image& (\quad i = 0) \\ reduce(G_{i-1}(Image))& (\quad 0 \lt i \lt N)) \end{cases}\tag{1}
Gi(Image)={Imagereduce(Gi−1(Image))(i=0)(0<i<N))(1)
其中
r
e
d
u
c
e
(
)
reduce()
reduce()包含以下两个操作:
- 对 l e v e l i − 1 level_{i-1} leveli−1层图片,用高斯滤波器卷积,相当于对图像平滑;
- 以2为基,下采样(即缩小2倍,只保留偶数行、偶数列)。
1.2 拉普拉斯金字塔
又叫预测残差金字塔。
作用:获取边缘特征。
l
e
v
e
l
i
level_i
leveli层图片生成方式:
L
i
(
I
)
=
{
G
i
(
I
)
(
i
=
0
)
G
i
−
1
(
I
)
−
e
x
p
a
n
d
(
G
i
(
I
)
)
(
0
<
i
<
N
)
)
(2)
L_i(I)= \begin{cases} G_i(I)& (\quad i = 0) \\ G_{i-1}(I)-expand(G_i(I))& (\quad 0 \lt i \lt N)) \end{cases}\tag{2}
Li(I)={Gi(I)Gi−1(I)−expand(Gi(I))(i=0)(0<i<N))(2)
其中
e
x
p
a
n
d
(
)
expand()
expand()包含以下两个操作:
- 对高斯金字塔的 l e v e l i level_i leveli层图片,以2为基上采样(最近邻、双线性、双三次),即放大2倍;
- 用高斯金字塔的 l e v e l i − 1 level_{i-1} leveli−1层图片减去步骤1得到的图片。
1.3 特征金字塔
分为水平和垂直特征金字塔,由于用了过滤器组(两个过滤器),所以每个金字塔又有两组,共有4组金字塔。
作用:获取纹理特征。
l
e
v
e
l
i
level_i
leveli层图片生成方式:
- 过滤器1对高斯金字塔的 l e v e l i level_i leveli层卷积;
- 过滤器2对高斯金字塔的 l e v e l i level_i leveli层卷积;
- 第一个过滤器,水平方向为[-1,8,0,8,-1]/16,垂直方向为水平方向的转置;
- 第二个过滤器,水平方向为[-1,-2,6,-2,-1]/12,垂直方向为水平方向的转置。
2. 算法原理
到目前为止,我们已经了解了三种图像金字塔,那么如何利用它们提升图像的分辨率呢?它们又分别起着什么作用呢?
一般地讲,提升图像的分辨率,就是把高斯金字塔的
l
e
v
e
l
i
level_i
leveli层图像还原为
l
e
v
e
l
0
level_0
level0层图像。在这个过程中,我们需要考虑其全局特征、边缘特征、和局部特征。而高斯金字塔对应的就是全局特征,拉普拉斯金字塔对应的就是边缘特征,水平、垂直特征金字塔对应的就是纹理特征。整个转化过程需要两步:
- 把高斯金字塔的 l e v e l i level_i leveli层图像放大 i i i倍;
- 把拉普拉斯金字塔的
l
e
v
e
l
i
−
1
level_{i-1}
leveli−1层(包含该层)前所有图像放到与
l
e
v
e
l
0
level_0
level0层一样大,然后叠加到步骤1的结果中。
以上过程用公式表示为:
G 0 ( I ) = e x p a n d i ( G i ( I ) ) + e x p a n d i − 1 ( L i − 1 ( I ) ) + . . . + e x p a n d ( L 1 ( I ) ) + L 0 ( I ) (3) G_0(I) = expand^i(G_i(I))+expand^{i-1}(L_{i-1}(I))+...+expand(L_1(I))+L_0(I)\tag{3} G0(I)=expandi(Gi(I))+expandi−1(Li−1(I))+...+expand(L1(I))+L0(I)(3)
其中, e x p a n d i ( G i ( I ) ) expand^i(G_i(I)) expandi(Gi(I))表示把高斯金字塔的第i层放大了i倍。
由上述信息可知,如果要把高斯金字塔的 G i G_i Gi层变为 G 0 G_0 G0层,那么我们需要的信息有 G i G_i Gi层以及拉普拉斯金字塔的 L 0 L_0 L0、 L 1 L_1 L1、…、 L i − 1 L_{i-1} Li−1层。 此时的 G i G_i Gi就是低分辨率图像,而我们通过它,只能求得 L i L_{i} Li、 L i + 1 L_{i+1} Li+1、…、 L N L_N LN,这显然不是我们需要的。那么 L 0 L_0 L0、 L 1 L_1 L1、…、 L i − 1 L_{i-1} Li−1该怎么获取呢?
这时,就会涉及到一个概念:父结构(featherstructure),通过它就可以得到我们关心的拉普拉斯金字塔了。
我们来说下什么是父结构。如果给定低分辨率图像 I I I,它的图像金字塔可以看作是它的高分辨率图像的金字塔的第 i i i层往上的部分,那么低分辨率图像的每个像素的父结构定义如下:
S
i
(
I
)
(
m
,
n
)
=
[
L
i
(
I
)
(
⌊
m
2
i
,
n
2
i
⌋
)
,
L
i
+
1
(
I
)
(
⌊
m
2
i
+
1
,
n
2
i
+
1
⌋
)
,
.
.
.
,
L
N
(
I
)
(
⌊
m
2
N
,
n
2
N
⌋
)
,
H
i
(
I
)
(
⌊
m
2
i
,
n
2
i
⌋
)
,
H
i
+
1
(
I
)
(
⌊
m
2
i
+
1
,
n
2
i
+
1
⌋
)
,
.
.
.
,
H
N
(
I
)
(
⌊
m
2
N
,
n
2
N
⌋
)
,
V
i
(
I
)
(
⌊
m
2
i
,
n
2
i
⌋
)
,
V
i
+
1
(
I
)
(
⌊
m
2
i
+
1
,
n
2
i
+
1
⌋
)
,
.
.
.
,
V
N
(
I
)
(
⌊
m
2
N
,
n
2
N
⌋
)
,
H
i
2
(
I
)
(
⌊
m
2
i
,
n
2
i
⌋
)
,
H
i
+
1
2
(
I
)
(
⌊
m
2
i
+
1
,
n
2
i
+
1
⌋
)
,
.
.
.
,
H
N
2
(
I
)
(
⌊
m
2
N
,
n
2
N
⌋
)
,
V
i
2
(
I
)
(
⌊
m
2
i
,
n
2
i
⌋
)
,
V
i
+
1
2
(
I
)
(
⌊
m
2
i
+
1
,
n
2
i
+
1
⌋
)
,
.
.
.
,
V
N
2
(
I
)
(
⌊
m
2
N
,
n
2
N
⌋
)
]
S_i(I)(m,n)=[L_i(I)(\lfloor \frac{m}{2^i},\frac{n}{2^i} \rfloor),L_{i+1}(I)(\lfloor \frac{m}{2^{i+1}},\frac{n}{2^{i+1}} \rfloor),...,L_N(I)(\lfloor \frac{m}{2^N},\frac{n}{2^N} \rfloor),\\ H_i(I)(\lfloor \frac{m}{2^i},\frac{n}{2^i} \rfloor),H_{i+1}(I)(\lfloor \frac{m}{2^{i+1}},\frac{n}{2^{i+1}} \rfloor),...,H_N(I)(\lfloor \frac{m}{2^N},\frac{n}{2^N} \rfloor),\\ V_i(I)(\lfloor \frac{m}{2^i},\frac{n}{2^i} \rfloor),V_{i+1}(I)(\lfloor \frac{m}{2^{i+1}},\frac{n}{2^{i+1}} \rfloor),...,V_N(I)(\lfloor \frac{m}{2^N},\frac{n}{2^N} \rfloor),\\ H^2_i(I)(\lfloor \frac{m}{2^i},\frac{n}{2^i} \rfloor),H^2_{i+1}(I)(\lfloor \frac{m}{2^{i+1}},\frac{n}{2^{i+1}} \rfloor),...,H^2_N(I)(\lfloor \frac{m}{2^N},\frac{n}{2^N} \rfloor),\\ V^2_i(I)(\lfloor \frac{m}{2^i},\frac{n}{2^i} \rfloor),V^2_{i+1}(I)(\lfloor \frac{m}{2^{i+1}},\frac{n}{2^{i+1}} \rfloor),...,V^2_N(I)(\lfloor \frac{m}{2^N},\frac{n}{2^N} \rfloor)]
Si(I)(m,n)=[Li(I)(⌊2im,2in⌋),Li+1(I)(⌊2i+1m,2i+1n⌋),...,LN(I)(⌊2Nm,2Nn⌋),Hi(I)(⌊2im,2in⌋),Hi+1(I)(⌊2i+1m,2i+1n⌋),...,HN(I)(⌊2Nm,2Nn⌋),Vi(I)(⌊2im,2in⌋),Vi+1(I)(⌊2i+1m,2i+1n⌋),...,VN(I)(⌊2Nm,2Nn⌋),Hi2(I)(⌊2im,2in⌋),Hi+12(I)(⌊2i+1m,2i+1n⌋),...,HN2(I)(⌊2Nm,2Nn⌋),Vi2(I)(⌊2im,2in⌋),Vi+12(I)(⌊2i+1m,2i+1n⌋),...,VN2(I)(⌊2Nm,2Nn⌋)]
其中,
S
i
(
I
)
(
m
,
n
)
S_i(I)(m,n)
Si(I)(m,n)是大小为
5
∗
(
N
+
1
−
i
)
5*(N+1-i)
5∗(N+1−i)的向量;
L
L
L表示拉普拉斯金字塔;
H
H
H表示用过滤器1得到的水平特征金字塔;
H
2
H^2
H2表示用过滤器2得到的水平特征金字塔;
V
V
V表示用过滤器1得到的垂直特征金字塔;
V
2
V^2
V2表示用过滤器2得到的垂直特征金字塔。
接下来就是用父结构将低分辨率图像
t
t
t放大
i
i
i倍成为高分辨率图像
T
T
T的过程了,步骤如下:
- 计算低分辨率图像的 n n n层拉普拉斯金字塔和特征图像,并计算它在第 0 0 0层的父结构,作为它高分辨率图像金字塔的第 k k k层的父结构,记为 S k ( t ) S_k(t) Sk(t);
- 计算模板图像的 i + n i+n i+n层拉普拉斯金字塔和特征图像,并计算它在第 k k k层的父结构,记为 S k ( T ) S_k(T) Sk(T);
- 计算 S k ( t ) S_k(t) Sk(t)和 S k ( T ) S_k(T) Sk(T)的相似性(欧氏距离或者其它);
- 遍历训练集,重复步骤2、3,选出最相似的模板图像;
- 拼接高分辨率图像的拉普拉斯金字塔, L 0 L_0 L0、 L 1 L_1 L1、…、 L i − 1 L_{i-1} Li−1层由步骤4中的最相似的模板图像提供, L i + 1 L_{i+1} Li+1、 L i + 2 L_{i+2} Li+2、…、 L N L_N LN由低分辨率图像提供;
- 根据公式(3),计算得到高分辨率图像。
参考文献:
[1]Baker S , Kanade T . Hallucinating faces[C]// Automatic Face and Gesture Recognition, 2000. Proceedings. Fourth IEEE International Conference on. IEEE, 2000.
[2]雷刚萨斯. 数字图像处理(第三版)