В научной визуализации и компьютерной графике объемная визуализация представляет собой набор методов, используемых для отображения двухмерной проекции трехмерного дискретно отобранного набора данных , обычно трехмерного скалярного поля .
Типичный набор 3D-данных представляет собой группу 2D-изображений срезов, полученных с помощью КТ , МРТ или микроКТ- сканера . Обычно они получаются в регулярном шаблоне (например, один срез на каждый миллиметр глубины) и обычно имеют регулярное количество пикселей изображения в регулярном шаблоне. Это пример регулярной объемной сетки, в которой каждый элемент объема или воксель представлен одним значением, которое получается путем выборки непосредственной области, окружающей воксель.
Для визуализации 2D-проекции набора 3D-данных сначала необходимо определить камеру в пространстве относительно объема. Также необходимо определить непрозрачность и цвет каждого воксела. Обычно это определяется с помощью функции передачи RGBA (для красного, зеленого, синего, альфа), которая определяет значение RGBA для каждого возможного значения воксела.
Например, объем можно просмотреть, извлекая изоповерхности (поверхности равных значений) из объема и визуализируя их как полигональные сетки или визуализируя объем напрямую как блок данных. Алгоритм марширующих кубов является распространенным методом извлечения изоповерхности из объемных данных. Прямой рендеринг объема является вычислительно интенсивной задачей, которая может быть выполнена несколькими способами.
Другим методом объемной визуализации является Ray marching .
Объемная визуализация отличается от презентаций томографии тонких срезов , а также, как правило, отличается от проекций 3D-моделей, включая проекцию максимальной интенсивности . [1] Тем не менее, технически, все объемные визуализации становятся проекциями при просмотре на 2-мерном дисплее , делая различие между проекциями и объемными визуализациями немного размытым. Тем не менее, воплощения моделей объемной визуализации включают в себя смесь, например, окраски [2] и затенения [3] для создания реалистичных и/или наблюдаемых представлений.
Прямой объемный рендерер [4] [5] требует, чтобы каждое значение сэмпла было сопоставлено с непрозрачностью и цветом. Это делается с помощью « передаточной функции », которая может быть простым наклоном, кусочно-линейной функцией или произвольной таблицей. После преобразования в значение цветовой модели RGBA (для красного, зеленого, синего, альфа) составной результат RGBA проецируется на соответствующий пиксель буфера кадра. Способ, которым это делается, зависит от техники рендеринга.
Возможна комбинация этих методов. Например, реализация деформации сдвига может использовать аппаратное текстурирование для рисования выровненных срезов в буфере за пределами экрана .
Метод объемного луча может быть получен непосредственно из уравнения рендеринга . Он обеспечивает результаты очень высокого качества, обычно считающиеся обеспечивающими наилучшее качество изображения. Объемный луча классифицируется как метод объемного рендеринга на основе изображения, поскольку вычисления исходят из выходного изображения, а не из входных объемных данных, как в случае с методами, основанными на объектах. В этом методе луч генерируется для каждого желаемого пикселя изображения. Используя простую модель камеры, луч начинается в центре проекции камеры (обычно точка глаза) и проходит через пиксель изображения на воображаемой плоскости изображения, плавающей между камерой и объемом, который нужно визуализировать. Луч отсекается границами объема, чтобы сэкономить время. Затем луч дискретизируется с регулярными или адаптивными интервалами по всему объему. Данные интерполируются в каждой точке выборки, передаточная функция применяется для формирования выборки RGBA, выборка накладывается на накопленную RGBA луча, и процесс повторяется до тех пор, пока луч не выйдет из объема. Цвет RGBA преобразуется в цвет RGB и помещается в соответствующий пиксель изображения. Процесс повторяется для каждого пикселя на экране, чтобы сформировать законченное изображение.
Это техника, которая жертвует качеством ради скорости. Здесь каждый элемент объема разбрызгивается , как сказал Ли Вестовер, как снежный ком, на поверхность просмотра в порядке от заднего плана к переднему. Эти разбрызгивания визуализируются как диски, свойства которых (цвет и прозрачность) изменяются диаметрально противоположно в нормальном ( гауссовском ) порядке. Плоские диски и диски с другими видами распределения свойств также используются в зависимости от приложения. [6] [7]
Подход к объемному рендерингу с помощью деформации сдвига был разработан Кэмероном и Ундриллом, популяризирован Филиппом Лакрутом и Марком Левоем . [8] В этой технике преобразование просмотра преобразуется таким образом, что ближайшая грань объема становится выровненной по оси с буфером данных изображения вне экрана с фиксированным масштабом вокселей в пиксели. Затем объем визуализируется в этот буфер с использованием гораздо более благоприятного выравнивания памяти и фиксированных коэффициентов масштабирования и смешивания. После того, как все срезы объема были визуализированы, буфер затем деформируется в желаемую ориентацию и масштабируется в отображаемом изображении.
Этот метод относительно быстр в программном обеспечении за счет менее точной выборки и потенциально худшего качества изображения по сравнению с ray casting. Существуют накладные расходы памяти для хранения нескольких копий объема, для возможности иметь объемы, выровненные по осям. Эти накладные расходы можно уменьшить с помощью кодирования длины пробега .
Многие системы 3D-графики используют текстурное отображение для нанесения изображений или текстур на геометрические объекты. Обычные графические карты ПК быстро текстурируют и могут эффективно визуализировать срезы 3D-объема с возможностями взаимодействия в реальном времени. Графические процессоры рабочих станций еще быстрее и являются основой для большей части визуализации объемов производства, используемой в медицинской визуализации , нефтегазовой отрасли и других рынках (2007). В более ранние годы специализированные системы 3D-текстурного отображения использовались в графических системах, таких как Silicon Graphics InfiniteReality , графический ускоритель HP Visualize FX и другие. Впервые этот метод был описан Биллом Хиббардом и Дэйвом Сантеком. [9]
Эти срезы могут быть либо выровнены с объемом и визуализированы под углом к зрителю, либо выровнены с плоскостью просмотра и взяты из невыровненных срезов через объем. Для второго метода необходима поддержка графического оборудования для 3D-текстур.
Текстурирование с выравниванием объема позволяет получать изображения приемлемого качества, хотя часто наблюдается заметный переход при вращении объема.
Из-за чрезвычайно параллельной природы прямого объемного рендеринга, специальное аппаратное обеспечение объемного рендеринга было богатой темой для исследований до того, как объемный рендеринг на GPU стал достаточно быстрым. Наиболее широко цитируемой технологией была система ray-casting в реальном времени VolumePro, разработанная Ганспетером Пфистером и учеными из Mitsubishi Electric Research Laboratories , [10] которая использовала высокую пропускную способность памяти и грубую силу для рендеринга с использованием алгоритма ray casting. Технология была передана TeraRecon, Inc., и были произведены и проданы два поколения ASIC. VP1000 [11] был выпущен в 2002 году, а VP2000 [12] в 2007 году.
Недавно разработанная технология ускорения традиционных алгоритмов объемного рендеринга, таких как ray-casting, заключается в использовании современных графических карт. Начиная с программируемых пиксельных шейдеров , люди осознали мощь параллельных операций над несколькими пикселями и начали выполнять вычисления общего назначения на графических процессорах (GPGPU). Пиксельные шейдеры способны считывать и записывать случайным образом из видеопамяти и выполнять некоторые базовые математические и логические вычисления. Эти процессоры SIMD использовались для выполнения общих вычислений, таких как рендеринг полигонов и обработка сигналов. В последних поколениях GPU пиксельные шейдеры теперь могут функционировать как процессоры MIMD (теперь способные к независимому ветвлению), используя до 1 ГБ текстурной памяти с форматами с плавающей точкой. С такой мощностью практически любой алгоритм с шагами, которые могут выполняться параллельно, например, объемное ray casting или томографическая реконструкция , может быть выполнен с огромным ускорением. Программируемые пиксельные шейдеры могут использоваться для моделирования изменений в характеристиках освещения, тени, отражения , цвета излучения и так далее. Такие симуляции можно писать с использованием языков шейдеров высокого уровня .
Основная цель оптимизации — пропустить как можно большую часть объема. Типичный набор медицинских данных может иметь размер 1 ГБ. Для рендеринга этого со скоростью 30 кадров/с требуется чрезвычайно быстрая шина памяти. Пропуск вокселей означает, что нужно обрабатывать меньше информации.
Часто система объемного рендеринга будет иметь систему для идентификации областей объема, не содержащих видимого материала. Эта информация может быть использована для избежания рендеринга этих прозрачных областей. [13]
Это метод, используемый, когда объем визуализируется в порядке спереди назад. Для луча через пиксель, как только будет встречен достаточно плотный материал, дальнейшие выборки не будут вносить существенного вклада в пиксель и поэтому ими можно пренебречь.
Использование иерархических структур, таких как октодерево и BSP -дерево, может быть очень полезным как для сжатия объемных данных, так и для оптимизации скорости процесса объемного луча.
Сегментация изображения — это ручная или автоматическая процедура, которая может использоваться для выделения больших частей объема, которые считаются неинтересными перед рендерингом, объем вычислений, которые должны быть выполнены с помощью ray casting или смешивания текстур, может быть значительно сокращен. Это сокращение может быть от O(n) до O(log n) для n последовательно индексированных вокселей. Сегментация объема также имеет значительные преимущества в производительности для других алгоритмов трассировки лучей . Сегментация объема может впоследствии использоваться для выделения или раскрытия [14] интересующих структур.
Представляя менее интересные области объема в более грубом разрешении, можно сократить накладные расходы на ввод данных. При более близком наблюдении данные в этих областях могут быть заполнены либо путем чтения из памяти или диска, либо путем интерполяции . Объем с более грубым разрешением повторно сэмплируется до меньшего размера таким же образом, как изображение 2D mipmap создается из оригинала. Эти меньшие объемы также используются сами по себе при повороте объема в новую ориентацию.
Предварительно интегрированный объемный рендеринг [15] — это метод, который может уменьшить артефакты выборки путем предварительного вычисления большей части требуемых данных. Он особенно полезен в аппаратно-ускоренных приложениях [16] [17] , поскольку он улучшает качество без значительного влияния на производительность. В отличие от большинства других оптимизаций, он не пропускает воксели. Вместо этого он уменьшает количество выборок, необходимых для точного отображения области вокселей. Идея состоит в том, чтобы визуализировать интервалы между выборками вместо самих выборок. Этот метод захватывает быстро меняющийся материал, например, переход от мышц к костям с гораздо меньшими вычислениями.
Создание сеток на основе изображений — это автоматизированный процесс создания компьютерных моделей из данных трехмерных изображений (таких как МРТ , КТ , промышленная КТ или микротомография ) для вычислительного анализа и проектирования, например, САПР, вычислительной гидродинамики и конечноэлементного анализа.
Для полного отображения требуется показывать только один воксель на пиксель (передний) (хотя для сглаживания изображения можно использовать больше), если требуется анимация, передние воксели, которые нужно показать, можно кэшировать, а их местоположение относительно камеры можно пересчитывать по мере ее движения. Там, где воксели дисплея становятся слишком далеко друг от друга, чтобы покрыть все пиксели, можно найти новые передние воксели с помощью ray casting или аналогичного метода, а там, где два воксела находятся в одном пикселе, передний можно сохранить.
{{cite book}}
: CS1 maint: дата и год ( ссылка ){{cite book}}
: CS1 maint: дата и год ( ссылка )