如何消除圖片中的運(yùn)動(dòng)模糊?
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
本文轉(zhuǎn)自:AI 算法與圖像處理
如果你試過(guò)去拍攝一些運(yùn)動(dòng)場(chǎng)景,例如拍攝疾馳的汽車,或是田徑場(chǎng)上的短跑運(yùn)動(dòng)員,你一定曾經(jīng)遇到過(guò)“拍糊”的時(shí)候。這種現(xiàn)象就是我在本文中要討論的由運(yùn)動(dòng)導(dǎo)致的圖像模糊,這是一種與我之前介紹的幾種導(dǎo)致圖像模糊的方式完全不同的問(wèn)題,所以今天讓我們來(lái)看看有什么好辦法來(lái)應(yīng)對(duì)。
我今天要給你介紹的是兩種消除運(yùn)動(dòng)模糊的技術(shù),一個(gè)叫做Coded Exposure Photography(編碼曝光),確切的說(shuō)是一種利用了Flutter Shutter(震顫快門(mén))的編碼曝光技術(shù)。另外一種則是Motion Invariant Photography(運(yùn)動(dòng)不變攝影)??赡墁F(xiàn)在還聽(tīng)起來(lái)比較拗口,不過(guò)先讓我們看看它們的效果:
下圖是編碼曝光拍攝的原始圖像,以及經(jīng)過(guò)處理后的清晰圖像,你可以看到汽車變得非常清晰了,很神奇吧?(至于為何有原始圖像,為何又要經(jīng)過(guò)處理,我們待會(huì)再講)

再來(lái)看看運(yùn)動(dòng)不變攝影,下面左圖是一個(gè)固定相機(jī)拍攝的運(yùn)動(dòng)物體場(chǎng)景,場(chǎng)景中的物體有遠(yuǎn)處的固定背景屏風(fēng),也有近處擺在一個(gè)托盤(pán)上的水平運(yùn)動(dòng)的物體,由于物體有遠(yuǎn)近,所以其相對(duì)相機(jī)的運(yùn)動(dòng)也是不同的,所以普通相機(jī)拍出來(lái)就呈現(xiàn)出了不同的模糊程度。而右圖則是所謂運(yùn)動(dòng)不變攝影的結(jié)果,你可以看到總體來(lái)說(shuō)畫(huà)面變清晰了。真的很驚人!

看到這里,我想你已經(jīng)迫不及待想知道其中的技術(shù)細(xì)節(jié)了。那就讓我們開(kāi)始吧?? 我們先從運(yùn)動(dòng)模糊的基本模型和解決它的困難之處講起。
一、運(yùn)動(dòng)模糊的基本模型
讓我們看一個(gè)典型的場(chǎng)景,這里面背景和部分物體是固定的,但有一個(gè)裝著啤酒罐的托盤(pán)快速的帶動(dòng)啤酒罐從左向右移動(dòng),使得拍攝的畫(huà)面中啤酒罐出現(xiàn)了運(yùn)動(dòng)模糊。那么我們?nèi)绾蝸?lái)建模這種模糊呢?

事實(shí)上,運(yùn)動(dòng)模糊和我們之前講過(guò)的幾種模糊都可以用卷積來(lái)描述。具體到上面這種均勻運(yùn)動(dòng)的模糊,可以如下表示:

所以,似乎像以前一樣,我們只要知道了模糊核,就能夠去卷積把模糊圖像變清晰了,是嗎?
然而,運(yùn)動(dòng)模糊的消除有幾個(gè)難點(diǎn):
很難獲取到準(zhǔn)確的卷積核,因?yàn)榫矸e核跟物體的遠(yuǎn)近、物體運(yùn)動(dòng)的速度方向都有關(guān)系。
場(chǎng)景中的各個(gè)物體有不同的運(yùn)動(dòng)方向和速度,還可能有固定的背景,所以需要把需要恢復(fù)的物體分割開(kāi)來(lái),而這本來(lái)就是一個(gè)困難的問(wèn)題。
運(yùn)動(dòng)卷積核丟失了高頻信息,去卷積技術(shù)就會(huì)面臨嚴(yán)重的信噪比低的問(wèn)題。
那么,如何解決上述問(wèn)題呢?我們先從解決難點(diǎn)3講起,這就是我們會(huì)介紹的Coded Exposure技術(shù)
二、Coded Exposure
我們先來(lái)看看傳統(tǒng)相機(jī)在拍攝一個(gè)水平一維運(yùn)動(dòng)物體時(shí)的情況:

