Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Victor A. Pavlov                     2:5025/81      26 Jul 2002  00:16:35
 To : Evgen Kondratyuk
 Subject : Need Help -> Векторизация
 -------------------------------------------------------------------------------- 
 
 
  Как то раз (Чет Июл 25 2002 12:15) Evgen Kondratyuk написал письмо Victor A.
 Pavlov:
 
  VAP>> 3. Скелетизация (thinning).   Hа данном
  VAP>> этапе все линии на изображении приводятся к толщине в 1 пиксел. Имеется
  VAP>> несколько алгоритмов скелетизации, например, Zhang-Suen. Если нужен
  VAP>> пример в исходниках - могу выслать.
  EK> Вышли пожалуйста.
 
   Кидаю в эху, т.к. уже второй запрос.
   Хотя исходник и несколько сырой, но разобраться можно.
 
 === Begin Windows Clipboard ===
 /* Zhang-Suen thinning */
 
 int y [256][256];
 
 main()
 {
 
  int i,j,k,n,m;
  int im[256][256];
 /* Read the glyph       */
  scanf ("%d", &n); scanf("%d", &m);
  for (i=0; i<n; i++) {
     for (j=0; j<m; j++) {
   scanf ("%d", &k);
   im[i][j] = k;
  }  }
 
  iputim (im, n, m);
  thin_b (im, n, m);
  iputim (im, n, m);
 }
 
 iputim (image,n,m)
  int image[256][256],n,m;
 {
  int i,j;
 
  for (i=0; i<n; i++) {
     for (j=0; j<m; j++)  {
   if (image[i][j] >= 100) image[i][j] = 9;
   printf ("%3d", image[i][j]);
     }
     printf ("\n");
  }
 }
 thin_b (image,nn,mm)
  int image[256][256], nn,mm;
 {
 /*  Thinning algorithm: CACM 1984 march (Zhang and Suen) */
 
  int i,j,n,m,k, cont, br,ar,p1,p2, t1a();
  int a[8];
 
  printf ("Thinning algorithm: CACM 1984 march (Zhang and Suen) \n");
  cont = 1;
  while (cont) {
   printf ("+\n");
   cont = 0;
 
 /* Sub-iteration 1: */
   for (i=0; i<nn; i++)
     for (j=0; j<mm; j++) {  /* Scan the entire image */
    if (image[i][j] == 0) {
     y[i][j] = 0;
     continue;
    }
    ar = t1a (image, i, j, a, &br,nn,mm); /* Function A */
    p1 = a[0]*a[2]*a[4];
    p2 = a[2]*a[4]*a[6];
    if ( (ar == 1) && ((br>=2) && (br<=6)) &&
     (p1 == 0) && (p2 == 0) )  {
      y[i][j] = 1;
      cont = 1;
    }
    else y[i][j] = 0;
   }
   subtr (y, image,nn,mm);
 
 /* Sub iteration 2: */
   for (i=0; i<nn; i++)
     for (j=0; j<mm; j++) {  /* Scan the entire image */
    if (image[i][j] == 0) {
     y[i][j] = 0;
     continue;
    }
    ar = t1a (image, i, j, a, &br,nn,mm); /* Function A */
    p1 = a[0]*a[2]*a[6];
    p2 = a[0]*a[4]*a[6];
    if ( (ar == 1) && ((br>=2) && (br<=6)) &&
     (p1 == 0) && (p2 == 0) )  {
      y[i][j] = 1;
      cont = 1;
    }
    else y[i][j] = 0;
   }
   subtr (y, image,nn,mm);
  }
 }
 
 subtr (a, b, n,m)
  int a[256][256], b[256][256],n,m;
 {
  int i,j;
 
  for (i=0; i<n; i++)
   for (j=0; j<m; j++)
    b[i][j] -= a[i][j];
 }
 int t1a (image, i, j, a, b,nn,mm)
  int image[256][256];
  int i,j, *b,nn,mm;
  int a[8];
 {
 /* Return the number of 01 patterns in the sequence of pixels
  P2 p3 p4 p5 p6 p7 p8 p9.     */
 
  int n,m;
 
  for (n=0; n<8; n++) a[n] = 0;
  if (i-1 >= 0) {
   a[0] = image[i-1][j];
   if (j+1 < mm) a[1] = image[i-1][j+1];
   if (j-1 >= 0) a[7] = image[i-1][j-1];
  }
  if (i+1 < nn) {
   a[4] = image[i+1][j];
   if (j+1 < mm) a[3] = image[i+1][j+1];
   if (j-1 >= 0) a[5] = image[i+1][j-1];
  }
  if (j+1 < mm) a[2] = image[i][j+1];
  if (j-1 >= 0) a[6] = image[i][j-1];
 
  m= 0; *b = 0;
  for (n=0; n<7; n++) {
   if ((a[n]==0) && (a[n+1]==1)) m++;
   *b = *b + a[n];
  }
  if ((a[7] == 0) && (a[0] == 1)) m++;
  *b = *b + a[7];
  return m;
 }
 
 /*  End of method B     */
 === End Windows Clipboard ===
 
 Всего хорошего - Victor
 
 --- GoldED/W32 3.0.1
  * Origin: Red Station, Voronezh, Russia (2:5025/81)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Need Help -> Векторизация   Evgen Kondratyuk   22 Jul 2002 20:54:35 
 Need Help -> Векторизация   Georgy Plechanov   23 Jul 2002 11:55:50 
 Need Help -> Вектоpизация   Peter Pike\'s   24 Jul 2002 23:43:11 
 Need Help -> Вектоpизация   Georgy Plechanov   25 Jul 2002 12:52:52 
 Need Help -> Векторизация   Evgen Kondratyuk   25 Jul 2002 12:16:12 
 Need Help -> Векторизация   Roman Dawydkin   26 Jul 2002 08:57:08 
 Need Help -> Векторизация   Georgy Plechanov   25 Jul 2002 22:09:58 
 Re: Need Help -> Векторизация   UstVG    26 Jul 2002 17:23:04 
 Need Help -> Векторизация   Victor A. Pavlov   23 Jul 2002 18:54:26 
 Need Help -> Векторизация   Evgen Kondratyuk   25 Jul 2002 12:15:00 
 Need Help -> Векторизация   Victor A. Pavlov   26 Jul 2002 00:16:35 
 Re: Need Help -> Векторизация   Michael Lezzhov   26 Jul 2002 00:13:33 
Архивное /ru.algorithms/18393d409578.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional