使用分水岭算法进行图像分割
分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线。
算法具体步骤可参照分水岭算法
具体算法步骤
- 源图像转换为灰度图
- 找到前景图像的近似估计,使用Otsu’s 二值化
Otsu’s 二值化:最大类间方差法
cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU
按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
ret,thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
得到使类间方差最大的阈值thresh
- 去除噪声数据
形态学变换morphologyEx函数
morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)
src 源图像\thresh
op 变换方式
cv2.MORPH_OPEN 开