Как уже указывалось в предыдущих ответах, если вы знаете размер сенсора (при условии отсутствия дополнительного кадрирования) и имеете достаточно точное чувство масштаба для сцены, лучшее, что вы можете сделать в общем случае, - это оценить поле зрения и выведите фокусное расстояние.
Теоретически, возможно, будет лучше и вывести фокусное расстояние независимо от размера датчика и дополнительного кадрирования. Вам все равно нужно точное чувство масштаба для сцены.
Используя эти модели для ближнего и дальнего пределов DoF , если у вас хватит терпения разрешить систему уравнений, вы сможете устранить f-число N и получить выражение фокусного длина f, которая зависит только от расстояния (расстояний) фокусировки, ближнего предела DO (Dn) и дальнего предела DO (Df). Если все 3 значения s, Dn и Df можно измерить на снимках, их значения можно использовать для вычисления фокусного расстояния f.
Описание метода высокого уровня:
- заменить H его выражением (из первого уравнения) в выражении для Dn (второе уравнение)
- Из полученного второго уравнения выведите выражение для f ^ 2 / N / C = (Dn * f-Dn * s) / (Dn-s)
- Используйте это выражение, чтобы переписать H как выражение f, Dn и s (исключая N и c)
- В 3-м выражении замените H предыдущим выражением и переставьте, чтобы получить выражение f, которое зависит только от s, Dn и Df
Обратите внимание, что это чисто теоретический характер и очень маловероятно, что в большинстве практических случаев это приведет к хорошему приближению. Маловероятно, что сцена обеспечит точный масштаб, и даже если бы это было так, очень маловероятно, что s, Dn и Df могут быть точно измерены на изображении.
Редактировать: , как правильно указал scottbb в своем первом комментарии, существует зависимость между выражениями Dn и Df, и поэтому невозможно разрешить f и N из этих выражений с помощью одного захвата. , Лучшее, что можно сделать с помощью одного захвата, - это определение f ^ 2 / N / c. Например, предполагая, что f намного меньше, чем H и s, выражение H можно аппроксимировать как H = f ^ 2 / N / c = sDf / (Df-s).
В отношении второго комментария scottbb кружок путаницы - это произвольное значение, которое определяется на изображении - обычно около 2 пикселей, но это может быть что угодно. Значение s - это расстояние до плоскости фокусировки, и плоскость фокусировки часто можно определить как часть сцены, которая максимизирует контраст. Если какая-либо из точек в плоскости фокусировки находится на известном расстоянии, это дает значение s. Как Dn, так и Df зависят от произвольного выбора круга путаницы: плоскости для Dn и Df - это те, где острый край размыт в области, равной c. Это подразумевает, что если на известном расстоянии (за пределами плоскости фокуса) имеется размытый острый край, то на этом расстоянии можно оценить спутанный круг и узнать предел глубины резкости (Dn или Df) для предполагаемого значение c.