还记得在 “背景知识” 这一篇中,我们介绍了如何用微分方程和变分的方法来处理图像和视觉问题。一幅 N维 M通道的图片可以用一个函数来建模,即
采用微分方程和变分法解决视觉问题,大致分为三步:(1)设计一个能量泛函;(2)把模型离散化;(3)采用某种数值算法求解。笔者认为,能量泛函的设计是最关键的一步,因为模型的升级直接给解的精确性带来指数级的增长;在好模型的基础上,先进的算法可以把解的精准度和运算的速度提到大概30%。
在背景知识这一篇中,我们举了 利用 Total Variation (TV)Regularisation 模型来给图片去噪声的例子,它的能量泛函为
在这个能量泛函中,我们假设 观测误差 为 i.i.d 的高斯分布, 同时我们希望我们得到的图片是一个分段等值的函数。通过最小化
我们知道,任何一个平滑的函数可以由多段多项式函数来近似,多项式阶数越高,则近似的精度越精确。然而通过TV, 我们只能得到一个分段等值函数,这对于图片来说是远远不够的。因此笔者在此介绍两个高阶模型,它们都是对解函数的二阶导数进行正则化, 因此得到的解是一个分段仿射函数 (piece-wise affine function) 。
(1)Hessian TV regularisation
Lysaker,Marius,Arvid Lundervold,and Xue-Cheng Tai. “Noise removal using fourth-order partial differential equation with applications to medical magnetic resonance images in space and time.” Image Processing,IEEE Transactions on 12.12 (2003): 1579-1590.
能量泛函为
其中
(2) Total Generalized Variation Regularisation (TGV)
Bredies,Kristian,Karl Kunisch,and Thomas Pock. “Total generalized variation.” SIAM Journal on Imaging Sciences 3.3 (2010): 492-526.
能量泛函为
其中
介绍完这么多理论,我们来进行一个简单的实验——给人像磨皮! X )
首先,我们有一张相片
下面一张是用 TV 处理后的结果:
下面一张是用 TGV 处理后的结果:
两幅图片的细节都被保存,但大家是不是隐约的感觉到第二幅图片比第一幅图片要光滑一些?? 这是因为 TGV 可以给一个 分段仿射的解,但TV只能给分段等值的。我们再对比一下脸部的效果,其中左边是TGV, 右边是TV。
我们看到用TGV得到的脸部线条更柔和光滑,皮肤更水嫩,人一下子就年轻了至少7岁。更重要的是,黑眼圈被完全除掉了!!