cv2 orb 图像拼接_OpenCV图像处理- 特征点检测、描述子匹配

本文详细介绍了ORB(Oriented Fast and Rotated BRIEF)和SIFT特征检测算法,包括它们的概述、函数用法和示例代码。同时,讨论了特征描述子匹配,包括BRIEF、暴力匹配、KNN匹配和FLANN匹配,并给出了基于描述子匹配的已知对象定位方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORB 特征关键点检测

概述

✔️ ORB - (Oriented Fast and Rotated BRIEF)算法是基于FAST特征检测与BRIEF特征描述子匹配实现。

✔️ 相比BRIEF算法中依靠随机方式获取而值点对,ORB通过FAST方法,FAST方式寻找候选特征点方式是假设灰度图像像素点A周围的像素存在连续大于或者小于A的灰度值,选择任意一个像素点P,假设半径为3,周围16个像素表示,如下图:

10f9b9a3f132572b930037cf2dee90cb.png
  1. 如上图,像素点P被标记为候选特征点、通常N取值为9、12,上图N=9。
  2. 为了简化计算,我们可以只计算1、9、5、13四个点,至少其中三个点满足上述不等式条件,即可将P视为候选点。
  3. 通过阈值进行最终的筛选即可得到ORB特征点。

函数

orb = cv2.ORB_create(
    nfeatures = 500,
    scaleFactor = 1.2f,
    nlevels = 8,
    edgeThreshold = 31,
    firstLevel = 0,
    WTA_K = 2,
    scoreType = HARRIS_SCORE,
    patchSize = 31,
    fastThreshold = 20 )
输入
  • nfeatures --> 最终输出最大特征点数目;
  • scaleFactor --> 金字塔图像上采样比率;
  • nlevels --> 高斯金字塔层数;
  • edgeThreshold --> 边缘阈值;
  • firstLevel= 0 --> 指定第一层的索引值;
  • WTA_K --> 这个是跟BRIEF描述子用的;
  • scoreType --> 对所有的特征点进行排名用的方法;
  • patchSize --> 用于计算BRIEF描述子的特征点领域大小。

示例代码

import cv2 as cv
import numpy as np

src = cv.imread("test.jpg")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
# 创建orb检测器
orb = cv.ORB_create()
kps = orb.detect(src)
# -1表示随机颜色
result = cv.drawKeypoints(src, kps, None, -1, cv.DrawMatchesFlags_DEFAULT)
cv.imshow("result", result)
cv.imwrite('orb_result.jpg', result)
cv.waitKey(0)
cv.destroyAllWindows()

833055001e25f5b2144d76060e64d672.png
ORB_result

SIFT 特征关键点检测

概述

✔️ SIFT特征是非常稳定的图像特征,在图像搜索、特征匹配、图像分类检测等方面应用十分广泛,但是它的缺点也是非常明显,就是计算量比较大,很难实时,所以对一些实时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值