Введение

Представление 3D-моделированного объекта или набора данных в виде 2D-проекции.

В научной визуализации и компьютерной графике, объемный рендеринг – это набор техник, используемых для отображения 2D-проекции 3D-дискретно вычисленного набора данных, как правило, 3D-скалярного поля. Типичный 3D-набор данных представляет собой группу 2D-изображений, полученных с помощью КТ, МРТ или микро-КТ сканера. Обычно они приобретаются по регулярной схеме (например, один срез на каждый миллиметр глубины) и обычно имеют регулярное количество пикселей изображения, расположенных по регулярной сетке. Это пример регулярной объемной сетки, в которой каждый элемент объема, или воксель, представлен одним значением, полученным путем дискретизации непосредственной области вокруг вокселя. Для рендеринга 2D-проекции 3D-набора данных, сначала необходимо определить положение камеры в пространстве относительно объема. Также необходимо определить непрозрачность и цвет каждого вокселя. Обычно это определяется с помощью RGBA-функции передачи (для красного, зеленого, синего и альфа-канала), которая задает значение RGBA для каждого возможного значения вокселя. Например, объем можно визуализировать путем извлечения изоповерхностей (поверхностей равных значений) из объема и рендеринга их в виде полигональных сеток, или путем непосредственного рендеринга объема как блока данных. Алгоритм Marching Cubes – распространенный метод извлечения изоповерхности из объемных данных. Прямой объемный рендеринг – вычислительно сложная задача, которую можно выполнить несколькими способами. Другой метод объемного рендеринга – трассировка лучей (Ray marching).

Область применения

Объемная визуализация отличается от томографии тонких срезов, а также обычно отличается от проекций трехмерных моделей, включая проекцию максимальной интенсивности. Тем не менее, технически все методы объемной визуализации становятся проекциями при отображении на двухмерном экране, что делает различие между проекциями и объемной визуализацией несколько размытым. Однако, характерной чертой моделей объемной визуализации является сочетание, например, цветового кодирования и затенения для создания реалистичных и/или наглядных изображений.

Прямая рендеринг объема

Для прямого рендеринга объема необходимо отображать каждое значение выборки в значение непрозрачности и цвет. Это выполняется с помощью "функции передачи", которая может представлять собой простую градиентную шкалу, кусочно-линейную функцию или произвольную таблицу. После преобразования в цветовую модель RGBA (красный, зеленый, синий, альфа), полученный составной цвет RGBA проецируется на соответствующий пиксель буфера кадров. Способ выполнения этого зависит от используемой техники рендеринга. Возможно комбинирование этих техник. Например, реализация shear warp может использовать текстурное оборудование для отрисовки выровненных срезов во внеэкранном буфере.

Выделение лучей объема

Техника объемного лучевого отображения может быть выведена непосредственно из уравнения рендеринга. Она обеспечивает результаты очень высокого качества, обычно считающиеся обеспечивающими наилучшее качество изображения. Объемное лучевое отображение классифицируется как метод визуализации объема на основе изображения, поскольку вычисления начинаются с выходного изображения, а не с входных данных объема, как это происходит в объектно-ориентированных методах. В этой технике для каждого желаемого пикселя изображения генерируется луч. Используя простую модель камеры, луч начинается в центре проекции камеры (обычно в точке обзора) и проходит через пиксель изображения на воображаемой плоскости изображения, расположенной между камерой и объемом, который необходимо визуализировать. Луч обрезается границами объема для экономии времени. Затем луч дискретизируется через регулярные или адаптивные интервалы по всему объему. Данные интерполируются в каждой точке дискретизации, к ним применяется функция передачи для формирования образца RGBA, образец компонуется с накопленным RGBA луча, и процесс повторяется до тех пор, пока луч не покинет объем. Цвет RGBA преобразуется в цвет RGB и записывается в соответствующий пиксель изображения. Этот процесс повторяется для каждого пикселя на экране, чтобы сформировать окончательное изображение.

Сплеттинг

Это техника, которая жертвует качеством ради скорости. Здесь каждый воксель, как выразился Ли Вестовер, "разбрасывается", подобно снежному комку, на поверхность просмотра от заднего плана к переднему. Эти "разбросы" отрисовываются в виде дисков, свойства которых (цвет и прозрачность) изменяются по диаметру в соответствии с нормальным (гауссовым) распределением. В зависимости от применения также используются плоские диски и диски с другими типами распределения свойств.

Полосатость

Подход к объемной визуализации с помощью сдвига и деформации был разработан Кэмероном и Андриллом, популяризирован Филиппом Лакрутом и Марком Левоем. В этой технике преобразование просмотра изменяется таким образом, что ближайшая грань объема становится выровненной по осям с буфером данных изображения вне экрана с фиксированным масштабом вокселей к пикселям. Затем объем визуализируется в этот буфер, используя более выгодное выравнивание памяти и фиксированные коэффициенты масштабирования и смешивания. После визуализации всех срезов объема буфер деформируется в требуемую ориентацию и масштабируется в отображаемом изображении. Эта техника относительно быстра в программной реализации, но за счет менее точной выборки и потенциально худшего качества изображения по сравнению с трассировкой лучей. Требуется дополнительная память для хранения нескольких копий объема, чтобы обеспечить возможность работы с объемами, близкими к выровненным по осям. Эти накладные расходы можно уменьшить, используя кодирование длин серий.

