OpenCV-Python:腐蚀、膨胀、开操作、闭操作

腐蚀:

腐蚀就是选择滑动窗口中像素值最小的点(局部最小值)。

公式表示:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

可以理解为,移动结构B,如果结构B与结构A的交集完全属于结构A的区域内,则保存该位置点,所有满足条件的点构成结构A被结果B腐蚀的结果。

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

 

 函数原型:

 dst=cv2.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

膨胀

膨胀就是选择滑动窗口中像素值最大的点(局部最大值)

公式表示:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

可以理解为,将结构B在结构A上进行卷积操作,所有移动结构B与结构A存在交集的位置的集合为结构A在结构B作用下的膨胀结果。

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

函数原型:

dst=cv2.dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

src:源图,通道数任意,数据类型可以为CV_8U,CV_16U,CV_16S,CV_32F或 CV_64F 
dst:输出图,与src有着同样的尺寸 
kernel:操作核(结构B),通常这个参数由函数getStructuringElement得到,你要乐意自己写一个也行 
anchor:锚点位置,默认值为中心点 
iterations:自身迭代的次数,默认为1

常规用于计算 kernel 的函数 getStructuringElement(shape, ksize[, anchor]),函数原型:

retval=cv2.getStructuringElement(shape, ksize[, anchor])

retval:得到的核,矩阵形式 
shape:核的形状,有cv2.MORPH_RECT、cv2.MORPH_CROSS和cv2.MORPH_ELLIPSE 
ksize:核的大小, (x,y) 形式 
anchor:锚点,默认为中心

 开操作

函数公式:

dst = open(src(x,y)) = dilate(erode(src(x,y)))

先腐蚀后膨胀的操作称为开操作。它具有消除细小物体,在纤细处分离物体和平滑较大的物体边界的作用。

函数原型:

dst = cv2.morphologyEx(src,cv2.MORPH_OPEN,kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

效果图:

使用结构B进行开操作:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

闭操纵

公式表示:

dst = open(src(x,y)) = erode(dilate(src(x,y)))

先膨胀后腐蚀的操作称之为闭操纵。它具有填充物体内细小空间,连接邻近物体和平滑边界的作用。

函数原型:

dst = cv2.morphologyEx(src,cv2.MORPH_CLOSE,kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

效果图:

使用结构B进行闭操作:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

 

引申

形态学梯度

公式表示:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

简单的讲就是膨胀以后的图像减去腐蚀以后的图像。

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

函数原型:

dst = cv2.morphologyEx(src,cv2.MORPH_GRADIENT,kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
#或者可以这样写
cv2.dilate() - cv2.erode()

 顶帽

公式表示:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

简单的讲就是原图减去开运算以后的图像。

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

函数原型:

dst = cv2.morphologyEx(src,cv2.MORPH_TOPHAT,kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

黑帽

公式表示:

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

简单的讲就是闭运算以后的图像减去原图后的图像。

OpenCV-Python:腐蚀、膨胀、开操作、闭操作

函数原型:

dst = cv2.morphologyEx(src,cv2.MORPH_BLACKHAT,kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

 

参考链接:

https://blog.****.net/qq_30490125/article/details/80490776