图像处理(十五)ORB特征检测

ORB特征检测有直接的API,可以直接调用

ORB原理:分三部
一、提取特征点:ORB特征点其实就是边界,灰度变化较大的地方,因为ORB特征点的定义就是与周围点不一样的点,与转换成LBP图谱类似,以某点为圆心,选择合适的点数作为比较值,在总数目范围内规定一个阈值,不一样的点数超过这个阈值,即为特征点。

二、获取特征点描述:ORB特征点描述与LBP特征图谱类似,都是以二进制表示,选点方式也是一样,圆形,只是取值方式不同,LBP是以圆心为阈值,ORB是横纵坐标比较,比如横坐标比纵坐标大即为1

三、特征点匹配
特征点匹配是建立在多幅图的基础上,比较互相之间的特征点描述,匹配的目的是对特征点进行筛选,选出符合要求的特征点
简单的实现代码如下:

import numpy as np
import cv2

path = 'test.jpg'
image1 = cv2.imread(path,0)
image2 = cv2.imread('timg.jpg',0)

#创建检测器
detector = cv2.ORB_create()

#提取特征点和对特征点进行描述
key_point1,des1 = detector.detectAndCompute(image1,None)
key_point2,des2 = detector.detectAndCompute(image2,None)

#创建匹配器
mather = cv2.BFMatcher(cv2.NORM_HAMMING)
#进行匹配
match = mather.match(des1,des2)

image3 = cv2.drawMatches(image1,key_point1,image2,key_point2,match[:30],image2,flags=2)

cv2.imshow('test',image3)
cv2.imwrite('orb.jpg',image3)
cv2.waitKey(0)

图像处理(十五)ORB特征检测_第1张图片

你可能感兴趣的:(图像处理,ORB特征检测)