超分辨率基础篇:基于拉普拉斯金字塔的人脸超分

图1 实验结果
# 1. 图像金字塔 --- - 定义:以金字塔排列、分辨率逐渐降低的图像集合。 - 特点:底部是高分辨率图像,顶部是低分辨率的近似。有些资料把最底层作为level 0层,把最顶层作为level k层;有些资料则相反。本文把最低层作为level 0层。 - 用途:机器视觉、图像压缩。 ## 1.1 高斯金字塔 --- 又叫近似金字塔。 作用: 获取全局特征。

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(Gi1(Image))(i=0)(0<i<N))(1)
其中 r e d u c e ( ) reduce() reduce()包含以下两个操作:

  1. l e v e l i − 1 level_{i-1} leveli1层图片,用高斯滤波器卷积,相当于对图像平滑;
  2. 以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)Gi1(I)expand(Gi(I))(i=0)(0<i<N))(2)
其中 e x p a n d ( ) expand() expand()包含以下两个操作:

  1. 对高斯金字塔的 l e v e l i level_i leveli层图片,以2为基上采样(最近邻、双线性、双三次),即放大2倍;
  2. 用高斯金字塔的 l e v e l i − 1 level_{i-1} leveli1层图片减去步骤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层图像。在这个过程中,我们需要考虑其全局特征、边缘特征、和局部特征。而高斯金字塔对应的就是全局特征,拉普拉斯金字塔对应的就是边缘特征,水平、垂直特征金字塔对应的就是纹理特征。整个转化过程需要两步:

  1. 把高斯金字塔的 l e v e l i level_i leveli层图像放大 i i i倍;
  2. 把拉普拉斯金字塔的 l e v e l i − 1 level_{i-1} leveli1层(包含该层)前所有图像放到与 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))+expandi1(Li1(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} Li1层。 此时的 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} Li1该怎么获取呢?
            这时,就会涉及到一个概念:父结构(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+1i)的向量; 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的过程了,步骤如下:

  1. 计算低分辨率图像的 n n n层拉普拉斯金字塔和特征图像,并计算它在第 0 0 0层的父结构,作为它高分辨率图像金字塔的第 k k k层的父结构,记为 S k ( t ) S_k(t) Sk(t)
  2. 计算模板图像的 i + n i+n i+n层拉普拉斯金字塔和特征图像,并计算它在第 k k k层的父结构,记为 S k ( T ) S_k(T) Sk(T)
  3. 计算 S k ( t ) S_k(t) Sk(t) S k ( T ) S_k(T) Sk(T)的相似性(欧氏距离或者其它);
  4. 遍历训练集,重复步骤2、3,选出最相似的模板图像;
  5. 拼接高分辨率图像的拉普拉斯金字塔, L 0 L_0 L0 L 1 L_1 L1、…、 L i − 1 L_{i-1} Li1层由步骤4中的最相似的模板图像提供, L i + 1 L_{i+1} Li+1 L i + 2 L_{i+2} Li+2、…、 L N L_N LN由低分辨率图像提供;
  6. 根据公式(3),计算得到高分辨率图像。

参考文献:
[1]Baker S , Kanade T . Hallucinating faces[C]// Automatic Face and Gesture Recognition, 2000. Proceedings. Fourth IEEE International Conference on. IEEE, 2000.
[2]雷刚萨斯. 数字图像处理(第三版)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

适当喝点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值