Diskussion DOF-Rechner

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

Diskussion DOF-Rechner

Beitragvon rudi » 16.01.2010, 22:59

Hallo Gemeinde,

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.
Die Menü-Einstellungen:

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]


    F3.2 Menü "Canon Motiv-Dist. als Nah-Limit" = EIN
    Code: Alles auswählen
    near_limit = Motiventfernung1 (H1) [mm]

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]


    H1.2 Menü "Benutze EXIF Motiv-Dist." = EIN
    Code: Alles auswählen
    Motiventfernung1 = Exif-Motiv-Distanz (PropertyCase-Variable 65 oder 245) [mm]

H2. “Motiventfernung2“ [mm]
    H2.1 Menü "Canon Motiv-Dist. als Nah-Limit" = AUS
    Code: Alles auswählen
    Motiventfernung2 = Motiventfernung1 [mm]


    H2.2 Menü "Canon Motiv-Dist. als Nah-Limit" = EIN
    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]

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
Zuletzt geändert von rudi am 11.02.2010, 22:13, insgesamt 3-mal geändert.
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Re: Diskussion DOF-Rechner

Beitragvon gehtnix » 17.01.2010, 03:22

Hallo,

also, da machen wir mal mit einem Beispiel den Anfang.

Fokus 100mm, Blende 8,0 und Brennweite 7,300mm, CoC 0.006
Linse liegt bei 52mm, alle Werte nach unten abgerundet.

Berechnung von Bildebene aus:

- Motiv bei 100mm
- hyp_dist = 1117mm
- near_limit = 92mm
- far_limt = 109mm
- dof = 17mm

Berechnung ab Linse:

100mm - 52mm = 48mm

- Motiv bei 48mm
- hyp_dist = 1117mm
- near_limit = 46mm
- far_limt = 49mm
- dof = 3mm


Anzeige auf meiner A610:

Motiv ebenso bei 100mm
- Motiv bei .100
- hyp_dist = 1.11
- near_limit = .091
- far_limt = .109
- dof = .018
fast identisch mit Excel-Berechnung, eventuell ein Rundungsfehler

Mit "Motiventfernung von Linse"
- Motiv bei .048
- hyp_dist = 1.05
- near_limit = .039
- far_limt = .057
- dof = .018

Hier klafft der DOF weit auseinander. Es werden in CHDK werden nur die 52 mm abgezogen.
Meiner Meinung nach, muss aber richtig heissen elektronikfreak's Meinung, ist das falsch.

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

Beitragvon rudi » 17.01.2010, 13:05

Hallo gehtnix,

gehtnix hat geschrieben:Es werden in CHDK werden nur die 52 mm abgezogen.

Ja da ist schon mal eine wichtige Frage:
Wie müssen die Werte für die "Motiventfernung von Linse" ermittelt werden?
    1. Durch die Berechnung auf Bildebene abzüglich des Abstandes der Linse zur Bildebene.
    ODER
    2. Neuberechnung auf die Linsenebene mit den kleineren Eingangswerten.

Den Teil 10 eines dt. CANON-Handbuches für EF-Objektive finde ich sehr hilfreich (Seite 6, Thema: Schärfentiefe).

EDIT:
Die dort angegeben Formeln berechnen die Werte auf die Bildebene bezogen. Die Ergebnisse sind lt. Abbildung 16 aber ab Linse dargestellt.
Darf es somit einen Menüpunkt "Motiventfernung von Linse" grundsätzlich geben?

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon gehtnix » 17.01.2010, 16:14

Hi rudi,

ich habe nochmal geexcelt.

Grüne Sektion:
Rechnet wie jetzt in CHDK ab Bildebene (CCD)
Berechnet near_limit, far_limit und den DOF. Der DOF wird für das nächst Foto abgerundet und auf den alten Fokus addiert. Usw., bis der Fokus größer dem Hyperfocal-Fokus.
Es wird so gerechnet wie die Kamera verstellen kann.

Blaue Sektion:
Hier werden near_limit, far_limit und der DOF ab Linse berechnet. Dadurch ergibt es mehr Bilder. Rechnet sonst so wie oben.

Voreingestellt auf 100mm Fokus und Daten der A610. Brennweite und Blende können verändert werden. Alternativ kann auch die A590 ausgewählt werden. Mit kleinster Blende und größter Brennweite kommen da schon 365 Fotos raus!

62mm sind die minimalste Entfernung.
Wenn der Fokus größer als der Hyperfocal, dann hört die Reihe auf.

