[Lua] Fotos bei schwachem Licht (Für 10-Bit-CHDK-Cams)

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

Beitragvon msl » 01.04.2010, 15:19

Hallo Sinter,

so langsam habe ich das Gefühl, hier fällt Ostern und Weihnachten auf einen Tag. Erst rudi mit den neuen DOF-Rechner und jetzt du mit deinem genialen Kurven-Skript.

Schon die Dokumentation ist der Hammer. Da werde ich nicht drum herum kommen, das Skript ausführlich unter realen Bedingungen über die Feiertage zu testen.

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

Die hintersten Zeilen vom Skript

Beitragvon Sinter » 01.04.2010, 17:05

Hallo msl,

am Ende des Skriptes erkenne ich noch nicht genau den Zusammenhang zwischen Code und Kameraverhalten. Als wäre da eine Divergenz. Einerseits habe ich Dein ursprüngliches sleep(5000) auskommentiert um dem User eine schnellere Abfolge der Aufnahmen zu ermöglichen. Etwas unklar ist mir jedoch noch, weshalb die Konsole 4 bis 5 Sekunden nach Skriptbeendigung gelöscht wird (welcher Befehl ist dafür verantwortlich?), und welche Überlegung dahintersteckt?

Es eilt nicht dies zu klären, da das Skript prinzipiell (mindestens bei mir) funktioniert. Indes tendiere ich persönlich dazu, dass die Meldungen auch nach Beendigung des Skriptes - genau wie früher- stehenbleiben. Ich weiß nicht ob Deinen eleganten review-Ergänzungen irgendwie das Löschverhalten beeinflussen. Oder war von Dir dieses Löschverhalten vielleicht sogar beabsichtigt?

Falls ich die Doku noch um irgendetwas ergänzen soll, gerne. Vielleicht sind darin doch noch irgendwelche Fragen offengeblieben.

Viele Grüße und frohe Osterfeiertage,
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 msl » 01.04.2010, 18:07

Hallo Sinter,

ich bin mir ziemlich sicher, dass das sleep(5000) nicht mein Werk war. Aber irgendjemand wird es schon benutzt haben, um die Anzeige lesbar zu halten. Ich schätze, dass da ein Refresh dazwischenfunkt und die Anzeige löscht. Dieses Verhalten habe ich schon sehr oft mit anderen Skripten gehabt. Ich setze in solchen Fällen dann immer am Ende ein wait_click(0). Dann entscheide ich, wann die Konsole gelöscht wird. Die Review-Funktion hat damit nichts zu tun.

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

Beitragvon Hamster.78 » 01.04.2010, 19:01

Hallo Sinter,

da dieses Jahr Ostern und Weihnachten auf einen Tag gefallen ist. Bild
Läuft leider Dein LowLight 1.0 mit der neusten Trunk v305 nicht mehr.

rudi hat die Funktion get_focal_length aufgrund des neuen DOF-Rechner's entfernt.

Aber ich denke mit
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
INT eff_focal_length: äquivalente 35mm Brennweite [x 1000 mm]
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9
könnte man dies wieder zum laufen bekommen.

ich wünsche auch Dir schöne Ostern
gruß Hamster Bild
◄ 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 msl » 01.04.2010, 20:34

Ja, Hamster.78 hat recht. das ist aber kein Problem.

Einfach Code in Zeile 300 mit folgendem Code austauschen:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
get_dof = get_dofinfo()

analogbrennweite=(get_dof.focal_length/100)*fle/fl
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9

Oder Skript im Anhang benutzen.

Das konnte Sinter aber nicht ahnen, dass wir schon heute solche Ostereier verstecken.Bild

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

Beitragvon msl » 03.04.2010, 12:53

Hallo Sinter,

ich möchte noch einmal die ISO-Problematik ansprechen.

Hier liegt noch erhebliches Potential. Für bestimmte Situationen reicht eine Erhöhung der ISO-Empfindlichkeit, um sinnvolle kürzere Verschlusszeiten zu erzielen. In Kombination mit den Kurven sind auch bei sehr schlechten Lichtverhältnissen kurze Verschlusszeiten möglich.

Bisher ist es mir bei diversen Tests nicht gelungen, nach dem Fokussieren die ISO-Empfindlichkeit sichtlich zu verändern. Die Exif-Daten werden zwar richtig geschrieben. Es erfolgt aber keine Einrechnung ins Bild. Sicher funktioniert das Setzen nur vor dem gesamten Shooting mit dem Befehl set_sv96.

Ein zweites Problem sind die unterschiedlichen Angaben, mit denen wir umgehen. Wir haben den sv96-Wert, den realen ISO-Wert und Market-ISO. Letzterer ist der Wert, der uns durch die Canon-Anzeige immer wieder ins Auge fällt. Deshalb sollten wir ihn auch als Eingabe-Wert verwenden. So könnten wir mit einer Verdopplung der Market-ISO-Werte (50, 100, 200, 400, 800, 1600, 3200) einen Sprung von einer Belichtungseinheit annehmen.

Nun müssen diese Werte in sv96-Werte (Apex-Werte) umgerechnet werden. Dazu habe ich eine ganz interessante Näherungsfunktion im Zusammenhang mit dem SunsetF15(F16)-Skript aus dem internationalen Forum gefunden. Hier wird der Sv96 mit einer Schrittweite von 12 berechnet.

