[uBasic] MD_FAST - Schnelle Bewegungserkennung

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

MD_FAST - Schnelle Bewegungserkennung

Beitragvon chiptune » 24.08.2008, 17:07

MD_FAST - Schnelle Bewegungserkennung mit automatischer Schwellwerteinstellung

Einsatzgebiete des Skripts:
    Automatische Aufnahme von Gewitterblitzen mit kurzen Reaktionszeiten
    Automatische Aufnahme fallender / fliegender Objekte mit kurzen Reaktionszeiten

viele Grüße
chiptune

[Edit]
28.09.2008 - Neue Ausgabe des Skripts, zusätzliches Skript für Kameras ohne manuellen Fokus
[/Edit]
Wer die Downloads nicht sieht, ist nicht angemeldet ;)
Dateianhänge
MD_FASToMF.bas
MD_Fast für DigicII und DigicIII - Kameras, die keinen manuellen Fokus beherrschen (28.09.2008)
(2.84 KiB) 2161-mal heruntergeladen
MD_FAST.bas
MD_Fast für DigicII und DigicIII (28.09.2008)
(3.19 KiB) 2994-mal heruntergeladen
MD_FAST.pdf
Bedienungsanleitung
(65.53 KiB) 3660-mal heruntergeladen
Zuletzt geändert von chiptune am 28.09.2008, 17:08, insgesamt 4-mal geändert.
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Re: Fast Motion detection mit automatischer Schwellwerteinst

Beitragvon gehtnix » 24.08.2008, 18:13

Hi chiptune,

das sind wir Beide am gleichen Thema MD. Du hast das aber ganz anders angefasst, du steckst wohl in der Materie tiefer drinnen.

In ein paar Tagen werde ich wohl auch ein weiteres Script hierzu einstllen. Dazu möchte ich aber gern mehr Hintergrundinfomationen über die Parameter mitliefern damit auch der Neueinsteiger weiß wo es dran zu drehen gilt! Dazu habe ich bis jetzt mal das so aufgedröselt und wollte die Parameter einzeln beschreiben. Jetzt sehe ich schon Du hast Bspw. "Messung U Chroma " aufgeführt, was ist der Unterschied zu "Messung Gruen"?

Code: Alles auswählen
---------------------------------------------------------------------------------------------------------------
@param a Anzahl Spalten
@default a 6
@param b Anzahl Zeilen
@default b 4
@param c Prüfmethode 0=U 1=Y 2=V
@default c 1
@param d Timeout-Periode (s)
@default d 120
@param e Vergleichsintervall (0.1s)
@default e 1
@param f Lichtschwellwert (0-255)
@default f 10
@param g Zellen 0=Aus 1=Ein
@default g 1
@param i Maske 0=Aus 1=Ein 2=Inv
@default i 1
@param j Erste Spalte des Maske
@default j 3
@param k Erste Zeile des Maske
@default k 2
@param l Letzte Spalte des Maske
@default l 4
@param m Letzte Zeile des Maske
@default m 3
@param o Empfindlichkeit (Pixel)
@default o 6
@param p Auslöseverzögerung (ms)
@default p 1

---------------------------------------------------------------------------------------------------------------
Monitor mit 6 Spalten und 4 Reihen, alle Zellen sind aktiv, Maske ist aus.
       |-----------------------------|
     | 11 | 21 | 31 | 41 | 51 | 61 |
       |-----------------------------|
     | 12 | 22 | 32 | 42 | 52 | 62 |
       |-----------------------------|
       | 13 | 23 | 33 | 43 | 53 | 63 |
       |-----------------------------|
       | 14 | 24 | 34 | 44 | 54 | 64 |
       |-----------------------------|

Monitor mit Maskenfunktion, hier sind nur die 4 inneren Zellen aktiv, Maske ist eingeschaltet
        |-----------------------------|
     |                             |
       |         -----------         |
     |         | 32 | 42 |         |
       |         -----------         |
       |         | 33 | 43 |         |
       |         -----------         |
     |                             |
       |-----------------------------|

Monitor mit Maskenfunktion, hier ist der äußere Rahmen aktiv, Maske ist "Invertiert" eingeschaltet.
       |-----------------------------|
     | 11 | 21 | 31 | 41 | 51 | 61 |
       |-----------------------------|
     | 12 | 22 |         | 52 | 62 |
       |----------         ----------|
       | 13 | 23 |         | 53 | 63 |
       |-----------------------------|
       | 14 | 24 | 34 | 44 | 54 | 64 |
       |-----------------------------|
      
