如何補救清晰度低的照片?
有什麼好的技術儘可能真實地還原丟失的像素?
---------------
聖誕節修改:
題主寫問題的時候欠考慮。現在想來可以分成兩個子問題:
1) 在日常生活中,普通人想要調整,比如說,128*128的圖片至256*256,有什麼好的方法?
2) 在高端領域,如航空、偵查等,由低向高解析度的圖像轉化又是如何實現的?
再次感謝各位。
曾經在CUHK里做過一年多的圖像處理研究,其中大半時間在搞Super Resolution,雖然現在已經挺久沒碰了,還是來說下兩年前的狀況。
題主提到的問題學術圈內稱為Image Upsampling, Image Upscaling, Super Resolution等。(兩年前)主流的做法分為三大類:
1. Interpolation Based,即基於插值的方法。這是比較基礎的方法,也是大多數圖像處理軟體里最常用的方法,包括bilinear, bicubic, b-spline等各種插值技術。簡單來說就是,你不是要填充一堆像素么?這些像素的值就用臨近像素的值經過某些函數計算出來。
2. Formation Process Based,即基於圖像成像原理的方法。這個方法的基本思路是:假設我們對現實生活中的某場景S拍了一張低解析度的圖A,那麼A可以視為是相機作用於場景S下的一個函數f(S)=A,其中f則是相機成像的過程。通過研究假設f的內部細節,來構造出一個新的g(S)=B,其中B是高解析度的圖。這其中一般會涉及到光圈,模糊,反卷積之類的東西。
3. Patch Based,即基於貼片的方法。也就是我們通過某些途徑搞到一堆圖片的碎片,然後再用這些碎片來拼出一張大圖。這些碎片可以是從一個很大的圖片資料庫里提取出來,但效率通常較低;也有從原始小圖裡提取碎片再貼到大圖裡的,這是基於「圖像里往往有『自相似』結構」的一種發現,這類方法被稱作Local Self-Examples或者Texture Hallucination等。
主流的結果中,方法3的效果最好。
另外注意,假設你有一張真·高清無碼大圖B1,以及小圖A。基於A做出來的偽·高清無碼大圖B2,從理論上來講當然最好是跟B1完全一樣,但實際上不大可能。在實際中,B1跟B2有多「像」,這是一個評價演算法優劣的指標之一,但並不是唯一的指標。因為「像」的結果未必就「好」。一個「好」的結果還要考慮Nature Image prior,即「人們認為一張正常的圖片一般會滿足什麼樣的規律」等等。如果是丟失的像素,完全可以有很好的辦法估計出來,一張圖片128*128,當你把它放大成256*256的時候,憑空生成的49152個像素就是通過某種內插的方式估計出來的。你看這個放大圖片,感覺起來很真實,因為那些像素值估計的不錯。
如果是補救清晰度低的圖片,其實就是圖像復原,按照不同的條件和圖片退化的情況有不同的方法。比如圖片清晰度低是拍照的時候手抖了,這種去模糊現在已經不是什麼難事,微軟前些年就搞出一個去模糊演算法,效果驚人。
再比方你想看清楚一張衛星圖片的細節,完全可以做一個超解析度處理,先拍上若干相對模糊的——不需要完全相同,拍的大致是一個玩意兒就可以了,可以合成一個很清楚的照片。
上兩個圖,不知道你們是不是還覺得失真無法復原。
再來個去模糊的你感受一下:
----------------------------
回答 @NewWinton 這兩張圖是從老師課件里搞出來的,說實話我還真不能保證老師是不是偷懶直接把原圖搞來,於是我搜了一下原圖,這圖叫malight,原圖如下:
誒,根本看不出來差別好嘛?(所以說這去噪做得好啊),人眼看不出來,機器看得出來,matlab大法好!請看兩幅圖的殘差:
這黑糊糊一片啥玩意兒這是?但是仔細看,能看到很細微的差別。看不出來不要緊,我們把這個圖二值化,凡是差值不為0,也就是兩幅圖不一樣的地方全用白點標出來
這下清楚了咩= =所以老師木有直接貼原圖來糊弄我們,為老師的敬業和認真點個贊。
(這裡的殘差沒有做絕對值,殘差小於0的全歸零了,當然不是完全準確,不過我們的目標是說明這圖和原圖不一樣,就這個目的來說,應該是足夠了。)
------------------
關於「一個蘋果如何打一大杯蘋果汁」,一個蘋果是打不出一大杯蘋果汁的,不過這和問題是兩回事,信息是信息,蘋果是蘋果。信息交換的結果是double,蘋果交換的結果還是一人一個蘋果。
如果你指的是想把肯尼迪這張照片弄清楚些,把你看不出來的細節弄的看清楚些,雖然我不知道有沒有人對這張照片做過什麼處理,但確實能做到類似的事情,這玩意叫圖像增強。如果各位手頭有《數字圖像處理》這本書的話,第三章有一張人體骨架的圖,這張圖的增強沒有採用任何額外的信息,沒有多餘的照片,沒有相機的參數,也不用等蘋果樹結出一樹蘋果,只有圖像本身,就可以把看不到的肋骨和人體細節增強到讓你看到。我就不貼圖了,類似的結果還有很多,例如虹膜身份驗證,誒大概是叫這名字吧,預處理可以把你眼球的照片增強到看得清眼球的各種細節甚至包括血管。
------------------
關於因果律,或許這不是因果律的錯,可能是你沒有找到真正的因果吧
我以前一直認為丟掉的東西就回不來了,直到我學了採樣定理
事實上直到現在我還是對採樣定理的結果感到十分驚訝,一個信號,隔一段距離拿一個樣本出來,最後憑著這些樣本居然就可以無失真的把原信號重構出來,無失真的喲,真是個反常識的結果呢。
從06年開始到現在的壓縮感知理論的成果可能比採樣定理更讓人驚悚一些,它可以從比奈奎斯特採樣頻率所需要的更少的樣本恢復出原來的信號,Rice大學做了一個單像素相機的玩意,感興趣的同學不妨搜索一下,這東西每次用一個隨機的黑白花紋反射圖片的光線,然後將其匯聚到一點形成一個像素記錄下來,花紋變換若干次後,就可以用記錄下來的極少的像素把整個圖像全恢復出來——我相信因果律是沒錯的,不過如果能找到更多的「因果」,從前看起來不符合因果律的東西或許真的可以做到。
純路過,順便貼兩張圖...
原照片是這樣的:
丘吉爾、羅斯福、斯大林這是ps圖:
這張圖是DIESEL的廣告之一,是用雅爾塔會議的照片做的...
我已經給這張PS圖跪碎了無數個膝蓋......順便怒求PSD文件...
有知友說了模糊圖像清晰化。
原來問題想問的是圖像縮放哦。這問題真是個很大很大的課題。
最經典的縮放演算法邁出的第一步就是插值!!
插值方法目前不外乎4種:最近鄰取樣,雙線形插值、雙三次插值、Lanczos插值。
具體演算法內容和例子維基頁面Image scaling有。
自己可以用matlab里的Resize image做實驗。
但是一般這樣的結果在實際應用上還是不夠理想。
比如說這個結果分別用了最近鄰取樣,雙線形插值、雙三次插值三種方法來插值。(來自Help)
縱觀一下總體插值效果——把圖像變柔滑了。但由於邊緣細節的信息量還是那點沒有提升,成為了投影儀效果——圖像變大的同時也變模糊了!
而插值造成的模糊,BigMoyan 回答的用模糊核已知或可估計的情況去模糊的方法就不適用了。
這和圖像本身質量,圖像內容關係很大,好的修復效果避免不了需要設計一列濾波器,調試合適的參數。
如果模糊的圖像有雜訊,低通濾波去噪吧!
如果加強邊界,高通濾波銳化或者Unsharp masking少不了,
如果圖像質量太慘淡,還需要設計圖像增強方法。
Photshop的圖像縮放選項只應用了插值,。一個商業軟體和Photoshop插件叫Perfect Resize,專專門搞圖像縮放,招牌上說可以無損放大10倍,來看看它大概的流程。
一個網友把它和原裝photoshop的結果做分析的文章OnOne Perfect Resize Software Review,。另一個網友的教程圖片放大軟體perfect resize使用教程_ps吧。
看過教程後,其實套路還是和上面提到的是一致的。軟體的選項包括插值方式,平滑參數和銳化方法,圖像保真里的高光陰影保護。
超解析度重構——專門解決樓主提出的問題,傳統的插值是比較通用和基礎的,如二次三項差值,但是現在一般作為機器學習演算法超解析度重構的預處理部分,目的是將圖片放大成一個初級低解析度的版本(如128*128放大成256*256),再用機器學習演算法(經過訓練)預測損失的圖像高頻分量部分,與二次三項插值的結果疊加。現在比較流行通用的有基於稀疏字典編碼的方法,具體可參見大神yangjianchao的論文,在08年(CVPR),10、12年(TIP),都有該方法的更新。
處女答,好開心~
手機回複比較簡略,本人不是圖像處理方向,只知道大概。援一下萌萌的傲嬌妹 @榴槤徐 。
資訊理論裡面有個數據處理定理,簡單說就是在孤立處理信息的過程中信息熵永遠不增加,最好的情況是處理前後保持不變,因此如果從信息熵的角度出發,無論如何處理都是不能夠增加信息熵的。
但是這是以信息熵的角度去衡量圖片是否清晰,肯定是有局限性的,比如還有用對比度或者梯度去衡量的方法,這個可以看有關圖像清晰度評價函數的內容。
譬如有噪圖片引起的不清晰,雜訊會帶來干擾,使圖片不清晰,如果我們知道雜訊服從一個什麼分布(一般是高斯瑞利或者賴斯),我們可以用類似濾波的手段去去除這些雜訊。這個過程中雜訊攜帶的信息被過濾,整體信息熵減小,可實現。
如果有其他人為干擾,只要不是很嚴重,並且我們能知道或者擬合出干擾的一些特性,是有可能去除的。
而對於另一種不清晰的問題,比如失焦圖片,由於各個像素之間存在信息冗餘,通俗的說就是像素間有相關性:本來是黑黑白白,成了黑灰灰白,「分界」不明顯,這種圖片需要的是去冗餘。
可以簡單證明失焦圖片的信息熵小於對焦準確而其他情況一樣的圖片,由數據處理定理,可證不可由單一(「單一」這個限定必須有,否則不對)的失焦圖片恢復成為清晰的合焦圖片。
此外還有比如原來圖像放大,或者去抖動的方法。這個基本是利用已有像素的信息去推測,或者說去猜周圍的像素是什麼樣。常見的有二次線性插值、三次卷積插值這樣的方法,一般來說演算法越好效果也越好,當然開銷也越大。並且由於是建立在已有信息之上,同樣不增加信息熵。
數據處理定理這裡就不給出證明了,要命。
其實,我主要是想問是不是有些答案被隱藏了撤銷了還是怎麼滴?因為我沒看到什麼嘲諷啊。。
以及,根據採樣定理,只要被採樣的信號沒有產生混疊,它就能夠100%的被複原哦。
另外,如果利用共有認知(其實,我不知道怎麼表達這個概念。。),有很多看起來沒法「補救」的照片都能被「補救」回來。比方,有張照片里描述了一個人拿了一本書,但由於某些原因,書的封面只顯示了一半。而根據剩下的半個封面,你能夠推測出這本書是什麼,然後,你再找到這本書的封面,根據這個封面對照片進行修復。(就現在的技術而言,這些操作還需要人來做,但誰說未來不會由計算機自動找到與遺漏區域相關圖片,然後進行修復呢?)
插值。。。
不同演算法的插值
現在圖像處理玩的貌似就是統計和概率的東西,大意是,我不知道圖像的這個位置確切是什麼,但是根據一些先驗信息,這個地方有一定的概率會是某個東西。而且可靠的信息越多,這個位置是什麼的概率就更大。
比如在圖片上某個地方有一片黑色,那麼這個區域的某個點是黑色的可能性很大。但是假如附近出現一條白線,那麼這個點是黑色的可能性就下降了
matlab吧,無論是插值 運算 銳化平滑濾波器還是去背景降噪處理都可以補救補救。。個人覺得自己了解點原理,碼個代碼比用修圖軟體感覺要好點
給個軟體,處理運動模糊的可否?
我覺得可以進行差值,然後看清晰度需不需要圖像的濾波或者增強什麼的
日常生活中有好多模糊是手抖造成的,應該屬於運動模糊,有那種專門去運動模糊的代碼吧...阿哈...
航拍之類的低分到高分可以用學習方法,就是需要很多訓練樣本,然後超分重建,而且這類影像細節多並不給人高分的感覺,重要的是邊緣清晰,但是基於學習的方法沒有針對邊緣,我記得有種優化邊緣方法叫dtv,效果挺好的~
方法很多,我教你一個非常簡單又實用的技巧,就是先ctrl+j複製圖片圖層,然後選擇濾鏡-其他-高反差保留-參數可以根據自己的喜好調整-最後選中複製的圖片圖層-混合模式改為「疊加」就可以了!
你想要整的是超解析度重構,業界最先進的方法流程如下
先是去模糊,去噪,如 @謝鍇和 @BigMoyan所描述的演算法,這一步意思是先把圖像整成能看的樣子再說,解析度不變。
然後就是樓上匿名用戶所說的辦法,機器學習。本質上就是通過在一個極大的高解析度圖片資料庫里尋找,收集和我們想處理的低解析度圖片類似的圖片碎片,把他們組成一幅新圖。當然還有更簡單的方法,不需要訓練庫,自己學習自己實現超解析度重構,這種情況的話提升解析度效果有限。
這是圖像超解析度的問題
超解析度--低解析度的圖片通過技術方法(比如最簡單的bicubic差值處理)變成高解析度的。
但是用差值方法處理出來的高解析度圖片會比較模糊。所以有很多基於差值的改進演算法,效果還不錯但是有局限性。
目前來說圖像超解析度效果最好的是學習(learning)的方法:找一組高解析度圖片做訓練集,降採樣(downsampling)為低解析度,這樣就有了一組地解析度圖片和和與其對應的高解析度圖片(真實圖像),然後「學」出高解析度與地解析度圖片的關係,應用到待處理的地解析度圖片,就能得到高解析度圖片。
通常用來學習或者說做訓練的訓練集里的圖片數量很多,10的5~7次方,甚至更多。結果好壞會比較依賴訓練集的選擇,比如你要超分辨一張人臉圖片,那麼訓練集里如果有大量人臉,就可以得到很好的高解析度的人臉,反之效果會沒有那麼好。
對於衛星圖片,我所知的對於高光譜圖像,在上述方法的基礎上,還可以更好地利用圖片的自相似性,也叫冗餘性。圖片自相似性,最早提出是在一篇提出nonlocalmean的方法的文章里,說自然圖片有很強的自相似性。
等有電腦了再補充摘掉眼鏡
「我也不是搞這個的,對很多技術只是知道個大概,說不定大概還有些錯誤」明明自己什麼都不懂卻大義凜然地跳出來反駁別人,拿幾個簡單形狀的黑白照片就以為這個世界的演算法已經超脫因果律了,嘖嘖嘖。推薦閱讀:
※在圖像處理中,散度 div 具體的作用是什麼?
※有哪些辦法將圖形轉化為聲音?
※清晰度、對比度和銳度之間有什麼區別?
※人臉識別相關有哪些重要的國際會議?
※使用兩張角度不同的靜態圖像合成連貫的動畫,難度有多大?
TAG:AdobePhotoshop | 圖像處理 | 照片 | 如何HowTo | 圖片處理 |