Как точно определить размер близлежащего объекта (~15см) по дистанции фокусировки автофокуса?

Проблема

Я пытаюсь определить размер объекта, используя фокусное расстояние, определяемое автофокусом камеры смартфона (Galaxy Note 8). Но, похоже, я не могу получить точное значение фокусного расстояния.

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

Что я сделал до сих пор

При фокусировке на близких объектах расстояние фокусировки примерно равно расстоянию до объекта. Поэтому я сфотографировал известный объект (карту размером с кредитную карту) на известном расстоянии, чтобы рассчитать и сравнить все значения. Снимок, который я сделал, вот такой:

Фотография карты на 169 мм (примечание: изменено для загрузки)

И это соответствующие значения:

  • Тип датчика: SLSI_S5K2L2_FIMC_IS
  • f = 4,3 мм (из CaptureResult.LENS_FOCAL_LENGTH )
  • Физический размер сенсора = 5,645 x 4,234 мм (из CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE )
  • Размер массива пикселей = 4032 x 3024 пикселей (из CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE )
  • Размер кредитной карты = 85,6 x 53,98 мм.
  • Размер изображения = 4032 x 3024 пикселей (обратите внимание, что изображение выше масштабируется, чтобы включить его сюда)
  • Размер кредитной карты на картинке = 1688 x 1059 пикселей

А затем для расстояния карты до камеры:

  • Реальное измеренное расстояние: 169 мм
  • Расстояние автофокуса: 193 мм (из CaptureResult.LENS_FOCUS_DISTANCE )
  • Расчетное расстояние: 156 мм

Где расчетное расстояние получено с использованием уравнения из этой темы :

Уравнение

расстояние = (4,3 * 85,6 * 4032) / (1688 * 5,645) = 156 мм

Обсуждение

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

  • Фокусное расстояние неверно (см. здесь ), но, поскольку камеры смартфонов имеют фиксированное фокусное расстояние, я не могу представить, чтобы это было проблемой.
  • Камера слишком сильно отличается от модели камеры-обскуры (однако камера откалибрована, отсюда )
  • Калибровка расстояния автофокуса изначально не совсем точна.

Решения?

Одно из решений, которое я мог бы придумать, — это откалибровать расстояние автоматической фокусировки до реального расстояния самостоятельно. Но нужно ли это делать для каждого устройства или калибровка будет работать на всех однотипных смартфонах без повторной калибровки?

Я надеюсь, что вы можете помочь мне в моих размышлениях.

Редактировать

Я сделал еще несколько измерений, теперь в шахматном порядке. Я установил камеру на известное расстояние и измерил размер квадрата шахматной доски и фокусное расстояние, заданное камерой. Вот результаты:

Таблица результатов

Как видно из таблицы, фокусное расстояние, указанное камерой, на самом деле удивительно точное (+/- 4% на расстоянии < 170 мм). Однако фокусное расстояние, указанное камерой, не является точным, я бы сказал, что причина этого в том, что камера перемещает объектив , чтобы получить хороший фокус. Рассчитав фокусное расстояние по известному размеру шахматной доски (см. таблицу результатов), можно увидеть, что фокусное расстояние действительно изменяется, и фокусное расстояние, заданное камерой (4,3 мм), таким образом, с высокой вероятностью является фокусным расстоянием в фокусе. бесконечность. Это следует учитывать при расчете размера объекта.

Камера не измеряет расстояние до фокусировки, она просто меняет фокус, чтобы максимизировать контраст. Учитывая, что объектив с коротким фокусным расстоянием дает очень большую глубину резкости, это не требует большой точности.
@xenoid Я знаю, что он просто меняет фокус, чтобы максимизировать контраст. Но поскольку это напрямую связано с расстоянием до объекта, вы должны быть в состоянии найти расстояние до объекта от расстояния фокусировки, которое откалибровано для реальных расстояний в соответствии с документами . Кроме того, при фокусировке на близких объектах глубина резкости не так велика даже для объективов с коротким фокусным расстоянием. Из моих измерений точность составляет около 7 мм на расстоянии до объекта 15 см.
Для начала повторите свои измерения с высококонтрастным рисунком вместо чистого листа. Но все же вы предполагаете, что камера точно фокусируется , что вряд ли неверно при контрастном фокусе. Достаточно фокусируется .
Постараюсь сделать еще несколько замеров в шахматном порядке. Однако на фотографии не чистый лист, в углу есть карточка, которая используется для расчетов, но я стер детали для целей загрузки.
На самом деле, фокусное расстояние — это измерение, которое производится, когда камера снимает удаленный объект. В этом состоянии расстояние от объектива до сенсора минимально. Когда вы отображаете объекты ближе, чем бесконечность ∞, объектив перемещается дальше от сенсора. Это удлиненное расстояние иногда неправильно называют фокусным расстоянием, тогда как на самом деле теперь это расстояние заднего фокуса. Это расстояние заднего фокуса, которое должно заменить фокусное расстояние.

Ответы (2)

На самом деле это довольно простая проблема соотношения:

Вы можете проследить треугольник лучей, формирующих изображение. Размеры треугольника изображения: найдите высоту каждого пикселя = 4,234 ÷ 3024 = 0,0014 мм. Найдите высоту изображения = 1059 X 0,0014 = 1,4827 мм Треугольник изображения с двумя сторонами: высота = фокусное расстояние = 4,3 мм Основание треугольника изображения = 1,4827 мм Отношение 1,4827 ÷ 4,3 = 0,3448

Высота треугольника объекта = от линзы до объекта = 169 мм. Высота объекта составляет 169 X 0,3448 = 58,27 мм.

Реальная измеренная высота объекта составляет 53,49 мм. Этот ответ точен на 92%. Неточность связана с некоторыми неверными данными, такими как фокусное расстояние или высота изображения.

Вы предполагаете, что камера точно сообщает фактическое используемое расстояние фокусировки. Это почти наверняка ложное предположение.
Ваш расчет размера пикселя верен в соответствии со спецификациями датчика. Поскольку я не думаю, что высота изображения неверна, возможно, заявленное фокусное расстояние отключено.
См. редактирование, неточность действительно связана с неправильным фокусным расстоянием. Который меняется с фокусным расстоянием в камере смартфона.

Вы используете неправильный инструмент для работы. Модуль камеры предназначен для получения фотографий, а не измерений. Чтобы точно измерить расстояние, вы должны приобрести датчик, специально предназначенный для этой цели.

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