Einzelnen Beitrag anzeigen

scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#21

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 16:44
Bei Bitmap32 gehts ohne PixelFormat (oder vergleichbares). Kann dein Problem allerdings nicht nachvollziehen, wenn man reine Bitmaps verwendet.
Ist die ursprüngliche Quelle allerdings ein JPEG z.B., dann musst du den Vergleich etwas Fehlertoleranter gestalten, da hier die Farben von der Kompression verfälscht werden.

Statt bild.Canvas.pixels[x,y]<>bild2.Canvas.pixels[x,y] solltest du eine Vergleichs-Funktion basteln, z.B.:
Delphi-Quellcode:
// Liefert true zurück, wenn Pixel unterschiedlich.
function PixelCompare(A, B: DWORD): boolean;
begin
  result := (Abs(RGBQuad(A).rgbBlue - RGBQuad(B).rgbBlue ) +
             Abs(RGBQuad(A).rgbGreen - RGBQuad(B).rgbGreen) +
             Abs(RGBQuad(A).rgbRed - RGBQuad(B).rgbRed ) ) > 64;
end;
Angewendet wird sie dann so:
        if PixelCompare(bild.Canvas.pixels[x,y], bild2.Canvas.pixels[x,y]) then Diese Funktion lieferte nach ersten Tests gute Resultate, ist aber nicht "wissenschaftlich untermauert".
  Mit Zitat antworten Zitat