Fragen zum Histogramm

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

Fragen zum Histogramm

Beitragvon c_joerg » 18.02.2015, 15:58

Hallo,

Im Handbuch steht, das der Bereich für get_histo_range(x1,x2) 0-1024 ist. Ich meine, es müsste 0-1023 sein oder? Wenn ich ein Bild mit überbelichteten Bereichen habe, dann bekomme ich bei get_histo_range(1023,1023) einen Wert. Bei 1024 aber nicht. Oder mache ich da einen Denkfehler?



Gibt es auch noch andere Histogramm - Funktionen? Z.B. an welcher Position das Maximum liegt?

Grüße Jörg
c_joerg
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 14.08.2014, 06:50
Wohnort: Bremen
Kamera(s): S110 103a
S45
2 * G1X 101a, 100e
G9xII 1.00c,
SX230 101a
SX50hs 100c
EOS M3 101a
EOS M100 100a

Re: Fragen zum Histogramm

Beitragvon c_joerg » 31.03.2015, 15:22

Hallo,

Ich habe mal die Funktion shot_histo_write_to_file() ausprobiert. Für diese Funktion habe ich sehr wenige Informationen gefunden. Mich würde mal interessieren, in welchem Format die Werte vorliegen. Ich habe sie erstmal in uint16 eingelesen. Das sieht auch ganz vernünftig aus.
Die Summe aller Werte entspricht ungefähr der Pixelzahl. Auch das scheint stimmig zu sein.

Hat jemand diese Funktion in Verwendung?

Grüße Jörg
c_joerg
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 14.08.2014, 06:50
Wohnort: Bremen
Kamera(s): S110 103a
S45
2 * G1X 101a, 100e
G9xII 1.00c,
SX230 101a
SX50hs 100c
EOS M3 101a
EOS M100 100a

Re: Fragen zum Histogramm

Beitragvon c_joerg » 02.04.2015, 08:40

Hallo,

ich habe mich jetzt mal auf die Suche der Quelle von shot_histo_write_to_file() gemacht. Wenn ich es jetzt richtig verstanden habe, dann wird die Funktion in shot_histogram.c mit write_to_file umgesetzt.
Damit werden, wie ich schon vermutet hatte, unsigned integer 16 Werte geschrieben.

Auf die Werte mit dieser Auflösung würde ich auch gern in einem Script zugreifen. Allerdings bietet get_histo_range() nur eine sehr grobe Auflösung von 1% Schritten.


Nach Durchlesen des CHDK Handbuches hätte ich erwartet, dass man die Auflösung durch einen dritten Parameter verändern kann.

get_histo_range(<von>, <bis>, x)

In der Realisierung konnte ich aber nichts finden. Oder bin ich da doch in der falschen Quelle gewesen?

Grüße Jörg
c_joerg
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 14.08.2014, 06:50
Wohnort: Bremen
Kamera(s): S110 103a
S45
2 * G1X 101a, 100e
G9xII 1.00c,
SX230 101a
SX50hs 100c
EOS M3 101a
EOS M100 100a

Re: Fragen zum Histogramm

Beitragvon msl » 02.04.2015, 11:36

Hallo Jörg,

diese Histogramm-Funktionen sind schon relativ schwer nachvollziehbar und zählen aus meiner Sicht zu den Funktionen, die man als sehr experimentell betrachten kann.

Zu der Funktion shot_histo_write_to_file() hatte ich mich mal mit Phil aka philmoz verständigt. Er hatte sie speziell für jemanden eingerichtet, der sich wie du intensiv mit Timelapse-Operationen beschäftigt hatte. Die Funktion soll der Analyse für die Skriptentwicklung dienen. Im eigentlichen Skript ist sie nicht unbedingt hilfreich. Durch das Lesen der externen Datei sind Timing-Probleme zu erwarten. Phil war sich auch nicht sicher, ob man diese Funktion zukünftig im CHDK halten sollte. Da sie nun doch schon seit einiger Zeit existent ist, habe ich sie mit in das Handbuch aufgenommen.

Bei get_histo_range() ist mir im Handbuch schlicht ein Fehler untergekommen. Es muss eigentlich x = get_histo_range(<von>, <bis>) lauten. Ich bin froh, dass du solche speziellen Dinge immer mal wieder ausfindig machst.

Für deine Vorhaben scheint die Auflösung von get_histo_range() schon etwas gering zu sein. Für die Analyse des Dynamikumfangs finde ich sie aber ausreichend. Jedenfalls funktioniert das Skript, in dem ich diese Funktion verwende recht zuverlässig.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Fragen zum Histogramm

Beitragvon c_joerg » 02.04.2015, 13:29

Hallo msl,

Die Funktion soll der Analyse für die Skriptentwicklung dienen.
Im eigentlichen Skript ist sie nicht unbedingt hilfreich.


nur so habe ich das auch gesehen. Zur Analyse. Ich habe das gespeicherte Histogramm mit den Werten von get_histo_range(0, 0) bis get_histo_range(1023, 1023) verglichen.
In der vollen Auflösung steckt wirklich viel Potential.


Bei get_histo_range() ist mir im Handbuch schlicht ein Fehler untergekommen.
Es muss eigentlich x = get_histo_range(<von>, <bis>) lauten.


Hatte ich auch erst gedacht aber nach dem ich dies gelesen hatte

http://chdk.setepontos.com/index.php?topic=8997.20

dachte ich, die Funktion gibt es wirklich. Ich habe dann aber nicht richtig verstanden, warum es die Funktion nun doch nicht gibt…

Für deine Vorhaben scheint die Auflösung von get_histo_range() schon etwas gering zu sein.
Für die Analyse des Dynamikumfangs finde ich sie aber ausreichend.
Jedenfalls funktioniert das Skript, in dem ich diese Funktion verwende recht zuverlässig.


Ich benutze diese Funktion auch als Überbelichtungsschutz in meinem Script. Das funktioniert auch Grundsätzlich sehr gut.

Ich möchte aber gerne ein Script erstellen, in dem sich die Überbelichtung noch feiner einstellen lässt, zum Beispiel für ein Zeitraffer vom Mond. Der Mond nimmt bei meiner Kamera ca. 0.3% der Chipfläche ein. Da reicht die 1% Auflösung nicht auf. Mit den vollen Werten, die ja in shot_histogram.c zur Verfügung stehen, sollte das aber kein Problem sein.

Spricht eigentlich etwas dagegen, eine Funktion die nicht normiert, wie get_histo_range_absolute() (oder get_histo_sum())in shot_histogram.c zu integrieren? Ich glaube das wäre eine echte Bereicherung und der Aufwand wäre nicht sehr groß.


Grüße Jörg
c_joerg
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 14.08.2014, 06:50
Wohnort: Bremen
Kamera(s): S110 103a
S45
2 * G1X 101a, 100e
G9xII 1.00c,
SX230 101a
SX50hs 100c
EOS M3 101a
EOS M100 100a

Re: Fragen zum Histogramm

Beitragvon msl » 02.04.2015, 19:57

Hallo Jörg,

ich sehe da keine Probleme, CHDK mit so einer Funktion zu erweitern. Schließlich würde das helfen, Timelapse-Aufgaben zu unterstützen. Vielleicht könnte man noch prüfen, ob sich der bestehende Befehl get_histo_range() um einen Parameter für die Auflösung erweitern lässt.

Du solltest das mal mit reyalp besprechen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a


Zurück zu Code-Ecke

Wer ist online?

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

cron