图像处理中,SIFT,FAST,MSER,STAR等特征提取算法的比较与分析(利用openCV实现)

本文实验为自己原创,转载请注明出处。

本人为研究生,最近的研究方向是物体识别。所以就将常用的几种特征提取方式做了一个简要的实验和分析。这些实验都是借助于openCV在vs2010下完成的。基本上都是使用的openCV中内置的一些功能函数。

1. SIFT算法

尺度不变特征转换(Scale-invariant feature transform或SIFT)算法是一种特征提取的方法。它在尺度空间中寻找极值点,并提取出其位置、尺度、旋转不变量,并以此作为特征点并利用特征点的邻域产生特征向量。
SIFT算法对于光线、噪声、和微小视角改变的容忍度相当高,且对于部分遮挡的物体也有较高的识别相率。
2. 实验过程

利用SIFT算法进行特征提取,然后进行物体识别,以下是实验的相关结果。(红色圆圈表示匹配成功的特征点,圆圈的大小代表匹配程度的多少,圆圈半径越大,代表匹配程度越高,绿色的方框为识别出的物体。)




以上几个实验中,基本上可以正确的识别出罐子,玩偶,蜘蛛侠,鞋子和玩具车。但是,对于苹果的识别实验,则未能达到理想的要求。实验结果如下。

由实验结果可以看出,特征点的匹配大部分都是错误的,且未能正确识别出图片中的苹果。对苹果使用SIFT算法进行特征提取,结果如下图(红色箭头表示特征点,箭头的起始位置为特征点位置,箭头的方向为特征点最大梯度方向,箭头的长度代表该特征点的权重)。

通过上图还可以发现,苹果的边界特征点都仅仅有很小的权重(箭头很短),于是尝试设置一个阈值将这些特征点去除,则剩下的大部分都为准确的特征点。选取阈值为1.7,将权值小于1.7的特征点剔除,实验结果如下:

从上图可以发现,特征点的提取已经比较准确,且基本没有边界特征点带来的干扰。但是,特征点的数量太少,这种解决方法,依旧无法完成苹果的识别。

3.实验结果分析

经过查阅SIFT算法作者的文章,发现文章中提出,SIFT算法适合于识别旋转度达60度的平面形状,或是旋转度达到20度的三维物体。

经过查询其他文章,发现很多人总结的经验表明,SIFT算法对模糊的图像和边缘平滑的图像,检测出的特征点过少,对圆更是无能为力

4.尝试其他解决方法

以下尝试几种openCV中常用的特征提取算法。

FAST

FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以得到特征点,简单,有效。该方法多用于角点检测。

FAST特征检测算法来源于corner的定义,这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周围邻域内有足够多的像素点与该候选点的灰度值差别够大,则认为该候选点为一个特征点。

以下是利用FAST算法对鞋子和苹果进行特征提取(黑色圆圈为提取得到的特征点)。

由苹果和鞋子的特征点提取对比试验可以发现,该算法对于鞋子可以提取众多特征点,但是对于苹果仅仅能提取很少量的特征点,可见该方法依旧不适合用于苹果特征点的提取。

分析原因可以发现,苹果表面颜色和灰度是光滑过渡,所以该算法无法有效的提取特征点。

MSER

最大稳定极值区域(MSER-Maximally Stable Extremal Regions)可以用于图像的斑点区域检测。该算法最早是由Matas等人于2002年提出,它是基于分水岭的概念。

MSER的基本原理是对一幅灰度图像(灰度值为0~255)取阈值进行二值化处理,阈值从0到255依次递增。阈值的递增类似于分水岭算法中的水面的上升,随着水面的上升,有一些较矮的丘陵会被淹没,如果从天空往下看,则大地分为陆地和水域两个部分,这类似于二值图像。在得到的所有二值图像中,图像中的某些连通区域变化很小,甚至没有变化,则该区域就被称为最大稳定极值区域。这类似于当水面持续上升的时候,有些被水淹没的地方的面积没有变化。

利用此算法,同样对苹果和鞋子两个物体进行检测,结果如下

通过对比试验发现,苹果的特征区域依旧非常少。可见该算法依旧不适合于苹果的特征提取。

分析原因可以发现,苹果的表面的灰度为比较光滑的过渡,当阈值不断增大时,陆地和水面的边界也在平缓的变化,所以很难得到一个最大稳定的极值区域。

STAR

利用STAR特征提取算法,实验结果如下:

由实验结果可以看出,该方法依旧无法提取出苹果的特征点。

5.总结分析

由上面的几个试验可知,以这些方法,都无法对苹果进行有效的特征提取。原因基本上都是因为苹果表面颜色过渡比较光滑,其表面大多数点和周围的点颜色差别太小,不宜作为特征点。

通过这几个实验还可以发现,无论是哪种特征点提取的方法,提取的特征点都位于苹果的上边部分和苹果的右边部分,即不同的特征提取算法提取的特征点的位置还是极为相似的,由此也可以看出不同的特征提取算法虽然方法不同,但是也存在着一定的相似性。

