A list,

1. The essence of SIFT algorithm is to find key points (feature points) in different scale Spaces and calculate the direction of key points. SIFT to find the key points are some very prominent, not due to lighting, affine transformation and noise and other factors and changes in the point, such as corner point, edge point, bright spot in the dark area and dark point in the bright area.

A, immutability:

— Invariant to image rotation and scale change;

— Strong adaptability to 3d visual Angle changes and illumination changes;

— Local features remain invariant in the case of occlusion and chaotic scene;

B. Strong discrimination:

— Strong ability to distinguish between features, conducive to matching;

C, a large number:

Lowe’s quote: a typical 500*500 image can extract about 2000 feature points (this number depends on the image content and the selection of several parameters).

Extremum points were extracted and optimized in the Difference of Gaussian (DOG) scale space to obtain feature points.



2. Specific steps of SIFT algorithm point detection:

— Constructing scale space;

— Constructing gauss differential scale space;

— DoG scale space extreme point detection;

— Precise positioning of feature points;

— Removing unstable points;

Ii. Source code

close all; clear all; clc; im1=imread('testdata\x1.jpg');
im2=imread('testdata\x2.jpg'); gray1=zoo_x2gray(im1); gray2=zoo_x2gray(im2); [des1,loc1]=zoo_sift(gray1); [des2,loc2]=zoo_sift(gray2); figure; zoo_drawPoints(im1,loc1,im2,loc2); Num=3;
Thresh=0.85;
 
match=zoo_BidirectionalMatch(des1,des2,Num,Thresh);
 
clear des1 des2
loc1=loc1(match(:,1), :); loc2=loc2(match(:,2), :); figure; zoo_linePoints(im1,loc1,im2,loc2); agl=zoo_getRotAgl(loc1,loc2); figure; zoo_drawRotAglHist(agl); opt=zoo_optIndex(agl); loc1=loc1(opt,:); loc2=loc2(opt,:); figure; zoo_linePoints(im1,loc1,im2,loc2); T=zoo_getTransMat(gray1,loc1,gray2,loc2); im=zoo_imRegist(im1,im2,T); figure,imshow(im);Copy the code

3. Operation results



Fourth, note

Version: 2014 a