Einzelnen Beitrag anzeigen

burning

Registriert seit: 29. Dez 2003
25 Beiträge
 
#1

Funktion zum Vergleich zweier Bilder, falsche Ergebnisse...

  Alt 2. Jan 2004, 17:16
Hi,
Die folgende Prozedur ist von
http://www.tipps.delphi-source.de/gr...020911-8.shtml
Wenn ich mit ihr zwei genau gleich große Bilder vergleiche, so liefert sie die absurdesten Ergebnisse...

Bsp:
1. ich liefere 2 Bilder von der Größe 5*8. Sie sind beide komplett grau, bis auf den Pixel ganz links oben im ersten Bild.
2. Das Programm gibt an, dass es 3 Unterschiede gibt, was ja eindeutig 2 zuviel sind.

Wenn ich das eine Bild noch weiter verändert hab, so zeigte er mal zu wenige, mal zu viele Fehler an.

Woran kann das liegen?

Code:
procedure CompareImages(Image1, Image2: TImage);
var x, y: integer;
  anzahl_unterschiede: LongInt;
  zeile1, zeile2: PByteArray;
  prozent: single;
const schwellenwert=5;
  // Erst wenn die Unterschiede den Schwellenwert überschreiten,
  // wird die Abweichung registriert.
begin
  anzahl_unterschiede:=0;
  for y:=0 to image1.Picture.Bitmap.height-1 do begin
    zeile1:=image1.Picture.Bitmap.scanline[y];
    zeile2:=image2.Picture.Bitmap.scanline[y];
    for x:=0 to image1.Picture.Bitmap.width-1 do
      if abs(zeile1[x]-zeile2[x])>schwellenwert then
        inc(anzahl_unterschiede);
    if image1.Picture.Bitmap.height*image1.Picture.Bitmap.width>0 then
      prozent:=100*(anzahl_unterschiede/(image1.Picture.Bitmap.height*
      image1.Picture.Bitmap.width))
    else
      prozent:=0;
    form1.label1.caption:='Unterschiede:'+FloatToStr(prozent)+'%';
    form1.label2.caption:='Unterschiede:'+IntToStr(anzahl_unterschiede);
  end;
end;
  Mit Zitat antworten Zitat