46 lines
1.1 KiB
Matlab
46 lines
1.1 KiB
Matlab
function points = kp_gilles(im,o_radius)
|
|
% Extract keypoints using Gilles algorithm
|
|
%
|
|
% Author :: Vincent Garcia
|
|
% Date :: 05/12/2007
|
|
%
|
|
% INPUT
|
|
% =====
|
|
% im : the graylevel image
|
|
% o_radius : (optional) the radius of blobs detected
|
|
%
|
|
% OUTPUT
|
|
% ======
|
|
% points : the interest points extracted
|
|
%
|
|
% REFERENCES
|
|
% ==========
|
|
% S. Gilles, Robust Description and Matching of Images. PhD thesis,
|
|
% Oxford University, Ph.D. thesis, Oxford University, 1988.
|
|
%
|
|
% EXAMPLE
|
|
% =======
|
|
% points = kp_gilles(im,10) % radius of 10 pixels
|
|
|
|
% only luminance value
|
|
im = im(:,:,1);
|
|
|
|
% variables
|
|
if nargin==1
|
|
radius = 10;
|
|
else
|
|
radius = o_radius;
|
|
end
|
|
mask = fspecial('disk',radius)>0;
|
|
|
|
% compute local entropy
|
|
loc_ent = entropyfilt(im,mask);
|
|
|
|
% find the local maxima
|
|
[l,c,tmp] = findLocalMaximum(loc_ent,radius);
|
|
|
|
% keep only points above a threshold
|
|
[l,c] = find(tmp>0.95*max(tmp(:)));
|
|
points = [l,c,repmat(radius,[size(l,1),1])];
|
|
|
|
end |