Code:
function G=labeling(E)
[M,N]=size(E);
G=zeros(M,N);
spoc=sum(sum(G));
tek=1;
for m=1:M
for n=1:N
if(E(m,n))
G(m,n)=tek;
tek=tek+1;
end
end
end
while stek>spoc
spoc=stek;
G=max(max(G,[zeros(M,1),G(:,1:M-1)]), [G(:,2:N),zeros(M,1)]).*E;
G=max(max(G,[zeros(1,N);G(1:M-1,:)]), [G(2:M,:);zeros(1,N)]).*E;
stek=sum(sum(G));
end
function G=labeling(E)
[M,N]=size(E);
G=zeros(M,N);
spoc=sum(sum(G));
tek=1;
for m=1:M
for n=1:N
if(E(m,n))
G(m,n)=tek;
tek=tek+1;
end
end
end
while stek>spoc
spoc=stek;
G=max(max(G,[zeros(M,1),G(:,1:M-1)]), [G(:,2:N),zeros(M,1)]).*E;
G=max(max(G,[zeros(1,N);G(1:M-1,:)]), [G(2:M,:);zeros(1,N)]).*E;
stek=sum(sum(G));
end
Kada ucitam sliku i iskoristim ovaj deo koda javla mi grsku
function G=labeling(E)
A znam da deo funkcije vrsi maksimiziranje labela iz susedstva samo za tačke koje pripadaju objektima, kako na osnovu ovoga prebrojati objekte.
Code:
G=max(max(G,[zeros(M,1),G(:,1:M-1)]), [G(:,2:N),zeros(M,1)]).*E;
G=max(max(G,[zeros(1,N);G(1:M-1,:)]), [G(2:M,:);zeros(1,N)]).*E;
G=max(max(G,[zeros(M,1),G(:,1:M-1)]), [G(:,2:N),zeros(M,1)]).*E;
G=max(max(G,[zeros(1,N);G(1:M-1,:)]), [G(2:M,:);zeros(1,N)]).*E;
Matlab u sustini koristim da bi mi rezultat bio prikazan slikovito, zbog toga treba da izbegavam funkcije iz matlaba, taj algoritam koji budem napisao treba da prebacim u C jezik posto tu sliku posle smestam na mikrokontroler, sintaksa ce se razlikovati.
Hvala unapred