OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配项
AKAZE 局部特征匹配

上一教程: 平面目标检测
下一教程: AKAZE 和 ORB 平面跟踪

原始作者Fedor Morozov
兼容性OpenCV >= 3.0

介绍

在本教程中,我们将学习如何使用 AKAZE [10] 本地特征检测和匹配两张图像上的特征点。我们将在一对给定单应矩阵的图像上找到特征点,匹配它们并统计内点(即符合给定单应性的匹配项)的数量。

您可以在此处找到本示例的扩展版本:https://github.com/pablofdezalc/test_kaze_akaze_opencv

数据

我们将使用 牛津数据集涂鸦序列中第 1 和第 3 张图像。

单应性由一个 3x3 矩阵给出

7.6285898e-01 -2.9922929e-01 2.2567123e+02
3.3443473e-01 1.0143901e+00 -7.6999973e+01
3.4663091e-04 -1.4364524e-05 1.0000000e+00

您可以在 opencv/samples/data/ 中找到图像(graf1.pnggraf3.png)和单应性(H1to3p.xml)。

源代码

说明

  • 加载图像和单应性

这里,我们加载灰度图像。单应性存储在用 FileStorage 创建的 xml 中。

  • 使用 AKAZE 检测关键点并计算描述子

我们创建了 AKAZE 并检测并计算 AKAZE 的关键点和描述子。由于我们不需要蒙版参数,所以使用了noArray()

  • 使用蛮力匹配器查找 2-nn 匹配

我们使用汉明距离,因为 AKAZE 默认使用二进制描述子。

  • 使用 2-nn 匹配和比例准则查找正确的关键点匹配

如果最近匹配距离显著低于第二个最近匹配距离,则匹配正确(匹配明确)。

  • 检查我们的匹配是否符合单应性模型

如果从第一个关键点的投影到第二个关键点的距离小于阈值,则符合单应性模型。

我们为内点创建了新的匹配集,因为这是绘制函数所必需的。

  • 输出结果

这里,我们保存结果图像并打印一些统计数据。

结果

找到的匹配项

根据您的 OpenCV 版本,您应该获得与以下内容一致的结果

关键点 1: 2943
关键点 2: 3511
匹配:447
内点:308
内点比例:0.689038