cvMorphologyEx是OpenCV中的C函式接口,在腐蝕和膨脹基本操作的基礎上,完成一些高級的形態學變換,如:開運算、閉運算等。
基本介紹
- 中文名:高級形態學變換
- 外文名:cvMOrphologyEx
函式名,接口形式,參數說明:,開運算,閉運算,形態學梯度,禮帽和黑帽,
函式名
cvMorphologyEx
接口形式
void cvMorphologyEx(const CvArr* src, CvArr* dst, CvArr* tmp, IplConvKernel* element, int operation, int iterations = 1);
參數說明:
src:輸入圖像
dst:輸出圖像
tmp:臨時圖像,某些操作會用到。需要使用tmp時,它應與原圖像有同樣的大小
element:結構元素
operation:形態操作的類型,有以下幾種可用的類型:
-CV_MOP_OPEN開運算不需要臨時圖像
-CV_MOP_CLOSE閉運算不需要臨時圖像
-CV_MOP_GRADIENT形態梯度需要臨時圖像
-CV_MOP_TOPHAT“禮帽”src = dst情況下需要
-CV_MOP_BLACKHAT”黑帽“src = dst情況下需要
開運算
開運算是先腐蝕然後再膨脹:dst = open(src, element) = dilate(erode(src, element), element)。開運算通常可以用來統計二值圖像中的區域屬,如已將顯微鏡載玻片上觀察到的細胞圖像作了閾值化處理,可以使用開運算將相鄰的細胞分離開來,然後再計算圖像中的區域細胞數目。
閉運算
閉運算是先膨脹然後再腐蝕:dst = close(src, element) = erode(dilate(src, element), element)。在大多數好的連通區域分析算法中,都會用到閉運算來除去噪聲引起的區域。對於連通區域分析,通常採用腐蝕或閉運算來消除純粹由噪聲引起的部分,然後用開運算來連線鄰近的區域。
形態學梯度
形態學梯度膨脹圖像減去腐蝕圖像:dst = dilate(src, element) - erode(src, element)。形態學梯度操作能描述圖像亮度變化的劇烈程度。當想突出亮度區域的外圍時,通常可使用形態學梯度,這樣可以把高亮的看成一個整體。因為從原區域的膨脹中減去了原區域的收縮,所以留下了完整的外圍邊緣。
禮帽和黑帽
禮帽操作:dst = src - open(src, element)
黑帽操作:dst = close(src, element) - src
這兩個操作分別用於分離比鄰近的點亮或暗的一些斑塊。