此時(shí)模糊相當(dāng)于對(duì)圖像做一個(gè)一維的Box Filter,而這個(gè)卷積核的傅里葉變換(即OTF)如下圖所示,它實(shí)際上是一個(gè)Sinc函數(shù),可以看到這里有一些值接近零的點(diǎn)。

于是當(dāng)我們用去卷積技術(shù)去嘗試恢復(fù)清晰圖像時(shí),會(huì)因?yàn)镺TF的大量零點(diǎn)而出現(xiàn)大量的噪聲,最終結(jié)果信噪比極低(如下圖所示)。我們說(shuō)這時(shí)的運(yùn)動(dòng)模糊使得很多頻域信息損失掉了,所以無(wú)法準(zhǔn)確的恢復(fù)出原始信號(hào)。

那么,有沒(méi)有好辦法來(lái)減少頻域信息的損失呢?這就是這里提到的Coded Photography技術(shù),對(duì)應(yīng)的論文是:
Raskar et al., “Coded Exposure Photography: Motion Deblurring using Fluttered Shutter,” SIGGRAPH 2006.
我們來(lái)看看什么是Flutter Shutter,什么又是Coded Exposure

從上面的動(dòng)圖我們看到,F(xiàn)lutter Shutter是指快門(mén)交替開(kāi)關(guān)的技術(shù)。用這種技術(shù)拍出來(lái)的圖像依然是模糊的,但這種模糊里面卻依然保留了盡可能多的頻域信息:

所以這種情況下拍攝的圖像的模糊形態(tài)和普通相機(jī)是不一樣的:

這樣當(dāng)我們用去卷積算法對(duì)其進(jìn)行去模糊時(shí),就可以得到比較清晰的信噪比較高的圖像:

相信你現(xiàn)在已經(jīng)有了這樣一種印象:在曝光時(shí)間內(nèi)快門(mén)交替開(kāi)關(guān)能比一直打開(kāi)保持更多的頻域信息,使得最終圖像經(jīng)過(guò)去卷積后得到更清晰的圖像。那么,到底如何開(kāi)閉快門(mén)能夠收益最大呢?
在上述論文中,作者把快門(mén)的開(kāi)關(guān)看做是一種二進(jìn)制編碼,開(kāi)為1,關(guān)為0,這樣快門(mén)的狀態(tài)就形成了一個(gè)編碼——這也是為什么稱作Coded Exposure的原因。然后作者比較了幾種不同的編碼,最終認(rèn)為一種有52比特的編碼形態(tài)能夠使得整個(gè)系統(tǒng)保留最寬廣的頻率響應(yīng),從而信噪比最高。你可以看到下圖中,最后一種編碼的頻率響應(yīng)最平坦、穩(wěn)定,且沒(méi)有過(guò)零點(diǎn)。

作者利用單反相機(jī)和自制的控制電路制作了一個(gè)Flutter Shutter的原型:

再來(lái)看一些Flutter Shutter的效果:



