[Lua] Test MF-Fokus im Nah- und Fernbereich

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

Test MF-Fokus im Nah- und Fernbereich

Beitragvon Werner_O » 15.11.2014, 20:03

Hallo zusammen,

Ich möchte hier mein neues Skript "TestFocus.lua" zum Testen von Fokusdistanzen vorstellen.
Hintergrund dafür sind die vor einiger Zeit nach unzähligen Kameratests durchgeführten Änderungen in CHDK 1.3 bzgl. der manuellen Fokuseinstellungen auch via Skript, bspw. in Lua mit dem Befehl set_focus(x).

Dazu kommt, daß das Ersetzen der Fokusdistanz durch das CHDK-Menü (siehe Seite 15 des aktuellen CHDK-1.3-Handbuchs) bisher nur Werte von 0 bis 65.535 mm sowie Inf. erlaubt, was bei vielen neueren Kameras, insbesondere mit starken Zoomobjektiven, nicht mehr zeitgemäß ist, weil diese speziell bei voll ausgefahrenem Zoom teilweise Fokuseinstellungen bis über 1.000.000 mm ermöglichen, ohne daß diese bereits als unendlich angesehen werden.
Hier mal ein Link mit Infos zu einigen Kameras, für die das zutrifft:
http://doxygen.chdk-treff.de/HTML/D/132.html

Weiterhin ist mir aufgefallen, daß die aktuellen CHDK 1.3-Versionen bei Fokuseinstellungen im Nahbereich leider sehr schlampig arbeiten. Bspw. kann ich bei meiner S3 bei max. WW ohne aktiviertem Makromodus via set_focus(100) entsprechend 10 cm Distanz ohne Fehlermeldung einstellen und der Lua-Befehl get_focus() gibt auch brav 100 mm wieder.
Das fatale Problem dabei:
Etwa meine S3 oder auch meine SX20 kann bei max. WW ohne Makromodus nur bis 50 cm als Nahgrenze fokussieren!
CHDK 1.3 gaukelt so momentan noch Möglichkeiten vor, die es real nicht gibt, und das sollte man m.E. zukünftig in CHDK 1.3 unbedingt noch korrigieren.

Darum mein neues Skript "TestFocus.lua", welches aus sinnvollen Gründen nur mit dem Programm Av gestartet werden kann:

1) Zum einen kann man damit nun beliebige Fokusdistanzen im Bereich 0 mm bis 9.000.000 mm manuell testen. Diese werden dann via set_focus(x) gesetzt und das Ergebnis via get_focus() abgefragt. Dabei erfolgen keine Aufnahmen.
Am Display kann man dann (hoffentlich) erkennen, ob das optische Resultat überhaupt der Zielvorgabe entspricht (die Probleme dazu im Fern- und Nahbereich hatte ich ja bereits angesprochen).
Die Schrittweite für solche Tests kann dabei über die Tasten UP und DOWN in den Schrittweiten (jew. mm) 1, 5, 10, 50, 100 … 100.000, 500.000, 1.000.000 während des Skriptablaufes geändert werden.
Die Tasten LEFT und RIGHT machen dann immer einen neuen Test mit entsprechend kürzerer oder längerer Fokusdistanz als der bisherigen unter Verwendung der aktuell eingestellten Schrittweite.

Der Skriptvorgabeparameter „Start Distance (mm)“ gibt dabei die Startdistanz an, worauf bei Skriptstart fokussiert wird, und der Skriptvorgabeparameter „Step-size at Start (mm)“ gibt die Start-Schrittweite vor, die aber nachträglich wie gesagt jederzeit über UP und DOWN geändert werden kann.

Tipp:
Für solche Tests ist es sinnvoll, zusätzlich den DOF-Rechner von CHDK zu aktivieren.
Dieser zeigt ja via Parameter S den aktuellen Fokus an, welcher dann mit den Skriptergebnissen verglichen werden kann.

2) Zum anderen kann dieses Skript über die Taste SET automatisch die beiden Fokuswerte für die momentan eingestellte Brennweite ermitteln, welche die Grenzwerte zwischen der momentan möglichen maximalen Distanz, die noch nicht als unendlich ist, und der bereits als unendlich angesehenen Distanz darstellen.
Diese Werte ändern sich dabei stark bei unterschiedlichen Brennweiten:
Erst bei Ausführen dieses Testes in max. Zoomposition kann darum die max. mögliche Distanz unterhalb unendlich ermittelt werden!

