Advertisement

openCV study-Module2_特征检测和 描述符 及特征匹配

阅读量:

https://docs.opencv.org/3.3.0/d6/d00/tutorial_py_root.html

https://github.com/makelove/OpenCV-Python-Tutorial


Intro:

  • 理解什么是特征点?

小孩子玩拼图的时候,依据的是什么,依据的是那些显著的图片特征。下图:

AB, 对应于平面上的形状 flat(如右图所示为蓝色)。--在多个地方出现时, 难以精确地 确定位置.

CD, 即边界edge特徵。(黑度)--水平与垂直之间存在显著区别,并且属于容易辨别的特征。

EF,就是corner特征(红色)--基本上独一无二。可能很容易定位。

ABCDEF,这些就是特征点

feature_building.jpg
feature_simple.png

换言之:

  • 如何描述特征点?

通过计算机语音系统进行描述的方法上文提到了一些特征点--例如使用数据结构等。其描述方法被称为feature description

具有推广的能力(不受图片的限制)

  • 如何找到特征点?

在图片中,寻找(定位)特征点的过程--feature detection. 可以有很多种方法。

特征描述---输入端---->特征检测算法(算法)---->输出端---特征位置


CV_Lesson28_harris角点检测.py--corner detector

数学原理:https://www.cnblogs.com/klitech/p/5779600.html HARD-TBD

