Also ok, unter www.tu-chemnitz.de/~niko/biber gibts die .exe und ein paar Testbilder.

Bitte beachten: Das Prog schluckt im Moment nur .bmp mit 256 Graustufen.

Der C++ Algorithmus zur Kantenerkennung:

Code:
/**************************************************************************
*  Methode:             sobel_kombiniert                                  *
*  Sichtbarkeit:        public                                            *
*  Parameter:           schwelle                                          *
*                                                                         *
*                                                                         *
*  Funktion:            führt eine Faltung mit dem beiden                 *
*                       Sobel-Operatoren aus (Gradientenverfahren),       *
*                       benutzt den  in 'schwelle' übergebenen Wert zur   *
*                       Binearisierung des Bildes                         *
***************************************************************************/
bool TbiberImage::sobel_kombiniert(TbiberPix schwelle,TbiberPix *oldPix)
{TbiberPix kern1[3][3]={ {1,0,-1},
                         {2,0,-2},
                         {1,0,-1}};
 TbiberPix kern2[3][3]={ {1,2,1},
                        {0,0,0},
                        {-1,-2,-1}};
  int summe=0,s1=0,s2=0;
  int x,y;
  TbiberPix* newPix;
  int *ykoord, y1,y2,y0;

  if (!(newPix=(TbiberPix*)calloc(TbiberImage::size,sizeof(TbiberPix)))) return false;
  if (!(ykoord=(int*)calloc(width,sizeof(int)))) return false;
  if (oldPix) memcpy(oldPix,pixels,TbiberImage::size*sizeof(TbiberPix));


  for (y=0;y<height;y++) ykoord[y]=y*width;

  for (y=1;y<height-1;y++)
  {     y0=ykoord[y];
        y1=ykoord[y+1];
        y2=ykoord[y-1];
        for (x=1;x<width-1;x++)
        {       s1=-getPix(y2+x-1)+getPix(y2+x+1)-2*getPix(y0+x-1)+2*getPix(y0+x+1)-getPix(y1+x-1)+getPix(y1+x+1);
                s2=-getPix(y2+x-1)-2*getPix(y2+x)-getPix(y2+x+1)+getPix(y1+x-1)+2*getPix(y1+x)+getPix(y1+x+1);

               //  summe=sqrt(pow(s1,2)+pow(s2,2));
                summe=(abs(s1)+abs(s2)) /2;

                if (schwelle)
                {       if (summe<schwelle) summe=0;
                        else summe=255;
                }
                else if (summe>255) summe=255;

                newPix[y*width+x]=(TbiberPix)summe;
        }
  }

  memcpy(pixels,newPix,TbiberImage::size*sizeof(TbiberPix));
  free(newPix);

  return true;
}
... ist eine Faltung mit dem horizontalen und vertikalen Sobel-Operator.