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