Zoom per script

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

Zoom per script

Beitragvon Antares01 » 29.10.2011, 21:48

Hallo!

Ich habe ein Problem mit dem Zoomen.
Ich würde gerne die Brennweite per Script einstellen können. Dazu habe ich dieses primitive Script geschrieben.
Dabei entsprechen 27-327mm einem Wert von 0-128

Code: Alles auswählen
@title zoom
@param a Zoomwert 100x
@param b Zoomwert 10x
@param c Zoomwert 1x

@default a 0
@default b 2
@default c 7

d=((a*100+b*10+c)-27)*128/300

if d<0 then
   d=0
endif

if d>128 then
   d=128
endif

set_zoom d

end


Das Problem ist jetzt, das nur wenn ich 27 oder 327mm eingebe der Wert auch wirklich angefahren wird.
eine Tabelle von sollwert und angezeigten istwert
Sollwert;Istwert
327;327
287;241
177;92
57;34
27;27

Woran liegt das? Für Rundungsfehler sind die Abweichungen zu groß. Oder kann die Kamera nur bestimmte Werte anfahren?

schöne Grüße
PowerShot sx200is
Benutzeravatar
Antares01
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Bilder: 6
Registriert: 01.05.2010, 20:41
Kamera(s): Powershot SX200IS

Re: Zoom per script

Beitragvon Nando » 29.10.2011, 23:20

Hallo Antares01,
hast du das komplette Script mit Ausgabe Soll/Ist? Ich könnte es mal bei mir testen.

Geringe Abweichungen sind Hardware bedingt. Es kann oft nicht der genaue Wert angefahren werden.
Deine Abweichungen erscheinen mir aber zu groß.

Hier am Beispiel (LOG) von Aufnahmen mit Fokusschritten (Script: Fokus-Reihen-Tiefenschärfe).
Code: Alles auswählen
[UP]   Fokusende
[DOWN] Fokusanfang
[LEFT] [RIGHT] Modus
[SET] Aufnahme
[MENU] exit
Fokusende 1%
Fokusende 100%
Fokus: 1266 - 65535
Fotos: 12, F4, 24mm
 
Fokus Ziel-Fokus DoF-Ziel
1266  1387-1387  121-121
1387  1532-1531  145-144
1531  1708-1707  177-176
1707  1928-1927  221-220
1927  2209-2210  282-283
2210  2582-2585  372-375
2585  3096-3104  511-519
3104  3846-3878  742-774
3878  5048-5150  1170-1272
5150  7252-7061  2102-1911
7061  11163-11150  4102-4089
11150  22753-21633  11603-10483
21633  65535-73733  -1-0


bis dann,
Nando
Canon PowerShot SX200 IS 100D (seit Mitte Nov 2009), Canon PowerShot A1000 IS 100b
Nando
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 257
Registriert: 11.11.2009, 16:55

Re: Zoom per script

Beitragvon msl » 29.10.2011, 23:49

Hallo,

in Sachen Brennweite habe ich mit der SX200 meine Probleme.

5 - 60 mm Brennweite ist klar. Aber woher kommt die Annahme, dass die in Kleinbildformat umgerechnete Brennweite 27 - 327 mm sei. Komischerweise steht das auch so im CHDK-Quellcode (27.3 - 327.4 mm). Der Sensor ist ein 1/2.3" (6.17 x 4.55 mm) Sensor und damit ergibt sich ein ein Umrechnungsfaktor von 5,6 und damit folgend eine Brennweite von 28 - 336 mm.

Die Annahme von 128 Zoom-Schritten ist auch falsch. Dafür gibt es eien Befehl get_zoom_max und der gibt für die SX200 126 aus.

Die Berechnung mit dem Skript kann so nicht funktionieren, weil das Verhältnis nicht linear ist. Im Quellcode zur SX200 gibt es eine Tabelle, die das belegt. Diese Tabelle wird auch für die Berechnungen in CHDK verwendet.

{ 0, 5000}
{ 16, 6800}
{ 32, 9100}
{ 62, 16200}
{ 78, 22300}
{ 102, 35900}
{ 125, 60000}

Man könnte einen Test machen, in dem man Zoom-Schritt für Zoom-Schritt die fokale Länge ausliest (get_focal_length). Mit den Ergebnissen kann dann ein Skript mit Hilfe einer Auswahlentscheidung (select .. case) aufgebaut werden.

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

Re: Zoom per script

Beitragvon Antares01 » 30.10.2011, 10:04

Hallo!

Nando
ich habe mir den Zoomwert einfach mittels CHDK am Display anzeigen lassen und dann abgelesen!

Die Berechnung mit dem Skript kann so nicht funktionieren, weil das Verhältnis nicht linear ist.


Ok, hab ich mir auch schon gedacht, das erklärt es. Wen ist das denn eingefallen???

5 - 60 mm Brennweite ist klar. Aber woher kommt die Annahme, dass die in Kleinbildformat umgerechnete Brennweite 27 - 327 mm sei.


Das kommt daher das wenn ich beim zoom 0 eingebe mir die Kamera 27mm anzeigt und bei 128, 337mm. Ich hab das jetzt nicht nachgeprüft ob das stimmt. Die 28-336mm stehen ja auch in der Kameraanleitung trinnen.

