如何消除摄影中的运动模糊?

转载自40. 如何消除摄影中的运动模糊? - 知乎

如果你试过去拍摄一些运动场景,例如拍摄疾驰的汽车,或是田径场上的短跑运动员,你一定曾经遇到过“拍糊”的时候。这种现象就是我在本文中要讨论的由运动导致的图像模糊,这是一种与我之前介绍的几种导致图像模糊的方式完全不同的问题,所以今天让我们来看看有什么好办法来应对。

我今天要给你介绍的是两种消除运动模糊的技术,一个叫做Coded Exposure Photography(编码曝光),确切的说是一种利用了Flutter Shutter(震颤快门)的编码曝光技术。 另外一种则是Motion Invariant Photography(运动不变摄影)。可能现在还听起来比较拗口,不过先让我们看看它们的效果:

下图是编码曝光拍摄的原始图像,以及经过处理后的清晰图像,你可以看到汽车变得非常清晰了,很神奇吧?(至于为何有原始图像,为何又要经过处理,我们待会再讲)

再来看看运动不变摄影,下面左图是一个固定相机拍摄的运动物体场景,场景中的物体有远处的固定背景屏风,也有近处摆在一个托盘上的水平运动的物体,由于物体有远近,所以其相对相机的运动也是不同的,所以普通相机拍出来就呈现出了不同的模糊程度。而右图则是所谓运动不变摄影的结果,你可以看到总体来说画面变清晰了。真的很惊人!

看到这里,我想你已经迫不及待想知道其中的技术细节了。那就让我们开始吧 我们先从运动模糊的基本模型和解决它的困难之处讲起。

一、运动模糊的基本模型

先让我们看一个典型的场景,这里面背景和部分物体是固定的,但有一个装着啤酒罐的托盘快速的带动啤酒罐从左向右移动,使得拍摄的画面中啤酒罐出现了运动模糊。那么我们如何来建模这种模糊呢?

事实上,运动模糊和我们之前讲过的几种模糊都可以用卷积来描述。具体到上面这种均匀运动的模糊,可以如下表示:

所以,似乎像以前一样,我们只要知道了模糊核,就能够去卷积把模糊图像变清晰了,是吗?

然而,运动模糊的消除有几个难点:

  1. 很难获取到准确的卷积核,因为卷积核跟物体的远近、物体运动的速度方向都有关系。
  2. 场景中的各个物体有不同的运动方向和速度,还可能有固定的背景,所以需要把需要恢复的物体分割开来,而这本来就是一个困难的问题。
  3. 运动卷积核丢失了高频信息,去卷积技术就会面临严重的信噪比低的问题。

那么,如何解决上述问题呢?我们先从解决难点3讲起,这就是我们会介绍的Coded Exposure技术

二、Coded Exposure

我们先来看看传统相机在拍摄一个水平一维运动物体时的情况:

普通相机拍摄运动物体

此时模糊相当于对图像做一个一维的Box Filter,而这个卷积核的傅里叶变换(即OTF)如下图所示,它实际上是一个Sinc函数,可以看到这里有一些值接近零的点。

卷积核不稳定且有大量过零点

于是当我们用去卷积技术去尝试恢复清晰图像时,会因为OTF的大量零点而出现大量的噪声,最终结果信噪比极低(如下图所示)。我们说这时的运动模糊使得很多频域信息损失掉了,所以无法准确的恢复出原始信号。

因为OTF的不可逆导致去卷积出现了大量噪声

那么,有没有好办法来减少频域信息的损失呢?这就是这里提到的Coded Photography技术,对应的论文是:

Raskar et al., “Coded Exposure Photography: Motion Deblurring using Fluttered Shutter,” SIGGRAPH 2006.

我们来看看什么是Flutter Shutter,什么又是Coded Exposure

利用Flutter Shutter进行编码

从上面的动图我们看到,Flutter Shutter是指快门交替开关的技术。用这种技术拍出来的图像依然是模糊的,但这种模糊里面却依然保留了尽可能多的频域信息:

OTF相对稳定保留了高频信息

所以这种情况下拍摄的图像的模糊形态和普通相机是不一样的:

普通摄影 vs 编码摄影

这样当我们用去卷积算法对其进行去模糊时,就可以得到比较清晰的信噪比较高的图像:

普通摄影 vs 编码摄影

相信你现在已经有了这样一种印象:在曝光时间内快门交替开关能比一直打开保持更多的频域信息,使得最终图像经过去卷积后得到更清晰的图像。那么,到底如何开闭快门能够收益最大呢?

在上述论文中,作者把快门的开关看做是一种二进制编码,开为1,关为0,这样快门的状态就形成了一个编码——这也是为什么称作Coded Exposure的原因。然后作者比较了几种不同的编码,最终认为一种有52比特的编码形态能够使得整个系统保留最宽广的频率响应,从而信噪比最高。你可以看到下图中,最后一种编码的频率响应最平坦、稳定,且没有过零点。

