[Lua] künstlicher Horizont

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

künstlicher Horizont

Beitragvon msl » 17.07.2014, 22:17

Hallo Skript-Bastler,

ich habe hier noch ein Skript liegen, das schon vor einiger Zeit entwickelt wurde. Es handelt sich dabei um eine Art künstlicher Horizont, der helfen soll, die Kamera wie gewünscht auszurichten.

Viele andere Kamerahersteller bieten diese Funktion an. Das war Grund genug, mittels CHDK so eine Funktion nachzuempfinden. Dank der mathematischen Lua-Funktionen von rudi können wir die notwendigen Winkelberechnungen durchführen. Als Quelle für die notwendigen Orientierungsimformationen dient das Bildstabilisierungssystem der Kamera (IS). Dieses beinhaltet Sensoren, die numerische Lagewerte für das Betriebssystem der Kamera bereitstellt.

Leider fallen diese Werte von Kamera(-Generation) zu Kamera(-Generation) unterschiedlich aus. So ist es bisher nicht gelungen, einen einheitlichen Standard für die Daten zu erstellen.

Das Skript ist lediglich eine Demonstration der Möglichkeit zur Darstellung eines künstlichen Horizonts. Es zeichnet eine Horizontlinie, die Bereich +/- 3 Grad grün dargestellt wird. Außerhalb dieser Grenzen ist eine rote Linie zu sehen.

Das Skript lässt sich via Menü-Taste beenden. Per Skriptparameter kann die Horizont-Position auf der Y-Achse verschoben sowie die Zeichenbreite bestimmt werden. Für letzteres muss die Option "user horizon" aktiviert werden. Außerdem lassen sich diverse Daten optional anzeigen.

Denkbare Anwendungen sind z.B. das automatische Auslösen, sobald die Kamera wunschgerecht ausgerichtet ist oder die Nutzung als Orientierungshilfe bei Panoramaaufnahmen.


Das im Anhang befindliche Skript wurde bisher erfolgreich für folgende Kameras getestet:

- SX220/230, SX240/260

Für folgende Kameras lieferte der Test keine schlüssigen Ergebnisse:

- A590, A720, SX10, SX20, SX130, Ixus970

Folgende Kameras können das Skript nicht benutzen:

- S3


Mich würde mal interessieren, wie die Ergebnisse auf anderen Kameras aussehen.

Gruß msl

Update 19.07.2014 Version 0.3.1
- Skriptparameter zur Winkelkorrektur hinzugefügt

Update 19.07.2014 Version 0.3.2
- Skriptparameter aktiviert
Dateianhänge
horizon.lua
Version 0.3.2
(3.33 KiB) 476-mal heruntergeladen
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: künstlicher Horizont

Beitragvon Werner_O » 18.07.2014, 21:08

Hallo msl,

ich habe dieses Skript inzwischen an meiner S3 und SX20 getestet.
Bei beiden Kameras war dabei das tagesaktuelle CHDK 1.3 v3518 installiert, wobei dabei v3518 ein Update speziell zur SX20 ist.
Die Tests wurden dabei jeweils mit den voreingestellten Skript-Defaultwerten sowie an einem Stativ ausgeführt, welches für eine korrekte horizontale Ausrichtung der Kameras sorgen sollte.

Für folgende Kameras fiel der Test negativ aus:
- A590, A720, SX20

Bei meiner eigenen SX20 102d ist das Ergebnis eigentlich gar nicht komplett negativ:
Es wird zwar immer nur eine rein weiße "Horizontal-Linie" angezeigt, welche zudem leider im Winkel von ca. 40-41 Grad (warum nicht logischerweise ~ 45 Grad?) von unten links nach rechts oben am OSD verläuft, allerdings ändert sich diese Horizontal-Linie aber permanent beim Drehen der Kamera um die optische Achse was darauf hindeutet, daß die IS-Daten vom Skript sehr wohl ausgelesen werden können aber bisher noch falsch interpretiert werden.

Zur Veranschaulichung dazu drei Screenshots mit den Ausrichtungen 0 Grad, -90 Grad und +90 Grad:
Bild
Bild
Bild
Ein solches Ergebnis sollte m.E. als "Teilerfolg" angesehen werden.

Düster sieht es dagegen bei meiner S3 aus, weil das Skript dann immer nur einen schrägen Balken anzeigt, welcher sich beim Drehen der Kamera um die optische Achse rein gar nicht ändert.

