最近心血来潮了解了一波 Graph-cut 和 geodesic segmentation 分割算法。翻阅了整个中文区域的博客发现鲜有人讲解 geodesic segmentatio 。索性将自己的一些见解写成这篇博客和大家交流。本文把 geodesic segmentation 和 graph-cut 串联在一起希望帮助大家理解。 具体 graph-cut 相关内容网上很多人都有介绍,在此不再赘述。
1. 直观认识
传统的graph-cut分割算法显式地对于 region cost 和 boundary cost 进行建模,能够有效的定位目标的边界。但是存在 shrinking bias 的现象,会出现 short-cut 将目标区域从中间切断;而 geodesic segmentation 方法通过 geodesic distance 来确定分割结果,不会出现 shrinking bias 现象,但是由于没有对于边界条件进行建模所以有边界不准确的问题,即所谓的偏向最小seed距离的偏差,造成对于 seed 的敏感性大大增加
2. Geodesic segmentation
正所谓成也萧何败也萧何, geodesic segmentation 由于这种方法是一种从 seed 到 待分割像素的 outwards方法,且没有对于物体边界的显式建模考虑,从而能够适用于复杂的边界(细长状物体)。但是具有这种优势的同时也带来了偏向距离seed最短路径的影响。所以对seed的位置具有较大的敏感性。而且物体的边界定位不准确。
geodesic segmentation 算法原理:
对于每个带分割的像素点分别计算其到最近的前景seed和背景seed的geodesic distance 。然后比较这两种 ,最小的geodesic distance对应的label(前景/背景)作为该像素的label。
所以关键在于 geodesic distance 的计算: 其中 简单来说,找到的 geodesic 路径是两点之间对应 color model probability 变化最小的路径。
从原理解释 geodesic segmentation 的缺陷
从上面对于geodesic distance的计算可以看出,color model (可以认为是前景/背景的建模)是至关重要的。
- 假如color model不准确,geodesic distance 可以退化成欧氏距离,因此导致对于seed位置较为敏感。
- 即使color model准确,因为geodesic distance没有边界的显式建模,也会导致不精确的geodesic boundary。
3. Graph-Cut segmentation
老生常谈的一个graph-cut框架:
简单来说,R项就是所谓的region cost对应前景/背景的color model,B项是boundary能量项控制相邻像素的相似性。
从原理解释 graph-cut segmentation 的缺陷
从graph-cut的能量函数中可以看到,造成上图的shrinking bias现象的最根本的原因是边界能量项 —— graph-cut更倾向于更短边界的分割物体。上图表示我们的分割结果仅仅分割得到 B1段。有的读者朋友可能会想: 虽然更短的boundary确实会有比较小的boundary energy,但是同时应该也会造成R项的增大呀? 其实这个现象确实是存在的。
因此克服这种现象的直观方法是,减小参数 来增加region cost的权重从而克服short-cut的不利影响。但是减小该参数会造成过分割现象即稍微相似于前景区域的背景A0将被错误分割成前景区域。
4. Geodesic Graph-Cut
总而言之,对于 geodesic segmentation而言,显式考虑边界信息是具有很大帮助的。对于graph-cut而言,利用 geodesic distance 而不是简单的region cost具有很大帮助。