设有N阶矩阵A,那么矩阵A的迹(用

A被其特征值代表为它们之和;这也被称为矩阵A主对角线元素之和。

对于n阶方阵A(其中n\geq 1),其行列式的计算通常写作\det(\mathbf{A})\left|\mathbf{A}\right|。而对于2\times 2矩阵的具体形式,则有以下表达式:

超像素-目前只了解了。

cornerSubPix


CV_Lesson29_Shi-Tomasi Corner Detector.py

Theory -TBD

In the preceding chapter, we introduced the Harris Corner Detector. In 1994, J. Shi and C. Tomasi presented a slight enhancement to this method in their paper titled Good Features to Track, demonstrating improved performance compared to the original approach. The scoring mechanism (评分机制) underlying the Harris Corner Detector is formulated as follows:

If its value exceeds a certain threshold, it is defined as a corner. By analogy to the approach employed in the Harris Corner Detector, plotting the result in λ₁−λ₂ space yields an image depicted below.

shitomasi_space.png

Looking at the figure, you observe that only if λ₁ and λ₂ exceed a certain threshold value, they are classified as a corner area (green region).

这个函数很适合在目标跟踪中使用

算法流程:

  1. 求取每个像素的空间梯度。
  2. 采用打分公式筛选出强度高于最大阈值(%)的像素。
  3. 去除两个欧式距离过于接近的corner候选点,并按降序排序。

输出 corner 坐标


简介 SIFT(Scale-Invariant Feature Transform)及其理论基础 在尺度空间中的不变性

SIFT算法是一种基于二维差分算子构建局部特征的方法,在图像处理领域具有重要应用价值

CV_Lesson30_SIFT_intro.py

图片通过变换(transfrom)后,某些特征变成不变的特点---

比如, 旋转不变, 平移不变,缩放不变仿射、投影 变化 等等-- 这些都叫 空间尺度

回顾前面关于Harris 角点检测算法的内容。旋转后的图像仍能有效识别其特征;然而在进行缩放操作时可能会遇到问题。当对图像进行缩放时,在某些情况下原来看似明显的角点区域可能会变得不再符合严格的角点定义。

回顾前面关于Harris 角度检测算法的内容。旋转后的图像仍能有效识别其特征;然而在进行缩放操作时可能会遇到问题。当对图像进行缩放时,在某些情况下原来看似明显的角度区域可能会变得不再符合严格的角度定义。

sift_scale_invariant.jpg

paper:--2004, D.Lowe , University of British Columbia developed a novel algorithm called SIFT in his research work on computer vision. The algorithm is described in his influential paper titled Distinctive Image Features from Scale-Invariant Keypoints . The SIFT method identifies key points within images and calculates their feature descriptors to achieve robustness and accuracy in various computer vision applications.

此算法有其专利,专利拥有者为英属哥伦比亚大学。

核心概念在于图像信息处理模型中引入一个被视作尺度的参数变量。通过连续变化这一参数值可获得多个尺度下的图像表示序列。针对这些序列实施主要轮廓提取操作并将其用作一种特征向量来实现边缘检测、角点识别以及在不同分辨率下进行特征提取等基础任务。

该方法将单一尺度的空间信息处理技术纳入了 基于动态变化的结构模型 中,并能更好地提取图像的本质特征。各个层次的空间特征中,随着观察距离的变化,图像的模糊性逐步增强,并能够模拟人眼在观察物体时随着距离的变化而形成的物像过程。

该尺度空间遵循视觉不变性的特性。从视觉系统的角度来看, 当物体所处环境的光照条件发生变化时, 视网膜感知到的图像亮度和对比度会发生变化, 因此要求该算子在分析图像时不依赖于图像亮度和对比度的变化, 即具备灰度不变性和对比度不变性。另一方面; 当观察者与物体之间的相对位置发生变化时, 视网膜所感知的图像的位置、大小等属性会随视角不同而改变, 因此要求该算子在分析图像时不依赖于物体相对于观察者的具体位置信息, 即该算子具有平移、缩放以及仿射变换下的不变特性

理论:SIFT算法在一定程度上可解决:

1. 目标的旋转、缩放、平移(RST)

2. 图像仿射/投影变换(视点viewpoint)

3. 光照影响(illumination)

4. 目标遮挡(occlusion)

5. 杂物场景(clutter)

6. 噪声

SIFT算法的核心在于 其主要过程是在不同尺度的空间中进行特征定位与方向计算。该算法通过搜索到稳定且具代表性的关键点来构建图像描述符,并将这些关键点定位于图像的不同区域中以提高识别效果和鲁棒性。这些稳定的关键点包括但不限于角质交界处、边缘线中断处以及暗纹与明纹交界的位置等典型特征区域。

<> 写的有点乱!TBC

算法steps:

  • 通过缩放下产生图像金字塔,在每一层上执行五组(典型)不同参数的Gaussian blur处理(涉及不同的缩放比例和焦点范围FOV)。
    • 计算X和Y方向上的梯度极值点是一种复杂的数学操作(DOG差分高斯)。
    • 通过直方图统计的方法确定梯度的主要方向,并使用arctan函数计算|x,y|的最大值来表示该方向。
    • 生成完整的特征描述符包含尺度、方向和特征点位置的信息。

优缺点:

SIFT在图像的不变特征提取方面展现出卓越的能力,在这一领域表现出了无与伦比的优势;然而并非尽善尽美,在这一过程中仍然存在一些不足之处。

1. 实时性不高。太慢

2. 有时特征点较少。

3. 对边缘光滑的目标无法准确提取特征点。

等缺点,在如图7.1所示的情况下,并不能有效地处理模糊图像以及边缘平滑处理效果不佳的情况。在提取目标特征时发现,在处理模糊图像以及边缘平滑效果不佳的情况下提取出的特征点数量明显不足,并且对于圆形目标检测能力非常有限。近年来已有多种改进方案出现,并且其中最具代表性的算法包括 SURF 和 CSIFT 等


SURF (Speeded-Up Robust Features) 介绍--加速版的SITF-

CV_Lesson31_SURF_intro.py

原理:TBC

https://www.cnblogs.com/gfgwxw/p/9415218.html

https://www.cnblogs.com/jinjidexuetu/p/90ace4e8de574e3d5f4e6ac16a0dc157.html


CV_Lesson32_FAST_角点检测.py

现有的这些算法运行速度较慢

缺点:-不计算方向!

FAST Algorithm for Corner Detection 原理:TBC

<>


CV_Lesson33_BRIEF.py

BRIEF (Binary Robust Independent Elementary Features)

由于SIFT算法的特征提取是由128个浮点数构成的内存密集型操作,在实际应用中容易造成内存占用过大问题。(该操作导致在进行特征匹配时需要额外的时间消耗,并且这种额外的时间开销会导致系统性能下降)

需要压缩,降维度。 降成2进制0/1串表示,也易于特征匹配。

只提供计算desciription 的算法,不同检测特征点的算法--

因此需要用SIFT,SURF 来detect, 然后用Brief来计算

原理介绍:

<>

优点

该算法在计算效率上表现出色,在SLAM应用中实现了实时性。
二进制描述子的存储与匹配过程更为便捷,并且匹配效果显著。

缺点

  1. 易受噪声影响(基于二进制编码通过具体像素比较判断)
  2. 不具备抗旋转特性
  3. 缺乏尺寸不变性

CV_Lesson33_ORB.py

由于SIFT,SURF 都是有版权的算法。如果使用每年都需要付钱,

OPENcv 提供了一个免费的版本 ORB--Oriented FAST and Rotated BRIEF

采用基于全景拼接的方法进行图像融合。 ORB is an excellent choice in energy-efficient devices for panorama stitching (全景拼接) as noted by researchers.


回顾:

至此,在深入学习过程中已经入门掌握了几种典型的 图像特征提取与分析 算法(其中以角点检测为主),这些方法在实际应用中展现出良好的特性。值得注意的是,尺度不变性在该领域具有关键性作用。

接下来我们将探讨如何通过这些特征描述符来进行feature\ matching


CV_Lesson34_feaature match.py

OPEN CV提供了两种特征匹配算法:Brute-Force Matcher(暴力匹配法)FLANN-based Matcher(基于FLANN的方法)。BF-Matcher:其原理非常直接——通过距离公式计算待匹配的两个描述符特征,并返回那些具有较小距离值的描述符对。


使用特征匹配和单应性查找复杂 对象TBD

CV_Lesson35_feaature match+单应性.py

全部评论 (0)

还没有任何评论哟~