BM3D 灰度圖像和彩色圖像去噪實現

github地址:https://github.com/18150167970/BM3D-color-image

歡迎start(笑)。

首先,上一波原理:https://zhuanlan.zhihu.com/p/46399784

灰度圖像方法:

這裏引用上述鏈接的內容:

算法總體流程如圖:

主要分爲兩大步:

第一步,基礎估計

1、對於每個目標圖塊,在附近尋找最多MAXN1(超參數)個相似的圖塊,爲了避免噪點的影響,將圖塊經過2D變換(代碼中使用DCT變換)後再用歐氏距離衡量相似程度。按距離從小到大排序後取最多前MAXN1個。疊成一個三維數組。

2、對3D數組的第三維,即圖塊疊起來後,每個圖塊同一個位置的像素點構成的數組,進行DCT變換後,採用硬閾值的方式將小於超參數 [公式] 的成分置爲0。同時統計非零成分的數量作爲後續權重的參考。後將第三維進行逆變換。

關於硬閾值參考鏈接:硬閾值(Hard Thresholding)函數解讀

3、將這些圖塊逆變換後放回原位,利用非零成分數量統計疊加權重,最後將疊放後的圖除以每個點的權重就得到基礎估計的圖像,此時圖像的噪點得到了較大的去除。

 

第二步,最終估計:

1、由於基礎估計極大地消除了噪點,對於含噪原圖的每個目標圖塊,可以直接用對應基礎估計圖塊的歐氏距離衡量相似程度。按距離從小到大排序後取最多前MAXN1個。將基礎估計圖塊、含噪原圖圖塊分別疊成兩個三維數組。

2、對含基礎估計3D數組的第三維,即圖塊疊起來後,每個圖塊同一個位置的像素點構成的數組,進行DCT變換,利用如下公式得到係數。

3、將係數與含噪3D圖塊相乘放回原處,最後做加權平均調整即可得到最終估計圖。相對於基礎估計圖,還原了更多原圖的細節。

彩色圖像方法:引用http://www.ipol.im/pub/art/2012/l-bm3d/

Adapting the algorithm to color images is easy and can be done in the following steps:

1. First a transformation to a luminance-chrominance space from the RGB noisy image is applied. Y denotes the luminance channel and by U and V the chrominance channels;

2. For each step: 

Grouping is only performed with the Y channel; 

The 3D block built on Y is used for all three channels; 

Collaborative filtering is applied to each channel separately as well as the weighted aggregation.

3. Return to the RGB space by applying the inverse transformation.

簡單翻譯:

1.將RGB圖轉爲YUV圖。

2.每一步都做如下操作:

1)只在Y(亮度通道)進行Grouping;

2)利用Y通道尋找相似塊,並且在所有通道建立相似3D塊

3)在每一個通道上分別使用協同濾波和 weighted aggregation.

3.再轉化爲RGB空間

 

 

原始圖片:

效果圖:

 

代碼已經做好註釋,對照本文查看即可瞭解原理。

完(笑)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章