Man könnte einen Test machen, in dem man Zoom-Schritt für Zoom-Schritt die fokale Länge ausliest (get_focal_length). Mit den Ergebnissen kann dann ein Skript mit Hilfe einer Auswahlentscheidung (select .. case) aufgebaut werden.


Wird mir nichts anderes übrigbleiben. Ich werde die Kurve aber gleich durch eine Funktion annähern.

Danke für die Infos!
PowerShot sx200is
Benutzeravatar
Antares01
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Bilder: 6
Registriert: 01.05.2010, 20:41
Kamera(s): Powershot SX200IS

Re: Zoom per script

Beitragvon msl » 30.10.2011, 11:21

Antares01 hat geschrieben: Wen ist das denn eingefallen???

Wenn das linear wäre, würdest du unendlich viele Zoom-Stufen brauchen, um die maximale Brennweite zu erreichen. Auf der anderen Seite möchte man im Nahbereich eine feinere Abstufung haben. Die Tabelle, die ich gepostet hatte, zeigt die "Knickpunkte", wo sich die Verhältnisse ändern. Daraus kannst du dann auch deine Näherungsformel ableiten.

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

Re: Zoom per script

Beitragvon Antares01 » 30.10.2011, 11:36

Stimmt auch wieder!

Hab das ganze jetzt mal mit 6 linearen Funktionen angenähert!
Funktioniert schon mal recht gut. Gibt natürlich Abweichungen aber auf den mm genau kommt es mir nicht an.
Wichtiger ist für mich das die Werte leicht einstellbar sind und vor allem reproduzierbar.

Code: Alles auswählen
@title zoom
@param a Zoomwert 100x
@param b Zoomwert 10x
@param c Zoomwert 1x

@default a 0
@default b 2
@default c 8

d=(a*100+b*10+c)

if d<=54 then
   e=(1396*d)/1000-38
endif

if d<=82 and d>54 then
   e=(7214*d)/10000-3
endif

if d<=110 and d>82 then
   e=(5367*d)/10000+12
endif

if d<=155 and d>110 then
   e=(3541*d)/10000+34
endif

if d<=215 and d>155 then
   e=(2769*d)/10000+46
endif

if d>155 then
   e=(175*d)/1000+67
endif


if e<0 then
   e=0
endif

if e>126 then
   e=126
endif

set_zoom e

end


Die Tabelle, die ich gepostet hatte, zeigt die "Knickpunkte", wo sich die Verhältnisse ändern.


Jetzt wo ich mein Diagramm genauer ansehe, scheinen wirklich dort die Knickpunkte zu sein. Werd ich dann wohl nochmal ändern!

Update, mit der Annäherung nach deiner Tabelle

Code: Alles auswählen
@title zoom
@param a Zoomwert 100x
@param b Zoomwert 10x
@param c Zoomwert 1x

@default a 0
@default b 2
@default c 8

d=(a*100+b*10+c)

if d<=38 then
   e=(1563*d)/1000-43
endif

if d<=52 and d>38 then
   e=(1324*d)/1000-34
endif

if d<=91 and d>52 then
   e=(7333*d)/10000-4
endif

if d<=125 and d>91 then
   e=(4773*d)/10000+19
endif

if d<=192 and d>125 then
   e=(3049*d)/10000+41
endif

if d>192 then
   e=(1744*d)/10000+67
endif


if e<0 then
   e=0
endif

if e>126 then
   e=126
endif

set_zoom e

end


Funktioniert jetzt annähernd perfekt.
D.h. aber auch das die CHDK Anzeige der Äquivalentbrennweite nicht stimmt!
PowerShot sx200is
Benutzeravatar
Antares01
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Bilder: 6
Registriert: 01.05.2010, 20:41
Kamera(s): Powershot SX200IS

Re: Zoom per script

Beitragvon Nando » 31.10.2011, 12:28

Hallo Antares01, hallo msl,
sorry, ich hatte da einen Denkfehler.

Ich war auf den Fokus (Fokusschritte) aus und nicht auf Zoom (Brennweite).

@Antares01
Da kann ich nicht weiterhelfen.

Was ist der Zweck (die Bedeutung) den Zoom per Script anzufahren?

bis dann,
Nando
Canon PowerShot SX200 IS 100D (seit Mitte Nov 2009), Canon PowerShot A1000 IS 100b
Nando
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 257
Registriert: 11.11.2009, 16:55

Re: Zoom per script

Beitragvon Antares01 » 31.10.2011, 16:56

Was ist der Zweck (die Bedeutung) den Zoom per Script anzufahren?


Um im nachhinein bei einem neuen Bild die gleiche Brennweite wie bei einem anderen einstellen zu können.
Natürlich ginge das mit den Tasten an der Kamera auch. Das ist aber eine Spielerei bis man die gleiche erwischt!

Und bei Aufnahmen von astronomischen Objekten bereits im vorhinein eine Brennweite zu wählen und konfortabel einstellen zu können.
PowerShot sx200is
Benutzeravatar
Antares01
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Bilder: 6
Registriert: 01.05.2010, 20:41
Kamera(s): Powershot SX200IS


Zurück zu Code-Ecke

Wer ist online?

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

cron