查看“︁加速稳健特征”︁的源代码
←
加速稳健特征
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{For|在荷蘭的大學計算機組織|SURFnet}} {{featureDetectionCompVisNavbox}} '''SURF (Speeded Up Robust Features, 加速穩健特徵)''' 是一个穩健的图像识别和描述算法,首先于2006年发表在ECCV大会上。这个算法可被用于[[计算机视觉]]任务,如[[物件识别]]和[[3D重构]]。他部分的灵感来自于 [[尺度不变特征变换|SIFT]] 算法。SURF标准的版本比SIFT要快数倍,并且其作者声称在不同图像变换方面比SIFT更加稳健。 SURF使用[[海森矩陣]]的行列式值作特徵點偵測並用[[積分圖]]加速運算;SURF 的描述子基於 [[Haar-like features|2D 离散小波变换]] 响应并且有效地利用了[[积分图]]。 == 演算法 == SURF演算法的概念及步驟均建立在SIFT之上,但詳細的流程略有不同。SURF演算法包含以下三個步驟:特徵點偵測、特徵鄰近描述、描述子配對。 ===特徵點偵測=== SIFT使用了連續不同尺度的高斯濾波器處理影像,並且經由[[高斯差]]來偵測影像中尺度不變的特徵點。 SURF使用了方型濾波器取代SIFT中的高斯濾波器,借此達到高斯糢糊的近似。其濾波器可表示為: <math>S(x, y)=\sum_{i=0}^{x}\sum_{j=0}^{y} I(i,j)</math> 此外使用方型濾波器可利用[[積分圖]]大幅提高運算速度,僅需計算位於濾波器方型的四個角落値即可。 SURF使用了斑點偵測的[[海森矩陣]]來偵測特徵點,其行列式值代表像素點周圍的變化量,因此特徵點需取行列式值為極大、極小值。除此之外,為了達到尺度上的不變,SURF還使用了尺度σ的行列式值作特徵點的偵測,給定圖形中的一點p=(x, y),在尺度σ的海森矩陣為H(p, σ): <math>H(p,\sigma)=\begin{pmatrix} L_{xx}(p,\sigma) & L_{xy}(p,\sigma) \\ L_{xy}(p,\sigma) & L_{yy}(p,\sigma) \end{pmatrix}</math> 其中矩陣內的 <math>L_{xx}(p,\sigma)</math>等函數為二階微分後的灰階圖像。 9*9的方型濾波器被作為SURF最底的尺度,近似於σ=1.2的高斯濾波器。 === 尺度空間描述與特徵點定位 === 因為影像會在不同的尺度下作比較,特徵點往往會在不同尺度下被偵測到。在SIFT中,由於連續的高斯糢糊處理以及影像的[[降採樣]],在尺度上會型成類似金字塔的概念,例如[[高斯金字塔]]。 而SURF中尺度是由方型濾波器的大小決定的,並不是連續的高斯糢糊及降採樣處理。其中最底層的尺度(初始尺度)的方型濾波器大小為9*9,近似於σ=1.2的高斯濾波器。越往上層的尺度濾波器的大小也就跟著增加,例如15*15、21*21、27*27......。 其尺度的轉換公式為: <math>\sigma _{approx} = Current filter size * \left( \frac{\left(Base Filter scale\right) }{Base Filter Size} \right)</math> 與SIFT相同,SURF會使用特徵點海森矩陣的行列式值作鄰近資料插補來定位特徵點。 ===特徵點描述子=== 為了保留特徵點不變的特性,例如旋轉、尺度上的不變性,需要賦予特徵點一個描述子,使其能保有其不變性且能夠輕易地被區分。大多數的描述子建立的方法為描述特徵點與其相鄰的相素點間的變化,因此描述子往往都是區域性的。 同時描述子的維度也是描述子重要的考量之一,一個維度不足的描述子可能會使能特徵點不易區分,然而維度過大的描述子要耗費的計算也就越複雜。SURF的描述子使用了[[哈爾小波轉換]]的概念,並利用[[積分圖]]簡化描述子的計算。 ====方位定向==== 為了使得特徵點擁有轉動不變性,需要賦予特徵點一個方向。SURF的描述子計算特徵點周圍半徑為6σ個像素點的x,y方向的哈爾小波轉換,其中σ是此特徵點位於的尺度。所得到的小波響應以特徵點為中心的高斯函數作加權,並將其值標於一xy作標平面上作圖。最後在xy作標平面上以π/3為一個區間,將區間內小波響應的x、y分量加總得到一向量,在所有的向量當中最長的(即x、y分量最大的)即為此特徵點的方向。 此外在xy平面上選擇角度的區間大小可由角度的解析度、描述子的獨特程度等因素來作為調整的考量。 ====描述子量值==== 選定了特徵點的方向後,其周圍像素點需要以此方向為基準來建立描述子。此時以5*5個像素點為一個子區域,取特徵點周圍20*20個像素點的範圍共16個子區域,計算子區域內的x、y方向(此時以平行特徵點方向為x、垂直特徵點方向為y)的[[哈爾小波轉換]]總合<math>\sum dx</math>、<math>\sum dy</math>與其向量長度總合<math>\sum |dx|</math>、<math>\sum |dy|</math>共四個量值,共可產生一個64維資料的描述子。 ===描述子配對=== 替所有的特徵點建立描述子後便能使用描述子達成特徵點的配對,藉此應用在物體辨識、3D模型建立等應用上。 == 实现 == * [https://web.archive.org/web/20080925101809/http://www.vision.ee.ethz.ch/~surf/ 原始实现] (闭源) * [https://web.archive.org/web/20100725080254/http://www.chrisevansdev.com/opensurf/ OpenSURF] (开源) 有详细的文档和参考手册的实现(C++, C#, Java, Android, iPhone) * [http://sourceforge.net/projects/opensurfcl/ OpenSurfCL]{{Wayback|url=http://sourceforge.net/projects/opensurfcl/ |date=20110408045537 }} (开源) OpenSURF 在 OpenCL 上的免费实现(C++, C# Wrapper, JNI) * [https://web.archive.org/web/20110720065216/http://opencv.willowgarage.com/documentation/cpp/feature_detection.html#surf OpenCV SURF] (开源) SURF 的特征分离实现 (OpenCV 2.0) * [https://web.archive.org/web/20110809033212/http://www.maths.lth.se/matematiklth/personal/petter/surfmex.php SURFmex] [[Matlab]] OpenCV的 SURF 接口(MEX)代码。 * [http://www.mathworks.com/matlabcentral/fileexchange/28300 OpenSURF Matlab]{{Wayback|url=http://www.mathworks.com/matlabcentral/fileexchange/28300 |date=20110629221415 }} (开源) 到 OpenSURF (Matlab) 的接口 * [http://code.google.com/p/libmv libmv SURF]{{Wayback|url=http://code.google.com/p/libmv |date=20110212032431 }} (开源) 分离与匹配的实现 * [http://luispedro.org/software/mahotas Python mahotas]{{Wayback|url=http://luispedro.org/software/mahotas |date=20110727043536 }} (开源) 包含 SURF 实现的计算机视觉包 * [http://dlib.net Dlib C++ Library]{{Wayback|url=http://dlib.net/ |date=20200917123233 }} (开源) SURF 特征分离的实现 * [http://aorlinsk2.free.fr/panomatic/ Pan-o-matic]{{Wayback|url=http://aorlinsk2.free.fr/panomatic/ |date=20110720220332 }} (开源) 包含 SURF 算法的软件 * [http://parallelsurf.sourceforge.net/ Parallel SURF]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }} 基于 Pan-o-matic 的多线程实现 * [https://web.archive.org/web/20110812202234/http://brain.fei.tuke.sk/wiki/index.php/MASS/Plugins/ProcessorSURF C# SURF plugin for Multi-Agent Serving System] (开源) 分离和匹配的实现 * [http://code.google.com/p/javasurf/ JavaSurf]{{Wayback|url=http://code.google.com/p/javasurf/ |date=20110510103029 }} (开源) java 实现 (平台独立) * [http://code.google.com/p/jopensurf/ JOpenSURF]{{Wayback|url=http://code.google.com/p/jopensurf/ |date=20110404015420 }} (开源) java 翻译的 OpenSURF * [http://labun.com/imagej-surf ImageJ SURF]{{Wayback|url=http://labun.com/imagej-surf |date=20110225161224 }} (开源) 作为 ImageJ 插件,拥有舒适的GUI和输出统计的SURF实现(平台独立) * [http://code.google.com/p/in-spirit/wiki/ASSURF ASSURF]{{Wayback|url=http://code.google.com/p/in-spirit/wiki/ASSURF |date=20110512203138 }} (开源) 在 Adobe Flash 平台中基于 ActionScript 的SURF实现 * [http://asrl.utias.utoronto.ca/code/gpusurf Speeded Up SURF]{{Wayback|url=http://asrl.utias.utoronto.ca/code/gpusurf |date=20110203110949 }} (开源) [[图像处理单元|GPU]] 实现 * [http://www.mis.informatik.tu-darmstadt.de/surf CUDA SURF]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }} (开源) [[图像处理单元|GPU]] 使用 [[CUDA]] 的实现, 接口与 OpenSURF (C++, CUDA) 类似 * [http://reference.wolfram.com/mathematica/ref/ImageKeypoints.html Mathematica]{{Wayback|url=http://reference.wolfram.com/mathematica/ref/ImageKeypoints.html |date=20110125110503 }} 实现 * [http://homes.esat.kuleuven.be/~ncorneli/gpusurf/ GPU SURF]{{Wayback|url=http://homes.esat.kuleuven.be/~ncorneli/gpusurf/ |date=20110225205444 }} (开源) [[图像处理单元|GPU]] 实现 == 参见 == * [[尺度不变特征变换]] (SIFT) * [[GLOH|Gradient Location and Orientation Histogram]] * [[LESH| LESH - Local Energy based Shape Histogram]] * [[Blob detection]] * [[特征检测]] == 引用 == <references/> *[[Herbert Bay]], Andreas Ess, Tinne Tuytelaars, Luc Van Gool [http://www.vision.ee.ethz.ch/~surf/papers.html "SURF: Speeded Up Robust Features"]{{Wayback|url=http://www.vision.ee.ethz.ch/~surf/papers.html |date=20110706231744 }}, Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346–359, 2008 *[http://www.chrisevansdev.com Christopher Evans "Notes on the OpenSURF Library", MSc Computer Science, University of Bristol]{{Wayback|url=http://www.chrisevansdev.com/ |date=20110203004912 }} * P. M. Panchal, S. R. Panchal, S. K. Shah, "[http://www.ijircce.com/upload/2013/april/21_V1204057_A%20Comparison_H.pdf A Comparison of SIFT and SURF]{{Wayback|url=http://www.ijircce.com/upload/2013/april/21_V1204057_A%20Comparison_H.pdf |date=20150221004554 }} ", International Journal of Innovative Research in Computer and Communication Engineering Vol. 1, Issue 2, April 2013 == 外部链接 == * [https://github.com/herbertbay/SURF SURF on Github]{{Wayback|url=https://github.com/herbertbay/SURF |date=20160519154706 }} * [https://web.archive.org/web/20080925101809/http://www.vision.ee.ethz.ch/~surf/ Website of SURF: Speeded Up Robust Features]* [http://www.vision.ee.ethz.ch/~surf/eccv06.pdf First publication of Speeded Up Robust Features (2006)]{{Wayback|url=http://www.vision.ee.ethz.ch/~surf/ |date=20080925101809 }} * [ftp://ftp.vision.ee.ethz.ch/publications/articles/eth_biwi_00517.pdf Revised publication of SURF (2008)]{{Dead link}} [[Category:特征检测_(计算机视觉)]]
该页面使用的模板:
Template:Dead link
(
查看源代码
)
Template:FeatureDetectionCompVisNavbox
(
查看源代码
)
Template:For
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
加速稳健特征
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息