Еще один сложный вопрос. Здесь вы видите мою физическую пирамиду, построенную из трех светодиодов, которые образуют треугольник в одной плоскости, а другой — в середине центра, примерно на 18 мм выше другого 3. Четвертый из них превращает треугольник в пирамиду. (Вы можете видеть это лучше, если вы посмотрите на прямоугольный треугольник. Этот вращается вокруг горизонтального ахиса, и вы можете очень хорошо видеть диод на палочке).
Вторая картинка показывает мою программу бега. В левом поле отображается необработанное изображение светодиодов (фото с ИК-фильтром). Изображение в центре показывает, что моя программа нашла точки, а также в состоянии определить, какая точка является какой, на основании некоторых условий (например, C всегда, где пересекаются обе линии с максимальным расстоянием между диодами; и обе самые длинные длины всегда а и б). Но не волнуйтесь об этом, я знаю, что пункты на 100% правильно найдены.
Затем на правом рисунке несколько рассчитанных значений, например, высота между C и c и так далее. Я был бы в состоянии рассчитать больше, но я не заботился пока, потому что я застрял.
Я хочу рассчитать вращение и перемещение пирамид в трехмерном пространстве.
Желтые точки — светодиоды после вращения вокруг оси, проходящей через центр треугольника в направлении z камеры. Так что теперь мне не нужно беспокоиться об этом при вычислении другого 2. Поворот вокруг горизонтальной оси и поворот вокруг вертикальной оси. Я мог бы легко рассчитать это по длине расстояния от центра треугольника до 4-го диода (как вы можете видеть, 4-й диод движется по плоскости изображения с вращением) или по длинам обеих осей.
Но моя проблема в неизвестной глубине.
Это влияет на все длины (a, b, c, а также длины от центра до 4-го диода, если мы назовем это d и e). Я знаю измерения реальной пирамиды с допуском + -5% или около того, но они также зависят от увеличения. Так как мне справиться с этим?
Я подумал об уравнении с соотношением между чем-то с длинами горизонтальной оси, длиной вертикальной оси, углами альфа, бета и гамма и длинами d и e.
Альфа, бета и гамма влияют только на вращение вокруг осей (которое я хочу знать. Я хочу знать вращение и увеличение), где вращение вокруг одной оси имеет эффект, противоположный вращению вокруг другой. Поэтому, если вы вращаете вокруг обеих осей на один и тот же угол, соотношение между осями будет таким же, как и раньше.
Увеличение (реальное: насколько оно близко к камере; что я хочу знать на первом месте: коэффициент умножения 2x, 3x, 0,5, 0,4322344, …..) не влияет на углы, но на все длины : a, b, c, d, e, hc (вертикальная длина оси), hx (я еще не рассчитал это, но это было бы легко. Имя hx может изменяться, я просто подумал о чем-то случайном прямо сейчас; это это длина горизонтальной оси) таким же образом (я думаю).
Видите ли, я думал о многих, но я думаю, что я слишком тупой.
Итак, есть ли какой-нибудь гений математики, который может дать мне правильные уравнения для вращения ИЛИ / И коэффициента масштабирования?
(Я также подумал об использовании Posit / Downhill-Simplex и т. д., но это было бы лучше, так как я уже знаю так много, как все точки, и т. д. и т. д.)
Пожалуйста, пожалуйста, мне очень нужна ваша помощь! Я пишу это на C ++ и с помощью OpenCV, если вам нужно знать, но я думаю, что это скорее математическая проблема.
Заранее спасибо!
Ах, и Альфа, кажется, всегда такая же, как Бета!
Редактировать: пришлось удалить второе изображение
Посмотрите на Повысить геометрию или же здесь также
Посмотри на SolvePnP () в OpenCV. Даже если вы не используете его напрямую, в документации есть ссылки на используемые методы.