a summary of local feature and decriptor

vision:主要研究这个方面,就讲一讲这方面的研究脉络吧:

局部特征提取应该起源于运动分析的跟踪算法,Hannah和Movarac提出了关于角点的最原始的算法。Forstner和Gulch, Harris和Stephens把这个原始想法形式化为结构张量(或称二阶矩矩阵)的两个特征值的性质问题,在此基础之上,Noble,Rohr,Tomasi和 Kanade,Shi和Kanada等提出了各种不同的角点检测子,都是对结构张量两个不同的特征值的不同组合。Triggs和Kenney等提出了广义角点度量。Kenney2005年提出了一个角点的公理化方法。早期的角点匹配主要用于运动跟踪和小的视角匹配。因为角点并未附加图像的灰度信息,图像的匹配是纯粹的几何坐标匹配,通过坐标约束来剔出错误的匹配。这种方法不适合于大的视角匹配,所以张正友提出把兴趣点附近的图像区域挖出来进行相关匹配,这应该就是局部特征描述子的最初来源。直接对图像块的相关匹配不能解决图像的旋转变化,尺度伸缩,更别提仿射变换了,Schmid提出微分不变量来描述局部图像的信息,以解决旋转不变性的问题。而Lowe基于Lindeberg的理论解决了尺度不变性的问题。Lowe的一个主要贡献是提出了SIFT描述子,这个描述子具有很好的性能。Mikolajczyk和Schmid又基于Lindeberg的理论实现了仿射不变性的问题。

局部特征的另外一个起源来自生物启发。生物视觉系统是天然的基于局部特征的,Hubel和Wiesel的视觉感受野就是天然的局部特征处理器。Marr要素图理论就是把图像的底层处理归结为对局部特征的提取。Marr的要素图就包括edge, bar, blob, terminator。所以对边缘提取,脊线提取,斑点提取的研究都是基于这条思路下来的。有一类研究是证明根据这些局部特征,能否完全恢复原始图像的信息。结论是在一定的约束条件下,图像的边缘表示或者斑点表示能够包含原始图像的所有信息。纹理子的研究也可以看作这一族的研究。Poggio实验室的HMAX模型也逐步与计算机视觉研究的局部特征模型融合起来。

图像处理和表示中早期遇到一个很大的困难是图像的描述是依赖于图像的尺度的。图像的各种结构只存在一定的尺度范围内。所以发展了各种多尺度图像表示方法,包括图像金字塔,四叉树方法。尺度空间理论是系统解决图像尺度问题的理论。尺度空间理论最早是日本人提出来解决模式识别问题的,因为是日文写的,所以外界都不知道这个工作。二十年后,即1984年,Witkin在西方最早提出尺度空间理论来解决信号处理的多尺度问题。Witkin主要针对一维信号问题。Koendrink则给出Gaussian尺度空间理论是唯一合理的信号多尺度表示漂亮证明,并推广尺度空间理论到二维以及多维信号。Koendrink进一步提出了可用高斯微分型表征图像的结构,这个其实是Schmid的工作的根源。Florack和Lindeberg等人对尺度空间的公理化进行了系列研究。可以说现在尺度空间理论有着极其坚实的数学基础。Florack是Koendrink的学生,他们的研究小组进一步提出了近线性尺度空间,非线性尺度空间。Florack的研究数学很深,使用了广义函数,微分几何,几何拓扑,甚至规范场理论。非线性尺度空间理论的源头当然是Perona和Malik的那篇关于图像非线性扩散的文章。而尺度空间形式化为热扩散方程就归功于Koendrink。而这也开辟了用偏微分方程解决图像问题的源头。当然Shah-Mumford方程应该也是源头之一。而这个方向研究也直接导致snake, Active contour的提出。所以说各种研究看似不同,其实也有其内在的脉络。小波变换也是图像多尺度处理的方法,但由于信号的小波表示强调没有冗余,所以对图像的高层语义处理不利。所以小波表示多用于图像的底层处理,如图像压缩等。冗余的Gabor小波表示较常用于纹理分析,也是局部特征表示的方法之一。Poggio实验室对视觉感受野的计算模型都是基于Gabor小波的。Lindeberg则给出了一个确定图像特征的尺度选择理论,根据这个理论可以为图像的各种结构自动获得尺度,为对特征的进一步处理提供基础。这是Lowe的SIFT方法的基础。

