matlab练习程序(BRIEF描述子)
BRIEF特征全称:Binary Robust Independent Elementary Features。是一种能够快速计算图像特征描述符的方法,同样能够降低特征匹配的时间。
算法计算步骤如下:
1.首先对一张图像计算其特征点,这里就用matlab自带的harris角点检测了,harris代码细节可以参考这一篇博客。
2.对图像进行高斯滤波,这里选用9*9矩阵,主要是为了去除随机噪点。
3.以特征点为中心,取SxS的邻域窗口。在窗口内随机选取一对(两个)点,比较二者像素的大小,进行如下二进制赋值。

其中,p(x),p(y)分别是随机点x=(u1,v1),y=(u2,v2)的像素值。
4.选窗口内随机点对的策略有以下五种方法,推荐第二种:

对应的邻域随机点对图像如下(一条线段的两个端点是一对):

5.最终就得到了多组二进制编码,后续匹配可以利用编码距离来确定特征点的相似度。
一定要注意的是后续匹配要选用相同的点对,所以这组点对是要保留的。
matlab代码如下:
clear all;
close all;
clc; R = ; %特征邻域窗口直径
K = ; %高斯滤波半径
N = ; %特征位数 img=imread('lena.jpg');
imshow(img)
[h,w]=size(img); p = detectHarrisFeatures(img); %系统自带的检测harris角点
p = p.Location; p = p(p(:,)>R & p(:,)<h-R & ... %将太靠近边界的特征点去掉,避免邻域随机点越界
p(:,)>R & p(:,)<w-R,:); H=fspecial('gaussian',[K K],); %高斯平滑
img=imfilter(img,H,'replicate'); s = normrnd(,R/,N,); %生成邻域中随机点对GII
figure; %显示一下
for i=:N
plot(s(i,:),s(i,:));
hold on;
end tao = zeros(length(p),N);
for i=:length(p) %生成所有特征点的brief描述子
px = floor(p(i,:) + s(:,:)); %懒得插值提亚像素值了,直接最邻近
py = floor(p(i,:) + s(:,:)); for j=:N
if img(px(j,),px(j,)) < img(py(j,),py(j,))
tao(i,j) = ;
else
tao(i,j) = ;
end
end img(floor(p(i,)),floor(p(i,))) = ;
end
figure; %显示harris角点
imshow(img,[]) figure; %显示一下描述子
imshow(tao,[])
结果如下:
原图:

Harris特征点:

邻域随机点对,这里使用GII:

BRIEF描述子,这里可视化了:

参考:https://blog.csdn.net/hujingshuang/article/details/46910259
matlab练习程序(BRIEF描述子)的更多相关文章
- Brief描述子
一.Brief算法 1.基本原理 BRIEF是2010年的一篇名为<BRIEF:Binary Robust Independent Elementary Features>的文章中提出,B ...
- Opencv Surf算子中keyPoints,描述子Mat矩阵,配对向量DMatch里都包含了哪些好玩的东东?
Surf算法是一把牛刀,我们可以很轻易的从网上或各种Opencv教程里找到Surf的用例,把例程中的代码或贴或敲过来,满心期待的按下F5,当屏幕终于被满屏花花绿绿的小圆点或者N多道连接线条霸占时,内心 ...
- BRIEF 特征描述子
Binary Robust Independent Elementary Features www.cnblogs.com/ronny 1. BRIEF的基本原理 我们已经知道SIFT特征采用了128 ...
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- 基于HOG-3D的时空描述子
作者提出一种新的基于局部描述子的行为识别算法.
- SIFT算法:特征描述子
SIFT算法:DoG尺度空间生产 SIFT算法:KeyPoint找寻.定位与优化 SIFT算法:确定特征点方向 SIFT算法:特征描述子 目录: 1.确定描述子采样区域 2.生成描述子 2.1 旋 ...
- SIFT解析(三)生成特征描述子
以上两篇文章中检测在DOG空间中稳定的特征点,lowe已经提到这些特征点是比Harris角点等特征还要稳定的特征.下一步骤我们要考虑的就是如何去很好地描述这些DOG特征点. 下面好好说说如何来描述这些 ...
- (二)ORB描述子提取源码思路与实现
ORBSLAM2中ORB特征提取的特点 ORBSLAM2中通过对OpenCV中的ORB特征点提取类进行修改,对图像进行分块提取,而后划分节点,使得每个节点中保存的特征点性能是该节点所有特征点中最好的. ...
- (一)ORB描述子提取
ORBSLAM2中使用ORB描述子的方法 经典的视觉SLAM系统大体分为两种:其一是基于特征点法的,其二是基于直接法的.那么本文主要就讲特征点法的SLAM. 基于特征点法的视觉SLAM系统典型的有PT ...
随机推荐
- ubutu tornado python3.7.5 nginx supervisor 部署web api
环境: 1.Ubuntu 服务器 2.python3.7.5 安装 1.python3.7.5 安装的话还是比较简单,流程大致是./configure ->make && mak ...
- Jerome: Vulnhub Walkthrough
nmap 扫描探测: ╰─ nmap -p1-65535 -sV -A -O -sT 10.10.202.135Starting Nmap 7.70 ( https://nmap.org ) at 2 ...
- 【Beta阶段】第十二周Scrum会议
[Beta阶段]第十二周Scrum会议 本次会议为第十二周第一次Scrum Meeting,会议对Beta阶段工作进行了总结,针对Beta阶段还未完成的问题进行了讨论. 会议时间为2019.12.3. ...
- diango中有三种response
from django.shortcuts import render, redirect, HttpResponse HttpResponse() render() redirect()
- vue 脚手架
Vue 脚手架的基本用法 1. 基于 3.X 版本的脚手架 创建vue项目 命令行(CLI) 的方式创建 vue 项目 vue create my-project 图形化界面(GUI) 的方式创建 v ...
- java学习路线推荐,希望能帮到你
很多小白刚开始学习java时,肯定迷惘过,因为对java基本是啥也不懂的,一直想知道java的具体学习路线,我曾经也看了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,特别 ...
- STM32F429的新版用户手册更新记录, 改进、交流(2019-08-18发布V0.9版本)
2019-06-16 发布首版V0.1 2019-06-23 发布V0.2版本 新增章节: 第3章 STM32F429 整体把控 第4章 STM32F429 工程模板建立(MDK5) 第5章 STM3 ...
- TP5 where多条件查询
引用 : https://blog.csdn.net/haibo0668/article/details/78203170/
- Linux系统彻底卸载MySQL数据库
一.首先查询系统是否安装了MySQL rpm -qa | grep -i mysql 输出结果表示,我安装的MySQL Server,Client都是5.6.44的,因为我系统支持的版本是要5.7+的 ...
- C#_.NetFramework_Web项目_EXCEL数据导入
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 需要引用NPOI的Nuget包:NPOI-v2.4.1 B-1:EXCEL数据导入--C#获 ...