Алгоритм определения реальных расстояний от опорной точки на плоскости с пикселями фото - PullRequest
0 голосов
/ 08 января 2020

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

Моя физическая установка камера, обращенная к тарелке с расстояния 2 фута. Изображение, которое увидит камера, схематично изображено на изображении:

enter image description here

Таким образом, общий квадрат - это границы изображения, пунктирные линии обозначают центр изображения отмечен знаком X (это будет исходная точка моей координатной сетки пикселей). На табличке есть отметки в 5 местах, которые описывают круг и его центр. Эти места видны камере (помечены P1, P2, P3, P4, Pin), а радиус описываемого ими круга известен и помечен как R. Нет гарантии, что Pin будет наложен поверх X, и это вполне вероятно, что они не будут выровнены идеально, поэтому я нарисовал это со смещением. Я буду предполагать, что оптическая ось перпендикулярна пластине. Точка, помеченная буквой A, - это позиция на реальной пластине (которая также видна камере) с неизвестной позицией. Я пытаюсь определить его радиус r от центральной точки, Pin.

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

Я предположил, что смогу игнорировать перспективу и просто выяснить расстояние между пикселями, скажем, P1 и P3, равное 2R, а затем получу коэффициент масштабирования между пикселями и реальными расстояниями. Это может дать хорошие результаты, но я хочу разработать алгоритм, способный обрабатывать проблемы с перспективой, когда места, расположенные дальше от оптической оси, будут меньше, чем в центре изображения.

Если полезно, я Я могу разработать калибровочный тест, в котором Pin центрируется по X, измеряется расстояние между пластиной и камерой, а затем с помощью точек P и R определяют отношение угла к пикселю камеры.

Будет Кто-нибудь сможет помочь мне разработать этот алгоритм или указать на некоторые ресурсы, которые могут помочь? Я обнаружил матрицы проекции, используемые в 3D-рендеринге, но мне нужно go в другом направлении, и ни один из ресурсов не имеет отношения к точкам на плоскости, как у меня.

Я, вероятно, напишу это в python но это пока не требуется.

...