BRISK: Binary Robust Invariant Scalable Keypoints

void BriskScaleSpace::constructPyramid(const cv::Mat& image){ // set correct size:
pyramid_.clear(); // fill the pyramid:
pyramid_.push_back(BriskLayer(image.clone()));
if(layers_>){
pyramid_.push_back(BriskLayer(pyramid_.back(),BriskLayer::CommonParams::TWOTHIRDSAMPLE));
}
const int octaves2=layers_; for(uint8_t i=; i<octaves2; i+=){
pyramid_.push_back(BriskLayer(pyramid_[i-],BriskLayer::CommonParams::HALFSAMPLE));
pyramid_.push_back(BriskLayer(pyramid_[i-],BriskLayer::CommonParams::HALFSAMPLE));
}
}
__inline__ bool BriskScaleSpace::isMax2D(const uint8_t layer,
const int x_layer, const int y_layer){
const cv::Mat& scores = pyramid_[layer].scores();
const int scorescols = scores.cols;
uchar* data=scores.data + y_layer*scorescols + x_layer;
// decision tree:
const uchar center = (*data);
data--;
const uchar s_10=*data; //
if(center<s_10) return false;
data+=;
const uchar s10=*data; //
if(center<s10) return false;
data-=(scorescols+);
const uchar s0_1=*data; //
if(center<s0_1) return false;
data+=*scorescols;
const uchar s01=*data; //
if(center<s01) return false;
data--;
const uchar s_11=*data; //
if(center<s_11) return false;
data+=;
const uchar s11=*data; //
if(center<s11) return false;
data-=*scorescols;
const uchar s1_1=*data; //
if(center<s1_1) return false;
data-=;
const uchar s_1_1=*data;//
if(center<s_1_1) return false; /*8 3 7
1 0 2
5 4 6*/ // reject neighbor maxima
std::vector<int> delta;
// put together a list of 2d-offsets to where the maximum is also reached
if(center==s_1_1) { //
delta.push_back(-);
delta.push_back(-);
}
if(center==s0_1) { //
delta.push_back();
delta.push_back(-);
}
if(center==s1_1) { //
delta.push_back();
delta.push_back(-);
}
if(center==s_10) { //
delta.push_back(-);
delta.push_back();
}
if(center==s10) { //
delta.push_back();
delta.push_back();
}
if(center==s_11) { //
delta.push_back(-);
delta.push_back();
}
if(center==s01) { //
delta.push_back();
delta.push_back();
}
if(center==s11) { //
delta.push_back();
delta.push_back();
}
const unsigned int deltasize=delta.size();
if(deltasize!=){
// in this case, we have to analyze the situation more carefully:
// the values are gaussian blurred and then we really decide
data=scores.data + y_layer*scorescols + x_layer;
int smoothedcenter=*center+*(s_10+s10+s0_1+s01)+s_1_1+s1_1+s_11+s11;
for(unsigned int i=; i<deltasize;i+=){
//这里把左上角作为中心点进行平滑不知道是何意?
data=scores.data + (y_layer-+delta[i+])*scorescols + x_layer+delta[i]-;
int othercenter=*data;
data++;
othercenter+=*(*data);
data++;
othercenter+=*data;
data+=scorescols;
othercenter+=*(*data);
data--;
othercenter+=*(*data);
data--;
othercenter+=*(*data);
data+=scorescols;
othercenter+=*data;
data++;
othercenter+=*(*data);
data++;
othercenter+=*data;
if(othercenter>smoothedcenter) return false;
}
}
return true;
}
a.BRISK使用固定的样本模式点,而且是以R为半径围绕关键点周围的圆进行均匀取样。因此特定的高斯核平滑不会突然地扭曲亮度内容的信息(模糊邻近的两个采样点的亮度,从而保证亮度平滑过渡)
b.与两两组成的点对相比,BRISK显著的减少了采样点的数量(例如,单个的样本点参与了更多的比较),限制了亮度查找表的复杂度
c.这里的比较是受到空间的限制的,所以亮度的改变仅仅只是需要局部一致性就可以了。
1.利用least square进行曲线拟合中的参数计算

