Czy istnieje wzór do obliczania DOF?


16

Jestem całkiem pewien, że DOF zależy od:

  1. Długość ogniskowa
  2. Otwór
  3. Odległość od tematu
  4. Rozmiar czujnika
    i więcej (jak wskazano w komentarzu).

Ale pytanie brzmi: czy jest jakaś formuła, która łączy wszystkie te czynniki z DOF? Biorąc pod uwagę te wartości, czy można dokładnie obliczyć głębię ostrości?


1
Są jeszcze dwie rzeczy do rozważenia: (5) rozmiar ostatecznego obrazu; oraz (6) czy chodzi o „strefę dopuszczalnej ostrości”, gdy wzięto pod uwagę pozostałe pięć czynników, czy też „strefę dostatecznego rozmycia”.

Odpowiedzi:


17

Głębia ostrości zależy od dwóch czynników: powiększenia i liczby f.

Ogniskowa, odległość od obiektu, rozmiar i okrąg pomieszania (promień, w którym widoczne jest rozmycie) wspólnie określają powiększenie.

Głębia ostrości nie zależy od konstrukcji obiektywu lub aparatu innego niż zmienne w formule, dlatego rzeczywiście istnieją ogólne wzory do obliczania głębi ostrości dla wszystkich aparatów i obiektywów. Nie mam ich wszystkich w pamięci, więc kopiowałbym i wklejał z Wikipedii, więc zamiast tego zostawię ten link:

Lepszą odpowiedzią na twoje pytanie byłoby wyprowadzenie formuł z pierwszych zasad, co chciałem zrobić przez jakiś czas, ale nie miałem czasu. Jeśli ktoś chce się zgłosić, dam mu głos;)


15

Chciałeś matematyki, więc oto ona:

Musisz znać współczynnik CoC swojego aparatu, czujniki Canon APS-C, liczba ta wynosi 0,018, w przypadku Nikona APS-C 0,019, dla czujników pełnoklatkowych i filmu 35 mm liczba wynosi 0,029.

Wzór na kompletność:

CoC (mm) = viewing distance (cm) / desired final-image resolution (lp/mm) for a 25 cm viewing distance / enlargement / 25

Innym sposobem na zrobienie tego jest formuła Zeissa :

c = d/1730

Gdzie d to rozmiar przekątnej czujnika, a c to maksymalny dopuszczalny CoC. Daje to nieco inne liczby.

Najpierw musisz obliczyć odległość hiperfokalną dla obiektywu i aparatu (ta formuła jest niedokładna przy odległościach zbliżonych do ogniskowej, np. Ekstremalne makro):

HyperFocal[mm] = (FocalLength * FocalLength) / (Aperture * CoC)

na przykład:

50mm lens @ f/1.4 on a full frame:      61576mm (201.7 feet)
50mm lens @ f/2.8 on a full frame:      30788mm (101 feet)
50mm lens @ f/1.4 on a Canon APS frame: 99206mm (325.4 feet)
50mm lens @ f/2.8 on a Canon APS frame: 49600mm (162.7 feet)

Następnie musisz obliczyć najbliższy punkt, który jest najbliższą odległością, na którą będzie ustawiona ostrość, biorąc pod uwagę odległość między aparatem a obiektem:

NearPoint[mm] = (HyperFocal * distance) / (HyperFocal + (distance – focal))

na przykład:

50mm lens @ f/1.4 on a full frame with a subject at 1m distance: 0.984m (~16mm in front of target)
50mm lens @ f/1.4 on a full frame with a subject at 3m distance: 2.862m (~137mm in front of target)
50mm lens @ f/2.8 on a full frame with a subject at 1m distance: 0.970m (~30mm in front of target)
50mm lens @ f/2.8 on a full frame with a subject at 3m distance: 2.737m (~263mm in front of target)

50mm lens @ f/1.4 on a Canon APS frame with a subject at 1m distance: 0.990m (~10mm in front of target)
50mm lens @ f/1.4 on a Canon APS frame with a subject at 3m distance: 2.913m (~86mm in front of target)
50mm lens @ f/2.8 on a Canon APS frame with a subject at 1m distance: 0.981m (~19mm in front of target)
50mm lens @ f/2.8 on a Canon APS frame with a subject at 3m distance: 2.831m (~168mm in front of target)

Następnie musisz obliczyć daleki punkt, który jest najdalszą odległością, na którą będzie ustawiona ostrość, biorąc pod uwagę odległość między aparatem a obiektem:

FarPoint[mm] = (HyperFocal * distance) / (HyperFocal – (distance – focal))

na przykład:

50mm lens @ f/1.4 on a full frame with a subject at 1m distance: 1.015m (~15mm behind of target)
50mm lens @ f/1.4 on a full frame with a subject at 3m distance: 3.150m (~150mm behind of target)
50mm lens @ f/2.8 on a full frame with a subject at 1m distance: 1.031m (~31mm behind of target)
50mm lens @ f/2.8 on a full frame with a subject at 3m distance: 3.317m (~317mm behind of target)