看起來(lái)真是一個(gè)不錯(cuò)的技術(shù)啊——然而任何方法都不可能是完美的。我們來(lái)看看Coded Exposure by Flutter Shutter有哪些不夠好的地方:
作者采用的這種52bit的編碼中有26個(gè)1,26個(gè)0,這意味著相比傳統(tǒng)相機(jī)這種方式損失了一半的光能。
正如一開(kāi)始我所說(shuō),卷積核很難估計(jì),這跟物體的運(yùn)動(dòng)速度、遠(yuǎn)近都有關(guān)系。
需要分割運(yùn)動(dòng)的物體和固定的背景,否則做全局的去卷積會(huì)使得背景被破壞。
那么,有沒(méi)有更好的方法呢?那么接下來(lái)我們就看一種模糊程度與目標(biāo)運(yùn)動(dòng)速度、遠(yuǎn)近等因素?zé)o關(guān)的攝影方式。
三、Motion Invariant Photograpny(運(yùn)動(dòng)不變攝影)
Motion Invariant Photograpny的思想來(lái)自于下面的論文
Levin et al., “Motion-Invariant Photography,” SIGGRAPH 2008
注意這里的作者又是Levin教授,我們之前已經(jīng)多次學(xué)習(xí)到她的文獻(xiàn)了。正如上面所說(shuō),Motion Invariant Photograpny的思路是通過(guò)將整個(gè)圖像的模糊程度變均勻,使之與物體的遠(yuǎn)近、運(yùn)動(dòng)速度等都不相關(guān),這樣就可以用簡(jiǎn)單的單一去模糊算法來(lái)使得圖像變清晰了。你有沒(méi)有覺(jué)得這種想法有點(diǎn)眼熟?是的,這個(gè)思想就是來(lái)自于我們之前提到過(guò)的波前編碼和對(duì)焦掃描,不清楚的話可以參看我之前的文章:
38. 對(duì)焦掃描技術(shù)是如何實(shí)現(xiàn)EDOF(擴(kuò)展景深)的?
39. 消除失焦模糊的其他幾種方法

Motion Invariant的基本假設(shè)是目標(biāo)物體只做一維方向的運(yùn)動(dòng),比如水平運(yùn)動(dòng)。雖然看起來(lái)比較嚴(yán)格,但是已經(jīng)可以涵蓋很多場(chǎng)景了。它的關(guān)鍵是要去控制相機(jī)的運(yùn)動(dòng),從而控制模糊。
先來(lái)看看一個(gè)靜態(tài)相機(jī)拍攝運(yùn)動(dòng)場(chǎng)景時(shí)的情況:

這樣拍攝的照片顯然是模糊的

但如果我們能夠移動(dòng)相機(jī),使之跟蹤上面紅色的汽車,情況就不同了:

可以看到這時(shí)候相機(jī)的位置和時(shí)間呈現(xiàn)出一種線性關(guān)系,而紅色的汽車就拍攝清晰了。當(dāng)然由于相機(jī)運(yùn)動(dòng)方向和藍(lán)色汽車相反,所以藍(lán)色汽車變得更加模糊了。

實(shí)際上,如果從sensor的視角來(lái)看的話,曝光時(shí)間內(nèi)的畫(huà)面是這樣的:

當(dāng)然,這并不是解決方案——因?yàn)樗m然把其中一個(gè)物體變清晰了,卻讓另外的物體變得更模糊了,包括背景也變模糊了。
而作者提出的解決方案還是我們之前提到的老一套:
步驟1:先把不受控的模糊變成均勻的受控模糊,見(jiàn)下圖
步驟2:用去卷積技術(shù)處理模糊的中間圖像,得到清晰的最終圖像

這是怎么做到的呢?作者提出了一種拋物線掃描的方式來(lái)控制相機(jī)或傳感器:

我們來(lái)看看動(dòng)圖:

從傳感器的視角看到的是這樣的畫(huà)面:

這樣最終拍攝出來(lái)的圖像就呈現(xiàn)出一種特殊的模糊,可以用簡(jiǎn)單的單一去卷積得到最終的清晰圖像

我們來(lái)看看用這種方式最終的效果吧:



甚至當(dāng)運(yùn)動(dòng)不完全滿足單一方向運(yùn)動(dòng)這個(gè)條件時(shí),也能一定程度上恢復(fù)出清晰圖像:

當(dāng)然如果實(shí)際運(yùn)動(dòng)和之前的假設(shè)太不一樣了,也會(huì)有明顯的缺陷,比如下面我們傳感器的拋物線運(yùn)動(dòng)是水平方向的,但這個(gè)人圖像站立起來(lái)呈現(xiàn)出垂直方向的運(yùn)動(dòng),最后臉部就出現(xiàn)了奇怪的缺陷——但總體來(lái)說(shuō)由于經(jīng)過(guò)了去模糊,還是比固定相機(jī)相機(jī)拍攝的結(jié)果清晰。

