文章目錄
原始圖像
一、結構元素
因爲形態學操作其實也是應用卷積來實現的,這個卷積核也叫結構元素。結構元素可以是矩形/橢圓/十字形,可以用cv2.getStructuringElement()來生成不同形狀的結構元素,比如:
二、Erosion腐蝕(白色部分被腐蝕,黑色部分變大)
原理是在原圖的小區域內取局部最小值,其函數是cv2.erode()。
erosion = cv2.erode(image, kernel1)
show(erosion)
三、Dilation膨脹(白色部分膨脹,黑色部分變小)
膨脹與腐蝕相反,取的是局部最大值。cv2.dilate()
dilation = cv2.dilate(image, kernel)
show(dilation)
四、Opening開運算
先腐蝕後膨脹叫開運算,其作用是消除小白點。這類形態學操作用cv2.morphologyEx()函數實現
原圖
# 去除白點
opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
show(opening)
五、Closing閉運算
閉運算則相反:先膨脹後腐蝕。其作用是消除小黑點。
closing = cv2.morphologyEx(image2, cv2.MORPH_CLOSE, kernel1)
show(closing)
六、先開運算再閉運算
opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel1)
show(closing)
七、Gradient形態學梯度
膨脹圖減去腐蝕圖,dilation - erosion,得到物體的輪廓
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel1)
show(gradient)
八、Top Hat頂帽/White Hat白帽
原圖減去開運算後的圖:src - opening
相當於把開運算去掉的部分給求出來了
tophat = cv2.morphologyEx(image2, cv2.MORPH_TOPHAT, kernel1)
show(tophat)
九、Black Hat黑帽
閉運算後的圖減去原圖:closing - src
相當於把閉運算去掉的部分給求出來了
blackhat = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel1)
show(blackhat)