【特征检测】LIOP特征描述算法
简介:
LIOP特征描述算法,是2011年ICCV上一片paper《Local Intensity Order Pattern for Feature Description》中提出的一种特征描述算法。等有空闲时间把原文仔细翻译一遍,然后放上来分享给大家。
算法的提出者也是比较厉害的,其个人主页:http://zhwang.me/;LIOP在这里:http://zhwang.me/publication/liop/index.html
今天我们就来讲一下这个算法,下面来详细介绍LIOP算法的整个过程,遵循paper的处理流程,我按顺序分析:
一:图像预处理、特征检测、归一化
1、高斯滤波:
使用SIGMA为的高斯滤波器,对图像进行平滑滤波,由于像素强度的相对顺序对噪声敏感(稍后会提到),所以要消除噪声;
2、仿射区域检测:
检测图像中的仿射区域位置,并估计仿射区域的形状(使用Harris-Affine或Hessian-Affine);
3、归一化:
将检测到的仿射区域都归一化为一个固定直径的圆(文章中,圆的直径取41个pixl);
4、高斯滤波:
使用SIGMA为的高斯滤波器,对图像进行平滑滤波,消除由于归一化中插值操作带来的噪声。
二:区域分割
由步骤一得到的圆形区域叫做Local Patch。现在要对其进行划分区域,将其划分成B个子区域(subregion)。然后我们来提取每个subregion的特征矢量,再将B个特征矢量连起来形成当前检测区域(Detected region)的特征矢量。
如下图所示,图(a)是检测到的仿射区域,图(b)是归一化为固定直径的圆,图(c)是划分subregion(用不同颜色来标记),(d),(e),...,(f)是将每个subregion分离出来,以方便对每个subregion进行后续处理,用Bin 1,Bin 2,...,Bin n来表示。
注:图上画出了n个Bin,也就是说有n个subregion,在后面的用B来表示,其实n和B都表示subregion的个数,这里我特地说一下,希望读者不要纠结于n和B的含义。
三:LIOP特征描述
对于一个圆(Local Patch),都有一个圆心这是毋庸置疑的。该圆在未发生旋转之前我们把它叫做Origina patch(如下图a),旋转之后我们把它称作Rotated patch(如下图b)。现在我们的目的是要提取圆内每一个点的LIOP特征(编码),将同属于一个subregion(即:Bin)的LIOP特征累加起来,然后将B个subregion各自的LIOP特征串联起来,形成该Local Patch代表区域的特征矢量。
接下来,我们来求一个点的LIOP特征,请仔细阅读。
结合下图(a),假设圆心为X0,在Local Patch内有一个点X,以该点为圆心,R为半径画圆,取该圆上的N个采样点,记作X1,X2,...,XN,此图中N=4。旋转之后,X的位置旋转到了X' 的位置,其圆上的采样点也随之旋转(变成了X1',X2',X3',X4')。
为了使该点的LIOP特征具有旋转不变性,我们需要按照一定的方向进行排序,在文章中,作者提出以Local Pacth的中心,与X点的连线(可以看成大圆(Local Patch)中心与小圆中心的连线)方向上,且离大圆中心最远的采样点开始,按逆时针方向将所有采样点进行排序,最终排序为:旋转前:X1,X2,X3,X4,旋转后:X1',X2',X3',X4'。该种方法能够保证待会提取的LIOP特征具有旋转不变性。
排序方法确定了,我们还需要一个制作一个表,将N个采样点的所有排列组合方式都列出来,显然共有N!(N的阶乘)中排列组合,然后每种排序方式用一个Ind(即Index)索引来表示。
正如上图所示,现在我们要提取X的LIOP特征,假如4个采样点的排序是P(X)=(86,217,152,101)。本来按像素值从小到大排应该是(86,101,152,217),看得出来86在P(X)的第1个位置,101在P(X)的第4个位置,152在P(X)的第3个位置,217在P(X)的第2个位置。因此X点的编码就为(1,4,3,2),在表中找到该排列组合的索引为6(即:Ind=6)。
对于每个点周围的采样点,共有N!种排列方式,那么在该点的LIOP特征也即为N!位。文章中N=4,即每个点的LIOP特征矢量都是24bit的。接着上面说,上面得到了Ind=6,再根据上图所示,将X点特征矢量的第6位置1,其余为全部置0,也就得到了X点的LIOP特征矢量了,即:0000 0100 0000 0000 0000 0000。
同理可得,对于任意一个Local Patch内的点,我们都可以以相同的方式提取该点的LIOP特征矢量了,每个点的特征矢量中有且只有1个bit是1,其余都是0。我们将所有属于同一个subregion的点的特征矢量相加,则得到该subregion的特征矢量,再将B个subregion的特征矢量串联起来,就可以得到该Local Patch的LIOP特征了。
由于是按照像素强度进行排序的,因此对噪比较敏感,在最后为了能够得到更具有鲁棒性的特征矢量,作者提出一种特征矢量的加权方法,其中sgn()是符号函数,Tlp是阈值。
最后,我们来总结一下整个LIOP特征矢量提取所需要的参数:
LIOP大概就是这样的,以上都是个人理解,一切请以作者原文为准。如跟读者理解有出入,烦请留言告知,以便交流。
参考文献:
[1] Zhenhua Wang, Bin Fan and Fuchao Wu. Local Intensity Order Pattern for Feature Description. Computer Vision(ICCV), 2011 IEEE International Conference on.
[2] Bin Fan, Fuchao Wu and Zhanyi Hu. Aggregating Gradient Distributions into Intensity Orders:A Novel Local Image Descriptor. Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on.
[3] Hong Cheng, Zicheng Liu, Nanning Zheng and Jie Yang. A deformable local image descriptor. Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on.
【特征检测】LIOP特征描述算法相关推荐
- PCL 点云特征描述与提取
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:开着拖拉机唱山歌 链接:https://zhuanlan.zhihu.com/p/1032192 ...
- PCL中3D点云特征描述与提取(三)
PCL中3D点云特征描述与提取(三) 1 如何从一个深度图像中提取NARF特征 2 RoPs特征 2.1 理论基础 2.1.1 生物视觉认知学启示 2.1.2 局部参考坐标框架构建 2.1.3 RoP ...
- 3D,点云关键点和特征描述
3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分.如果要对一个三维点云进行描述,光有点云的位置是不够的,常常需要计算一些额外的参数,比如法线方向.曲率.纹理特征.颜色.领域中心距.协方差 ...
- OpenCV4学习笔记(41)——ORB特征提取描述算法
今天要整理记录的笔记内容是特征算法中比较常用的一种--ORB特征提取描述算法,顾名思义,ORB算法包含了对特征点的提取和描述这两个部分.而在上次的博文<OpenCV4学习笔记(39)>中, ...
- 【OpenCV 例程 300篇】249. 特征描述之视网膜算法(FREAK)
『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]249. 特征检测之视网膜算法(FREAK) 1. FREAK 算法简介 快速视网膜 ...
- opencv 二维图像 特征检测 特征描述 特征匹配 平面物体识别跟踪
github代码 一.Harris角点 cornerHarris() R = det(M) - k*(trace(M))^2 算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与 ...
- 【OpenCV 例程 300篇】244. 特征检测之 BRIEF 特征描述
『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]244. 特征检测之 BRIEF 特征描述 6.7.1 算法简介 二进制鲁棒独立的特 ...
- BRISK特征点描述算法详解
转自:BRISK特征点描述算法详解_AstoncPou的博客-CSDN博客_brisk特征点 BRISK特征点描述算法详解 简介 BRISK算法是2011年ICCV上<BRISK:Binary ...
- SIFT算法特征描述子构建---关键点定位原理及代码
0.引言 sift针对局部特征进行特征提取,在尺度空间寻找极值点,提取位置,尺度,旋转不变量,生成特征描述子. 总共分四个步骤: 尺度金字塔生成 关键点/极值点提取 生成梯度直方图 特征描述子构建 s ...
最新文章
- 谷歌搜索没有相机图标_谷歌Pixel 2/3a/4 XL中招!更新安卓11相机崩溃
- Java 连接各种数据库
- 一台台式计算机的主要配件有哪些,电脑的基本配件有哪些
- IIS 7 php 7.0 部署WE MALL
- ueditor编辑器php上传配置,php版本UEditor编辑器图片上传设置
- microwindows位图解析
- micropython和python区别-选择C/C++还是选择MicroPython来开发?(第0章-第三节)
- 如何利用Camtasia为视频添加注释?
- 《App后台开发运维和架构实践》资源汇总
- 网络参数配置与常用网络命令使用
- SpringBoot使用自定义https
- 计算机关机界面卡住,电脑关机时卡在关机界面的解决方法
- 电脑分区后,电脑提醒没有权限在此位置保存文件怎么办?
- 喜欢看漫画的小伙伴就不要错过啦,python批量爬取动漫免费看
- 基于NRF24L01的CAN数据透传
- java算法:逻辑回归和线性回归
- 深度学习(9):FastFCN论文翻译与学习
- 今日头条统一提现怎么开通?
- 随机点名系统——微信小程序
- 英语学习(10个句子练到极致)