---------------------------------------------------------------------------------------------------------------
MD - PARAMETER:
a)   Anzahl der Spalten (11,21,31, siehe oben)
b)   Anzahl der Zeilen (11,12,13, siehe oben)
c)   Prüfmethode: Steht auf 1 (R,G,B = Rot, Grün, Blau?)
d)   Timeout - nach dieser Zeit startet MD wieder neu und ermittelt neue Tv/AV-Werte und wenn eingestellt,
      wird eine Neufokussierung vor vorgenommen
e)   Vergleichsintervall (ms)
f)   Lichtschwellwert - Lichtunterschied innerhalb der aktiven Zelle, daraus wird die Bewegung erkannt
g)   Zellen anzeigen - 0=Aus, 1=Ein, damit werden die Zellen auf dem Monitor angezeigt. MD erkennt
      Bewegung auch ohne diese Anzeige.
h)   MD übergibt im Script mit diesem Paramter die Anzahl wieviel Zellen mit Bewegung erkannt wurden.
      Darauf hin wird ausgelöst.
i)   Maske: 0=Aus, 1=Ein, 2=Invertiert, Schaltet diese ein, wie oben schematisch dargestellt.
j)   Erste Spalte der Maske: im obigen Beispiel 3
k)   Erste Zeile der Maske: im obigen Beispiel 2
l)   Letzte Spalte der Maske: im obigen Beispiel 4
m)   Letzte Zeile der Maske: im obigen Beispiel 3
n)   Parameter: 1-Sofortauslösung - selbsterklärend
                      2-Debugginformationen mit loggen. ODER-verknüpfte-Werte werden akzeptiert - Erklärung hierzu fehlt
o)   Empfindlichkeit (Pixel) - Geschwindigkeit kontra Präzision
                              (1=verwendet jeden Pixel, 2=verwendet jeden zweiten Pixel, etc.)
                              Ich habe aber auch was von "Blockgröße" gelesen, würde der obigen Aussage wiedersprechen
p)   Dauer bis zum Auslösen (0.1s) - kann hilfreich für die Kalibrierung mit der "Zeichne Maske"-Option sein.
                     Wie und was zu kalibrieren ist ist mir unbekannt.

---------------------------------------------------------------------------------------------------------------

Im Texteditor sollte das wieder auber da stehen.

Willst Du Dir bekannt Parameter deutlicher beschreiben?

Ein paar Fragen zum Script selber:

Hat das einen tieferen Sinn dass Du

:fast_md_wait
let U=get_tick_count
let V=(U-X)
if V<r then goto "fast_md_wait"

nicht mit "sleep r" löst?

Du übergibst zum MD mit einigen Festwerten

md_detect_motion a, b, c, d, e, f, 1, h, i, j, k, l, m, 9, o, p
md_detect_motion a, b, c, 1000, e, f, 1, h, i, j, k, l, m, 0, o, p

Wäre zum Verstehen ganz hilfreich wenn Du das erläuterst.
Die 1000 verstehe ich noch.

Bei Gewitterblitzen hilft mir das?
Was ist wenn mein Motiv 200 Meter weit weg ist?

Mit den Parameterwerten stehe ich noch auf Kriegsfuß, daher die Fragen.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Re: Fast Motion detection mit automatischer Schwellwerteinst

Beitragvon chiptune » 24.08.2008, 20:16

Hi gehtnix,

ich habe hauptsächlich das Script von fudgey genommen und um die Schwellwertanpassung erweitert.

Auch bin ich von der Universallösung (fast, slow, Bild und video in einem script) nicht so begeistert, da jede Betriebsart ihre eigenen Parameter benötigt. Ich habe schneller ein alternatives Script geladen, als dass ich die alle Parameter prüfe und gegebenfalls ändere.

Weiter habe ich die Parameterzuordnung wieder auf die Bezeichnungen der Doku zurückgeführt - ist einfacher zu lesen (md_detect_motion a, b, c, d, e, f, .........).

Meiner Sicht nach ist nur der Parameter threshold (Schwellwert) vom Motiv abhängig und sollte dementsprechend gezielt eingestellt werden.

Die Anzahl der Zeilen, Spalten, Vergleichsintervall, Maskierung ja/nein und wieviele Zellen, als auch Pixelstep hängen von der internen Bearbeitung durch CHDK ab oder sind kameraabhängig. Einmal auf den Anwendungsfall optimiert, bräuchten sie nicht mehr geändert werden.

Ist 6x4 wirklich das performanteste Grid, bremst oder beschleunigt die Maskierung die Reaktionszeit. Was ist die günstigste Anzahl der maskierten Zellen? Bis vor kurzem hatte ich einen zu großen Jitter beim Umgang mit MD_Test2.exe, als dass ich hier irgendwelche verbindlichen Schlüsse ziehen konnte. Das Ganze sollte man etwas genauer untersuchen. Fudgey verwendet als Vergleichsintervall 7ms. Bei einer Scriptzeilenbearbeitungszeit von 10ms sollte ein Jitter vorprogrammiert sein; oder doch nicht?

