视觉单词 可以 理解为就是 Local Feature
什么是Local Feature 呢
包含两个信息:
坐标位置(x,y)
描述符(描述算子 descriptor) 这个描述符是用来可以被量化比对的 做match
计算机视觉中 最重要的Local Feature 就是SIFT :Scale Invariant Feature Transform
SIFT 是一种非常典型的 著名的Local Feature
同样包含刚刚说的两个信息:
坐标位置 Detector 检测器
特征描述算子 descriptor 用来描述特征向量
SIFT 不是机器学习学出来的 是科学及根据统计学数学 等等规定出来的,给定一个图片就可以去算它的Local Feature 信息
所以使用opencv 一行api就可以搞定
会输出如上两个信息
假如图像计算出了100个点,
那么它的坐标位置的信息 就会是100*2 的矩阵 100表示点的数量 2表示x和y两个元素
如果是128维的特征向量来描述特征算子 所以还会有 100*128的矩阵 每一行是一个descriptor描述符描述算子 用来对应表示前面每一行的(x,y)的feature
越高清的图片 检测出的点越多
左边的衣服不太可能去匹配到右边的脑门
从几何上来说 大多数线都是平移过来,但是有个别线是斜着的 违背了大方向 是明显错误的 所以把它去掉 这种基于几何校验的方式 非常有名 叫做随机一致性采样 Ransac
视觉单词模型的基本结构
Step1:Feature Extraction 特征提取 会得到两个信息 位置 和 描述算子特征向量
Step2:Codebook Construction 构造词典 其实就是做了聚类,然后取聚类中心构造词典,既可以降维又可以表征特征
Step3:Vector Quantization
假设这是一张图,每个黑色的叉叉是keypoint 或者说 local feature
红色的圆圈是聚类出来的中心
可以看到,黄色的区域,有4个特征点,(截图少一个),y5 是这个区域的聚类中心,都用y5作为特征表达,所以在直方图统计中 对y5的横坐标就会加上4的分量
整个流程就是
Bag of vision words BoVW