[gelöst] [uBasic] Script für Nachtaufnahmen (fehlverhalten)

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

Script für Nachtaufnahmen (fehlverhalten)

Beitragvon DrMaex » 05.12.2008, 00:27

Hallo,ich bastele gerade an einem Script welches ich für Nachtaufnahmen nützen möchte, da es meiner Meinung nach schneller geht ein Script laufen zu lassen als in den Menüs die Bracketing-Einstellungen zu ändern. Das Script soll eigentlich nichts weiter tun als die Belichtungszeit=0.5,1,2,4,8,16,32,64 Sekunden (also immer das Doppelte) zu setzen. Nun ja, jetzt habe ich ein Problem bei dem ich keine Logik sehe.....

Hier ist der Code:

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title DRI
@param a Pictures
@default a 5
@param c RAW 0=off 1=on
@default c 0
@param n ND-Filter 0=off 1=in 2=out
@default n 0
@param i ISO1 10x
@default i 5
@param s ISO2 1x
@default s 0
@param w Countdown in sec
@default w 5

for h=1 to w
let m=w-h+1
print "countdown:", m,"secs"
sleep 940
next h
print " "
print " "
print " "
print " "
print " "

if c>1 then c=1
endif
if c<0 then c=0
endif
if n>2 then n=2
endif
if n<0 then n=0
endif
if a>8 then a=8
endif
if a<1 then a=1
endif
set_raw c
set_nd_filter n
b=96
press "shoot_half"
get_focus f
for k=1 to a
print "Photo " k  
set_focus f
set_iso_real (i*10)+s
set_tv96_direct b
shoot                  
b=b-96
next k
release "shoot_half"

end
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9


Das Problem das bei mir auftritt ist, dass alle Bilder bis auf das Zweite die richtige Zeit zugewiesen bekommen, sprich ich bekomme eine Reihe mit
Bild 1: 0.5 sek
Bild 2: von der Kamera gesetzte Zeit
Bild 3: 2 sek
Bild 4: 4 sek
Bild 5: 8 sek
warum wird das zweite Bild bei der Zuweisung überprungen?... Das Interessante ist, dass der Fehler dann auftritt wenn die Fotos im hellen geschossen werden, d.h Nachts ist alles ok,aber bei Wohnzimmerbeleuchtung läuft was schief, so gesehen geht es eher ums Prinzip

Kamera ist eine Ixus 80 mit 1.01A Firmware


der Countdown ist aus "zoomser.bas" geklaut
mit set_focus versuche ich den Fokus des ersten Bildes auf die Restlichen zu übertragen. Am liebsten wäre mir ein Befehl der auslöst ohne neu zu fokussieren.......(Continuous Mode(?))

hat jemand eine Meinung dazu, kann man da etwas verbessern?

Vielen Dank im Voraus
Zuletzt geändert von DrMaex am 07.12.2008, 02:44, insgesamt 1-mal geändert.
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 05.12.2008, 22:07

Erstmal Willkommen im Forum,

Schreibe bitte mal Deine Kamera und Version in die Signatur. Da muss man dann nicht so lange suchen.

2 Sachen sind mir bei deinem Skript aufgefallen:

Warum verwendest Du tv96_direct? tv96 würde doch reichen.

Deine Shoot-Konstruktion ist seltsam. Du mußt statt shoot press und release "shoot_full" verwenden. Nur shoot beinhaltet auch "shoot_half". Das wäre dann doppelt.

Ob das nun der Grund für Dein Problem ist, kann ich nicht sagen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 06.12.2008, 00:18

Dieses Script war meine erste Berührung mit selbstgeschriebenen Scripten, es war/ist viel try&error dabei. Irgendwie hatte es wahrscheinlich in einer bestimmten Konstellation so funktioniert und ich beließ es dabei und habe es nicht mehr angeschaut :-) Ich setze mich mal dran und experementiere einwenig.Aber danke schon mal für das Aufzeigen verdächtiger Punkte :-)

hier mal übrigens ein Bild das mit der Hilfe dieses Scripts erstellt wurde:




Bild
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon DrMaex » 06.12.2008, 02:32

Hier die Ergebnisse meiner Frickelei heute Abend:

"set_tv96" lieferte bessere Ergebnisse als "set_tv96_direct"" wobei bei set_tv96_direct" noch mehr falsche Zeiten dabei waren als nur das zweite Bild, ganz verwirrend für mich,hat ja zuvor funktioniert....

press und release "shoot_full" statt shoot bringen verschlechterung da die zeit, in der belichtet wird, nicht mit der Zeit übereinstimmt die am Ende in Exif-daten steht (exif ueberwiegend richtig, Belichtungszeit bei allen gleich und viel zu kurz)

