侵蚀 cv.erode

侵蚀的基本思想就像土壤侵蚀一样,它侵蚀前景物体的边界(尽量使前景保持白色)。

具体做法:内核滑动通过图像(在2D卷积中)。原始图像中的一个像素(无论是1还是0)只有当内核下的所有像素都是1时才被认为是1,否则它就会被侵蚀(变成0)。

结果:根据内核的大小,边界附近的所有像素都会被丢弃。前景物体的厚度或大小减
小,或只是图像中的白***域减小。有助于去除小的白噪声,分离两个连接的对象等。

img = cv.imread('3.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv.erode(img,kernel,iterations = 1)
#或者erosion = cv.morphologyEx(img, cv.MORPH_ERODE, kernel)

扩张 cv.dilate()

和侵蚀相反,如果内核下的至少一个像素为“ 1”,则像素元素为“ 1”。因此会增加图像中白***域的宽度或增加前景对象的大小。

通常,在消除噪音的情况下,腐蚀后会膨胀,因为腐蚀会消除白噪声,但也会缩小物体。在连接对象的损坏部分时也很有用。

img = cv.imread('3.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv.dilate(img,kernel,iterations = 1)
#或者 erosion = cv.morphologyEx(img, cv.MORPH_DILATE, kernel)

cv .morphologyEx() 函数

该函数用于形态学操作,主要有以下几个操作。
————MORPH_OPEN – 开运算(Opening operation)
————MORPH_CLOSE – 闭运算(Closing operation)
————MORPH_GRADIENT -形态学梯度(Morphological gradient)
————MORPH_TOPHAT - “顶帽”(“Top hat”)
————MORPH_BLACKHAT - “黑帽”(“Black hat“)
————MORPH_ERODE - “腐蚀”
————MORPH_DILATE - “膨胀”

开运算

即侵蚀然后扩张,有助于消除噪声。

kernel = np.ones((8,8),np.uint8)
opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)

闭运算

闭运算与开运算相反,先扩张然后再侵蚀。在关闭前景对象内部的小孔或对象上的小黑点时很有
用。

kernel = np.ones((8,8),np.uint8)
closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)

形态学梯度

是扩张和腐蚀的差,有点像轮廓。

kernel = np.ones((8,8),np.uint8)
gradient= cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)

顶帽

输入图像和图像开运算之差。

kernel = np.ones((8,8),np.uint8)
tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)

黑帽

输入图像和图像闭运算之差。

kernel = np.ones((8,8),np.uint8)
blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)