HDR-Intervall-Fotografie

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

HDR-Intervall-Fotografie

Beitragvon msl » 01.05.2008, 12:52

Hier zum Testen ein Skript, mit dem man HDR-Intervallaufnahmen organisieren kann.

Die Belichtungsreihe wird mit Hilfe der Technik "Brackting im fortlaufenden Modus" erzeugt. Demzufolge muss die Kamera entsprechend eingestellt werden. Das Skript zählt bei jedem Intervall die gemachten Fotos, bis die Vorgabe erreicht ist.

Code: Alles auswählen
rem Originalidee von vine

rem Vorbereitung vor Skript-Start
rem Bracketing im fortlaufenden Modus aktivieren
rem Tv-Bracketing-Wert z.B 1Ev, Bracket-Typ +/-
rem Auslösemodus auf Reihenaufnahme einstellen

rem Kontrolle ausreichende Stromversorgung und SD-Karten-Platz

@title Interval HDR
@param a Anzahl Fotos pro Intervall
@default a 3
@param b Intervall-Abstand Sek.
@default b 10
@param c Anzahl HDR-Serien
@default c 50

if a<3 then a=3
b=b-2

for i=1 to c
  get_jpg_count x
  y=x-a
  press "shoot_half"
  sleep 2000
  press "shoot_full"
    do
      get_jpg_count z
    until z=y
  release "shoot_full"
  release "shoot_half"
  print "HDR-Serie",i,"fertig"
  if i < c then sleep b*1000
next i
end


Testberichte sind erwünscht. :D

Gruß msl
Zuletzt geändert von msl am 01.05.2008, 22:04, insgesamt 1-mal geändert.
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 » 01.05.2008, 20:24

Mit Hilfe des Skriptes, Photomatix und Adobe After Effects habe ich ein Testvideo zusammengebastelt. Es ruckelt etwas, weil ich die Dauer zur besseren Darstellung gestreckt habe.

Basis waren 300 Bilder, aus denen ich dann 100 HDR-Bilder gemacht habe.

Ich habe bewußt auf einen Video-Hoster verzichtet, da diese den eigentlichen Sinn (HDR) zunichte machen.

Download 6 MB


Anmerkung zum Skript:

Das Auszählen der Bilder pro Belichtungsreihe ist etwas ungenau. Bei 100 Belichtungsreihen wurden bei 20 Reihen statt 3 Bilder 4 Bilder gemacht. Das ist aber kein Fehler im eigentlichen Sinn. Die Kamera macht eine Hochrechnung der verbleibenden Bilder, kann dabei aber nicht die genaue Bildgröße kennen. Dadurch kommt es zu Abweichungen.

Gruß msl
Zuletzt geändert von msl am 01.05.2008, 23:02, insgesamt 1-mal geändert.
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 ichundmeinecanon » 01.05.2008, 21:03

Hallo zusammen,

vorab - ich find es toll, was ihr hier so treibt.

Ohne besondere Erfahrung hab ich basierend auf dem Originalscript (von vine) zu obiger Idee gestern mal rumexperimentiert. Es hat bei mir (A560) aber partout nicht funzen wollen. Darauf hab ich versch. Versuche gemacht, aber alle erfolglos.

Ergo hab ich mich von der Idee etwas entfernt und ein eigenes Script verfasst, das recht gut funzt.
Es dürfte aber langsamer sein als obiges Script, welches ich sofort mal testen werde.

Gruß
A.S.

Code: Alles auswählen
rem by asper  01.05.08 tested A560

@title Intervall_HDR
rem HDR_Param
@param a Tv-Stufen 1-5
@default a 2

@param b HDR Shoots 3-10
@default b 5
rem Intevall_Param
@param c Zahl der Zyklen
@default c 5
@param d Intervall (min)
@default d 0
@param e Intervall (sec)
@default e 20
rem Optionen
@param f Startverzoegerung (in sec)
@default f 10
 
