【形状匹配算法】Shapecontext形状上下文算法的研究

形状上下文是用于对象识别的特征描述符。Serge Belongie和Jitendra Malik在2000年的论文“匹配形状上下文”中提出了这一术语

Shapecontext算法是统计两个点集中每一个点的上下文信息,并且对比两点集每个点之间的上下文信息是否近似,得到一个最近似的一组排列,即可找到第一个点集的每一个点对应第二个点集的点。这就是shapecontext算法的总体框架。

shapecontext算法总共分为三步:

  1. 计算两点集每个点的上下文信息(对图像计算SC的时候,需要先提取图像的内外部轮廓)
  2. 计算两点集每两个点之间的cost值,即开销值
  3. 使用匈牙利算法统计出总体cost值最低的一组点集对应关系

1. 计算上下文信息

以每一个点作为中心点画一个同心圆,我们设同心圆有5层,并将这个圆分成12个分区,这样就存在5 * 12 = 60个网格,接着统计其他点在这60个网格中的分布情况。这样就可以用一个长度为60的数组统计出其他点在当前点的周围的分布情况。
每个点的上下文信息
上图中 (a)(b)分别是两个字体不同的字母A,(c)是基于(a)中菱形点画的网格图。(d)(e)分别是菱形点和正方形点的直方图数据,可以看出他们的点集分布还是比较相似的,而(f ) 即三角形表示的点的直方图与另外两个相差很大,所以可以看出,(d)(e)两点在结构上可以说是同一个点。

2. 计算每两个点之间的cost值

在计算每两个点之间的cost值的时候,shapecontext算法采用的是X2检验统计量(卡方检验统计量,统计样本的实际观测值与理论推断值之间的偏离程度),公式是:
卡方检验统计量公式
可以计算出两点集之间每两个点的cost值,k指的是第k个网格。g和h分别表示两个点集中的某个点。

关于cost值的计算,维基百科上介绍了另外一种,在数字识别中更有用处的基于外观的额外成本
额外成本

通过加权,结合这两个成本函数,可以得到
这里写图片描述
作为真正的cost方程。

3. 利用匈牙利算法进行对应点的查找

刚才我们计算出了每两个点之间的cost值,实际上已经得到了一个整体可供参考的数值的,但是如此庞大的数据,要从中选出每个点对应的那个点是一件非常麻烦的事情,所以在这里shapecontext算法采用了匈牙利算法,匈牙利算法的时间复杂度为O(N^3)。
匈牙利算法

虽然有更有效的算法。为了有坚固的处理离群值,可以添加具有匹配的成本矩阵的常数,但相当大的成本“哑”节点。如果没有真正匹配,这将导致匹配算法将异常值匹配为“虚拟”。

到这里已经求得了对应点关系,这里没有继续描述模型变换的过程了,接下来Shapecontext会通过变换矩阵进行点集到点集之间的变换,经过多次迭代变换之后,计算一个形状距离:
形状距离
这是最佳匹配点上的形状上下文匹配成本的对称和

总结

shapecontext有很大的优点,它很大限度的在点集匹配的过程中使用到了点的上下文信息,这是对对应点的查找非常有帮助的信息。并且它对非刚性匹配具有很好的鲁棒性。它不考虑点集的坐标位置,不是坐标相关的匹配算法。

但是,shapecontext也有其不足的地方,它对于点集点数的要求过高,要求匹配点集的点数必须高于固定点集的点数,并且如果固定点集的某些部位的特征点少于对应部位的匹配点集的特征点,在那个部位出现对应点匹配错误的情况。

学习资料:
Matlab代码地址:
Shapecontext Matlab版本代码地址
论文地址:
Shapecontext 论文地址
参考:
https://en.wikipedia.org/wiki/Shape_context
http://blog.csdn.net/aivin24/article/details/8846293?reload

  • 5
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值