forked from ivaaanrm/PIV-Project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
algo1.m
67 lines (54 loc) · 2.12 KB
/
algo1.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
64
65
clear all
files = dir(['Dataset_cop/Training-Dataset/Images/', '/*.jpg']);
% Por cada imagen del directorio de entrenamiento calculamos el histograma
% 2D de de la imagen filtrada con los pixeles que corresponden a la piel.
L_arr = [];
a_arr = [];
b_arr = [];
for i = 1 : length(files)
% Obtenemos el nombre del fichero y calculamos el histigrama 2D de
% las componentes de crominancia de los pixeles de piel de la
% imagen.
img = imread(files(i).folder + "/" + files(i).name);
imgName = files(i).name;
imgName = strsplit(imgName, '.');
ideal_mask_path = "Dataset_cop/Training-Dataset/Masks-Ideal/" + imgName(1) + ".bmp";
ideal_mask = imcomplement(imread(ideal_mask_path));
% diezmado de la imagen
[width, height, ~] = size(img);
DIEZMADO = 10;
img = imresize(img,[width/DIEZMADO,height/DIEZMADO],'Method','bilinear');
ideal_mask = imresize(ideal_mask,[width/DIEZMADO,height/DIEZMADO],'Method','bilinear');
% Devuelve las componentes L a b d ela imagen. último argumento:
% true -> solo componentes correspondientes a piel
% false -> componentes de toda la imagen
[L, a, b] = calc_hist_2D(img, ideal_mask, true);
% Concatenamos los pixeles de piel de cada imagen con su array de
% crominancia correspondiente
L_arr = vertcat(L_arr, L);
a_arr = vertcat(a_arr, a);
b_arr = vertcat(b_arr, b);
end
% PLot del histograma 2D
SALTO = 1;
[N_cb,edges_cb] = histcounts(a_arr);
[N_cr,edges_cr] = histcounts(b_arr);
figure
hist3([a_arr, b_arr],{min(edges_cb):SALTO:max(edges_cb) min(edges_cr):SALTO:max(edges_cr)}, 'CdataMode','auto','FaceColor','interp')
title('A-B chrominance histogram'), ylabel('B'), xlabel('A'),
xlim([min(edges_cb) max(edges_cb)])
ylim([min(edges_cr) max(edges_cr)])
% Plot component histograms
figure()
subplot(3,1,1)
L_hist = histogram(L_arr);
title("L component histogram")
grid on
subplot(3,1,2)
A_hist = histogram(a_arr);
title("A component histogram")
grid on
subplot(3,1,3)
B_hist = histogram(b_arr);
title("B component histogram")
grid on