Hallo, leider funktioniert das ganze nicht.
Es gibt immer eine
Exception hier:
for x:=0 to Bild1.Width-1 do
begin
summe1:=summe1+RGB2TColor(P1[y][x].rgbtRed, P1[y][x].rgbtGreen, P1[y][x].rgbtBlue);
summe2:=summe2+RGB2TColor(P2[y][x].rgbtRed, P2[y][x].rgbtGreen, P2[y][x].rgbtBlue);
end;
Ich möchte 2 Bilder vergleichen und den Prozentwert der Übereinstimmung bestimmen. Gibt's ne aktuellere Version bzw. ein Testprogramm, um evtl. Fehler auszuschließen?!
Derzeit bestimme ich die Anzahl unterschiedlicher Pixel über folgende Funktion, allerdings ist mir nicht ganz klar, wie ich hier den Korrelationskoeffizient bestimme etc. .... kann wer helfen?
Code:
function TForm1.CompareImages(Image1,Image2:TBitmap):Int64;
var x,y:integer;
P1,P2:PRGBTripleArray;
summe1,summe2:integer;
begin
result := 0;
summe1 := 0;
summe2 := 0;
for y := 0 to Image1.Height -1 do
begin
P1 := Image1.ScanLine[y];
P2 := Image2.ScanLine[y];
if not CompareMem(p1,p2,Image1.Width*SizeOf(TRGBTriple)) then
begin
for x := 0 to Image1.Width-1 do
begin
inc(summe1,
RGB(P1[x].rgbtRed,P1[x].rgbtGreen,P1[x].rgbtBlue));
inc(summe2,
RGB(P2[x].rgbtRed,P2[x].rgbtGreen,P2[x].rgbtBlue));
if summe1 <> summe2 then
begin
summe1 := 0;
summe2 := 0;
inc(result);
end;
end;
end;
end;
Application.ProcessMessages;
end;