1 形态学相关概念
应用领域:
图像增强;图像分割;图像恢复;纹理分析;特征生成;边缘检测;图像压缩;形状分析;成分分析;曲线填充;特征检测;噪声去除…
形态学基础概念:
(1)结构单元(structuring element,SE):也被称为核
(2)SE根据原点转换到图像中的每个像素位置.(空位置不计算)
2 二值形态学操作
2.1 二值膨胀
定义: 一个图像F利用SE(结构元素)进行膨胀,被定义为:
是使图像中高亮部分扩张,效果图拥有比原图更大的高亮区域;是求局部最大值的操作.
具体操作: 用一个结构元素扫描图像中的每个像素,用结构元素中的每个像素与其覆盖的像素做‘与’操作,如果都为0,则该像素为0,否则为1。
作用: 将与物体接触的所有背景点合并到物体中,使目标增大,可填补目标中的孔洞
API: cv2.dilate(img,kernel,iterations)
参数:
img:要处理的图像
kernel:核结构
iterations:膨胀的次数,默认是1
import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img=cv2.imread('erode.png')
#2. 膨胀
# 2.1 创建核结构
kenel=np.ones((5,5),np.uint8)
# 2.2 膨胀
dilate_img=cv2.dilate(img,kenel,1)
#3.显示图像
cv2.imshow('origin',img)
cv2.imshow('dilate',dilate_img)
cv2.waitKey(0)
2.2 二值腐蚀
定义: 一个图像F利用SE(结构元素)进行腐蚀,被定义为:
是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域;是求局部最小值的操作。
具体操作: 用一个结构元素扫描图像中的每个像素,用结构元素中的每个像素与其覆盖的像素做‘与’操作,如果都为1,则该像素为1,否则为0。
作用: 消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点。
API: cv2.erode(img,kernel,iterations)
参数:
img:要处理的图像
kernel:核结构
iterations:腐蚀的次数,默认是1
import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img=cv2.imread('erode.png')
#2. 腐蚀和膨胀
# 2.1 创建核结构
kenel=np.ones((5,5),np.uint8)
# 2.2 腐蚀
erode_img=cv2.erode(img,kenel,1)
#3.显示图像
cv2.imshow('origin',img)
cv2.imshow('erode',erode_img)
cv2.waitKey(0)
2.3 二值开操作
定义: 一个图像F利用SE(结构元素)进行开操作,被定义为:
定义: 先腐蚀后膨胀,其作用是:分离物体,消除小区域。
特点: 消除噪点,去除小干扰,而不影响原来的图像
API:
cv2.morphologyEx(img,op,kernel)
参数:
img:要处理的图像
op:处理方式,若进行开运算,则设为cv2.MORPH_OPEN;若进行闭运算,则设为cv2.MORPH_CLOSE
kernel:核结构
import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img=cv2.imread('open_close.png')
#2. 开运算和闭运算
# 2.1 创建核结构
kenel=np.ones((10,10),np.uint8)
# 2.2 开运算
open_img=cv2.morphologyEx(img,cv2.MORPH_OPEN,kenel)#开运算
#3.显示图像
cv2.imshow('origin',img)
cv2.imshow('open',open_img)
cv2.waitKey(0)
2.4 二值闭操作
定义: 一个图像F利用SE(结构元素)进行闭操作,被定义为:
定义: 先膨胀后腐蚀,其作用是:消除闭合物体里面的孔洞(比结构体更小的孔洞得到填充)
特点: 可以填充闭合区域
API:
cv2.morphologyEx(img,op,kernel)
参数:
img:要处理的图像
op:处理方式,若进行开运算,则设为cv2.MORPH_OPEN;若进行闭运算,则设为cv2.MORPH_CLOSE
kernel:核结构
import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img=cv2.imread('open_close.png')
#2. 开运算和闭运算
# 2.1 创建核结构
kenel=np.ones((10,10),np.uint8)
# 2.2 开运算和闭运算
open_img=cv2.morphologyEx(img,cv2.MORPH_OPEN,kenel)#开运算
close_img=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kenel)#闭运算
#3.显示图像
cv2.imshow('origin',img)
cv2.imshow('open',open_img)
cv2.imshow('close',close_img)
cv2.waitKey(0)
2.5 二值形态学总结
膨胀和闭操作: 信息都会增加。区别是膨胀是使整个区域进行膨胀,闭操作对孔洞进行膨胀,整体没有很大变化保留了原有图像特征
腐蚀和开操作: 信息都会减少。区别是腐蚀使整个区域进行腐蚀,开操作对噪声点进行腐蚀,整体没有很大变化保留了原有图像特征
3 二值形态学应用
open:去除噪点
close:断裂填充
二值开运算:
(1)强大的形状检测器,通过使用不同的结构元素。例利用半径为5的圆形结构元素,对原图进行二值开运算,得到