Monday, August 2, 2010

Chain Coding

clear all; close all; clc;
a = imread('circles.png');
a = imresize(a,[256,256]);
[m n]=size(a);
b = zeros([m n]);
figure,imshow(a);
w = [0 1 0 1 1 1 0 1 0]; % structuring element
for i=2:m-1
for j=2:n-1
con=0;
for k=i-1:i+1
for p=j-1:j+1
con=con+1;
s(con)= a(k,p)*w(con);
end
end
if sum(s) > 0
b(i,j)=1;
end
end
end
f2 = xor(a,b);
figure,imshow(f2),title('Object Edge');
Ipo = a(19,35);
co=0; Cont = 0;Cva = 0;
i=19; j=35;
while (co==0)
if a(i,j)==Ipo
if a(i,j+1) == a(i,j)
Cont=Cont+1;
CVa(Cont)=0;
i=i;j=j+1;
if (i==19) && (j == 35)
co=1;
end
elseif a(i-1,j+1) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=1;
i=i-1;j=j+1;
if (i==19) && (j == 35)
co=1;
end
elseif a(i-1,j) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=2;
i=i-1; j=j;
if (i==19) && (j == 35)
co=1;
end
elseif a(i-1,j-1) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=3;
i=i-1; j=j-1;
if (i==19) && (j == 35)
co=1;
end
elseif a(i-1,j) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=4;
i=i-1; j=j;
if (i==19) && (j == 35)
co=1;
end
elseif a(i+1,j-1) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=5;
i=i+1; j=j-1;
if (i==19) && (j == 35)
co=1;
end
elseif a(i+1,j) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=6;
i=i+1; j=j-1;
if (i==19) && (j == 35)
co=1;
end
elseif a(i+1,j+1) ==  a(i,j)
Cont=Cont+1;
CVa(Cont)=7;
i=i+1; j=j+1;
if (i==19) && (j == 35)
co=1;
end
else
co=1;
end
else
co=1;
end
end

No comments: