Когда из двухмерного фото можно вытащить реальные трёхмерные размеры, это не магия, а забытая геометрия, которая может превратить обычный снимок в измерительный инструмент. Мы привыкли к ИИ-сегментации и фотограмметрии, но простейшие школьные формулы часто оказываются мощнее сложных алгоритмов.
Чему вас не научили на уроках геометрии
Плоскость и объект известного размера на ней, это уже система координат. Линейка на столе в кадре задаёт масштаб. Если вы знаете её реальную длину и можете измерить её длину в пикселях на фото, вы получаете коэффициент перевода пикселей в сантиметры для этого конкретного участка изображения.
Но главное в другом. Школьная задача «найти размер комнаты по фото с линейкой» кажется абстрактной. Однако это прямое попадание в область компьютерного зрения и фотограмметрии, только без сложного софта. Тот факт, что линейка лежит на плоскости стола, а не стоит вертикально, критически важен. Это упрощает задачу до двух измерений — X и Y на плоскости стола. Если бы линейка стояла под углом, пришлось бы учитывать перспективные искажения и искажения объектива.
От пикселей к сантиметрам: масштабный коэффициент
Расчёт начинается с определения масштабного коэффициента. Для этого нужны два значения: реальная длина линейки (например, 30 см) и её длина на фотографии в пикселях. Последнее можно измерить в любом графическом редакторе, который показывает координаты курсора.
scale_factor_cm_per_px = real_ruler_length_cm / ruler_length_px
Например, если 30-сантиметровая линейка на фото занимает 450 пикселей, то масштабный коэффициент будет равен 30 / 450 ≈ 0.0667 см/пиксель. Каждый пиксель на плоскости стола в месте расположения линейки соответствует примерно 0.667 миллиметра в реальности.
Здесь возникает первая тонкость. Этот коэффициент точен только для плоскости, параллельной плоскости сенсора камеры. Если фотография сделана не строго сверху, а под углом, плоскость стола в кадре будет искажена перспективой. В таком случае масштаб для дальней части стола будет отличаться от масштаба для ближней. Линейка, лежащая на столе, частично нивелирует эту проблему, так как позволяет вычислить масштаб именно для своей плоскости.

Почему простой расчёт может дать погрешность
Даже при съёмке сверху на результат влияют оптические искажения объектива, особенно заметные на широкоугольных камерах смартфонов. Бочкообразная дисторсия «выгибает» прямые линии по краям кадра, что искажает измерение расстояний в пикселях. Перед точными расчётами снимок стоит скорректировать в редакторе, включив профиль коррекции для конкретной камеры или применив ручную коррекцию дисторсии.
Вторая причина погрешности — разрешение снимка. Если линейка на фото занимает всего 100 пикселей, погрешность измерения её длины даже в 1-2 пикселя даст отклонение в реальных размерах в 1-2%. Чем больше пикселей приходится на эталонный объект, тем выше точность итоговых вычислений.
От стола к стенам: проецирование измерений
Вычислив масштаб для плоскости стола, можно измерить любой другой объект, лежащий в этой же плоскости. Например, ширину ноутбука или книги рядом с линейкой. Но как выйти за её пределы и измерить высоту комнаты?
Здесь пригодится знание о стандартных высотах. В большинстве типовых квартир высота потолков составляет 250, 260 или 270 сантиметров. Если на фото видна стена от пола до потолка и известен масштаб для горизонтальной плоскости, можно найти точку на стене, находящуюся на одном уровне с плоскостью стола по вертикали (например, край розетки или плинтус). Измерив расстояние от этой точки до потолка в пикселях и применив горизонтальный масштабный коэффициент, вы получите примерную высоту. Этот метод даст погрешность, так как не учитывает разницу в перспективе между горизонтальной и вертикальной плоскостями, но для примерной оценки часто достаточно.
Когда геометрии недостаточно: что дальше
Описанный метод — базовый. Для сложных задач, где нужно восстановить полноценный 3D-объект по нескольким фото или учесть сильные перспективные искажения, используются более продвинутые техники.
- Фотограмметрия. Специализированное ПО анализирует множество снимков объекта с разных ракурсов, находит общие точки и строит 3D-модель с точными размерами. Это профессиональный инструмент для архитектуры, археологии и создания цифровых двойников.
- Структурированный свет и LiDAR. Датчики в современных смартфонах и планшетах проецируют на сцену сетку невидимых точек и по их смещению вычисляют глубину. Это позволяет мгновенно получить 3D-сканы помещений, но требует специального оборудования.
- Машинное обучение. Модели, натренированные на миллионах изображений, могут приблизительно оценивать размеры объектов и расстояния между ними даже без явного эталона масштаба в кадре. Точность таких оценок сильно зависит от контекста и обученности модели.
Практический вывод: простой метод с линейкой, это не академическое упражнение, а быстрый способ получить оценочные размеры для эскиза планировки, проверки, впишется ли мебель, или для документирования обстановки. Он напоминает, что сложные технологии часто строятся на простых и понятных принципах, которые можно применить даже без специального инструмента.