No BSD License  

Highlights from
contour following in binary images

image thumbnail
from contour following in binary images by rajjan thakur
the function finds the contour pixels in a bw image.. the object is assumed to be white.

contour_b(a,row,col)
%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')




Contact us at files@mathworks.com