Kurven für alle (Curves for all)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Beitragvon CHDKLover » 11.06.2010, 13:09

Hallo Liebe Tester,
ich habe heute das Skript noch einmal überarbeitet, Downloadbar über den ersten Beitrag. Es sollte jetzt kein Fehler mehr beim Suchen des letzten RAW Fotos mehr auftreten.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon CHDKLover » 11.06.2010, 14:48

Hallo,
dank Sinter kann ich erstmals, passend zum Fusßball-WM, praxisrelevante Kurven zur Verfügung stellen.
Der Interpolationsmodus und auch der Kurventyp können auf AUTO eingestellt bleiben, da die Kurven selber Wissen wie sie zu interpretieren sind.

Danke Sinter und Viel Spaß beim Testen, CHDKLover
Dateianhänge
Germa.CTC
Kurve, die zu einem schwarz, rot, goldenem Bild verhilft
(206 Bytes) 114-mal heruntergeladen
Italy.CTC
Kurve, die zu einem grün, weiß, roten Bild verhilft
(226 Bytes) 123-mal heruntergeladen
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Mögliche Gelbfehler

Beitragvon Sinter » 11.06.2010, 15:02

Hallo,

ich darf dazu ergänzen, dass es bei Anwendung der Kurven eventuell zu farbverfälschenden Gelbfehlern kommen könnte. Vor allem beobachtbar im weißen Bereich von Italy falls dort ein gelbes Motiv liegt. Die genaue Ursache ist noch nicht geklärt. Dieser Gelbfehler ist nicht im CTC-Kurvendesign abgebildet, sondern vermutlich ist die Ursache irgendwo im Blaukanal zu suchen. Zumindest war bisher meine Ixus60 davon betroffen.

Falls ein Gelbfehler auftaucht, dann liegt das also nicht an der neu gefassten Curve-Umsetzung von CHDKLover. Zur Not kann man das Problem umgehen indem man Motive wählt, die nur einen geringen Gelbanteil besitzen.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Beitragvon TaiJiGong » 11.06.2010, 15:36

Hallo,

Aktuelle Version des Scripts läuf bei mir, habe 3 durchläufe gemacht.

- RAW (buffer on) ist auch OK.

Wo gibt es eine Beschreibung zum Format der CTC-files ?

Viele Grüße, TaiJiGong
Dateianhänge
imul.zip
Bilder
(1.25 MiB) 117-mal heruntergeladen
curve.log.txt
(568 Bytes) 107-mal heruntergeladen
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

CTC

Beitragvon Sinter » 11.06.2010, 15:56

Hallo,

der CTC-Code:

4 ich glaube Kanalanzahl
6 Rotkanal besteht aus 6 definierten Punkten
Sechs Punkte folgen als Koordinaten
6 Erster Grünkanal besteht aus..
.
.
.
6Zweiter Grünkanal besteht aus...
.
.
.
6 Blaukanal besteht aus...
.
.
.
CHDKLovers neue Stichwörter zur automatischen Interpretation




Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Beitragvon CHDKLover » 11.06.2010, 16:12

Hallo TaiJiGong,
schön das es jetzt funktioniert.

TaiJiGong hat geschrieben:Wo gibt es eine Beschreibung zum Format der CTC-files ?

Gibt es keine, aber gleich:

Code: Alles auswählen
01. Zeile: Anzahl der Farbkanäle. Im Falle von CHDK muss hier 4 Stehen (rot,grün1,grün2,blau)
02. Zeile: Anzahl der Stützpunkte für rot (nr); nr>=2
03. Ziele: 1. Stützpunkt für rot (Format X[0],Y[0])
...
2 + nr. Zeile: nr-ter Stützpunkt für rot (Format Xmax,Ymax)
3 + nr. Zeile: Anzahl der Stützpunkte für grün1 (ng1); ng1>=2
4 + nr. Zeile: 1. Stützpunkt für grün1 (Format X[0],Y[0])
...
3 + nr + ng1. Zeile: ng1-ter Stützpunkt für grün1 (Format Xmax,Ymax)
4 + nr + ng1. Zeile: Anzahl der Stützpunkte für grün2 (ng2); ng2>=2
5 + nr + ng1. Zeile: 1. Stützpunkt für grün2 (Format X[0],Y[0])
...
4 + nr + ng1 + ng2. Zeile: ng2-ter Stützpunkt für grün2 (Format Xmax,Ymax)
5 + nr + ng1 + ng2. Zeile: Anzahl der Stützpunkte für blau (nb); nb>=2
6 + nr + ng1 + ng2. Zeile: 1. Stützpunkt für blau (Format X[0],Y[0])
...
5 + nr + ng1 + ng2 +nb. Zeile: nb-ter Stützpunkt für blau (Format Xmax,Ymax)
ab 6 + nr + ng1 + ng2 +nb. Zeile: Optional können jetzt noch Interpolationsmodus (linear, spline) und/oder Kurventyp (rgb/lum) angegeben werden


An einem Beispiel sieht man es immer besser (EV2.CTC):
Code: Alles auswählen
4
3
0,0
256,1023
1023,1023
3
0,0
256,1023
1023,1023
3
0,0
256,1023
1023,1023
3
0,0
256,1023
1023,1023
linear
lum