Code: Alles auswählen
for k=1 to a
print "Photo " k 
set_focus f
set_iso_real (i*10)+s
set_tv96 b 
sleep 1000
press "shoot_full"
sleep (k+k)*1000
release "shoot_full"
b=b-96
next k



ansonsten selbes Verhalten wie am Anfang, auf das Notebook gerichtet 2es Bild hat die falsche Zeit, sonst richtig, weg vom Notebook alle Zeiten richtig.

es bleibt fuer mich dann erstmal bei der folgenden Schleife...

Code: Alles auswählen
for k=1 to a
print "Photo " k 
set_focus f
set_iso_real (i*10)+s
set_tv96 b 
shoot
b=b-96
next k


sonst irgendwas was man Probieren koennte?

Gute Nacht
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 06.12.2008, 11:46

So, ich habe mir die Sache noch einmal angeschaut - lange kein uBasic mehr gemacht. :shock:

Beim ersten Kommentar war mir garnicht aufgefallen, dass Du die Shoot-Prozedur nur unvollständig in der Schleife hast. Es scheit zwar zu funktionieren, ist meiner Meinung nach nicht der richtige Weg.

Dann sollte man noch eine Warte-Schleife einbauen, damit die Shoot-Prozesse auch abgearbeitet werden können.

Das Hauptproblem ist aber der tv96-Befehl. Bei solchen Reihen scheint es da immer wieder Probleme zu geben. Die Sache mit dem 2. Bild konnte ich reproduzieren. Ich benutze schon seit einiger Zeit deshalb eine andere Variable. Mit der funktioniert das Setzen der Verschlusszeit sicherer.

Hier mein Lösungsvorschlag:
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title DRI

@param a Pictures

@default a 5

@param c RAW 0=off 1=on

@default c 0

@param n ND-Filter 0=off 1=in 2=out

@default n 0

@param i ISO1 10x

@default i 5

@param s ISO2 1x

@default s 0

@param w Countdown in sec

@default w 5



for h=1 to w

    let m=w-h+1

    print "countdown:", m,"secs"

    sleep 940

next h

cls



if c>1 then c=1 endif

if c<0 then c=0 endif

if n>2 then n=2 endif

if n<0 then n=0 endif

if a>8 then a=8 endif

if a<1 then a=1 endif

 

set_raw c

set_nd_filter n

 

b=96  

get_focus f

 

for k=1 to a

    print "Photo " k

    press "shoot_half"

    do

        x=get_shooting

    until x=1  

    set_focus f

    set_iso_real (i*10)+s

    if get_propset = 2 then

        set_prop 262 b

    else

        set_prop 69 b

    endif

    click "shoot_full"

    do

        x=get_shooting

    until x=1

    do

        x=get_shooting

    until x<>1

    release "shoot_half"                  

    b=b-96

next k

 

end



 
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9


Die Variable zum Setzen der Verschlusszeit ist bei Digic II und III unterschiedlich. Deshalb erfolgt dazu auch eine Abfrage.

Fokus und ISO habe ich nicht betrachtet. Da wird es aber ähnliche Probleme geben, die auch von den Kameraeinstellungen abhängig sind.

Übrigens kann man solche Reihen auch skriptlos erzeugen. Dazu gibt es umfangreiche Einstellmöglichkeiten in den "Extra-Foto-Einstellungen".

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 06.12.2008, 12:24

Guten Morgen, danke erstmal für deinen Vorschlag, schaut sehr interessant aus. Werde mich damit auseinandersetzen und berichten.

msl hat geschrieben:.
.
.
Übrigens kann man solche Reihen auch skriptlos erzeugen. Dazu gibt es umfangreiche Einstellmöglichkeiten in den "Extra-Foto-Einstellungen".

Gruß msl


Ja, von diesen Möglichkeiten lese ich ständig in Foren, aber ich finde, dass es gemütlicher ist mit einem Script, denn allein schon wegen RAW an/aus muss man mehr Tasten drücken :-)
Außerdem macht es Spass sich an die Lösung heran zu Tasten, wenn nur das ständige Karte rein/raus nicht da wäre (wobei ich mir auch Dedanken darüber mache ob es für die Karte und den Kartenleser der Kamera so gut sei,dieses hin und her..)
Jetzt scheint es mir auch ein sinnvolles Feature zum Implementieren zu sein, dass man per USB auch zugriff auf den CHDK Ordner hätte.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon DrMaex » 07.12.2008, 02:43

So, dank der Hilfe von msl funktiniert das Script, bis jetzt zumindest, so ziemlich fehlerfrei. Habe noch eine Abfrage nach dem momentanen RAW-Modus (ein/aus) eingebaut, so, dass am Ende der ursprüngliche Wert wieder hergestellt wird und die "get_focus"- Abfrage am Anfang noch mit "shoot_half" versorgt.

