OpenCV2程式設計手冊筆記之 6 2使用低通濾波器

2021-08-07 23:59:28 字數 1210 閱讀 1512

低通濾波器的意義在於降低影象變化的幅度,一種方案是將每個畫素替換為相鄰畫素的平均值。這樣,快速的強度變化就能轉化為平緩的過渡。

常見的函式有兩個,首先介紹

cv::blur
void blur( inputarray src, outputarray dst,

size ksize, point anchor = point(-1,-1),

int bordertype = border_default );

我們首先理解一下blur函式的原理,blur函式使用乙個由使用者定義的n*n的矩陣,並和選定的影象進行卷積運算,並把得到的值重新賦值給point,我們也稱其為錨點。例如乙個3*3的矩陣(這個矩陣一定是歸一的):

1/9    1/9    1/9          1    2    3

1/9    1/9    1/9          4    5    6

1/9    1/9    1/9          7    8    9

前面是使用者定義矩陣,後面是目標影象的矩陣,那麼二者作用就是對應項相乘。最後把乘值賦值給對應的錨點。

在後面這個矩陣中,5代表著錨點(0, 0),同理,1代表著錨點(-1, -1)

也就是說,在作用之後,1將會被重新賦值為5。之後矩陣移動,再重新計算,這樣,就使得影象趨於平滑。

第二個常用函式是

cv::gaussianblur
void gaussianblur( inputarray src, outputarray dst, size ksize,

double sigmax, double sigmay = 0,

int bordertype = border_default );

這個函式中,唯一需要說的就是sigmax,在這裡我們不討論數學,只需知道,這個值越大,生成的影象就越平坦。

原始碼萬分簡單:

int main()

兩個結果:

Opencv2系列學習筆記12 檢測fast特徵

一 fast特徵定義什麼是角點 這次的定義基於假定特徵點周圍的影象強度,通過檢查候選畫素周圍一圈畫素來決定是否接受乙個特徵點。與中心點差異較大的畫素如果組成連續的圓弧,並且弧長大於原周長的 3 4,那麼我們認為找到了乙個特徵點。二 加速技巧 首先測試圓上被90度分割的四個點 頂部,底部,左側及右側 ...

Opencv2系列學習筆記11 霍爾夫變換

本節主要介紹如何用hough變換檢測直線和圓 一 hough變換檢測直線 1 原始hough變換 思想 先求出影象中每點的極座標方程 如下,相交於一點的極座標曲線的個數大於最小投票數,則將該點所對應的 p,r0 放入vector 中,即得到一條直線,lines 中儲存的是極座標方程的引數 注意 ho...

OpenCV2學習筆記(二十一) GPU模組小記

注 在使用gpu模組之前,需要確認在使用cmake編譯opencv時,勾選了選項with cuda和with tbb使其生效生效。若以上配置已經完成,在使用gpu模組的函式之前,還做一下檢查 呼叫函式gpu getcudaenableddevicecount,如果你在使用的opencv模組編譯時不支...