3.<BRISK: Binary Robust Invariant Scalable Keypoints> Stefan Leutenegger, Margarita Chli and Roland Y. Siegwart
BRISK: Binary Robust Invariant Scalable Keypoints的更多相关文章
- 【特征匹配】BRISK原文翻译
原文:Stefan Leutenegger, Margarita Chli et al.<BRISK: Binary Robust Invariant Scalable Keypoints> ...
- opencv::Brisk检测与匹配
Brisk(Binary Robust Invariant Scalable Keypoints)特征介绍 构建尺度空间 特征点检测 FAST9-16寻找特征点 特征点定位 关键点描述子
- Computer Vision_33_SIFT:TILDE: A Temporally Invariant Learned DEtector——2014
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- 【特征检测】BRISK特征提取算法
[特征检测]BRISK特征提取算法原创hujingshuang 发布于2015-07-24 22:59:21 阅读数 17840 收藏展开简介 BRISK算法是2011年ICCV上< ...
- opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...
- (1)RGB-D SLAM系列- 工具篇(硬件+关键技术)
/*************************************************************************************************** ...
- OpenCV特征点提取----Fast特征
1.FAST(featuresfrom accelerated segment test)算法 http://blog.csdn.net/yang_xian521/article/details/74 ...
- 图像局部显著性—点特征(SIFT为例)
基于古老的Marr视觉理论,视觉识别和场景重建的基础即第一阶段为局部显著性探测.探测到的主要特征为直觉上可刺激底层视觉的局部显著性--特征点.特征线.特征块. SalientDetection 已经好 ...
- Computer Vision_33_SIFT:Remote Sensing Image Registration With Modified SIFT and Enhanced Feature Matching——2017
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
随机推荐
- 从C++转向Java的第一课
序:计算机语言的学习,最快捷的方法是从一种语言映射到另一种语言.Java和C++作为最通用的面相对象高级语言,不论从语法或者编程上都极具相似性和可效仿行,这里的可效仿包括——语法理解可效仿和编程规范可 ...
- Selenium 2 入门
在多个浏览器中进行 Web 应用程序的端到端功能测试 Selenium 是一款有名的 Web 应用程序测试框架,用于进行功能测试.新版本 Selenium 2 结合了 Selenium 1 和 Web ...
- 黑马程序员——【Java高新技术】——类加载器
---------- android培训.java培训.期待与您交流! ---------- 一.概述 (一)类加载器(class loader) 用来动态加载Java类的工具,它本身也是Java类. ...
- SpringMVC之入门
Spring MVC简介 Spring MVC:Spring MVC也叫Spring Web MVC,属于表现层框架,是Spring中的一份子. Spring MVC执行流程图 第一个SpringMV ...
- Java(五)
♥作业1: 显示指定路径所有文件及实现文件筛选.智能监控,程序能自动在下拉菜单生成任意路径下文件所有尾缀. 代码内注释内容为步骤与整体思路 import java.awt.BorderLayout ...
- XML代码生成器——XMLFACTORY 简介(四)
XML代码生成器——XMLFACTORY 简介(四) 这一篇我们讲“类属性”页签的配置功能,您将了解到:如何为元素子值指定类属性的名称,数据类型,及容器类型. 如果,你没看过这个系列的第一篇文章,请先 ...
- 设置ubuntu 下git 的用户名和邮箱
设置ubuntu 下git 的用户名和邮箱 摘自 慢慢修远路,上下求索心http://yanshaozhi.iteye.com/blog/386752 虽然我没看怎么明白 但我用第一总方法就设置好了 ...
- android-文件存储的使用
Android提供了5种方式存储数据: 1.使用SharedPreferences存储数据: 2.文件存储数据: 3.SQLite数据库存储数据: 4.使用ContentProvider存储数据: 5 ...
- iOS RSA加密解密及签名验证
1.首先要下载openssl,这个不用说,直接官网下载或者用brew install openssl下载 2.终端生成私钥密钥 2.1生成私钥 openssl genrsa - 2.2生成密钥 ope ...
- getElementById,getElementsByName,getElementsByTagName的区别
1.getElementById 作用:一般页面里ID是唯一的,用于准备定为一个元素 语法: document.getElementById(id) 参数:id :必选项为字符串(String) 返回 ...