opencv學習 形態學

2021-06-20 16:11:00 字數 2068 閱讀 7731

void cvdilate( const cvarr* src, cvarr* dst, iplconvkernel* element=null, int iterations=1 );
void cverode( const cvarr* src, cvarr* dst, iplconvkernel* element=null, int iterations=1 );

src             輸入影象.dst            輸出影象.element    用於膨脹的結構元素。若為null, 則使用 3×3 長方形的結構元素iterations   膨脹的次數

cverode()腐蝕後cvdilate()膨脹,叫作開操作,那些離散點或遊絲線、毛刺就被過濾

cvdilate()膨脹後cverode()腐蝕,叫作閉操作,那些斷裂處就被縫合。

在opencv中某些高階形態學變換用cvmorphologyex函式完成,包括開運算,閉運算,標準形態梯度,白頂帽,黑頂帽運算。但是本博主不推薦使用該函式。

通過檢視cvmorphologyex的源**,可以發現,在執行開、閉等運算,在進行第二步形態學腐蝕和膨脹時,該函式仍然採用與第一步相同的結構元素進行。這種方法在針對一般對稱的結構元素情況是正確的,但是當結構元素為自定義的非對稱結構元素時,結果影象會發生錯誤的偏移。

正確的方法是,如前面在開、閉運算的介紹中,執行第二步腐蝕、膨脹操作時,應採用結構元素的對映(反射)進行。因此,在本文中不提倡使用cvmorphologyex函式。本文將通過一系列擴充套件的形態學變換函式替代該函式的功能,如:lhmorpopen,lhmorpclose等,請參考本部落格opencv和形態學系列文章。

在這裡僅給出該函式的簡單描述。

函式:cvmorphologyex

void cvmorphologyex( const cvarr* src, cvarr* dst, cvarr* temp,

iplconvkernel* element, int operation, int iterations=1 );

src 

輸入影象. 

dst 

輸出影象. 

temp 

臨時影象,某些情況下需要 

element 

結構元素 

operation 

形態操作的型別: 

cv_mop_open - 開運算 

cv_mop_close - 閉運算 

cv_mop_gradient - 形態梯度 

cv_mop_tophat - "頂帽" 

cv_mop_blackhat - "黑帽" 

iterations 

膨脹和腐蝕次數. 

函式 cvmorphologyex 在膨脹和腐蝕基本操作的基礎上,完成一些高階的形態變換: 

開運算dst=open(src,element)=dilate(erode(src,element),element) 

閉運算dst=close(src,element)=erode(dilate(src,element),element) 

形態梯度 

dst=morph_grad(src,element)=dilate(src,element)-erode(src,element) 

"頂帽"

dst=tophat(src,element)=src-open(src,element) 

"黑帽"

dst=blackhat(src,element)=close(src,element)-src 

臨時影象 temp 在形態梯度以及對「頂帽」和「黑帽」操作時的 in-place 模式下需要。

OPenCV學習11 形態學

在opencv sources samples下面提供了很多的官方例程,是學習opencv的最好的資源。開運算 閉運算 形態學梯度 膨脹減去腐蝕 頂帽 top hat 原影象與開操作之間的差值影象。黑帽 閉操作影象和原影象之間的差值影象。提取直線 提取步驟 輸入彩色影象 轉化為灰度影象 轉化為二值影...

OpenCV學習筆記 形態學

opencv提供了通用的形態學函式cvmorphologyex,該函式能夠實現開運算,閉運算,形態梯度,禮帽操作,黑帽操作,例題如下 include stdafx.h include cv.h include highgui.h include highgui.h int main int argc...

opencv 形態學處理

影象形態學中的幾個基本操作 腐蝕 膨脹 開操作 閉操作。1.1 腐蝕 結構a被結構b腐蝕的定義為,a b a b 可以理解為,移動結構b,如果結構b與結構a的交集完全屬於結構a的區域內,則儲存該位置點,所有滿足條件的點構成結構a被結構b腐蝕的結果。1.2 膨脹 結構a被結構b膨脹的定義為,a b a...