Сплайновая кривая, нарисованная как взвешенная сумма B-сплайнов с контрольными точками/контрольным многоугольником и отмеченными компонентными кривыми.
Термин «B - сплайн» был придуман Исааком Джейкобом Шёнбергом [1] в 1978 году и является сокращением от базисного сплайна. [2]
Сплайн-функция порядка — это кусочно- полиномиальная функция степени . Места соединения частей называются узлами. Ключевое свойство сплайн-функций состоит в том, что они и их производные могут быть непрерывными в зависимости от кратности узлов.
B-сплайны порядка являются базовыми функциями для сплайн-функций одного и того же порядка, определенных над одними и теми же узлами, что означает, что все возможные сплайн-функции могут быть построены из линейной комбинации B-сплайнов, и для каждой сплайн-функции существует только одна уникальная комбинация. . [3]
Определение
Кардинальный квадратичный B-сплайн с вектором узла (0, 0, 0, 1, 2, 3, 3, 3) и контрольными точками (0, 0, 1, 0, 0) и его первой производнойКардинальный кубический B-сплайн с вектором узла (−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2) и контрольными точками (0, 0, 0, 6, 0, 0, 0) и его первая производнаяКардинальный квартический B-сплайн с вектором узла (0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) и контрольными точками (0, 0, 0, 0, 1). , 0, 0, 0, 0), а также его первая и вторая производные
B-сплайн порядка — это совокупность кусочно- полиномиальных функций степени от переменной . Значения точек пересечения частей многочлена известны как узлы, обозначаются и сортируются в неубывающем порядке.
Для данной последовательности узлов существует с точностью до масштабного коэффициента единственный сплайн, удовлетворяющий
Если мы добавим дополнительное ограничение, которое
для всех между узлами и , то масштабный коэффициент становится фиксированным. Узлы между ними (и не включая их) называются внутренними узлами.
B-сплайны можно построить с помощью рекурсивной формулы Кокса – де Бура. Начнем с B-сплайнов степени , т.е. кусочно-постоянных многочленов.
B-сплайны более высокой степени определяются рекурсией.
Характеристики
Функция B-сплайна представляет собой комбинацию гибких полос, которые управляются рядом точек, называемых контрольными точками, создавая плавные кривые. Эти функции используются для создания и управления сложными формами и поверхностями с использованием ряда точек. Функция B-сплайна и функции Безье широко применяются в методах оптимизации формы. [4]
B-сплайн порядка — это кусочно-полиномиальная функция степени от переменной . Он определяется в точках , называемых узлами или точками останова, которые должны быть в неубывающем порядке . B-сплайн дает вклад только в диапазоне между первым и последним из этих узлов и равен нулю в остальных местах. Если каждый узел отделен от своего предшественника на одинаковое расстояние (где ), вектор узла и соответствующие B-сплайны называются «однородными» (см. кардинальный B-сплайн ниже).
Для каждого конечного интервала узлов, где он не равен нулю, B-сплайн является полиномом степени . B-сплайн — это непрерывная функция в узлах. [примечание 1] Когда все узлы, принадлежащие B-сплайну, различны, его производные также непрерывны до производной степени . Если узлы совпадают при заданном значении , непрерывность порядка производной уменьшается на 1 для каждого дополнительного совпадающего узла. B-сплайны могут иметь общее подмножество своих узлов, но два B-сплайна, определенные для одних и тех же узлов, идентичны. Другими словами, B-сплайн однозначно определяется своими узлами.
Различают внутренние узлы и конечные точки. Внутренние узлы покрывают интересующую вас -область. Поскольку один B-сплайн уже простирается над узлами, из этого следует, что внутренние узлы необходимо расширить конечными точками с каждой стороны, чтобы обеспечить полную поддержку первого и последнего B-сплайна. , которые влияют на интервалы внутренних узлов. Значения конечных точек не имеют значения, обычно просто повторяется первый или последний внутренний узел.
Полезность B-сплайнов заключается в том, что любая сплайн-функция порядка на заданном множестве узлов может быть выражена как линейная комбинация B-сплайнов:
B-сплайны играют роль базисных функций для функционального пространства сплайнов, отсюда и название. Это свойство следует из того факта, что все детали имеют одинаковые свойства непрерывности в пределах индивидуального диапазона поддержки в узлах. [5]
Выражения для частей полинома можно получить с помощью рекурсивной формулы Кокса – де Бура [6]
То есть кусочно-постоянная единица или ноль, указывающая, в каком участке узла x находится (ноль, если участок узла j повторяется). Уравнение рекурсии состоит из двух частей:
изменяется от нуля до единицы по мере того, как x переходит от к , и
изменяется от единицы до нуля по мере того, как x переходит от к . Соответствующие B равны нулю вне этих соответствующих диапазонов. Например, это треугольная функция , равная нулю ниже , возрастает до единицы в точке и обратно к нулю в точке . Однако, поскольку базисные функции B-сплайнов имеют локальную поддержку , B-сплайны обычно вычисляются с помощью алгоритмов, которым не требуется вычислять базисные функции там, где они равны нулю, например алгоритм де Бура .
Это соотношение ведет непосредственно к алгоритму BSPLV, закодированному на FORTRAN , который генерирует значения B-сплайнов порядка n в точке x . [7] Следующая схема иллюстрирует, что каждая часть порядка n представляет собой линейную комбинацию частей B-сплайнов порядка n - 1 слева от нее.
Применение рекурсивной формулы с узлами at дает куски однородного B-сплайна порядка 3.
Эти детали показаны на схеме. Свойство непрерывности квадратичной сплайн-функции и ее первой производной во внутренних узлах иллюстрируется следующим образом.
Вторая производная B-сплайна степени 2 разрывна в узлах:
Были предложены более быстрые варианты алгоритма де Бура, но они обладают сравнительно меньшей стабильностью. [8] [9]
Кардинальный B-сплайн
Кардинальный B-сплайн имеет постоянное расстояние h между узлами. Кардинальные B-сплайны данного порядка n представляют собой просто сдвинутые копии друг друга. Их можно получить из более простого определения. [10]
Обозначение «заполнитель» используется для обозначения того, что n -я разделенная разность функции двух переменных t и x должна быть получена путем фиксации x и рассмотрения как функции только от t .
Кардинальный B-сплайн имеет узлы, расположенные равномерно, поэтому интерполяция между узлами равна свертке со сглаживающим ядром.
Например, если мы хотим интерполировать три значения между узлами B-сплайна ( ), мы можем записать сигнал как
Свертка сигнала с помощью прямоугольной функции дает интерполированные значения B-сплайна первого порядка. Интерполяция B-сплайном второго порядка представляет собой двойную свертку с функцией прямоугольника ; путем итеративной фильтрации с помощью прямоугольной функции получается интерполяция более высокого порядка.
Быструю интерполяцию B-сплайном в однородной выборочной области можно выполнить с помощью итеративной средней фильтрации. Альтернативно, прямоугольная функция равна sinc в области Фурье . Следовательно, интерполяция кубическим сплайном равна умножению сигнала в области Фурье на sinc 4 .
Термин P-сплайн означает «штрафной B-сплайн». Это относится к использованию представления B-сплайна, где коэффициенты определяются частично данными, которые необходимо подгонять , а частично дополнительной штрафной функцией , целью которой является обеспечение гладкости во избежание переобучения . [11]
Двумерные и многомерные аппроксимации данных P-сплайнами могут использовать произведение матриц с разделением граней для минимизации вычислительных операций. [12]
Производные выражения
Производная B-сплайна степени k является просто функцией B-сплайнов степени k − 1: [13]
Это означает, что
который показывает, что существует простая связь между производной сплайн-функции и B-сплайнами степени на единицу меньше.
Моменты одномерных B-сплайнов
Одномерные B-сплайны, то есть B-сплайны, в которых положения узлов лежат в одном измерении, могут использоваться для представления одномерных функций плотности вероятности . Примером является взвешенная сумма базисных функций B-сплайна порядка , каждая из которых нормирована по площади к единице (т.е. не оценивается напрямую с использованием стандартного алгоритма де-Бура).
и с постоянным ограничением нормализации . k - й необработанный момент нормализованного B-сплайна можно записать как среднее Дирихле Карлсона [14] , которое, в свою очередь, можно точно решить с помощью контурного интеграла и итеративной суммы [15] как
с
и . Здесь представляет собой вектор с положениями узлов и вектор с соответствующими кратностями узлов. Таким образом, можно точно вычислить любой момент функции плотности вероятности, представленной суммой базисных функций B-сплайна, не прибегая к численным методам.
Связь с кусочным/композитным Безье
Кривая Безье также является полиномиальной кривой, которую можно определить с помощью рекурсии из кривых более низкой степени того же класса и закодировать в терминах контрольных точек, но ключевым отличием является то, что все члены рекурсии для сегмента кривой Безье имеют одинаковую область определения. определение (обычно ), тогда как носители двух терминов в рекурсии B-сплайна различны (самые внешние подинтервалы не являются общими). Это означает, что кривая Безье степени , заданной контрольными точками, состоит в основном из независимых сегментов, тогда как B-сплайн с теми же параметрами плавно переходит от подинтервала к подинтервалу. Чтобы получить что-то сопоставимое из кривой Безье, нужно было бы наложить условие гладкости на переходы между сегментами, что привело бы к некоторому виду сплайна Безье (для которого многие контрольные точки будут определяться требованием гладкости).
Кусочная /составная кривая Безье — это серия кривых Безье, соединенных с непрерывностью не менее C0 (последняя точка одной кривой совпадает с начальной точкой следующей кривой). В зависимости от применения могут быть добавлены дополнительные требования к плавности (например, непрерывность C1 или C2). [16] Непрерывные кривые C1 имеют одинаковые касательные в точке излома (где две кривые встречаются). Непрерывные кривые C2 имеют одинаковую кривизну в точке излома. [17]
Подгонка кривой
Обычно при подборе кривой набор точек данных аппроксимируется кривой, определяемой некоторой математической функцией. Например, распространенные типы аппроксимации кривой используют полином или набор экспоненциальных функций . Когда нет теоретической основы для выбора аппроксимирующей функции, кривая может быть аппроксимирована сплайновой функцией, состоящей из суммы B-сплайнов, с использованием метода наименьших квадратов . [18] [примечание 2] Таким образом, целевая функция для минимизации методом наименьших квадратов для сплайн-функции степени k :
где W ( x ) — вес, а y ( x ) — исходное значение в точке x . Коэффициенты – это параметры, которые необходимо определить. Значения узлов могут быть фиксированными или рассматриваться как параметры.
Основная трудность в применении этого процесса заключается в определении количества используемых узлов и места их размещения. де Бур предлагает различные стратегии решения этой проблемы. Например, расстояние между узлами уменьшается пропорционально кривизне (2-я производная) данных. [ нужна ссылка ] Было опубликовано несколько приложений. Например, было исследовано использование B-сплайнов для аппроксимации одиночных кривых Лоренца и Гаусса . Вычислены оптимальные сплайн-функции степеней 3–7 включительно, основанные на симметричном расположении 5, 6 и 7 узлов, и метод применен для сглаживания и дифференцирования спектроскопических кривых. [19] В сопоставимом исследовании двумерная версия фильтрации Савицкого-Голея и сплайн-метода дала лучшие результаты, чем скользящее среднее или фильтрация Чебышева . [20]
Компьютерное проектирование и компьютерная графика
В приложениях автоматизированного проектирования и компьютерной графики сплайновая кривая иногда представляется как параметрическая кривая некоторого реального параметра . В этом случае кривую можно рассматривать как две или три отдельные координатные функции или . Координатные функции и являются сплайн-функциями с общим набором значений узлов .
Поскольку B-сплайны образуют базисные функции, каждая из координатных функций может быть выражена как линейная сумма B-сплайнов, поэтому мы имеем
Веса и можно комбинировать для формирования точек в трехмерном пространстве . Эти точки широко известны как контрольные точки.
Работая в обратном порядке, последовательность контрольных точек, значений узлов и порядка B-сплайна определяют параметрическую кривую. Такое представление кривой контрольными точками имеет несколько полезных свойств:
Контрольные точки определяют кривую. Если все контрольные точки каким-либо образом преобразуются вместе, например, перемещаются, поворачиваются, масштабируются или перемещаются с помощью любого аффинного преобразования, то соответствующая кривая преобразуется таким же образом.
Поскольку B-сплайны отличны от нуля только для конечного числа узловых интервалов, при перемещении одной контрольной точки соответствующее изменение параметрической кривой происходит чуть выше диапазона параметров небольшого количества узловых интервалов.
Поскольку , и всегда каждый , кривая остается внутри ограничивающего прямоугольника контрольных точек. Кроме того, в некотором смысле кривая в целом повторяет контрольные точки.
Менее желательной особенностью является то, что параметрическая кривая не интерполирует контрольные точки. Обычно кривая не проходит через контрольные точки.
Кубические B-сплайны
Кубическая кривая B-сплайна с нормализованным параметром определяется четырьмя узлами (т.е. контрольными точками ) , , и . Он образует многочлен степени 3, который можно записать как
.
Развернув это, мы можем написать
.
Поскольку это кубический полином, мы также можем записать его как кубическую кривую Безье с контрольными точками , , и , такую, что
Кусочно-кубический B-сплайн формируется набором узлов, и каждые четыре последовательных узла определяют кубический участок кривой с формулировкой выше.
НУРБС
Кривая NURBS - полиномиальная кривая, определенная в однородных координатах (синий) и ее проекция на плоскость - рациональная кривая (красный).
В компьютерном проектировании , компьютерном производстве и компьютерной графике мощным расширением B-сплайнов являются неоднородные рациональные B-сплайны (NURBS). NURBS — это по сути B-сплайны в однородных координатах . Как и B-сплайны, они определяются своим порядком, вектором узла и набором контрольных точек, но в отличие от простых B-сплайнов, каждая контрольная точка имеет вес. Когда вес равен 1, NURBS представляет собой просто B-сплайн, и поэтому NURBS обобщает как B-сплайны, так и кривые и поверхности Безье, причем основное отличие заключается в взвешивании контрольных точек, что делает кривые NURBS «рациональными».
Оценивая NURBS при различных значениях параметров, кривую можно проследить в пространстве; аналогично, оценивая поверхность NURBS при различных значениях двух параметров, поверхность можно представить в декартовом пространстве.
Как и B-сплайны, контрольные точки NURBS определяют форму кривой. Каждая точка кривой вычисляется путем взвешивания суммы нескольких контрольных точек. Вес каждой точки варьируется в зависимости от определяющего параметра. Для кривой степени d влияние любой контрольной точки не равно нулю только в d +1 интервалах (промежутках узлов) пространства параметров. Внутри этих интервалов вес изменяется в соответствии с полиномиальной функцией (базисной функцией) степени d . На границах интервалов базисные функции плавно стремятся к нулю, причем гладкость определяется степенью полинома.
Вектор узла — это последовательность значений параметров, определяющая, где и как контрольные точки влияют на кривую NURBS. Количество узлов всегда равно количеству контрольных точек плюс степень кривой плюс один. Каждый раз, когда значение параметра входит в новый участок узла, новая контрольная точка становится активной, а старая контрольная точка отбрасывается.
Кривая NURBS имеет следующий вид: [21]
Здесь обозначения следующие. u — независимая переменная (вместо x ), k — количество контрольных точек, N — B-сплайн (используется вместо B ), n — степень полинома, P — контрольная точка, а w — вес. Знаменатель — это нормализующий коэффициент, который равен единице, если все веса равны единице.
Это принято писать так
в котором функции
известны как рациональные базисные функции.
Поверхность NURBS получается как тензорное произведение двух кривых NURBS с использованием двух независимых параметров u и v (с индексами i и j соответственно): [22]
^ Строго говоря, B-сплайны обычно определяются как непрерывные слева.
^ де Бур дает процедуры FORTRAN для аппроксимации экспериментальных данных методом наименьших квадратов.
Рекомендации
^ де Бур, с. 114.
^ Гэри Д. Нотт (2000), Интерполирующие кубические сплайны . Спрингер. п. 151.
^ Хартмут Праутч; Вольфганг Бём; Марко Палушны (2002). Методы Безье и B-сплайна . Математика и визуализация. Берлин, Гейдельберг: Springer Science & Business Media. п. 63. дои : 10.1007/978-3-662-04919-8. ISBN 978-3-540-43761-1. ОСЛК 851370272.
^ Талебитоти, Р.; Шоджаифард, Миннесота; Ярмохаммадисатри, Садег (2015). «Оптимизация конструкции цилиндрического резервуара с использованием b-сплайновых кривых». Компьютер и жидкости . 109 : 100–112. doi : 10.1016/j.compfluid.2014.12.004.
^ Ли, ETY (1986). «Комментарии к некоторым алгоритмам B-сплайна». Вычисление . 36 (3): 229–238. дои : 10.1007/BF02240069. S2CID 7003455.
^ де Бур, с. 322.
^ Эйлерс, PHC и Маркс, BD (1996). Гибкое сглаживание с помощью B-сплайнов и штрафов (с комментариями и ответами). Статистическая наука 11 (2): 89–121.
^ Эйлерс, Пол ХК; Маркс, Брайан Д. (2003). «Многомерная калибровка с учетом температурного взаимодействия с использованием двумерной регрессии штрафных сигналов». Хемометрика и интеллектуальные лабораторные системы . 66 (2): 159–174. дои : 10.1016/S0169-7439(03)00029-7.
^ де Бур, с. 115.
^ Карлсон, Британская Колумбия (1991). «B-сплайны, гипергеометрические функции и средние значения Дирихле». Журнал теории приближения . 67 (3): 311–325. дои : 10.1016/0021-9045(91)90006-В .
^ Глюзенкамп, Т. (2018). «Вероятностная обработка неопределенности конечного размера взвешенных данных Монте-Карло». ЭПЖ Плюс . 133 (6): 218. arXiv : 1712.01293 . Бибкод : 2018EPJP..133..218G. doi : 10.1140/epjp/i2018-12042-x. S2CID 125665629.)
^ Евгений В. Шикин; Александр Иванович Плис (14 июля 1995 г.). Руководство по сплайнам для пользователя. ЦРК Пресс. стр. 96–. ISBN978-0-8493-9404-1.
^ Ганс, Питер; Гилл, Дж. Бернард (1984). «Сглаживание и дифференцирование спектроскопических кривых с использованием сплайн-функций». Прикладная спектроскопия . 38 (3): 370–376. Бибкод : 1984ApSpe..38..370G. дои : 10.1366/0003702844555511. S2CID 96229316.
^ Вичек, Мария; Нил, Шэрон Л.; Уорнер, Исайя М. (1986). «Фильтрация во временной области двумерных данных флуоресценции». Прикладная спектроскопия . 40 (4): 542–548. Бибкод : 1986ApSpe..40..542В. дои : 10.1366/0003702864508773. S2CID 28705788. Архивировано из оригинала 23 июня 2017 года.
^ Пигль и Тиллер, глава 4, разд. 2
^ Пигль и Тиллер, глава 4, разд. 4
Цитируемые работы
Карл де Бур (1978). Практическое руководство по сплайнам . Спрингер-Верлаг. ISBN 978-3-540-90356-7.
Пигл, Лес; Тиллер, Уэйн (1997). Книга NURBS (2-е изд.). Спрингер. 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). Кривые и поверхности для компьютерной графики . Спрингер. Глава 7. Приближение B-сплайном. ISBN 978-0-387-28452-1.
Хови, Чад (2022 г.). Формулировка и реализация на Python геометрии Безье и B-сплайна. ПЕСОК2022-7702C. (153 страницы)