局部特征目前的研究好像detector部分已经比较成熟了。现在关注点是descriptor部分。目前最好的描述子是类SIFT描述子。但是这类描述子最大的缺陷是高维,存储和欧式距离的计算都成问题。对大数据量的问题,比如图像检索,很构成性能的瓶颈。现在主要方法是进行聚类,生成特征码本,这样在进行特征匹配时候就不用两两匹配。问题在于码本的码的个数会影响到描述子的distinctiveness. 并且k-means聚类倾向于集中于数据高密度区域,使得数据量少但特征显著的区域被合并成一个区域,导致描述子的distinctiveness极大下降。这方面Triggs研究小组提出了一些方法。但这些方法究竟效果如何,也难以判断。另外码本的聚类需要极大的数据量,由于高维大数据量的聚类耗时严重,所以发展了层次聚类来降低这种耗费。然而这些都是以牺牲描述子的distinctiveness为代价的。如何获得一个distinctive并且维度低的描述子的确是个挑战。Brown今年CVPR文章提出一个学习局部描述子的空间结构来提高描述子的性能。对于特征检测,图像过分割的区域作为特征区域对待,似乎也是研究趋势之一。

对局部特征的下一步研究也许是新型描述子的研究以及基于局部特征的模型学习的研究。也许模型本身也是分层的,而模型本身是更大模型的一个特征。所以关于图像的局部模型和全局模型本身构成一个模型的尺度空间吧。而模型的尺度空间是可以在各个尺度层次进行学习的。局部特征不过是局部模型的另一个名称而已。
 
跟贴:
 
somsom:
very good survey, could be better if a list of reference is given. I happen to know some news of PASCAL competition.LEAR team once again won several categories from this year's PASCAL competition (2007).Cordelia and her phd student  Marcin (a guy from poland) are supposed to give their presentations on PASCAL VOC 2007, a ICCV07 workshop. I also notice that a student from QINGHUA university took part in this year's PASCAL competition, which is a good signal sent from mainland China.

the workshop site:
http://www.robots.ox.ac.uk/~vgg/misc/iccv07/
 

filestorm:

关于local descriptor,一个比较麻烦的问题是见木不见林。过分的locality使得整个分析变得失败。要解决这个问题,我在想是否可以引入关于形状的表达。然而形状的表达一直以来是难以让人满意的领域。

Active Contour可以说是一个流派。这里有一本电子书,我最近刚刚开始看,不好给什么评论。共享一下资源
http://www.robots.ox.ac.uk/~contours/


vision:

局部特征实际上是基于图像尺度空间理论提出的,尺度空间理论已经考虑了图像各结构在尺度空间中的演化。所以实际上现在的局部特征是包括各个尺度上的特征的。问题是要把这些特征联系起来,形成树状结构。这个就是所谓的Deep Structure. 这方面的理论研究是Florack的一个学生近几年在做。Lindeberg的尺度选择理论实际上也是基于深结构理论,但是现在的实际应用(Lowe,Schmid)都没有把各个特征联系起来,所以这些全局的信息就丧失掉了。如何找到一个好的算法把这些结构联系起来,应该也是局部特征研究需要解决的问题。Florack的学生现在在研究形状的Sketch表示,应该也在进行形状研究。

Active Contour的最早文章:M. Kass, A. Witkin, and D. Terzopoulos, ``Snakes - Active Contour Models'' International Journal of Computer Vision, 1(4): 321-331, 1987.  其中的作者Witkin就是最早提出尺度空间理论的。1984年Witkin提出尺度空间理论,1985年Koendrink把尺度空间理论形式化为i扩散方程. 1987年snake提出,应该是存在逻辑关系吧。Active Contour应该和尺度空间的 isophote 等价吧。好像Matas在研究这个。


handsomeyang:

还有一个趋势是把二维局部特征扩展到三维,即spatio-temporal features


http://blog.sciencenet.cn/blog-261330-526727.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值