%AUTHOR : RAJJAN SINGH THAKUR (VIT UNIVERSITY)
%DATE :14/2/09
%FUNCTION TO GET CONTOUR PIXELS OF A BINARY IMAGE
%INPUT PARAMETERS ARE BINARY IMAGE AND A ROW AND COL NO OF
%ANY 1 PIXEL ON THE CONTOUTR
%
%OUTPUT PARAMETERS ARE:
%1.KNEW: CONTOUR IMAGE OF THE GIVEN BINARY IMAGE
%2.M: [1x2] VECTOR CONTAINING X AND Y COORDINATES OF CONTOUR BACKGROUND PIXELS
%3.N: [1X2] VECTOR CONTAINING X AND Y COORDINATES OF CONTOUR OBJECT PIXELS
function [knew,m,n] = contour_b(a,row,col)
i=row;
j=col;
loop=0;
count=0;
counto=0;
k=zeros(size(a,1),size(a,2));
i=row;
j= col;
%counto(1,:)=[row,col];
b=[1 2
4 3];
z=1;
while(z)
if (a(i,j)==1)
counto=counto+1;
n(counto,:)=[i,j];
b=rot90(b);
d= b(1,1);
switch(d)
case 1
i=i;
j=j+1;
%n(counto,:)=[i,j];
%k(i,j)=255;
case 2
i=i-1;
j=j;
%n(counto,:)=[i,j];
%k(i,j)=255;
case 3
i=i;
j=j-1;
%n(counto,:)=[i,j];
%k(i,j)=255;
case 4
i=i+1;
j=j;
%n(counto,:)=[i,j];
%k(i,j)=255;
otherwise
[]
end
else
k(i,j)=255;
count=count+1;
m(count,:)=[i ,j];
b=rot90(b,-1);
d=b(1,1);
%UNCOMMENT IMSHOW COMMAND IF U R USING MATLAB 6.5 TO SEE HOW REGION IS GROWING
%imshow(k)
switch(d)
case 1
i=i;
j=j+1;
%k(i,j)=255;
%m(count,:)=[i ,j];
%imshow(k)
case 2
i=i-1;
j=j;
%k(i,j)=255;
%m(count,:)=[i ,j];
%imshow(k)
case 3
i=i;
j=j-1;
%k(i,j)=255;
%m(count,:)=[i ,j];
%imshow(k)
case 4
i=i+1;
j=j;
%k(i,j)=255;
%m(count,:)=[i ,j];
%mshow(k)
otherwise
[]
end
end
if (i==row & j==col & d==1)
z=0;
end
end
knew=mat2gray(k);
imshow(knew)
title('contour of given image (mixed neihbourhood)');
figure,imshow(a)
%[xn,yn]=find(k);
% knew2=eightneighbour(knew,n);
% knew3=mat2gray(knew2)
% figure,imshow(knew3)
% title('contour image with eight neighbourhood')