Le barycentre consiste à trouver le centre de gravité d'une image. Nous prendrons l'exemple d'une forme blanche sur fond noir. Pour calculer le barycentre on va utiliser la pondération de chaque pixel faisant partie de la forme. Cette pondération va être sa valeur ligne et colonne. La recherche du barycentre se calcule de la manière suivante :
close all;
clear all,
F = [0 0 0 0 0 0 0 0 0;
0 0 1 1 1 1 0 0 0;
0 0 1 0 0 0 0 0 0;
0 0 1 0 0 0 0 0 0;
0 0 1 1 1 0 0 0 0;
0 0 1 0 0 0 0 0 0;
0 0 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0];
F = kron(F,ones(32));
valeurx=0;
valeury=0;
[M N]=size(F)
nbpoint=0;
for i = 1 : M
for j = 1 : N
if F(i,j)==1
valeurx=valeurx+i;%sommation pondéré en x
valeury=valeury+j;%sommation pondéré en y
nbpoint=nbpoint+1;% nombre de point total
end
end
end
valeurx=round(valeurx/nbpoint);%normalisation sur x
valeury=round(valeury/nbpoint);%normalisation sur y
%De combien faut t'il translater
centreimagex=round(M/2);
centreimagey=round(N/2);
translatex=centreimagex-valeurx;
translatey=centreimagey-valeury;
%Maintenant on translate
Fcenter = zeros(M,N);
for i = 1 : M
for j = 1 : N
shiftx = i - translatex;
shifty = j - translatey;
if (shiftx < M && shiftx > 1 && shifty < N && shifty > 1)
Fcenter(i,j) = F(shiftx,shifty);
else
Fcenter(i,j) = 0;
end
end
end
Fb=F;
Fb(valeurx,valeury)=not(F(valeurx,valeury));% pour voir le barycentre
figure( 'name','centrage image binaire','NumberTitle','off');
subplot(121)
imshow(Fb)
subplot(122)
imshow(Fcenter)
Copyright © 2010-2014, tous droits réservés, contact : operationpixel@free.fr