Jump to content
Compvision.ru
Sign in to follow this  
jpelikan

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

Recommended Posts

Друзья,

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Это так.

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

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

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

Share this post


Link to post
Share on other sites

Это так.

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

Задача состоит в том, чтобы найти по точке проекции (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 точку выбирать ближайшую по цвету и т.п.).

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×