![]() |
Gamma-Korrektur von Bild
Hallo Zusammen,
kennt von Euch jemand ne Routine, mit der ich auch einfache und schnelle Art und Weise den Gamma-Wert eines Bildes (TBitmap,TJPEGImage,...) ändern kann? Hab schon überall danach gesucht, aber bisher nur Sachen gefunden, die sich auf den ganzen Monitor beziehen. Gruß Micha |
Re: Gamma-Korrektur von Bild
Eine Gammakorrektur ist im Grunde nichts weiter, als die Formel "Farbe^Gamma", wobei Farbe die jeweiligen Anteile (RGB) sind, auf einen Bereich von 0..1 skaliert.
Delphi-Quellcode:
Und das dann für jeden Pixel.
var
c1, c2: TColor; Gamma: Double; begin Gamma := 1.2; c2 := rgb( trunc(Power((RedComponent(c1)/255), Gamma)*255), trunc(Power((GreenComponent(c1)/255), Gamma)*255), trunc(Power((BlueComponent(c1)/255), Gamma)*255)); Eine andere, wie ich finde aber sauberere Methode ist es, wenn man den Gammawert für die Helligkeit ändert. Dafür müsstest du dann die Farben zunächst in das HSB-Farbmodell umrechnen, die Helligkeitskomponente auf 0..1 skalieren, Gammakorrektur machen, zurückskalieren, und wieder in RGB zurückrechnen. Oben geschriebenes dürfte aber die Methode sein, die fast immer eingesetzt wird. |
Re: Gamma-Korrektur von Bild
Hallo Medium,
vielen Dank erstmal. Aber hier gleich noch 2 Fragen dazu: 1. Frage: Die Funktionen RedComponent,GreenComponent und BlueComponent kennt mein Delphi leider nicht. Kann ich statt dessen auch GetRValue,GetGValue und GetBValue nehmen ? 2.Frage: Ist das Ganze nicht ziemlich langsam - weil ja pixelweise? Gruß Micha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz