[读书笔记] 计算机视觉与算法应用 Chapter 4.1 特征检测与匹配--点和块
《计算机视觉与算法应用》这本书其实我已经读到第四章了,之前一直都用笔记在笔记本上了,现在直接继续在这里记啦,之前的也不再补充了~
Chapter 4 特征检测与匹配
- “关键点特征”或“兴趣点”或“角点”
- “边缘”
4.1 点和块
- 获取特征点及其之间的对应关系主要有两种方法:1)在第一幅图像中寻找那些可以使用局部搜索方法来精确跟踪的特征,比如相关或者最小二乘 2)在所有考察的图像中独立地检测特征点然后再基于它们的局部表观进行匹配
- 关键点检测和匹配流水线:1)特征检测(提取)2)特征描述 3)特征匹配 4)特征跟踪
4.1.1 特征检测器
- 比较两个图像块
- 计算匹配结果的稳定度--“自相关函数”或自相关表面
矩阵A给出了匹配块所在位置不确定度的一个下界,通过特征值分析就可以对这个不确定度进行可视化分析。
对应于自相关矩阵A的特征值分析的不确定性矩阵
- 基本思路:使用从自相关矩阵导出的旋转不变标量测量的局部最大值来定位关键点以达到匹配稀疏特征的目的。使用高斯权重窗口代替方形图像块
- 特征值最小值λ0不是唯一可以用来寻找关键点的量,其它的还有:
,
,
- 一个基本特征检测算法的步骤
- 自适应非最大抑制
大多数特征检测器只找兴趣函数的局部最大值,导致特征点非均匀分布,对比度大的区域特征点比较密集。解决办法是只检测那些同时是局部最大值且其响应明显大于其周围半径r区域内的响应的特征。首先根据特征点的响应强度对其进行排序,然后通过不断减小抑制半径来建立第二个排序列表。
- 衡量可重复性
可重复性:一幅图像中检测到的关键点在另一幅变换过的图像中的对应位置的ε个像素范围内找到的频率。
每个特征点的“可用信息量”(Information Content):一个旋转不变的局部灰度描述子集合的墒。
- 尺度不变: LoG (Laplace of Gaussian), DoG(高斯差分)
- 旋转不变和方向估计:主导方向(关键点周围的梯度平均最简单,也可以使用高斯加权函数;更稳定的方法是梯度方向直方图,使用梯度大小和高斯函数距离加权,找Top 80%的峰值以后用三分抛物线拟合计算出更准确的方向估计)
- 仿射不变
另一个重要的放射不变区域监测器是“最稳定极值区域”。
4.1.2 特征描述子
- 特征点的局部表观可能会在方向和尺度上变化,有时甚至存在仿射变形。提取局部尺度、方向或仿射的框架估计,然后在形成特征描述子之前使用它来对图像块重新采样比较可取。
- 图像描述子既要对特征点的变化具有很好的不变性,也要对不同图像块之间保持区分性
- 偏差和增益规范化(MOPS)
- 尺度不变特征变换(SIFT)
通过计算在检测到的关键点周围16*16窗口内每一个像素的梯度得到,使用检测到的关键点所在的高斯金字塔级别。通过高斯下降函数降低权重。计算梯度方向直方图。
- PCA-SIFT(主成分分析降维)
- 梯度位置方向直方图(GLOH)
- 导向滤波器(高斯导数滤波器的组合)
- 局部描述子的性能(GLOH>SIFT)
4.1.3 特征匹配
- 两个阶段:1)选择一个匹配策略,确定哪些匹配将被传到下一阶段进行进一步处理 2)设计有效的数据结构和算法来尽可能快地完成这个匹配
- 匹配策略和错误率
TP: 正确肯定,正确匹配的数目
FN:漏报,没有正确找到匹配的数目
FP: 误报
TN:正确否定
(receiver operating characteristic, ROC曲线)
三种匹配策略:1)固定阈值 2)最近邻 3)最近邻距离比率(NNDR)
最近邻距离比率
- 高效匹配
对潜在候选进行高效搜索的办法是导出一个索引结构(多维搜索树,哈希表);一个比较简单的方法是多维散列,它基于施加在每一个描述子向量上的某些函数将描述子映射到一个固定大小的一些桶里。在匹配时,每一个特征被散列到一个桶中,然后在邻近的桶里进行搜索来返回潜在的候选者,然后将这些候选者排序或者打分以确定哪些是有效的匹配。
散列的例子:Haar小波,局部敏感散列(locality sensitive hashing),参数敏感的散列。
多维搜索树:k-d树(kd-树),它将多维特征空间交替沿着轴对齐的超平面进行分割,沿着每一个轴选择阈值来最大化某个策略。
- 特征匹配验证和紧致化:随机采样
4.1.4 特征跟踪
- 在第一幅图像中寻找可能的特征位置集合,然后在后续的图像中搜索它们的对应位置。“先检测后跟踪”(detect and track)。当然这里期望相邻帧之间的运动和表观的变形比较小。
- 在两个方向上梯度值均大的区域,即自相关矩阵拥有大的特征值的区域,提供了可用于寻找对应的稳定的位置。
- 在后续的帧中,搜索那些平方差小的对应图像块区域通常比较高效。如果图像的光照发生了变化,需要明确地补偿这些变化或者使用规范化互相关。
- 分层搜索策略。使用低分辨率下的匹配来提供较好的初始猜测值,加速搜索过程。该策略的替代策略包括了解被跟踪块的表观应该是什么,然后在预测的位置附近搜索它。
- 在特征的当前预测位置周围的一个区域内使用一种增量注册算法进行搜索,得到的跟踪器通常叫“Kanade-Lucas-Tomasi(KLT)跟踪器”
- 特征跟踪最新的一个发展是使用学习算法来建立一个特殊的目的识别器,以在图像中的任意位置处快速寻找匹配的特征。通过花时间训练样本块与其仿射变形间的分类器,可以构建出非常快而稳定的特征检测器,这样就可以处理更快的运动变化。
4.1.5 应用:表演驱动的动画(performance-driven animation)
- 快速特征跟踪的最有趣的一个应用
- 基于跟踪用户的运动,对一个3D图形模型进行交互式形变
- Eg.提取草图中眼睛嘴巴的位置-->绘制控制线-->确定运行时这些特征的当前位置-->根据所跟踪特征来计算全局的位置和方向-->得到的变形了的眼睛和嘴巴区域随后被复合到整体头部模型来生成一帧手绘的动画。