Je suppose que les images sont déjà annotées. Dans ce cas, nous trouvons simplement les points marqués et les coordonnées d'extraction (si vous avez besoin de trouver les points rouges dynamiquement dans le code, cela ne marchera pas du tout)
La première chose à faire est de trouver une bonne fonctionnalité utiliser pour la segmentation. Voir ma réponse SO ici what-should-i-use-hsv-hsb-or-rgb-and-why pour le code et les détails. Cela produit l'image suivante:
nous pouvons voir que la saturation (et quelques autres) sont de bons espaces de couleurs candidats. Alors maintenant vous devez transférer votre image dans le nouvel espace colorimétrique et effectuer un seuillage pour trouver vos points.
Les points sont obtenus en utilisant matlab's region properties en recherchant spécifiquement le centroïde. À ce stade, vous avez terminé.
Voici le code et résultats
im = imread('http://i.stack.imgur.com/eajRb.jpg');
HUE = 1;
SATURATION = 2;
BRIGHTNESS = 3;
%see https://stackoverflow.com/questions/30022377/what-should-i-use-hsv-hsb-or-rgb-and-why/30036455#30036455
ViewColoredSpaces(im)
%convert image to hsv
him = rgb2hsv(im);
%threshold, all rows, all columns,
my_threshold = 0.8; %determined empirically
thresh_sat = him(:,:,SATURATION) > my_threshold;
%remove small blobs using a 3 pixel disk
se = strel('disk',3');
cleaned_sat = imopen(thresh_sat, se);% imopen = imdilate(imerode(im,se),se)
%find the centroids of the remaining blobs
s = regionprops(cleaned_sat, 'centroid');
centroids = cat(1, s.Centroid);
%plot the results
figure();
subplot(2,2,1) ;imshow(thresh_sat) ;title('Thresholded saturation channel')
subplot(2,2,2) ;imshow(cleaned_sat);title('After morpphological opening')
subplot(2,2,3:4);imshow(im) ;title('Annotated img')
hold on
for (curr_centroid = 1:1:size(centroids,1))
%prints coordinate
x = round(centroids(curr_centroid,1));
y = round(centroids(curr_centroid,2));
text(x,y,sprintf('[%d,%d]',x,y),'Color','y');
end
%plots centroids
scatter(centroids(:,1),centroids(:,2),[],'y')
hold off
%prints out centroids
centroids
centroïdes =
7,4593 143,0000
383,0000 87,9911
435,3106 355,9255
494,6491 91,1491
Quelle est le temps réel? –