Page 271 -
P. 271
Chapter 6 ■ Thinning 245
return k;
}
*
/ * Holt’s staircase removal stuff /
void check (int v1, int v2, int v3)
{
if (!v2 && (!v1 || (v3)) t00 = TRUE;
if ( v2 && ( v1 || v3)) t11 = TRUE;
if ( (!v1 && v2) || (!v2 && v3) )
{
t01s = t01;
t01 = TRUE;
}
}
int edge (IMAGE im, int r, int c)
{
if (im->data[r] [c] == 0) return 0:
t00 = t01 = t01s = t11 = FALSE;
* *
/ CHECK (vNW, vN, vNE) /
check (im->data[r-1] [c-1], im->data[r-1] [c], im
->data[r-1] [c+1]);
/ * CHECK (vNE, vE, vSE) * /
check (im->data [r-1][c+1], im->data[r] [c+1],
im->data[r+1] [c+1]);
/ * CHECK (vSE, vS, vSW) * /
check (im->data [r+1] [c+1], im->data [r+1] [c],
im->data [r+1] [c-1]);
/ * CHECK (vSW, vW, vNW) * /
check (im->data [r+1] [c-1], im->data [r] [c-1],
im->data [r-1] [c-1]);
return t00 && t11 && !t01s;
}
void stair (IMAGE im, IMAGE tmp, int dir)
{
int i, j;
int N, S, E, W, NE, NW, SE, SW, C;
if (dir == NORTH)
for (i=1; i<im->info->nr-1; i++)
for (j=1; j<im->info->nc-1; j++)
{
NW = im->data[i-1] [j-1]; N = im->data[i-1] [j]; NE = im->data[i-1] [j+1];
W = im->data[i] [j-1]; c = im->data[i] [j]; E =
im->data[i] [j+1];
SW = im->data[i+1][j-1]; S = im->data[i+1] [j]; SE = im->data[i+1] [j+1];
if (dir == NORTH)