close all 
clear all
clc
%% Otevření okna pro výběr části obrazu
[nazev_souboru,cesta_k_souboru]=uigetfile({...
    '*.jpg;*.jpeg;*.jpe;*.jfif','JPEG (*.jpg,*.jpeg,*.jpe,*.jfif)';...
    '*.bmp;*.dib','Rastrový obrázek (*.bmp,*.dib)';...
    '*.gif','GIF (*.gif)';...
    '*.tif;*.tiff','TIFF (*.tif,*.tiff)';...
    '*.png','PNG (*.png)';...
    '*.bmp;*.dib;*.jpg;*.jpeg;*.jpe;*.jfif;*.gif;*.tif;*.tiff;*.png','All Image Files';...
    '*.*','All Files'});

obraz=imread([cesta_k_souboru,nazev_souboru]); % načtení obrazu do matlabu
[radky sloupce barev]=size(obraz);  % zjištění velikosti obrazu 
obraz_RGB=rgb2gray(obraz);  % převedení do šedotónového formátu

maska_obrazu=roipoly(obraz);    % vybrání části obrazu a spuštění analýzy   
close 1 % zavření okna pro výběr části obrazu

obraz=double(obraz);    % převedení z formátu uint8 do formátu double
obraz_orez=obraz;   % kopie původního obrazu

for k1=1:barev  % výpočet vybrané oblasti pro formát RGB
    obraz_orez(:,:,k1)=obraz(:,:,k1).*maska_obrazu; % vynásobení masky obrazu a vstupního obrazu - všechny nevybrané oblasti budou nulové
end
obraz_RGB_orez=uint8(obraz_orez); % převedení do formátu uint8 kvůli vykreslení
obraz_GRAY_orez=rgb2gray(uint8(obraz_orez));    % převedení výřezu do šedotónového formátu

%% Vykreslení obrazů
figure, 
subplot(1,3,1)
imshow(uint8(obraz))  % vykreslení originálního vstupního obrazu
title('Original')

subplot(1,3,2)
imshow(obraz_RGB_orez) % vykreslení ořezaného originálního obrazu
title('Vyřez')

subplot(1,3,3)
imshow(obraz_GRAY_orez) % vykreslení výřezu v šedotónovém formátu
title('Šedotónový obr.')

%% Výpočet průměrné hodnoty ve výřezu šedotonového obrazu
vyber_vektor_GRAY=zeros(1,(sum(sum(maska_obrazu))));% předdefinování pomocné proměnné pro šedotónový výřez
pom=0; % pomocná proměnná bez nulových hodnot

% seřazení výběru do pomocné proměnné tak, aby nebyly v matici obsaženy i
% pozice, které nejsou ve výběru
for k2=1:radky  % prohledávání všech řádků 
    for k3=1:sloupce    % prohledávání všech sloupců 
        if maska_obrazu(k2,k3)==1   % když je maska výřezu na daném řádku a sloupci rovna nule,
            % potom dojde ke zkopírování hodnot do pomocné proměnné 
            pom=pom+1; % pomocná proměnná pro pozice v pomocných proměnných 
           vyber_vektor_GRAY(1,pom)=obraz_GRAY_orez(k2,k3,:);  % pro GRAY formát
        end
    end
end

prum_GRAY=mean(vyber_vektor_GRAY(1,:)); % výpočet průměrného obsahu intenzity v šedotónovém formátu

%% Vypsání zjištěné hodnoty intenzity fluorescence
disp(['--------------------------------------------------------------------'])
disp(['Výřez obrázku ve formátu GRAY'])
disp(['Průměrná intenzita fluorescence ve výřezu v šedotónovém obraze je:  ', num2str(prum_GRAY)])
disp(['--------------------------------------------------------------------'])