最近在学习物体识别方面的东西。在特征点的提取领域,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实现)相关推荐

  1. 【OPENCV】图像拼接(python)-基于SIFT特征点和RANSAC方法

    简单的图像拼接为将两幅图像简单的拼接在一起,不考虑图像内容,仅仅是图像几何空间的转移与合成. 复杂的图像拼接也叫作基于特征匹配的图像拼接,考虑图像内容,拼接时消去两幅图像相同的部分,实现拼接合成全景图 ...

  2. 【OpenCV-图像处理】用sift特征点算法和ransac算法进行多幅图像的拼接

    最近我玩samsung手机的时候发现很多有拍照功能的软件里面都嵌着对多幅图像进行拼接成一幅图像的功能. 玩着玩着有了灵感...这也是好事,因为最近搞了毕设,毕设内容要涉及到sift特征提取和ransa ...

  3. matlab人民币识别,Matlab图像处理学习笔记(六):基于sift特征点的人民币识别...

    本文记录如何利用sift特征点进行人民币的识别.本文给出的matlab源码识别了1元与100元人民币的面额,相同思路,可以对各种币值的人民币进行面额.正反面的识别.但由于本程序采用串行,模板数的增多会 ...

  4. 利用RANSAC算法筛选SIFT特征匹配

    关于RANSAC算法的基本思想,可从网上搜索找到,这里只是RANSAC用于SIFT特征匹配筛选时的一些说明. RANSAC算法在SIFT特征筛选中的主要流程是: (1) 从样本集中随机抽选一个RANS ...

  5. ML之SIFT_FLANN:FLANN算法的简介、使用方法(对图片提取SIFT特征并利用FLANN方法实现计算图像相似度并可视化案例)之详细攻略

    ML之SIFT_FLANN:FLANN算法的简介.使用方法(对图片提取SIFT特征并利用FLANN方法实现计算图像相似度并可视化案例)之详细攻略 目录 FLANN算法 1.flann的搜索步骤 (1) ...

  6. 【图像处理】——特征匹配(SIFT特征检测器+FLANN特征匹配方法+KNN近邻最优匹配筛选)——cv.xfeatures2d.SIFT_create()sift.detectAndCompute

    转载请注明地址 目录 1.特征检测和特征匹配方法 (1)特征检测算法 (2)特征匹配算法 (3)各种特征检测算法的比较 2.特征匹配的基本步骤(附带主要的函数) (1)图像预处理--灰度化(模板--查 ...

  7. (三)计算机视觉 --SIFT特征匹配、地理标记图像匹配及RANSAC图像拼接

    目录 一.sift特征检测概述 1.1特征点 1.2sift特征检测 二.sift特征提取与匹配 2.1特征提取并展示 2.2对两张图片进行特征匹配计算 2.3给定一张图片,输出与其匹配最多的三张图片 ...

  8. 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)

    本文目标是通过使用SIFT和RANSAC算法,完成特征点的正确匹配,并求出变换矩阵,通过变换矩阵计算出要识别物体的边界(文章中有部分源码,整个工程我也上传了,请点击这里). SIFT算法是目前公认的效 ...

  9. SIFT特征点匹配中KD-tree与Ransac算法的使用

    转自:http://blog.csdn.net/ijuliet/article/details/4471311 Step1:BBF算法,在KD-tree上找KNN.第一步做匹配咯~ 1.什么是KD-t ...

最新文章

  1. Jmeter实现WebSocket协议的接口和性能测试方法
  2. percona-Toolkit
  3. java调用sql返回list_Hibernate执行原生SQL返回ListMap类型结果集
  4. TCP粘包产生的原因
  5. python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
  6. C++_函数_函数的占位参数_函数重载---C++语言工作笔记034
  7. sql2005 分页 ROW_NUMBER()
  8. 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
  9. 静态路由协议的默认管理距离是_动态路由选择原理(距离矢量路由协议RIP)
  10. 【写博客常用】美赛成绩如何快速查询!
  11. 计算机专业考注册测绘师经验,注册测绘师考试攻略
  12. 8bit音乐的一些相关知识
  13. SpringBoot中的Banner(Banner)
  14. 手写笔记图片计算机,如何将手写笔记录入到电脑上?
  15. Nginx的优化配置
  16. 导图解文 从梦想到财富(02)你拥有最宝贵的财富是什么?
  17. 20200211作业
  18. 算法问题——猎人和狼,一个男人带两个小孩,,一个女人带两个小孩过河问题
  19. angular学习(六)—— 依赖注入
  20. 【翻译一下官方文档】邂逅uniCloud云函数(基础篇)

热门文章

  1. 电商平台应该分析哪些数据?具体怎么去分析?
  2. php和java的memcached使用的兼容性问题解决过程
  3. iptables详解--转
  4. 中央纪委网站:​深度关注 | 元宇宙如何改写人类社会生活
  5. 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
  6. 显示lib包_【手把手教你】股市技术分析利器之TA-Lib(一)
  7. ADSL宽带为什么下载和上传速度差别如此之大?
  8. Spring Session - 源码解读
  9. Spring Boot2.x-04Spring Boot基础-使用注解装配bean
  10. centos 调整home分区xfs_Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)...