不同编码形式得到的OTF不同

作者利用单反相机和自制的控制电路制作了一个Flutter Shutter的原型:

Flutter Shutter原型机

再来看一些Flutter Shutter的效果:

看起来真是一个不错的技术啊——然而任何方法都不可能是完美的。我们来看看Coded Exposure by Flutter Shutter有哪些不够好的地方:

  1. 作者采用的这种52bit的编码中有26个1,26个0,这意味着相比传统相机这种方式损失了一半的光能。
  2. 正如一开始我所说,卷积核很难估计,这跟物体的运动速度、远近都有关系。
  3. 需要分割运动的物体和固定的背景,否则做全局的去卷积会使得背景被破坏。

那么,有没有更好的方法呢?那么接下来我们就看一种模糊程度与目标运动速度、远近等因素无关的摄影方式。

三、Motion Invariant Photograpny(运动不变摄影)

Motion Invariant Photograpny的思想来自于下面的论文

Levin et al., “Motion-Invariant Photography,” SIGGRAPH 2008

注意这里的作者又是Levin教授,我们之前已经多次学习到她的文献了。正如上面所说,Motion Invariant Photograpny的思路是通过将整个图像的模糊程度变均匀,使之与物体的远近、运动速度等都不相关,这样就可以用简单的单一去模糊算法来使得图像变清晰了。你有没有觉得这种想法有点眼熟? 是的,这个思想就是来自于我们之前提到过的波前编码对焦扫描,不清楚的话可以参看我之前的文章:

38. 对焦扫描技术是如何实现EDOF(扩展景深)的?

39. 消除失焦模糊的其他几种方法

对焦扫描

Motion Invariant的基本假设是目标物体只做一维方向的运动,比如水平运动。虽然看起来比较严格,但是已经可以涵盖很多场景了。它的关键是要去控制相机的运动,从而控制模糊。

先来看看一个静态相机拍摄运动场景时的情况:

普通相机拍摄运动场景

这样拍摄的照片显然是模糊的

但如果我们能够移动相机,使之跟踪上面红色的汽车,情况就不同了:

可以看到这时候相机的位置和时间呈现出一种线性关系,而红色的汽车就拍摄清晰了。当然由于相机运动方向和蓝色汽车相反,所以蓝色汽车变得更加模糊了。

实际上,如果从sensor的视角来看的话,曝光时间内的画面是这样的:

当然,这并不是解决方案——因为它虽然把其中一个物体变清晰了,却让另外的物体变得更模糊了,包括背景也变模糊了。

而作者提出的解决方案还是我们之前提到的老一套:

步骤1:先把不受控的模糊变成均匀的受控模糊,见下图

步骤2:用去卷积技术处理模糊的中间图像,得到清晰的最终图像

这是怎么做到的呢?作者提出了一种抛物线扫描的方式来控制相机或传感器:

抛物线扫描移动相机

我们来看看动图:

从传感器的视角看到的是这样的画面:

这样最终拍摄出来的图像就呈现出一种特殊的模糊,可以用简单的单一去卷积得到最终的清晰图像

我们来看看用这种方式最终的效果吧:

甚至当运动不完全满足单一方向运动这个条件时,也能一定程度上恢复出清晰图像:

当然如果实际运动和之前的假设太不一样了,也会有明显的缺陷,比如下面我们传感器的抛物线运动是水平方向的,但这个人图像站立起来呈现出垂直方向的运动,最后脸部就出现了奇怪的缺陷——但总体来说由于经过了去模糊,还是比固定相机相机拍摄的结果清晰。

下面图中,测试者把纸板快速旋转,导致固定相机拍出了模糊的图像,而运动不变摄影则一定程度上使图像变清晰了。虽然由于纸板运动方向不是一维水平的,在边界处出现了明显的缺陷。

作者提到,传感器的运动完全可以通过控制现有的相机镜头马达的方式来完成。但是为了实现的便利性,作者实现的原型是通过外接机械装置来完成的,下图中你可以看到使用了变径齿轮加连杆使得相机在一个旋转平台上移动,从而模拟抛物线扫描。这里的相机就是个普通单反。

四、总结

4.1 两种方法的比较

今天我介绍了两种实现消除摄影中运动模糊的技术,一个是利用震颤快门的编码曝光,另外一个则是利用抛物线扫描实现的运动不变摄影。

编码曝光使得模糊的图像中保留了尽可能多的频域信息,所以去卷积能够得到信噪比较高的图像。但是由于画面中同时存在不同运动速度的物体,还有固定的背景,而震颤快门不能做到模糊程度与运动速度、方向无关,所以还需要手动介入来进行分割,把想要变清晰的物体分割出来处理。同时,由于我们很难去估计此时的有效卷积核,因此需要进行较多的试错。同时,编码曝光使得快门有一半的时间是关闭的,因此整体画面会偏暗。

