opencv基礎之邊緣保留濾波演算法

2021-10-09 09:48:20 字數 2727 閱讀 6764

高斯濾波考慮了影象空間位置對權重的影響,離中心點越近權重越大。但是高斯濾波沒有考慮影象中的畫素分布對影象卷積輸出的影響。而高斯雙邊濾波則充分考慮了這一點,對畫素值空間分布差異較大的進行保留從而可以完整地保留影象的邊緣資訊。

影象一定區域內的畫素分布是有一定規律的,要保留邊緣資訊,就應當只讓畫素值相近的參與計算,對於差異較大的則不參與卷積計算。所謂雙邊濾波,就是指同時考慮了空間位置和畫素值分布這兩點。

;. inputarray src: 輸入影象,可以是mat型別,影象必須是8位或浮點型單通道、三通道的影象。

. outputarray dst: 輸出影象,和原影象有相同的尺寸和型別。

. int d: 表示在過濾過程中每個畫素鄰域的直徑範圍。如果這個值是非正數,則函式會從第五個引數sigmaspace計算該值。一般為0。

. double sigmacolor: 顏色空間過濾器的sigma值,這個引數的值越大,表明該畫素鄰域內有越寬廣的顏色會被混合到一起,產生較大的半相等顏色區域。 盡量取大。

. double sigmaspace: 座標空間中濾波器的sigma值,如果該值較大,則意味著顏色相近的較遠的畫素將相互影響,從而使更大的區域中足夠相似的顏色獲取相同的顏色。當d>0時,d指定了鄰域大小且與sigmaspace五官,否則d正比於sigmaspace. 盡量取小。

. int bordertype=border_default: 用於推斷影象外部畫素的某種邊界模式,有預設值border_default.

mat image =

imread

("e:\\picture\\dot.png");

imshow

("原始圖"

均值遷移濾波演算法充分考慮了畫素值空間範圍分布,只有符合分布的畫素點才會參與計算,計算得到畫素均值(rgb三個值)與空間位置(畫素點座標x,y)均值,使用新的均值位置作為視窗中心位置繼續基於給定的畫素值空間分布來計算均值與均值位置,如此不斷遷移中心位置直到位置不再變化(dx=dy=0dx=dy=0),但是實際情況下畫素分布一般不會特別理想,所以會人為的設定遷移停止條件(比如遷移的次數),這也就可以把最後的rgb均值賦給中心位置畫素點。

在某些情況下均值遷移濾波會比高斯雙邊濾波效果更加明顯。

opencv api:

void

pyrmeanshiftfiltering

( inputarray src, outputarray dst,

double sp,

double sr,

int maxlevel =1,

termcriteria termcrit

=termcriteria

(termcriteria::max_iter+termcriteria::eps,5,

1));

. inputarray src: 輸入影象,可以是mat型別,影象必須是8位或浮點型單通道、三通道的影象。

. outputarray dst: 輸出影象,和原影象有相同的尺寸和型別。

. sp: 視窗大小。

. sr : 色彩空間半徑大小。

. termcriteria: 指定遷移停止條件,預設遷移五次且連續兩次dx+dy dx+dy不大於1。

mat image =

imread

("e:\\picture\\dot.png");

imshow

("原始圖"

Open Cv 邊緣保留濾波

import cv2 as cv import numpy as np 在進行模糊時,容易將影象的邊緣部分被模糊掉,從而使影象的立體感減少 epf可以在將非邊緣部分進行雜訊濾波的同時保留下邊緣部分的特點 defbi demo iamge 高斯雙邊模糊 dst cv.bilateralfilter i...

OpenCV 08邊緣保留濾波 EPF

coding utf 8 import cv2 as cv import numpy as np 高斯雙邊模糊 defbi demo image dst cv.bilateralfilter image,0,100,15 cv.imshow bi demo dst 均值遷移 defshift dem...

opencv學習筆記(9)邊緣保留濾波EPF

效果如下 濾波是由這個api決定的 dst cv.bilateralfilter image,0,50,10 經過調參發現,50和10的那兩個引數,越大,濾波之後的顯得更為 化。然後自己查資料,發現這位朋友總結的很好,發個鏈結 侵刪 高斯雙邊模糊引數解析 效果如下 起作用的api是這個 dst cv...