Voici le contenu du script center.m:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
clc;  % pré-initialisations
clear all;
close all;
 
global mesurer_taches_couleurs % déclaration variables
global k
 
 
disp('Application pour calculer le centre de masse d''une image de test qui est lue avec imread');
% i image multiples niveaux de gris
% j- image binaire (0-1)
 
i = imread('circuit.tif'); imshow(i) % lire l'image dans variable i
j = im2bw(i, 0.4); % le threshold=0.4 pour l'image binaire
valeur_threshold = 100; %valeur threshold
j = imfill(j, 'holes');
 
subplot(3,2,1); imagesc(i); colormap(gray(256)); title('L''image initialle');
 
subplot(3,2,2); imagesc(j); colormap(gray(256));
title('Image binaire');
 
label = bwlabel(j, 8); % étiquetage des régions avec bwlabel
couleurs_labels = label2rgb (label, 'hsv', 'k', 'shuffle');% couleurs aléatoires pour les labels
mesurer_taches_couleurs = regionprops(label, 'all'); %toutes les propriétés des tâches d'encre de l'image
 
nombre_taches = size(mesurer_taches_couleurs, 1);
 
subplot(2,2,3), imagesc(label), title('L''image avec les régions étiquetées a l''aide de la fonction bwlabel')
subplot(2,2,4), imagesc(couleurs_labels), title('Couleurs aléatoires (random) pour les labels -les étiquettes');
figure,  imshow(i), title('Exposition des éléments');
 
hold on; % permettre la superposition
 
%La fonction bwboundaries retourne un cell-array ou chaque cellule contient
% les coordonnées ligne et colonne pour chaque objet de l'image
 
frontiere = bwboundaries(j);
 
%functia cell2 mat -conversion la variable de tip cell-array dans une variable de type matrice (array)
%de tip matrice
for tache = 1 : nombre_taches
    tache_couleur_courante = frontiere{tache};
    plot(tache_couleur_courante(:,2), tache_couleur_courante(:,1), 'r','LineWidth', 2);
end
hold off;
 
 
for k = 1 : nombre_taches % parcourir tous les taches des couleurs
    lister_pixels = mesurer_taches_couleurs(k).PixelIdxList; % lister les pixels a l'aide de PixelIdxList
 
    % opération mean pour chaque tache de couleur
 
    moyenne = mean(i(lister_pixels)); % l'intensité moyenne dans l'image i
 
    surface_tache = mesurer_taches_couleurs(k).Area; % surface
    perimetre_tache = mesurer_taches_couleurs(k).Perimeter; % périmètre
    centre_de_masse = mesurer_taches_couleurs(k).Centroid; % centroïde - centre de masse
 
    % affichage des dates avec fprintf
 
    fprintf(1,'#%d %18.1f %11.1f %8.1f %8.1f \n', k, moyenne,surface_tache ,  perimetre_tache,  centre_de_masse ); %affichage avec fprintf
end