uses
GraphUtil;
type
TBGR =
packed record
B, G, R: Byte;
end;
procedure vergleichebilder2(bmp1, bmp2: TBitmap; dMax: Word);
var
Farbe1, Farbe2: ^TBGR;
Hue1, Luminance1, Saturation1,
Hue2, Luminance2, Saturation2: Word;
x, y, xMax, yMax, d: Integer;
begin
yMax := Min(bmp1.Height, bmp2.Height) - 1;
xMax := Min(bmp1.Width, bmp2.Width) - 1;
bmp1.Pixelformat := pf24Bit;
bmp2.Pixelformat := pf24Bit;
for y := 0
to yMax
do
begin
Farbe1 := bmp1.ScanLine[y];
Farbe2 := bmp2.ScanLine[y];
for x := 0
to xMax
do
begin
ColorRGBToHLS(
RGB(Farbe1^.R, Farbe1^.G, Farbe1^.B), Hue1, Luminance1, Saturation1);
ColorRGBToHLS(
RGB(Farbe2^.R, Farbe2^.G, Farbe2^.B), Hue2, Luminance2, Saturation2);
{Umwandlung zu Integer für Differenzberechnung mit Vorzeichen}
d := Integer(Luminance1) - Integer(Luminance2);
if ABS(d) > dMax
then
begin
farbe2^.B := 0;
farbe2^.G := 0;
farbe2^.R := 255;
end;
Inc(Farbe1);
Inc(Farbe2);
end;
end;
end;