শুক্রবার, ৪ অক্টোবর, ২০১৩

C implementation of MATLAB function BWAREAOPEN

In my fourth year project , I have done a C implementaion of bwareaopen. The code worked well . It was written long ago so forgot how it was used. All I remember was that the image was given as a .h file value buffer. I guess if you need it then you can easily figure that out :).
===========================================
//bwareaopen.c

#define TH 95 //65
static int COUNT=0;
static int DELREG[TH][2]={{0},{0}};
static unsigned char Flag;
int X,Y;
/////////////////////////////block by dj////////////////////////////////////////////////////
int indexing(unsigned char *in_img,unsigned char *out_img,int m,int n)
{
if(Flag==0)
return(0);
if(Flag==1){
if(out_img[m*Y+n]==0)
 {
 out_img[m*Y+n]=1;
 if(in_img[m*Y+n]==255)
   {
   
   //printf("%d  %d \n",m,n);
   indexing(in_img,out_img,(m-1),(n-1));
   indexing(in_img,out_img,(m-1),n);
   indexing(in_img,out_img,(m-1),(n+1));
   indexing(in_img,out_img,m,(n-1));
   indexing(in_img,out_img,m,(n+1));
   indexing(in_img,out_img,(m+1),(n-1));
   indexing(in_img,out_img,(m+1),n);
   indexing(in_img,out_img,(m+1),(n+1));
   if(COUNT<=TH){
   DELREG[COUNT][0]=m;
   DELREG[COUNT][1]=n;
}  
   COUNT++;
if(COUNT==TH){
Flag=0;
}
   }
  }
 }
 return(0);
 }

 void bwareaopen_dj(unsigned char *in_img,unsigned char *out_img,int row,int col)
 {

 int i,j,xx;
X=row;
Y=col;

for(i=1;i{
for(j=1;j   {
    if(in_img[i*Y+j]==255 && out_img[i*Y+j]==0 )
    {
Flag=1;
    indexing(in_img,out_img,i,j);

    //printf("end of cluster :::size=%d \n",COUNT);

//area delete if below threshold amount
       if(COUNT       {
       for(xx=0;xx       {
       in_img[(DELREG[xx][0]) *Y +(DELREG[xx][1])]=0;
       }
       }
    COUNT=0;
   
    }
   }
}

 }




কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন