В научной визуализации линейная интегральная свертка ( LIC ) — это метод визуализации векторного поля (например, движения жидкости ) с высоким пространственным разрешением. [1] Метод LIC был впервые предложен Брайаном Кабралом и Лейтом Кейси Лидом в 1993 году. [2]
Традиционные визуализации векторных полей используют небольшие стрелки или линии для представления направления и величины вектора. Этот метод имеет низкое пространственное разрешение, что ограничивает плотность представляемых данных и создает риск скрытия характерных особенностей в данных. [1] [3] Более сложные методы, такие как методы линий тока и трассировки частиц, могут быть более показательными, но сильно зависят от правильных исходных точек. [1] Методы на основе текстур, такие как LIC, избегают этих проблем, поскольку они отображают все векторное поле с точечным (пиксельным) разрешением. [1]
По сравнению с другими методами, основанными на интеграции, которые вычисляют линии поля входного векторного поля, LIC имеет то преимущество, что отображаются все структурные особенности векторного поля, без необходимости адаптации начальных и конечных точек линий поля к конкретному векторному полю. Другими словами, он показывает топологию векторного поля. [ необходима цитата ]
В ходе пользовательского тестирования было обнаружено, что LIC особенно хорош для определения критических точек. [4]
Алгоритм
Неформальное описание
LIC приводит к тому, что выходные значения сильно коррелируют вдоль линий поля, но не коррелируют в ортогональных направлениях. [1] В результате линии поля контрастируют друг с другом и визуально выделяются на фоне.
Интуитивно этот процесс можно понять на следующем примере: поток векторного поля можно визуализировать, наложив фиксированный случайный рисунок темной и светлой краски. Когда поток проходит мимо краски, жидкость забирает часть цвета краски, усредняя его с уже приобретенным цветом. Результатом является хаотично полосатая, размазанная текстура, где точки вдоль одной линии тока, как правило, имеют схожий цвет. Другие физические примеры включают:
завитковые узоры из краски, масла или пены на реке
визуализация линий магнитного поля с использованием хаотично распределенных железных опилок
мелкий песок, раздуваемый сильным ветром [5]
Формальное математическое описание
Хотя входное векторное поле и результирующее изображение дискретизированы, имеет смысл взглянуть на него с непрерывной точки зрения. [1] Пусть будет векторным полем, заданным в некоторой области . Хотя входное векторное поле обычно дискретизировано, мы рассматриваем поле как определенное в каждой точке , т. е. предполагаем интерполяцию . Линии тока или, в более общем смысле, линии поля касательны к векторному полю в каждой точке. Они заканчиваются либо на границе , либо в критических точках, где . Для простоты критические точки и границы в дальнейшем игнорируются.
Линия поля , параметризованная длиной дуги , определяется как Пусть будет линией поля, которая проходит через точку для . Тогда значение серого цвета изображения в устанавливается равным
где — ядро свертки , — шумовое изображение, — длина отслеживаемого сегмента линии поля.
необходимо вычислить для каждого пикселя в LIC-изображении. Если это сделать наивно, это будет довольно затратно. Сначала необходимо вычислить линии поля с использованием численного метода решения обыкновенных дифференциальных уравнений , например, метода Рунге–Кутты , а затем для каждого пикселя необходимо вычислить свертку вдоль сегмента линии поля.
Конечное изображение обычно будет каким-то образом окрашено. Обычно для определения оттенка используется некоторое скалярное поле (например, длина вектора), в то время как выходной сигнал LIC в оттенках серого определяет яркость .
Различные варианты ядер свертки и случайного шума создают различные текстуры; например, розовый шум создает облачный рисунок, где области более высокого потока выделяются как размытие, подходящее для визуализации погоды. Дальнейшие уточнения в свертке могут улучшить качество изображения. [6]
Описание программирования
Алгоритмически LIC принимает векторное поле и шумовую текстуру в качестве входных данных и выводит текстуру. Процесс начинается с генерации в области векторного поля случайного серого изображения с желаемым выходным разрешением. Затем для каждого пикселя в этом изображении вычисляется прямая и обратная линии тока фиксированной длины дуги . Значение, назначенное текущему пикселю, вычисляется путем свертки подходящего ядра свертки с уровнями серого всех шумовых пикселей, лежащих на сегменте этой линии тока. Это создает изображение LIC в серых тонах.
Версии
Базовый
Базовые LIC-изображения — это изображения в оттенках серого, без цвета и анимации. Хотя такие LIC-изображения передают направление векторов поля, они не указывают ориентацию; для стационарных полей это можно исправить с помощью анимации. Базовые LIC-изображения не показывают длину векторов (или силу поля).
Цвет
Длина векторов (или напряженность поля) обычно кодируется цветом; в качестве альтернативы может использоваться анимация. [2] [1]
Анимация
Изображения LIC можно анимировать, используя ядро, которое меняется со временем. Образцы с постоянным временем из линии потока все равно будут использоваться, но вместо усреднения всех пикселей в линии потока со статическим ядром используется ядро, похожее на рябь, построенное из периодической функции, умноженной на функцию Ханна, действующую как окно (для предотвращения артефактов). Затем периодическая функция смещается вдоль периода для создания анимации.
Быстрый LIC (FLIC)
Вычисление можно значительно ускорить, повторно используя части уже вычисленных линий поля, специализируясь на функции ящика в качестве ядра свертки и избегая избыточных вычислений во время свертки. [1] Полученный быстрый метод LIC можно обобщить на ядра свертки, которые являются произвольными полиномами. [7]
Поскольку LIC не кодирует ориентацию потока, он не может различать линии тока одинакового направления, но противоположной ориентации. [8] Ориентированная линейная интегральная свертка (OLIC) решает эту проблему, используя асимметричное ядро в виде рампы и текстуру шума низкой плотности. [8] Ядро асимметрично модулирует интенсивность вдоль линии тока, создавая след, который кодирует ориентацию; низкая плотность текстуры шума предотвращает наложение размытых следов, что улучшает читаемость.
Быстрая визуализация ориентированной линейной интегральной свертки (FROLIC) — это вариация, которая приближается к OLIC, визуализируя каждую трассу дискретными шагами, а не как непрерывную размытость. [8] [9]
Неустановившийся поток LIC (UFLIC)
Для векторных полей, зависящих от времени (нестационарный поток), был разработан вариант, называемый Unsteady Flow LIC, который поддерживает согласованность анимации потока. [10] Была представлена интерактивная реализация UFLIC на базе GPU. [11]
Параллельный
Поскольку вычисление изображения LIC является дорогостоящим, но по своей сути параллельным, процесс был распараллелен [12] и, с появлением реализаций на базе графических процессоров, стал интерактивным на ПК.
Многомерный
Обратите внимание, что домен не обязательно должен быть 2D-доменом: метод применим к более многомерным доменам с использованием многомерных шумовых полей. Однако визуализация многомерной текстуры LIC проблематична; один из способов — использовать интерактивное исследование с 2D-срезами, которые вручную позиционируются и вращаются. Домен также не обязательно должен быть плоским; текстура LIC может быть вычислена также для произвольно сформированных 2D-поверхностей в 3D-пространстве. [13]
Приложения
С момента первой публикации в 1993 году этот метод применялся к широкому кругу задач, как научных, так и творческих, в том числе:
Представление векторных полей:
визуализация стационарных (независимых от времени) потоков (линий тока) [14]
Визуальное исследование двумерных автономных динамических систем [15]
картографирование ветров [16]
картирование потока воды
Художественные эффекты для создания и стилизации изображений:
карандашный рисунок [17] (автоматическая генерация карандашного рисунка с использованием фильтра карандаша LIC [18] )
Инструменты обработки изображений на базе графического процессора от Рэймонда Макгуайра
ParaView: линейная интегральная свертка
Инструмент визуализации 2D-потоков на основе LIC и RK4. Разработано с использованием C++ и VTK. Андрес Бежарано
Wolfram Research (2008), LineIntegralConvolutionPlot, функция Wolfram Language, https://reference.wolfram.com/language/ref/LineIntegralConvolutionPlot.html (обновлено в 2014 году).
^ abcdefghi Stalling, Detlev; Hege, Hans-Christian (6–11 августа 1995 г.). «Быстрая и независимая от разрешения линейная интегральная свертка». Труды 22-й ежегодной конференции по компьютерной графике и интерактивным технологиям . SIGGRAPH '95. Лос-Анджелес, Калифорния. стр. 249–256. CiteSeerX 10.1.1.45.5526 . doi :10.1145/218380.218448. ISBN 0-89791-701-4.
^ ab Cabral, Brian; Leedom, Leith Casey (2–6 августа 1993 г.). «Визуализация векторных полей с использованием линейной интегральной свертки». Труды 20-й ежегодной конференции по компьютерной графике и интерактивным технологиям . SIGGRAPH '93. Анахайм, Калифорния. стр. 263–270. CiteSeerX 10.1.1.115.1636 . doi :10.1145/166117.166151. ISBN0-89791-601-8.
^ ab Ward, Matthew O. (5 февраля 1996 г.). "Линейная интегральная свертка для визуализации потока". Worcester Polytechnic Institute . Получено 21 июля 2024 г.
^ Laidlaw, David H.; Kirby, Robert M.; Davidson, J. Scott; Miller, Timothy S.; da Silva, Marco; Warren, William H.; Tarr, Michael J. (21–26 октября 2001 г.). «Количественная сравнительная оценка методов визуализации двумерных векторных полей». IEEE Visualization 2001, VIS '01. Труды . Сан-Диего, Калифорния, США. стр. 143–150.
^ Лю, Чжаньпин (21 августа 2007 г.). "LIC (линейная интегральная свертка)" . Получено 21 июля 2024 г.
^ Weiskopf, Daniel (2009). "Итеративная свертка двойного линейного интеграла для визуализации векторного поля на основе текстуры". В Möller, Torsten; Hamann, Bernd; Russell, Robert D. (ред.). Математические основы научной визуализации, компьютерной графики и исследования больших объемов данных . Математика и визуализация. Берлин, Нью-Йорк: Springer . стр. 191–211. CiteSeerX 10.1.1.66.3013 . doi :10.1007/b106657_10. ISBN978-3-540-25076-0.[ мертвая ссылка ]
^ abc Wegenkittl, Rainer; Gröller, Eduard (24 октября 1997 г.). "Быстрая ориентированная линейная интегральная свертка для визуализации векторного поля через Интернет" (PDF) . Труды. Визуализация '97 (Кат. № 97CB36155) . стр. 309–316. doi :10.1109/VISUAL.1997.663897. ISBN0-8186-8262-0.
^ Java Exploration Tool for Dynamical Systems, Р. Вегенкиттл и Э. Грёллер.
^ Шен, Хан-Вэй; Кам, Дэвид Л. (1998). «Новый алгоритм линейной интегральной свертки для визуализации полей потоков, изменяющихся во времени» (PDF) . IEEE Trans Vis Comput Graph . 4 (2). Лос-Аламитос: IEEE: 98–108. doi :10.1109/2945.694952. ISSN 1077-2626.
^ Дин, Цзян; Лю, Чжаньпин; Ю, Ян; Чен, Вэй (2015). «Интегральная свертка параллельной нестационарной линии потока для высокопроизводительной плотной визуализации». Тихоокеанский симпозиум по визуализации IEEE, 2015 г., PacificVis 2015 . Ханчжоу, Китай. стр. 25–30.
^ Карта ветра в США в реальном времени, составленная Фернандой Виегас и Мартином Ваттенбергом.
^ Публикация researchgate: Сан, Шуо и Хуан, Дунвэй. (2022). Эффективный рисунок карандашом на основе областей.
^ S. Yamamoto, Xiaoyang Mo и A. Imamiya, "Улучшенный карандашный фильтр LIC", Труды. Международная конференция по компьютерной графике, обработке изображений и визуализации, 2004. CGIV 2004., 2004, стр. 251-256, doi: 10.1109/CGIV.2004.1323994.
^ Сяоян Мао, М. Кикукава, К. Касио и А. Имамия, «Автоматическая генерация текстуры волос с помощью линейной интегральной свертки», Конференция IEEE по визуализации информации 2000 г. Международная конференция по компьютерной визуализации и графике, 2000 г., стр. 303-308, doi: 10.1109/IV.2000.859772.
^ Сяоян Мао, Тошиказу Судзуки и Ацуми Имамия. 2003. AtelierM: физически обоснованная интерактивная система для создания традиционных текстур мраморности. В трудах 1-й международной конференции по компьютерной графике и интерактивным технологиям в Австралазии и Юго-Восточной Азии (GRAPHITE '03). Ассоциация вычислительной техники, Нью-Йорк, США, 79–ff. https://doi.org/10.1145/604471.604489
^ Бернхард Дженни (2021) Обобщение рельефа с помощью линейной интегральной свертки, Картография и географическая информатика, 48:1, 78-92, DOI: 10.1080/15230406.2020.1833762
На Викискладе есть медиафайлы по теме Линейная интегральная свертка .
В Wikibooks есть книга по теме: Фракталы/Математика/LIC