cvMorphologyEx 不推薦使用

2021-05-25 05:39:10 字數 1299 閱讀 4775

在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 模式下需要。

形態學函式cvMorphologyEx

opencv提供了通用的形態學函式cvmorphologyex,該函式能夠實現開運算,閉運算,形態梯度,禮帽操作,黑帽操作 編輯void cvmorphologyex const cvarr src,cvarr dst,cvarr tmp,iplconvkernel element,int oper...

不信謠,不傳謠,不造謠

不信謠,不傳謠,不造謠 最近謠言四起,實在看不下去了,在網路奔波也有7 8年哉,深知和俺一樣長期穿馬甲逛街的,流竄於各大社群,三人為虎之厲害,但只基於八卦,不可越界!一直視為馬甲本質,也是一合格網民基本道德,可最近的八卦有變,大家認真分辨,別上了他們的圈套,這次 謠言有以下幾個階段性特徵 一階段 攻...

不饒點滴,不饒自己

昨晚又重複了聽了一遍曹禺大師與黃永玉大師的來信,由張國立和王耀慶播講。印象最深的,是永玉大師說的一句,不饒點滴,不饒自己 原文是這樣,你是我極尊敬的前輩,所以我對你要嚴!我不喜歡你解放後的戲,乙個也不喜歡。你心不在戲裡,你失去偉大的靈通寶玉,你為勢位所誤!從乙個海洋萎縮為一條小溪流,你泥溷在不情願的...