if a<1 then let a=1
if a>5 then let a=5
if b<3 then let b=3
if b>10 then let b=10
if c<2 then let c=2
if d<0 then let d=0
if e<10 then let e=10
if f<1 then let f=1
z = (d*60000)+(e*1000)
print "Startverz.",f,"s"
sleep f*1000
rem schrittgroesse
h=a*32
rem anzahl schritte rueckwaerts
i=(b-1)/2

for a = 1 to c
press "shoot_half"
sleep 3500
get_tv96 y

release "shoot_half"
j=y-(h*i)
if j < -1300 then let j =-1300
   for g = 1 to b
       
        set_tv96_direct j
        shoot
        j=j+h
        if j>3264 then let j=3264
       
       
        next g
print "Warte auf Zyklus Nr ",a+1
if a < c then sleep z
next a

end   
ichundmeinecanon
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 01.05.2008, 20:22

Beitragvon ichundmeinecanon » 01.05.2008, 21:13

Ach ja, sinnvoll ist sicherlich, wenn ich zur Bedienung was sage:
Parameter: Tv-Stufen :Belichtungsstufen zwichen den einz. Pics (in Canon-Stufen 1=1/3 Ev)

HDR-Shoots : Anzahl der Pics pro Zyklus
Rest dürfte selbsterklärend sein.

Zur Funktion:

Es wird per "half_shoot" Belichtung und Fokus justiert.
Der gemessene Belichtungswert wird ausgelesen und gemäß der Parameter umgerechnet wieder in die Kamera geschrieben.

Gruß A.S.
ichundmeinecanon
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 01.05.2008, 20:22

Beitragvon ichundmeinecanon » 01.05.2008, 21:22

Hallo msl,

Du hast für mich das Speedproblem der meisten HDR-Scrpts gelöst.
Bei Deinem Script muß aber unbedingt dazugesagt werden, das vorher auf Serienbildaufnahme umgestellt werden muß.

Ansonsten super Arbeit.

Gruß A.S.
ichundmeinecanon
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 01.05.2008, 20:22

Beitragvon ichundmeinecanon » 01.05.2008, 21:32

Wenn ich zur Überarbeitung Deines Scripts beitragen dürfte:
Code: Alles auswählen
if i < c then sleep b*1000
 


verkürzt am Ende nach dem letzten Bild die Pause. Hier ist das warten schließlich nicht notwendig und "Finished" kann angezeigt werden.

Gruß
A.S.
ichundmeinecanon
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 01.05.2008, 20:22

Beitragvon ichundmeinecanon » 01.05.2008, 21:42

Pro forma
um auch noch mal mit Sig zu posten.

Gruß A.S.
Canon A560
CHDK-Allbest-Build
ichundmeinecanon
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 01.05.2008, 20:22

Beitragvon msl » 01.05.2008, 22:00

ichundmeinecanon hat geschrieben:Bei Deinem Script muß aber unbedingt dazugesagt werden, das vorher auf Serienbildaufnahme umgestellt werden muß.


Steht oben in der Kommentierung. ;)



Danke für den Hinweis mit der letzten Warteschleife.

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 Michael » 15.08.2008, 16:12

Hallo msl,

habe dein Intervall-Script vom 1.5.08 ein wenig studiert, weil es dem recht nahe kommt, was ich mit der Canon 960IS zunächst machen will.

In deinem Script kommt die Anweisung "get_jpg_count.." vor, die ich im UBasic-Tutorial nicht definiert finde. Macht sie Jpg-Aufnahmen fortlaufend (so schnell wies nur geht, ohne Neueinstellung) und zählt?

Dann hast du nach "press "shoot_half" ein "sleep 2000" drin. Ist diese 2-Sekunden-Pause willkürlich oder lässt du hier der Kamera Zeit zum neu Einstellen von z.B. Blende, Belichtung, Entfernung, Blitz ?

