图像处理(四)图像分割(2)测地距离Geodesic图割

这段时间为了搞项目,涉及到图像分割算法,由于感觉传统的分割算法得出来的效果都很差。于是就尝试各种图像分割算法,把每种分割算法的代码都写一写,一来是为了提高自己的编程能力,二来是为了更加深刻的了解算法。学习基于测地距离的图像分割算法,是由于之前把grab cut算法实现了一遍,感觉效果很坑爹,于是就尝试基于测地距离的分割算法。这个算法开始前,需要先非常熟悉“测地距离”这个概念,因为之前写过三角网格曲面上的Dijkstra算法,在三维曲面空间中两点间的测地距离就是两点间沿着曲面走的最短路径,因为之前对测地距离这个概念就比较熟悉,所以看《Geodesic Matting: A Framework for Fast Interactive Image这篇paper,也就觉得没有什么难度,所以果断写代码,试验一下效果再说。

1、算法原理基于测地距离的图像分割属于一种图论的分割算法。图论分割算法:即把图像上的每个像素点当做图的顶点,图的每个顶点有四个邻接顶点(每个像素点有四个邻接像素点,除边界点),每两个邻接像素点用相应的边连接,边的长度与两个像素点间的相似度有关(测地距离),而非采用简单的欧式距离作为边长(相邻像素点间的欧式距离为1),具体文献中边长的计算方法见下文。

2、基于测地距离的分割算法流程:给定一张待分割的图片,首先算法会利用该图片构造一张距离图,边的距离大小:参考文献中采用的是现根据已知的标记点前景、背景,对未知的像素点进行核密度估计,并根据相邻相似点间的隶属于前景的概率差,作为边长,我写的demo中是直接采用像素值的差值作为边长。

具体实现:在测地距离的算法中提供两种类型的笔刷,其作用是用来标记为分割时的前景F和相应的背景B

①首先会需要用户在相应的前景和背景区域做标记。

②计算未标记点到已标记点前景的测地距离d1,及背景的测地距离d2。测地距离的计算方法我的demo中采用的是Dijkstra算法进行计算(Dijkstra算法原理请百度搜索)。具体过程如下:首先,把标号为的标记点到目标的测地距离初始化为0,到背景的测地距离初始化为无穷大;同样,把标号为的标记点到背景的测地距离初始化为0,到目标的测地距离初始化为无穷大。根据连通标号矩阵,搜索标号为的所有标记点的4连通邻域像素点,找出这些像素点中权重概率最小的那个像素点,把最小权重概率对应的像素点添加到已排好序的路径上,并通过比较原来的权重概率与加入新顶点后的新概率大小,决定是否更新其它像素点的权重概率。这样,不断地添加新的像素点到已排好序的路径上,直到图像中所有像素点全部搜索完为止。于是由一个或多个权重概率加和得到每个像素点到目标的测地距离d1(x)。同理,可以计算出图像中各像素点到背景的测地距离d2(x)

③根据测地距离的大小,判断未标记点属于前景或背景。根据概率公式,由图像中的每个像素点到目标和背景的测地距离,计算出该像素点分属于目标和背景的概率:

                         

                          

对于图像中的各像素点,若 ,则把该像素点判为目标像素点则判为把该像素点判为背景像素点。

看一下我测试的几张图片分割效果:


原图                                                                   分割结果


  原图                                                                                         分割结果


最后总结一下算法的优缺点:这个算法给我的感觉,至少比grab cut 算法强,2004年的grab  cut 算法paper效果看起看挺不错的,但是试验起来感觉很坑爹。

算法优点:计算速度快,比grab cut算法快好多(demo未做整理,边长重复计算,因此速度达不到文献中速度),对图片中包含半透明区域的图像分割也有一定的效果。

算法缺点:如果前景和背景边缘比较模糊,这时测地距离的图像分割容易出错。这时候用户如果想得到一个较好的分割效果,需要额外的交互或者对图像进行其他的处理。

附:还有一篇2010年文献《Geodesic graph cut for interactive image segmentation》结合了graph cut 算法和测地距离分割算法的优点,把两种算法结合起来,可克服两种算法存在的缺陷。

总结:图像分割算法基本上鲁棒性都很差,加点噪声,边缘较弱等对所有的图像分割算法影响都很大,算法一般只对文献上的图片效果较好。

本文地址:http://blog.csdn.net/hjimce/article/details/45221607    作者:hjimce     联系qq:1393852684
更多资源请关注我的博客:http://blog.csdn.net/hjimce                  原创文章,转载请保留这两行作者信息

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值