Из комментария Мэтта Грума к моему предыдущему вопросу я узнал, что производители могут небрежно «округлять» фактическое фокусное расстояние объектива до некоторого красивого числа, которое печатается на коробке и сохраняется в EXIF. Судя по его ответу на тот же вопрос, мне нужно знать фактическое фокусное расстояние объектива, чтобы проверить, какая диафрагма используется.
Я также слышал, что большинство объективов меняют фокусное расстояние, когда фокусируются очень близко.
Как мне проверить, какое фокусное расстояние на самом деле использует мой объектив при фокусировке на заданном расстоянии? EXIF мне тут явно не поможет, потому что данные туда заносит производитель.
Существует математический/измерительный метод расчета эффективного фокусного расстояния объектива путем измерения его угла зрения.
Формула для угла зрения дается как
Для расчета эффективного фокусного расстояния (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 — расстояние между датчиком и стеной.
Предполагая стандартный объектив, стандартную камеру, т.е. установку можно смоделировать как камеру с точечным отверстием . Это не работает с наклоном/сдвигом и, возможно, не с широкоугольными объективами (если вы хотите узнать о них, мы могли бы разобраться).
В компьютерном зрении часто рассчитываются внутренние свойства камер. Внутренние, потому что они относятся к настройкам камеры внутри камеры. Внешними свойствами являются ориентация и положение. Внутренних свойств несколько, среди них увеличение. Мое решение:
Калибровка в 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 м вверх...
Рассчитайте увеличение M объектива, используя размер объекта и изображения. С помощью M и расстояния до объекта можно рассчитать фокусное расстояние объектива.
Я просмотрел «Простой метод» Боба Аткинса, но он оставляет вам возможность работать с некоторыми астроданными.
Моя версия его метода содержит всю астроинструкцию и ссылки с пошаговыми инструкциями и должна быть значительно проще для новичков.
Вы можете поставить объектив на подставку, как книгу, таким образом, получится грубая оптическая скамья. Хорошо освещать цель. Лучше всего линейка. Отрегулируйте линзу так, чтобы изображение линейки попадало на экран из белой бумаги.
Играйте с расстояниями, пока изображение линейки не станет «в натуральную величину». Вы знаете, 1:1 иначе называется «увеличением один». С помощью другой линейки измерьте расстояние между отметками на изображении спроецированного правила. Использование двух одинаковых линеек помогает. Теперь установите необходимое увеличение 1:1.
Теперь измерьте расстояние между целью и экраном. Разделите это значение на 4. Этот ответ дает фокусное расстояние объектива.
Итай
Имре
матдм
хубер
Мэтт Грум
Итай
матдм
путешествие
Итай
конусобой
Скаперен
Имре
ДжерриTheC
Алан Маркус