本人刚刚开始从事物体识别和特征提取的研究不久,还算是个初学者,为了提高自己,也为了和大家多多的交流并互相学习,将最近的一些实验发布出来,欢迎各位批评指正。也非常欢迎和我交流。

我的联系方式bianxingjingang139@126.com

2015年3月9日   西安交通大学

图像处理中,SIFT,FAST,MSER,STAR等特征提取算法的比较与分析(利用openCV实现)相关推荐

  1. 图像处理中Normalization的应用

    图像处理中Normalization的应用 背景:我想把肺部CT图像数据和对应的掩码标签重合显示,也就是下图这种效果,通过对应元素相乘实现,但是两张图像的数据格式和分布都不相同,因此用到了normal ...

  2. SIFT、SURF等关键点特征提取算法代码

    文章目录 1.关键点特征提取算法 2.SIFT代码(python+opencv) 2.SURF代码(python+opencv) 3.SIFT和SURF的比较 1.关键点特征提取算法 特征提取是提取出 ...

  3. OpenCV中的图像处理中

    图像金字塔 一般情况下,我们要处理是一副具有固定分辨率的图像.但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理.比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸 ...

  4. 图像处理中ct图的通道是多少_常见医疗扫描图像处理步骤

    一.数据格式 1.1 dicomDICOM是医学图像中的标准文件,这些文件包含了诸多元数据信息(比如像素尺寸),此处以kaggle Data Science Bowl数据集为例:data-scienc ...

  5. 图像处理中,在图片上写字,包括中文与英文!

    在数字图像处理中,有的时候便于标注图片信息,需要我们在图片上做一些文字标注.opencv提供了一套比较通用简单的写文字的函数接口: void cv::putText(cv::Mat& img, ...

  6. Python:图像处理中img[:,:,::-1]是什么意思?

    我们经常在图像预处理中会看到类似如下代码 img = cv2.imread("img_path") img = img[:,:,::-1].transpose(2, 0, 1) 上 ...

  7. 图像处理中,关于对比度,亮度,饱和度这些指标的概念

    (1)对比度:一副图像中,各种不同颜色最亮处和最暗处之间的差别,差别越大对比度越高,这个跟分辨率没有多少关系,只跟最暗和最亮有关系,对比度越高一个图像给人的感觉就越刺眼,更加鲜亮,突出:越低则给人感觉 ...

  8. 图像处理中,对图片数据集规格大小的处理办法。

    图像处理中的数据并不是按照指定的规格大小处理时,那么需要调整图片的大小,重新设定规格,从而在后续的网络模型输入时,保证输入到模型中的图片大小一致. 指定需要加工的图像的路径为:"C:\Ani ...

  9. c语言环境下opencv图像K均值聚类,图像处理中kmeans聚类算法C++实现

    对于比 较大的类别,如遥感影像中以像素数目表示的较大 的类别,式(1)可以近似表示为 仃222 n2丁 在遥感分类应用中,一般采用试探性的方法确定 选择训练样本数量,选取规则是每个类别需要的样本 数量 ...

最新文章

  1. Spring MVC环境中的文件上传功能实现
  2. 免费送书啦!玩转3D视界,这本书带你感知立体的世界
  3. 数据意识上的“代沟”
  4. 用VS2010调试微软开放的部分源码
  5. SpringBoot 配置绑定
  6. LIVE555再学习 -- testRTSPClient 源码分析
  7. 快速了解 MySQL 的性能优化
  8. 【iCore1S 双核心板_ARM】例程十七:FSMC实验——读写FPGA
  9. 电子计算机场地通用规范_最全的视频监控系统施工规范要求
  10. React 篇 Search Bar and content Table
  11. 配置SpringMVC框架
  12. 计算机硬盘出现过哪些问题,出现这几种征兆, 说明您的电脑机械硬盘可能就有问题了!...
  13. python元组和列表的联系_Python | 一文看懂Python列表、元组和字符串操作
  14. 《深入解析Android 虚拟机》——导读
  15. Inkscape软件的使用与处理svg格式图片
  16. 计算机二级2018VB题库百度云,2018年计算机二级VB考试真题
  17. 【190105】VC++ 家庭理财系统1.0(Access)源码源代码
  18. 12款网盘搜索神器以备不时之需要
  19. Ubuntu 18.04 安装微信wechat
  20. 如何使用FreeTime将Android或Fire Tablet变成适合儿童使用的设备

热门文章

  1. requests不容易注意到的细节收集~
  2. CentOS 上安装MYSQL+Apache+PHP
  3. linux内核网络协议栈--数据包的网卡缓冲区(二十四)
  4. leetcode算法题--石子游戏
  5. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数
  6. 误删除Exchange默认的会议室如何恢复?
  7. 解决手机訪问站点时总体相对屏幕缩小问题?(已解决)
  8. 数据结构——栈——中缀表达式和后缀表达式
  9. ZZULIOJ 1918: G 【二分图匹配】
  10. Scrum项目5.0