BM3D图像去噪
一、引言 ?????
? ? ? ? ?一種非局部去噪方法Non-local method[1],可以歸類到spatial method中,另外用的比較多的還有transform method,基于transform method的方法在image denoise中也取得了很好的效果,不過理論闡述會比較繁瑣,如BLS-GSM-Wavelet。
???????? NLM去噪算法使用的是inter-patchcorrelation,而Wavelet shrinkage使用的則是intra-patch correlation。這兩種方法都取得了不錯的效果,一個很自然的想法就是:可以同時使用他們兩個方法嗎?這便導出了BM3D去噪算法[2],算是現在公認的去噪效果最好的算法。
二、理論
BM3D算法主要分兩步(按collaborative filtering劃分)[3]:
S1、?在collaborative filtering階段使用hard threshold
???? ???S1.1---grouping:在image中尋找相似塊,使用hard threshold定義相似性,進而stack into不同的block;
????????S1.2---?collaborative filtering:對每一個相似grouped block做3D線性變換,shrinkage of the transform spectrum,最后在逆變換得到basic estimate block;
????????S1.3---aggregation:因為前面每一個patch在3D block逆變換后對應的多個,經驗的做法是直接平均所有的塊,但更建議根據得到的patch質量,賦予不同的權值加權平均。不難看出aggregation是一個特殊的平均過程,類似于NNLM方法,利用圖片的冗余性恢復含噪圖片。??
S2、步驟和S1類似,如下圖,不同之處有兩點[2]:
? ? ? ??D1、comparethe filtered patches instead of the original patches?
? ? ? ??D2、使用Wienerfiltering處理新的3D group,而不是?hard thresholding
? ? ? ? ?在實驗中發現S2會恢復出更多的圖像細節部分,提高去噪性能。
三、算法
? ? ? ??算法步驟:
1) findingthe image patches similar to a given image patch and?groupingthem in a 3D block
2)?3D linear transform?of the 3D block;
3)?shrinkage?of the transform spectrum coefficients;
4)?inverse?3D transformation
????? BM3D的一個形象比喻……
算法實現:
1、BM3D官網吧,不過matlab版中很多都是加密的腳本,不是很方便:?
? ? ? ? ??http://www.cs.tut.fi/~foi/GCF-BM3D/
2、一篇BM3D的快速實現,提供了源碼:http://www.ipol.im/pub/art/2012/l-bm3d/
?
?參考:
[1]????? A. Buades, B. Coll, D. Matem, C. V. Km, P.De Mallorca, J. Morel, and E. N. S. Cachan, “A non-local algorithm for imagedenoising,” no. 0, pp. 0–5.
[2]????? M.Lebrun, “An Analysis and Implementation of the BM3D Image Denoising Method,”?ImageProcess. Line, vol. 2, pp. 175–213, 2012.
[3]????? K.Dabov, a Foi, and V. Katkovnik, “Image Denoising by Sparse 3D Transformation-Domain Collaborative Filtering,” vol. 16, no. 8, pp. 1–16,2007.
總結