【特征检测】LIOP特征描述算法

来源:互联网 发布:淘宝达人机构申请 编辑:程序博客网 时间:2024/06/04 18:08

简介:

        LIOP特征描述算法,是2011ICCV上一片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-AffineHessian-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来表示。

注:图上画出了nBin,也就是说有nsubregion,在后面的用B来表示,其实nB都表示subregion的个数,这里我特地说一下,希望读者不要纠结于nB的含义。


三:LIOP特征描述

        对于一个圆(Local Patch),都有一个圆心这是毋庸置疑的。该圆在未发生旋转之前我们把它叫做Origina patch(如下图a),旋转之后我们把它称作Rotated patch(如下图b)。现在我们的目的是要提取圆内每一个点的LIOP特征(编码),将同属于一个subregion(即:Bin)的LIOP特征累加起来,然后将Bsubregion各自的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)索引来表示。

        正如上图所示,现在我们要提取XLIOP特征,假如4个采样点的排序是P(X)=(86,217,152,101)。本来按像素值从小到大排应该是(86,101,152,217),看得出来86P(X)的第1个位置,101P(X)的第4个位置,152P(X)的第3个位置,217P(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特征矢量了,每个点的特征矢量中有且只有1bit1,其余都是0。我们将所有属于同一个subregion的点的特征矢量相加,则得到该subregion的特征矢量,再将Bsubregion的特征矢量串联起来,就可以得到该Local PatchLIOP特征了。


        由于是按照像素强度进行排序的,因此对噪比较敏感,在最后为了能够得到更具有鲁棒性的特征矢量,作者提出一种特征矢量的加权方法,其中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.

1 0
原创粉丝点击