50mm lens @ f/1.4 on a Canon APS frame with a subject at 1m distance: 1.009m (~9mm behind of target)
50mm lens @ f/1.4 on a Canon APS frame with a subject at 3m distance: 3.091m (~91mm behind of target)
50mm lens @ f/2.8 on a Canon APS frame with a subject at 1m distance: 1.019m (~19mm behind of target)
50mm lens @ f/2.8 on a Canon APS frame with a subject at 3m distance: 3.189m (~189mm behind of target)

Teraz możesz obliczyć całkowitą odległość ogniskową:

TotalDoF = FarPoint - NearPoint

na przykład:

50mm lens @ f/1.4 on a full frame with a subject at 1m distance:  31mm
50mm lens @ f/1.4 on a full frame with a subject at 3m distance: 228mm
50mm lens @ f/2.8 on a full frame with a subject at 1m distance:  61mm
50mm lens @ f/2.8 on a full frame with a subject at 3m distance: 580mm

50mm lens @ f/1.4 on a Canon APS frame with a subject at 1m distance:  19mm
50mm lens @ f/1.4 on a Canon APS frame with a subject at 3m distance: 178mm
50mm lens @ f/2.8 on a Canon APS frame with a subject at 1m distance:  38mm
50mm lens @ f/2.8 on a Canon APS frame with a subject at 3m distance: 358mm

Kompletna formuła z CoC i HyperFocal wstępnie obliczona:

TotalDoF[mm] = ((HyperFocal * distance) / (HyperFocal – (distance – focal))) -(HyperFocal * distance) / (HyperFocal + (distance – focal))

Lub uproszczony:

TotalDoF[mm] = (2 * HyperFocal * distance * (distance - focal)) / (( HyperFocal + distance - focal) * (HyperFocal + focal - distance))

Z wstępnie obliczoną wartością CoC: Podjąłem próbę uproszczenia następujących równań z następującymi podstawieniami: a = odległość oglądania (cm) b = pożądana rozdzielczość obrazu końcowego (lp / mm) dla odległości oglądania 25 cm c = powiększenie d = Ogniskowa e = Przysłona f = odległość X = CoC

TotalDoF = ((((d * d) / (e * X)) * f) / (((d * d) / (e * X)) – (f – d))) - ((((d * d) / (e * X)) * f) / (((d * d) / (e * X)) + (f – d)))

Uproszczony:

TotalDoF = (2*X*d^2*f*e(d-f))/((d^2 - X*d*e + X*f*e)*(d^2 + X*d*e - X*f*e))

Jeszcze bardziej uproszczone dzięki WolframAlpha:

TotalDoF = (2 * d^2 * e * (d - f) * f * X)/(d^4 - e^2 * (d - f)^2 * X^2)

Lub jeśli nic nie jest wstępnie obliczone, otrzymasz tego potwora, który jest bezużyteczny:

TotalDoF = ((FocalLength * FocalLength) / (Aperture * (viewing distance (cm) / desired final-image resolution (lp/mm) for a 25 cm viewing distance / enlargement / 25)) * distance) / ((FocalLength * FocalLength) / (Aperture * (viewing distance (cm) / desired final-image resolution (lp/mm) for a 25 cm viewing distance / enlargement / 25)) – (distance – focal)) - ((FocalLength * FocalLength) / (Aperture * (viewing distance (cm) / desired final-image resolution (lp/mm) for a 25 cm viewing distance / enlargement / 25)) * distance) / ((FocalLength * FocalLength) / (Aperture * (viewing distance (cm) / desired final-image resolution (lp/mm) for a 25 cm viewing distance / enlargement / 25)) + (distance – focal))

Uproszczony:

(50*a*b*c*d^2*f*e*(d-f))/((25*b*c*d^2 - a*d*e + a*f*e)*(25*b*c*d^2 + a*d*e - a*f*e)

Więc w zasadzie użyj przeliczonego CoC i HyperFocal :)


@mattdm czy to odpowiada na twoje pytanie dotyczące uwzględnienia formuł?
psarossy

Tak, bardzo pomocny, dzięki. (Przepraszam, że zapomniałem przypisać nagrodę.)
Proszę przeczytać Profil

8

Jeśli chcesz zobaczyć praktyczną implementację formuł głębi ostrości, sprawdź ten kalkulator głębi ostrości online . Źródło połączonej strony HTML ma wszystkie formuły zaimplementowane w JavaScript.




0

P = punkt skupiony na

Pd = ostry punkt ostry określony

Pn = ostro określony punkt bliski

D = średnica koła zamieszania

f = liczba f

F = ogniskowa

Pn = P ÷ (1 + PDf ÷ F ^ 2)

Pd = P ÷ (1-PDf ÷ F ^ 2)

Standard branżowy, aby ustawić D = 1/1000 ogniskowej. Aby uzyskać bardziej precyzyjną pracę, użyj 1/1500 ogniskowej. Załóżmy, że ogniskowa 100 mm to 1/1000 wynosząca 100 mm = 0,1 mm lub 1/1500 = 0,6666 mm

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.