Перспективная проекция и Z-буферизация 3D головы для формирования изображения лица

Входные данные: 53490 3D-точек и для каждой точки (xyz) и цвета (rgb) головы

Вывод: 2D-изображение лица, если смотреть с определенного места/направления.

Платформа: Matlab C/C++

После изучения я обнаружил, что нужно выполнить шаги

Я реализовал вышеуказанные 3 шага в Matlab. Но для выполнения требуется 8 минут. 2D-рендеринг — часть моего проекта; Я буду вызывать часть 2D-рендеринга 5000 раз позже. Я хочу, чтобы время выполнения было менее 1 секунды.

Основная часть (99,9%) времени уходит на z-буферизацию. Реализация выполняется по вики-ссылке.
Может ли кто-нибудь помочь мне сократить время в Matlab или предложить другую платформу? Будут полезны любые обучающие/демонстрационные ссылки для понимания вышеуказанных шагов.

заранее спасибо


person 2vision2    schedule 17.01.2013    source источник
comment
Я выполнил шаги, указанные в вики-ссылках, упомянутых в вопросе. Для z-буферизации; для моей программы требуется 8 минут ... Можете ли вы предложить, как оптимизировать часть z-буферизации ... И в целом любые предложения и ссылки будут полезны ... Как только время вычислений сократится, я хочу сосредоточиться на качестве часть...   -  person 2vision2    schedule 17.01.2013
comment
Какие у вас данные? Это объемные данные? Я имею в виду, это точки только на поверхности или это точки всего объема головы? (например, из медицинского сканирования). Кроме того, для реализации модели Фонга у вас должна быть поверхностная информация, она у вас тоже есть?   -  person George Aprilis    schedule 17.01.2013
comment
3D-данные головки представлены в формате слоя. Модель @Phong :: Я использую некоторые значения по умолчанию для коэффициентов.   -  person 2vision2    schedule 17.01.2013
comment
вы не можете использовать OpenGL в своем проекте? это было бы намного быстрее, а также было бы не так сложно реализовать.   -  person Dirk    schedule 17.01.2013
comment
@2vision2: похоже, вы описываете обычный графический конвейер. В C почему бы вам не использовать OpenGL, как было предложено. В MATLAB вам не нужно беспокоиться ни о чем из этого, просто нанесите точки и используйте кнопку поворота, чтобы изменить вид...   -  person Amro    schedule 18.01.2013
comment
Спасибо всем за ваши предложения... Я начну использовать OpenGL, как было предложено. Раньше я работал с Matlab; вот почему я выбрал Matlab ... @Amro :: 2D-проекция не для визуализации, я хочу использовать спроецированное 2D-изображение для сравнения с реальным изображением. Проекция является частью проекта 3D-реконструкции, над которым я работаю. Я реализую 3D Morphable Models для реконструкции.   -  person 2vision2    schedule 18.01.2013
comment
@2vision2: о, из описания это неясно.. Как насчет рендеринга за кадром в буфер, применимо ли это в вашем случае?   -  person Amro    schedule 18.01.2013
comment
@Amro :: Я начал использовать OpenGL только сегодня (6 часов назад). Я посмотрю на то, что вы сказали, я думаю, что FBO подойдет для моей проблемы. Можете ли вы прокомментировать OpenGL против VTK .. Спасибо за ваш ответ !!!   -  person 2vision2    schedule 18.01.2013
comment
@2vision2: боюсь, я никогда не пользовался VTK..   -  person Amro    schedule 18.01.2013
comment
@Amro :: Можете ли вы указать мне какой-либо код, в котором есть весь конвейер рендеринга 3D-графики. Я следую ‹www3.ntu.edu.sg/home/ ehchua/programming/opengl/› и сейчас пишет этот учебник.   -  person 2vision2    schedule 19.01.2013
comment
@2vision2: извините, у меня нет ничего конкретного. Я полагаю, что в Интернете есть много ресурсов по этому вопросу... В MATLAB я видел это один раньше, но никогда не присматривался. Удачи вам в вашем проекте   -  person Amro    schedule 19.01.2013


Ответы (1)


Я не рекомендую вам делать это в Matlab, потому что вам может понадобиться визуализировать большой объем. Попробуйте vtk, и вам может понадобиться программирование.

Вот простой (3D-проект) от ImageJ: http://imagejdocu.tudor.lu/doku.php?id=gui:image:stacks

person colddie    schedule 18.01.2013