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上引用次数比较多的文献.有一些刚刚出版的 ...
随机推荐
- Android Studio运行SlidingView报错 FloatMath函数
1,错误信息时这样的(图片百度的,但是提醒的是一样的) 我们点击这个错误提示,就会跳到出错的地方 2,开始的时候觉得很蛋疼,因为这个SlidingView是从别处导过来的,没什么问题把...就很久就 ...
- JSP 甜点
JSP cookies Cookies是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookies的支持. 通常有三个步骤来识别回头客: ...
- mybatis中的#{}和${}
#{}:相当于预处理中的占位符?. #{}里面的参数表示接收java输入参数的名称. #{}可以接受HashMap.简单类型.POJO类型的参数. 当接受简单类型的参数时,#{}里面可以是value, ...
- Quartz Core框架之core animation
1.时间功能 (1)CFTimeIntervalCACurrentMediaTime ( void ); :返回当前的绝对时间 2.转换功能 (1)bool CATransform3DIsIdenti ...
- 球形环境映射之angular与latlong格式互换
这么做只是纯好奇,因为这种格式互换在实际中是没有意义的,下面映射方式互换的贴图说明了一切. 刚开始打算使用matlab进行贴图映射方式的转换,但许久不用很是生疏,而且生成图片要考虑很多事情,尤其是生成 ...
- web框架思考
以前一直不明白web框架是怎样实现路由.orm.接受请求的.今天看了下廖雪峰的python 实现web框架博客才明白. 简单总结并记录: http请求->wsgi->处理请求->返回 ...
- Java高级规范之三
三十一.如果变量名要加注释,说明命名不是很准确. 不规范示例:暂无 规范实例:暂无 解析:暂无 三十二.任何类字段除非必要,否则都要私有化 不规范示例: public class Person{ St ...
- Reconstruct Itinerary
Given a list of airline tickets represented by pairs of departure and arrival airports [from, to], r ...
- KANO模型
一.满意度的定义 消费者的满意度是取决于他们对企业所提供的产品和服务的事前期待,与实际(感知)效果之间的比较后,用户形成的开心或失望的感觉.就是说,如果购后在实际消费中的实际效果与事前期待相符合,则感 ...
- python 3 字符串转 json
from json import *; JSONDecoder().decode('str')