导语

影像已经成为我们记录生活的重要方式之一。那些难忘和美好的时刻通过照片被保留。然而有些回忆却因为画质的模糊不清,被蒙上了一层纱,或受限于当时的镜头缺陷,或是相机抖动导致,有什么办法可以解决这一难题吗?本期技术的真相将给大家详细解析让图片变清晰的技术。

01

背景介绍

你有没有想过把模糊的图像变清晰?就像这样:

或者这样:

今天我将给你介绍这种神奇的技术:去卷积

图像的模糊有很多种可能性,包括了:

  • 镜头的缺陷

  • 相机的抖动

  • 场景的运动

  • 景深的限制

  • 后期的处理

让我先从第一种镜头的缺陷导致的图像模糊讲起,因为这是所有的镜头都会存在的固有的问题。

02

镜头的缺陷以及衍射极限PSF

我想你小时候就已经知道了小孔成像。然而,小孔虽然能成像,却有其固有的缺陷。例如,小孔的尺寸太大会导致画面模糊,小孔的尺寸太小会导致没有足够的能量穿过小孔,画面很暗,并且由于衍射的原因,画面也会模糊。即便是非常仔细的调整小孔的尺寸,最后的成像效果都不够清晰,因为事实上由于光的波粒二象性,几何光学中理想的小孔成像就不存在。下面你可以看到不同尺寸的小孔所成的像。

因此,人们后来采用了镜头来弥补小孔成像的缺陷。这样获得了更好的光能利用率,更清晰的成像。

理想的镜头成像时,一个对焦平面上的物点会投影为一个像点:

但事实上理想的镜头是不存在的,镜头总是存在一些缺陷会导致一个物点会投影为很多点。一个理想点经过相机后成的像由点扩散函数PSF(Point Spread Function)来描述。

这里镜头的缺陷至少有两种:

像差,比如色差和球差

衍射,这是因为光的波动性导致的,只要光通过光圈就会产生衍射

我们可以认为这种效应是空间不变的,即空间中任何一点在任意一个像平面上都会呈现同样的缺陷——即你用相机拍出的照片永远是不够清晰的。

在这篇文章中,我们先忽略掉像差,只考虑衍射。那么一个理想的小点通过圆形光圈后的PSF会呈现出一种特别的形态,这是一种叫做Airy Pattern的图像,这种因为衍射形成的PSF我们称之为衍射极限PSF(Diffraction Limit PSF)

而如果对此PSF做傅里叶变换,就可以得到这个镜头的光学传递函数OTF(Optical Transfer Function),它长这个样子:

那么镜头的PSF或OTF,对于成像的具体影响是什么呢?

假设有一个理想镜头,不受衍射的影响,用它所成的像为x, 而实际镜头的PSF为c, 实际镜头的成像是b,那么这三者之间的关系是一种典型的卷积关系:

那么一个很自然的想法就是,如果我们有实际镜头的成像,另外还知道了镜头的PSF,即我们知道了上式的b和c,是否可以得到更加理想的成像x呢?

下面这一节我就来探讨这个问题。

03

去卷积和维纳滤波

这似乎是很显然能够成立的。由于空域的卷积等效于频域的乘法,因此我们只需要在频域上做除法,就能很好的恢复出x了,我们把这个过程称为Deconvolution,去卷积:

这种想法有没有问题呢? 实际上有两个问题:

1. OTF的高频部分为0,这可以很容易从图像上看出

2. 实际成像系统有噪声,所以实际的成像公式是(其中n是指噪声)

也就是说b里面含有噪声,所以如果简单的用F(b)/F©, 就会放大系统中高频部分的的噪声,最后只会得到一幅全是噪声的图像。

下面是在故意在b里面加入了方差为0.05的轻微高斯噪声的去卷积结果,你可以看到即便b里面有轻微的噪声,用这种方式也只能得到一幅噪声图像。

那么,有没有更好的方法呢?事实上,已知模糊的图像b以及成像系统的PSF,恢复原始图像x的过程叫做非盲去卷积(Non-blind deconvolution)。这个领域有大量的研究成果。

其中最最经典的方法之一,莫过于1942年发表的维纳滤波(Wiener Filter),它把图像和噪声都看做是随机过程,并把去卷积的问题看作是一个最大似然问题去求解。最后的结果中,包含了一个关键的噪声相关的阻尼因子:

其中分母有一项是SNR(ω),它是值在频率ω的信噪比:

