06 -- OpenCv学习—形态学操作

形态学操作

1.连通性

在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3种:4邻接、8邻接和D邻接
分别如下图所示:
06 -- OpenCv学习—形态学操作_第1张图片

  • 4邻接:像素p(x,y)的4邻域是:(x+1,y);(x-1,y);(x,y+1);(x,y-1),用N4(p )表示像素p的4邻接。
  • D邻接:像素p(x,y)的D邻域是:对角上的点(x+1,y+1);(x+1,y-1);(x-1,y+1);(x-1,y-1)),用ND(p )像素ρ的D邻域。
  • 8邻接:像素p(x,y)的8邻域是:4邻域的点+D邻域的点,用N8(p )表示像素p的8邻域。

连通性是描述区域和边界的重要概念,两个像素连通的两个必要条件是:
1.两个像素的位置是否相邻
2.两个像素的灰度值是否满足特定的相似性准则(或者是否相等
根据连通性的定义,有4联通、8联通和m联通三种。
·4联通:对于具有值V的像素p和q,如果q在集合N4(p )中,则称这两个像素是4连通。
·8联通:对于具有值V的像素p和q,如果q在集合N8(p )中,则称这两个像素是8连通。
对于具有值V’的像素p和q,如果:
1.q在集合N4(p )中或q在集合ND(p )中,并且N4(p )与N₄(q)的交集为空(没有值V的像素)
则称这两个像素是m连通的,即4连通和D连通的混合连通。
06 -- OpenCv学习—形态学操作_第2张图片

2.形态学操作

2.1腐蚀和膨胀

腐蚀和膨胀是最基本的形态学操作,腐蚀和膨胀都是针对白色部分(高亮部分)而言的;
膨胀就是使图像中高亮部分扩张,效果图拥有比原图更大的高亮区域;
腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域;
膨胀是求局部最大值的操作,腐蚀是求局部最小值的操作。

1.腐蚀

腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点。
API:

cv.erode(img, kernel, iterations )

参数:

  • img:要处理的图像
  • kernel:核结构
  • iterations :腐蚀的次数,默认是1
2.膨胀

作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的孔洞。
API:

cv.dilate(img,kernel, iterations)

参数:

  • img:要处理的图像
  • kernel:核结构
  • iterations :腐蚀的次数,默认是1

示例:
我们使用一个5*5的卷积核实现腐蚀和膨胀的运算:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1读取图像

img = cv.imread("./images/b.jpg")

# 2创建核结构

kernel = np.ones((5, 5), np.uint8)

# 3图像腐蚀和膨胀

erosion = cv.erode(img, kernel)# 腐蚀
dilate = cv.dilate(img, kernel)# 膨胀

# 4图像展示

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 8), dpi=100)
axes[0].imshow(img)
axes[0].set_title("原图")
axes[1].imshow(erosion)
axes[1].set_title("腐蚀后结果")
axes[2].imshow(dilate)
axes[2].set_title("膨胀后结果")
plt.show()

运算结果:
06 -- OpenCv学习—形态学操作_第3张图片

你可能感兴趣的:(OpenCV学习笔记,opencv,计算机视觉,python)