SURF: Speeded Up Robust Features: Difference between revisions

 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:


* [https://link.springer.com/chapter/10.1007/11744023_32 Springer Link to Paper (ECCV 2006) Paywall]
* [http://people.ee.ethz.ch/~surf/eccv06.pdf Paper]
* [[Media:Surf_speeded_up_robust_features_eccv06.pdf | Mirror]]


* [http://people.ee.ethz.ch/~surf/eccv06.pdf Paper]
;Authors:
* Herbert Bay - ETH Zurich
* Tinne Tuytelaars - Katholieke Universiteit Leuven
* Luc Van Gool - ETH Zurich, Katholieke Universiteit Leuven


==Feature Extraction==
==Feature Extraction==
Line 7: Line 13:


Our features will be regions in the image where the determinant of the Hessian are local maxima.
Our features will be regions in the image where the determinant of the Hessian are local maxima.
[[File:surf_fig_1.png | thumb | 500px | Figure 1 from the paper. Each region can be computed using a summed area table/integral image.]]
* The Hessian matrix:  
* The Hessian matrix:  
<math>\mathcal{H}(\mathbf{x}, \sigma)  
<math>\mathcal{H}(\mathbf{x}, \sigma)  
Line 14: Line 22:
\end{bmatrix}</math>
\end{bmatrix}</math>
* Each entry is a convolution of a the Gaussian second order derivative with the image at <math>\mathbf{x}</math>
* Each entry is a convolution of a the Gaussian second order derivative with the image at <math>\mathbf{x}</math>
* These convolutions are approximated using box filters on an integral image.
* These convolutions are approximated using box filters on an integral image (Fig 1).
*: The approximations are denoted as <math>D_{xx}, D_{yy}, D_{xy}</math>
*: The approximations are denoted as <math>D_{xx}, D_{yy}, D_{xy}</math>
* The determinant of the hessian is then <math>D_{xx}D_{yy} - (0.9*D_{xy})^2</math>
* The determinant of the hessian is then <math>D_{xx}D_{yy} - (0.9*D_{xy})^2</math>
Line 33: Line 41:
===Orientation Assignment===
===Orientation Assignment===


[[File:Surf fig 2.png | thumb | 500px | Figure 2 from the paper]]
* Sample Haar-wavelet responses in x and y-direction at points around each feature
* Sample Haar-wavelet responses in x and y-direction at points around each feature
** Using integral images, only 6 operations are need to compute in x or y direction
** Using integral images, only 6 operations are need to compute in x or y direction (Fig. 2 middle)
**: We have 6 distinct corners so we need 5 fma operations in total for each direction.
**: We have 6 distinct corners so we need 6 fma operations in total for each direction. (Actually 5 if one value is just multiplied by 1)
* Using a 360-degree (pivoting) sliding window with radius <math>\frac{\pi}{3}</math>,  calculate the sum of all horizontal and vertical responses yielding vector. Note the window moves in increments of <math>\frac{\pi}{3}</math>
* Using a 360-degree (pivoting) sliding window with radius <math>\frac{\pi}{3}</math>,  calculate the sum of all horizontal and vertical responses yielding vector. Note the window moves in increments of <math>\frac{\pi}{3}</math>
* Pick the direction with the largest vector.
* Pick the direction with the largest vector.


===Descriptor Components===
===Descriptor Components===
* Create square regions positioned at feature points and oriented using the calculated orientation
* Create square regions positioned at feature points and oriented using the calculated orientation (Fig. 2 right)
* ...
* ...
==OpenCV==
SURF is available in OpenCV


==Resources==
==Resources==
* [https://medium.com/data-breach/introduction-to-surf-speeded-up-robust-features-c7396d6e7c4e Medium Introduction]
* [https://medium.com/data-breach/introduction-to-surf-speeded-up-robust-features-c7396d6e7c4e Medium Introduction]