Parameter "Messmethode":
Hier wurde gemacht was geht - ich habe keine Vorstellung, wann man U und V sinnvoll einsetzen sollte. Auch die Begrenzung auf R G B ist wohl in der Praxis ziemlich exotisch. Ich habe schon überlegt, ob man diesen Parameter überhaupt unter @param aufführen soll.

Parameter "Timeout":
Du schreibst....
Timeout - nach dieser Zeit startet MD wieder neu und ermittelt neue Tv/AV-Werte und wenn eingestellt, wird eine Neufokussierung vor vorgenommen

md_detect_motion agiert wie ein wait_click - MD wir solange bearbeitet, bis eine Bewegung ermittelt wird, oder Timeout abgelaufen ist, danach wird der folgende Scriptbefehl ausgeführt.

Willst Du Dir bekannt Parameter deutlicher beschreiben?

Mhm -ich überlege noch, welche Parameter der Anwender wirklich braucht, bzw. sinnvoll einsetzen kann.

:fast_md_wait
let U=get_tick_count
let V=(U-X)
if V<r then goto "fast_md_wait"


Hab ich so von fudgey übernommen :oops:
sleep r wäre wirklich einfacher.

md_detect_motion a, b, c, 1000, e, f, 1, h, i, j, k, l, m, 0, o, p

1000 ist der Timeout 1 Sekunde. Nach spätestens 1000ms wird der MD-Befehl bendet.
Wurde 6x keine Pseudobewegung erkannt (Zähler P), so passt der Schwellwert.
Mit einem Schwellwert von 6000 kommt man nicht hin, da der Timeout von Anfang an zählt und auch Erkennungspausen mitgezählt würden.

Bei Gewitterblitzen hilft mir das?
Was ist wenn mein Motiv 200 Meter weit weg ist?

Mhm - dieses Script ist für wirklich schnelle Auslösung, z.B. Gewitterblitze ausgelegt. Ein Autofokus würde die Auslösung nur zu stark ausbremsen. MF ist deshalb in diesem Fall nötig - die "200m" müüsen dann von hand eingestellt werden (beim Blitz ist dies Unendlich..)

Der Fuchs vor seinem Bau oder die Maus vor ihrem Loch sind ganz andere Situationen. Hier sollte AF nicht nur eingeschaltet sein, sondern auch sichergestellt werden, dass der Fokus gefunden wurde, bevor ausgelöst wird. Auch sollte die die Bewegungserkennung genau im AF-Rahmen erfolgen.

Fudgeys Script unterstützt dies auch im slow-Modus nicht - werde die nächsten Tage daran rumbasteln.

Gruß
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Beitragvon chiptune » 12.09.2008, 20:05

Hallo,

das Skript wurde überarbeitet. Folgende Dinge sind neu:
    Das Skript arbeitet nun mit DigicII und DigicIII Prozessoren (JuciPhox ist Voraussetzung)
    Start- und Endezeit sind nette Features, können deshalb optional eingesetzt werden
    Bedienungsanleitung wurde überarbeitet

(Die Downloads befinden sich im ersten Beitrag dieses Threads)

Dank an "Herrn Nelius", der den DigicII-Part mit seiner Kamera getestet hat.

Das Skript sollte eigentlich mit nahezu allen DigicII und DigicIII-Kameras arbeiten. Sollten Probleme auftauchen, bitte in diesem Thread posten.

Grüße
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Beitragvon Pixel » 27.09.2008, 19:32

bei mir kommt immer die meldung Autofocus noch aktiv dabei habe ich eigentlich alles was irgendwas damit zutun hat ausgeschaltet

gibts in chdk eine funktion die autofocus komplett ausstellt ?
Powershot A560
Pixel
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 9
Registriert: 25.09.2008, 17:07

Beitragvon chiptune » 27.09.2008, 21:44

Bist du denn im manuellen Fokus?

Grüße
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Beitragvon Pixel » 28.09.2008, 10:21

müsste ich eigentlich schon sein :roll:
Powershot A560
Pixel
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 9
Registriert: 25.09.2008, 17:07

Beitragvon chiptune » 28.09.2008, 11:15

Hallo Pixel,

nachdem ich einen Tipp bekommen habe, habe ich mir mal das Handbuch der A560 runtergeladen.

Deine Cam hat leider keinen manuellen Fokus, damit ist das Skript (auch wenn man die Abfrage abschalten würde) leider nicht sinnvoll einsetzbar.
    Der AutoFokus benötigt zuviel Zeit, als dass man das Skript noch "fast" nennen dürfte.
    Im Fall eines Gewitterblitzes oder eines Fallenden Objekts funktioniert der Autofokus aufgrund seiner Trägheit nicht

