前些日子在學習圖像降噪的算法,自然而然的發現了這篇里程碑式的作品,“BM3D”3D塊匹配降噪算法,想來時間也久,趕緊再寫下來,以免過后忘記。
在學習的過程中,由于沒學過數字圖像處理,學起來還是挺墨跡的,前前后后得有四五天吧,才算整個大差不差,期間看了許多前輩的博客和代碼,也總算有些許的進步和理解,特此感謝,并將算法原文、參考博客和文獻附文末。
從“頭”開始
圖像去噪是非常基礎也是非常必要的研究,去噪常常在更高級的圖像處理之前進行,是圖像處理的基礎。圖像中噪聲的來源有許多種,種類也各不相同,比如椒鹽噪聲、高斯噪聲等。對于輸入的帶有噪聲的圖像v(x),其加性噪聲可以用一個方程來表示:
如果能夠精確地獲得噪聲,用輸入圖像減去噪聲就可以恢復出原始圖像。但實際中除非明確地知道噪聲生成的方式,否則噪聲很難單獨求出來。由此,便誕生了一堆的圖像降噪算法,從傳統算法到現在的機器學習的算法,降噪算法得到了很大的發展。
那么傳統的想法是什么呢,我們主要分為以下兩大類。
對于我們來講,一個自然而然地想法就是,能不能把空間域和變換域的降噪方法結合起來,在對圖像進行降噪處理,我們能想到,自然也有人想得到,NL-means應運而生。
非局部均值算法的主要想法在于它充分利用了自然圖像的“空間相似性”,將圖像分成一個個的小塊,在以圖像為單位對圖像進行降噪,簡單來講,假設我們取11*11的窗口作為處理的小圖像塊,我們在圖像上選取幾個類似的圖像斑塊,例如上述的q1、q2和q3,但是q1和q2明顯比q3近一點,根據空間相似性我們很容易知道q1q2應該和p更為相似,故我們在對P圖像斑塊進行處理的時候,我們可以對q1q2q3分別賦予不同的權重,再把他們“摞起來”,求個加權平均。形象來講,假設存在一個每一層結構都完全相同的大樓,那么在進行加權平均的時候,我們這樣想,我們把P想象為其中的一層,我們最終是要P圖像斑塊里面每一個像素的值,p若是一層樓,那么里面的每一個像素就是這層樓中的每一個房間,P為3樓,q1q2為1層和4層,q3為5層,那么p像素的值的大小就應該為q1q2q3每個與p對應房間(像素)值的加權平均,這樣就對P圖像斑塊完成了降噪的過程,類似一個基于大斑塊的高斯濾波算法。此外,從這個舉例中我們也大概摸索出了BM3D里面3D的來歷.......
至此,非局部均值算法以經表現不錯了,但是它體現在簡單的加權平均,并且仍然在空間域處理圖像,科技并非停滯不前,BM3D來了......
BM3D(Block-matching and 3D filtering,3維塊匹配濾波)是當前效果最好的算法之一。該算法通過相似判定找到與參考塊相近的二維圖像塊,并將相似塊按照組合成三維群組,對三維群組進行協同濾波處理,再將處理結果聚合到原圖像塊的位置。該算法的思想跟NL-Means有點類似,也是在圖像中尋找相似塊的方法進行濾波,但是相對于NL-Means要復雜許多。總體可以分為兩步:
在這兩大步中,分別又有三小步:
相似塊分組(Grouping)→協同濾波(Collaborative Filtering) →聚合(Aggregation)
我們細看每一個小步驟,編組的過程類似于NL-means:
接下來,第二小步,像上面講述的房子一樣,我們把分好的圖像斑塊“摞起來”,形成一個3D的“塊”(Block),在每一層中進行二維變換,變換到頻率域,此外,在第三個維度,也就是每一層的對應的房間(像素)上進行一維變換,變換之后,按照非局部均值的思想,對斑塊在頻率域進行降噪處理,(其實是對像素值的加權平均),再對經過變換之后圖像斑塊,進行“硬閾值”處理,處理剔除不合格像素值,在經過反三維變換變換為空間域,再對圖像進行塊匹配,聚合至原來每個塊的位置,這樣整個圖像就從一維變三維再變回一維了。至此,第一步完成。
Aggregation:此時,每個二維塊都是對去噪圖像的估計。這一步分別將這些塊融合到原來的位置,每個像素的灰度值通過每個對應位置的塊的值加權平均。
第二步與第一步類似
Step2:最終估計
(1)Grouping:第二步中的聚合過程與第一步類似,不同的是,這次將會得到兩個三維數組:噪聲圖形成的三維矩陣和基礎估計結果的三維矩陣。
(2)Collaborative Filtering:兩個三維矩陣都進行二維和一維變換。用維納濾波將噪聲圖形成的三維矩陣進行系數放縮,該系數通過基礎估計的三維矩陣的值以及噪聲強度得出。
Aggregation:與Step1中一樣,只是此時加權的權重取決于維納濾波的系數和噪聲強度。
至此,算法完成,效果還是很好的,我們來看一些示例:
參考文獻:
詳盡過程
圖解噪聲與去噪 之二:從『均值濾波』到『BM3D』
阿達瑪變換詳盡
轉:X264中SATD實現分析 - Mr.Rico - 博客園
克內羅內積
克羅內克積_百度百科
小波變換
小波變換(wavelet transform)的通俗解釋(一)
blog.csdn.net/zizi7/art
頻域空域細致講解
blog.csdn.net/zdh198210
審核編輯 :李倩
-
圖像處理
+關注
關注
27文章
1296瀏覽量
56823 -
算法
+關注
關注
23文章
4625瀏覽量
93124
原文標題:BM3D算法學習
文章出處:【微信號:leezym0317,微信公眾號:FPGA開源工作室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論