Auch dazu ein Screenshot:
Bild
In diesem Fall ist davon auszugehen, daß die neue gewünschte Funktion "eingeblendete Horizontallinie" mit einer S3 grundsätzlich nicht machbar ist.

Wichtig für eigene Testergebnisse ist also herauszufinden, ob sich die eingeblendete Linie beim Drehen um die optische Längsachse generell mitdreht, auch wenn momentan der angezeigte Winkel noch nicht stimmen sollte wie etwa bei meiner SX20.
In einem solchen Fall sollte das hier als "Teilerfolg" aber nicht als "negativ" gepostet werden.

Rein "negativ" sollten nur solche Kameras bewertet werden, welche sich wie meine S3 verhalten und sich die künstlich erzeugte Linie beim Drehen der Kamera um die optische Längsachse gar nicht mit der Kamera mitdreht.

Noch ein Hinweis:
Vor Ausführen des Skriptes muß im Menü "Verschiedenes" die Einstellung "Lua native calls aktivieren?" aktiviert werden.

Liebe Grüße
Werner_O
Zuletzt geändert von Werner_O am 19.07.2014, 11:00, insgesamt 4-mal geändert.
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1027
Registriert: 22.10.2010, 13:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: künstlicher Horizont

Beitragvon Belichter » 18.07.2014, 22:05

Hallo zusammen,

wenn ich mich Werner_O anschliesse, nicht negativ.

Bei waagerechter Kamera steht die weisse Linie ca. 45 Grad schräg von links unten nach rechts oben auf dem Bildschirm.
Kippe ich die Kamera nach links (gegen den Uhrzeiger) bleibt die Linie relativ zur Waagerechten stehen, bewegt sich also auf dem Bildschirm.
Und zwar solange, bis die Kamera ca. 45° gedreht ist. Dann springt die Linie abrupt in ca. senkrechte Position auf dem Bildschirm.
Die weitere Drehung bringt keine weitere lineare Änderung, sondern einen weiteren Sprung bei ca.135° und 225° und 315°.

Zwischen ca. 315° und 45° findet eine kontinuierliche änderung der Horizontlinie statt.

Kamera waagerecht -> Display 50°
Kamera 90° links -> Display 83°
Kamera 180° -> Display 46°
Kamera 270° -> Display 9°
wobei allerdings die Gradanzeige an den genannten Stellen ebenfalls springt.

bis dann
Belichter
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Re: künstlicher Horizont

Beitragvon msl » 18.07.2014, 22:28

Hallo Werner_O,

ich habe die Testergebnisse gemäß deiner Intervention nun in drei Kategorien unterteilt.

Der S3-Screenshot zeigt, dass die notwendige Funktion nicht verfügbar ist - erkennbar an den zwei ersten Werten -1. -1 bedeutet, dass die im Skript aufgerufene Funktion nicht verfügbar ist.

Ansonsten liefern die beiden ersten Werte die Rohdaten des Sensors. Die hohe Kunst ist nun, diese Werte brauchbar umzusetzen. Der dritte Wert entspricht dem Winkel, so wie ihn CHDK-Lua aus der Polarfunktion berechnet. Der 4. Wert ist dann das gerundete Ergebnis. Die fünfte Zahl entspricht r zur Polarfunktion. Die beiden letzten Werten sind Hilfen zur Darstellung der Horizontlinie.

Das Ergebnis der SX20 ähnelt dem der A590 und A720. Leider ist es bisher noch nicht gelungen, die Sensordaten dieser Kameras richtig umzusetzen.

Hier mal noch ein paar Screenshots der SX220, die die gewünschte Umsetzung zeigen.

Bild
Bild
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

Re: künstlicher Horizont

Beitragvon msl » 19.07.2014, 10:25

Hallo,

ich habe mal noch eine kleine Ergänzung in das Skript eingefügt, mit der man per Skriptparameter eine Winkelkorrektur durchführen kann. Das ganze ist eine 'quick&dirty'-Lösung. rudi möge mir verzeihen. ;)

Wenn ich bei der A720 40 Grad als Korrektur einstelle, bekomme ich jetzt eine einigermaßen schlüssige Anzeige im Bereich von -45 bis 45 Grad.

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: künstlicher Horizont

Beitragvon Werner_O » 19.07.2014, 12:55

Hallo msl,

ich habe Deine neue Skriptversion eben an meiner SX20 getestet mit ebenfalls 40 Grad als eingestelltem Winkel-Korrekturwert.
Ich habe dabei wieder mein Stativ verwendet um die Kamerapositionen 0, -90 und +90 Grad exakt erreichen zu können.

