Как узнать или рассчитать глубину резкости фотографии по тегам EXIF?

StackOverflow https://stackoverflow.com/questions/1443829

Вопрос

Я хочу знать глубину резкости фотографии, предпочтительно в сантиметрах или метрах.

Я знаю, что мы можем узнать настройки камеры, прочитав теги EXIF, но есть ли тег, напрямую указывающий нам глубину резкости?Или как мы можем вычислить это по некоторым тегам EXIF?

Я был бы признателен за примеры.Спасибо!

Это было полезно?

Решение

Расчет глубины резкости:

t = A * (S / 1440) * (D - F) / F ^ 2

Расстояние ближней фокусировки = D / (1 + t)

Дальнее фокусное расстояние = D / (1-т)

И полная глубина резкости - это разница между ними.

Переменные:

A = диафрагма объектива (число F)

S = сенсор камеры или размер диагонали плоскости пленки в мм

D = фокусное расстояние в мм

F = фокусное расстояние объектива в мм

Конечно, резкость фокуса субъективна и корректируется путем изменения константы при расчете круга путаницы (CoC). Здесь я использовал CoC = S / 1440, это значение, которое обычно используется.

Другие советы

Я предполагаю здесь, поэтому я был бы признателен, если кто-нибудь еще сможет подтвердить это:

Я полагаю, что вы не можете программно определить глубину резкости по доступным данным EXIF - вы должны знать f-stop, фокусное расстояние, и это очень важно:расстояние до объекта съемки.

Поля FNumber и Focal Length приведу вам первые два.Третье обычно невозможно определить с помощью камеры.Вам понадобится какой-нибудь механизм для определения дальности - какое-нибудь дополнительное оборудование для камеры или какие-нибудь известные значения для триангуляции.

Эта веб-страница http://www.dofmaster.com/dofjs.html содержит прямое объяснение того, что участвует в расчетах глубины резкости:

Я наткнулся на приведенные выше формулы, когда искал вычисления dof, и нашел их.

Всего пара моментов:

<Ол>
  • Значения t необходимо проверить в программе. Если t = 1 , то фокусные расстояния составляют D / 2 и бесконечность, и в этом случае D фактически является гиперфокальным расстоянием (hfd) . Это легко доказать и дает hfd как (f ** 2) / (coc * Fnumber) .

  • Если t больше 1, ваши ответы будут отрицательными, и это бессмысленный результат

  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top