雙邊濾波器原理及實現

2021-07-15 22:17:36 字數 1672 閱讀 1050

雙邊濾波(bilateral filter)是一種非線性的濾波方法,是結合影象的空間鄰近度和畫素值相似度的一種折衷處理,同時考慮空域資訊和灰度相似性,達到保邊去噪的目的。具有簡單、非迭代、區域性的特點。雙邊濾波器的好處是可以做邊緣儲存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會較明顯地模糊邊緣,對於高頻細節的保護效果並不明顯[1]。

]中的雙

邊濾波效

果圖雙邊濾波器中輸出(i

,j) 位置的畫素值

g 依賴於鄰域內畫素值

f的加權組合(k,

l 表示鄰域畫素位置): g(

i,j)

=∑k,

lf(k

,l)w

(i,j

,k,l

)∑k,

lw(i

,j,k

,l)

權重係數w(

i,j,

k,l)

取決於定義域核

d 與值域核

r的乘積: d(

i,j,

k,l)

=exp

(−(i

−k)2

+(j−

l)22

σ2d)

, r(

i,j,

k,l)

=exp

(−||

f(i,

j)−f

(k,l

)||2

2σ2r

), w

(i,j

,k,l

)=ex

p(−(

i−k)

2+(j

−l)2

2σ2d

−||f

(i,j

)−f(

k,l)

||22

σ2r)

同時考慮了空間域與值域的差別。一般過去用的維納濾波或者高斯濾波去降噪,只考慮了空間域差別,都會較明顯地模糊邊緣,對於高頻細節的保護效果並不明顯;α-截尾均值濾波器,去掉百分率為α的最小值和最大之後剩下畫素的均值作為濾波器,只考慮了值域差別。

#include

"stdafx.h"

#include

"stdio.h"

#include

"cv.h"

#include

"highgui.h"

#include

"math.h"

#include

"time.h"

using namespace cv;

int main()

結果圖如下,**明顯變光滑了,主要的邊緣都保留了下來:

計算速度較慢,將近100ms。

[2]tomasi c, manduchi r. bilateral filtering for gray and color images[c]//computer vision, 1998. sixth international conference on. ieee, 1998: 839-846. 引用次數:5896

[3]雙邊濾波matlab實現-csdn部落格

雙邊濾波器的原理

雙邊濾波器是什麼?雙邊濾波 bilateral filter 是一種可以保邊去噪的濾波器。之所以可以達到此去噪效果,是因為濾波器是由兩個函式構成。乙個函式是由幾何空間距離決定濾波器係數。另乙個由畫素差值決定濾波器係數。可以與其相比較的兩個filter 高斯低通濾波器 和 截尾均值濾波器 去掉百分率為...

一維訊號雙邊濾波器 雙邊濾波器文獻總結(一)

因為最後的dde演算法中,最核心的就是濾波器模組,由於做之前是沒有好好攻讀相關硬體文獻,加上相關背景寫的不好導師一頓痛批,搞得現在要本末倒置,拿結果去找自己值得這麼做的理由。但其實從研究角度來說應該是一件好事的。小吐個槽 說起來之前也不算是沒好好讀文獻,實在是調研的時候方向偏差太大,紅外影象增強的v...

使用Matlab實現美顏功能(雙邊濾波器)

借用一張lena小姐的圖 題外話 lena小姐的全圖真的 可以看出美顏效果還是明顯的,下面進行過程實現 保留邊界細節,模糊變化不明顯的區域 我們知道高斯濾波器可以起到模糊影象的作用,而上述的過程是選擇性地進行模糊,在這裡是對影象的灰度變化進行乙個判斷,達到模糊該模糊的地方,並保留邊緣的細節 這裡可以...