OpenCV(24)角点检测3 -- ORB
目录
一、基础理论
1、原理
2、BRIEF算法介绍
1、介绍
2、过程
3、API介绍
1、ORB_create函数(初始化orb检测器)
2、orb.detectAndCompute函数(检测关键点并计算)
3、cv.drawKeypoints函数(绘制关键点)
二、代码
三、效果
一、基础理论
1、原理
ORB算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋转不变性。具体流程描述如下:
构造尺度金字塔,金字塔共有n层,与SIFT不同的是,每一层仅有一幅图像。第s层的尺度为:
(每层图像大小和尺度有关)
1、在不同的尺度上利用Fast算法检测特征点,采用Harris角点响应函数,根据角点的响应值排序,选取前N个特征点,作为本尺度的特征点。
2、计算特征点的主方向,计算以特征点为圆心,半径为r的圆形邻域内的灰度质心位置,将从特征点位置到质心位置的方向做特征点的主方向。
计算方法:
质心位置:
主方向:
2、BRIEF算法介绍
1、介绍
BRIEF是一种特征描述子提取算法,并非特征点的提取算法,一种生成二值化描述子的算法,不提取代价低,匹配只需要使用简单的汉明距离(Hamming Distance)利用比特之间的异或操作就可以完成。因此,时间代价低,空间代价低,效果还挺好是最大的优点。
2、过程
1、图像滤波︰原始图像中存在噪声时,会对结果产生影响,所以需要对图像进行滤波,去除部分噪声。
2、选取点对:以特征点为中心,取S*S的邻域窗口,在窗口内随机选取N组点对, 一般N=128,256,512,默认是256,关于如何选取随机点对,提供了五种形式,结果如下所示:
3、API介绍
1、ORB_create函数(初始化orb检测器)
cv2.ORB_create(nfeatures = 500,scaleFactor = 1.2,nlevels = 8,edgeThreshold = 31,firstLevel = 0,WTA_K = 2,scoreType = HARRIS_SCORE,patchSize = 31,fastThreshold = 20)
参数:
nfeatures:特征点最大数量
返回:
orb对象
orb = cv.ORB_create()
2、orb.detectAndCompute函数(检测关键点并计算)
kp , des= orb.detectAndCompute(img, None)
参数:
img:进行关键点检测的图像返回:
kp:关键点信息,包括位置,尺度,方向信息
des:关键点描述符,每个关键点BRIEF特征向量,二进制字符串kp , des= orb.detectAndCompute(img, None) #返回关键点信息及描述符
3、cv.drawKeypoints函数(绘制关键点)
cv.drawKeypoints (image,keypoints,outputimage, color,flags)
img = cv.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)
二、代码
# ORB角点检测
import cv2 as cvimg = cv.imread('Resource/1.jpg')
cv.imshow("img", img)# 1、初始化ORB检测器
orb = cv.ORB_create(200)
# 2、用ORB寻找关键点
kp , des= orb.detectAndCompute(img, None) #返回关键点信息及描述符
# 3、仅绘制关键点的位置,而不绘制大小和方向
dst = cv.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)cv.imshow("dst", dst)cv.waitKey(0)
三、效果
OpenCV(24)角点检测3 -- ORB相关推荐
- MFC+OPENCV实现角点检测
MFC+OPENCV实现角点检测: // 角点检测 // 根据<基于OpenCV的计算机视觉技术实现>#define max_corners 200; // 限定的最大角点数IplImag ...
- OpenCV ChArUco角的检测
OpenCV ChArUco角的检测 ChArUco角的检测 目标 源代码 ChArUco Board创建 ChArUco板检测 拍摄输入图像 读取相机校准参数(仅用于相机校准检测) 检测标记 ChA ...
- 【opencv】角点检测——虚线表格
[opencv]角点检测--虚线表格 处理对象--虚线表格 处理方法--角点检测 Harris角点检测 函数解读 处理结果 处理对象--虚线表格 把之前做研电赛的东西做一点小的分享,先给大家看一下所处 ...
- Opencv java 角点检测 preCornerDetect(15)
之前我们讲过一节的角点检测,是用的cornerHarris 这个方法,今天我们介绍另外的一种方法preCornerDetect 进行角点检测 效果 首先我们看一下角点检测的效果: 代码 那么代码上应该 ...
- OpenCV Fast角点检测
FAST是一种用于角点检测的算法,该算法的原理是取图像中检测点,以改点为圆心的周围邻域内像素点判断监测点是否为角点. OpenCV中的FAST检测算法是用传统方法实现的. 实例化fast fast = ...
- opencv 实现角点检测 Shi-Tomasi角点检测
角点检测概述 角点检测概述 Harris角点检测算法手动实现 Harris角点检测算法手动实现 opencv中使用Harris角点检测 opencv中使用Harris角点检测 opencv中使用 Sh ...
- OpenCV实现角点检测(cornerHarris)
1.概述 案例:使用cornerHarris实现角点检测,并调节其参数看看不同参数下的不同效果 技术:Qt+C+++OpenCV 角点检测函数介绍: cornerHarris(src,dst,bloc ...
- opencv harris 角点检测
一.图像特征的分类 [OpenCV入门教程之十六]OpenCV角点检测之Harris角点检测_[浅墨的游戏编程Blog]毛星云(浅墨)的专栏-CSDN博客_基于轮廓曲线的角点检测 下面部分图像来自与B ...
- opencv棋盘格角点检测原理总结
第一步,局部平均自适应阈值化方法对亮度不均匀情况适应性强,因此用该方法对图像二值化,均衡化后得到了理想的门限,效果如图2所示. 第二步,图像膨胀分离各个黑块四边形的衔接,由于膨胀的是白色像素点,因此能 ...
最新文章
- javascript 显示时间
- 4dda在linux中的意思,Evvail | MaxQuant-蛋白质组DDA数据分析金标准 | Omics - Hunter
- 平凡的世界和你我 (武惠良与杜丽丽)
- html文本框自动赋值,js给文本框赋值 value与innerHTML
- spring学习(8):log4j.properties 详解与配置步骤
- JAVA Swing 事件监听
- 公共方法之运算符,len,del,max,min,range,enumerate
- 【动态规划】路径dp:蓝桥2020: 数字三角形
- ASM磁盘超过disk_repair_time导致磁盘状态为forcing
- Java基础常见笔试题总结
- AIDA64 硬件规格、系统信息查询工具附带序列号
- c语言自评报告怎么写,大学生学生自评报告怎么写
- 图算法图神经网络归纳总结
- 成品系统搭建 一周就可以上线运营
- Android虚拟机、模拟器识别
- 由祖冲之圆周率洞悉——古中国数学家的计算力真是惊人
- 微软官方工具_微软官方英文写作在线工具,完全免费
- mysql date 24小时制_SpringBoor连接mysql数据库取数据库中时间格式是12小时制的时间,如何显示成24小时制...
- vue-cl 有一些静态资源不想经过webpack打包那么应该public 下面
- Win10 1809美化