Exemple #1
0
void checkD(int i1, int j1)
{
    if((i1-1)>=0 && flag[i1-1][j1]=='f' && temp[i1-1][j1]=='D')
    {
        flag[i1-1][j1]='t';
        noD++;
        checkD(i1-1, j1);
    }
    if((i1+1)<m && flag[i1+1][j1]=='f' && temp[i1+1][j1]=='D')
    {
        flag[i1+1][j1]='t';
        noD++;
        checkD(i1+1, j1);
    }
    if((j1-1)>=0 && flag[i1][j1-1]=='f' && temp[i1][j1-1]=='D')
    {
        flag[i1][j1-1]='t';
        noD++;
        checkD(i1, j1-1);
    }
    if((j1+1)<n && flag[i1][j1+1]=='f' && temp[i1][j1+1]=='D')
    {
        flag[i1][j1+1]='t';
        noD++;
        checkD(i1, j1+1);
    }
}
Exemple #2
0
int connected()
{
    int i1=0, j1=0;
    noT=noD=0;
    nflag=0;
    for(i1=0; i1<m; i1++)
    {
        for(j1=0; j1<n; j1++)
        {
            if(temp[i1][j1]=='T')
            {
                nflag=1;
                break;
            }
        }
        if(nflag)
            break;
    }
    //printf("ti1=%d j1=%d\n", i1, j1);
    nflag=0;
    if(temp[i1][j1]=='T')
    {
        reset();
        flag[i1][j1]='t';
        noT++;
        checkT(i1, j1);
    }
    for(i1=0; i1<m; i1++)
    {
        for(j1=0; j1<n; j1++)
        {
            if(temp[i1][j1]=='D')
            {
                nflag=1;
                break;
            }
        }
        if(nflag)
            break;
    }
    //printf("di1=%d j1=%d\n", i1, j1);
    if(temp[i1][j1]=='D')
    {
        reset();
        flag[i1][j1]='t';
        noD++;
        checkD(i1, j1);
    }
    if(noT==countT && noD==countD)
        return 1;
    else
        return 0;
}
Exemple #3
0
void CPUSkeletonize::perform(int type, int structElemV, Image3d *image) {
  Image3d imageIn(image->getRows(), image->getCols(),
                  image->get3dMatImage().clone());
  switch (type) {
  case 0: {
    checkA(image, imageIn, structElemV);
    break;
  }
  case 1: {
    checkB(image, imageIn, structElemV);
    break;
  }
  case 2: {
    checkC(image, imageIn, structElemV);
    break;
  }
  case 3: {
    checkD(image, imageIn, structElemV);
    break;
  }
  }
  imageIn.clear();
}