- Gil Levi and Tal Hassner,The Open University of Israel,CVPR15,Gil’s blog有一系列讲binary特征的文章,记录了BRIEF、ORB、FREAK、BRISK。
- this feature won the CVPR 2015,OpenCV State of the Art Vision Challenge,in the Image Registration category. LATCH is now integrated into OpenCV 3.0,项目连接
- 阅读时间:2015-07-12~13
该算法是二值化特征描述方法的一个优化变种,通常的二值化特征描述主要经过计算特征点窗口内n个点对的比较值造成一个bit串,做为该特征点的特征描述子,这样的bit串特征描述子在图像匹配计算时能够经过同或计算汉明码,大大提升计算速度,可是点对的比较会有一个明显的缺点,就是受噪声影响较大,虽而后续的一些算法经过高斯模糊进行滤波,可是滤波后图像信息会有必定减小,创建在此基础上,做者提出了一种经过计算窗口内像素块的比较值造成bit串,同时做者也提出了如何定位像素块的方法。html
该特征的特色:web
假设特征点窗口内有3个块
算法
若须要256 bits长的特征描述子,则须要选择256个3像素块,每一个3像素块获得一个bit结果。svg
在像素块比较中须要计算像素块内各个像素点的值,所以计算前提是定位像素快,一个很小的特征窗口可以产生很是多的像素块的组合,有些像素块对图像匹配不重要,有些很是重要,本节主要介绍如何选择像素块的组合方式使得匹配结果最优。本文中像素块位置的肯定是经过有监督学习的方法进行。wordpress
首先构造一个训练数据集,该数据集来自Learning Local Image Descriptors Data,如下用LLIDD表明该数据集,LLIDD数据集主要对三个场景(Literty, Ntore Dame , Halp Dome)的3D场景构造图像中处理而来,首先经过Noah Snavely’s Photo Tourism算法计算3D构造图初始特征点,再经过立体深度地图匹配不一样图像只可以对应的特征点,而数据集则是特征点领域内64x64的图像块。同时创建标签文件,记录各个图像块是不是来自同一目标。本文做者在LLIDD数据集的基础上建立了一个50k的数据样本对,每对数据样本包括两个图像块,同时有一个标签表示两个图像块是否相同,最终数据集包括一半匹配一半不匹配的图像块。 性能
随机产生56k个3像素快,即
学习
特征描述计算耗时高于其余binary特征,低于非binary特征,如下是计算一个特征点时的耗时。
优化
匹配精度高于其余binary特征,低于非binary特征。ui
描述子计算伪代码:this
PatchSize = 7 * 7 // 图像块大小
BytesLength = 32 // 每一个特征描述子的长度 单位:Byte
descriptors = Mat(Keypoints.length, BytesLength, Byte) // 描述子初始化 为一个类型类Byte的
grayScale = convertToGray(img)
foreach keyPoint in Keypoints:
for i = 1 to BytesLength:
descriptors[k][i] = 0
for j = 0 to 7
get one tripet Pathes P1 P2 P3 their position
rotate the pixel in P1 P2 P3 to the direction of the Keypoint
compute the bit result: b = (P1-P2) > (P3-P2) ? 1 : 0
descriptors[k][i] += (Byte)b<<j