Page 266 -
P. 266
240 Chapter 6 ■ Thinning
* *
/ Stentiford’s Acute Angle Emphasis /
void aae (IMAGE im)
{
int i, j, again = 0, k;
again = 0;
for (k=5; k> = 1; k-=2)
{
for (i=2; i<im->info->nr-2; i++)
for (j=2; j<im->info->nc-2; j++)
if (im->data[i] [j] == 0)
match_du (im, i, j, k);
for (i = 2; i<im->info->nr-2; i++)
for (j=2; j<im->info->nc-2; j++)
if (im->data[i] [j] = = 2)
{
again = 1;
im->data[i] [j] = 1;
}
if (again = = 0) break;
}
}
* *
/ Template matches for acute angle emphasis /
void match_du (IMAGE im, int r, int c, int k)
{
* *
/ D1 /
if (im->data[r-2] [c-2] == 0 && im->data[r-2] [c-1] == 0 &&
im->data[r-2] [c] == 1 && im->data[r-2] [c+1] == 0 &&
im->data[r-2] [c+2] == 0 &&
im->data[r-1] [c-2] == 0 && im->data[r-1] [c-1] == 0 &&
im->data[r-1] [c] == 1 && im->data[r-1] [c+1] == 0 &&
im->data[r-1] [c+2] == 0 &&
im->data[r] [c-2] == 0 && im->data[r] [c-1] == 0 &&
im->data[r] [c] == 0 && im->data[r] [c+1] == 0 &&
im->data[r] [c+2] == 0 &&
im->data[r+1] [c-2] == 0 && im->data[r+1] [c-1] == 0 &&
im->data[r+1] [c] == 0 && im->data[r+1] [c+1] == 0 &&
im->data[r+1] [c+2] == 0 &&
im->data[r+2] [c-1] == 0 &&
im->data[r+2][c] == 0 && im->data[r+2] [c+1] == 0)
{
im->data[r] [c] = 2;
return;
}
*
/ * D2 /
if (k >= 2)
if (im->data[r-2] [c-2] == 0 && im->data[r-2] [c-1] == 1 &&
im->data[r-2] [c] == 1 && im->data[r-2] [c+1] == 0 &&