Мнение специалиста от 18 ноября 2012 года | Конструктивная кибернетика

HEALPix фреймворк для Wolfram Mathematica


Существует масса задач для которых требуется пикселизация обычной трёхмерной сферы, то есть разбиение её на множество однородных областей. Сферу «режут», а потом «натягивают» на неё различные карты все, кому не лень: физики, астрофизики, климатологи, экологи, социологи, экономисты, и ещё масса различных специалистов. Да, пикселизация сферы весьма востребована в различных задачах математического моделирования и анализа, в которых встречается эта самая сфера.

При этом сам процесс разбиения сферы на однородные области (в том или ином смысле) весьма нетривиальная задача, и порой порождает весьма жаркие дискуссии. Читатель может убедиться в этом, пройдя по ссылке на форум dxdy.ru.

Тем не менее, существует множество способов разбить сферу на однородные области, но все они с тем или иным изъяном. Причина невозможности идеального разбиения сферы – фундаментальна и напрямую связана с утверждениями теоремы о причёсывании ежа. И всё же есть несколько приближённых методов, порождающих разбиение сферы вполне приемлемого качества. Один из весьма распространённых и качественных методов – это HEALPix (Hierarchical Equal Area iso-Latitude Pixelization).

Метод HEALPix подробно изложен в базовой статье: K.M. Gorski, E. Hivon, A.J. Banday, B.D. Wandelt, F.K. Hansen, M. Reinecke, and M. Bartelmann, HEALPix: A Framework for High-Resolution Discretization and Fast Analysis of Data Distributed on the Sphere // Astrophys.J., 2005, Vol. 622, Issue 2, pp. 759-771. Для применения метода HEALPix разработаны фреймворки на Fortran90, С/С++ и Java. Подробности об этом программном обеспечении см. на web-сайте JPL NASA.

Фреймворки HEALPix для Fortran90, С/С++ и Java – это конечно хорошо, но что делать, если HEALPix нужен в Wolfram Mathematica? В принципе можно использовать MathLink (Calling C Programs from Mathematica) или J/Link (Calling Java from Mathematica). Но есть путь проще. Это фреймворк HEALPix для Wolfram Mathematica, разработанный специалистами группы «Конструктивная Кибернетика» и оформленный в виде пакета расширения wmlHEALPix.m. Функционал, интерфейс и условия использования пакета описаны на странице проекта.

Фреймворк HEALPix для Wolfram Mathematica применять очень просто. Для начала его необходимо инициализировать командой Needs[" wmlHEALPix ‘ "], а затем, в зависимости от задач, вызвать ту или иную функцию. Базовым параметром конфигурации является переменная Nside, от значения которой зависит количество пикселей проецируемых на сферу (количество однородных регионов, на которые разбивается сфера).

Сферу возможно представить полигонами HEALPix. На рисунке ниже показаны три варианта, отличающиеся разрешением (слева направо): Nside=1, Nside=4, Nside=8. Каждый полигон отмечен своим цветом, кроме того, обозначен центр каждого пикселя (серая точка).

Представление сферы полигонами HEALPix.

По сфере возможно провести границы пикселя (однородной области), причём это разграничение возможно совместить с различными текстурными и/или параметрическими картами. Для примера на рисунке ниже в центре пикселями HEALPix размечен глобус планеты Земля.

Разбиение сферы на пиксели HEALPix с указанием их границ.

Возможно построение различных развёрток и проекций сферы. На рисунке ниже показан пример наложения на цилиндрическую развёртку глобуса планеты Земля сетки пикселей HEALPix (Nside=3) с указанием их номеров и границ.

Цилиндрическая развёртка карты планеты Земля с наложенной сеткой пикселей HEALPix и с указанием их номеров.

Естественно, что вместо карт планеты Земля могут использоваться карты других планет, например Марса, и не только планет (небесных тел), но и любых сферических объектов, реальных, вымышленных и/или моделируемых. Вместо номеров пикселей возможно выводить значения тех или иных параметров, нужных исследователю. По контуру пикселя (элементарной области) возможно брать интегралы, и/или рассчитывать значения каких либо других функционалов (например рассчитать среднюю интенсивность потока излучения проходящего через поверхность того или иного пикселя). И т.д., и т.п.

Приведённые в примерах маленькие значения Nside – это для наглядности. Если задача требует, вполне возможно задать Nside=100 000 и получить на выходе разбиение сферы на 120 млрд. пикселей. Можно и больше, если нужно. И ещё один момент. Вариантов применения фреймворка HEALPix для Wolfram Mathematica масса, и порой встречаются весьма экзотические. К примеру, пакет расширения wmlHEALPix.m изначально был разработан специалистами группы «Конструктивная Кибернетика» для реализации некоторых нетривиальных алгоритмов машинного обучения.

18 ноября 2012 года.

Андрей Макаренко,
группа «Конструктивная Кибернетика».

Обсуждение: contact@rdcn.ru

Ключевые слова: HEALPix framework, Wolfram Mathematica, пикселизация сферы, представление данных на сфере, моделирование данных на сфере.