По словам Джеральда Фарина, B-сплайны были исследованы еще в девятнадцатом веке Николаем Лобачевским в Казанском университете в России. [1] Термин «B-сплайн» был придуман Исааком Якобом Шёнбергом [2] в 1978 году и является сокращением от базисный сплайн. [3] Сплайн- функция
порядка является кусочно- полиномиальной функцией степени . Места, где части встречаются, известны как узлы. Ключевое свойство сплайн-функций заключается в том, что они и их производные могут быть непрерывными, в зависимости от кратности узлов.
B-сплайны порядка являются базисными функциями для сплайн-функций того же порядка, определенных над теми же узлами, что означает, что все возможные сплайн-функции могут быть построены из линейной комбинации B-сплайнов, и существует только одна уникальная комбинация для каждой сплайн-функции. [4]
Определение
B-сплайн порядка представляет собой набор кусочно -полиномиальных функций степени от переменной . Значения, где встречаются части полинома, называются узлами, обозначаются и сортируются в неубывающем порядке.
Для заданной последовательности узлов существует, с точностью до масштабного коэффициента, уникальный сплайн, удовлетворяющий условию
Если мы добавим дополнительное ограничение, которое
для всех между узлами и , то масштабный коэффициент становится фиксированным. Узлы между (и не включая) и называются внутренними узлами.
B-сплайны могут быть построены с помощью рекурсивной формулы Кокса–де Бура. Начнем с B-сплайнов степени , т.е. кусочно-постоянных полиномов.
B-сплайны более высокой степени определяются рекурсией
Характеристики
Функция B-сплайна представляет собой комбинацию гибких полос, которая контролируется несколькими точками, называемыми контрольными точками, создавая плавные кривые. Эти функции используются для создания и управления сложными формами и поверхностями с использованием нескольких точек. Функция B-сплайна и функции Безье широко применяются в методах оптимизации формы. [5]
B-сплайн порядка — это кусочно-полиномиальная функция степени переменной . Она определяется по позициям , называемым узлами или точками разрыва, которые должны быть в неубывающем порядке . B-сплайн вносит вклад только в диапазоне между первым и последним из этих узлов и равен нулю в остальных местах. Если каждый узел отделен от своего предшественника одинаковым расстоянием (где ), вектор узла и соответствующие B-сплайны называются «равномерными» (см. кардинальный B-сплайн ниже).
Для каждого конечного интервала узлов, где он не равен нулю, B-сплайн является полиномом степени . B-сплайн является непрерывной функцией в узлах. [примечание 1] Когда все узлы, принадлежащие B-сплайну, различны, его производные также непрерывны вплоть до производной степени . Если узлы совпадают при заданном значении , непрерывность порядка производной уменьшается на 1 для каждого дополнительного совпадающего узла. B-сплайны могут совместно использовать подмножество своих узлов, но два B-сплайна, определенные над точно такими же узлами, идентичны. Другими словами, B-сплайн однозначно определяется своими узлами.
Различают внутренние узлы и конечные точки. Внутренние узлы охватывают интересующую нас область. Поскольку один B-сплайн уже простирается над узлами, следует, что внутренние узлы должны быть расширены конечными точками с каждой стороны, чтобы обеспечить полную поддержку первому и последнему B-сплайну, которые влияют на интервалы внутренних узлов. Значения конечных точек не имеют значения, обычно первый или последний внутренний узел просто повторяется.
Полезность B-сплайнов заключается в том, что любая сплайновая функция порядка на заданном наборе узлов может быть выражена как линейная комбинация B-сплайнов:
B-сплайны играют роль базисных функций для пространства сплайновых функций, отсюда и название. Это свойство следует из того факта, что все части имеют одинаковые свойства непрерывности в пределах их индивидуального диапазона поддержки в узлах. [6]
Выражения для полиномиальных частей можно вывести с помощью рекурсивной формулы Кокса–де Бура [7]
То есть, является кусочно-постоянной единицей или нулем, указывающей, в каком узле x находится промежуток (нуль, если промежуток j повторяется). Уравнение рекурсии состоит из двух частей:
изменяется от нуля до единицы, когда x изменяется от до , и
изменяется от единицы до нуля, когда x изменяется от до . Соответствующие B s равны нулю вне соответствующих диапазонов. Например, — треугольная функция , равная нулю ниже , изменяется до единицы при и снова до нуля при и далее . Однако, поскольку базисные функции B-сплайна имеют локальную поддержку , B-сплайны обычно вычисляются алгоритмами, которым не нужно оценивать базисные функции там, где они равны нулю, например, алгоритмом де Бура .
Это соотношение приводит непосредственно к алгоритму BSPLV, закодированному на FORTRAN , который генерирует значения B-сплайнов порядка n в точке x . [8] Следующая схема иллюстрирует, как каждый фрагмент порядка n является линейной комбинацией фрагментов B-сплайнов порядка n − 1 слева от него.
Применение формулы рекурсии с узлами в дает части однородного B-сплайна порядка 3
Эти части показаны на диаграмме. Свойство непрерывности квадратичной сплайн-функции и ее первой производной во внутренних узлах иллюстрируются следующим образом
Вторая производная B-сплайна степени 2 разрывна в узлах:
Были предложены более быстрые варианты алгоритма де Бура, но они страдают от сравнительно меньшей стабильности. [9] [10]
Кардинальный B-сплайн
Кардинальный B-сплайн имеет постоянное разделение h между узлами. Кардинальные B-сплайны для заданного порядка n являются просто сдвинутыми копиями друг друга. Их можно получить из более простого определения. [11]
Обозначение «заполнитель» используется для указания того, что n -ная разделенная разность функции двух переменных t и x должна быть взята путем фиксации x и рассмотрения как функции только t .
Кардинальный B-сплайн имеет равномерно расположенные узлы, поэтому интерполяция между узлами эквивалентна свертке со сглаживающим ядром.
Например, если мы хотим интерполировать три значения между узлами B-сплайна ( ), мы можем записать сигнал как
Свертка сигнала с функцией прямоугольника дает интерполированные значения B-сплайна первого порядка. Интерполяция B-сплайна второго порядка представляет собой свертку с функцией прямоугольника дважды ; путем итеративной фильтрации с функцией прямоугольника получается интерполяция более высокого порядка.
Быстрая интерполяция B-сплайна на однородной выборочной области может быть выполнена с помощью итеративной фильтрации среднего. В качестве альтернативы, функция прямоугольника равна sinc в области Фурье . Таким образом, интерполяция кубическим сплайном равна умножению сигнала в области Фурье на sinc 4 .
Термин P-сплайн означает «штрафной B-сплайн». Он относится к использованию представления B-сплайна, где коэффициенты определяются частично данными, которые должны быть подобраны , и частично дополнительной штрафной функцией , которая направлена на обеспечение гладкости , чтобы избежать переобучения . [12]
Двумерные и многомерные P-сплайновые аппроксимации данных могут использовать произведение матриц для минимизации вычислительных операций. [13]
Производные выражения
Производная B-сплайна степени k — это просто функция B-сплайнов степени k − 1: [14]
Это подразумевает, что
что показывает, что существует простая связь между производной сплайн-функции и B-сплайнами степени на единицу меньше.
Моменты одномерных B-сплайнов
Одномерные B-сплайны, т.е. B-сплайны, где положения узлов лежат в одном измерении, могут использоваться для представления 1-мерных функций плотности вероятности . Примером является взвешенная сумма базисных функций B-сплайнов порядка , каждая из которых нормализована по площади до единицы (т.е. не оценивается напрямую с использованием стандартного алгоритма де-Бура)
и с нормализацией константы ограничения . K -й сырой момент нормализованного B-сплайна может быть записан как среднее Дирихле Карлсона [15], которое в свою очередь может быть решено точно с помощью контурного интеграла и итеративной суммы [16] как
с
и . Здесь представляет собой вектор с позициями узлов и вектор с соответствующими кратностями узлов. Таким образом, можно точно вычислить любой момент функции плотности вероятности, представленной суммой базисных функций B-сплайна, не прибегая к численным методам.
Отношение к кусочно-составной кривой Безье
Кривая Безье также является полиномиальной кривой, определяемой с помощью рекурсии из кривых более низкой степени того же класса и закодированной в терминах контрольных точек, но ключевым отличием является то, что все члены в рекурсии для сегмента кривой Безье имеют одну и ту же область определения (обычно ), тогда как опоры двух членов в рекурсии B-сплайна различны (самые внешние подынтервалы не являются общими). Это означает, что кривая Безье степени, заданной контрольными точками, состоит из в основном независимых сегментов, тогда как B-сплайн с теми же параметрами плавно переходит от подынтервала к подынтервалу. Чтобы получить что-то сопоставимое с кривой Безье, нужно было бы наложить условие гладкости на переходы между сегментами, что привело бы к некоторому виду сплайна Безье (для которого многие контрольные точки были бы определены требованием гладкости).
Кусочно /составная кривая Безье представляет собой ряд кривых Безье, соединенных с непрерывностью не менее C0 (последняя точка одной кривой совпадает с начальной точкой следующей кривой). В зависимости от приложения могут быть добавлены дополнительные требования к гладкости (такие как непрерывность C1 или C2). [17] Непрерывные кривые C1 имеют идентичные касательные в точке разрыва (где встречаются две кривые). Непрерывные кривые C2 имеют одинаковую кривизну в точке разрыва. [18]
Подгонка кривой
Обычно при подгонке кривой набор точек данных подгоняется под кривую, заданную некоторой математической функцией. Например, общие типы подгонки кривой используют полином или набор экспоненциальных функций . Когда нет теоретической основы для выбора подгоночной функции, кривая может быть подогнана под сплайн-функцию, составленную из суммы B-сплайнов, с использованием метода наименьших квадратов . [19] [примечание 2] Таким образом, целевая функция для минимизации наименьших квадратов для сплайн-функции степени k равна :
где W ( x ) — вес, а y ( x ) — начальное значение в точке x . Коэффициенты — это параметры, которые необходимо определить. Значения узлов могут быть фиксированными или рассматриваться как параметры.
Основная сложность в применении этого процесса заключается в определении количества используемых узлов и места их размещения. Де Бур предлагает различные стратегии для решения этой проблемы. Например, расстояние между узлами уменьшается пропорционально кривизне (второй производной) данных. [ требуется ссылка ] Было опубликовано несколько приложений. Например, было исследовано использование B-сплайнов для подгонки отдельных кривых Лоренца и Гаусса . Были вычислены оптимальные сплайн-функции степеней 3–7 включительно, основанные на симметричном расположении 5, 6 и 7 узлов, и метод был применен для сглаживания и дифференциации спектроскопических кривых. [20] В сопоставимом исследовании двумерная версия фильтрации Савицкого–Голея и метод сплайнов дали лучшие результаты, чем скользящее среднее или фильтрация Чебышева . [21]
Компьютерное проектирование и компьютерная графика
В приложениях автоматизированного проектирования и компьютерной графики сплайновая кривая иногда представляется как , параметрическая кривая некоторого действительного параметра . В этом случае кривая может рассматриваться как две или три отдельные функции координат , или . Функции координат , и являются каждая сплайновой функцией с общим набором значений узлов .
Поскольку B-сплайны образуют базисные функции, каждая из координатных функций может быть выражена как линейная сумма B-сплайнов, поэтому мы имеем
Веса , и могут быть объединены для формирования точек в трехмерном пространстве. Эти точки обычно известны как контрольные точки.
Работая в обратном направлении, последовательность контрольных точек, значений узлов и порядок B-сплайна определяют параметрическую кривую. Это представление кривой контрольными точками имеет несколько полезных свойств:
Контрольные точки определяют кривую. Если все контрольные точки преобразуются вместе каким-либо образом, например, переносятся, вращаются, масштабируются или перемещаются любым аффинным преобразованием, то соответствующая кривая преобразуется таким же образом.
Поскольку B-сплайны не равны нулю только для конечного числа интервалов узлов, при перемещении одной контрольной точки соответствующее изменение параметрической кривой будет находиться чуть выше диапазона параметров небольшого числа интервалов узлов.
Поскольку , и в любое время каждый , то кривая остается внутри ограничивающего прямоугольника контрольных точек. Также, в некотором смысле, кривая в целом следует контрольным точкам.
Менее желательной особенностью является то, что параметрическая кривая не интерполирует контрольные точки. Обычно кривая не проходит через контрольные точки.
Кубические B-сплайны
Кубическая B-сплайновая кривая с нормализованным параметром определяется четырьмя узлами (т.е. контрольными точками ) , , , и . Она образует полином степени 3, который можно записать как
.
Это соответствует полиномам B-сплайна.
и кривая может быть оценена как . Расширяя это, мы можем записать полную полиномиальную форму, как показано ниже
.
Поскольку это кубический многочлен, мы также можем записать его как кубическую кривую Безье с контрольными точками , , , и , такими, что
Кусочно-кубический B-сплайн образован набором узлов, и каждые четыре последовательных узла определяют кубический фрагмент кривой с помощью приведенной выше формулировки.
НУРБС
В автоматизированном проектировании , автоматизированном производстве и компьютерной графике мощным расширением B-сплайнов являются неоднородные рациональные B-сплайны (NURBS). NURBS по сути являются B-сплайнами в однородных координатах . Как и B-сплайны, они определяются своим порядком, вектором узла и набором контрольных точек, но в отличие от простых B-сплайнов, каждая контрольная точка имеет вес. Когда вес равен 1, NURBS является просто B-сплайном, и как таковой NURBS обобщает как B-сплайны, так и кривые и поверхности Безье , основное отличие заключается во взвешивании контрольных точек, что делает кривые NURBS «рациональными».
Оценивая NURBS при различных значениях параметров, можно проследить кривую в пространстве; аналогично, оценивая поверхность NURBS при различных значениях двух параметров, можно представить поверхность в декартовом пространстве.
Как и B-сплайны, контрольные точки NURBS определяют форму кривой. Каждая точка кривой вычисляется путем взятия взвешенной суммы ряда контрольных точек. Вес каждой точки изменяется в зависимости от управляющего параметра. Для кривой степени d влияние любой контрольной точки не равно нулю только в d +1 интервалах (узловых промежутках) пространства параметров. Внутри этих интервалов вес изменяется в соответствии с полиномиальной функцией (базисными функциями) степени d . На границах интервалов базисные функции плавно стремятся к нулю, причем гладкость определяется степенью полинома.
Вектор узла — это последовательность значений параметров, которая определяет, где и как контрольные точки влияют на кривую NURBS. Количество узлов всегда равно количеству контрольных точек плюс степень кривой плюс один. Каждый раз, когда значение параметра входит в новый диапазон узла, новая контрольная точка становится активной, а старая контрольная точка отбрасывается.
Кривая NURBS имеет следующий вид: [22]
Здесь обозначения следующие. u — независимая переменная (вместо x ), k — количество контрольных точек, N — B-сплайн (используется вместо B ), n — степень полинома, P — контрольная точка, а w — вес. Знаменатель — нормирующий множитель, который равен единице, если все веса равны единице.
Это принято писать как
в котором функции
известны как рациональные базисные функции.
Поверхность NURBS получается как тензорное произведение двух кривых NURBS, при этом используются два независимых параметра u и v (с индексами i и j соответственно): [23]
^ Хартмут Праутч; Вольфганг Бём; Марко Палушны (2002). Методы Безье и B-сплайна . Математика и визуализация. Берлин, Гейдельберг: Springer Science & Business Media. п. 63. дои : 10.1007/978-3-662-04919-8. ISBN 978-3-540-43761-1. OCLC 851370272.
^ Talebitooti, R.; Shojaeefard, MH; Yarmohammadisatri, Sadegh (2015). «Оптимизация конструкции формы цилиндрического резервуара с использованием b-сплайновых кривых». Computer & Fluids . 109 : 100–112. doi :10.1016/j.compfluid.2014.12.004.
^ де Бур, стр. 113.
^ де Бур, стр. 131.
^ де Бур, стр. 134.
^ Ли, ETY (декабрь 1982 г.). «Упрощенная процедура вычисления B-сплайна». Computing . 29 (4): 365–371. doi :10.1007/BF02246763. S2CID 2407104.
^ Ли, ETY (1986). «Комментарии к некоторым алгоритмам B-сплайна». Computing . 36 (3): 229–238. doi :10.1007/BF02240069. S2CID 7003455.
^ де Бур, стр. 322.
^ Эйлерс, PHC и Маркс, BD (1996). Гибкое сглаживание с B-сплайнами и штрафами (с комментариями и возражениями). Статистическая наука 11(2): 89–121.
^ Эйлерс, Пол ХК; Маркс, Брайан Д. (2003). «Многомерная калибровка с температурным взаимодействием с использованием двумерной регрессии штрафного сигнала». Хемометрика и интеллектуальные лабораторные системы . 66 (2): 159–174. doi :10.1016/S0169-7439(03)00029-7.
^ де Бур, стр. 115.
^ Карлсон, BC (1991). «B-сплайны, гипергеометрические функции и средние Дирихле». Журнал теории приближений . 67 (3): 311–325. doi : 10.1016/0021-9045(91)90006-V .
^ Glüsenkamp, T. (2018). «Вероятностная обработка неопределенности из конечного размера взвешенных данных Монте-Карло». EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Bibcode : 2018EPJP..133..218G. doi : 10.1140/epjp/i2018-12042-x. S2CID 125665629.)
↑ Евгений В. Шикин; Александр И. Плис (14 июля 1995 г.). Справочник по сплайнам для пользователя. CRC Press. С. 96–. ISBN978-0-8493-9404-1.
^ Wernecke, Josie (1993). "8". The Inventor Mentor: Programming Object-Oriented 3D Graphics with Open Inventor, Release 2 (1st ed.). Бостон, Массачусетс, США: Addison-Wesley Longman Publishing Co., Inc. ISBN978-0201624953.
^ де Бур, Глава XIV, с. 235.
^ Ганс, Питер; Гилл, Дж. Бернард (1984). «Сглаживание и дифференциация спектроскопических кривых с использованием сплайн-функций». Прикладная спектроскопия . 38 (3): 370–376. Bibcode : 1984ApSpe..38..370G. doi : 10.1366/0003702844555511. S2CID 96229316.
^ Vicsek, Maria; Neal, Sharon L.; Warner, Isiah M. (1986). «Фильтрация во временной области двумерных данных флуоресценции». Applied Spectroscopy . 40 (4): 542–548. Bibcode : 1986ApSpe..40..542V. doi : 10.1366/0003702864508773. S2CID 28705788. Архивировано из оригинала 23 июня 2017 г.
↑ Пигль и Тиллер, глава 4, раздел 2.
↑ Пигль и Тиллер, глава 4, раздел 4.
Цитируемые работы
Карл де Бур (1978). Практическое руководство по сплайнам . Спрингер-Верлаг. ISBN 978-3-540-90356-7.
Пигль, Лес; Тиллер, Уэйн (1997). Книга NURBS (2-е изд.). Springer. ISBN 978-3-540-61545-3.
Дальнейшее чтение
Ричард Х. Бартельс; Джон К. Битти; Брайан А. Барски (1987). Введение в сплайны для использования в компьютерной графике и геометрическом моделировании . Морган Кауфманн. ISBN 978-1-55860-400-1.
Жан Галлье (1999). Кривые и поверхности в геометрическом моделировании: теория и алгоритмы. Морган Кауфманн. Глава 6. B-сплайновые кривые.Эта книга больше не издается и доступна бесплатно у автора.
Хартмут Праутч; Вольфганг Бём; Марко Палушны (2002). Методы Безье и B-сплайна . Springer Science & Business Media. ISBN 978-3-540-43761-1.
Дэвид Саломон (2006). Кривые и поверхности для компьютерной графики . Springer. Глава 7. Аппроксимация B-сплайнами. ISBN 978-0-387-28452-1.
Хови, Чад (2022). Формулировка и реализация на Python геометрии Безье и B-сплайна. SAND2022-7702C. (153 страницы)