l'image de fond

fr       en

Détection de Points d'intérêts

Détection de coins Moravec (Moravec corner detection algorithm)

Méthode

Cette détection de coins consiste à analyser chaque pixel de l'image. Il mesure les similarités entre différents patchs voisins grâce à la somme des différences au carré (sum of squared differences). Plus le résultat est faible plus la similarité est grande.
La première étape consiste à faire une dérivée d'un pixel (x,y) sur les huit directions (u,v) suivantes:
(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1),
puis nous procédons à une étape de lissage des images résultantes. Pour cela une moyenne sur un masque 3x3 a été utilisée.
Ensuite on calcule la matrice C qui est la valeur de la variation au carré la plus faible pour chaque pixel.
Pour terminer, on applique un algorithme de détection de maximums locaux.

Programme

clear all;
close all;

 
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif;*.bmp','All Image Files';...
          '*.*','All Files' },'mytitle',...
          'C:\Work\myfile.jpg');
img = imread(filename);
img=mean(img,3);
[ligne colonne]=size(img);

hori = [1 -1];
vert = hori';
diag1 = [1 0; 0 -1];
diag2 = [0 1; -1 0];

h = conv2(img,hori,'same');
v = conv2(img,vert,'same');
d1 = conv2(img,diag1,'same');
d2 = conv2(img,diag2,'same');

average = ones(3,3); % average filter
hh = conv2(abs(h),average,'same');
vv = conv2(abs(v),average,'same');
dd1= conv2(abs(d1),average,'same');
dd2= conv2(abs(d2),average,'same');
clear h v d1 d2

matmin = cat(3, hh.^2, vv.^2, dd1.^2, dd2.^2);

clear hh vv dd1 dd2

c=min(matmin,[],3);
clear matmin

threshold = max(max(c))*0.3;
c(c<threshold)=0;

[zmax,imax,zmin,imin]= extrema2(c);

imshow(uint8(img))
hold
nb=1000;
if length(imax)>nb
    nbcorner = nb;
else
    nbcorner=length(imax);
end
for i = 1 :  nbcorner %length(imax)
    quotien= floor(imax(i)/ligne);
    reste = imax(i) - quotien*ligne;
    plot([quotien-2 quotien-2 quotien+2 quotien+2 quotien-2],...
        [reste-2 reste+2 reste+2 reste-2 reste-2] ,'r','LineWidth',1)
end
 

Exemple


pointinteret_moravec

Copyright © 2010-2014, tous droits réservés, contact : operationpixel@free.fr