%Testovací skript sloužící pro demonstraci doplnění úseků přerušených
%kostí. Technika je založena na metodě region growing.
%
%                                                Vypracoval: Tomáš Janovič

%%
%Inicializace
close all;
clear all;
clc;

load img; %načtení originálníh obrazu
load img_seg; %načtení segmentovaného obrazu
load ut.mat; %načtení globálního prahu pro segmentaci
load mis_points.mat; %načtení pozic potenciálně přerušených kostí

doplnene_useky = zeros(512,512); %alokace paměti

for i=1:length(mis_points)-1 %pro všechny kontury v obrazu
    body = mis_points{i}; %uložení pozic
    if size(body,1)<=5 
        ostatni_body = mis_points{i+1};
    else
        ostatni_body = [mis_points{i}; mis_points{i+1}];
    end
    for j=i+2:length(mis_points)
        ostatni_body = [ostatni_body; mis_points{j}]; %uložení ostatních bodů
    end  
    for k=1:size(body,1) %pro všechny body
        x = body(k,1); %uložení x souřadnice
        y = body(k,2); %uložené y souřadncie
        for j=1:size(ostatni_body,1) %porovnání s ostatními body
            x2 = ostatni_body(j,1); %uložení x souřadnice
            y2 = ostatni_body(j,2); %uložené y souřadnice
            vzdalenost = sqrt((x-x2)^2+(y-y2)^2); %výpočet vzdálenosti
            
            if vzdalenost<=20 && vzdalenost>0 %pokud je menší nebo rovna než 20
                maska = zeros(512,512); %deklarace masky
                maska(min([x x2])-5:max([x x2])+5,min([y y2])-5:max([y y2])+5) = 1; %naplnění masky
                I = img.*maska; %vynásobení masky s originálním obrazem
                J = region_growing(I,x,y,ut,0.03); %region growing
%                 J = bwmorph(J,'thin'); %morf. op. pro ztenčení
%                 J = bwmorph(J,'thin');
                doplnene_useky = doplnene_useky+J; %přičtení k doplněným úsekům
            end
        end
    end
end

doplnene_useky = doplnene_useky + img_seg>0; %přištení doplněných úseků se segmentovaným obrazem
doplnene_useky = doplnene_useky>0; %logická maska
useky = img.*doplnene_useky; %vynásobení masky s původním obrazem

figure(1)
imshow(img)
title('Originální obraz');

figure(2) %zobrazení
subplot(121)
imshow(img_seg)
title('Původně segmentovaný obraz');
subplot(122)
imshow(useky)
title('Segmentovaný obraz s doplněnými úseky');






