百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

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

toyiye 2024-07-05 01:26 13 浏览 0 评论

【火炉炼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著,陶俊杰,陈小莉译

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码