侵蚀 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)