开操作
闭操作同样使轮廓线更为光滑,但与开操作相反的是,它通常连接狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的断裂。
使用结构元素 B 对集合 A 进行开操作,定义为:
闭操作
闭操作同样使轮廓线更为光滑,但与开操作相反的是,它通常连接狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的断裂。
开操作有一个简单的几何解释
对形态学上的开操作和闭操作的简单说明
import cv2 as cv def open_image(image): '图像开操作' gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) # res=cv.bitwise_not(gray) #图像二值化 ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU) cv.imshow('binary',binary) #获取形态学结构kernel,采用的形态学方式MORPH_RECT kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5)) #图像的开操作 binary=cv.morphologyEx(binary,cv.MORPH_OPEN,kernel) cv.imshow('open',binary) def close_image(image): '图像闭操作' gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) # res=cv.bitwise_not(gray) ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU) kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5)) #操作函数morphologyEx binary=cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel) cv.imshow('close',binary) src = cv.imread("tree.jpg") cv.imshow("原来", src) open_image(src) close_image(src) cv.waitKey(0) cv.destroyAllWindows()
闭运算用来连接被误分为许多小块的对象,而开运算用于移除图像噪音形成的斑点.因此,某些情况下可以连续运用这两种运算。如对一副二值图连续使用闭运算和开运算,将获得图像中的主要对象。同样,如果想消除图像中的噪声(即图像中的“小点”),也可以对图像先用开运算后用闭运算,不过这样也会消除一些破碎的对象。