opencv sobel粗測邊緣

2022-09-14 15:36:29 字數 1104 閱讀 6984

sobel運算元是一種常用的邊緣檢測運算元,是一階的梯度演算法。對雜訊具有平滑作用,提供較為精確的邊緣方向資訊,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。sobel卷積因子為:

其中,gx是橫向的運算元,gy是縱向的運算元。

原影象記為f,則

gx = gx*f

gy = gy*f

gx =-1*f(x-1, y-1) + 0*f(x,y-1) + 1*f(x+1,y-1)+(-2)*f(x-1,y) + 0*f(x,y)+2*f(x+1,y)+(-1)*f(x-1,y+1) + 0*f(x,y+1) + 1*f(x+1,y+1)

gy =1* f(x-1, y-1) + 2*f(x,y-1)+ 1*f(x+1,y-1)+0*f(x-1,y) 0*f(x,y) + 0*f(x+1,y)+(-1)*f(x-1,y+1) + (-2)*f(x,y+1) + (-1)*f(x+1, y+1)

其中f(a,b), 表示影象(a,b)點的灰度值

gx,gy代表利用模板對原影象卷積的結果。

對於原影象中的每乙個畫素,在3*3的模板中進行上述的卷積,得到gx、gy,則最後該畫素的灰度值近似為:

g = |gx|+|gy|

如果g大於某乙個閾值,則認定該點為乙個邊緣點。

上述的處理可以同時進行兩個方向的處理,當需要突出影象某乙個方向的邊緣資訊時,也可以只進行其中乙個方向的處理

其實在邊緣檢測中還會用到很多運算元,如普利維特運算元(prewitt operate);羅伯茨交叉邊緣檢測(roberts cross operator);拉普拉斯運算元等等

繪製粗虛線

以前很少畫虛線,因此不太關心繪製粗虛線該怎麼辦。最近需要用到這個功能,因此學習了一下,與大家共享。cpen類有兩個建構函式,我們經常用第乙個,而忽略了第二個。其實很多問到畫粗線時希望改變線頭的預設顯示方式,比如希望是圓弧頭而不是預設的方形頭等。都可以用這個建構函式定義的cpen物件來實現。這裡我主要...

組網粗遊記(一)

今天客串了一把網管,鼓弄了差不多有一天,好歹最後弄出了點成果可以讓我稍感欣慰。簡單來說,本次的任務就是在公司內網的基礎上拓撲出乙個三層網路結構,用來模仿現場環境,以便得到更準確的系統測試結果。上圖 上裝置 操作描述 step 1 開啟securecrt,新建會話,協議採用 serial 即串列埠 s...

VPD技術粗解

vpd技術,dba policies這張表中儲存了啟用vpd技術的表 select from dba policies where object name upper pa projects 給某張表啟用vpd 1.create data create table t x number insert...