Code: Alles auswählen
aktuelle Version gibt es weiter unten



Eine Frage noch, gibt es irgendwo eine Liste für die Syntax der einzelnen Befehle? Bei dem get_raw war es gerade so ein Fall:
get_raw v liefert Unk stmt (Unknown Statement(?)) mit Aufhängen des Scripts
v=get_raw funktioniert
set_raw v funktioniert wieder
get_focus f scheint auch so zu funktionieren.


Also aus meiner Sicht erfüllt das Script jetzt meine Aufgabenstellung, werde meine Zeit jetzt einem Zeitraffer-Script widmen. Die gibt es zwar zu genüge schon im Netz und hier im Forum und man bräuchte das Rad nicht neu zu erfinden, aber naja, macht mehr spass wenn man es selbst geschrieben hat.

Gute Nacht
Zuletzt geändert von DrMaex am 10.12.2008, 00:28, insgesamt 1-mal geändert.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 07.12.2008, 10:15

Ich finde es gut, dass Du selbst versuchst, eine Lösung zu finden. Dabei lernt man das Skripten sicherlich am besten. Auch wenn das Rad dabei neu erfunden wird. =D>

Das mit der Syntax ist eine Sache, die entstanden ist, als man sich entschieden hat, die Syntax zu verändern. Dies aber nicht konsequent tat. Man kann da nur probieren. Als Faustregel gilt get: x=get_xyz und set: set_xyz Wert. Das hilft aber auch nur bedingt.

Einheitlicher geht es bei Lua zu. Da bekommt man auch genauere Fehlermeldungen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 08.12.2008, 14:47

Ein Bug war dennoch drin, und zwar hat bei mir die Kamera den ISO-Wert des ersten Fotos auf 200 gesetzt, hab nochmal set_iso-real und zu Sicherheit auch set_focus ganz am Anfang in die schleife hinein kopiert...

Code: Alles auswählen
@title DRI
@param a Pictures
@default a 5
@param c RAW 0=off 1=on
@default c 0
@param n ND-Filter 0=off 1=in 2=out
@default n 0
@param i ISO1 10x
@default i 5
@param s ISO2 1x
@default s 0
@param w Countdown in sec
@default w 5

for h=1 to w
    let m=w-h+1
    print "countdown:", m,"secs"
    sleep 940
next h
cls

if c>1 then c=1 endif
if c<0 then c=0 endif
if n>2 then n=2 endif
if n<0 then n=0 endif
if a>8 then a=8 endif
if a<1 then a=1 endif

v=get_raw
set_raw c
set_nd_filter n
b=96

press "shoot_half"
    do
        x=get_shooting
    until x=1   
get_focus f
release "shoot_half"
sleep 1000
 
for k=1 to a
    print "Photo " k
    set_focus f
    set_iso_real (i*10)+s
    press "shoot_half"
    do
        x=get_shooting
    until x=1
    if get_propset = 2 then
        set_prop 262 b
    else
        set_prop 69 b
    endif
    set_focus f
    set_iso_real (i*10)+s
    click "shoot_full"
    do
        x=get_shooting
    until x=1
    do
        x=get_shooting
    until x<>1
    release "shoot_half"                 
    b=b-96
next k
set_raw v
end


hoffentlich war das jetzt wirklich alles :-)
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon antonb » 09.12.2008, 18:04

Hallo DrMaex,

ich habe gerade das DRI-Script heruntergeladen und mal auf die schnelle ausprobiert.
Auf meiner PS G7 läuft es tadellos =D> - danke für deine Bemühungen. Das ist genau das script wofür ich auch eine idee hatte. Allerdings funktioniert bei mir das mit dem Programmieren (noch) nicht :-k

antonb
Powershot G7 / g7-100j-1.1.0_rev_626
Powershot A590 IS / a590-101b-1.0.1-DE_rev_209
EOS 500D
Benutzeravatar
antonb
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 99
Registriert: 19.08.2008, 15:40
Wohnort: Nord-Östliches Weinviertel/Österreich
Kamera(s): PS G7 - PS A590 - EOS 500D

Beitragvon DrMaex » 09.12.2008, 20:29

Gerne, wenn du kürzere Anfangszeit brauchst einfach die Tabelle hinten im Handbuch für chdk finden und den entsprechenden Wert für b am Anfang ablesen und eintragen
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon antonb » 10.12.2008, 12:17

Hallo,
ich habe das Script jetzt unter realen Bedingungen getestet.
Anbei ein (schnelles) Ergebnis mit qtpfsgui
Bild

anton
Powershot G7 / g7-100j-1.1.0_rev_626
Powershot A590 IS / a590-101b-1.0.1-DE_rev_209
EOS 500D
Benutzeravatar
antonb
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 99
Registriert: 19.08.2008, 15:40
Wohnort: Nord-Östliches Weinviertel/Österreich
Kamera(s): PS G7 - PS A590 - EOS 500D

