function rezultat = granice(slika, matrica)
%   slika - originalna slika
%   matrica - poopcena matrica s teksturama

velicina = max(size(slika));
vel_segmenta = 32;

matrica2 = matrica;

broj_segmenata = velicina/vel_segmenta;
brojac = 0;

% pronalazenje /Edge Blocka/
%
for k = 0:broj_segmenata-1
    for l = 0:broj_segmenata-1
        brojac = brojac + 1
        
        uzorak = matrica(k*vel_segmenta+1, l*vel_segmenta+1);
        zastavica = 0;
        if (k == 0) % ---------------------------------------------
            % nalazim se u prvom redu
            if (l == 0)
                % nalazim se u prvom stupcu
                % Treba uzet segment DOLJE i DESNO.
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
            elseif (l == broj_segmenata-1)
                % nalazim se na kraju prvog retka
                % Treba uzet uzorak DOLJE, LIJEVO
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;v
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
            else
                % nalazim se negdje u sredini prvog retka.
                % Treba uzet uzorak DOLJE, LIJEVO, DESNO
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
                susjedni_uzorak3 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak3)
                    zastavica = 1;
                end;
            end;
        elseif (k == broj_segmenata-1) % --------------------------
            % nalazim se u zadnjem retku
            if (l == 0)
                % nalazim se u prvom stupcu
                % Treba uzet uzorak  GORE i DESNO.
                susjedni_uzorak = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
            elseif (l == broj_segmenata-1)
                % nalazim se na kraju prvog retka
                % Treba uzet uzorak GORE i LIJEVO
                susjedni_uzorak = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
            else
                % nalazim se negdje u sredini prvog retka.
                % Treba uzet uzorak GORE, LIJEVO, DESNO
                susjedni_uzorak = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
                susjedni_uzorak3 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak3)
                    zastavica = 1;
                end;
            end;
        else % ---------------------------------------------------- 
            % nalazim se negdje u sredini redaka
            if (l == 0)
                % nalazim se u prvom stupcu
                % Treba uzet uzorak DOLJE, GORE i DESNO.
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
                susjedni_uzorak3 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak3)
                    zastavica = 1;
                end;
            elseif (l == broj_segmenata-1)
                % nalazim se na kraju prvog retka
                % Treba uzet uzorak DOLJE, GORE i LIJEVO.
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
                susjedni_uzorak3 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak3)
                    zastavica = 1;
                end;
            else
                % nalazim se negdje u sredini prvog retka.
                % Treba uzet uzorak DOLJE, GORE, LIJEVO, DESNO
                susjedni_uzorak = matrica((k+1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak)
                    zastavica = 1;
                end;
                susjedni_uzorak2 = matrica((k-1)*vel_segmenta+1, l*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak2)
                    zastavica = 1;
                end;
                susjedni_uzorak3 = matrica(k*vel_segmenta+1, (l-1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak3)
                    zastavica = 1;
                end;
                susjedni_uzorak4 = matrica(k*vel_segmenta+1, (l+1)*vel_segmenta+1);
                if (uzorak ~= susjedni_uzorak4)
                    zastavica = 1;
                end;
            end;
        % end od if-a za k
        end;
        if (zastavica == 1)
            % nadjen je EDGE blok i kreni i detekciju ruba
            blok = detekcija_ruba(slika, matrica, k, l);
            size(blok)
            matrica2(k*vel_segmenta+1 : k*vel_segmenta + vel_segmenta,...
                     l*vel_segmenta+1 : l*vel_segmenta + vel_segmenta) = blok;
        end;
    end;
end;

rezultat = matrica2;