OpenCV Python - 特征检测


在图像处理的背景下,特征是图像中关键区域的数学表示。它们是图像视觉内容的矢量表示。

特征使得对它们执行数学运算成为可能。各种计算机视觉应用包括目标检测、运动估计、分割、图像对齐等。

任何图像中的显着特征包括图像的边缘、角或部分。OpenCV支持Haris角点检测Shi-Tomasi角点检测算法。OpenCV 库还提供了实现SIFT(尺度不变特征变换)、SURF(加速鲁棒特征)和 FAST 算法以进行角点检测的功能。

Harris 和 Shi-Tomasi 算法是旋转不变的。即使图像旋转,我们也可以找到相同的角点。但当图像放大时,图像中的角点可能不再是角点。下图描述了同样的情况。

史托马西

D.Lowe 的新算法,尺度不变特征变换(SIFT) 提取关键点并计算其描述符。

这是通过以下步骤实现的 -

  • 尺度空间极值检测。
  • 关键点定位。
  • 定向作业。
  • 关键点描述符。
  • 关键点匹配。

就OpenCV中SIFT的实现而言,它从加载图像并将其转换为灰度开始。cv.SHIFT_create ()函数创建一个 SIFT 对象。

例子

调用它的detector()方法获取绘制在原始图像之上的关键点。下面的代码实现了这个过程

import numpy as np
import cv2 as cv
img = cv.imread('home.jpg')
gray= cv.cvtColor(img,cv.COLOR_BGR2GRAY)
sift = cv.SIFT_create()
kp = sift.detect(gray,None)
img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('keypoints.jpg',img)

输出

原始图像和绘制关键点的图像如下所示 -

这是原始图像

尺度空间

下面给出的图像是带有关键点的图像-

筛