Я использую 3 маркера ArUco, прикрепленные к трехмерной модели фантома головы, чтобы выполнить оценку позы с использованием OpenCV на C++. Мой алгоритм оценки позы дает мне перевод относительно камеры, но теперь я хочу знать координаты маркера относительно системы координат модели. Поэтому я отсканировал модель головы с помощью 3D-сканера, и у меня есть объектный файл и файл текстуры. Мой вопрос в том, как проще или лучше всего получить координаты маркеров относительно модели головы. Должен ли я использовать для этого OpenGL, блендер или другое программное обеспечение? Ищу подсказки или советы.





Похоже, у вас есть координаты маркеров относительно камеры в качестве системы координат, то есть координаты в «пространстве глаз» или пространстве камеры. Это когда у вас есть координаты, в которых камера находится в начале координат.
В этой статье есть блестящая диаграмма, объясняющая различные пространства и способы их преобразования в разные пространства: http://antongerdelan.net/opengl/raycasting.html
Если вам нужны те же координаты, но в пространстве модели, вам понадобятся матрицы, которые приведут вас в это пространство.
В этом случае вы переходите из пространства глаза / камеры -> пространства модели, поэтому вам нужно умножить эти координаты на матрицу обратного вида, а затем на матрицу обратной модели. Тогда ваша координата будет в пространстве модели.
Но это намного сложнее, когда вы используете физическую камеру, а не программную камеру, например, в OpenGL. Для этого вам нужно будет использовать OpenCV для получения внутренних и внешних параметров вашей камеры. См. Это руководство для получения более подробной информации: https://docs.opencv.org/3.1.0/dc/dbb/tutorial_py_calibration.html
слишком широкие, нечеткие и расплывчатые без какого-либо образца ввода, поэтому мы можем только догадываться, что вы хотите перекрестно сопоставить похожие сетки и оценить матрицу относительного преобразования для перевода между ними. Это огромная тема, и не видя вашего случая, трудно помочь ... по крайней мере, добавьте скриншоты 2 сеток / PCL В любом случае либо определите конкретную функцию (например, нос или подбородок, уши) и создайте матрицы из их местоположений, либо используйте SIFT / Функции типа SURF + RANSAC для перекрестного соответствия. Если у вас есть маркеры, используйте их, но они должны иметь особое значение, например, известное местоположение в обеих сетках. Название вводит в заблуждение, я думаю