怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法
本文同步發(fā)表在我的微信公眾號和知乎專欄“計(jì)算攝影學(xué)”,歡迎掃碼關(guān)注,
上一篇文章35. 去卷積:怎么把模糊的圖像變清晰?吸引了很多朋友的關(guān)注。在這篇文章里面,我給大家講了一種叫做“非盲去卷積”的方法,當(dāng)指定了PSF(下圖中的c),和觀測到的模糊圖像(下圖中的b),我們可以恢復(fù)出清晰的圖像(下圖中的x)。
很多人都覺得去卷積大法好啊,真的可以把渣畫質(zhì)變清晰。可就是需要提前知道PSF,這可就難了。確實(shí),很多情況下提前測定PSF是根本不可能的,有可能你手上只拿到了一張很模糊的照片b,不知道c,想要恢復(fù)出x,這時候應(yīng)該怎么辦呢?
事實(shí)上,這也是可以辦到的,這就是所謂的“盲去卷積”(Blind Deconvolution),今天我就給大家介紹這種技術(shù)。
我們先來看兩組盲去卷積的結(jié)果,給大家一些直觀的感受:
上面的結(jié)果來自于盲去卷積領(lǐng)域非常經(jīng)典而基礎(chǔ)的文章:
Fergus et al., “Removing camera shake from a single image,” SIGGRAPH 2006.今天我主要就為你介紹這篇文章的思想
一、盲去卷積的基本思想
1.1 利用先驗(yàn)信息
小明是第一次用單反的攝影小白,他剛剛很興奮的端起相機(jī)拍了一張照片:
https://www.zhihu.com/video/1208905929737273344Oops!手沒拿穩(wěn),拍出了一張超模糊的照片:
我們看看小明的相機(jī)在拍照瞬間的運(yùn)動軌跡
很顯然,他這樣是拍不出來好片子的,我們來簡化一下他這張照片的生成過程:
上圖中的模糊核(PSF)是由于小明端起相機(jī)時的隨機(jī)抖動導(dǎo)致的,我們無法提前測定,那么怎么樣才能把清晰圖像恢復(fù)出來呢? 這真是一個超難的問題。
這就像你知道了11這個數(shù)是由2個數(shù)的乘積構(gòu)成的,要讓你猜出是哪兩個數(shù)一樣困難:
一張模糊的圖像,也有可能有多種生成模式,只有最下面這種才是我們需要的,怎么才能得到它呢?
很顯然,我們需要利用一些先驗(yàn)信息。有兩個關(guān)鍵的先驗(yàn)信息可以幫助我們
1 - 圖像的梯度分布
清晰的自然圖像的梯度符合一種叫做"Heavy-Tail"的分布形態(tài)。直觀上講,一張清晰圖像里面有很多平滑的區(qū)域且噪聲較低,所以梯度接近0的像素還是占大多數(shù)。但是由于圖像清晰,所以物體的邊界比較明顯,所以還是有很多像素的梯度較大。因此這種梯度的分布大概長這個樣子(梯度直方圖的縱坐標(biāo)是Log化的密度):
但是模糊的圖像的邊緣被糊掉了,所以更多的像素的梯度趨于0,因此其梯度直方圖就會變化:
所以我們想要尋找的是符合上面重尾分布的圖像,而不是其他隨隨便便的圖像
2 - 模糊核的形態(tài)
我們這里展示的是相機(jī)的運(yùn)動導(dǎo)致的模糊,那么可以認(rèn)為模糊核是稀疏的,有連續(xù)的軌跡,并且模糊核值都是非負(fù)數(shù)。所以我們重建出來的模糊核也不是隨隨便便的,它必須符合上述這些特點(diǎn)才是一個合格的運(yùn)動模糊核。
3 - 噪聲
相機(jī)總是有噪聲的,為了簡化問題,我們可以假設(shè)噪聲是均值為0的高斯噪聲
于是,我們就有了幾種信息用于重建清晰的圖像
1.2 問題的數(shù)學(xué)建模
已知模糊圖像P,未知圖像為L,未知的卷積核為K。一個基本的想法是把問題看做是求最大后驗(yàn)概率的問題:
其中K和L滿足一定的先驗(yàn)條件的約束。我們所需的就是把后驗(yàn)概率公式表達(dá)出來。為了讓這篇文章能夠比較容易看懂,我把相關(guān)的細(xì)節(jié)列到文章的后面,這樣你可以更連貫的閱讀這篇文章。
1.3 問題的求解
作者嘗試了用標(biāo)準(zhǔn)的MAP求解方法來求解出K和L,但最終效果卻很差
作者對此的解釋是MAP目標(biāo)函數(shù)會嘗試讓所有像素的梯度都最小化,而實(shí)際的自然圖像中包含有大量高梯度的區(qū)域。
而在2009年的下面這篇著名論文中,作者Levin教授則提出了更深入的見解。
Levin et al., “Understanding and evaluating blind deconvolution algorithms,” CVPR 2009 and PAMI 2011Levin教授認(rèn)為用MAP目標(biāo)函數(shù)同時求解K和L肯定不好,有如下的原因:
2. 上述MAP目標(biāo)函數(shù)的變量個數(shù)具有高度的非對稱性,比如對于這幅畢加索照片:
可見已知量的個數(shù)總是小于未知量的個數(shù) #P < #L + #K
以上兩個原因就會導(dǎo)致用這種同時估計(jì)K和L的目標(biāo)函數(shù)來做MAP總是無法得到好的結(jié)果。那有沒有更好的方法呢?
Levin認(rèn)為,更好的辦法是只單獨(dú)估計(jì)K,即把下面左邊的問題轉(zhuǎn)換為右邊的問題
這樣,已知量的個數(shù)就遠(yuǎn)遠(yuǎn)大于未知量的個數(shù) #P >> #K
這里的p(K|P)是相對于L的邊際概率,即:
簡單來說,就是對每一個可能的K,我們都要在所有可能的L上求取其后驗(yàn)概率,并把這些后驗(yàn)概率值加起來,得到p(K|P)。你應(yīng)該可以感覺到求這樣的邊際概率也是很不容易的事情,計(jì)算量非常復(fù)雜。于是很多學(xué)者采用了近似的方式來進(jìn)行求解。回到我們開頭介紹的Fergus的論文,作者是采用了“變分貝葉斯(variational Bayesian)”方法來近似后驗(yàn)概率的表示和求取
Fergus證明了這種方法能得到遠(yuǎn)比原始的同時求取K和L的MAP算法好。
二、完整的流程
在論文中, Fergus展示了其完整的盲去卷積的流程:
第一步:預(yù)處理圖像,為了降低計(jì)算量,并得到良好的結(jié)果,需要用戶來選擇一個圖像塊。
第二步:利用變分貝葉斯,估計(jì)卷積核K。為了避免陷入局部最優(yōu),作者采用了coarse-to-fine的策略
第三步:利用標(biāo)準(zhǔn)的非盲去卷積方法,重建清晰圖像L。作者采用了我在上一篇文章里面提到的Richardson-Lucy算法進(jìn)行。
三、效果展示
四、后驗(yàn)概率的細(xì)節(jié)
正如前面所講,為了求解問題,需要把后驗(yàn)概率用公式表達(dá)出來。先引入一些符號來說明問題:
- :模糊圖像塊
- :可能的模糊核
- :可能的清晰圖像塊
- : P的梯度
- : Lp的梯度
- :噪聲
首先,我們前面講過
由于卷積運(yùn)算是線性運(yùn)算,因此可以有:
這樣我們可以把后驗(yàn)概率改寫為
用MAP的思想來說,問題就轉(zhuǎn)換為求使得上述概率最大的K和
我們可以用貝葉斯公式將這個后驗(yàn)概率展開:
我們分別來看后面三項(xiàng):
于是上面的后驗(yàn)概率就可表示為:
五、算法值得改進(jìn)的地方
在文章中Fergus提到的幾個點(diǎn)都是值得改進(jìn)的:
作者本身也在其文章中提到了一些值得改進(jìn)的地方,能讓后人在此基礎(chǔ)上對 這項(xiàng)工作有所完。 果不其然,在隨后幾年的CVPR, SIGGRAPH, ICCV, ECCV上, 幾乎每屆都有更好的結(jié)果涌現(xiàn)。
比如下面這篇2008年Jiaya Jia團(tuán)隊(duì)的文章就作出了非常好的效果:
Shan et al., “High-quality Motion Deblurring from a Single Image,” SIGGRAPH 2008文章的改善點(diǎn)包括了:
下面是算法的效果,還是非常不錯的:
這個領(lǐng)域后面出了非常多效果更好的文章,在github上有一個專門的項(xiàng)目整理記錄:
https://github.com/subeeshvasu/Awesome-Deblurring?github.com六、總結(jié)
去卷積分為非盲去卷積和盲去卷積,我介紹的用途主要是圖像的去模糊。今天介紹的Fergus的文章利用了變分貝葉斯算法來求解模糊核K,然后利用經(jīng)典的非盲去卷積算法Richardson-Lucy算法來進(jìn)行清晰圖像的恢復(fù)。從今天介紹的文章你可以看到,理解盲去卷積的算法對圖像的統(tǒng)計(jì)信息、概率知識、最優(yōu)化求解方法的要求要比非盲去卷積高很多。坦率說,我自己在看這些文章時也感覺很吃力。
但我希望這篇文章能給你打開一扇大門,讓你可以透過它看到一片新的研究天地。如果你喜歡這篇文章,請給我點(diǎn)贊,謝謝!
七、參考資料
本文同步發(fā)表在我的微信公眾號和知乎專欄“計(jì)算攝影學(xué)”,歡迎掃碼關(guān)注,
總結(jié)
以上是生活随笔為你收集整理的怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业信用卡对比 爱奇艺联名卡VS淘宝网联
- 下一篇: 1至9填入九个方框内_防水涂料和施工堵漏