Beitragvon DrMaex » 10.12.2008, 13:17

Also ich erstelle meine DRI's bis jetzt immer mit Photoshop, aber mit Gimp geht es auch. Hier zum Beispiel ist eine Anleitung. Automatische Sachen sind zwar oft eine Zeitersparnis aber das Ergebnis ist nicht immer optimal.
Rein vom Gefühl her würde ich sagen, dass in deinem Bild die Umgebung viel zu hell war (Die Spitze der Kirche versinkt ja im Licht) . ist natürlich ein Nachteil des Scripts, da es sich nicht an die Umgebung anpasst, sondern immer die selben Zeiten feuert. Ich werde mich bei Gelegenheit mal wieder dran setzen und paar sachen Anpassen. Es wird darauf hinaus laufen dass man über die Belichtungskorrektur arbeitet. Im moment ist ja das Problem, dass mit hoher Wahrscheinlichkeit keins der Bilder korrekt belichtet wird, es sei denn, die korrekte Belichtungszeit würde mit einer im Script eingestellten Zeit übereinstimmen. Wenn aber die Halbierung (-1EV) und verdoppelung (+1EV) der Zeit sich nach der Korrekten Belichtungszeit richten wäre das Script flexibler. So könnte man es auch für HDR nutzen, wobei wenn ich ehrlich bin, kenne ich den Unterschied Zwischen DRI und HDR nicht, kommt mir aber so vor als HDR eher tagsüber gemacht werden und DRI nachts. Vielleicht ist es aber auch dasselbe... :)
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon antonb » 10.12.2008, 15:51

Hallo,
Ich weiß, aber leider ist der Turm im Original auch sehr hell (wird extra angestrahlt)
Anbei eines der Fotos der Belichtungsreihe in dem man sieht wie hell der Turm im Gegensatz zum Rest "strahlt"
Bild

Die Kirche ist der Wiener Stephansdom und die Aufnahme ist auf der Nordseite gemacht worden, die generell nicht so stark beleuchtet ist - und war wie gesagt nur ein Test des Scripts (freihändig und ohne Planung geschossen).

Ich glaube dass das Script schon in Ordnung ist so wie es ist. Das Beispiel zeigt ja schon im Original einen extremen Unterschied in der Helligkeit - somit ist das sicher nicht "die" relevante Aufnahme.
Im Normalfall und bei guter Planung und Wahl des Standortes sollte das mit dem extremen unterschied in der Beleuchtung/Belichtung nicht passieren.

Wegen HDR oder DRI: das folgende habe ich einem Nikon Forum gefunden (http://www.nikon-fotografie.de/vbulletin/showthread.php?p=604606

HDR vs. DRI? Im allgemeinen Sprachgebrauch der Fotografen ist damit ein und dasselbe gemeint. Mehrere unterschiedlich belichtete Bilder ins eins zusammengewurstelt.

Aber eigentlich heißt das nur DRI (Dynamic Range Increase = Erhöhung des Kontrastumfangs).

HDR (High Dynamic Range = Großes Kontrastverhältnis) kannst du nämlich eigentlich gar nicht auf einem Monitor oder einem Papierfoto wiedergeben. Bei einem HDR liegt ein erhöhtes Kontrastverhältnis zwischen hellster und dunkelster Stelle vor - also deutlich über normalen Werten von ca. 10.000 : 1


Die DRI Anleitung für Gimp habe ich mir kurz angeschaut - schaut gut aus und scheint einfach umzusetzen sein. Bei (zeitlicher) Gelegenheit werde ich die Kirchenbilder mal nach der Methode bearbeiten.

Zum Schluss noch Werbung für Wien falls das hier erlaubt ist :D.
http://www.stephansdom.at/data/derdom/einfuehrung/index.php
http://www.wien.info/

Liebe Grüße
antonb
Powershot G7 / g7-100j-1.1.0_rev_626
Powershot A590 IS / a590-101b-1.0.1-DE_rev_209
EOS 500D
Benutzeravatar
antonb
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 99
Registriert: 19.08.2008, 15:40
Wohnort: Nord-Östliches Weinviertel/Österreich
Kamera(s): PS G7 - PS A590 - EOS 500D

Beitragvon DrMaex » 10.12.2008, 16:04

Die Helligkeit der Stahler ist ja pervers....da muss man wahrscheinlich schon mit 1/200 Sekunde ran gehen um überhaupt irgendwas zu erkennen auf dem Foto.... :-) bleibt trotzdem ein cooles Motiv
Zuletzt geändert von DrMaex am 11.12.2008, 00:15, insgesamt 1-mal geändert.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Nächste

Zurück zu Code-Ecke

Wer ist online?

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