die Rechenkünste des DOF-Rechners werden seit längerer Zeit beanstandet. Es wurden schon Alternativen in uBASIC und LUA vorgestellt.
Ich finde das nicht zufriedenstellend. Daher möchte ich mit meinem Beitrag hinter die Kulissen des DOF-Rechners schauen.
Grundsätzlich glaube ich, die Urheber des DOF-Rechners haben sehr viel Kompetenz hineingelegt. Allein die technisch vorgegebenen, unterschiedlichen Wertebereiche der Parameter und die Optimierung für Divisionen sind zu beachten.
Allgemeine Bemerkungen:
- - Alle Funktionen befinden sich in der shooting.c.
- Es wird hier ausschließlich der IST-Zustand beschrieben.
- Der DOF-Rechner arbeitet nur bei shoot_half korrekt, da nur dann die gültigen Blendenwerte zur Verfügung stehen.
- Drei Menü-Einstellungen beeinflussen die Ergebniswerte (siehe M1 bis M3).
- Vier Funktionen (siehe F1 bis F4) berechnen die Hyperfokale Distanz(hyp_dist), die Fernpunktdistanz (far_limit), die Nahpunktdistanz (near_limit) und die Schärfentiefe (dof).
- Wegen der Ãœbersichtlichkeit habe ich die Originalstruktur der Hilfsfunktionen (siehe H1 bis H4) beibehalten.
- Die Betrachtungen zu Wertebereichen sind in eckigen Klammern angegeben.
M1. "Motiventfernung von Linse"
Die Formeln (siehe F1 bis F3) berechnen alle Entfernungswerte auf die Bildebene bezogen.
Ist diese Einstellung aktiv, werden nach der fertigen Berechnung durch F1 bis F3 die Entfernungswerte um den Abstand zwischen Linse und Bildebene verringert. Danach gelten die Entfernungswerte ab Linse.
Betroffene Funktionen: Hyperfokale Distanz (hyp_dist), Fernpunktdistanz (far_limit), Nahpunktdistanz (near_limit)
Hinweis: Der Abstand zwischen Linse und Bildebene wird mittels zweier CANON-Firmware-Funktionen als Differenz ermittelt (Motiventfernung zur Bildebene – Motiventfernung zur Linse).
Hier gibt es bereits ein großes Problem. Diese Menü-Einstellung ist derzeit NICHT für DryOS-Kameras verfügbar!
[EDIT]Behoben ab CHDK-DE Revision 231[/EDIT]
M2. "Canon Motiv-Dist. als Nah-Limit"
Betroffene Funktionen: Fernpunktdistanz (far_limit), Nahpunktdistanz (near_limit), Schärfentiefe (dof)
M3. "Benutze EXIF Motiv-Dist."
Betroffene Funktionen: Fernpunktdistanz (far_limit), Nahpunktdistanz (near_limit), Schärfentiefe (dof)
Die Funktionen:
F1. “Hyperfokale Distanz“ (hyp_dist) [mm]
- Code: Alles auswählen
a = aktuelle Blende (H3) [*100]
f = Brennweite für Zoomstufe (Tabellenwert) [*1000]
coc = Kleinster Zerstreuungskreis (Konstante) [*1000mm]
hyp_dist = f² / (10 * coc * a) [1000000 / (10 * 1000mm * 100) = mm]
F2. “Fernpunktdistanz“ (far_limit) [mm]
- Code: Alles auswählen
s = Motiventfernung2 (H2) [mm]
h = Hyperfokale Distanz (F1) [mm]
far_limit = (h * s) / (h - s) [mm² / mm = mm]
F3. “Nahpunktdistanz“ (near_limit) [mm]
- F3.1 Menü "Canon Motiv-Dist. als Nah-Limit" = AUS
- Code: Alles auswählen
s = Motiventfernung1 (H1) [mm]
h = Hyperfokale Distanz (F1) [mm]
near_limit = (h * s) / (h + s) [mm² / mm = mm]- Code: Alles auswählen
near_limit = Motiventfernung1 (H1) [mm]
F3.2 Menü "Canon Motiv-Dist. als Nah-Limit" = EIN
F4. “Schärfentiefe“ (dof) [mm]
- Code: Alles auswählen
f = Fernpunktdistanz (F2) [mm]
n = Nahpunktdistanz (F3) [mm]
dof = f - n [mm]
Hilfsfunktionen:
H1. “Motiventfernung1“ [mm]
- H1.1 Menü "Benutze EXIF Motiv-Dist." = AUS
- Code: Alles auswählen
Motiventfernung1 = aktuelle Motiventfernung zur Bildebene [mm]
- Code: Alles auswählen
Motiventfernung1 = Exif-Motiv-Distanz (PropertyCase-Variable 65 oder 245) [mm]
H1.2 Menü "Benutze EXIF Motiv-Dist." = EIN
H2. “Motiventfernung2“ [mm]
- H2.1 Menü "Canon Motiv-Dist. als Nah-Limit" = AUS
- Code: Alles auswählen
Motiventfernung2 = Motiventfernung1 [mm]
- Code: Alles auswählen
near = Motiventfernung1 [mm]
a_min = kleistmögliche Blende [*100]
f = Brennweite für Zoomstufe (Tabellenwert) [*1000]
coc = Kleinster Zerstreuungskreis (Konstante) [*1000mm]
h=f² / (10 * coc * av_min) [1000000 / (10 * 1000mm * 100) = mm]
Motiventfernung2 = (h * near) / (h - near) [mm]
H2.2 Menü "Canon Motiv-Dist. als Nah-Limit" = EIN
H3. “aktuelle Blende“ [*100]
- Code: Alles auswählen
av96 = aktuelle Blende96
aktuelle Blende = (Wurzel(2)^( av96 /96)) * 100
H4. “ kleistmögliche Blende“ [*100]
- Code: Alles auswählen
av96 = kleistmögliche Blende96 (PropertyCase-Variable 77 oder 25)
kleistmögliche Blende = (Wurzel(2)^( av96 /96)) * 100
Stimmt was nicht im DOF-Rechner? Oder hat er nur Rundungsprobleme?
Gruß rudi