Sobel Edge detection

Тема в разделе "LANGS.C", создана пользователем mrcrown, 10 май 2010.

  1. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Столкнуся с такой проблемой, точнее не с проблемой, а с непониманием ситуации :) Прошу вашей помощи, может кто делал подобное. Поделитесь кодом.
    Теоретически все более или иение понятно, а вот на практике все как-то не так.
    Вот ф-я которой считаю значение градиента для конкретного пикселя.
    Код (Text):
    1. double CalcSobelGradient(void* bmp,const int x,const int y){
    2.          if (!bmp) return -1;
    3.          struct BMPInfoHeader* i_bmp = (struct BMPInfoHeader*)GetInfoHeader(bmp);
    4.          struct BMPPaletteItem color;
    5.          int Gx[3][3] = {
    6.                                  {  1,  2,  1  },
    7.                                  {  0,  0,  0  },
    8.                                  { -1, -2, -1  }
    9.                          };
    10.          int Gy[3][3] = {
    11.                                  { -1,  0,  1  },
    12.                                  { -2,  0,  2  },
    13.                                  { -1,  0,  1  }
    14.                          };
    15.          int Mx,My;
    16.          double gx = 0,gy = 0;
    17.          for (My = 0;My < 3;My++){
    18.                  for (Mx=0;Mx < 3;Mx++){
    19.                          GetPixelColor(bmp,x+Mx-1,y+My-1,&color);
    20.                          double c = (color.red+color.green+color.blue)/3;
    21.                          gx += c * Gx[My][Mx];
    22.                          gy += c * Gy[My][Mx];
    23.                  }
    24.          }
    25.          return (gx*gx+gy*gy);
    26. }
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Называется: "Есть проблемы? -- Помоги себе сам!"
    Закройте тему. Во всем разобрался.