介绍Python数字图像处理中的形态学滤波
我是本际云服务器推荐网的小编小本本,今天给大家介绍一下Python数字图像处理中的形态学滤波。形态学滤波可以通过对灰度图像和二值图像进行各种膨胀、腐蚀等处理,达到去噪、边缘检测、形状分析等目的。

形态学滤波操作及功能函数介绍
形态学滤波可通过以下几种操作实现:
- 膨胀(dilation):一般用于扩充边缘或填充小的孔洞。
- 腐蚀(erosion):可以提取骨干信息、去掉毛刺、去掉孤立的像素。
- 开运算(opening):先腐蚀再膨胀,可以消除小物体或小斑块。
- 闭运算(closing):先膨胀再腐蚀,可用来填充孔洞。
- 白帽(white-tophat):将原图像减去它的开运算值,返回比结构化元素小的白点。
- 黑帽(black-tophat):将原图像减去它的闭运算值,返回比结构化元素小的黑点,且将这些黑点反色。
这些功能函数都放置在morphology子模块内,其中包含了多种结构元素的形状和大小,例如正方形、平面圆形、球形、立方体形、钻石形、矩形、星形、八角形和八面体等。在处理图像为二值图像的情况下,还有对应的binary_dilation、binary_erosion、binary_opening、binary_closing函数,速度更快。
Python代码实现
下面是Python代码实现的示例:
膨胀(dilation)操作
from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img = data.checkerboard()
dst1 = sm.dilation(img, sm.square(5)) # 用边长为5的正方形滤波器进行膨胀滤波
dst2 = sm.dilation(img, sm.square(15)) # 用边长为15的正方形滤波器进行膨胀滤波
plt.figure('morphology', figsize=(8, 8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img, plt.cm.gray)
plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1, plt.cm.gray)
plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2, plt.cm.gray)
腐蚀(erosion)操作
from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img = data.checkerboard()
dst1 = sm.erosion(img, sm.square(5)) # 用边长为5的正方形滤波器进行膨胀滤波
dst2 = sm.erosion(img, sm.square(25)) # 用边长为25的正方形滤波器进行膨胀滤波
plt.figure('morphology', figsize=(8, 8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img, plt.cm.gray)
plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1, plt.cm.gray)
plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2, plt.cm.gray)
开运算(opening)操作
from skimage import io, color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img = color.rgb2gray(io.imread('d:/pic/mor.png'))
dst = sm.opening(img, sm.disk(9)) # 用边长为9的圆形滤波器进行膨胀滤波
plt.figure('morphology', figsize=(8, 8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img, plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst, plt.cm.gray)
plt.axis('off')
闭
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6817.html
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6817.html
