%% Tomar clases existentes
clases = dir('/Users/CamiloCB/Desktop/Images');

%% Revisar que partan con n (no otro elemento)
n = 1;
nomClases = cell(0);
for i=1:length(clases)
    nom = char(clases(i).name);
    if nom(1) == 'n'
        nomClases{n} = nom;
        n = n + 1;
    end
end

%% Leer cada una de las carpetas y guardarlas en otros cell

%cell que guarda los cell;
ImgGen = cell (length(nomClases),1);
for i = 1:length(nomClases)
    dire = char('/Users/CamiloCB/Desktop/Images/'+string(nomClases(i)));
    imcl = dir(dire); 
    
    %cell con las imagenes
    cel = cell(0);
    n = 1;
    for j = 1:length(imcl)
        nom = imcl(j).name;
        if nom(1) == 'n'
            %Leer Imagen y guardarla
            dirIM = char(string(dire)+'/'+string(nom));
            im = imread(dirIM);
            cel{n} = im;
            n = n + 1;
        end
    end
    ImgGen{i} = cel;
    
end

%% Se procede a extraer Información de la Recolección anterior

%% Nombre de Imagenes

nomImg = cell(length(nomClases),1);
for i = 1:length(nomClases)
    dire = char('/Users/CamiloCB/Desktop/Images/'+string(nomClases(i)));
    imcl = dir(dire); 
    auxCell = cell(0);
    n = 1;
    for j =1:length(imcl)
        nom = imcl(j).name;
        if nom(1) == 'n'
            auxCell{n} = nom;
            n = n+1;
        end
    end
    nomImg{i} = auxCell;
end

%% Cantidad de Imagenes por clase:

ImPorClase = cell(length(nomClases),2);
for i = 1:length(nomClases)
    ImPorClase{i,1} = nomClases{i};
    ImPorClase{i,2} = length(ImgGen{i});
end

%Se puede encontrar en este cell el orden de clases con mayores fotos
SortImPorClase = sortrows(ImPorClase,[2],{'descend'});

%En esta Variable se puede encontrar el promedio y ela desviación de la
%cantidad de fotos
promImPorClase = mean(cell2mat(SortImPorClase(:,2)));
stdImPorClase = std(cell2mat(SortImPorClase(:,2)));
modeImPorClase = mode(cell2mat(SortImPorClase(:,2)));
medianImPorClase = median(cell2mat(SortImPorClase(:,2)));


%% Tamaño de Imagenes 

%Cell con toda la cantidad de pixeles por imagen por Clase
tamImg = cell(length(ImgGen),1);

for i = 1:length(ImgGen)
    clLeida = ImgGen{i};
    auxCell = cell(length(clLeida),4);
    for j = 1:length(clLeida)
        imLeida = clLeida{j};
        [M,N] = size(imLeida);
        auxCell{j,2} = M*N;
        auxCell{j,3} = M;
        auxCell{j,4} = N;
        auxCell{j,1} = nomImg{i}{j};
    end
    tamImg{i} = auxCell;
end

%Se calcula el promedio y std por clase
promTamPorClase = cell(length(ImgGen),2);
for i= 1:length(ImgGen)
    promTamPorClase{i,1} = mean(cell2mat(tamImg{i}(:,2)));
    promTamPorClase{i,2} = std(cell2mat(tamImg{i}(:,2)));
end
    
%Se calcula el promedio de todas las imagenes
TamEnArreglo = [];
for i = 1: length(tamImg)
        TamEnArreglo = [TamEnArreglo; cell2mat(tamImg{i}(:,2))];
end

promTodasImg = mean(TamEnArreglo);
stdTodasImg = std(TamEnArreglo);
%Da una desviacion estandar mas alta que media, entonces implica que
%existen valores muy altos que la afectan

%% Histograma de Tamaños de Todas las imagenes del Dataset

h = histogram(TamEnArreglo,100);

%% Se ordena Imagenes en clase de menor a mayor

%Se puede encontrar en este cell el orden de clases con mayores fotos
SortTamIm = cell(length(tamImg),1);
for i = 1:length(tamImg)
    SortTamIm{i} = sortrows(tamImg{i},[2],{'descend'});
end


%% Se agrega un Item a tamImg de proporción entre M y N

TamImgProp = cell (length(tamImg),1);
for i = 1 : length(tamImg)
    auxCell = cell(length(tamImg{i}),5);
    for j = 1:length(tamImg{i})
        auxCell{j,1} = tamImg{i}{j,1};
        auxCell{j,2} = tamImg{i}{j,2};
        auxCell{j,3} = tamImg{i}{j,3};
        auxCell{j,4} = tamImg{i}{j,4};
        auxCell{j,5} = tamImg{i}{j,3}/tamImg{i}{j,4};
    end
    TamImgProp{i} = auxCell;
end


%Sort de la proporción
SortTamImProp = cell(length(tamImg),1);
for i = 1:length(tamImg)
    SortTamImProp{i} = sortrows(TamImgProp{i},[5],{'descend'});
end



