讲义地址:http://vision.stanford.edu/teaching/cs131_fall1718/files/06_ransac.pdf
本节内容可以看作是一种“自顶向下的介绍”。
用于边缘检测的一种模型匹配方法: random sample Consensus (RANSAC)
算法source:https://dl.acm.org/citation.cfm?id=358692
一方面,随着模型复杂度(参数个数)的增加,使用Hough transform在参数空间中拟合出一个模型将变得越来越慢;另一方面,在一个点集中,模型外点(如噪点或缺失点)将造成大量的误导。所以,引入RANSAC作为一种更加高效地解决定位问题(location determination problem,LDP)的模型拟合算法。
RANSAC的直觉解释是:主要基于外点引入的model不会得到大量内点的支持。
RANSAC算法:
维护一个(n,k,t,d)四元组,直到完成迭代。
其中:n-每拟合一个待测试模型M所需要的点的个数(直线通常为2,圆则是3);
k-迭代次数;
t-判断一个点是否满足前述模型M(记为“好点”和“坏点”)的阈值(如距离);
d-每次迭代中判定前述生成模型是“好的模型”所需要的“好点”个数。在第k次迭代中:
随机均匀采样n个点;
由这n个点拟合出一个模型;
对于其他每一个点:用t筛选出“好点”
若得到至少d个“好点”,则用这至少d+n个点重新拟合模型M’,并计算拟合误差。把这k次迭代中拟合误差最小的M’作为最终结果。
举个例子:
有一个点集
随机sample2个点
这两个点拟合出1条直线
根据t区分“好点”7个,“坏点”8个。基于这7个点重新拟合,计算拟合误差。
新一轮迭代,随机sample2个点。
11个“好点”,4个“坏点”。基于这11个点重新拟合,该模型的拟合误差最小。做为最终结果返回。
可行性分析
假设待处理的点集中,真实最优模型“好点”所占总的点数的比率为,则采个点都是“好点”(意味着此次迭代能拟合出一个好的模型)的概率是(私以为此处应当采用排列组合的方法计算,而不是简单粗暴地用幂,不过原论文中是用b来代替这个数而已,一个轻微的放大不影响结果的收敛性),个点中存在“坏点”(意味着此次迭代不能拟合出一个好的模型)的概率是(记为)。计算迭代次数的期望()和标准差()
前面说了,RANSAC不仅仅用在拟合直线上,其可以拟合的对象在part 2中做了说明-——
局部变量特征(local invariant feature)
通过前面提到的cross-correlation等全局表示来实现图像匹配通常是不切实际的如:
而通过局部的、突出的特征对图片进行描述和匹配,这种方法具有更强的鲁棒性。其算法如下:
1.在两幅图中分别获得一些“关键点”(key point);
2.在关键点周围定义一个“局部区域”(local region)
3.提取区域内容并归一化(如获得均值为0,方差为1 的像素直方图)
4.计算得到一个局部描述子(local descriptor)
5.从两幅图中匹配上述局部描述子
所以定义一个具有如下特征的、好的局部描述算法就很重要:
1.可重复性(repeatability):对象在不同的视角、光照下应当可被检测及比较。换而言之,算法应当在不同的亮度、噪声和平滑等处理下具体有鲁棒性;
2.局部性(locality):算法应当仅仅关注局部特性,以免受到遮挡部分的干扰;
3.数量(quantity)足够:要能获得足够多的特征来描述对象;
4.可分辨(distinctiveness):不同的区域要有一定的结构,可以分辨;
5.效率(efficiency):算法对新图片的实时执行效率应当有保证。
基于以上要求,本节介绍了Harris角检测器,在下一节又介绍了和尺度不变特征变换(SIFT)算法。
Harris角检测器
原文:A COMBINED CORNER AND EDGE DETECTOR// Chris Harris & Mike Stephens
如果像素周围不存在边,我们就认为这个点在一个区域的内部;如果像素周围只存在一个方向的边,我们就认为该点是在区域的边缘上;而如果一个像素周围存在多于一个方向的边,我们就认为该点是角点。对于图中的每一个像素,首先获得方向上的密度偏移量:
上式泰勒展开:
其中:
该像素点处的response即为,其中是M的特征值,是0.04~0.06的常数修正因子。R>0时该点是角点,R<0时改点是边缘点。R在0附近时该点可认为是平面内的点。
一些思考:
该算法对于平移变换和旋转变换都是robust,但是尺度变换可能会造成误差,原因是算法中的窗函数具有局部性,在图像尺度变换后会改变这种局部特性。
由此,我们可以使用另外一种在尺度变换下依然保持高效的检测方法SIFT。