Как проверить фактическое фокусное расстояние?

Из комментария Мэтта Грума к моему предыдущему вопросу я узнал, что производители могут небрежно «округлять» фактическое фокусное расстояние объектива до некоторого красивого числа, которое печатается на коробке и сохраняется в EXIF. Судя по его ответу на тот же вопрос, мне нужно знать фактическое фокусное расстояние объектива, чтобы проверить, какая диафрагма используется.

Я также слышал, что большинство объективов меняют фокусное расстояние, когда фокусируются очень близко.

Как мне проверить, какое фокусное расстояние на самом деле использует мой объектив при фокусировке на заданном расстоянии? EXIF мне тут явно не поможет, потому что данные туда заносит производитель.

Да, фокусное расстояние меняется в зависимости от расстояния фокусировки. Не только для близкой фокусировки, там просто легче заметить. Обычно производители указывают фокусное расстояние при фокусировке на бесконечность. Да, большинство производителей округляют число до целого миллиметра, за исключением Tokina и Olympus, которые округляют до ½ миллиметра. У Sigma одна линза с фокусным расстоянием полмиллиметра.
@Itai Nikon также имеет рыбий глаз 10,5 мм.
Это имеет большее значение на широком угле, чем на длиннофокусных объективах. Разница между 10 и 10,5 такая же, как разница между 200 и 210.
В качестве примера того, насколько далекими могут быть объективы для сравнения снимков Canon 100mm f/2.8 macro и Canon 100mm f/2.8L IS macro — несмотря на то, что оба продаются как «100 мм», их фокусные расстояния заметно различаются!
@Irme - Пропустил это. Таким образом, и Sigma, и Nikon измеряют рыбий глаз с точностью до ½ миллиметра. Полагаю, это имеет большее значение, и когда вы платите за угол обзора 180 °, лучше быть точным.
@whuber — эта статья Боба Аткинса — отличный ответ на вопрос. Теперь кому-то просто нужно обобщить это здесь, и бац . :)
@itai, на самом деле большинство объективов округлены до ближайших 10 мм, особенно в телеобъективах. Однако Nikon когда-то выпустил на рынок 75-240, вероятно, это была неудачная попытка создать легкий и дешевый 70-200, который действительно дал достаточно приличный объектив, чтобы добавить его в свою программу.
@jwenting - Это кажется правдой выше 150 мм .... Ниже этого есть свидетельства округления до 5 мм для объективов 100 мм+.
Относительно методов ночного неба: если вы добавите изображение неба в группу Astrometry.net на Flickr , решатель Astrometry.net сообщит поле зрения в градусах. Это может сэкономить некоторые усилия при поиске положения звезд и расчетах.
Фокусное расстояние объектива с постоянным фокусным расстоянием не меняется. Эффективное фокусное расстояние для получения угла обзора зависит от соотношения между объектом, апертурой и объектом. Тогда это просто вопрос сопоставления вещей, чтобы получить изображение в фокусе. Подумайте об этом с отверстием вместо линзы.
@Skaperen, к сожалению, фокусное дыхание происходит и в объективах с фиксированным фокусным расстоянием (особенно в макрообъективах). Пинхолу не нужна фокусировка, так что да, если его не перемещать, фокусное расстояние пинхола остается постоянным.
Это зависит от того, является ли объектив внутренней фокусировкой или нет. Если элементы объектива находятся в фиксированных относительных положениях и все вместе перемещаются внутрь или наружу для фокусировки (например, старые модели с ручной фокусировкой и старые макрообъективы Nikon), тогда фокусное расстояние остается прежним. При внутренней фокусировке, когда передний элемент не двигается, а внутренние фокусируются, фокусное расстояние меняется.
Фокусное расстояние — это измерение, которое проводится, когда объектив представляет объект в бесконечности (насколько может видеть глаз) в виде звезды. Учитывая это нахлест, мы измеряем расстояние от точки, называемой задним узлом, до сфокусированного изображения. Линза имеет ограниченную способность преломлять падающий свет, поэтому объекты, расположенные ближе, чем бесконечность, попадают в фокус дальше по течению. При единице (1:1) это расстояние, которое теперь называется расстоянием заднего фокуса, в 2 раза больше фокусного расстояния.

Ответы (5)

Существует математический/измерительный метод расчета эффективного фокусного расстояния объектива путем измерения его угла зрения.

Формула для угла зрения дается как
введите описание изображения здесь

Для расчета эффективного фокусного расстояния (f) формула сводится к следующему:
f = d / (2 * tan(α/2)) -> Equation1

Где d представляет собой размер датчика в измеряемом направлении. d будет 24, если вы используете полнокадровую камеру.

Теперь у нас есть следующая установка для измерения α