Über den Vorgabeparameter „Max. Digits AutoInfMode“ kann dabei voreingestellt werden, wie genau diese Automatik arbeiten soll: Mit 5 als Vorgabewert werden diese Fokuswerte auf 5 führende Digits besonders genau berechnet, für die Berechnung von Skriptvorgabeparametern sollten oft aber bereits 3 Digits völlig ausreichen.
Der Vorgabeparameter „StepTime AutoInfMode (s)“ bestimmt dabei die Geschwindigkeit der automatisierten Schritte. Mit dem Vorgabewert 3 sec kann man die schrittweisen Ergebnisse noch am Display nachvollziehen. Mit stattdessen nur 1 sec geht es natürlich schneller, wenn es eilig sein muß.

Aber eine Warnung vorweg:
Führt man diesen Test mehrfach aus, kann das zu völlig unterschiedlichen Ergebnissen führen!
Für die Praxis relevant ist dabei normalerweise immer der kleinste erkannte Fokuswert, welcher noch nicht unendlich ist.

Dazu als Beispiel die sehr unterschiedlichen Ergebnisse von 10 automatischen Messungen an meiner SX20 mit einer von msl bereitgestellten CHDK-Spezialversion basierend auf CHDK 1.3 v4660:
http://www.studio4all.de/foren/chdk/Results_SX20_focus.pdf

3) Sehr wichtige Anmerkung:
Die unter 2) beschriebene Automatik-Prozedur für Inf funktioniert nur dann korrekt, wenn der Vorgabewert „Value for infinite“ (-1 oder 65535) vorher korrekt eingestellt wurde!!!
Um möglichen Schäden an der Kamera durch dieses Skript vorzubeugen sollte darum unbedingt beim ersten Skriptaufruf die Vorgabeoption „Test infinite only“ aktiviert werden:
Dann wird das Objektiv zunächst auf max. Zoom gestellt, danach versuchsweise eine Distanz von 9.000.000 mm eingestellt und danach an der Konsole angezeigt, ob der vom Skript zurückgegebene Wert für Inf -1 oder 65535 ist. Das Objektiv fährt dann anschließend wieder an die Startzoomposition zurück.
Der an der Konsole angezeigte Wert für Inf muß dann in den Skriptvorgaben für "Value for infinite" eingegeben werden!


Bedieninfos zum Skript:
1) Die Tasten UP und DOWN erhöhen bzw. verringern die aktuelle Schrittweite im Bereich 1, 5, 10, 50, 100 ... 100.000, 500.000 bis 1.000.000 mm.
2) Die Tasten RIGHT und LEFT machen einen neuen Test mit jeweils erhöhter bzw. verkleinerter Schrittweite.
3) Die Taste DISPLAY zeigt die letzten Ergebnisse neu an der Konsole an.
4) Die Taste SET aktiviert einen automatischen Suchlauf zur max. möglichen Fokusdistanz.
Anschließend erfolgt eine zusätzliche Sicherheitabfrage, ob dieser Test wirklich ausgeführt werden soll (DISPLAY = OK, MENU = CANCEL).
5) Die Taste MENU beendet das Skript.

Fazit:

Wer glaubt, daß CHDK 1.3 bzgl. Fokuseinstellungen bereits optimal funktioniert, der irrt sich gewaltig! Insbesondere im Fern- und Nahbereich gibt es da bisher noch nicht erklärliche Diskrepanzen zwischen Theorie und Praxis. Daran gilt es zu arbeiten und ausführlich zu testen, damit CHDK diesbezüglich zukünftig noch deutlich besser werden kann.

Mein Skript „TestFokus.lua“ soll dabei helfen, diese Grenzen selber an der jeweiligen Kamera praktisch austesten zu können. Bei Skripten mit manuellen Fokusvorgaben (etwa bei meinen Skripten MF-Mode) oder IntervWO) reichen jedenfalls auf 0 bis 65535 mm reduzierte Vorgabewerte oft nicht mehr aus, um aktuellen Kameras gerecht zu werden.

Ich bitte darum ausdrücklich um ausführliche Rückmeldungen von Euch, damit CHDK zukünftig noch besser werden kann.
Durch das Testen dieses Skriptes mit anschließendem Posting der Ergebnisse kann jeder hier im Forum mit dazu beitragen!

Liebe Grüße
Werner_O

History:

15.11.2014: Skriptversion v0.90 ist verfügbar

16.11.2014: Skriptversion v0.91 ist verfügbar
Die neue Skriptversion beseitigt als Bugfix einige von mir noch gefundene Programmier-Fehler.

19.11.2014: Skriptversion v0.92 ist verfügbar
Einige eher kosmetische Änderungen zugunsten eines eleganteren Script-Codes.

13.07.2016: Skriptversion v1.01 ist verfügbar
Eine wesentlich weiterentwickelte Version mit erweiterter Funktionalität.
Dateianhänge
TestFocus.lua
Test Fokus v1.01
(13.59 KiB) 627-mal heruntergeladen
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

Zurück zu Code-Ecke

Wer ist online?

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

cron