Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Gamma-Korrektur von Bild (https://www.delphipraxis.net/116895-gamma-korrektur-von-bild.html)

DerAndereMicha 8. Jul 2008 12:18


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

Medium 8. Jul 2008 14:01

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:
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));
Und das dann für jeden Pixel.


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.

DerAndereMicha 8. Jul 2008 14:35

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 01:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz