background preloader

CompGeo

Facebook Twitter

Scale-invariant feature transform. Scale-invariant feature transform (or SIFT ) is an algorithm in computer vision to detect and describe local features in images.

Scale-invariant feature transform

The algorithm was published by David Lowe in 1999. [ 1 ] Applications include object recognition , robotic mapping and navigation, image stitching , 3D modeling , gesture recognition , video tracking , individual identification of wildlife and match moving . The algorithm is patented in the US; the owner is the University of British Columbia . [ 2 ] Overview [ edit ] For any object in an image, interesting points on the object can be extracted to provide a "feature description" of the object. Another important characteristic of these features is that the relative positions between them in the original scene shouldn't change from one image to another. David Lowe's method [ edit ] SIFT keypoints of objects are first extracted from a set of reference images [ 1 ] and stored in a database. SURF. SURF (Speeded Up Robust Features) is a robust local feature detector, first presented by Herbert Bay et al. in 2006, that can be used in computer vision tasks like object recognition or 3D reconstruction .

SURF

It is partly inspired by the SIFT descriptor. The standard version of SURF is several times faster than SIFT and claimed by its authors to be more robust against different image transformations than SIFT. SURF is based on sums of 2D Haar wavelet responses and makes an efficient use of integral images . It uses an integer approximation to the determinant of Hessian blob detector , which can be computed extremely quickly with an integral image (3 integer operations).

For features, it uses the sum of the Haar wavelet response around the point of interest. Performance:SURF - BoofCV. Speeded Up Robust Feature (SURF) is a state-of-the-art image region descriptor and detector that is invariant with regard to scale, orientation, and illumination.

Performance:SURF - BoofCV

By using an integral image , the descriptor can be computed efficiently across different scales. In recent years it has emerged as one of the more popular and frequently-used feature descriptors, but it is not a trivial algorithm to implement, and several different implementations exist. The following study compares several different libraries to determine relative stability and runtime performance. Results Last Updated: February 2, 2012 For a more detailed discussion of the algorithmic difference between these implementations and clarifications of ambiguities found in the original SURF paper, see the draft paper below: Paper: Peter Abeles, "Resolving Implementation Ambiguity and Improving SURF" 2012 (pre-print draft) Under review until July 2, 2012 Tested Implementations: Benchmark Source Code: SURFPerformance. Feature Detection and Description. Class SIFT : public Feature2D Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform (SIFT) algorithm by D.

Feature Detection and Description

Lowe [Lowe04] . The SIFT constructors. C++: SIFT:: SIFT ( int nfeatures =0, int nOctaveLayers =3, double contrastThreshold =0.04, double edgeThreshold =10, double sigma =1.6 ) SIFT::operator () Extract features and computes their descriptors using SIFT algorithm. Connected-component labeling. Connected-component labeling (alternatively connected-component analysis , blob extraction , region labeling , blob discovery , or region extraction ) is an algorithmic application of graph theory , where subsets of connected components are uniquely labeled based on a given heuristic . Connected-component labeling is not to be confused with segmentation .

Connected-component labeling is used in computer vision to detect connected regions in binary digital images , although color images and data with higher dimensionality can also be processed. [ 1 ] [ 2 ] When integrated into an image recognition system or human-computer interaction interface, connected component labeling can operate on a variety of information. [ 3 ] [ 4 ] Blob extraction is generally performed on the resulting binary image from a thresholding step.

Blobs may be counted, filtered, and tracked. Blob extraction is related to but distinct from blob detection . HIPR Top Page. Algorithm Tutorials. Geometry Concepts: Line Intersection and its Applications By lbackstromTopCoder Member ...read Section 1 Line-Line IntersectionFinding a Circle From 3 PointsReflectionRotationConvex Hull In the previous section we saw how to use vectors to solve geometry problems.

Algorithm Tutorials

Now we are going to learn how to use some basic linear algebra to do line intersection, and then apply line intersection to a couple of other problems. Line-Line Intersection One of the most common tasks you will find in geometry problems is line intersection. Double det = A1*B2 - A2*B1 if(det == 0){ //Lines are parallel }else{ double x = (B2*C1 - B1*C2)/det double y = (A1*C2 - A2*C1)/det } To see where this comes from, consider multiplying the top equation by B2, and the bottom equation by B1.

This gives you the location of the intersection of two lines, but what if you have line segments, not lines. To find the perpendicular bisector of XY, find the line from X to Y, in the form Ax+By=C. ...continue to Section 3. DGtal - Digital Geometry Tools and Algorithms library. Connected Component Labeling Algorithm. Download Source Code Overview.