形态学----数学形态学(MathematicalMorphology), 是图像处理过程中一个非常重要的研究方向。形态学主要从图像内提取分量信息,该分量信息通常对于表达和描述图像的形状具有重要意义。
形态学操作主要包含:腐蚀,膨胀,开运算,闭运算,形态学梯度计算,顶帽运算,黑帽运算等。
其中,腐蚀和膨胀操作时形态学运算的基础。其它形态学操作,就是腐蚀和膨胀操作的各种结合。
注意:形态学操作的对象都是针对二值化图像的。
1. 腐蚀:
腐蚀是最基本的形态学操作之一,它能够将图像的边缘点消除,使图像沿着边界向内收缩,也可以将小于指定结构体元素的部分去除。
腐蚀用来“收缩”或者“细化”二值图像中的前景。借此实现去除噪音,元素分割等功能。
在腐蚀过程中,通常使用一个结构元来逐个像素的扫描要被腐蚀的图像,并根据结构元和被腐蚀图像的关系来确定腐蚀结果(即判定结构元中心点所对应点的像素值)。
import cv2 import numpy as np import sys #data_src = cv2.imread("images/Morphology_Success_3.png", cv2.IMREAD_COLOR) data_src = cv2.imread("images/Morphology_Success_4.png", cv2.IMREAD_COLOR) data_gray = cv2.cvtColor(data_src, cv2.COLOR_BGR2GRAY) t, rst = cv2.threshold(data_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) print("thresh:", t) kernel = np.ones((15,15), np.uint8) kernel1 = np.ones((3, 3), np.uint8) iter = 100 #iter = 5 dst = cv2.erode(rst, kernel1, iterations = iter) cv2.imshow("Orz", data_src) cv2.imshow("gray", data_gray) cv2.imshow("thr", rst) cv2.imshow("erode", dst) cv2.waitKey() cv2.destroyAllWindows()