雙邊濾波及其matlab代碼
參考:
https://blog.csdn.net/MoFMan/article/details/77482794
https://www.jianshu.com/p/8d11e26c9665
代碼:https://blog.csdn.net/l_eop/article/details/81812277
高斯濾波:https://blog.csdn.net/nima1994/article/details/79776802
濾波
在介紹雙邊濾波以前,簡要介紹一下濾波的過程.就像下面的動圖所展示的,我們使用一個3×3的卷積核以步長為1對圖像進行遍歷,然后得到一幅新的經過濾波的圖像.
其中每次濾波的時候只是在計算中心點的新的像素值.也就是說每次遍歷移動一步其實只是在利用鄰域(n×n)計算一個像素點的值,直到將圖像中所有的點都卷積一次.
那么卷積的結果就是,在3×3的鄰域內,權重矩陣和圖像塊之間各對應位置相乘然后將這些乘積相加得到紅色中心點的新的像素值.
雙邊濾波
雙邊濾波是一種非線性的方法,同時考慮到了圖像的空域信息和灰度相似性,以達到保邊去噪的目的.雙邊濾波通過空域矩陣和值域矩陣形成一個新的權重矩陣,其中空域矩陣用來模糊去噪;值域矩陣用來保護邊緣.
在介紹相關公式之前,我們定義(i,j)為中心點坐標,(k,l)為以(i,j)點為中心的鄰域S內的任意一點.
空域矩陣中點(k,l)到點(i,j)的空間距離定義為:d(i,j,k,l)=exp−(i−k)2+(j−l)22σ2d(1)d(i,j,k,l)=exp-\frac{(i-k)^2+(j-l)^2}{2σ_{d}^2} (1)d(i,j,k,l)=exp−2σd2(i−k)2+(j−l)2(1)
值得注意的一旦σdσ_{d}σd確定了,那么空域矩陣中各點的值是始終不變的.
而值域矩陣定義為:r(i,j,k,l)=exp−∣∣f(k,l)−f(i,j)∣∣22σ2r(2)r(i,j,k,l)=exp-\frac{||f(k,l)-f(i,j)||^2}{2σ_{r}^2} (2)r(i,j,k,l)=exp−2σr2∣∣f(k,l)−f(i,j)∣∣2(2)
兩者相乘后,就會產生依賴於數據的雙邊濾波權重矩陣w(i,j,k,l):
