一、灰度形态学之纹理分割
-
形态学的纹理分割是以纹理内容为基础,找到两个区域的边界,将图像分割为不同的区域。
-
本例中的图像是一幅在亮背景上叠加了暗斑点的噪声图像。图像有两个纹理区域,左侧区域包括一些较小的斑点,而右侧区域包括一些较大的斑点。
-
由于目标斑点比背景暗,可以用一个尺寸大于较小斑点的圆形结构元对图像进行闭运算,删除较小的斑点,就得到只有大斑点的图像。
-
再用尺寸大于较大斑点的圆形结构元对图像进行开运算,可以删除较大斑点之间的亮间距,整个图像形成左侧亮色和右侧暗色两个区域。通过形态学梯度运算,就得到两个区域的边界。
-
最后将形态学梯度获得的边界叠加到原图像上,就实现了左右两种不同纹理的区域分割。
-
需要注意的是,基于形态学的纹理分割,通常是针对特殊问题设计的,具有很大的局限性。
二、例程
- 10.35:基于灰度形态学的纹理分割
# 10.35: 基于灰度形态学的纹理分割
imgGray = cv2.imread("../images/Fig0943a.tif", flags=0) # flags=0 灰度图像
# 根据小斑点直径(25) 设计圆形结构元,用闭运算删除小斑点
kSize = (20, 20) # 结构元半径 10,小于小斑点半径
element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize) # 圆形结构元
imgClose1 = cv2.morphologyEx(imgGray, cv2.MORPH_CLOSE, element) # 灰度闭运算
kSize = (60, 60) # 结构元半径 30,大于小斑点半径
element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize) # 圆形结构元
imgClose2 = cv2.morphologyEx(imgGray, cv2.MORPH_CLOSE, element) # 灰度闭运算
kSize = (120, 120) # 结构元半径 60,大于大斑点半径
element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize) # 圆形结构元
imgOpen = cv2.morphologyEx(imgClose2, cv2.MORPH_OPEN, element) # 灰度开运算
# 形态学梯度得到区域分割的边界
kSize = (5, 5) # 结构元的尺寸
element = cv2.getStructuringElement(cv2.MORPH_RECT, kSize) # 矩形结构元
imgGrad = cv2.morphologyEx(imgOpen, cv2.MORPH_GRADIENT, element) # 形态学梯度
# 纹理分割图像重建
imgRebuild = cv2.bitwise_or(imgGray, imgGrad) # 计算交集
plt.figure(figsize=(10, 6))
plt.subplot(231), plt.axis('off'), plt.title("Origin")
plt.imshow(imgGray, cmap='gray', vmin=0, vmax=255)
plt.subplot(232), plt.title("Closing (r=10)"), plt.axis('off')
plt.imshow(imgClose1, cmap='gray', vmin=0, vmax=255)
plt.subplot(233), plt.title("Closing (r=30)"), plt.axis('off')
plt.imshow(imgClose2, cmap='gray', vmin=0, vmax=255)
plt.subplot(234), plt.title("Region connected"), plt.axis('off')
plt.imshow(imgOpen, cmap='gray', vmin=0, vmax=255)
plt.subplot(235), plt.title("Region segmented"), plt.axis('off')
plt.imshow(imgGrad, cmap='gray', vmin=0, vmax=255)
plt.subplot(236), plt.title("Region rebuilt"), plt.axis('off')
plt.imshow(imgRebuild, cmap='gray', vmin=0, vmax=255)
plt.tight_layout()
plt.show()
三、资料
youcans_的博客:
https://blog.csdn.net/youcans/article/details/123786155







网友评论