-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPostTraitement2.m
64 lines (52 loc) · 1.82 KB
/
PostTraitement2.m
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
function [] = PostTraitement2( ImgInit , ImgBW, Contours, showSteps )
% * Fonction de post traitement de l'image
% * Permet de dessiner les bounding box sur les voitures (et peut etre
% * trouver les couleurs)
% * ImgInit => image en couleur de départ, pour tracer les BB
% * ImgBW => image en Noir et Blanc après les traitements
% * Contours => liste des bounding Box
% * showSteps => booleen pour l'affichage des étapes de traitements
%% Debuggage
% en fait on veut toujours voir les étapes de cette partie !
showSteps = 1;
%% traitement des couleurs
[imgLabel, nbLabels] = bwlabel(ImgBW); %etiquetage
Icouleurs = ImgInit;
for L = 0:nbLabels
%%creation d'un masque correspondant à un label
masque = imgLabel == L;
%%séparation des canaux de couleurs
Irouge = ImgInit(:,:,1);
Ivert = ImgInit(:,:,2);
Ibleu = ImgInit(:,:,3);
%%valeurs moyenne sur le masque
moyR = uint8(mean(Irouge(masque)));
moyV = uint8(mean(Ivert(masque)));
moyB = uint8(mean(Ibleu(masque)));
%%Set the region to average RGB
IcouleursR = Icouleurs(:,:,1);
IcouleursV = Icouleurs(:,:,2);
IcouleursB = Icouleurs(:,:,3);
if L == 0
IcouleursR(masque) = 0;
IcouleursV(masque) = 0;
IcouleursB(masque) = 0;
else
IcouleursR(masque) = moyR;
IcouleursV(masque) = moyV;
IcouleursB(masque) = moyB;
end
Icouleurs = cat(3,IcouleursR,IcouleursV,IcouleursB);
end
%% Affichage
if showSteps == 1
imshow(Icouleurs, []);
nbVoiture = 0;
for k = 1:length(Contours) % Iteration sur tous les contours
thisBB = Contours(k).BoundingBox;
rectangle('Position',[thisBB(1),thisBB(2),thisBB(3),thisBB(4)],'EdgeColor','b','LineWidth',4 );
nbVoiture = nbVoiture + 1;
end
title(sprintf('Il y a %.0f voitures', nbVoiture));
end
end