X[0]=Y[0] sind immer 0
Für Xmax=Ymax sollte man sich entweder auf 2^10-1 oder 2^12-1 festlegen, wobei zu beachten ist, das momentan nur Kurven vom PC-Kurveneditor geladen werden können, wo Xmax und Ymax 2^10-1=1023 ist. In meinem Testbuild ist es den Kameras Xmax und Ymax egal, solange für Xmax und Ymax 2^X; 10<=X<=16 gilt. Stützpunkte die nicht zum Kamerasensor passen werden entsprechend Skaliert. Das bedeutet bei dem obrigen Beispiel (EV2.CTC) würden alle 12 Bit Kameras alle Stützpunkte aus dem Wertebereich von 0..1023 in den Wertebereich von 0..4095 skalieren.
Am Besten ist es man experimentiert ein wenig mit dem PC-Kurveneditor und lädt erstmal fertige Kurven. (Achtung einige Kurven kann der Kurveneditor nicht laden, wenn der Interpolationsmodus auf Spline steht)

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon TaiJiGong » 11.06.2010, 16:44

Hallo CHDKLover,

Danke für die Beschreibung, werde mal etwas damit herumspielen. Der "CurvesEditor4k.exe" läuft unter linux nicht, aber es handelt sich ja nur um eine simples file, da komme ich mit einem Editor zurecht.

Aber noch eine Frage:

X[0]=Y[0] sind immer 0


Ist das so fest implementiert ?

Wenn ich ein Bild invertieren möchte kann ich dann folgendes machen

0,0
0,1023
1023, 0

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon Hamster.78 » 11.06.2010, 16:46

CHDKLover hat geschrieben:das Skript noch einmal überarbeitet

Hallo CHDKLover,

der Test mit der v2 ist ebenso erfolgreich mit der SX100 verlaufen.
Die Bilder mit der Kurfe Blau (IMG_3112) / Rot (IMG_3117) wirken etwas unscharf.

Bilder @File-upload vergleich blau vs. grün Bild

gruß Hamster Bild
Dateianhänge
curve.log.txt
(573 Bytes) 96-mal heruntergeladen
Zuletzt geändert von Hamster.78 am 11.06.2010, 19:32, insgesamt 1-mal geändert.
◄ SX100 v100c ◄ Samsung NX10

CHDK DEThe Canon Camera Hackers Manual schon gelesen?
Benutzeravatar
Hamster.78
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 318
Registriert: 24.01.2009, 11:21
Wohnort: Sachsen / Chemnitz

Beitragvon CHDKLover » 11.06.2010, 16:55

Hallo,

@TaiJiGong
so wie du dir das denkst wird es nicht gehen, da der Sensor im logarithmischen Maßstab denkt, aber du die Kurve im linearen Maßstab designst. Wie gesagt die Kurvenerstellung für das CHDK ist momentan noch schwierig, es beherschen nur wenige diese Kunst.
Der letzte Stützpunkt eines Farbkanals muss bei (Xmax=Ymax=1023) 1023,1023 sein.

@Hamster.78
Woher die Unschärfe kommt kann ich momentan auch nicht sagen, ich verändere nur die Sensorwerte anhand einer Kurve, so wie es "toinech" der Autor der Kurvenfunkion für das CHDK macht hat.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon TaiJiGong » 11.06.2010, 17:46

Hallo CHDKLover,

CHDKLover hat geschrieben:da der Sensor im logarithmischen Maßstab denkt


Darüber werde ich mal Nachdenken. (Der Sensor denkt da wohl nichts)

Wird vor oder nach der Kurven-Anwendung noch eine GAMA-Korrektur gemacht ?

Kannst Du mir mal den sourcecode der Umsetzung zur verfügung stellen ?

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon TaiJiGong » 12.06.2010, 21:48

Bei dem spielen mit den Kurven ist mir noch aufgefallen das die Kurve nicht bei jeder Aufnahme angewendet wird.

Sinter hat zu diesem Thema Kurven viel gemacht, hat mir recht geholfen.
http://forum.chdk-treff.de/viewtopic.php?t=1543&highlight=kurven

Ich habe mir die alte Software etwas angeschaut, da sieht man was da intern gemacht wird.

trunk-de/core/curves.c

Anregung für die Kurven-Software:

- Fehlerausgabe wenn das CTC-File nicht in Ordnung ist. (passer error)
- Für den fixen Start/End-Wert sehe ich keine Notwendigkeit.

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon CHDKLover » 13.06.2010, 09:29

Hallo TaiJiGong,
TaiJiGong hat geschrieben:Bei dem spielen mit den Kurven ist mir noch aufgefallen das die Kurve nicht bei jeder Aufnahme angewendet wird.
Tritt das Verhalten spontan auf oder kannst du ein System erkennen?

Zu deinen Anregungen:
TaiJiGong hat geschrieben:Fehlerausgabe wenn das CTC-File nicht in Ordnung ist. (passer error)
Wann erscheint die Ausgabe (in welcher Zeile)?

