Гауссов сплеттинг (Gaussian splatting) – метод в противовес NERF, который работает по принципу гауссовых функций.
В отличие от последней разработки технология генерит изображения в реальном времени, но с высокой степенью вычислительных затрат – двух гигабайт видеопамяти не хватит…
Традиционные методы часто включают дискретизацию сцены на воксели, трехмерные пиксели, но такое разбиение порой тянется более 10 минут, а мы говорим про рендеринг в реальном времени…
Облака точек позволяют быстро сгенерить базу вокселей и работать в реальном времени.
Как правило, прерывистость между точками предлагается заполнять представлениями покрупнее.
Каждая точка рисуется в виде «следа от снежного шарика», сплэта — фигуры в виде круглого или эллиптического диска, эллипсоида или сёрфелей.
Каждой точке задаются четыре параметра исходя из фотографий сцены:
Координаты.
Ковариационная матрица размерности 3×3.
Для многомерного нормального (гауссовского) распределения нужна матрица, которая показывает, насколько вытянут или сплюснут эллипсоид.
Альфа-канал (прозрачность).
Цвет: три значения RGB.
Если упрощать, то для вывода на экран точки представляются в виде эллипсоидов.
Учитывается их положение (глубина) и прозрачности – мы получаем число точек, к которым присваиваются воксели и впоследствии обычные пиксели при смене ракурса.
Шаг оптимизации – по методу стохастического градиентного спуска. Рендерится картинка на основе гауссиан. Она сравнивается с исходными данными. Происходит коррекция. Процесс повторяется тысячи раз.
В процессе исправления ошибок гауссиану клонируют (если она мелкая) или разбивают на две (если гауссиана слишком большая).
По итогу, после пары снимков и относительно недолгой подготовки мы получаем real-time 3D-сцену. Превосходит по результатам все предыдущее методы, включая NERF…
Почитать и попробовать поработать с методом можно прямо с репозитория Гитхаба — тут.