Вытяните руку и закройте большим пальцем Луну. В этом одном жесте кроется вся сложность измерения размеров по изображению: камера фиксирует углы, а не размеры. Спичечный коробок вблизи объектива и морской контейнер вдали могут занимать на снимке абсолютно одинаковое количество пикселей, и ничто на фотографии не поможет их различить. Художники в XV веке формализовали это как перспективу; компьютерное зрение сделало это проективной моделью камеры (классическим современным трудом считается «Многоракурсная геометрия в компьютерном зрении» Хартли и Циссермана); и каждому приложению из серии «измеряй что угодно телефоном!» приходится как-то решать эту задачу.
Есть два честных способа решить проблему. Первый — обучить телефон параметрам его собственной оптики (фокусному расстоянию, геометрии сенсора, дисторсии объектива) и оценивать расстояние. Именно это пытаются делать измерительные приложения дополненной реальности (AR), причем точность здесь зависит от оборудования, освещения, текстуры поверхности и просто везения. Второй способ на несколько веков старше и вообще не требует знаний о камере: поместить в кадр предмет известного размера.
Секрет в том, что масштаб передается через проекцию
Инструмент «Размер» в Sentio идет по второму пути. Сфотографируйте интересующий вас Объект, поместив рядом эталон — банковскую карту или лист бумаги формата A4, — а затем отметьте на фотографии два отрезка: один поверх эталона, другой поверх цели. Инструмент вычислит отношение их длин и умножит:
реальный размер = (пиксели цели ÷ пиксели эталона) × известный размер эталона
Почему банковская карта может служить надежной линейкой? Потому что это один из самых строго стандартизированных Объектов в вашем распоряжении. ISO/IEC 7810 жестко задает формат карт ID-1 размером 85.60 × 53.98 mm — это относится ко всем банковским и дисконтным картам, а также гостиничным ключам в мире с точностью до долей миллиметра. Лист бумаги формата A4 (297 × 210 mm, стандарт ISO 216) — это его старший брат для более крупных целей. Вы всю жизнь носите с собой высокоточные эталоны.
Геометрия, которая делает это соотношение верным, основана на подобии треугольников: когда два объекта находятся на одинаковом расстоянии от объектива в одной плоскости, проекция масштабирует оба с одним и тем же коэффициентом — каким бы он ни был. Фокусное расстояние неизвестно? Оно сокращается. Расстояние неизвестно? Тоже сокращается. Какой телефон, какой объектив, какой зум? Всё это сокращается. Это чистейшее воплощение принципа работы платформы без индивидуальной калибровки устройств: параметры неизвестной камеры присутствуют и в числителе, и в знаменателе, и просто взаимно уничтожаются.
Где этот метод точен, а где дает сбои
Всё вышеописанное справедливо абсолютно точно при соблюдении указанных условий: эталон и измеряемый объект находятся в одной плоскости, на одинаковом расстоянии, а съемка ведется примерно прямо. Погрешность инструмента складывается из того, как именно реальные фотографии нарушают эти условия:
- Перспективное искажение. Стоит наклонить плоскость, и длины сожмутся вдоль линии наклона: карта, сфотографированная под углом, спроецируется укороченной, а все измеряемые по ней объекты окажутся длиннее, чем есть на самом деле. Привычка снимать строго перпендикулярно — самое ценное правило.
- Разная глубина. Карта на столе рядом с коробкой задает плоскость столешницы; однако верхний край коробки находится на несколько сантиметров ближе к объективу и проецируется пропорционально крупнее. Кладите эталон поверх измеряемого объекта, а не рядом с ним.
- Дисторсия объектива. Широкоугольные объективы телефонов изгибают прямые линии у краев кадра. Если держать оба отрезка ближе к центру, геометрия останется точной.
- Точность нажатия. Вы размечаете отрезки вручную, а кончик пальца имеет ширину в несколько пикселей. Отсюда прямо следует практическое правило: чем крупнее эталон в кадре, тем точнее результат. Если карта занимает лишь десятую часть снимка, погрешность в несколько пикселей обойдется дорого; если половину снимка — они превратятся в незначительный шум.
Сделайте всё правильно (в одной плоскости, по центру, крупный эталон) — и точность на уровне пары процентов станет вполне реальной: миллиметр или два на объекте размером с ладонь. Это предел возможностей инструмента, и мы его заявляем открыто, а не скрываем. Что немаловажно, сохраненное измерение содержит оба исходных отрезка, выбранный эталон и геометрию кадра, поэтому результат можно перепроверить и подтвердить позже. Измерение, которое можно перепроверить, всегда лучше цифры, которой приходится верить на слово.
В сравнении с профессиональными приборами
| Профессиональный прибор | Инструмент «Размер» на телефоне | Где сказывается разница |
|---|---|---|
| Штангенциркули (нониусные/цифровые) ($20–$200): ±0.02–0.05 мм, прямой контакт | Точность на уровне нескольких процентов по фото; контакт не требуется | Любые высокоточные работы — посадка валов, подбор резьбы, калибровка 3D-печати. Точность на два порядка выше здесь обязательна |
| Рулетка ($5–$30): миллиметровая разметка на метры длины, требует доступа к обоим концам | Измеряет оттуда, где вы стоите; работает с объектами, до которых нельзя дотянуться или дотронуться | Большие расстояния, когда нет ровной поверхности для размещения эталона; кроме того, рулетка банально быстрее, если до объекта легко дотянуться |
| Лазерный дальномер ($50–$500): ±1–2 мм на десятках метров, расстояние вдоль луча | Размеры объектов в плоскости, а не просто расстояния; не нужно целиться в стену | Размеры комнат, высота потолков, геодезическая съемка — другая геометрия, другой прибор, лазер побеждает без вариантов |
| Фотограмметрические комплексы / 3D-сканеры структурированного света ($1000+, откалиброванные мишени и ПО) | Одно соотношение по одной фотографии; намеренно без модели камеры и без 3D | Изогнутые поверхности, объемы, полная 3D-реконструкция — этот инструмент измеряет длину на плоской поверхности и прямо об этом заявляет |
Какую роль он играет на самом деле: инструмент «Размер» нужен для тех случаев, когда иначе вы вообще ничего не стали бы мерить — приглянувшийся диван на блошином рынке, ниша, о которой вы будете вспоминать в строительном магазине, лист растения, за ростом которого вы наблюдаете неделю за неделей, или фрукт, размер которого используется для определения степени спелости. Его конкурент — не штангенциркуль, а гадание на глаз. И в отличие от догадок, результаты измерений сохраняются в вашем каталоге под соответствующим объектом вместе с фотографией, размеченными отрезками и датой.
Инструмент «Размер» относится к семейству функций для «рутинной работы с камерой», наряду со счетом и считыванием показаний приборов — см. статью «считать, измерять, считывать». А более широкий вопрос о том, когда телефону стоит уступить место настоящему прибору, подробно рассматривается в материале «честный расчет».