而利用抛物线扫描实现的运动不变摄影则使得整个画面的模糊与物体的运动速度、方向都无关,同时作者还证明了此时的有效卷积核中保留了比编码曝光时更多的频域信息(参看作者论文[3]),因此其最终结果更好(见下图):

4.2 不同图像模糊的原因及解决方案

到目前为止,我已经在多篇文章中介绍了图像模糊产生的原因和一些经典的解决方案,在此做一点小小的汇总:

你可以看到这里面所有的方法都有一个基本的核心,就是成像公式:

因此很多文章都是在这个假设基础上寻找合适的卷积核c, 从而恢复出清晰图像x。

4.3 编码摄影

在这个过程中,我们还引入了编码摄影这个概念,我们来分别看看普通的摄影和编码摄影之间的区别和联系:

两种典型的编码摄影的例子如下:

 

而我在图像模糊与去模糊这一个板块里面,则介绍了编码光圈、震颤快门编码摄影等。事实上,在计算摄影这个领域有很多编码成像的技术,在Ramesh Raskar教授的主页上就列举了很多在不同的维度上进行编码的成像方式,感兴趣的话你可以进一步深入探索。

五、参考资料

今天的主要参考资料为:

  1. CMU 2017 Fall Computational Photography Course 15-463, Lecture 18
  2. Raskar et al., “Coded Exposure Photography: Motion Deblurring using Fluttered Shutter,” SIGGRAPH 2006.
  3. Levin et al., “Motion-Invariant Photography,” SIGGRAPH 2008
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于matlab的运动模糊图像修复技术是一种通过算法和处理方法,针对运动模糊图像进行修复和恢复清晰度的技术。运动模糊通常是由相机快门开启时间较长或者摄影主体运动速度快引起的,导致图像存在模糊感和细节缺失。该技术旨在改善运动模糊图像的视觉质量,使图像恢复清晰度和细节。 使用matlab进行运动模糊图像修复可以使用多种方法,包括但不限于以下几种: 1. 基于退化模型的修复方法:通过分析运动模糊图像的退化模型,利用逆滤波或者维纳滤波等算法恢复图像细节。 2. 基于频域的修复方法:将运动模糊图像进行傅里叶变换,利用频域滤波算法,如逆滤波或者维纳滤波,去除模糊效果。 3. 基于自适应滤波的修复方法:通过分析图像的模糊核,然后利用非线性滤波算法,如自适应窗口或非线性典型相似性算法等,去除模糊效果。 4. 基于深度学习的修复方法:使用深度卷积神经网络(CNN)进行端到端的图像修复,并且可以通过训练大量的运动模糊图像和清晰图像样本来提高图像恢复效果。 在matlab,可以利用图像处理工具箱提供的函数和工具,结合上述方法进行运动模糊图像的修复。通过调用相关函数、设定参数和多次试验等方式,可以选择最佳的修复结果。 然而,需要注意的是,基于matlab的运动模糊图像修复技术并不是万能的,修复效果受限于图像质量、模糊程度和选取的方法等因素。因此,在实际应用,还需要根据具体情况选择适合的算法和参数,以达到最佳的修复效果。 ### 回答2: 基于Matlab的运动模糊图像修复技术可以通过以下步骤实现。 首先,获取运动模糊图像。运动模糊通常是由于相机或物体运动导致的图像模糊。我们可以通过拍摄视频或者调整相机设置来获得运动模糊的图像。 接下来,通过Matlab运动模糊修复算法进行修复。常用的运动模糊修复算法包括逆滤波、维纳滤波和卡尔曼滤波等。这些算法可以通过Matlab的图像处理工具箱来实现。 在使用运动模糊修复算法之前,我们需要了解图像的运动方向和长度。运动模糊通常包含水平、垂直和倾斜方向等不同的运动方向。我们可以通过Matlab运动模糊估计算法来获得运动方向和长度的估计。 根据获得的运动方向和长度估计,我们可以使用逆滤波算法来恢复清晰的图像。逆滤波是一种基于频域的算法,可以通过将运动模糊图像进行傅里叶变换,然后对频域图像进行修复,最后进行逆傅里叶变换得到修复后的图像。 此外,维纳滤波和卡尔曼滤波等算法也可以用于运动模糊图像的修复。维纳滤波基于图像和噪声的统计特性,可以降低运动模糊对图像的影响。卡尔曼滤波则是一种自适应滤波算法,可以根据运动模糊的特点进行图像修复。 最后,我们可以通过评估修复后的图像质量来验证修复效果。常用的评估指标包括峰值信噪比(PSNR)和结构相似性指标(SSIM)等。 综上所述,基于Matlab的运动模糊图像修复技术可以通过运动模糊估计、运动模糊修复算法和图像质量评估等步骤实现。这些技术可以帮助我们恢复清晰的运动模糊图像,并提高图像的质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值