Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 30th, 2012  |  syntax: None  |  size: 6.05 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. void Filtro_Sobel(unsigned char img[][MAXLARGURA][3], int alt, int larg)
  2. {
  3.   int i, j ,l, valor, valor2;
  4.   float media;
  5.   unsigned char img2[MAXALTURA][MAXLARGURA][3];
  6.   cout << "Processando a imagem, Aguarde...";
  7.   for (i=0;i<alt;i++)
  8.     for(j=0;j<larg;j++)
  9.       for (l=0;l<3;l++)
  10.         img2[i][j][l]=img[i][j][l];
  11.   for (i=0;i<alt;i++)
  12.     for(j=0;j<larg;j++)
  13.       for (l=0;l<3;l++)
  14.       {
  15.         if (i==0 && j==0)
  16.         {
  17.         valor=((int)img2[i+1][j][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  18.         Normalizar(valor);
  19.         valor2=((int)img2[i][j+1][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  20.         Normalizar(valor2);
  21.         media=(valor+valor2)/2.0;
  22.         valor2 = media - (int)media;
  23.         if (valor2>=0.5)
  24.           media=media+1;
  25.         valor = media;
  26.         img[i][j][l]=(unsigned char)valor;
  27.         }
  28.         else
  29.           if (i==0 && j==(MAXLARGURA-1))
  30.           {
  31.             valor=((int)img2[i+1][j-1][l]*-1)+((int)img2[i+1][j][l]*-2);
  32.             Normalizar(valor);
  33.             valor2=((int)img2[i][j-1][l]*2)+((int)img2[i+1][j-1][l]*1);
  34.             Normalizar(valor2);
  35.             media=(valor+valor2)/2.0;
  36.             valor2 = media - (int)media;
  37.             if (valor2>=0.5)
  38.               media=media+1;
  39.             valor = media;
  40.             img[i][j][l]=(unsigned char)valor;
  41.           }
  42.           else
  43.             if (i==(MAXALTURA-1) && j==0)
  44.             {
  45.               valor=((int)img2[i-1][j][l]*2)+((int)img2[i-1][j+1][l]*1);
  46.               Normalizar(valor);
  47.               valor2=((int)img2[i-1][j+1][l]*-1)+((int)img2[i][j+1][l]*-2);
  48.               Normalizar(valor2);
  49.               media=(valor+valor2)/2.0;
  50.               valor2 = media - (int)media;
  51.               if (valor2>=0.5)
  52.                 media=media+1;
  53.               valor = media;
  54.               img[i][j][l]=(unsigned char)valor;
  55.             }
  56.             else
  57.               if (i==(MAXALTURA-1) && j==(MAXLARGURA-1))
  58.               {
  59.                 valor=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j][l]*2);
  60.                 Normalizar(valor);
  61.                 valor2=((int)img2[i-1][j-1][l]*1)+((int)img2[i][j-1][l]*2);
  62.                 Normalizar(valor2);
  63.                 media=(valor+valor2)/2.0;
  64.                 valor2 = media - (int)media;
  65.                 if (valor2>=0.5)
  66.                   media=media+1;
  67.                 valor = media;
  68.                 img[i][j][l]=(unsigned char)valor;
  69.               }
  70.               else
  71.                 if (i==0)
  72.                 {
  73.                   valor=((int)img2[i+1][j-1][l]*-1)+((int)img2[i+1][j][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  74.                   Normalizar(valor);
  75.                   valor2=((int)img2[i][j-1][l]*2)+((int)img2[i][j+1][l]*-2)+((int)img2[i+1][j-1][l]*1)+((int)img2[i+1][j+1][l]*-1);
  76.                   Normalizar(valor2);
  77.                   media=(valor+valor2)/2.0;
  78.                   valor2 = media - (int)media;
  79.                   if (valor2>=0.5)
  80.                     media=media+1;
  81.                   valor = media;
  82.                   img[i][j][l]=(unsigned char)valor;
  83.                 }
  84.                 else
  85.                   if (j==(MAXLARGURA-1))
  86.                   {
  87.                     valor=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j][l]*2)+((int)img2[i+1][j-1][l]*-1)+((int)img2[i+1][j][l]*-2);
  88.                     Normalizar(valor);
  89.                     valor2=((int)img2[i-1][j-1][l]*1)+((int)img2[i][j-1][l]*2)+((int)img2[i+1][j-1][l]*1);
  90.                     Normalizar(valor2);
  91.                     media=(valor+valor2)/2.0;
  92.                     valor2 = media - (int)media;
  93.                     if (valor2>=0.5)
  94.                       media=media+1;
  95.                     valor = media;
  96.                     img[i][j][l]=(unsigned char)valor;
  97.                   }
  98.                   else
  99.                     if (i==(MAXALTURA-1))
  100.                     {
  101.                       valor=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j][l]*2)+((int)img2[i-1][j+1][l]*1);
  102.                       Normalizar(valor);
  103.                       valor2=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j+1][l]*-1)+((int)img2[i][j-1][l]*2)+((int)img2[i][j+1][l]*-2);
  104.                       Normalizar(valor2);
  105.                       media=(valor+valor2)/2.0;
  106.                       valor2 = media - (int)media;
  107.                       if (valor2>=0.5)
  108.                         media=media+1;
  109.                       valor = media;
  110.                       img[i][j][l]=(unsigned char)valor;
  111.                      }
  112.                      else
  113.                        if(j==0)
  114.                        {
  115.                          valor=((int)img2[i-1][j][l]*2)+((int)img2[i-1][j+1][l]*1)+((int)img2[i+1][j][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  116.                          Normalizar(valor);
  117.                          valor2=((int)img2[i-1][j+1][l]*-1)+((int)img2[i][j+1][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  118.                          Normalizar(valor2);
  119.                          media=(valor+valor2)/2.0;
  120.                          valor2 = media - (int)media;
  121.                          if (valor2>=0.5)
  122.                            media=media+1;
  123.                          valor = media;
  124.                          img[i][j][l]=(unsigned char)valor;
  125.                        }
  126.                       else
  127.                       {
  128.                         valor=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j][l]*2)+((int)img2[i-1][j+1][l]*1)+((int)img2[i+1][j-1][l]*-1)+((int)img2[i+1][j][l]*-2)+((int)img2[i+1][j+1][l]*-1);
  129.                         Normalizar(valor);
  130.                         valor2=((int)img2[i-1][j-1][l]*1)+((int)img2[i-1][j+1][l]*-1)+((int)img2[i][j-1][l]*2)+((int)img2[i][j+1][l]*-2)+((int)img2[i+1][j-1][l]*1)+((int)img2[i+1][j+1][l]*-1);
  131.                         Normalizar(valor2);
  132.                         media=(valor+valor2)/2.0;
  133.                         valor2 = media - (int)media;
  134.                         if (valor2>=0.5)
  135.                           media=media+1;
  136.                         valor = media;
  137.                         img[i][j][l]=(unsigned char)valor;
  138.                       }
  139.       }  
  140.   cout << "\nFeito.\n";  
  141. }