function data = loaddicom()
%Funkce sloužící pro načtení objemu dat ve formátu DICOM. Data jsou rovněž
%seřazena dle čísla instance.

[filename, pathname] = uigetfile( ... %Open File Dialog
{  '*.*','All-files (*.*)';}, ...
   'Pick a DICOM file', ...
   'MultiSelect', 'on');

if isequal(filename,0) %v případě, že nejsou vybrána žádná data
    throw(MException('MATLAB:LoadErr','Nebyla vybrána žádná data.'));
end

if iscell(filename)==0 %pokud je vybrán jenom jeden soubor
    if isdicom([pathname filename])==1 %kontrola pokud se jedná formát DICOM
        data = dicomread([pathname filename]); %načtení souboru
    else
        throw(MException('MATLAB:LoadErr','Některá vstupní data nejsou formátu DICOM.'));
    end
else
    n = length(filename); %počet souborů
    data = zeros(512,512,n); %alokace paměti
    pomfil = zeros(1,n); %pomocná proměnná pro seřazení souborů
    for i=1:n
        if isdicom([pathname filename{i}])==1 %kontrola pokud se jedná formát DICOM
            info = dicominfo([pathname filename{i}]); %info o DICOM obrazu
            pomfil(i) = info.InstanceNumber; %uložení čísla instance
        else
            throw(MException('MATLAB:LoadErr','Některá vstupní data nejsou formátu DICOM.'));
        end
    end
    [~,index] = sort(pomfil); %seřazení vzledem k instančnímu číslu
    for i=1:n
        data(:,:,i) = dicomread([pathname filename{index(i)}]); %načtení souboru
    end
end
end

