Zitat von
marabu:
nur weil ich über die identische Grauwert-Berechnung in den beiden Codes von Phantom und alzaimar gestolpert bin:
Der Grauwert ist nicht der Mittelwert aus den Farbanteilen im RGB-Farbraum. Um den Grauwert zu erhalten bildet man
RGB in den NTSC Farbraum ab (wegen der Trennung von Farbe und Helligkeit in YUV) und schmeißt die Farbe weg, bevor man wieder in den
RGB-Farbraum zurück übersetzt. Diese Funktion könnte dabei helfen:
Delphi-Quellcode:
function GrayValue(
rgb: PRGBTriple): Integer;
begin
Result := Round(
rgb.rgbtRed * 0.299 +
rgb.rgbtgreen * 0.587 +
rgb.rgbtblue * 0.114);
end;
Mir ist die Formel auch bekannt, ist aber bei diesem Bildvergleich unnutz. Diese Art der Berechnung der Helligkeit ist nur für das menschliche Auge gedacht (da es grün heller empfindet als rot und das wiederum heller als blau), hier wird jedoch alles nur intern berechnet. Hinzu kommt noch das die Bilder Farbverfälschungen besitzen, somit ist die korrekte Herstellung des Grauwertes eh nicht gegeben.
mfg