opencv ORB特征提取+匹配

一.ORB特征组成

//特征就是角点
//ORB特征具有速度快的优点,可以用于实时提取。
//ORB:FAST关键点+BRIEF 描述子
//FAST是一种角点,主要是检测局部像素灰度变化明显的地方,苏地块。FAST思想:如果一个像素与它邻域的像素差别较大,那他可能是角点。
//FAST提取步骤:

  1. 在图像中选取像素 p,假设它的亮度为 Ip。
  2. 设置一个阈值 T(比如 Ip 的 20%)。
  3. 以像素 p 为中心, 选取半径为 3 的圆上的 16 个像素点
  4. 选取的圆上,有连续N个点的灰度值大于Ip+T或小于Ip-T,则p可以被认为是关键点
    (N=9,11,12)
    //FAST提取角点过多,对原始的FAST角点计算Harris响应值,提取前N个最大响应值的角点。
    //FAST不具有方向信息。由于它固定取半径为3的圆,有尺度问题;
    1.scale:图像金字塔,对每一层检测角点
    2.rorate:灰度质心法,用圆的质心与几何中心得到向量即为关键点的方向。

//BRIEF 描述子:描述关键点周围像素的信息,(外观相似的特征应该有相似的描述子),采用二进制编码,取周围128个像素,当像素灰度值大于临近像素则为1,反之为0.由于FAST的改进,秒速自有有scale,rorate不变性.

//两种匹配模式:暴力匹配,快速最近邻匹配。
1.暴力匹配:测量描述子之间的距离(通常采用汉明距离和欧氏距离),汉明距离是采用BRIEF二进制描述子进行匹配,浮点型描述子用欧式距离匹配。
2.暴力匹配产生的特征点较多,采用FLANN方法可以提高质量,降低计算量。

//读取图像,加载ORB模块

//读取图像
	Mat img_1 = imread("C:\\Users\\Administrator\\Pictures\\1.png");
	Mat img_2 = imread("C:\\Users\\Administrator\\Pictures\\2.png");
	std::vector<KeyPoint> keypoints_1, keypoints_2
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值