阈值分割
用一个或几个灰度阈值将图像的中的区域分成不同的类
一般适用于只需要将图像分割为两个区域的情况(当然可以分割为多个区域,但是此方法的算法较为简单,一般只用于二分)
最常用的方法是OTSU
即大津阈值分割算法
边缘分割
即先提取图像边缘,将边缘进行连接后,划分为不同的区域
Snakes模型
常用的是Snakes
模型,用一条可变形的参数曲线及相应的能量函数,以最小化能量函数为目标,控制参数曲线变形,具有最小能量的闭合曲线就是目标轮廓
还可以使用点连接关系判断区域,即建立图像的邻接矩阵,判断两点是否属于同一区域
此方法较难,本实验对其进行了调研和实验,没有获得可接受的效果,故放弃
GrabCut算法
GrabCut
是微软设计事项的一种基于边缘的图像分割算法.使用时在前景物体外画框选中,算法会讲框外理解为背景,从而将框内的背景区域进行识别,选中前景物体
区域分割
最常用Watersheds
即分水岭算法
,这种算法将图像灰度值的大小理解为地貌的高度
分水岭分割的过程可以大致上这么理解,在全图范围内降水,盆地部分慢慢被填满,当不同集水盆将要相互连通是,筑起水坝,水坝也就是分水线。当所有的区域都被水淹过后,分水岭也就都建完成了
程序代码及注释
1 | #! /usr/local/bin/python |
执行结果
原始图像:
GrabCut画框区域:
GrabCut效果:
基于颜色的OTSU&Watersheds方法中使用的mask:
OTSU&Watersheds方法效果:
可以看到,使用两种方法得到的效果都不是很好.本次实验我不理解的地方较多,请批评指正🙏