【火炉炼AI】机器学习050-提取图像的Star特征

【火炉炼AI】机器学习050-提取图像的Star特征

(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

对于图像的特征点,前面我们讨论过边缘检测方法,Harris角点检测算法等,这些检测算法检测的都是图像的轮廓边缘,而不是内部细节,如果要进一步提取图像内部细节方面的特征,需要用到SIFT特征提取器和Star特征提取器。上一篇我们讲解了SIFT特征提取器,下面我们来介绍Star特征提取器。

在博文特征点的基本概念和如何找到它们中提到,OpenCV中具有以下特征点模型:(这些函数的使用也同样适用于OpenCV-Python)

1、Harris-Shi-Tomasi特征检测器和cv :: GoodFeaturesToTrackDetector

最常用的角点定义是由哈里斯[Harris88]提出的, 这些角点,被称为哈尔角点,可以被认为是原始的关键点;而后被Shi和Tomasi [Shi94]进行了进一步扩展,后者被证明对于大多数跟踪应用来说是优越的。由于历史原因,在OpenCV中叫做”GoodFeatures";

2、简单的blob检测器和cv :: SimpleBlobDetector

提出“斑点”的概念。斑点本质上没有那么明确的局部化,而是表示可能预期随时间具有一定稳定性的感兴趣区域。

3、FAST特征检测器和cv :: FastFeatureDetector

最初由Rosten和Drummond [Rosten06]提出的FAST(加速段测试的特征),其基本思想是,如果附近的几个点与P类似,那么P将成为一个很好的关键点。

4、SIFT特征检测器和cv :: xfeatures2d :: SIFT

由David Lowe最初于2004年提出的SIFT特征(尺度不变特征变换)[Lowe04]被广泛使用,是许多随后开发的特征的基础;SIFT特征计算花销很大,但是具有高度的表达能力。

5、SURF特征检测器和cv :: xfeatures2d :: SURF

SURF特征(加速鲁棒特征)最初由Bay等人于2006年提出[Bay06,Bay08],并且在许多方面是我们刚刚讨论的SIFT特征的演变。SURF所产生的特征不仅计算速度快得多,并且在许多情况下,它对SIFT特征观察到的方向或照明变化的鲁棒性也更强。

6、Star / CenSurE特征检测器和cv :: xfeatures2d :: StarDetector

Star特征,也被称为中心环绕极值(或CenSurE)功能,试图解决提供哈尔角点或FAST特征的局部化水平的问题,同时还提供尺度不变性。

7、BRIEF描述符提取器和cv :: BriefDescriptorExtractor

BRIEF,即二进制鲁棒独立基本特征,是一种相对较新的算法,BRIEF不找到关键点;相反,它用于生成可通过任何其他可用的特征检测器算法定位的关键点的描述符。

8、BRISK算法

Leutenegger等人介绍的BRISK40描述符,试图以两种不同的方式改进Brief(Leutenegger11)。 首先,BRISK引入了自己的一个特征检测器(回想一下,Brief只是一种计算描述符的方法)。 其次,BRISK的特征本身虽然与BRIEF原则相似,却尝试以提高整体功能的鲁棒性的方式进行二值比较。

9、ORB特征检测器和cv :: ORB

创建了ORB功能[Rublee11],其目标是为SIFT或SURF提供更高速的替代品。ORB功能使用非常接近于FAST(我们在本章前面看到的)的关键点检测器,但是使用了基本上不同的描述符,主要基于BRIEF。

10、FREAK描述符提取器和cv :: xfeatures2d :: FREAK

FREAK描述符最初是作为Brief,BRISK和ORB的改进引入的,它是一个生物启发式的描述符,其功能非常类似于BRIEF,主要在于它计算二进制比较的领域的方式[Alahi12]。

11、稠密特征网格和cv :: DenseFeatureDetector类

cv :: DenseFeatureDetector class53的目的只是在图像中的网格中生成一个规则的特征数组。

1. 使用Star提取图像特征点

具体代码和我上一篇文章很类似,可以先看看【火炉炼AI】机器学习049-提取图像的SIFT特征点

star = cv2.xfeatures2d.StarDetector_create() # 构建Star特征点检测器对象
keypoints = star.detect(gray, None) # 用Star特征点检测器对象检测灰度图中的特征点
# 将keypoints绘制到原图中
img_sift = np.copy(img)
cv2.drawKeypoints(img, keypoints, img_sift, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
#画在原图上,第一个是原图,第二个image是目标图,这个flags既包括位置又包括方向,也有只有位置的flags
#圆圈的大小表示特征的重要性大小,主要在桌子腿上,腿上边缘和棱角比较多,更有代表性

# 显示绘制有特征点的图像
plt.figure(12,figsize=(15,30))
plt.subplot(121)
img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.title(‘Raw Img‘)

plt.subplot(122)
img_sift_rgb=cv2.cvtColor(img_sift,cv2.COLOR_BGR2RGB)
plt.imshow(img_sift_rgb)
plt.title(‘Img with Star features‘)

########################小**********结###############################

1,Star特征点的提取方法在代码上很容易实现,cv2.xfeatures2d.StarDetector_create()这个函数就可以构建Star检测器并用detect方法就可以实现。

2,Star特征点提取器和SIFT特征点提取器的结果有很多相似之处,都是在桌腿附近有很多特征点。

#################################################################

注:本部分代码已经全部上传到(我的github)上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译

原文地址:https://www.cnblogs.com/RayDean/p/9831561.html

时间: 2024-11-05 18:31:15

【火炉炼AI】机器学习050-提取图像的Star特征的相关文章

【火炉炼AI】机器学习042-NLP文本的主题建模

[火炉炼AI]机器学习042-NLP文本的主题建模 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2, NLTK 3.3) 文本的主题建模时用NLP来识别文本文档中隐藏的某种模式的过程,可以发现该文档的隐藏主题,以便对文档进行分析.主题建模的实现过程是,识别出某文本文档中最有意义,最能表征主题的词来实现主题分类,即寻找文本文档中的关键词,通过关键词就可以识别出某文档的隐藏主题. 1. 准备数

【火炉炼AI】机器学习046-图像边缘的检测方法

[火炉炼AI]机器学习046-图像边缘的检测方法 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 图像中各种形状的检测时计算机视觉领域中非常常见的技术之一,特别是图像中直线的检测,圆的检测,图像边缘的检测等,下面我们来研究一下如何快速检测图像边缘. 边缘是不同区域的分界线,是周围(局部)像素有显著变化的像素的集合,有幅值与方向两个属性.这个不是绝对的定义,主要记住边缘是局部特征以及周围

【火炉炼AI】机器学习048-Harris检测图像角点

[火炉炼AI]机器学习048-Harris检测图像角点 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 角点检测算法大致有三类:基于灰度图像的角点检测,基于二值图像的角点检测,基于轮廓曲线的角点检测.基于灰度图像的角点检测又可分为基于梯度.基于模板和基于模板梯度组合3类方法,其中基于模板的方法主要考虑像素领域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点.常见的基

【火炉炼AI】机器学习007-用随机森林构建共享单车需求预测模型

[火炉炼AI]机器学习007-用随机森林构建共享单车需求预测模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 共享单车是最近几年才发展起来的一种便民交通工具,基本上是我等屌丝上班,下班,相亲,泡妞必备神器.本项目拟使用随机森林回归器构建共享单车需求预测模型,从而查看各种不同的条件下,共享单车的需求量. 1. 准备数据集 本次使用的数据集来源于加利福尼亚大学欧文分校(UCI)大学的公

【火炉炼AI】机器学习006-用决策树回归器构建房价评估模型

[火炉炼AI]机器学习006-用决策树回归器构建房价评估模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 最近几十年,房价一直是中国老百姓心中永远的痛,有人说,中国房价就像女人的无肩带文胸,一半人在疑惑:是什么支撑了它?另一半人在等待:什么时候掉下去? 而女人,永不可能让它掉下来.就算快掉下来了,提一提还是又上去了..... 虽然我们不能预测中国房价什么时候崩盘,但是却可以用机器学

【火炉炼AI】机器学习019-项目案例:使用SVM回归器估算交通流量

[火炉炼AI]机器学习019-项目案例:使用SVM回归器估算交通流量 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 我们都知道,SVM是一个很好地分类器,不仅适用于线性分类模型,而且还适用于非线性模型,但是,在另一方面,SVM不仅可以用于解决分类问题,还可以用于解决回归问题. 本项目打算使用SVM回归器来估算交通流量,所使用的方法和过程与我的上一篇文章[火炉炼AI]机器学习018-项

【火炉炼AI】机器学习017-使用GridSearch搜索最佳参数组合

[火炉炼AI]机器学习017-使用GridSearch搜索最佳参数组合 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 在前面的文章([火炉炼AI]机器学习012-用随机森林构建汽车评估模型及模型的优化提升方法),我们使用了验证曲线来优化模型的超参数,但是使用验证曲线难以同时优化多个参数的取值,只能一个参数一个参数的优化,从而获取每个参数的最优值,但是有时候,一个非常优秀的模型,可能A

【火炉炼AI】机器学习018-项目案例:根据大楼进出人数预测是否举办活动

[火炉炼AI]机器学习018-项目案例:根据大楼进出人数预测是否举办活动 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 我们经常看到办公大楼中人来人往,进进出出,在平时没有什么活动的时候,进出大楼的人数会非常少,而一旦举办有大型商业活动,则人山人海,熙熙攘攘,所以很明显,大楼进出的人数和大楼是否举办活动有很明显的关联,那么,是否可以构建一个模型,通过大楼进出人数来预测该大楼是否在举办

【火炉炼AI】深度学习005-简单几行Keras代码解决二分类问题

[火炉炼AI]深度学习005-简单几行Keras代码解决二分类问题 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2, Keras 2.1.6, Tensorflow 1.9.0) 很多文章和教材都是用MNIST数据集作为深度学习届的"Hello World"程序,但是这个数据集有一个很大的特点:它是一个典型的多分类问题(一共有10个分类),在我们刚刚开始接触深度学习时,我倒是觉得