Wenn Letzteres zutrifft, könnte man die 3 Zeilen:
press "shoot_half",
"sleep 2000",
"press_shoot_full"
wohl durch ein einziges "shoot" ersetzen und hätte dann die schellstmögliche Auslösungsfolge mit jeweils Neueinstellung von Blende, Belichtung, Entfernung realisiert?


Grüße

Michael
Ixus i, Finepix F31fd, Ixus 960IS, Ixus 980IS
Michael
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 23
Registriert: 09.08.2008, 14:11
Wohnort: Stromberg

Beitragvon msl » 15.08.2008, 17:01

Schau Dir bitte mal die Kommentierung (Rem-Zeilen) an. Dort ist beschrieben, wie die Kamera vor Skriptstart eingerichtet werden muss.

Es wird die Reihenaufnahmefunktion der Kamera benutzt.

get_jpg_count wird nur zum Zählen der Aufnahmen benutzt. Der Befehl gibt quasi die Anzahl der gemachten Bilder zurück.

Die 2 Sekunden-Pause dient zum Fokusieren. Das kann natürlich individuell eingestellt werden. 2 Sekunden sind ein sicherer Wert für alle Kameras.

Du kannst die Routine nicht durch Shoot ersetzen, weil nur durch press und relaese die Reihenaufnahme gestartet und gestoppt werden kann.

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 Michael » 15.08.2008, 22:47

Hallo MSL,

habe dein Script mal eingespeichert.

Nach Drücken der blauen Taste wird es neben anderen Scripten auf dem Display angeboten.
Beim Anklicken wird es aber nicht aktviert, vielmehr bleibt das vorige Script resident.

Wenn ich das vorige residente Script auf der SD-Karte lösche, kann es gelingen, dein Script zu aktivieren. Dann ist es abe nicht möglich, die Reihenfunktion der Kamera aufzurufen und es erscheint die rot blinkende Meldung, dass auf deinem Script zwei Schreibfehler seien, offensichtlich mag ds CHKD dann die 2 get_jpg - Anweisungen ohne die erforderliche Reihenfunktion nicht.

Du schreibst, vor Scriptstart müsse die Kamera auf Reihenfunktion gestellt werden. Wenn das geling und ich die blaue Taste Drücke, kommt wieder das Menu mit der Aufforderung, ein Skript zu laden, das dann aber nicht startet, siehe oben.
Konkret: Wie "starte" ich ein Skript? Bislang gelingt mir das nur mit Autostart, aber da ist keine Möglichkeit mehr, die Kamera zuvor auf "Reihenaufnahme" zu stellen, denn das Script läuft mit Einschalten der Kamera schon an.

Habe übrigens ein ganz kleines Script selbst geschrieben, bestehend allein aus einer "Shoot"-Schleife. Das Script wird per "autostart" gestartet.
Damit macht die 960 IS alle 3 Sekunden ein Bild, zwar immer korrekt eingestellt, aber doch eine reichlich niedrige Frequenz. Mit einer Faktor6- SDHC-Karte sollte es schneller gehen - aber da geht erst mal gar nichts, weil das CHDK-Tool "Cardtrix" nur bis 4 GB große Karten bootfähig machen kann, für SDHC Karten mit Faktor 6 eine unüblich kleine Kapazität.

So gibt es halt immer neue Hürden, begründet beim CHDK- Anfänger, aber auch in der Materie. So bitte ich bei Lesern weiterhin um Geduld und bedanke mich bei den Helfern!

Grüße
von Michael
Ixus i, Finepix F31fd, Ixus 960IS, Ixus 980IS
Michael
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 23
Registriert: 09.08.2008, 14:11
Wohnort: Stromberg

Beitragvon msl » 15.08.2008, 23:19

Hallo,

Skripte werden im <ALT>-Modus per Durchdrücken des Auslösers gestartet und können so auch unterbrochen werden.

Es gibt auch genügend Angebote von Klasse6-SDHC-Karten <= 4GB. Die Geschwindigkeit wird aber eher von der Kamerahardware bestimmt. Aus den technischen Daten Deiner Kamera kannst du erlesen, wieviele Bilder pro Sekunde gemacht werden können. Der Wert wird sicherlich so bei 1,5 Bilder pro Sekunde liegen.

