Page 270 -
P. 270

244   Chapter 6 ■ Thinning


                                   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;
                               }
                           / *  U5  *  /
                               if (k>=5)
                               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] == 1 &&
                                   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] == 1 &&
                                   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;
                               }
                           }
                                                       *
                           / *  Yokoi’s connectivity measure /
                           int Yokoi (IMAGE im, int r, int c)
                           {
                               int N[9];
                               int i, j, k, i1, i2;
                               N[0] = im->data[r] [c] != 0;
                               N[1] = im->data[r] [c+1] != 0;
                               N[2] = im->data[r-1] [c+1] != 0;
                               N[3] = im->data[r-1] [c] != 0;
                               N[4] = im->data[r-1] [c-1] != 0;
                               N[5] = im->data[r] [c-1] != 0;
                               N[6] = im->data[r+1] [c-1] != 0;
                               N[7] = im->data[r+1] [c] != 0;
                               N[8] = im->data[r+1] [c+1] != 0;
                               k= 0
                               for (i=1; i<=7; i+=2)
                               {
                                 i1 = i+1; if (i1 > 8) i1 -= 8;
                                 i2 = 1+2; if (i2 > 8) i2 -= 8;
                                 k += (N[i] - N[i]  *  N[i1]  * N[i2]);
                               }
   265   266   267   268   269   270   271   272   273   274   275