% Calcul d'homogeneité spatiale des intensités d'une image
% WB - 2020
%% Initialisation environnement
clc;
clear;
close all;
%% Déclaration des variables
currentFolder   = pwd;  % Lit le chemin du répertoire courant
Nb_levels       = 7;    % Nombre de niveaux de seuillage
%% Chargement de l'image et conversion en niveaux de gris double précision
currentFolder   = pwd;                                  % Lit le chemin du répertoire courant
I1              = imread([currentFolder,'\Dl3.jpg']);   % il faut que l'image soit dans le même répertoire que le programme
I2              = rgb2gray(I1);                         % Conversion RGB => NG
I3              = im2double(I2);                        % Conversion uint8 => double
%% Sélection d'une ROI
ROI = imcrop(I3);
%% Segmentation multi-seuils
thresh                  = multithresh(ROI,Nb_levels);   % seuillage multi-niveaux méthode Otsu
[Quant_ROI,index_ROI]   = imquantize(ROI,thresh);       % Quantification des pixels dans chaque intervalle
% Quant_ROI = Matrice des labels de niveau (1 à Nb_levels + 1)
Nb_pixels_max1 = length(find(Quant_ROI==Nb_levels+1));  % Nb pixels labellisés Nb_levels+1
Nb_pixels_max2 = length(find(Quant_ROI==Nb_levels));    % Nb pixels labellisés Nb_levels
% Calcul du ratio
LU = Nb_pixels_max1 / (Nb_pixels_max1 + Nb_pixels_max2);
% Conversion Matrice de labels en image RGB
RGB = label2rgb(Quant_ROI);
%% Affichage
figure,
ax1 = subplot(1,2,1); imshow(ROI); axis off; title('ROI');
colormap(ax1,'gray');
ax2 = subplot(1,2,2); imshow(RGB); axis off; title(['LU = ',num2str(LU)]);
colormap(ax2,'turbo');
colorbar('Ticks',thresh); str = 'Seuils'; annotation('textbox',[.82 .14 .1 .8],'String',str);



