Wie Weißabgleich im Skript durchführen

Status
Nicht offen für weitere Antworten.

Jacques

Mitglied
Dabei seit
30.05.03
Beiträge
139
#1
Ich möchte gerne ein Script schreiben, mit dem ich mehrere Bilder mit dem selben Weißabgleich beglücke.

Hintergrund: ich möchte meine Dias abfotografieren und anschießend entsprechend der Farbtemperatur des Projektors einen Weißabgleich durchführen.
Meine Lösungsidee ist, ein neutralgraues Dia vorher einzumessen, um dann mit dem so ermittelten Wert alle anderen Fotos zu korrigieren.

Leider scheitert der Versuch an einigen Unzulänglichkeiten:
- Es gibt keine Scriptfunktion, die mir die Korrekturwerte bezüglich eines Punktes, oder eines Bereiches liefert.
- Mir wird aus der Script Dokumentation nicht klar, was die Parameter der Funktionen FF_WhiteBalance(VT_I4 rdiff, VT_I4 gdiff, VT_I4 bdiff) oder FF_AdjustRGB(VT_R8 rfac, VT_R8 gfac, VT_R8 bfac) bedeuten.

Kann man da was machen?

Gruß Jacques
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#2
Re: Weißabgleich

Für der Weissabgleich eignet sich nur FF_WhiteBalance(). Die 3 Werte werden schlicht auf die entsprechenden Kanäle aufaddiert.
Vermittels FF_GetPixel() kannst du deinen Korrekturwert selbst ermitteln.
 

Jacques

Mitglied
Dabei seit
30.05.03
Beiträge
139
#3
Re: Weißabgleich

Danke!

Dann könnte der Algorythmus so aussehen:

- hole mit FF_GetPixel() die RGB's
- ermittle den Durchschnittswert
- ermittle für jeden Kanal die Differens zum Durchschnittswert
- rufe FF_WhiteBalance() mit den jeweiligen Differenzwerten auf

Richtig verstanden?

Gruß Jacques
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#4
Re: Weißabgleich

Das ist genau, was ich intern mache (In einem 3x3 Feld bei der rechten Maustaste, ansonsten im definierten Polygon).
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#5
Ist es nicht einfacher, da ja die Farbtemperatur der Projektorlampe konstant ist (wenn sie einmal Betriebstemperatur hat!), die Abweichung dieser auf irgendeine Art zu ermitteln (z.B. Weißabgleich machen, Lampe anschalten, weißes Papier vor die Lichtquelle halten, fotografieren). Foto nehmen und die Differenz der RGB-Kanäle zu Weiß per Script auslesen.
Wenn man mit den ermittelten Werten über die Dias geht, sollte man bei allen konstant die Verfälschung durch die Projektorlampe rausrechnen können und mit etwas Glück bekommt man seine Originalfarben wieder.
Wie ermittelt man sonst im Batch die geeignete Position für einen Weißabgleich?  

Gruß Jochen

Nachtrag: Lampentemperatur bräuchte man gar nicht vom Testfoto per Script abzulesen, steht ja alles in der Statuszeile.
 

guenter_w

Mitglied
Dabei seit
27.06.02
Beiträge
5.667
Standort
Talheim
Trophäen
ja
#6
Hallo!

Dieser Vorschlag kann nur von einem Ingenieur mit Problemstellungen in der betrieblichen Praxis kommen! Hat doch wirklich mal einer über den Tellerrand gelinst! Stark!

Gruß

Günter
 

Jacques

Mitglied
Dabei seit
30.05.03
Beiträge
139
#7
Hallo Jochen

Ist es nicht einfacher, da ja die Farbtemperatur der Projektorlampe konstant ist (wenn sie einmal Betriebstemperatur hat!), die Abweichung dieser auf irgendeine Art zu ermitteln (z.B. Weißabgleich machen, Lampe anschalten, weißes Papier vor die Lichtquelle halten, fotografieren). Foto nehmen und die Differenz der RGB-Kanäle zu Weiß per Script auslesen.
Wenn man mit den ermittelten Werten über die Dias geht, sollte man bei allen konstant die Verfälschung durch die Projektorlampe rausrechnen können und mit etwas Glück bekommt man seine Originalfarben wieder.
Wie ermittelt man sonst im Batch die geeignete Position für einen Weißabgleich?  

Gruß Jochen

Nachtrag: Lampentemperatur bräuchte man gar nicht vom Testfoto per Script abzulesen, steht ja alles in der Statuszeile.
Vielleicht hatte ich mich ein wenig missverständlich ausgedrückt, aber genau das war es, was ich vorhatte. Abgesehen das mit dem Abschreiben aus der Statuszeile, das lasse ich doch lieber von der Software machen.

@guenter_w: Ingenieur bin ich selber ;) Dipl. Ing. in Umwelttechnik, mache aber seit 85 Software.

Gruß Jacques
 
Status
Nicht offen für weitere Antworten.
Oben