利用SIFt特征点和RANSAC方法进行物体识别(利用openCV和vs2010实现)
来源:互联网 发布:淘宝全屏滚动海报代码 编辑:程序博客网 时间:2024/06/06 01:34
最近在学习物体识别方面的东西。在特征点的提取领域,SIFT特征点是非常经典的一个特征点提取算法。RANSAC算法,是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。
本文的步骤就是,先利用SIFT算法对训练图片和实验图片分别提取特征点,然后将两次提取的特征点进行匹配,这种单纯的匹配方式会产生很多错误的匹配。然后用RANSAC方法,求出变换矩阵,从而可以排除大部分的错误匹配,留下的基本上都是正确的比配,最终实现了物体的识别。
在特征点的匹配过程中,设定阈值T,比较训练数据与实验数据中的特征向量,为训练数据的每一个向量都在实验数据中选取一个距离最小的和一个次小的对应点,当最小的距离与次小的距离比值小于T时,则认为与最小的距离点为一个匹配。(该方法为sift作者Lowe在2004年的文章中采用的方法)
采用此种方法,得到的试验结果如下(选取阈值T为0.8):
从实验结果不难看出,确实还存在着很多的错误的匹配点。
于是,就该使用RANSAC来删选一下匹配点了。
RANSAC为RANdom SAmple Consensus的缩写,它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。
一个物体,从实验数据到训练数据,可以看做是进行了一个仿射变换。仿射变换可以由一个3X3的矩阵表示。该矩阵是未知的,可以使用RANSAC算法,从众多既包含正确值也包含异常值的匹配中采用多次迭代的方法计算其变换矩阵,从而也就可以筛选出正确的匹配。下图为RANSAC算法的详细流程。
具体的算法流程如下:
通过此方法,可以大大的提高匹配的正确率,将不正确的匹配点筛出来,最终得到大部分正确的匹配点。
实验结果如下图
经过以上两步的实验,基本上算是完成了对鞋子这个物体的识别了。
2015年3月27日 西安交通大学
转载请注明出处。
- 利用SIFt特征点和RANSAC方法进行物体识别(利用openCV和vs2010实现)
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- 【OpenCV-图像处理】用sift特征点算法和ransac算法进行多幅图像的拼接
- 使用SIFT和RANSAC算法,完成特征点的正确匹配,并求出变换矩阵,通过变换矩阵计算出要识别物体的边界
- Opencv实现:SIFT特征提取+RANSAC剔除误匹配点
- Opencv实现:SIFT特征提取+RANSAC剔除误匹配点
- 使用RANSAC提纯SIFT和SURF特征点,达到鲁棒匹配的效果(OpenCV 2.4.13下,源码)
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 利用RANSAC算法筛选SIFT特征匹配
- 【opencv】 特征点检测 sift和surf
- opencv3.1中利用SIFT特征及RANSAC筛选进行图像矫正
- 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
- 3-18
- LeetCode: Text Justification
- 杭电1092 Java版
- `gem install therubyracer` fails on Mac OS X Lion
- 2.19
- 利用SIFt特征点和RANSAC方法进行物体识别(利用openCV和vs2010实现)
- nginx使用ssl模块配置HTTPS支持
- 了解人的需求的共同之处,互相的理解
- 遍历Map的四种方法
- 读《人生不设限》 有感
- 3.20
- 非法文件名
- hdu 4638 Group (线段树+离线处理)
- 3.21