Рендаринг объема на основе текстуры

Многие 3D-графические системы используют текстурирование для наложения изображений, или текстур, на геометрические объекты. Графические карты персональных компьютеров быстро выполняют текстурирование и могут эффективно отображать срезы 3D-объема с возможностью взаимодействия в реальном времени. Графические процессоры рабочих станций еще быстрее и лежат в основе большей части производственной визуализации объемов, используемой в медицинской визуализации, нефтегазовой отрасли и других областях (2007). Ранее использовались специализированные системы 3D-текстурирования в графических системах, таких как Silicon Graphics InfiniteReality, графический ускоритель HP Visualize FX и другие. Этот метод был впервые описан Биллом Хиббардом и Дэйвом Сантеком. Эти срезы могут быть выровнены по объему и отображены под углом к наблюдателю, либо выровнены по плоскости просмотра и получены из несмещенных срезов внутри объема. Для второго метода требуется аппаратная поддержка 3D-текстур. Текстурирование с выравниванием по объему создает изображения приемлемого качества, хотя при вращении объема часто заметен переход.

Ускоренная аппаратная рендеринг объема

Из-за чрезвычайно параллельного характера прямой визуализации объема, специализированное аппаратное обеспечение для визуализации объема было активной областью исследований до тех пор, пока визуализация объема на GPU не стала достаточно быстрой. Наиболее известной технологией была система трассировки лучей VolumePro в реальном времени, разработанная Ханспетером Пфистером и учеными из исследовательских лабораторий Mitsubishi Electric, которая использовала высокую пропускную способность памяти и прямой перебор для визуализации с использованием алгоритма трассировки лучей. Эта технология была передана компании TeraRecon, Inc., и было выпущено и продано два поколения ASIC. VP1000 был выпущен в 2002 году, а VP2000 – в 2007 году. Недавно разработанным методом ускорения традиционных алгоритмов визуализации объема, таких как трассировка лучей, является использование современных графических карт. Начиная с программируемых пиксельных шейдеров, исследователи осознали возможности параллельных операций над множеством пикселей и начали выполнять вычисления общего назначения на графических процессорах (GPGPU). Пиксельные шейдеры способны произвольно читать и записывать данные из видеопамяти, а также выполнять базовые математические и логические вычисления. Эти SIMD-процессоры использовались для выполнения общих вычислений, таких как рендеринг полигонов и обработка сигналов. В последних поколениях GPU пиксельные шейдеры теперь могут функционировать как MIMD-процессоры (теперь они способны к независимому ветвлению), используя до 1 ГБ текстурной памяти с форматами с плавающей точкой. Обладая такой мощностью, практически любой алгоритм, шаги которого могут выполняться параллельно, например, объемная трассировка лучей или томографическая реконструкция, может быть выполнен с огромным ускорением. Программируемые пиксельные шейдеры можно использовать для моделирования изменений характеристик освещения, теней, отражений, излучаемого цвета и так далее. Такие моделирования можно создавать с помощью языков шейдеров высокого уровня.

Методы оптимизации

Основная цель оптимизации — пропустить как можно больший объем данных. Типичный набор медицинских данных может занимать 1 ГБ. Для рендеринга с частотой 30 кадров в секунду требуется чрезвычайно быстрая шина памяти. Пропуск вокселей означает, что необходимо обрабатывать меньше информации.

Пропускание пустого пространства

Часто система объемного рендеринга имеет систему для определения областей объема, не содержащих видимого материала. Эта информация может быть использована для исключения рендеринга этих прозрачных областей.

Раннее прекращение луча

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

Октри и БСП пространство подразделения

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

Сегментация объемов

Сегментация изображений — это ручная или автоматическая процедура, которую можно использовать для выделения больших областей объема, представляющих мало интереса, перед рендерингом. Это позволяет значительно сократить объем вычислений, необходимых для трассировки лучей или смешивания текстур. Сокращение может достигать от O(n) до O(log n) для n последовательно проиндексированных вокселей. Сегментация объема также значительно повышает производительность других алгоритмов трассировки лучей. После сегментации объема можно выделить интересующие структуры.

Представление многократного и адаптивного разрешения

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

Предварительно интегрированная рендеринг объема

Предварительно интегрированное рендеринг объема — это метод, позволяющий снизить артефакты дискретизации за счет предварительного вычисления большей части необходимых данных. Он особенно полезен в аппаратно-ускоренных приложениях, поскольку повышает качество без значительного снижения производительности. В отличие от большинства других оптимизаций, этот метод не пропускает воксели, а уменьшает количество выборок, необходимых для точного отображения области вокселей. Суть заключается в отрисовке интервалов между выборками, а не самих выборок. Эта техника позволяет с меньшими вычислительными затратами захватывать быстро меняющиеся материалы, например, переход от мышц к кости.

Сетчатое сшивание на основе изображений

Построение сеток по изображениям — это автоматизированный процесс создания компьютерных моделей на основе данных трехмерных изображений (таких как МРТ, КТ, промышленная КТ или микротомография) для проведения вычислительного анализа и проектирования, например, CAD, CFD и FEA.

Временное повторное использование вокселей

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