Selbstverständlich sind auch "krumme" Werte möglich. Hier passt die Canon-Software dann den Market-ISO-Wert an die Standardwerte an (z.B. wird aus 666 640). Die Anpassung gilt aber nur für die Exif-Daten. Gerechnet wird mit dem sv96-Wert.

Nachfolgend nun das Skript als Lua-Code mit der Näherungsfunktion zum Testen. Eine zweite Funktion grenzt den ISO-Bereich ein, damit nicht mit "utopischen" Werten gerechnet wird.
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
--[[

@title ISO-Test

@param i Market ISO

@default i 50

]]




function chk_range(val, mini, maxi)

    local ret=val

    if ret<mini then

        ret=mini

    end

    if ret>maxi then

        ret=maxi

    end

return ret

end



function ISO_to_sv96(val)

    local ISO=val

    local sv96=323

    ISO=chk_range(ISO,50,3200)  

    local ISO1000=ISO*1000

    local countISO=50000

    while countISO<ISO1000 do

        countISO=(countISO*1091)/1000

        sv96=sv96+12

    end

return sv96

end



function fastshoot()

    press("shoot_half")

    repeat

        sleep(1)

    until get_shooting() == true

    press("shoot_full")

    release("shoot_full")

    release("shoot_half")

    repeat

        sleep(1)

    until get_shooting() ~= true

end



iso = i

sv96 = ISO_to_sv96(iso)

print(iso, ISO_to_sv96(iso))

set_sv96(sv96)

fastshoot()

wait_click(0)
Erstellt in 0.007 Sekunden, mit GeSHi 1.0.8.9


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

Erweiterung plus Rudis neuer Befehl

Beitragvon Sinter » 06.04.2010, 10:53

Hallo,

vielen Dank für Eure hilfreichen Rückmeldungen!

Heute habe ich mir ebenfalls die aktuelle CHDK-DE-Version aufgespielt und eine nochmals erweiterte LowLight-Version (flüssigeres Shooting) daran angepasst. Auch die PDF-Doku habe ich nochmals um einige weitere Infos ergänzt. Download unten.

Rudis neuer und leistungsstarker DOF-Universalbefehl liefert sogar auch die effektive Kleinbild-Brennweite ohne (!) dass ich noch im Skript die Tabellenwerte der function set_cam_value einrechnen brauche. Danke Rudi, das ist eine sehr angenehme Erleichterung. Dein schöner neuer Befehl kommt genau zum richtigen Zeitpunkt!

Damit dient set_cam_value im Skript nun nur noch der found-Variable für Zeile 273 zur Identifizierung von 10-Bit-Kameras und 12-Bit-Kameras. Ob man diese Identifizierung alternativ auch ohne Existenz/Pflege der set_cam_value-function hinbekommen könnte, bin ich mir nicht sicher. Falls Ihr eine Idee dazu habt, dann könnte man die aufwendige set_cam_value-function umgehen/löschen und das Skript nochmals verkürzen.


@ msl:
Die schon länger angedachte zusätzliche ISO-Steuerung habe ich noch nicht eingebaut; ich muss mir dafür noch Deinen Hinweis, die Erkenntnisse und das Musterskript (Danke!) genauer ansehen, nachdem die Sache tricky zu sein scheint. Für heute belasse ich es daher noch bei der aktuellen manuellen ISO-Steuerung.

Inzwischen wird bei mir auch die Konsole nach Beendigung nicht mehr (mit Verzögerung) gelöscht. Dabei fällt mir ein, vielleicht waren dafür auch meine massenhaften Kommentarzeilen verantwortlich, die ich letztens als großen Block an das Skriptende verschoben hatte, und die ich mittlerweile gelöscht habe.

Viele Grüße,
Sinter
Dateianhänge
LowLight_0_9_6_3_3.zip
LowLight_09633 mit flüssigerem Shooting und Nutzung von Rudis neuem Universalbefehl, sowie ergänzte PDF-Dokumentation
(107.58 KiB) 353-mal heruntergeladen
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

Re: Fotos bei schwachem Licht (Für 10-Bit-CHDK-Cams)

Beitragvon Sinter » 09.02.2011, 12:42

Hallo,
hier nun nach längerer Zeit ein Update für LowLight einschließlich PDF-Dokumentation:

Auf eine zwischenzeitlich geplante Vorschaltung einer bei Bedarf automatischen Anhebung der ISO-Einstellung, um die ISOBoost-Anwendung eventuell vermeiden oder deren Intensität reduzieren zu können, wird aufgrund nicht stabiler CHDK-ISOSteuerungsbefehle nun endgültig verzichtet.

Vielleicht könnte man inzwischen die Überprüfung auf 10 bzw. 12-Bit-Plattform einfacher lösen, ohne einzelne Kameramodelle einpflegen zu müssen? (Vielleicht mittels Datenfeld in get_platform_id ?)

Viele Grüße,
Sinter


EDIT: 11.02.2011: Heute nochmals den PDF-File ein wenig ergänzt.
Dateianhänge
LowLight982__11_02_2011.pdf
Dokumentation zum LowLight-Skript
11.02.2011
(116.32 KiB) 357-mal heruntergeladen
A982_LowLight.lua
LowLight-Skript Version 0.9.8.2
(17.04 KiB) 351-mal heruntergeladen
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

Vorherige

Zurück zu Code-Ecke

Wer ist online?

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