Bisher haben wir uns immer den Makrobereich angesehen. Sicherlich weil beim DOFmaster explizit darauf hingewiesen wird dass dort die Werte nicht stimmen. Nun sehe ich in der Aufstellung eher eine große Differenz z.B. zwischen Bild Nr. 10 und 11. Links wird dort der Fokus um 141mm verstellt, rechts aber nur um 1mm! Stimmt nun der rechte Bereich dann hätte ich bei einer Serie mit den linken Werten eine sehr deutliche Lücke in der Bildfolge.

Bemerkung zu Susi2Stack:
Susi2Stack segelt mit unkorrekten Daten zwischen beiden Möglichkeiten! Im Skript wird der DOF ohne half_shoot genommen und ist , wieso auch immer, kleiner als mit half_shoot. Dann wird noch im Skript reduziert und Überlappung usw. Ich weiß ja schon lange dass der DOF nicht stimmt.

gruß gehtnix
Dateianhänge
DOF Gegenüberstellung.xls
(165.5 KiB) 239-mal heruntergeladen
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

Aspekte der DOF-Kalkulation

Beitragvon Sinter » 11.02.2010, 12:14

Hallo,

hier einige weitere Gedanken zur DOF-Kalkulation.

Einen entscheidenden Einfluss auf die DOF-Kalkulation hat das von uns zu definierende Anspruchsniveau an den maximal tolerierbaren Zerstreuungskreisdurchmesser. Da es hier um die optische Wahrnehmung geht, beleuchte ich den Sachverhalt ausgehend vom menschlichen Auge:

(Bezug zu Wikiped.. "Sehschärfe")
Das Auflösungsvermögen bei dem zwei Sehobjekte noch als getrennt wahrgenommen werden ist die Winkelsehschärfe.
Eine Auflösung von 1' (="eine Bogenminute" als Winkelmaß=1/60°) = Ortsauflösung von etwa 1,5 mm bei 5 m Abstand.
Annahme: Ein Mensch schafft diese Auflösung. Folglich hat er dabei gemäß Definition einen Visus von =1'/1'=1 (laut Def.= "Visus von 100%")

