python图形-形态学变换-侵蚀
形态学变换:基于图像形状的一些简单操作,一般基于单通道图处理(常用灰度图)
一般有两个输入,一个是要操作的图片,另一个是要变换的结构元素(核)
两种基本形态学变换:侵蚀和膨胀,他们的变种也有张开和闭合。
第一步:导入一些包和图像:
import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inline img = cv2.imread('./i.png') #导入图像 img .shape #可注释 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #由彩色图转换为灰度图 gray.shape #可注释 plt.imshow(gray,cmap='gray') #打印灰度图
示例图片:
第二步:侵蚀操作,侵蚀,常用在去除一些小的白色噪点,还有将两个连起来的形状给打散掉 。
a.和函数3X3,迭代次数为1
# 和函数3X3,迭代次数1 kernel = np.ones((3,3),dtype=np.int8) ersion1= cv2.erode(gray.copy(),kernel,iterations=1) plt.imshow(ersion1,cmap='gray')
b.和函数5X5,迭代次数1
# 和函数5X5,迭代次数1 kernel = np.ones((5,5),dtype=np.int8) ersion2= cv2.erode(gray.copy(),kernel,iterations=1) plt.imshow(ersion2,cmap='gray')
c.和函数5X5,迭代次数2
# 和函数3X3,迭代次数2 kernel = np.ones((5,5),dtype=np.int8) ersion3= cv2.erode(gray.copy(),kernel,iterations=2) plt.imshow(ersion3,cmap='gray')
总例:
fig,(ax1,ax2,ax3,ax4) = plt.subplots(1,4,figsize=(20,8),sharex=True,sharey=True) ax1.axis('off') ax1.imshow(gray.copy(),cmap='gray') ax1.set_title('orginal image') ax2.axis('off') ax2.imshow(ersion1,cmap='gray') ax2.set_title('3X3,1') ax3.axis('off') ax3.imshow(ersion2,cmap='gray') ax3.set_title('5X5,1') ax4.axis('off') ax4.imshow(ersion3,cmap='gray') ax4.set_title('5X5,2')
示例图片: