1 区域生长算法(Region seeds growing)
基本思想:将以一定判别依据,将具有相似准则的像素合并起来构成区域,关键问题是种子的选择和相似区域判定准则的确定。
种
子
的
选
择
{
人
工
自
动
种子的选择\left\{ \begin{aligned} 人工 \\ 自动 \\ \end{aligned} \right.
种子的选择{人工自动
判
定
准
则
{
一
般
用
回
复
差
值
小
于
某
个
阈
值
来
表
示
不
同
判
定
准
则
可
能
会
产
生
不
同
的
分
割
结
果
判定准则\left\{ \begin{aligned} 一般用回复差值小于某个阈值来表示 \\ 不同判定准则可能会产生不同的分割结果 \\ \end{aligned} \right.
判定准则{一般用回复差值小于某个阈值来表示不同判定准则可能会产生不同的分割结果
实验步骤:
- 随机或者对图像进行扫描,找到第一个还没有赋予属性的像素,设该像素为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0);
- 以 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)为中心,考虑 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)的4邻域或者8邻域像素 ( x , y ) (x,y) (x,y)与种子像素的灰度值之差的绝对值小于某一个阈值 T T T。如果满足条件,将 ( x , y ) (x,y) (x,y)与 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)合并(在同一区域内),同时将 ( x , y ) (x,y) (x,y)压入堆栈;
- 从堆栈中去除一个像素,把它当做 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)返回到步骤2;
- 当堆栈为空时,返回到步骤1;
- 重复步骤1-4知道图像中每个点都有归属,生长结束。
2 K-means方法
- 无监督学习方法
- 分类问题,输入分类数目,初始化中心位置
- 硬分类方法,以距离度量
————
基本流程:
1 参数k
2 初始化中心点
3 根据每个样本与中心点距离,分配聚类编号
4 对编号相同的聚类样本计算新的中心点位置
5 判断D<T或者Interaction>C,若否,则返回第3步骤;若是,结束。
3 距离变换与分水岭的图像分割
距
离
变
换
常
见
算
法
{
不
断
膨
胀
/
腐
蚀
得
到
基
于
倒
角
距
离
距离变换常见算法\left\{ \begin{aligned} 不断膨胀/腐蚀得到 \\ 基于倒角距离 \\ \end{aligned} \right.
距离变换常见算法{不断膨胀/腐蚀得到基于倒角距离
分水岭变换常见的算法:基于浸泡理论实现
处理流程:
1 将白色背景变成黑色,目的是为后面的变换做准备
2 使用filter2D与拉普拉斯算子实现图像对比度提高,sharp
3 转为二值图像通过threshold
4 距离变换
5 对距离变换结果进行归一化到[0,1]之间
6 使用阈值,再次二值化,得到标记
7 腐蚀得到每个Peak-erode
8 发现轮廓findContours
9 绘制轮廓drawContours
10 分水岭变换watershed
11 对每个分割区域着色输出结果