中值濾波的核心係數全是1,通過對模板係數對應的影象畫素進行統計排序,找到中值,能夠很好地排除掉較大或較小的雜訊,例如椒鹽雜訊(形象的說就是在影象中的一些黑、白點),脈衝雜訊等。
缺點:統計排序時間較長
void medianblur( inputarray src, outputarray dst, int ksize );
引數src:當ksize為3,5時,深度可以是cv_8u, cv_16u, or cv_32f;若ksize更大,深度只能是cv_8u。
引數dst:和原圖一樣的大小、型別
引數ksize:只能是正、奇數。
1、簡介
相比較高斯模糊,得到的是一整張影象被模糊,細節邊緣會丟失,只考慮了畫素間的空間距離的關係(空間距離影響權重),而雙邊濾波既考慮了畫素空間距離的關係,又考慮了畫素之間相似程度的關係,所以可以達到影象模糊的作用的同時又保留了邊緣細節
2、雙邊濾波原理
2.1、濾波器核由空間域核和值域核兩個函式生成:
①空間域核:由畫素位置歐式距離決定的模板權重值wdw_
wdwd(
i,j,
k,l)
=exp
(−(i
−k)2
+(j−
l)22
σd2)
w_(i,j,k,l)=exp(-\frac+(j-l)^}^})
wd(i,
j,k,
l)=e
xp(−
2σd2
(i−
k)2+
(j−l
)2)
注:其中(k,l)是模板中心點的座標,(i,j)是模板中其他係數的座標,σ
d\sigma_
σd是高斯函式的標準差。
②值域核:由畫素的差值決定的模板權重值wrw_
wrwr(
i,j,
k,l)
=exp
(−∥f
(i,j
)−f(
k,l)
∥22σ
r2
)w_(i,j,k,l)=exp(-\frac}^})
wr(i,
j,k,
l)=e
xp(−
2σr2
∥f(
i,j)
−f(k
,l)∥
2)
注:f(i,j),f(k,l)是影象對應模板位置的畫素值,σ
r\sigma_
σr是高斯函式的標準差。
不管是空間域核還是值域核,其大小均在[0,1]之間。
③空間域核×值域核 = 實際模板權值w(i
,j,k
,l)=
wd(i
,j,k
,l)∗
wr(i
,j,k
,l
)w(i,j,k,l)=w_(i,j,k,l)\ast w_(i,j,k,l)
w(i,j,
k,l)
=wd
(i,j
,k,l
)∗wr
(i,
j,k,
l)④求得實際畫素值:g(k
,l)=
∑f(i
,j)∗
w(i,
j,k,
l)∑w
(i,j
,k,l
)g(k,l) = \frac
g(k,l)
=∑w(
i,j,
k,l)
∑f(i
,j)∗
w(i,
j,k,
l)2.2、原理:
在影象平坦區域,臨近畫素的畫素差值較小,對應的值域權重值wrw_
wr趨近於1,此時空間域權重值wdw_
wd起主要作用,相當於對平坦區域進行高斯模糊;
在影象邊緣區域,臨近畫素的畫素差值較大,對應的值域權重值wrw_
wr趨近於0,使得w
ww減小,對畫素的影響就越小,從而保持了原圖的邊緣細節。
3、api介紹
void bilateralfilter( inputarray src, outputarray dst, int d,
double sigmacolor, double sigmaspace,
int bordertype = border_default );
不支援就地操作
引數src:8位或浮點數單通道、3通道圖。
引數dst:和原圖一樣的大小和型別。
引數d:鄰域大小,鄰域內的畫素納入計算,d越大,計算範圍越大。
引數sigmacolor:代表σ
r\sigma_
σr,顏色(差值)空間中濾波器的sigma值,決定了畫素鄰域中多少差值之內的畫素會被計算,值越大,畫素領域內就會有更多的顏色被混合計算,超過這個值的畫素會當作邊緣計算;一般設定在10~150之間。
引數sigmaspace:代表σ
d\sigma_
σd,座標(距離)空間中濾波器的sigma值,值越大,表示領域內更遠的畫素會相互影響,從而使更大區域中足夠相似的顏色獲取相同的顏色;若d > 0,則d指定了鄰域大小且與sigmaspace無關,否則d正比於sigmaspace.;一般設定為5
雙邊濾波能夠很好地儲存影象邊緣細節而去除掉低頻分量的噪音,但是花費時間相對其他濾波較長,對於簡單的雙邊濾波而言,可以將兩個sigma設定相同,如果值小於10,則對濾波器影響較小,如果值大於150,則對濾波器影響很大,會使影象看起來像**圖。
非線性濾波 中值濾波 雙邊濾波
線性濾波是兩個訊號之和的響應等於它們響應的和,也就是每個畫素的輸出值是由其周邊的畫素加權得到的。所以當雜訊的分布不符合高斯分布或者某種線性分布時,而是散粒雜訊時,使用線性濾波只能使雜訊變得柔和或者模糊,不能真正的消除雜訊,這時候就需要非雜訊濾波來處理。取待處理畫素及其鄰域畫素的灰度值按大小的順序排列...
C C OpenCV中值濾波 雙邊濾波
中值濾波 void medianblur inputarray src,outputarray dst,int ksize 只能3,5,7,9後的奇數 如下 include include include using namespace cv int main 執行結果 雙邊濾波bilateralf...
(13)中值濾波和雙邊濾波
其實中值濾波,就是那九個數值,進行排序,選擇中間的數值來代替那九個數的中間位置的值,然後再從左到右,從上到下,這樣移動運算 下面是均值濾波和高斯濾波的基礎知識 中值濾波基礎知識 運用中值濾波,就是防止乙個畫素點的周圍落差太大,影響該點的畫素值,所以,用中值濾波可以很好的去除的瑕點 下面是中值濾波的 ...