введите описание изображения здесь

У вас есть камера, расположенная на высоте H от земли и на расстоянии X от стены со шкалой. Теперь сделайте снимок, и вы сможете прочитать максимальную высоту, которую может видеть объектив (это будет H + Y).
Теперь, зная X и Y, мы можем вычислить половину угла обзора (т.е. α/2), используя эту ссылку (X будет противоположной стороной, а Y соседней стороной)

Теперь, когда вы вычислили α/2, используйте его в уравнении 1, чтобы вычислить эффективное фокусное расстояние линзы.

Значение является точным только в соответствии с вашими измерениями.

Редактировать 1:
В отношении вопроса mattdm: достаточно ли близки размеры датчика, указанные производителем?
Применительно к размерам сенсоров камер по этим ссылкам: здесь и здесь
Логично предположить, что производители камер или, по крайней мере, Canon и Nikon округляют свои размеры сенсоров на 1/10 мм. т.е. возможна погрешность +/- 0,05 мм в случае округления размера сенсора.
Рассмотрим 3 типа объективов:
1. Широкоугольный объектив (скажем, 13 мм, угол обзора: 85,4)
2. Обычный объектив (50 мм, угол обзора: 27,0)
3. Телеобъектив (300 мм, угол обзора: 4,58)

Эффект изменения размера датчика на 0,05 мм:
изменение для широкоугольного объектива = 0,05 / (2 * тангенс (85,4/2)) = 0,04613 мм прибл.
Что представляет собой разницу в 0,35% (т.е. (0,04613/13) * 100)

изменение для обычного объектива = 0,05 / (2 * тангенс (27/2)) = 0,012 мм прибл.
Что представляет собой разницу в 0,024% (т.е. (0,012/50) * 100)

изменение для телеобъектива = 0,05 / (2 * тангенс (4,58/2)) = 0,0019 мм ок.
Что представляет собой разницу в 0,0006% (т.е. (0,0019/300) * 100)

Таким образом, мы можем видеть, что с широкоугольным объективом 13 мм и ошибкой 0,05 мм в измерениях производителей изменение фокусного расстояния составляет всего 0,35%.

Я надеюсь, что моя математика верна.

Редактировать 2:
Что касается вопроса Имре об измерениях X и H,
H следует измерять от земли до горизонтального центра датчика.
X — расстояние между датчиком и стеной.

Это кажется идеальным, если кто-то хочет рассчитать фокусное расстояние в основном из интереса к углу обзора. Но @Imre упоминает, что хочет знать для расчета реальной апертуры. Это означает, что очень важно знать точные размеры части сенсора, используемой для визуализации. Как это найти ? Достаточно ли близки заявленные производителем размеры сенсора?
Отредактировал мой ответ на ваш вопрос.
Я предполагаю, что H следует измерять от земли до горизонтального центра объектива. К какой точке на камере/объективе относится X?
Обновлен мой ответ на ваш вопрос Имре.

Предполагая стандартный объектив, стандартную камеру, т.е. установку можно смоделировать как камеру с точечным отверстием . Это не работает с наклоном/сдвигом и, возможно, не с широкоугольными объективами (если вы хотите узнать о них, мы могли бы разобраться).

В компьютерном зрении часто рассчитываются внутренние свойства камер. Внутренние, потому что они относятся к настройкам камеры внутри камеры. Внешними свойствами являются ориентация и положение. Внутренних свойств несколько, среди них увеличение. Мое решение:

  • Используйте стандартный инструмент от Computer Vision (CV) для калибровки камеры и объектива при заданных настройках.
  • Посмотрите размер пикселя для вашей камеры.
  • Попросите кого-нибудь перевести увеличение в фокусное расстояние. (я пока не знаю, как это работает)

Калибровка

Калибровка в CV в основном выполняется с использованием шаблона шахматной доски. Вы делаете несколько (~10) фотографий этого узора с разных позиций и расстояний. Тогда алгоритм работает следующим образом:

Представьте, что вы знаете положение каждой вершины на доске, найдите набор параметров модели камеры, которые лучше всего объясняют видение всех точек на доске на изображениях.

Теоретически я бы рекомендовал OpenCV для этого, у него есть пример кода для этого. Но это, возможно, не слишком практично (для этого вам нужно установить OpenCV и, возможно, немного изменить код). Вероятно, есть другие решения, которые делают это.

Расчет фокусного расстояния

Результатом шага калибровки является матрица K (называемая внутренней матрицей). Он отображает трехмерные точки в системе координат камеры в однородные двухмерные точки на плоскости изображения.

$     \alpha 0      p_x
 K =  0      \alpha p_y
      0      0      1 $ (Multiple View Geometry, p. 157, 2nd Ed, 2003, Hartley & Zisserman)

