blur失焦方法会触发两次_36. 盲去卷积 - 更加实用的图像去模糊方法

f592e67936930ffd4fdcaaae23030578.png

本文同步发表在我的微信公众号和知乎专栏“计算摄影学”,欢迎扫码关注,

0785071146b0905bbb02e3848cdec517.png

上一篇文章35. 去卷积:怎么把模糊的图像变清晰?吸引了很多朋友的关注。在这篇文章里面,我给大家讲了一种叫做“非盲去卷积”的方法,当指定了PSF(下图中的c),和观测到的模糊图像(下图中的b),我们可以恢复出清晰的图像(下图中的x)。

5c31e605e42d47623480b4f1fd44fed3.png

很多人都觉得去卷积大法好啊,真的可以把渣画质变清晰。可就是需要提前知道PSF,这可就难了。确实,很多情况下提前测定PSF是根本不可能的,有可能你手上只拿到了一张很模糊的照片b,不知道c,想要恢复出x,这时候应该怎么办呢?

60de57c9d3238b95cfa85454191934cd.png

事实上,这也是可以办到的,这就是所谓的“盲去卷积”(Blind Deconvolution),今天我就给大家介绍这种技术。

我们先来看两组盲去卷积的结果,给大家一些直观的感受:

1d4a308d5bd723c4ddc39cd3e7870afa.png

9bccc1f978a4eec0b7eef09498364792.png

上面的结果来自于盲去卷积领域非常经典而基础的文章:

Fergus et al., “Removing camera shake from a single image,” SIGGRAPH 2006.

今天我主要就为你介绍这篇文章的思想

一、盲去卷积的基本思想

1.1 利用先验信息

小明是第一次用单反的摄影小白,他刚刚很兴奋的端起相机拍了一张照片:

74f32318dc93aaca6630c8b1f27afc47.png
https://www.zhihu.com/video/1208905929737273344

Oops!手没拿稳,拍出了一张超模糊的照片:

1be67eee1ff015b41b4f22fd0a982d54.png

我们看看小明的相机在拍照瞬间的运动轨迹

a46e89e0f1935ab24e21ebd429163dd8.png

很显然,他这样是拍不出来好片子的,我们来简化一下他这张照片的生成过程:

a9ca8fe0b45b35114a60b509c087132a.png

上图中的模糊核(PSF)是由于小明端起相机时的随机抖动导致的,我们无法提前测定,那么怎么样才能把清晰图像恢复出来呢? 这真是一个超难的问题。

这就像你知道了11这个数是由2个数的乘积构成的,要让你猜出是哪两个数一样困难:

33be11fc07f0889be5223c76da1572c0.png

一张模糊的图像,也有可能有多种生成模式,只有最下面这种才是我们需要的,怎么才能得到它呢?

94742efea844a6c8ab5a58e00f85bdc0.png

很显然,我们需要利用一些先验信息。有两个关键的先验信息可以帮助我们

1 - 图像的梯度分布

清晰的自然图像的梯度符合一种叫做"Heavy-Tail"的分布形态。直观上讲,一张清晰图像里面有很多平滑的区域且噪声较低,所以梯度接近0的像素还是占大多数。但是由于图像清晰,所以物体的边界比较明显,所以还是有很多像素的梯度较大。因此这种梯度的分布大概长这个样子(梯度直方图的纵坐标是Log化的密度):

aa1277402b5777f3a5d209eda815209c.png

但是模糊的图像的边缘被糊掉了,所以更多的像素的梯度趋于0,因此其梯度直方图就会变化:

23d5c28a7a73d1e69f7f49c1b0bb66a4.png

所以我们想要寻找的是符合上面重尾分布的图像,而不是其他随随便便的图像

2 - 模糊核的形态

我们这里展示的是相机的运动导致的模糊,那么可以认为模糊核是稀疏的,有连续的轨迹,并且模糊核值都是非负数。所以我们重建出来的模糊核也不是随随便便的,它必须符合上述这些特点才是一个合格的运动模糊核。

3 - 噪声

相机总是有噪声的,为了简化问题,我们可以假设噪声是均值为0的高斯噪声

于是,我们就有了几种信息用于重建清晰的图像

5fbebdafc9981137f2dcdd44265d6ce8.png

1.2 问题的数学建模

已知模糊图像P,未知图像为L,未知的卷积核为K。一个基本的想法是把问题看做是求最大后验概率的问题:

bf937c47b5ea1585c9a4ef828fabbf58.png

其中K和L满足一定的先验条件的约束。我们所需的就是把后验概率公式表达出来。为了让这篇文章能够比较容易看懂,我把相关的细节列到文章的后面,这样你可以更连贯的阅读这篇文章。

1.3 问题的求解

作者尝试了用标准的MAP求解方法来求解出K和L,但最终效果却很差

83465524b04e98295111254fb2d4e070.png

作者对此的解释是MAP目标函数会尝试让所有像素的梯度都最小化,而实际的自然图像中包含有大量高梯度的区域。

而在2009年的下面这篇著名论文中,作者Levin教授则提出了更深入的见解。

Levin et al., “Understanding and evaluating blind deconvolution algorithms,” CVPR 2009 and PAMI 2011

Levin教授认为用MAP目标函数同时求解K和L肯定不好,有如下的原因:

  1. 错误的单位卷积核比起正确的稀疏卷积核的可能性更高(Levin的论文中有证明)

ef4892da7afe424698841d18fd89338a.png

2. 上述MAP目标函数的变量个数具有高度的非对称性,比如对于这幅毕加索照片:

7c7c3d2dad83e4abec7538e122256022.png

可见已知量的个数总是小于未知量的个数 #P < #L + #K

