Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#1

Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 16. Jul 2005, 19:54
Hi, hab dieses Forum schon durchsucht, allerdings keinen wirklich passenden Thread gefunden. Einfaches Problem: Ich lade zwei gleich große bilder in eine canvas, und vergleiche Sie. Der unterschied (nur das Rechteck zwischen kleinsten unterschiedlichem Punkt und größtem unterschiedlichen punkt) wird in bild3 gespeichert. Allerdings braucht mein Rechner dafür ca. 10 sekunden, was mir zu lange ist. Gibts ne möglichkeit, diesenm Code zu optimieren?

Delphi-Quellcode:
var
  c : TCanvas;
  r,r2 : TRect;
  Bild,Bild2,bild3 : TBitmap;
  x,y,x_min,y_min,x_max,y_max:integer;
begin
 x_min:=9999999;
 y_min:=9999999;
 x_max:=0;
 y_max:=0;

    Bild := TBitmap.Create;
    Bild2 :=TBitmap.Create;

    Bild.LoadFromFile('C:\windows\desktop\bild1.bmp');
    Bild2.LoadFromFile('C:\windows\desktop\bild2.bmp');

    for x:=1 to bild.width do
    for y:=1 to bild.height do
     begin
       if bild.Canvas.pixels[x,y]<>bild2.Canvas.pixels[x,y] then
       begin
       if x_min>x then x_min:=x;
       if x_max<x then x_max:=x;
       if y_min>y then y_min:=y;
       if y_max<y then y_max:=y;

       end;
     end;
    r := Rect(0, 0, x_max-x_min, y_max-y_min);
    r2:= rect(x_min,y_min,x_max,y_max);
    Bild3:=TBitmap.Create;
    bild3.Width:=x_max-x_min;
    bild3.height:=y_max-y_min;
    bild3.Canvas.CopyRect(r,bild2.canvas,r2);
    bild3.SaveToFile('C:\windows\desktop\bild3.bmp');
     showmessage('fertig');
  end;
Mit freundlichen Grüßen,

Alleinherrscher
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat