@

原始图像
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619162347740.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

一、结构元素

因为形态学操作其实也是应用卷积来实现的,这个卷积核也叫结构元素。结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如:
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619162241599.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

二、Erosion腐蚀(白色部分被腐蚀,黑色部分变大)

原理是在原图的小区域内取局部最小值,其函数是cv2.erode()

erosion = cv2.erode(image, kernel1)
show(erosion)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619162521662.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

三、Dilation膨胀(白色部分膨胀,黑色部分变小)

膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()

dilation = cv2.dilate(image, kernel)
show(dilation)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619162737634.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

四、Opening开运算

先腐蚀后膨胀叫开运算,其作用是消除小白点。这类形态学操作用cv2.morphologyEx()函数实现

原图
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619164257797.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

# 去除白点
opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
show(opening)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619164411610.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

五、Closing闭运算

闭运算则相反:先膨胀后腐蚀。其作用是消除小黑点。

closing = cv2.morphologyEx(image2, cv2.MORPH_CLOSE, kernel1)
show(closing)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619164539893.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

六、先开运算再闭运算

opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel1)
closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel1)
show(closing)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619164710934.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

七、Gradient形态学梯度

膨胀图减去腐蚀图,dilation - erosion,得到物体的轮廓

gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel1)
show(gradient)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619164913768.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

八、Top Hat顶帽/White Hat白帽

原图减去开运算后的图:src - opening
相当于把开运算去掉的部分给求出来了

tophat = cv2.morphologyEx(image2, cv2.MORPH_TOPHAT, kernel1)
show(tophat)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619165607843.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

九、Black Hat黑帽

闭运算后的图减去原图:closing - src
相当于把闭运算去掉的部分给求出来了

blackhat = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel1)
show(blackhat)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200619165758890.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70)

posted on 2020-06-19 16:59  一抹烟霞  阅读(420)  评论(0)    收藏  举报

Live2D