BM3D 灰度图像和彩色图像去噪实现
github地址:https://github.com/18150167970/BM3D-color-image
歡迎start(笑)。
首先,上一波原理:https://zhuanlan.zhihu.com/p/46399784
灰度圖像方法:
這里引用上述鏈接的內(nèi)容:
算法總體流程如圖:
主要分為兩大步:
第一步,基礎(chǔ)估計:
1、對于每個目標(biāo)圖塊,在附近尋找最多MAXN1(超參數(shù))個相似的圖塊,為了避免噪點的影響,將圖塊經(jīng)過2D變換(代碼中使用DCT變換)后再用歐氏距離衡量相似程度。按距離從小到大排序后取最多前MAXN1個。疊成一個三維數(shù)組。
2、對3D數(shù)組的第三維,即圖塊疊起來后,每個圖塊同一個位置的像素點構(gòu)成的數(shù)組,進行DCT變換后,采用硬閾值的方式將小于超參數(shù)??的成分置為0。同時統(tǒng)計非零成分的數(shù)量作為后續(xù)權(quán)重的參考。后將第三維進行逆變換。
關(guān)于硬閾值參考鏈接:硬閾值(Hard Thresholding)函數(shù)解讀
3、將這些圖塊逆變換后放回原位,利用非零成分數(shù)量統(tǒng)計疊加權(quán)重,最后將疊放后的圖除以每個點的權(quán)重就得到基礎(chǔ)估計的圖像,此時圖像的噪點得到了較大的去除。
?
第二步,最終估計:
1、由于基礎(chǔ)估計極大地消除了噪點,對于含噪原圖的每個目標(biāo)圖塊,可以直接用對應(yīng)基礎(chǔ)估計圖塊的歐氏距離衡量相似程度。按距離從小到大排序后取最多前MAXN1個。將基礎(chǔ)估計圖塊、含噪原圖圖塊分別疊成兩個三維數(shù)組。
2、對含基礎(chǔ)估計3D數(shù)組的第三維,即圖塊疊起來后,每個圖塊同一個位置的像素點構(gòu)成的數(shù)組,進行DCT變換,利用如下公式得到系數(shù)。
3、將系數(shù)與含噪3D圖塊相乘放回原處,最后做加權(quán)平均調(diào)整即可得到最終估計圖。相對于基礎(chǔ)估計圖,還原了更多原圖的細節(jié)。
彩色圖像方法:引用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圖轉(zhuǎn)為YUV圖。
2.每一步都做如下操作:
1)只在Y(亮度通道)進行Grouping;
2)利用Y通道尋找相似塊,并且在所有通道建立相似3D塊
3)在每一個通道上分別使用協(xié)同濾波和 weighted aggregation.
3.再轉(zhuǎn)化為RGB空間
?
?
原始圖片:
效果圖:
?
代碼已經(jīng)做好注釋,對照本文查看即可了解原理。
完(笑)
?
總結(jié)
以上是生活随笔為你收集整理的BM3D 灰度图像和彩色图像去噪实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决ORA-00020:maximum
- 下一篇: 小数的乘法是如何算的 比如说 20.5*