Вопрос касается очень конкретного сценария, в котором у нас есть изображение, скажем, с двумя прямоугольными объектами. Мы знаем ширину и высоту одного объекта. Как мы можем вычислить размеры другого объекта?
Предположим, что плоскость, соответствующая камере (то есть ориентация, в которой происходит щелчок по изображению), не параллельна поверхности объектов изображения.
В идеале я планирую построить что-то вроде этого: https://www.youtube.com/watch?v=jmoPCN2NM78
У меня есть интуиция, как использовать тригонометрические формулы для вычисления проекции изображения на поверхность, параллельную камере. Но к какому-то конкретному и убедительному выводу я прийти не смог.
Буду сердечно признателен за любую помощь в предоставлении формул, исследовательских работ или подробной информации о том, как этого добиться.
Такого рода проблемы очень распространены в компьютерной графике. То, что я объясню, работает только в том случае, если расстояние, которое вы хотите измерить, и ваш эталонный объект находятся в одной плоскости (например, лист бумаги на столе, который вы хотите измерить).
Если бы вы знали, как эта плоскость лежит на изображении, то есть как точки плоскости отображаются в точки на изображении, то это было бы легко. К счастью, у этой задачи уже есть хороший ответ здесь ! Давайте применим это к измерению расстояния между двумя точками на изображении. Возьмите этот скриншот из вашего видео в качестве примера:
Углы листа бумаги
,
,
, и
и углы стола
,
,
, и
(все в пикселях). Углы бумаги DIN A3
,
,
, и
(все в м).
Теперь построим матрицы преобразования по эталону . Для нас «целевое изображение» — это лист бумаги, а «исходное изображение» — заданный стол. Матрицы преобразования:
Селена Рутли
Пунит Мехта
Анна В