Идеи: как интерактивно визуализировать большие серии изображений с помощью прямого объемного рендеринга на основе GPU


Я ищу идею о том, как преобразовать 30+ gb, 2000 + цветные серии изображений TIFF в набор данных, который можно визуализировать в режиме реального времени (интерактивные частоты кадров) с помощью рендеринга Тома на основе GPU (с использованием OpenCL / OpenGL / GLSL). Я хочу использовать прямой подход к визуализации объема вместо подгонки поверхности (т. е. райкастинг вместо марширующих кубов).

Проблема состоит в том, что сначала мне нужно преобразовать мои изображения в 3D-набор данных. Первое, что пришло мне в голову, - это увидеть все. изображения в виде 2D-текстур и просто складывать их, чтобы создать 3D-текстуру.

Вторая проблема-это интерактивная частота кадров. Для этого мне, вероятно, понадобится какая-то понижающая дискретизация в сочетании с "детализацией по требованию", загружающей набор данных высокого разрешения при масштабировании или что-то в этом роде.

Первый точечный подход, который я нашел:

  1. полигонизация полных объемных данных путем послойной обработки и формирования соответствующей текстуры изображения;
  2. проведение все существенные преобразования через операции вершинного процессора;
  3. разбиение полигональных срезов на более мелкие фрагменты, где записываются соответствующие координаты глубины и текстуры;
  4. при обработке фрагментов, развертывание метода программирования вершинных шейдеров для улучшения визуализации фрагментов.
Но у меня нет конкретных идей, как начать реализацию этого подхода.

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

2 4

2 ответа:

Если у кого-то есть свежие идеи в этой области, они, вероятно, будут пытаться разработать и опубликовать их. Это постоянная область исследований.

В вашем "точечном подходе", похоже, вы изложили основной метод рендеринга томов на основе срезов. Это может дать хорошие результаты,но многие люди переходят на аппаратный метод raycasting. Если вам интересно, есть пример этого в CUDA SDK.

Хороший метод для иерархической визуализации объема было подробно Crassin и соавт. в своей работе они называютсяГигавокселями . Он использует подход на основе octree, который загружает кирпичи, необходимые в памяти, только когда они необходимы.

Очень хорошей вводной книгой в этой области являетсяобъемная графика в реальном времени .

Я сделал немного объемного рендеринга, хотя мой код сгенерировал изоповерхность с помощью марширующих кубов и отобразил ее. Однако в своем скромном самообразовании объемного рендеринга я наткнулся на интересную короткую статью: объемный рендеринг на обычном компьютерном оборудовании . Он также поставляется с исходным примером. Я так и не удосужился проверить его, но он казался многообещающим. Это все же DirectX, а не OpenGL. Может быть, это даст вам некоторые идеи и место для начала.