以上两个原因就会导致用这种同时估计K和L的目标函数来做MAP总是无法得到好的结果。那有没有更好的方法呢?

Levin认为,更好的办法是只单独估计K,即把下面左边的问题转换为右边的问题

13b1890ce3bfd0173a070f430bdbd940.png

这样,已知量的个数就远远大于未知量的个数 #P >> #K

这里的p(K|P)是相对于L的边际概率,即:

33da4b60c68017444ad0a8e996f04197.png

简单来说,就是对每一个可能的K,我们都要在所有可能的L上求取其后验概率,并把这些后验概率值加起来,得到p(K|P)。你应该可以感觉到求这样的边际概率也是很不容易的事情,计算量非常复杂。于是很多学者采用了近似的方式来进行求解。回到我们开头介绍的Fergus的论文,作者是采用了“变分贝叶斯(variational Bayesian)”方法来近似后验概率的表示和求取

Fergus证明了这种方法能得到远比原始的同时求取K和L的MAP算法好。

6368544125a8394de432d677dc297f68.png

二、完整的流程

在论文中, Fergus展示了其完整的盲去卷积的流程:

第一步:预处理图像,为了降低计算量,并得到良好的结果,需要用户来选择一个图像块。

第二步:利用变分贝叶斯,估计卷积核K。为了避免陷入局部最优,作者采用了coarse-to-fine的策略

第三步:利用标准的非盲去卷积方法,重建清晰图像L。作者采用了我在上一篇文章里面提到的Richardson-Lucy算法进行。

b463ef1a0aa4b1dd86e395491b9dcb78.png

da455d3c8ca96010db4c86399c90a302.png

f0ec9fd375bfa10c5f3961c0fb244604.png

367272c129dae6b6ef6c20bde4d080cd.png

d401307ea5b0be424fa48e969b0b7224.png

三、效果展示

31e1bf883ae338e5c73230cb0afed7d1.png

100b26dda62384e9bb7ddee5390d0011.png

3b6c245a47fe220e48e976a34d9c6bfe.png

四、后验概率的细节

正如前面所讲,为了求解问题,需要把后验概率用公式表达出来。先引入一些符号来说明问题:

  • 模糊图像块
  • :可能的模糊核
  • :可能的清晰图像块
  • : P的梯度
  • : Lp的梯度
  • :噪声

首先,我们前面讲过

由于卷积运算是线性运算,因此可以有:

这样我们可以把后验概率改写为

用MAP的思想来说,问题就转换为求使得上述概率最大的K和

我们可以用贝叶斯公式将这个后验概率展开:

f67a62fbd4237f446ca7e0c96f39b71e.png

我们分别来看后面三项:

710ccbeba6b0cb3f0f32f76a659e9010.png

于是上面的后验概率就可表示为:

7737d9f9feff3600e32b695a68a82853.png

五、算法值得改进的地方

在文章中Fergus提到的几个点都是值得改进的:

  1. 假设噪声满足高斯分布
  2. 用混合高斯模型来拟合重尾模型
  3. 用混合指数分布来描述模糊核的形态
  4. 多尺度的变分贝叶斯算法复杂度较高,需要用户的手动引导选择小的图像块
  5. 采用的非盲去卷积是RL算法,相信会有更好的方法来改善图像质量
  6. 等等

作者本身也在其文章中提到了一些值得改进的地方,能让后人在此基础上对 这项工作有所完。 果不其然,在随后几年的CVPR, SIGGRAPH, ICCV, ECCV上, 几乎每届都有更好的结果涌现。

比如下面这篇2008年Jiaya Jia团队的文章就作出了非常好的效果:

Shan et al., “High-quality Motion Deblurring from a Single Image,” SIGGRAPH 2008

文章的改善点包括了:

  1. 更复杂的噪声模型,噪声的概率分布由其0阶、1阶、2阶梯度的分布来描述
  2. 更简单的拟合重尾分布的函数
  3. 加入了局部平滑区域的约束,避免出现振铃效应
  4. 复杂的优化方法,交替式的优化估计清晰图像L和模糊核K

下面是算法的效果,还是非常不错的:

c9b67ead2e2e63a2a40077760799ea9f.gif

这个领域后面出了非常多效果更好的文章,在github上有一个专门的项目整理记录:

https://github.com/subeeshvasu/Awesome-Deblurring​github.com

六、总结

去卷积分为非盲去卷积和盲去卷积,我介绍的用途主要是图像的去模糊。今天介绍的Fergus的文章利用了变分贝叶斯算法来求解模糊核K,然后利用经典的非盲去卷积算法Richardson-Lucy算法来进行清晰图像的恢复。从今天介绍的文章你可以看到,理解盲去卷积的算法对图像的统计信息、概率知识、最优化求解方法的要求要比非盲去卷积高很多。坦率说,我自己在看这些文章时也感觉很吃力。

但我希望这篇文章能给你打开一扇大门,让你可以透过它看到一片新的研究天地。如果你喜欢这篇文章,请给我点赞,谢谢!

七、参考资料

  1. CMU 2017 Fall Computational Photography Course 15-463, Lecture 17
  2. Fergus et al., “Removing camera shake from a single image,” SIGGRAPH 2006.
  3. Levin et al., “Understanding and evaluating blind deconvolution algorithms,” CVPR 2009 and PAMI 2011.
  4. Shah et al., “High-quality Motion Deblurring from a Single Image,” SIGGRAPH 2008
  5. https://github.com/subeeshvasu/Awesome-Deblurring
  6. 图像去模糊之初探–Single Image Motion Deblurring

本文同步发表在我的微信公众号和知乎专栏“计算摄影学”,欢迎扫码关注,

0785071146b0905bbb02e3848cdec517.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值