Здесь нас интересует только \alpha. p_x составляет примерно половину ширины сенсора в пикселях, аналогично p_y, он относится к тому месту, где главный луч пересекает плоскость изображения. Интересно, что моя дешевая телефонная камера нарушает это гораздо больше, чем хорошая зеркальная камера, или даже дорогая веб-камера, или камера Iphone 4.

Затем \alpha относится к фокусному расстоянию. \альфа = ф м. m — количество пикселей на единицу расстояния в координатах изображения. f — фокусное расстояние. Но обратите внимание: это в модели камеры-обскуры, поэтому расстояние между плоскостью изображения и отверстием камеры. Я не уверен, как найти фокусное расстояние, о котором думают фотографы.

Альтернатива

Кто-то разместил ссылку о другом подходе: http://www.bobatkins.com/photography/technical/measuring_focal_length.html Внизу в статье «Легкий способ» предлагается другой метод. Имея две звезды, найдите положение звезд и вычислите угол между ними. Затем посмотрите, как ваша камера измеряет этот угол. Прочитайте ссылку для полного прогона.

Недостатком этого является то, что он не будет работать с любым фокусным расстоянием, а будет фокусироваться только на бесконечности. С другой стороны, мой подход не будет работать на бесконечности. Или относитесь к 500 м как к бесконечности, купите кукурузное поле и выкосите на нем узор шахматной доски, арендуйте самолет и фотографируйте с 500 м вверх...

Вы можете найти некоторые полезные сведения об увеличении и фокусном расстоянии здесь: pierretoscani.com/echo_focal_length.html#FocalLength04 Если это не поможет, вы можете поискать формулу для преобразования фокусного расстояния в увеличение, инвертировать формулу и запустить увеличение через это (хотя большинство таких формул, которые я нашел с помощью некоторых быстрых поисков, ДЕЙСТВИТЕЛЬНО грубы и часто основаны на неточном анектоде, что 50-миллиметровый объектив является «нормальным» для 35-миллиметровой пленки, что на самом деле не так (подробности см. В комментариях) .)

Рассчитайте увеличение M объектива, используя размер объекта и изображения. С помощью M и расстояния до объекта можно рассчитать фокусное расстояние объектива.

Предполагая, что мой класс геометрии в старшей школе уже двадцать лет, как бы я это сделал?
В качестве примера. Я изображаю двухметровую (S_o) палку, которая находится в 10 метрах (d_o) от камеры. Судя по изображению, двухметровая палка имеет ширину 1000 пикселей. Размер каждого пикселя составляет 10 микрометров, что дает размер изображения 0,01 метра (S_i). Увеличение M = S_i/S_o = 0,01/2 = 0,005. Я думаю, что M = f / (f-d_o), вы можете проверить с помощью книги по оптике. Фокусное расстояние f можно рассчитать.
Я только что протестировал объектив Canon с f=55 мм, измеренное фокусное расстояние составило 52 мм +/- 0,75 мм.
JMD, добро пожаловать в сообщество. вы можете переместить свои комментарии в тело самого ответа.
Это работает, только если объект находится далеко. В противном случае вам необходимо учитывать расстояние между двумя главными точками линзы. Большую часть времени вы не знаете, что это за расстояние.

Я просмотрел «Простой метод» Боба Аткинса, но он оставляет вам возможность работать с некоторыми астроданными.

Моя версия его метода содержит всю астроинструкцию и ссылки с пошаговыми инструкциями и должна быть значительно проще для новичков.

http://www.pentaxforums.com/forums/pentax-lens-articles/169225-using-2-stars-determine-actual-focal-length-lens-distance.html

Привет и добро пожаловать в Stack Exchange. Не могли бы вы опубликовать хотя бы краткое изложение вашего метода здесь? Pentax Forums, по крайней мере, один раз в прошлом что-то изменил, так что все входящие ссылки были неработающими.
У меня закончилось личное веб-пространство. Удаленные файлы, на которые были ссылки в этой статье Pentaxforums, были восстановлены.

Вы можете поставить объектив на подставку, как книгу, таким образом, получится грубая оптическая скамья. Хорошо освещать цель. Лучше всего линейка. Отрегулируйте линзу так, чтобы изображение линейки попадало на экран из белой бумаги.

Играйте с расстояниями, пока изображение линейки не станет «в натуральную величину». Вы знаете, 1:1 иначе называется «увеличением один». С помощью другой линейки измерьте расстояние между отметками на изображении спроецированного правила. Использование двух одинаковых линеек помогает. Теперь установите необходимое увеличение 1:1.

Теперь измерьте расстояние между целью и экраном. Разделите это значение на 4. Этот ответ дает фокусное расстояние объектива.