Page 265 -
P. 265
Chapter 6 ■ Thinning 239
*
/ * Number of neighboring 1 pixels /
int nays8 (IMAGE im, int r, int c)
{
int i, j, k=0;
for (i=r-1; i<=r+1; i++)
for (j=c-1; j<=c+1; j++)
if (i !=r || c !=j)
if (im->data[i] [j] >= 1) k++;
return k;
}
*
/ * Number of neighboring 0 pixels /
int snays (IMAGE im, int r, int c)
{
int i, j, k=0;
for (i=r-1; i<=r+1; i++)
for (j=c-1; j<=c+1; j++)
if (i !=r || c !=j)
if (im->data[i] [j] == 0) k++;
return k;
}
/ * Connectivity by counting black-white transitions on the boundary * /
int Connectivity (IMAGE im, int r, int c)
{
int i, N=0;
if (im->data[r] [c+1] >= 1 && im->data[r-1] [c+1] == 0) N++;
if (im->data[r-1] [c+1] >= 1 && im->data[r-1] [c] == 0) N++;
if (im->data[r-1] [c] >= 1 && im->data[r-1] [c-1] == 0) N++;
if (im->data[r-1] [c-1] >= 1 && im->data[r] [c-1] == 0) N++;
if (im->data[r] [c-1] >= 1 && im->data[r+1] [c-1] == 0) N++;
if (im->data[r+1] [c-1] >= 1 && im->data[r+1] [c] == 0) N++;
if (im->data[r+1] [c] >= 1 && im->data[r+1] [c+1] == 0) N++;
if (im->data[r+1] [c+1] >= 1 && im->data[r] [c+1] == 0) N++;
return N;
}
*
/ * Stentiford’s boundary smoothing method /
void pre_smooth (IMAGE im)
{
int, i, j;
for (i=0; i<im->info->nr; i++)
for (j=0; j<im->info->nc; j++)
if (im->data[i] [j] = = 0)
if (snays (im, i, j) <= 2 && Yokoi (im, i, j)<2)
im->data[i] [j] = 2;
for (i=0; i<im->info->nr; i++)
for (j=0; j<im->info->nc; j++)
if (im->data[i] [j] = = 2) im->data[i] [j] = 1;
}