机器学习图像特征提取—SIFT特征提取原理及代码实现

这篇具有很好参考价值的文章主要介绍了机器学习图像特征提取—SIFT特征提取原理及代码实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 SIFT简介

2 SIFT原理及特点

2.1 SIFT算法特点

2.2 SIFT特征检测

3 SIFT代码实现


1 SIFT简介

       SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。

      SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。

2 SIFT原理及特点

2.1 SIFT算法特点

   SIFT算法具有如下一些特点:

(1)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

(2) 区分性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

(3) 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

(4)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

(5)可扩展性,可以很方便的与其他形式的特征向量进行联合。

2.2 SIFT特征检测

  SIFT特征匹配主要包括2个阶段:

  第一阶段:SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。

  第二阶段:SIFT特征向量的匹配。

  SIFT特征的生成一般包括以下几个步骤:

(1) 构建尺度空间,检测极值点,获得尺度不变性。

(2) 特征点过滤并进行精确定位。

(3)为特征点分配方向值。

(4)生成特征描述子。

      具体可以参考博客SIFT特征提取分析_Rachel-Zhang的博客-CSDN博客_sift特征提取 ,他这里写的非常的详细。

3 SIFT代码实现

(1)这部分主要是提取图像中的SIFT特征点,并在原图中绘制出来。

import cv2
img_path = r'./img1.jpg'
img = cv2.imread(img_path)
# print(img.shape)
# img = cv2.resize(img,(136 * 3,512 * 3))
cv2.imshow("original",img)

gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

#使用SIFT
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)

cv2.drawKeypoints(image = img,
                  outImage = img,
                  keypoints = keypoints,
                  flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,
                  color = (51,163,236))
cv2.imshow("SIFT",img)

img = cv2.imread(img_path)
# img = cv2.resize(img,(136 * 3,76 * 3))

cv2.waitKey(0)
cv2.destroyAllWindows()

(2)这部分代码是提取图像中的SIFT特征点,并利用PCA(主成分分析)进行降维,并提取特征值。注:SIFT提取出来的特征是一个128维的矩阵,我在这里利用PCA将其降成100维。

import cv2
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

img_path = r'./photo/2-5-1250-1.bmp'
img = cv2.imread(img_path)
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#使用SIFT
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)
# print(descriptor.shape)
# m,n=descriptor.shape
# print(m,n)
descriptor = StandardScaler().fit_transform(descriptor)
pca = PCA(n_components = 100)
pca.fit(descriptor)
print(pca.singular_values_)#查看特征值
print(pca.components_)#打印查看特征值对应的特征向量
# print(pca.components_.shape)

cv2.drawKeypoints(image = img,
                  outImage = img,
                  keypoints = keypoints,
                  flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,
                  color = (255,0,255))
cv2.imshow("SIFT",img)

cv2.waitKey(0)
cv2.destroyAllWindows()

参考来源:SIFT特征提取分析_Rachel-Zhang的博客-CSDN博客_sift特征提取

Python计算机视觉——SIFT特征提取与检索_-pufferflip的博客-CSDN博客_sift特征提取python文章来源地址https://www.toymoban.com/news/detail-455474.html

到了这里,关于机器学习图像特征提取—SIFT特征提取原理及代码实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

    目录 1 颜色特征 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 Lab色彩空间 2 使用opencv-python对图像颜色特征提取并绘制直方图 2.1 RGB颜色特征和直方图 2.2 HSV颜色特征和直方图 2.3 Lab颜色特征和直方图 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以

    2024年02月08日
    浏览(59)
  • Opencv C++ SIFT特征提取(单图像,多图像)+如何设置阈值+如何对文件夹进行批处理+如何设置掩膜裁剪影像

    SIFT(Scale-Invariant Feature Transform)是一种用于图像处理和计算机视觉的特征提取算法。由David Lowe于1999年首次提出,它是一种非常有效的局部特征描述符,具有尺度不变性、旋转不变性和对部分遮挡的鲁棒性。 SIFT特征提取的主要步骤包括: 尺度空间极值检测(Scale-Space Extrem

    2024年01月19日
    浏览(44)
  • 基于SIFT图像特征识别的匹配方法比较与实现

    目前常用的匹配器有 BFMatcher and FlannBasedMatcher 1.1 BFMatcher BFMatcher 全称是 Brute-Force Matcher (直译即为暴力匹配器) 大致原理: 对于 img1 中的每个描述符, BFMatcher 将其与 img2 中的所有描述符进行比较;它计算两个描述符之间的距离度量(例如,欧几里得距离或汉明距离,默认使

    2024年02月09日
    浏览(47)
  • 机器视觉(八):图像特征提取

    目录: 机器视觉(一):概述 机器视觉(二):机器视觉硬件技术 机器视觉(三):摄像机标定技术 机器视觉(四):空域图像增强 机器视觉(五):机器视觉与世界杯 机器视觉(六):频域图像增强 机器视觉(七):图像分割 机器视觉(八):图像特征提取 机器视觉

    2024年02月09日
    浏览(67)
  • 利用深度学习技术实现手机类目商品图像特征提取与分类

    感谢您提供如此详细的任务描述和要求。作为一位世界级的人工智能专家、程序员和软件架构师,我将全力以赴,以专业的技术语言和深入的洞见,为您撰写这篇题为\\\"利用深度学习技术实现手机类目商品图像特征提取与分类\\\"的技术博客文章。 让我们开始吧。 在电子商务日益兴盛

    2024年04月13日
    浏览(42)
  • 【机器学习】特征工程 - 字典特征提取

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 特征工程就是从 「原始数据」 中提取 「特征」 ,以供 「算法」 和 「模型

    2024年02月11日
    浏览(50)
  • 【特征提取】Hog特征原理简介与代码实践

    在【模式识别】SVM实现人脸表情分类一文中,我曾使用Hog特征+SVM的方式实现表情分类,但对于Hog特征的原理并未做深入整理。此篇将结合 scikit-image 来简单分析Hog特征的原理和维度关系。因为没看过原论文,因此自己的理解可能会有偏差,如有错误,欢迎评论区指正。 在进入

    2023年04月21日
    浏览(44)
  • opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()

    前面我们已经了解了Harris函数来进行角点检测,因为角点的特性,这些角点在图像旋转的时候也可以被检测到。但是,如果我们放大或缩小图像时,就可能会丢失图像的某些部分,甚至有可能增加角点的质量。这种损失的现象需要一种与图像比例无关的角点检测方法来解决。

    2024年02月11日
    浏览(52)
  • 【使用深度学习的城市声音分类】使用从提取音频特征(频谱图)中提取的深度学习进行声音分类研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 使用深

    2024年02月16日
    浏览(40)
  • 【机器学习】特征工程 - 文本特征提取TfidfVectorizer

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 对 「文本」 进行特征提取时,一般会用 「单词」 作为特征,即特征词。

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包