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