% funkce na zjištění, rozpoznání znaků v kolonkách, pokud jsou kolonky spojené
function [znak_pismeno navrhy obraz_pismeno] = funkce_znaky_kolonky(obrazek)

obrazek_kolonky_1 = im2double(obrazek);
obrazek_kolonky = obrazek_kolonky_1;

mez = 0.95;
obrazek_kolonky_1 = obrazek_kolonky;
obrazek_kolonky_1(obrazek_kolonky > mez) = 0;
obrazek_kolonky_1(obrazek_kolonky <= mez) = 1;

obrazek_kolonky_1 = medfilt2(obrazek_kolonky_1,[3 3]);

% oříznutí celého řádku ze stran
[nic,poziceH_obrazek_kolonky] = funkce_prumet(obrazek_kolonky_1,'H');
[nic,poziceV_obrazek_kolonky] = funkce_prumet(obrazek_kolonky_1,'V');
% nějaká chyba, na poslední dvě pozice se zapisují stejné čísla
if poziceH_obrazek_kolonky(end-1) == poziceH_obrazek_kolonky(end)
    poziceH_obrazek_kolonky(end-1) = poziceH_obrazek_kolonky(end-2);
    poziceV_obrazek_kolonky(end-1) = poziceV_obrazek_kolonky(end-2);    
end
    
obrazek_kolonky_2_orez = obrazek_kolonky_1(poziceV_obrazek_kolonky(2):poziceV_obrazek_kolonky(end-1),poziceH_obrazek_kolonky(2):poziceH_obrazek_kolonky(end-1));
% ořezání nenaprahovaného
obrazek_kolonky_orez = obrazek_kolonky(poziceV_obrazek_kolonky(2):poziceV_obrazek_kolonky(end-1),poziceH_obrazek_kolonky(2):poziceH_obrazek_kolonky(end-1));

[prumetH_obrazek_kolonky_2_orez,nic] = funkce_prumet(obrazek_kolonky_2_orez,'H');
[prumetV_obrazek_kolonky_2_orez,nic] = funkce_prumet(obrazek_kolonky_2_orez,'V');

% zjistim šířku kolonek, která by měla byt zhruba stejná
% najde první čáru
minimum_pozice = 0;
maximum = 0;
i = 1;
while i < length(prumetH_obrazek_kolonky_2_orez)   % maximum - pětina výšky obrazu
    if prumetH_obrazek_kolonky_2_orez(i) >= (maximum - max(prumetH_obrazek_kolonky_2_orez)/5)
        minimum_pozice = i + 1;
        maximum = prumetH_obrazek_kolonky_2_orez(i);
    else
        i = length(prumetH_obrazek_kolonky_2_orez);
    end
    i = i + 1;
end

% šířka čáry je minimální pozice
sirka_cary = minimum_pozice;

% najde druhou čáru
maximum_pozice = 1 + minimum_pozice;
i = maximum_pozice;
while i < length(prumetH_obrazek_kolonky_2_orez)
    if prumetH_obrazek_kolonky_2_orez(i) + sirka_cary >= maximum
        maximum_pozice = i - 1;
        i = length(prumetH_obrazek_kolonky_2_orez);
    end
    i = i + 1;
end
% rozdíl je šířka kolonky
sirka_kolonky = maximum_pozice - minimum_pozice;

% ořeže vrchní a spodní čáry, ale také levou a pravou svyslou čárou
obrazek_kolonky_2_orez2 = obrazek_kolonky_2_orez(sirka_cary+2:end-sirka_cary-2,2+sirka_cary:end-2-sirka_cary);
% ořezání nenaprahovaného
obrazek_kolonky_orez2 = obrazek_kolonky_orez(sirka_cary+2:end-sirka_cary-2,2+sirka_cary:end-2-sirka_cary);


[prumetH_obrazek_kolonky_2_orez2,poziceH_obrazek_kolonky_2_orez2] ...
    = funkce_prumet(obrazek_kolonky_2_orez2(2*sirka_cary:end-sirka_cary*2,:),'H');

hodnota_cary = max(prumetH_obrazek_kolonky_2_orez2);
pozice_car = find(hodnota_cary-5 <= sum(obrazek_kolonky_2_orez2(2*sirka_cary:end-sirka_cary*2,:)));

% zapsání poslední souřadnice
pozice_car(length(pozice_car) +1) = poziceH_obrazek_kolonky_2_orez2(end);

k = 1;
i = 1;
while i <= (length(pozice_car)-1)
    
    if i == 1 % poprvé začíná od 1
        x1 = 1;
        x2 = pozice_car(i);
        i = i - 1;
    else
        x1 = pozice_car(i);
        x2 = pozice_car(i+1);
    end
    
    while (x2-x1) < sirka_cary && i <= (length(pozice_car)-2)
        i = i + 1;
        x1 = x1 + 1;
        x2 = pozice_car(i+1);
    end
    
    % vysledné písmeno
    orez = round(sirka_cary/2);
   
    pismeno = obrazek_kolonky_orez2(:,x1:x2);
    
    pismeno(1:orez,:) = 1;
    pismeno(:,1:orez) = 1;
    pismeno(:,end-orez:end) = 1;
    pismeno(end-orez:end,:) = 1;
    pismeno = medfilt2(pismeno,[3 3]);
    pismeno = pismeno(2:end-2,2:end-2);
    % prahovani 
    mez = 0.95;
    prahovani = pismeno;
    pismeno(prahovani > mez) = 0;
    pismeno(prahovani <= mez) = 1;

    % pokud je součet bodů písmene menší než setina rozměru, dojde k
    % ukončení a zapsání '*'  
    [a_pismeno b_pismeno] = size(pismeno);
     soucet_stredu = sum(sum(pismeno(round(a_pismeno/8):end-round(a_pismeno/8),round(b_pismeno/8):end-round(b_pismeno/8))));
    if soucet_stredu < a_pismeno*b_pismeno/100 && x1 < sirka_kolonky
        znak_pismeno = '*';
        break;
    elseif soucet_stredu < a_pismeno*b_pismeno/100
        znak_pismeno(k) = ' ';
        k = k + 1;
    else
        kolonka_prepis = pismeno;

%         funkce rozpoznání
        [znak_pismeno(k) predbezne_navrhy obraz_pismeno{k}] = funkce_rozpoznani(kolonka_prepis,'P');
        navrhy(1+2*(k-1):2+2*(k-1),:) = predbezne_navrhy;

        k = k + 1;
    end
    i = i + 2;
end
end