bedauernde Grüße
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Beitragvon gope » 28.09.2008, 12:24

Hi
Meine Ixus50 hat auch keinen MF. Trotzdem gelingen damit Blitzaufnahmen. "press_half" ist das Zauberwort. Erst danach die Routine für die MD ansteuern. Dann ist bereits scharf gestellt und die Cam wartet nur auf das Ereignis.

Peter
Ixus 50 -
Und kaum macht man es richtig, funktionierts.
Benutzeravatar
gope
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 102
Registriert: 03.06.2008, 08:18
Wohnort: A-6900 Bregenz

Beitragvon chiptune » 28.09.2008, 12:30

gope hat geschrieben:"press_half" ist das Zauberwort.

Half press gibt es auch bei MD_Fast - doch auf was soll die wartende Kamera scharfstellen?
Der Gewitterbiltz ist noch nicht da, und das Objekt ist noch nicht gefallen :roll:

In diesen Situationen ist nur der manuelle Fokus sinnvoll.

Grüße
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Beitragvon gope » 28.09.2008, 13:11

Stimmt schon, aber bei Blitzen ist immer "unendlich"-Fokus, oder? Also irgendwo auf den Horizont einstellen, das Script starten und dann die Position richten für die Aufnahme.
Gleich bei "fallenden" Gegenständen. Die kommen ja nicht auf einem zu oder von einem weg. Also erstmal mit einem Hilfsmittel - Karte, Hand - scharfstellen und dann MD auslösen.

So gehe ich vor, wenn ich - zwar ohne Script, aber mit CHDK - Makroaufnahmen mache, die ich später stacken möchte. Der Mittelpunkt des Bildes wird scharf gestellt, der ist aber meist auch in der Mitte der Tiefe. Ich will aber vor der Mitte bis nach der Mitte scharf haben. Dann muss ich der Cam doch sagen, ab wo sie beginnen soll.
Entweder durch Drehen der Cam oder ich halt was an die Position, ab der scharf werden soll. Das Bracketing ist auf "+" gestellt. Das erste Bild ist für den Kübel - war ja auch nur zur Kalibrierung der Entfernung.

Peter

Nachtrag: Ausserdem kann ich bei meiner Ixus50 den Entfernungswert in mm mit CHDK bestimmen und auch angeben. Probier das mal. Und bei Gewittern reicht die Hyperfokaldistanz, um alles scharf zu bekommen.
Ixus 50 -
Und kaum macht man es richtig, funktionierts.
Benutzeravatar
gope
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 102
Registriert: 03.06.2008, 08:18
Wohnort: A-6900 Bregenz

Beitragvon fe50 » 28.09.2008, 13:59

chiptune hat geschrieben:...habe ich mir mal das Handbuch der A560 runtergeladen.
Deine Cam hat leider keinen manuellen Fokus
Die "MF" Funktion ist bei den meisten Modellen (auch bei den Ixus-Cams) dank CHDK vorhanden (SD Override), somit kann bei allen damit ausgestatteten Kameras sehr wohl manuell fokusiert werden - entweder per manueller Eingabe des Wertes oder per Tastenfunktion (z.B. per Zoomhebel im SD-Modus bei einer Ixus), auf hyperfo.Dist. kann mit einem Tastendruck justiert werden...mit CHDK hat also jede unterstützte Kamera einen manuellen Fokus :D
"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1105
Registriert: 25.04.2008, 15:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon Pixel » 28.09.2008, 16:17

wie und wo kann ich diese einstellungen den machen ?
Powershot A560
Pixel
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 9
Registriert: 25.09.2008, 17:07

Beitragvon C4_87 » 28.09.2008, 16:43

nur so..b mir zeigt der auch immer an das ich autofokus an hab, obwohl ich im manuellen bin.
CHDK-DE_g7i (neuste)

http://zephyrc4.deviantart.com

[irgenwie hab ich ja mit den : ^^] ^^
Benutzeravatar
C4_87
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 249
Bilder: 5
Registriert: 13.06.2008, 12:26
Wohnort: Jetzt in DD

Beitragvon chiptune » 28.09.2008, 17:01

CHDK Extra-Foto-Einstellungen > Ersetze Motiv-Distanz!

Es ist immer wieder erstaunlich, das CHDK es doch kann :D

Die Motiv-Distanz wird nun zwar überschrieben, aber die Cam wird über den PropCase immernoch den AutoFokus melden (zumindest lässt sich meine nicht davon beeinflussen) ;)

Ich werde im ersten Beitrag eine weitere MD_Fast-Variante einstellen.

viele Grüße
chiptune
SX100IS mit CHDK
MD_SLOWMD_FASTMD_TUNE
chiptune
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Registriert: 16.07.2008, 06:24

Nächste

Zurück zu Code-Ecke

Wer ist online?

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