粘连目标的分离方法
平时做图像处理可能会遇到一些粘连目标,直接分割可能难以把粘连目标分离开来,往往需要一些其他算法识别粘连目标,并将其分离开来,然后再进行分割。这种方法对于形状比较复杂的目标不适用,比如行人检测,车辆检测等,它比较适合形状简单的目标,比如米粒检测,类圆形目标检测等。
方法一:凹点检测
下图是粘连目标的示例,凹点检测比较简单,利用凹点检测进行目标分割的步骤大致是:
- 根据图形几何特征,比如面积、周长、角度、灰度、凹度(缺陷面积与连通域面积之比)等等,从所有目标中筛选出粘连目标;
- 凹点检测:绘制粘连目标的凸闭包,用凸闭包减去粘连目标,得到凹区域,对凹区域进行排序,选择面积最大的两个凹区域,计算两区域距离最近的两个点,即凹点,画一条通过这对凹点的直线,将目标分离。代码如下。
- 循环步骤2,直到无法再找出凹点,或者目标的面积满足相应的特征。
- 使用分割算法进行图像分割。
## 凹点检测
def detection(img_detect):
# 轮廓提取
_, contours, hierarchy = cv.findContours(img_detect, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
#img_detect_show = cv.re