Интерактивная визуализация объѐмных данных методом обратной трассировки лучей на GPU Гаврилов Николай Аспирант кафедры МО ЭВМ Факультет ВМК ННГУ им. Лобачевского CT-данные легочных сосудов http://www.imagingeconomics.com/issues/articles/MI_2005-03_01.asp Объѐмный рендеринг и его приложения Научная визуализация, как анализ физических процессов Численное моделирование Последующая визуализация http://wwwnew.ispras.ru/ru/unicluster/technologies.php Медицинская визуализация Двумерные чѐрно-белые слои Ренген (интегральная Характеристика плотности) Проекция максимальной интенсивности (MIP) Объѐмный рендеринг (визуализация 3Д массива) http://www.osirix-viewer.com/Snapshots.html Мультипланарная реконструкция (MPR) Объѐмный рендеринг сегментированных данных Компьютерная томография – данные Результат томографии – 3D матрица (набор 2D слоѐв) Сечения – традиционный метод визуализации MRI CT Объѐмный рендеринг Генерирует 2D проекцию 3D массива данных Визуализация научных и медицинских данных Визуализация природных эффектов (дым, огонь) http://quasar9.blogspot.com/2007_02_01_archive.html http://www.gfxtra.com/plugins/3ds-max-plugins/8959sitni-sati-fumefx-v20-for-3ds-max-20102011.html Цели работы Актуальные проблемы Мульти-объѐмная интерактивная визуализация Информативность визуализации ( выбор нужного алгоритма рендеринга ) Цели Высококачественная интерактивная визуализация огромных массивов данных Гибкая и полуавтоматическая настройка параметров визуализации данных http://www.volviz.com/topics/basics.php Объѐмный рендеринг Основные понятия Объѐмные данные Трѐхмерная матрица вокселей Воксели лежат в узлах регулярной прямоугольной сетки Воксель – элемент объѐмных данных Характирезует данные в окрестности своего расположения Может быть не только скаляром (температура, плотность, …), но и вектором, матрицей, и т.д. Интерполяция При выборке значения данных из произвольной точки пространства берѐтся интерполированное значение http://rickwilsondmd.typepad.com/rick_wilson_dmds_blog/2010/08/invisaligns-vivera-retainers-voxels-ofstability.html Формула билинейной интерполяции 1.0 U = a1*b1*V00 + a0*b1*V10 + a1*b0*V01 + a0*b0*V11 a0 V00 V10 1.0 b0 U a1=1 – a0 b1=1 – b0 V10 V11 Vij – значения вокселей Геометрические центры вокселей Изоповерхность Место точек, где данные принимают определѐнное значение L (изозначение) F(X,Y,Z) = 2.0 - cos ( X + T * Y ) - cos ( X - T * Y ) cos ( Y + T * Z ) - cos ( Y - T * Z ) сos ( Z - T * X ) - cos ( Z + T * X ) = 0 Изоповерхность для массива CT-данных Вычисление градиента и нормали G G = Grad U(x,y) ≈ ( ( U(x + dx,y) – U(x – dx,y) ) / 2dx, (U(x,y + dy) – U(x, y – dy)) / 2dy) N dy N=G/|G| dx -dx (x,y) -dy Передаточная функция (Transfer Function) Любому возможному значению исходных данных ставит в соответствие определѐнные оптические свойства Значение исходных данных (число) TF Оптические свойства (цвет, прозрачность, коэффициенты для модели локального освещения, и т.д.) Можно раскрашивать пространство с данными в соответствии с функцией переноса, в результате получается разноцветные затуманенные области Комбинация изоповерхностей и тумана Изоповерхности для костей и кожи, область жировой ткани закрашена жѐлтым цветом http://volumegraphics.de/solutions/voxels.html Техники объѐмного рендеринга Техники объѐмного рендеринга Метод слоѐв Производительность Метод обратной трассировки лучей Качество Гибкость Course Notes 28 Real-Time Volume Graphics SIGGRAPH2004 Уравнения накопления цвета Итоговый цвет Текущий цвет Накопленный C – итоговый цвет Ci – выборка цвета на i-ом шаге Aj – выборка степени непрозрачности на j-ом шаге n – число шагов луча Возможности трассировки лучей Вывод изоповерхностей и тумана Тени, отражения, преломления DVR Изоповерхности Изоповерхность с тенью http://www.slashgear.com/nvidia-vp-criticises-intel-gpupolicy-unfair-to-entry-level-users-video-2783314/ Реализация на GPU Объѐмный рендеринг на GPU Инициализация данных Объѐмные данные (в 3D текстуре) Программа трассировки луча (в виде шейдерной программы) При смене параметров Параметры просмотра (в виде uniform-переменных для шейдерной программы) GPU Генерация лучей 1 Шейдерную программу трассировки луча делаем текущей Вывод геометрии для генерации лучей лучи 2 Объѐм данных экран наблюдатель Шейдеры в графическом конвейере Операции над фрагментами (определение цвета) Описание сцены вершины примитивы фрагменты Растровое изображени е пиксели Course Notes 28 Real-Time Volume Graphics SIGGRAPH2004 http://graphicsrunner.blogspot.com/ Оптимизационные стратегии Проблема производительности Типичные CT-данные имеют размер 512³ Чем больше данные, тем дольше к ним доступ Возможные оптимизации Раннее завершение луча Сравнение накопленной непрозрачности с порогом Игнорирование пустых областей Хранить диапазоны значений блоков ячеек Хранить расстояние до ближайшего непустого вокселя Использовать список примитивов (параллелепипедов, сфер, полупрос транств), ограничивающих видимые данные “Интересная” область Ускоряющая структура Луч пропускает “неинтересные” области наблюдатель Артефакты объѐмного рендеринга Стартовые позиции лучей Случайный сдвиг луча в начале на step*RND01 Step – шаг луча (вектор) RND01– случайное число из [0,1] Зашумление артефактов Накопление кадров Вычисляем среднее изображений, полученных при различных (случайных) начальных позициях луча Усреднѐнное изображение http://www.anl.gov/Media_Center/News/2009/news090730.html Различные алгоритмы объѐмного рендеринга Архитектура системы Алгоритм рендеринга (шейдер) N 1 Параметры алгоритма рендеринга 1 N N Массив данных (3D текстура) 1 Глобальные параметры визуализации http://franstatic.files.wordpress.com/2009/12/2010newy ear_colour-preview.jpg Заключение Публикации прошедшего полугода Николай Гаврилов, Александра Белокаменская, Стерео-визуализация научных и медицинских объемных данных трассировкой лучей в реальном времени // метериалы конференции ГрафиКон'2010, 20-24 сентября, Санкт-Петербург, Россия Николай Гаврилов, Александра Белокаменская, Организация потоковых вычислений на GPU в задаче стереовизуализации томограмм // метериалы Х Международной конференции "Высокопроизводительные параллельные вычисления на кластерных системах" 1-3 ноября 2010г, Пермь, Россия, стр. 58-61 Результаты работы Интерактивный мульти-объѐмный рендеринг Режим одновременного просмотра нескольких техник рендеринга Опция трикубической интерполяции данных вместо трилинейной Вывод произвольного числа полупрозрачных изоповерхностей для нескольких полей Тесты производительности Размер окна вывода: 1280x1024 Тестовые данные: 512 x 512 x 512, 16-бит Длина шага луча: 0.0004 (0,2 от размера вокселя) Текущая работа Обработка объѐмных данных на GPU Подавление шума Изменение разрешения данных Исследование и реализация всевозможных алгоритмов трассировки луча для обеспечения гибкости системы 1 2 3 4 1 2 3 4 Литература Klaus Engel, Markus Hadwiger, Joe M. Kniss, Aaron E. Lefohn, Christof Rezk Salama, Daniel Weiskopf; Real-Time Volume Graphics, SIGGRAPH-2004 http://old.vrvis.at/via/resources/course-volgraphics-2004/ Ятченко А.М., Крылов А.С., Гаврилов А.В., Архипов И.В. Построение 3D модели кровеносных сосудов по серии КТ изображений печени / Conf. Proc. of the 19th International Conference on Computer Graphics and Vision “GraphiCon’2009”, Moscow, 2009 Friedemann Roßler, Eduardo Tejada, Thomas Fangmeier, Thomas Ertl, Markus Knauff, GPU-based Multi-Volume Rendering for the Visualization of Functional Brain Images http://www.vis.unistuttgart.de/ger/research/pub/pub2006/simvis06-roessler.pdf Ralph Brecheisen, Anna Vilanova i Bartroli, Bram Platel, Bart ter Haar Romeny. Flexible GPU-Based Multi-Volume Ray-Casting // Technical University of Eindhoven http://www.yp.wtb.tue.nl/pdfs/9881.pdf Beyer Johanna. GPU-based Multi-Volume Rendering of Complex Data in Neuroscience and Neurosurgery. - Dissertation/ Vienna University of Technology, okt.2009, 131p The scientific computing and imagine institute at the university of Utah http://www.sci.utah.edu/download/IV3DData.html