下面圖中,測(cè)試者把紙板快速旋轉(zhuǎn),導(dǎo)致固定相機(jī)拍出了模糊的圖像,而運(yùn)動(dòng)不變攝影則一定程度上使圖像變清晰了。雖然由于紙板運(yùn)動(dòng)方向不是一維水平的,在邊界處出現(xiàn)了明顯的缺陷。

作者提到,傳感器的運(yùn)動(dòng)完全可以通過(guò)控制現(xiàn)有的相機(jī)鏡頭馬達(dá)的方式來(lái)完成。但是為了實(shí)現(xiàn)的便利性,作者實(shí)現(xiàn)的原型是通過(guò)外接機(jī)械裝置來(lái)完成的,下圖中你可以看到使用了變徑齒輪加連桿使得相機(jī)在一個(gè)旋轉(zhuǎn)平臺(tái)上移動(dòng),從而模擬拋物線掃描。這里的相機(jī)就是個(gè)普通單反。
四、總結(jié)
4.1 兩種方法的比較
今天我介紹了兩種實(shí)現(xiàn)消除攝影中運(yùn)動(dòng)模糊的技術(shù),一個(gè)是利用震顫快門(mén)的編碼曝光,另外一個(gè)則是利用拋物線掃描實(shí)現(xiàn)的運(yùn)動(dòng)不變攝影。
編碼曝光使得模糊的圖像中保留了盡可能多的頻域信息,所以去卷積能夠得到信噪比較高的圖像。但是由于畫(huà)面中同時(shí)存在不同運(yùn)動(dòng)速度的物體,還有固定的背景,而震顫快門(mén)不能做到模糊程度與運(yùn)動(dòng)速度、方向無(wú)關(guān),所以還需要手動(dòng)介入來(lái)進(jìn)行分割,把想要變清晰的物體分割出來(lái)處理。同時(shí),由于我們很難去估計(jì)此時(shí)的有效卷積核,因此需要進(jìn)行較多的試錯(cuò)。同時(shí),編碼曝光使得快門(mén)有一半的時(shí)間是關(guān)閉的,因此整體畫(huà)面會(huì)偏暗。
而利用拋物線掃描實(shí)現(xiàn)的運(yùn)動(dòng)不變攝影則使得整個(gè)畫(huà)面的模糊與物體的運(yùn)動(dòng)速度、方向都無(wú)關(guān),同時(shí)作者還證明了此時(shí)的有效卷積核中保留了比編碼曝光時(shí)更多的頻域信息(參看作者論文[3]),因此其最終結(jié)果更好(見(jiàn)下圖):

4.2 不同圖像模糊的原因及解決方案
到目前為止,我已經(jīng)在多篇文章中介紹了圖像模糊產(chǎn)生的原因和一些經(jīng)典的解決方案,在此做一點(diǎn)小小的匯總:
鏡頭缺陷導(dǎo)致的模糊(35. 去卷積 -怎么把模糊的圖像變清晰?)
相機(jī)運(yùn)動(dòng)導(dǎo)致的模糊(36. 盲去卷積 - 更加實(shí)用的圖像去模糊方法)
失焦導(dǎo)致的模糊
目標(biāo)物體運(yùn)動(dòng)導(dǎo)致的模糊
40. 如何消除攝影中的運(yùn)動(dòng)模糊?(即本文)
你可以看到這里面所有的方法都有一個(gè)基本的核心,就是成像公式:

因此很多文章都是在這個(gè)假設(shè)基礎(chǔ)上尋找合適的卷積核c, 從而恢復(fù)出清晰圖像x。
4.3 編碼攝影
在這個(gè)過(guò)程中,我們還引入了編碼攝影這個(gè)概念,我們來(lái)分別看看普通的攝影和編碼攝影之間的區(qū)別和聯(lián)系:


兩種典型的編碼攝影的例子如下:


而我在圖像模糊與去模糊這一個(gè)板塊里面,則介紹了編碼光圈、震顫快門(mén)編碼攝影等。事實(shí)上,在計(jì)算攝影這個(gè)領(lǐng)域有很多編碼成像的技術(shù),在Ramesh Raskar教授的主頁(yè)上就列舉了很多在不同的維度上進(jìn)行編碼的成像方式,感興趣的話你可以進(jìn)一步深入探索。

交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