当噪声很低时,SNR(ω)很高,上式接近于  。 而当噪声较大时,则上式接近于0。

实际上,对于自然图像,一般认为其功率谱与  线性相关,同时我们认为噪声是白噪声,其功率是与频率无关的常量,那么一般

此时,我们可以将维纳滤波简化为:

我们可以比较下基本的频域除法去卷积和这种维纳滤波去卷积的结果差异,很显然维纳滤波得到了正确的结果。

再看看不同噪声水平对维纳滤波的影响,可以看到维纳滤波对不同噪声水平的图像都能恢复出较好的X,当然如果图像b中噪声较高,那么恢复的图像中的噪声也会较高。

04

维纳滤波的推导

现在让我们来看看如何从下面这个简单的成像公式推导出维纳滤波

空域的卷积对应着频域的乘法,于是

现在我们可以把去卷积的问题看作是寻找一个频域函数H(ω),它可以使得下面的期望误差最小:

于是问题就转换为:

将B的表达式带入:

展开这个式子有:

这里因为噪声N和图像X不相关,于是 

因为噪声均值为0,这样E[XN] = 0

这样我们可以把上面的最小化表达式写作:

对下面这个loss求梯度:

并设

那么很容易得到

分子分母同时处以  ,就可以得到

那么维纳滤波就是

将C重新写作F(c), B写作F(b), 于是就得到了我们上面介绍过的维纳滤波表达式:

05

维纳滤波的另一种理解

上面我们把问题看做为了一个在频域上的最小化问题,但我们也可以把问题看做是空域上的最小化问题:

这里的第一项描述了清晰图像和模糊图像之间的关系,而第二项则是梯度正则化项,用于惩罚过大的梯度信息(噪声会带来大的梯度,因此第二项就含有降噪的功效)

我们可以看看梯度正则化带来的好处,下面的示例图中两幅模糊图像具有不同的模糊程度和不同的噪声水平,可以看到采用梯度正则化都得到了不错的结果,而不用正则化项(相当于频域上直接的除法做去卷积),则造成了很大的噪声。

有很多学者尝试了各种不同的正则化项,例如:

有时候,这些新的方法会得到比维纳滤波更好的结果:

06

更多非盲去卷积的方法

除了这种直接求解的去卷积方式,还有一类方式是通过迭代的方式得到结果。这种迭代的方式通常能够比直接求解的方式得到更好的结果,其中最最经典的莫过于Richardson和Lucy独立在1972和1974年提出的Richardson-Lucy方法,这是一种非线性的方法。为了表述清晰,我们用新的符号来表述各个图像:

那么,第k+1次迭代的结果可以表述为:

Richardson-Lucy方法在相关领域得到了很广泛的应用,也给了后面研究这个问题的学者很多启示。

07

总结

这篇文章为你介绍了镜头由于衍射带来的成像质量损失。介绍了点扩散函数(PSF)和它的傅里叶变换光学传递函数(OTF)。接着介绍了去卷积Deconvolution的思想,以及一种超级经典的、诞生于1942年的非盲去卷积方法:维纳滤波。它能够复原由于衍射导致的图像模糊。实际上,任何线性移不变的PSF导致的图像模糊都可以用维纳滤波进行复原。

除了维纳滤波之外,后来者还研究了很多非盲去卷积的方法,包括现在还有很多基于深度学习的方法。非盲去卷积已经应用在了图像处理的很多领域。工业界非常最感兴趣的问题是则是利用廉价镜头相机(例如手机)取代昂贵的镜头组相机(例如单反)的想法,文献[3]作出了很好的示范。希望本文给你带来了启发。

08

参考文献

1. CMU 2017 Fall Computational Photography Course 15-463, Lecture 17

2. Restoration of defocused and blurred images

3. Heide et al., “High-Quality Computational Imaging Through Simple Lenses,” TOG 2013

点击“阅读原文”,投递简历加入旷视,一起探索“技术的真相”

实习简历请投至:ur@megvii.com