Demnach unterstelle ich nun als Prämisse für CHDK folgenden Mustermenschen mit einem Visus von 1 (=100%): Für einen solchen Menschen gilt zur Veranschaulichung:
Auflösung von 1' entspricht folgender Ortsauflösung:
Auf 100 cm Abstand: 2*(tan(0° 0' 30'')*100 cm)=0,029088821 cm

Nun kommen der Betrachtungsabstand zum Bild sowie die Bildgröße ins Spiel:
Ein Lens-Work-Book unseres Kamera-Herstellers geht in einer Kalkulation davon aus, dass ein Bild von 20,4 cm Diagonale aus einer Entfernung von 25 cm betrachtet wird. (Als Basis sind auch Bildbreite oder Bildhöhe denkbar; angesichts verschiedener Bildformate von 16 zu 9 bis 4 zu 3 würde ich fast lieber die Bild-Höhe als Basis bevorzugen. Für heute bleibe ich aber bei der Diagonalen.).

Die auf diese Betrachtungs-Verhältnisse umgerechnete Ortsauflösung auf dem Bild beträgt:
2*(tan(0° 0' 30'')*25 cm)= 0,007272205267 cm
Das wäre auf die Bilddiagonale bezogen ein Anteilsmaß von 1 / 2805 der Diagonalen.
(exakter: 1/2805,201345)

Wikiped.. definiert in "Schärfentiefe" als Anspruchsniveau für einen
maximal tolerierbaren Zerstreuungskreisdurchmesser jedoch nur bescheidene 1 / 1500 der Diagonale.
Welches dieser beiden Anspruchsniveaus (oder eines beliebig anderen) sollen wir nun für die Kalkulation unseres DOF einfordern? Diese Frage ist noch nicht geklärt und müsste/sollte von uns vielleicht genauer diskutiert werden.

Nachdem das Bild mittels CCD-Sensor aufgenommen wird kann das Anspruchsniveau des Zerstreuungskreisdurchmessers nun aber auch noch auf den Sensor runtergebrochen werden. Es gibt verschiedene (!) Sensor-Formate:

Nehmen wir als Beispiel einen Sensor mit 1/2.5'' Diagonale:
Der hat angeblich eine Abbildungsgröße von 5,3x4,0 mm bei einer Bilddiagonalen von 6,6 mm.
Daraus errechnet sich bei Anwendung eines bescheidenen 1/1500-er Anspruchsniveaus ein maximal tolerierbarer Zerstreuungskreisdurchmesser von 0,00044 cm (auf dem Sensor).
(0,66 cm /1500)

Nächstes Problem: Bei gleicher Sensor-Größe besitzen die Kameras je nach Modell eine unterschiedliche (Mega-)Pixelanzahl.
Vergleichen wir nun unsere Zerstreuungskreisdurchmesser mit Pixelgrößen.
Meine nicht mehr ganz aktuelle Ixus 60 mit 1/2,5''-Sensor besitzt eine Bild-Auflösung von 2112x2816 Pixel (=ca. 6 MP). (Evtl. sind physikalisch mehr Pixel auf dem Sensor vorhanden, die aber am Rand nicht vollständig ausgelesen werden? Das müsste man vielleicht noch berücksichtigen.)

Demnach ist auf dem Sensor jedes Pixel etwa 0,53 cm/2816=0,0001882102273 cm breit.

Damit würde sich auf dem Sensor der maximal tolerierbare Zerstreuungskreisdurchmesser über 2,337811321 Pixel erstrecken, d. h. jeder Punkt eines Motivs dürfte in Höhen- und Breitenausdehnung jeweils bis zu 4 Pixel beeinflussen; =abgeleitet unter der Annahme, ein Punkt streut hier über 2 Pixelbreiten vollständig, während die verbleibende Reststreuungsbreite von 0,337811321 Pixel auf die beiden am Rand angrenzenden Pixel aufgeteilt wird.

(Beim höheren Visus-orientierten Anspruchsniveau von 1 Bogenminute bzw. 1/2805 der Diagonalen ergibt sich für den maximal tolerierbaren Zerstreuungskreisdurchmesser ein Wert von 1,250166481Pixel. Damit würde jeder Punkt eines Motivs in Höhen- und Breitenausdehnung jeweils bis zu 3 Pixel beeinflussen dürfen.)

Kämen wir für den maximal tolerierbaren Zerstreuungskreisdurchmesser auf ein Breiten-Erstreckungsmaß von unter 1 Pixel, so würde jeder Punkt eines Motivs in Höhen- und Breitenausdehnung nur noch bis zu 2 Pixel beeinflussen dürfen/können. (Noch todo: Entsprechendes Anspruchsniveau berechnen)

Wobei die Frage im Raum steht ob es überhaupt Sinn macht auf die Pixel(-verteilung) zu achten, oder ob es nicht doch bereits hinreichend ist, den Zerstreuungskreis allein in Relation zur Diagonalen zu betrachten. Vermutlich müsste für unsere Zwecke die Betrachtung der Relation von Zerstreuungskreis zur Diagonalen ausreichen, während sich die Streuung über die Pixelverteilung als Resultierende ergibt und damit in der DOF-Berechnung nicht auftauchen müsste.

Zudem müsste in diesem Zusammenhang noch geklärt werden, wie weit hier noch Überlegungen zur Bayer-Matrix eine Rolle spielen könnten. Gleichfalls ist noch nicht geklärt, wie weit kamerinterne Schärfungsprozesse Einfluss ausüben.


Jetzt möchte ich gerne noch unbedingt wissen, welchem Visus das bescheidenere Anspruchsniveau von 1 / 1500 der Diagonalen entspricht:

20,4 cm /1500 = 0,0136 cm
2*arctan(0,0136/2)/25=0,031168423=0° 1' 52,21'' = 1,870105419' Bogenminuten
Visus=1'/1,870105419'= 0,534729213 = ca. 53%
Das Ergebnis eines derart niedrigen Visus´ überrascht mich ein wenig. Ein Visus von etwas mehr als 53% ist nicht gerade berauschend und würde uns beim Sehvermögen im Alltag nicht mehr ganz zufrieden stellen.
Für unsere Zwecke gibt es natürlich auch den Zielkonflikt zwischen einem möglichst hohen Visus und einer möglichst geringen Anzahl an Fotos für ein Focusstacking. Insofern geht es auch um Kompromissabwägung. Glücklicherweise würden Gehtnix´ feine Skripte wohl auch bei einem 100%-Visus die Mehr-Arbeit bewältigen. Denkbar wäre noch, im Skript zunächst zu berechnen, ob die Kamera in der Lage ist, den Focus fein genug zu justieren denn vor allem im Nahbereich könnte man an technische Grenzen stoßen (wg. Focusstufen minimal im 1 Millimeter-Intervall). Dann könnte man im Nahbereich das Anspruchsniveau hilfsweise senken.

Nun steht die Frage im Raum ob wir dem User in den CHDK-Einstellungen für den DOF-Rechner die Möglichkeit geben können/sollen, (zumindest optional) ein
"Anspruchsniveau für den maximal tolerierten Zerstreuungskreisdurchmesser"
einzustellen. Es würde sich anbieten, den gewünschten Bruchteil der Diagonale eingeben zu können. In den obigen Beispielen also 1/1500 bzw. alternativ 1/2805. Dadurch könnte der User in CHDK selbst (!) bestimmen, welche Bildschärfe er bei seinen Bildern einfordert. Gleichzeitig wäre es sinnvoll, für Lua sowie UBasic jeweils einen entsprechenden CHDK-Befehl einzuführen, um das Anspruchsniveau für den maximal tolerierbaren Zerstreuungskreisdurchmesser für die individuelle (!) DOF-Kalkulation auch per Skript einstellen zu können:

set_dofcoc_max_diag(1500)
würde bedeuten, der maximal tolerierbare Zerstreuungskreisdurchmesser (COC) soll 1/1500-stel der Bilddiagonale betragen.

Gleichfalls wäre zu überlegen, den Zerstreuungskreisdurchmesser alternativ/optional durch ein Vielfaches einer Pixelbreite zu bestimmen:

set_dofcoc_max_pix(3)
würde bedeuten, der maximal tolerierbare Zerstreuungskeisdurchmesser soll 3 Pixelbreiten betragen. CHDK könnte dann intern je nach eingestellter Bildauflösung (L, M1,M2,S) zunächst berechnen, welchem Bilddiagonalenbruchteil die gewünschte Pixelbreite entspricht und anschließend dieses Ergebnis wie bei set_dofcoc_max_diag(1500) als Wunschwert setzen.

Mit derartigen Einstelloptionen würden wir CHDK zu einer schönen individuellen Feinsteuerung des DOF befähigen.


Ich hoffe, mir ist in meinen Berechnungen kein Fehler oder Irrtum unterlaufen. Falls jemand Fehler oder Irrtümer entdeckt, bitte melden.
Der kameraseitigen Berechnung des DOF anhand fokussierter Entfernung, Brennweite und Blende habe ich mich nicht gewidmet, in der Annahme, die Formeln sind bereits fundiert und anwendungsbereit. Oder gibt es dabei noch Aufklärungsbedarf?

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 14:16
Wohnort: München

Re: Aspekte der DOF-Kalkulation

Beitragvon gehtnix » 11.02.2010, 16:16

Hi Sinter,

da hast Du ja mächtig zugeschlagen!

Folgendes bemerkst Du ja schon richtig an. So fein können wir den Fokus gar nicht verstellen!

einen Sensor mit 1/2.5'' Diagonale:.....Zerstreuungskreisdurchmesser von 0,00044
Ist das ein Komma verrutscht? Guckst Du hier, der kleinste CoC beträgt hier 0.004 mm (PS A100).

Anbei eine geänderte Exceltabelle. In dieser werden jetzt die richtigen DOF-Werte ausgewiesen (Die andere Version rechnet so wie die Kamera verstellen kann, milimeterweise. s.o.). Eingestellt auf die A610 mit CoC von 6 = 0,006mm
Von Fokus 10mm bis Fokus 11mm sind es 16 DOF-Werte die ich mit der A610, und die keiner von uns mit seiner Kamera, anfahren kann!!!
(Geb mal, da wo die grüne 6 steht, Deine 0,4 ein. Und dann sieh Dir mal Bild 1000 an. Da bist Du erst bei einem Fokus von 20mm. Und dann noch die Brennweite ändern)

Wir sind hier gezwungen 16 Aufnahmen auszulassen! :shock: So habe ich das auch noch nicht gesehen! Fängt sich zwar wieder, aber erst bei Bild 79! Erst ab da kann die Kamera dem echten DOF mechanisch folgen!

Ich denke Stacken unter 3cm ist völlig überflüssig! Auch für mich eine völlig neue Sicht.

gruß gehtnix
Dateianhänge
DOF nicht gerundet.xls
(369 KiB) 219-mal heruntergeladen
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

Umrechnung auf andere Referenz

Beitragvon Sinter » 11.02.2010, 16:49

Hallo Gehtnix,

ich glaube diese viele Rechnerei war mittlerweile nötig, um die Sache auch von der Augenwahrnehmung abzuklären.
Der CoC von 0,00044 ist bei mir glaube ich durchaus richtig ( 0,66cm/1500 ), ist jedoch nicht auf das 35mm-Format umgerechnet. Wenn ich den Hinweis in der Internettabelle auf die du verweist richtig verstehe, dann sind in deiner Internettabelle die CoC-Wert auf das 35mm-Format als Referenz umgerechnet.
Rechnen wir nun um, vom 5,3 mm breiten Ixus-Sensor auf das 35mm-Format:

35/5,3*0,00044cm = 0,002905660377cm

Wobei ich mich frage, wie denn der CoC in diesen Tabellen überhaupt bestimmt wurde. Ist das ein experimentelles Unschärfemaß, also dass die Kamera nicht besser fokussieren kann, oder sind diese CoC-Werte berechnet auf irgendeiner (unbekannten?) Annahme?
Denn theoretisch müsste doch der CoC eine Variable sein, abhängig vom Schärfe-Anspruchsniveau, so wie ich es heute schon dargestellt hatte.

Angenommen man fokussiert exakt auf eine gleichmäßig weit entfernte Fläche, so dass diese Fläche scharf auf dem Sensor abgebildet wird. Eine absolut scharfe Abbildung realisiert doch (theoretisch) einen CoC-Durchmesser von 0. Also punktgenaue Abbildung. Und nur Gegenstände die außerhalb der Fokusebene liegen realisieren auf dem Sensor einen CoC mit einem Durchmesser>0.
Oder habe ich da eine falsche Vorstellung?

Viele Grüße,
Sinter


EDIT:
Ich sehe gerade in den FAQ (Link dorthin auf linker Seite der Tabelle) deiner Internettabelle den Hinweis, dass die CoC-Werte rein subjektiv gewählt wurden. Daher könnten wir durchaus unser Anspruchsnivau variabel gestalten und den User bestimmen lassen, welches Schärfeniveau er anstrebt. Indes bleibt als Einschränkung die minimal mögliche Schrittweite der Fokussierung. Da muss ich mich erst noch mit deiner Exel-Tabelle vertrauter machen, ab welcher Entfernung welches Anspruchsniveau realisierbar wäre. Ich glaube das wird jetzt noch komplizierter...
Zuletzt geändert von Sinter am 11.02.2010, 17:28, insgesamt 1-mal geändert.
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 14:16
Wohnort: München

Re: Umrechnung auf andere Referenz

Beitragvon gehtnix » 11.02.2010, 17:21

Hi Sinter,

sehe ich auch erst jetzt, Du weist die Werte in cm aus. Der Millimeter ist in der Größenordnung aber schon Standard.

Woher die Werte der Online-Tabellen kommen Bild

Warte mal ab, ich habe Bilder mit rudi´s neuem DOF-Rechner gemacht. Muß "nur" mal eben noch stacken (CombinZP neue Version da).

Denke immer daran, wir können nicht genauer! So wie Baden-Württemberger kein Hochdeutsch können (iÖttl).

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

Beitragvon Sinter » 11.02.2010, 17:36

Hallo Gehtnix,

meinem vorigen Beitrag habe ich gerade noch ein Edit hinzugefügt. Die Werte der Tabelle sind nur subjektiv und nicht verbindlich.

Meine Werte muss man vielleicht noch von cm in Millimeter umrechnen, aber zusätzlich war ja noch das alte 35-mm Bildformat die Referenz für die Tabellenwerte.

Dass wir im Nahbereich nicht besonders anspruchsvoll sein können ist richtig. Dennoch möchte ich gerne noch demnächst ausrechnen, welchen Ansprüchen unsere Technik genügt. Ich hoffe, ich kann irgendwie noch die notwendigen Daten finden.

Viele Grüße,
Sinter



EDIT:
Rudis erwähnte Menüeinstellungen M1 bis M3 verwirren mich noch ein wenig. Da muss ich mich noch durchkämpfen. Falls ich die Sache richtig verstehe, dann errechnen die Formeln Werte für verschiedene Bezugsebenen.
Können Lua und UBasic eigentlich Tangens und ArcusTangens? ;-)
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 14:16
Wohnort: München

Beitragvon rudi » 12.02.2010, 13:43

Hallo Sinter,

deine Ausarbeitung zum Unschärfekreis finde ich sehr interessant. Damit ist eine "Qualitätssteuerung" des DOF möglich. Das gefällt mir.

Sinter hat geschrieben:Rudis erwähnte Menüeinstellungen M1 bis M3 verwirren mich noch ein wenig.
M1 bis M3 sind Menüeinstellungen, welche du im DOF-Rechner-Menü findest, siehe auch Handbuch ab Seite 45. Die Option "Motiventfernung von Linse" ist dort noch nicht verzeichnet, da diese für DryOS bis vor kurzem nicht zur Verfügung stand.
Ein aktivieren der Einstellung M2 führt im derzeitigen DOF-Rechner zur Neuberechnungen der Fernpunktdistanz. Warum sich bei gleicher Motivdistanz, Blende, … die Fernpunktdistanz ändern kann, ist mir nicht klar.

Sinter hat geschrieben:Können Lua und UBasic eigentlich Tangens und ArcusTangens? ;-)
Winkelfunktionen sind in uBasic nicht implementiert und ich glaube auch nicht in CHDK-LUA.

Ich möchte die Diskussion gern auch auf die Formeln ausweiten wollen.

Als erstes interessiert mich die Objektentfernung.

Es stehen zwei Werte zur Verfügung:
1. “Entfernung Objekt – CCD“ (get_focus) und
2. “Entfernung zur Linse“. Nach meinen Tests liegt der Punkt nicht auf der Linse, sondern weiter hinten zwischen Linse und CCD. Möglicherweise repräsentiert er den „1. Hauptpunkt des Objektives“.
Welche Entfernung ist für die DOF-Berechnung richtig. Ich glaube nicht, dass bei identischen Formeln mit beiden Werten gearbeitet werden kann. Die Menüoption “Entfernung zur Linse“ sollte eigentlich keinen Einfluss auf die DOF-Berechnung haben.

Bei den Formeln selbst habe ich für die hyperfokale Entfernung zwei Versionen gefunden. Die Ergebnisse unterscheiden sich genau um die Brennweite. Dabei publizieren Linsenhersteller und Canon die im ersten Beitrag als F1 bezeichnete Formel. Bei Wikipedia.com wird diese nur als Näherung geführt.
Da der hyperfokale Wert als Grundlage für die Berechnung der Nah- und Ferndistanzen benötigt wird, sollte dieser auch stimmen.

Ebenso bei der Berechnung der Nah- und Ferndistanzen, da habe ich drei unterschiedlich Formeln.

Wenn wir schon Änderungen im DOF-Rechner durchführen, sollten diese nicht zu neuen Unstimmigkeiten führen. Auch weiß ich nicht, ob es Unterschiede zwischen analoger und digitaler Fotografie und dem Formelwerk gibt.

Ich glaube, ich habe jetzt mehr Fragen aufgeworfen als beantwortet, aber was soll's.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon naddel » 12.02.2010, 16:48

Hallo Sinter,

Die Winkelfunkionen sind durch Approximationen leicht zu realisieren. Die Berechnungsgeschwindigkeit
ist wesentlich von der erforderlichen Genauigkeit abhängig. Beim Taschenrechner hatte ich schon mal
mit der Umsetzung begonnen aber es bestand kein Interesse. Die ganze Berechnung sollte nach meiner
Meinung im DOF-Rechner, also auf C geändert werden, schon weil dort leichter auf die vordefinierten
Zerstreuungskreise zugegriffen werden kann.

Gruß naddel
S2 1.00f mit aktueller DE Version
Benutzeravatar
naddel
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 156
Registriert: 26.01.2009, 20:42
Kamera(s): G3 s2 ixusii

Beitragvon gehtnix » 13.02.2010, 03:22

Hi,

ich gebe mal folgendes zu Bedenken.

Mit neuem Blick in neue Excel-Tabelle!

Links (grün) wird dargestellt was die Kamera wirklich verstellen kann.
Rechts (blau) wird gerechnet was das Optimale wäre.

Alle Fotos mit DOF-Werten <1 sind zum "guten" Stack nicht zu gebrauchen!
Wie in der rechten DOF-Spalte zu sehen ist, werden schon beim ersten Foto in der linken Spalte 17 Bilder unterschlagen! Sprung von 10 zu 11mm

Die neue Excel-Tabelle mit Foldern und veränderten Werten.
    10mm - so wie jetzt, links wie Susi2Stack arbeitet.
    28mm-Blende8.0 - reduziert auf DOF>1 so hätte ich es gern!
    44mm-Blende2.8 - folgt automatisch wenn auf Blende 2.8 geändert wird.
    174mm-Brennweite29.2-Blende2.8 - folgt automatisch wenn auf Blende 2.8 + Brennweite 29.2 geändert wird.
CoC (grünes Feld) kann geändert werden. Die Daten darunter nicht ändern.

Der Fokus darf nicht kleiner als die gewählte Brennweite eingestellt werden! Das würde sonst Minus-Werte vom DOF ergeben. ALLE Fokuswerte ab Linse!

In der Spalte DIFF wird der Unterschied vom verstellten Fokus (links) zu dem exakt errechnet Fokus (rechst) dargestellt. Bei einem Minuswert hinkt das Skript hinter dem korrekt berechneten Fokus hinterher, ist somit genauer als notwendig. Bei positiven Werten kann das Skript respektive die Kamera den geforderten DOF-Werten nicht folgen

Fakt: Wie unschwer zu ersehen ist, müssen wir mit den Kameras (ab 28mm Fokus - Folder 2) mehr Fotos machen als unbedingt notwendig ist! Links 31 zu Rechts 27, gerechnet bis das letzte Foto über dem Hyperfocalen Fokus ist. Wir haben es schon genauer als notwendig!

Ich wünsche mir ein neue Funktion

get_min_focus

Diese Funktion soll mir den ersten Fokuswert liefern, bei dem der DOF>1mm ist. Somit würde das Skript erst bei 28mm beginnen wie in Folder "28mm-Blende8.0" dargestellt. Ebenso würden automatisch die Varianten mit anderer Brennweite oder Blende angepasst und nicht unnsinnge Bilder erstellt werden.

Was man da jetzt noch optimieren kann, links zu rechts, links zwischen Bild 5+6, 6 könnte schon auf 34mm gestellt werden, eins zuviel. Insgesamt ersparen wir uns 4 Bilder. Das ist mir die Arbeit nicht wert!

Drehen wir jetzt am CoC dann wird es noch komplizierter.

gruss gehtnix Bild
Dateianhänge
DOF Neu.xls
(1.47 MiB) 200-mal heruntergeladen
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

Beitragvon gehtnix » 14.02.2010, 15:42

Hi,

ich habe die Tabelle nochmals optimiert.
Nun wird anhand von Blende & Brennweite gleich der erste Fokus mit einen DOF=1 gesucht.
Die Tabelle beginnt dann erst ab diesem Fokus.

A590 & A610 und SX100 stehen zur Auswahl.

Noch was gilt es zu Bedenken. Wie rudi ja bei seiner A590 festgestellt hat, er kann nur 146 verschiedene Positionen einfahren. Geht man in der Aufstellung mal für seine Kamera Blende 2.8 und Brennweite 23.2mm ein, so benötigt er in der linken Spalte schon 169 Positionen und diese erst ab Fokus 151mm gerechnet!

EDIT In der Tabelle wird noch gar nicht berücksichtigt, dass bei der A610, bei einer Brennweite von 29.2, der kleinste Fokus bei 250mm liegt. Also fallen die Bilder bis Nr. 73 (links) auch raus.

gruß gehtnix
Dateianhänge
DOF min-Fokus.xls
(554.5 KiB) 210-mal heruntergeladen
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

Ergänzung der Tabellen um eine präzise CoC-Berechnung

Beitragvon Sinter » 15.02.2010, 12:54

Hallo rudi, naddel und gehtnix,

sehr interessant wie sich nun die Diskussion in die Details ergibt.
Eure neuen Aspekte muss ich mir noch genauer durch den Kopf gehen lassen, wie wir alles unter einen Hut bekommen können.

Anhand der "alten" (nun überholten) beeindruckenden Kalkulations-Tabelle von Gehtnix habe ich versuchsweise das präzise Händling eines je nach Anspruchsniveau variablen CoC probiert und in die Tabelle von Gehtnix eingefügt. Darin habe ich den vorher (aus einer Fremdtabelle willkürlich) fixen CoC von Gehtnix´Kameras durch den berechneten CoC ersetzt. Download hier in diesem Beitrag.

@rudi:
Die zwei unterschiedlichen hyperf. Dist.-Formeln unterscheiden sich in der Präzision. Diejenige ohne "plus Brennweite" stellt nur eine Näherung dar welche für große Entfernungen praktikabel sein kann. Ich persönlich befürworte aber eine präzise Berechnung.
Mehr Fragen als Antworten? Kein Problem. Alles dient dem Erkenntnisgewinn.

Wie weit die Formeln eine Umrechnung zwischen dem klassischen analogen 35-mm-Format und unseren Digitalformaten benötigen ist mir ebenfalls noch nicht ganz klar. Da muss ich mich ebenfalls noch weiter durchkämpfen. Aber jetzt bei den ganzen Details wird die Sache immer interessanter und wir nähern uns einer präzisen soliden Lösung.

@naddel:
Wenn die Winkelfunktionen leicht und recht präzise zu approximieren sind, ist das auf jeden Fall schon eine gute Nachricht. Damit scheint zumindest in dieser Hinsicht kein Hindernis aufzutauchen. Die Sache auf C zu ändern dürfte dann für Kenner machbar sein, sobald wir hinreichend gute Algorithmen entwickelt haben. In der Tat wäre schön, alles in den DOF-Rechner integriert zu haben. Da müssten dann im DOF-Einstellungsmenü noch Anspruchs- sowie Prämissen-Werte (siehe meine Zusätze in gehtnix´ Tabelle) eingefügt und justierbar gemacht werden.


@gehtnix:
Völlig richtig dass ein DOF mindestens eine Fokussier-Schrittweite betragen soll. In angefügter Tabelle ist in der rechten blauen Tabelle erkennbar, dass dies (unter den dort von mir gewählten Vorgaben) bei der Linsenentfernung erst ab 41 mm erfüllt ist und darunter das Anspruchsniveau nicht erfüllt ist.
Ich glaube aber die linke Tabelle (CCD-Enfernung) hat meinen variablen CoC nicht berücksichtigt, da links die DOF-Werte nicht mit denjenigen der Linsenentfernung (rechte Tab) harmonieren. Normalerweise müssten die DOF-WErte um den Entfernungsversatz zwischen CCO und Linse gleich/ähnlich sein. Vielleicht kannst du das aber besser deuten und evtl. verbessern.
An dieser Stelle muss ich ohnehin ein großes Lob für deine Tabellen loswerden. Sie sind äußert hilfreich und leistungsstark! Beeindruckend! Die machen richtig Spaß. Auch wenn ich manche Werte bei dir noch nicht ganz zu deuten verstehe. Beispielsweise Bereich X7 bis Z23 in der von mir veränderten Tabelle.

Meine CoC-Kalkulation kann wohl in andere/neuere Tabellen übernommen werden. Zugleich müsste dann nur noch der je Kamera bislang feste CoC-Wert als Bezug zum variablen CoC-Ergebnis gesetzt werden.

Ich hoffe, mir sind weder Denk- noch Kalkulationsfehler unterlaufen.

Viele Grüße,
Sinter
Dateianhänge
DOF Gegenüberstellung__CoC_präzise_variabel.xls
Gehtnix alte Tabelle um einen gemäß variablen Aspruchsniveau variablen CoC ergänzt. Linke Tabelle hat veränderte Daten evtl. nicht übernommen.
(296 KiB) 178-mal heruntergeladen
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 14:16
Wohnort: München

Beitragvon rudi » 15.02.2010, 14:07

Hallo,

Sinter hat geschrieben:Ich persönlich befürworte aber eine präzise Berechnung.

Ich auch und sie muss sachlich richtig sein.

OK, die hyperfokale Distanz ist geklärt.

Ich habe mich erneut mit der Motivdistanz beschäftigt und einige Versuche mit der A590 durchgefüht.

Ergebniss:
Der Wert "Entfernung von Linse" ist identisch mit der Anzeige des manuellen Fokuswertes.

Meine Schlußfolgerung:
Der Wert "Entfernung von CCD" hat in der DOF-Berechnung nichts zu suchen. Möglicherweise an einigen anderen Stellen, wie Overrides, auch nicht. Der Menüpunkt "Motiventfernung ab Linse" ist sehr warscheinlich auch überflüssig, denn auch ein GET_FOCUS sollte die exakte Entfernung des Motives zurückgeben.

Wie ist eure Meinung?

@Sinter
Sollte der benötigte Winkelbereich klein sein, dann ist auch eine Lösung über vorberechnete Tabellen denkbar.
Übrigens die Werte für den CoC sind im CHDK als "circle_of_confusion" je Kamera hinterlegt. Da kann gehtnix gar nix für.

Gruß rudi
Zuletzt geändert von rudi am 15.02.2010, 18:22, insgesamt 1-mal geändert.
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Nächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot] und 4 Gäste