Hier mein Vorschlag:
Delphi-Quellcode:
function CompareBitmaps(Bitmap1, Bitmap2: TBitmap): Double;
var
xy: integer;
P1, P2: PRGBTriple;
g1, g2: Byte;
PixelWeight: Double;
begin
Result:=100.0;
PixelWeight:=100/(Bitmap1.Width*Bitmap1.Height)/255;
Bitmap1.PixelFormat:=pf24bit;
Bitmap2.PixelFormat:=pf24bit;
P1:=Bitmap1.ScanLine[Bitmap1.Height-1];
P2:=Bitmap2.ScanLine[Bitmap2.Height-1];
for xy:=1 to Bitmap1.Height*Bitmap1.Width do begin
g1:=(P1^.rgbtRed+P1^.rgbtGreen+P1^.rgbtBlue) div 3;
g2:=(P2^.rgbtRed+P2^.rgbtGreen+P2^.rgbtBlue) div 3;
Result:=Result-ABS(g1-g2)*PixelWeight;
Inc(P1);
Inc(P2);
end;
end;
Verglichen wird hier nur die Helligkeit und gibt als Ergebnis die Ähnlichkeit in Prozent an. Man müsste dann nur noch entscheiden ab wieviel Prozent die Bilder als gleich gelten...
mfg