技术的真相 | 提高照片清晰度的黑魔法竟然是..相关推荐

  1. 【ps】提高照片清晰度方法

    有时因为某些因素,使拍摄的照片不是很清晰,用这种方法可以做一些挽救. 來自:中國藝術1983設計論壇 作为摄影,还应当从摄影技术角度进一步提高,达到精益求精.这幅照片不足之处是焦点没有集中在人物面部而 ...

  2. 如何使用AI图片清晰度增强器软件增强和锐化图片、提高照片清晰度并去除噪点

    通过使用深度学习AI算法对照片进行批量锐化.去噪和去模糊处理,该程序可以应用再大部分照片和图片,包括徽标.卡通和动漫 可能很多朋友都会遇到需要批量增强和锐化照片的情况:例如,如果拍摄过程中曝光不足.夜 ...

  3. 如何调整图片的分辨率?教你如何在线提高照片清晰度

    图片分辨率指的是每英寸图像内有多少个像素点,行业内也称为"像素每英寸",影响着我们图片的清晰度,那么如何调整图片的分辨率呢? 一.修改图片分辨率用什么工具? 很多小伙伴在想要将图片 ...

  4. 如何把一张照片的像素提高_能够充分提高照片像素的方法!

    能够充分提高照片像素的方法! 初玩摄影的朋友, 是否为照片的像素不高而烦恼?下面分享能够提高照片素质 12 招, 希 望可以给大家带来帮助! 1. 尽量使用三脚架 很多情况下,照片图像模糊.不清晰的原 ...

  5. 如何有效提高照片的清晰度和分辨率?

    想要提高图片的清晰度和分辨率,如果是新手小白操作起来可能会比较困难,不过,我们可以借助专业的图片修复工具,来帮助我们快速提高图片的清晰度和分辨率. 牛学长图片修复工具有着基于领先的智能AI修复技术,一 ...

  6. 照片模糊怎么办?教你简单三步瞬间修复照片清晰度!

    清晰度低的图片看起来比较模糊,不方便我们使用,为了快速提高图片的清晰度,我们可以借助专门的图片处理工具,只需要上传图片即可进行修复,效率很不错. 不管是网上下载的照片还是平时手机自己拍摄的相片,太模糊 ...

  7. 技术的真相 I 让手机夜拍也精彩的原理竟然是...

    导语 智能手机.智能相机已经成为我们记录生活,留住美好瞬间的重要工具.但是每次在暗光环境中按下快门后,你是否担心照片满是像素点."鬼影"重重.一片模糊?不过,你又是否发现,如今的手 ...

  8. 你知道照片怎么变清晰吗?增强照片清晰度的方法

    相信很多小伙伴都会有这种的经历,去游玩时高高兴兴的拍照留念,结果拍出来的照片不是很尽人意.或者是画面还没聚焦好,就按下快门,导致拍摄出来的照片变模糊了.很多小伙伴遇到这种情况都很烦恼,照片丢了可惜,不 ...

  9. 技术的真相 | 从AR口红试妆了解人工智能试妆技术

    随着人工智能技术的不断发展,各大美颜软件的妆容变得越来越"自然无痕迹",大家可能会好奇这背后的技术原理是什么.因此,本期"技术的真相"将通过简易的AR口红试妆带 ...

最新文章

  1. python解压zip文件_Python中最快解压zip文件的方法
  2. lua 收不到服务器发来消息,lua 学习之错误处理
  3. Java 里的thread (线程)简介
  4. 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
  5. mysql query sql_sql:query 标签
  6. 在windows下编译ffmpeg
  7. 怎么在Linux上抓包分析
  8. px4讲解(一)历史起源
  9. mac抹掉磁盘重装系统未能与服务器取得联系_如何用U盘自制Mac笔记本系统重装盘...
  10. python量化策略——改进的美林时钟代码(代码版)
  11. css3 滤镜效果(黑白滤镜、模糊化处理等)
  12. 合同和协议的区别_协议书与合同书的区别
  13. WhatsApp营销引流-SendWS拓客系统功能后台介绍(五):WhatsApp素材管理
  14. (6)EndNote——文献管理软件通用操作大全
  15. Android AMS(android 11)
  16. 2018年8月24日英语学习
  17. 弹性盒子(弹性布局)
  18. js前端处理过滤特殊字符以及输入法特殊表情符号emoji的正则方法,解决数据库报错问题。
  19. 清橙 A1210. 光棱坦克
  20. 网页抓取 - 完整指南

热门文章

  1. cacti、rrdtool调试
  2. C++运算符重载中有些方法为什么需要定义为友元函数
  3. Windows PowerShell管理员模式下切换目录
  4. 解决国内访问不了github的问题
  5. ONVIF方式将大华摄像头接入海康威视录像机
  6. puzzle(0712)Lazors、折射之光
  7. webug--post注入
  8. pip3 常见用法总结
  9. 大数据开发就业如何?好找工作吗?
  10. python封装 (pyinstaller)