Du solltest Dich aber vorerst mit der grundlegenden Funktionsweise von CHDK beschäftigen. Diese Dokumentation wird Dir helfen. Wenn Du sicher mit CHDK umgehen kannst, wird es auch einfacher sein, Details zu erklären.

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 Michael » 16.08.2008, 20:40

Hallo,

vielen Dank an msl für den Hinweis auf die wunderbare Dokumentation, das Handbuch für CHDK.

Die Ixus 960IS macht im werksinstallierten Endlos-Reihenmodus 2 Bilder a 12 MP pro Sekunde - aber nur beim ersten Bild sind Belichtung und Entfernung richtig eingestellt, die Folgebilder verwenden die Einstellung des ersten Bildes, die Kamera muss also nur noch klicken und abspeichern.

Bei meinem Testprogrämmchen mit Neueinstellung für jedes Bild macht sie nur noch ca. 0,3 Bilder pro Sekunde, bezw. braucht sie dann für ein Bild 3 Sekunden mit Neueinstellen, Knipsen und abspeichern.
Das ist lang, aber nicht ganz abwegig. Meine Finepix F31fd braucht z.B. auch gut 2 Sekunden pro Bild im Endlos-Serienmodus mit Neueinstellung, das ist schneller, aber sie hat mit 6MP nur halb so viele Pixel pro Bild zu verarzten.

Wenn man andere Kompaktkameras mit der Fähigkeit zu Endlos-Intervallaufnahmen mit jeweils Neueinstellung sucht, findet man nur wenige. Ich habe keine gefunden, die das schneller als "alle 5 Sekunden ein Bild" macht, siehe zB. die neueren Kompakten von Ricoh.

Ich bin mir aber sicher, dass da noch Luft drin ist, die im Fall der Canons mit dem genialen CHDK aufspürbar sein dürfte.


Grüße

Michael
Ixus i, Finepix F31fd, Ixus 960IS, Ixus 980IS
Michael
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 23
Registriert: 09.08.2008, 14:11
Wohnort: Stromberg

Beitragvon Michael » 23.08.2008, 09:47

Hallo,

msl schrieb:

"Skripte werden im <ALT>-Modus per Durchdrücken des Auslösers gestartet und können so auch unterbrochen werden"

Dazu folgendes Beispiel:

In einem Skript sei ein individuelles Reihenaufnahmeverfahren verwirklicht.
Es sei, wie oben angegeben, gestartet worden, läuft in einer Warteschleife und wartet auf das Auslösesignal zum Bilder aufnehmen. Dieses erfolgt vorzugsweise per Durchdrücken des Auslösers mit dem Finger.
Dadurch wird aber das ganze Skript gestoppt, siehe oben, und es läuft gar nichts.

Ich bastle derzeit an einem solchen Skript (In Anlehnung an die werksseitig implementierten Reihenaufnahmeverfahren) habe aber eine Lösung noch nicht gefunden.


Grüße
Michael
Ixus i, Finepix F31fd, Ixus 960IS, Ixus 980IS
Michael
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 23
Registriert: 09.08.2008, 14:11
Wohnort: Stromberg

Beitragvon msl » 23.08.2008, 09:56

Das, was du machen willst geht so nicht. Im <ALT>-Modus ist der Auslöser für den Skriptstart bzw. die Unterbrechung vorgesehen. Eine Aufnahmeauslösung geht im <ALT>-Modus nicht.

Es ist auch unlogisch, wenn ein Skript läuft, per Auslöser auszulösen. Dazu gibt es ja den Shoot-Befehl. Wenn Du damit Reihenaufnahmen machen willst, benutze einfach eine Schleife.

Ãœberdenke Dein Vorhaben bitte noch einmal.

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

Nächste

Zurück zu Code-Ecke

Wer ist online?

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