Камера телефона (Samsung S4): можно ли определить расстояние до объекта в фокусе на jpg картинке?

Я сделал снимок на телефон Samsung S4. Можно ли определить расстояние до объекта на картинке?

Объект находится в фокусе. Я просмотрел свойства изображения JPG, но не смог найти ничего, указывающего на расстояние. Фокусное расстояние у этой камеры фиксированное, оно составляет 31 мм в 35-мм эквиваленте.

Вы знаете размер предмета?
@mattdm, нет. На самом деле причина, по которой я ищу расстояние, заключается в том, чтобы определить размер
Это имеет большое значение для ответов.

Ответы (3)

Вы можете использовать это уравнение:

Distance of an object (in meters) =

   (focal length (mm) * object height (m) * image height (px))
   -----------------------------------------------------------
       (object height in image (px) * sensor height (mm))
Смотрите комментарии. Размер объекта неизвестен.
@mattdm ах! хорошо, 2 неизвестные переменные - это проблема, надеюсь, ОП сможет оценить одну из них. надо работать с тем, что есть!

Если он есть в файле, exiftool сообщит вам об этом.

Если нет, то нет простого способа определить расстояние, поскольку камеры в основном записывают информацию об угле (на изображении каждый пиксель смотрит в определенном направлении от идеализированного центра). Если у вас есть две или более фотографий с разных точек зрения, вы можете использовать PanoTools или аналогичные инструменты для создания 3D-сетки, и если вы знаете некоторые физические длины, вы можете определить расстояние до вашего объекта. (И вы знаете некоторые физические местоположения: уровень ваших глаз или камеры, а также уровень земли, давайте не будем забывать об этом).

спасибо, я удивлен, что камеры не записывают информацию об автофокусе.
Хорошо — фиксируют фокусное расстояние и показатели в фокусе. :-) Но расстояние до объекта требует триангуляции, поэтому две картинки.
@TFuto - ему не нужна триангуляция. Однако ему необходимо знать точное положение фокуса и атмосферные условия. Фокус может немного меняться в зависимости от влажности и тому подобного, и обычно объективы не измеряют точное положение фокуса. Однако, если вы знаете точную настройку фокуса, то расстояние до объекта можно рассчитать без какой-либо триангуляции.
@AJHenderson: Ваше рассуждение справедливо только в том случае, если человек использует чрезвычайно малую глубину резкости, например, в микроскопах (длинный телеобъектив является хорошим приближением). Если он использует большую глубину резкости и небольшое фокусное расстояние, последовательное приближение или эвристика фокусировки просто обеспечивают достаточно хорошую блокировку фокуса. Представьте себе очень экстремальный сценарий: сверхширокоугольный объектив. Фокусировка от 30 см до бесконечности. Так что ладно, у вас есть блокировка фокуса, но относительная ошибка настолько велика, что данные бесполезны. Мое мнение...
@TFuto - фокусировка работает, находя максимальный контраст. Да, чем шире глубина резкости, тем больше будет приемлемо в фокусе, но независимо от того, с каким уровнем чувствительности может работать датчик автофокусировки, в большинстве случаев он все равно будет приближаться к тому, что составляет диапазон глубины резкости, если не относительно точная мера. Почти наверняка в той дисперсии, которую вы получите напрямую от условий окружающей среды.
@AJHenderson: у меня другая точка зрения на это. Если вы возьмете широкоугольный объектив и захотите сфокусироваться вручную, вы сможете сфокусироваться вручную в широком диапазоне без заметного изменения качества фокусировки. Датчики с зеркалом вниз используют фазу, которая не так точна, как контрастная фокусировка на полном кадре. Кроме того, датчики имеют определенную точность, и исходный вопрос был о S4. :-) И, наконец, фокус сам по себе имеет механическое торможение и ошибку. Так что где останавливается кольцо фокусировки, нам остается только догадываться. :-).
@AJHenderson: И на самом деле, я думаю, вы ошиблись в вопросе о глубине резкости. («в большинстве случаев он все равно будет ближе, чем диапазон глубины резкости») Конечно! Я говорю о том, что чем больше глубина резкости, тем сложнее найти точное положение для фокусировки, и на самом деле тем меньше требуется, чтобы найти это так точно. (Меньшая глубина резкости означает, что легче увидеть, что объекты не полностью в фокусе.)
@TFuto - я думаю, что мы не так сильно расходимся, как думаем. Я согласен, что чем шире глубина резкости, тем меньше точность, но точность «идеального фокуса» и точность точки «не в фокусе» будут одинаковыми. Триангуляция по-прежнему ничего не дает, просто чем шире ГРИП, тем ниже возможная точность, если только автофокус не достаточно чувствителен, чтобы точно определить точку фокусировки.
@AJHenderson: «будет таким же»: относительная ошибка будет такой же, поэтому abs(dist_ideal - dist_out_of_focus)/dist_ideal является своего рода константой (не учитывая гиперфокальные вещи). Значение: 1. чем дальше объект, тем больше абсолютная ошибка. Следовательно, 2. чем больше ГРИП, тем больше потенциальная абсолютная ошибка фокусировки. Вы правы насчет относительной ошибки.
@AJHenderson: с помощью триангуляции вы контролируете расстояние между двумя камерами, и можно определить большой набор или связанные пары точек, и это, а также положения камеры создают трехмерное отображение, которое является таким же точным, как пересечения виртуальных лучей, исходящих из двух камеры. Чем дальше камеры друг от друга и чем больше разрешение, тем меньше эти 3D-пересечения, а это и есть разрешение триангуляции. Это гораздо более точный способ определения позиций, чем определение одной точки обзора + обнаружение контраста.
Триангуляция требует точного измерения расстояния. Он не определяет точное расстояние. Если только у вас нет способа использовать камеры, о котором я не думаю.
@AJHenderson: для триангуляции требуется только одно точное измерение расстояния, и тогда она БУДЕТ определять точные расстояния по определению ( en.wikipedia.org/wiki/Triangulation ). У вас есть расстояние между двумя камерами. Например, представьте, что вы делаете две фотографии с двух разных точек. Вы используете PanoTools для создания 3D-представления. Это создаст полностью реалистичную модель, за исключением того, что ей нужен масштаб. И это можно обеспечить разными способами, самый простой, если указать расстояние между камерами. Ваша камера — очень хороший ракурсомер, давайте не будем забывать об этом. :-)
Ах, используя относительные углы сцены, чтобы определить относительный угол. ХОРОШО. Я сейчас на борту.
кто-нибудь знает, почему именно камеры смартфонов не сообщают положение фокуса объектива? мне кажется, что это легко сделать.

Большинство линз измеряют не положение фокуса, а только то, в каком направлении им нужно двигаться, чтобы достичь фокуса. Поэтому они не могут измерить точное положение фокуса. Если данных еще нет в EXIF-информации фотографии, то, скорее всего, камера не сможет их захватить.

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