TaiJiGong hat geschrieben:Für den fixen Start/End-Wert sehe ich keine Notwendigkeit.
Da hast du sicher recht, dass ist noch ein Designfehler, den ich bei Gelegenheit beseitigen werde. Ich bin von dem Kurveneditor ausgegangen, bei dem war es nicht möglich den Start/Endstützpunkt zu verändern.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon TaiJiGong » 13.06.2010, 10:34

CHDKLover hat geschrieben:Bei dem spielen mit den Kurven ist mir noch aufgefallen das die Kurve nicht bei jeder Aufnahme angewendet wird.
Tritt das Verhalten spontan auf oder kannst du ein System erkennen?


Leider nicht wirklich, habe etwas den Eindruck das es mit der Dauer des Drucks auf den Auslösser zu tun hat. Ist wohl kein Problem der eigendlichen Kurver-Anwendung.

CHDKLover hat geschrieben:Fehlerausgabe wenn das CTC-File nicht in Ordnung ist. (passer error)
Wann erscheint die Ausgabe (in welcher Zeile)?


Es kommt keine Ausgabe, ich meinte es kann sinnvoll sein eine Fehlermeldung auszugeben.

Das original source curves.c ist schon etwas schwer zu lesen, da die ganzen bit-shifts mehr zur Verwirrung beitragen.

Währe schöner (oder zusätzlich einen Version zum Vergleich) wenn man die Funktionen aus raw.c verwendet.

- get_raw_pixel(unsigned int x,unsigned int y)
- set_raw_pixel(unsigned int x, unsigned int y, unsigned short value)

Welche Performens Probleme man da hat, kann ich nicht beurteilen. Man könnte für diese Funktionen auch Macros erzeugen. (Gehen inline Funktionen ?)

Das hätte wohl auch den Vorteil das es leichter ist (14, 16, ??? Kameras zu unterstützen)

- cam_CFAPattern==0x02010100 // Red Green Green Blue
- cam_CFAPattern==0x01000201 // Green Blue Red Green

Das betrifft wohl nicht den Sensor. Weist Du was genaueres dazu ?

Eine GAMA-Korrektur wird wohl nur bei DNG gemacht.

Bei Sinter habe ich gelesen das es nicht ganz klar ist was die Kamera nach Anwendung der Kurven macht, gibt es eine Möglichkeit (Funktion) das Ergebnis Bild selbst als JPG zu speichern.

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon CHDKLover » 14.06.2010, 07:17

Hallo TaiJiGong,
TaiJiGong hat geschrieben:Es kommt keine Ausgabe, ich meinte es kann sinnvoll sein eine Fehlermeldung auszugeben.
Das ist schwierig, da die Kamera erst bei der Anwendung der Kurve weiß, ob die vorgemerkte Kurve syntaktisch und semantisch richtig ist.

TaiJiGong hat geschrieben:Währe schöner (oder zusätzlich einen Version zum Vergleich) wenn man die Funktionen aus raw.c verwendet.
Das hab ich auch einmal probiert (auskommentierter Block), aber die Folge sind 2*X Funktionsaufrufe. X ist die Anzahl der Pixel auf den Bildsensor (üblicherweise zwischen 5 und 14 Mio). Das Hauptproblem ist das das Alignment. Die 10 Bit bzw. 12 Bit passen direkt zu keinem c Datentyp (in dem Fall 16Bit), deswegen muss man geschickt und effizient anstückeln, was die Funktionen aus der raw.c nicht können.

TaiJiGong hat geschrieben:Das hätte wohl auch den Vorteil das es leichter ist (14, 16, ??? Kameras zu unterstützen)
Da hast du sicher recht, denn dann gäbe es nur eine Stelle die man ändern müsste. Aber es will eben keiner ein langsameres Kurvensystem als zuvor.

Die in cam_CFAPattern definierten Farbanordnungen haben direkten Bezug auf den Sensor, sie bestimmen wo sich in der Bayer Matrix rot, grün1, grün2 und blau genau befinden.

TaiJiGong hat geschrieben:Eine GAMA-Korrektur wird wohl nur bei DNG gemacht.
Ja, bei den Kurven werden diese Werte bisher ignoriert.

TaiJiGong hat geschrieben:Bei Sinter habe ich gelesen das es nicht ganz klar ist was die Kamera nach Anwendung der Kurven macht, gibt es eine Möglichkeit (Funktion) das Ergebnis Bild selbst als JPG zu speichern.
So direkt leider nicht, da müsste eine weitere RAW-Datei nach der Anwendung der Kurve geschrieben werden.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon TaiJiGong » 17.06.2010, 20:56

Hallo CHDKLover,

Bei meiner Kamera werden nach wie vor die Kurven nur auf manche Bilder angewendet. Das Verhalten ist wohl recht zufällig.

Aber nun habe ich gemerkt das die Kurven wohl immer angewendet werden wenn man die Aufnahmen über den Selbstauslöser der Kamera macht.

Nachtrag:

JETZT habe ich es wohl, wenn man zu schnell auslöst, werden keine Kurven gemacht (Soll wohl so sein)

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste