Перейти к содержимому
Compvision.ru
jpelikan

Проекция --> в 3D

Recommended Posts

Друзья,

неожиданное прерятствие в решении простой, вроде бы задачи.

Есть снимок объекта (представлен в виде Мат), определены матрицы камеры (cameraMatrix), дисторции и матрица проективного пробразования (точнее, матрицы сдвига и поворота).

Есть, например, функция projectPoints, которая умеет из набора 3D-точек построить проекцию по параметрам проективного преобраования.

Но обратной функции в OpenCV я не нахожу. А надо именно по параметрам (известным) проективного преобразования вернуть обратно из проекции 3D.

Получается, такую функцию придется самостоятельно мастерить? Или есть что-то из готовых функций?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обратное преобразование к проекции не имеет однозначного отображения. А если зафиксировать Z. То мы получим аффинное(матричное) преобразование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это так.

Приношу извинения -вопрос сформулирован некорректно.

Задача состоит в том, чтобы найти по точке проекции (x,y) точку (X,Y)на поверхности трехмерной фигуры (Z-координата достраивается по X,Y); при этом есть матрица проективного преобразования из (X,Y,Z) - в (x,y).

Пока пишу нужную функцию сам(не opencv не нашел).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это так.

Приношу извинения -вопрос сформулирован некорректно.

Задача состоит в том, чтобы найти по точке проекции (x,y) точку (X,Y)на поверхности трехмерной фигуры (Z-координата достраивается по X,Y); при этом есть матрица проективного преобразования из (X,Y,Z) - в (x,y).

Пока пишу нужную функцию сам(не opencv не нашел).

В общем случае при построении обратного отображении к R^3 -> R^2, получаем отображение R^2 -> R^3, где каждой точке (x, y) соответствует множество точек {(x, y, z)}.

В случае проекции конкретного 3D объекта на 2D плоскость, каждой точке плоского изображения может соответствовать несколько точек 3D объекта(какая конкретно - зависит от ракурса и т.д. и т.п.). Т.е. для нахождения соответствия вам скорей всего придется проецировать все 3D точки на искомую плоскость, а дальше разрешать сюръективность при помощи эвристик(например из всех 3D точек отобразившихся в одну 2D точку выбирать ближайшую по цвету и т.п.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если коротко, то должны выполняться условия существования обратной функции:

http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поскольку раньше не сталкивался с такого рода задачами, разобрался только сейчас; такого рода реконструкция решается методами ray tracing, в частности. Если коротко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можно пару ссылок по теме, а то у меня не получается это представить?

Ведь на каждом луче "сидит" бесконечное множество точек.

Я знаю что трассировка лучей бывает прямая и обратная.

Прямая, это когда мы выпускаем из некоторой точки (источник света) лучи, они отражаются объектом и возвращаются на экранную плоскость.

Обратная, это когда мы выпускаем лучи из экранной плоскости и вычисляем освещенность в точке экрана путем суммирования интенсивностей света набранных лучом по его трассе.

И в первом и во втором случае должна быть определена трехмерная сцена, и мы, трассировкой лучей находим ее проекцию на экранную плоскость.

Добавить еще одно измерение таким способом мне представляется нетривиальной задачей.

Хотя, если поверхность ламбертова, то такие решения есть (см. Shape From Shading), но я не видел хорошо работающих на реальных изображениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×