Hi,
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;
Ansonsten ist ein einfaches gray scale Differenzbild bei ungleichmäßiger Verfärbung (gealterte Fotos) nicht sehr aussagefähig, aber wenn hier künstlich verfärbte Bilder (sepia operator) vorliegen, dann reicht das aus. Informationsgleichheit ist dann gegeben, wenn ein Bild mit annähernd konstantem Grauwert als Differenzbild heraus kommt. Oder man berechnet das Schwarz-Weiß-Bild mit einem statischen Schwellwert und erhält ein annähernd schwarzes Differenzbild. Was da vorteilhafter ist hängt wohl davon ab, wie man die Auswertung des Differenzbildes implementiert.
Gute Nacht