Bei genau waagerechter Ausrichtung der Kamera am Stativ laut den beiden Libellenwasserwaagen ist die künstliche Horizontlinie nun waagerecht und es werden vom Skript 0 Grad angezeigt:
Bild

Deine "quick&dirty-Lösung" führt aber bisher noch zu Fehlern im Hochformat.

Bei Kameraposition -90 Grad ist der Fehler dabei mit -77 Grad statt -90 Grad am höchsten:
Bild

Bei Kameraposition +90 Grad fällt der Fehler dagegen mit angezeigten +87 Grad statt +90 Grad deutlich geringer aus:
Bild

Das deutet darauf hin, daß die Winkel-Korrekturberechnungen dieses Skriptes noch optimiert werden müssen.
Dabei wünsche ich Dir viel Erfolg, weil solche Berechnungen in CHDK alles andere als trivial sind.

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1027
Registriert: 22.10.2010, 13:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: künstlicher Horizont

Beitragvon datenmueller » 19.07.2014, 13:45

Hallöchen,

ich habe das Script mal auf der SX10 getestet. Mit Winkelkorrektur 43° bekomme ich den schönen Horizont. Der funktioniert bis ca 5° in beide Richtungen und wird danach immer ungenauer. Bei 70° springt die Linie in die 57° Position und ändert sich nicht mehr.
Was hat der v offset zu bedeuten? Egal was ich da einstelle, es scheint keinen Effekt zu haben.
Gruß

Achim
Benutzeravatar
datenmueller
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 7
Registriert: 29.03.2014, 12:39
Wohnort: Hannover (Nähe)
Kamera(s): A410, A420, A430, G2, G5, G6, S5 IS, SX1 IS, SX10 IS, SX120 IS, bis auf die G's alle mit CHDK 1.3 - und eine alte EOS 350D

Re: künstlicher Horizont

Beitragvon msl » 19.07.2014, 22:30

datenmueller hat geschrieben:Was hat der v offset zu bedeuten? Egal was ich da einstelle, es scheint keinen Effekt zu haben.

Sorry, die Einstellung hatte bisher keine Auswirkung, da ich die Skriptparameter-Variablen bisher nicht freigeschaltet hatte.

Mit der aktualisierten Skriptversion kann man nun auch die Parameter verändern. Mit v offset kann die Höhenposition der Horizontlinie verschoben werden. Mit der Voreinstellung -30 wird die Linie 30 Pixel unterhalb der Bildschirmmitte gezeichnet.

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: künstlicher Horizont

Beitragvon Knarf » 27.07.2014, 13:36

Bei mir mit der SX 130 funktioniert der Horizont Wage recht, hoch Kant Tastaturfeld nach oben. IS nicht kontinuierlich sonst Horizont zu zittrig.

Hoch Kant Tastaturfeld nach unten ergibt bei mir einen Strich ca 20 Grad von rechts nach links aufwärts.

Die Y Achse arbeitet korrekt.
Knarf
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 472
Bilder: 2
Registriert: 28.12.2011, 17:42
Kamera(s): SX130IS 101c
CHDK-DE-Modulversion

Re: künstlicher Horizont

Beitragvon msl » 27.07.2014, 16:26

Hallo,

so ganz schlau werde ich aus deinen Ausführungen nicht.

Im normalen Breitformat (Landschaftsformat) funktioniert die Horizontlinie ohne Korrektur der Gradzahl? Im Hochformat (Portraitformat) gibt es Probleme?

Bei mir spielt die Einstellung der IS-Modi keine Rolle.

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: künstlicher Horizont

Beitragvon Knarf » 27.07.2014, 17:34

Im normalen Breitformat (Landschaftsformat) funktioniert die Horizontlinie ohne Korrektur der Gradzahl? Ne -2 bis -8° zeigt mir das Script #-o =D>

Im Hochformat (Portraitformat) gibt es Probleme? Nur bei=
Bei +90 grad ist der Horizont ca. -15 Grad von rechts nach links auf steigend.

Wenn IS kontinuirlich. Dann ist die Stufe der Abstimmung sehr grob und verzögert. IS = nur bei Abdruck, Balken erscheint flüssig.
Knarf
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 472
Bilder: 2
Registriert: 28.12.2011, 17:42
Kamera(s): SX130IS 101c
CHDK-DE-Modulversion


Zurück zu Code-Ecke

Wer ist online?

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