B-сплайн
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
В математической подобласти численного анализа B -сплайн или базисный сплайн — это сплайн- функция, имеющая минимальную поддержку относительно заданной степени , гладкости и разделения области . Любая сплайн-функция заданной степени может быть выражена как линейная комбинация B-сплайнов этой степени. Кардинальные B-сплайны имеют узлы, равноудаленные друг от друга. B-сплайны можно использовать для аппроксимации кривых и численного дифференцирования экспериментальных данных.
В системах автоматизированного проектирования и компьютерной графики сплайн-функции строятся как линейные комбинации B-сплайнов с набором контрольных точек.
Введение
[ редактировать ]По словам Джеральда Фарина, 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 равны нулю вне соответствующих диапазонов. Например, представляет собой треугольную функцию , которая равна нулю ниже , снижается до единицы в и обратно к нулю и далее . Однако, поскольку базисные функции 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 .
См. Распределение Ирвина – Холла # Особые случаи для алгебраических выражений для кардинальных B-сплайнов степени 1–4.
P-сплайн
[ редактировать ]Термин P-сплайн означает «штрафной B-сплайн». Это относится к использованию представления B-сплайна, где коэффициенты определяются частично данными, которые необходимо подгонять , а частично дополнительной штрафной функцией , целью которой является обеспечение гладкости во избежание переобучения . [12]
Двумерные и многомерные аппроксимации данных P-сплайнами могут использовать произведение матриц с разделением граней для минимизации вычислительных операций. [13]
Производные выражения
[ редактировать ]Производная B-сплайна степени k — это просто функция B-сплайнов степени k − 1: [14]
Это означает, что
который показывает, что существует простая связь между производной сплайн-функции и B-сплайнами степени на единицу меньше.
Моменты одномерных B-сплайнов
[ редактировать ]Одномерные B-сплайны, то есть B-сплайны, в которых положения узлов лежат в одном измерении, могут использоваться для представления одномерных функций плотности вероятности. . Примером может служить взвешенная сумма B-сплайновые базисные функции порядка , каждый из которых нормирован по площади к единице (т.е. не оценивается напрямую с использованием стандартного алгоритма де-Бура)
и с постоянным ограничением нормализации . -ый k необработанный момент нормализованного B-сплайна можно записать как среднее Дирихле Карлсона. , [15] который, в свою очередь, может быть решен точно с помощью контурного интеграла и итерационной суммы [16] как
с
и . Здесь, представляет собой вектор с положения узлов и вектор с соответствующими кратностями узла. Таким образом, можно вычислить любой момент функции плотности вероятности. представить в виде суммы базисных функций B-сплайна точно, не прибегая к численным методам.
Связь с кусочным/композитным Безье
[ редактировать ]Кривая Безье также является полиномиальной кривой, которую можно определить с помощью рекурсии из кривых более низкой степени того же класса и закодировать в терминах контрольных точек, но ключевым отличием является то, что все члены рекурсии для сегмента кривой Безье имеют одинаковую область определения. определение (обычно ), тогда как носители двух терминов в рекурсии B-сплайна различны (крайние подинтервалы не являются общими). Это означает, что кривая Безье степени данный контрольные точки состоят из примерно в основном независимые сегменты, тогда как B-сплайн с теми же параметрами плавно переходит от подинтервала к подинтервалу. Чтобы получить что-то подобное из кривой Безье, нужно было бы наложить условие гладкости на переходы между сегментами, что привело бы к некоторому виду сплайна Безье (для которого многие контрольные точки будут определяться требованием гладкости).
Кусочная /составная кривая Безье — это серия кривых Безье, соединенных с непрерывностью не менее C0 (последняя точка одной кривой совпадает с начальной точкой следующей кривой). В зависимости от применения могут быть добавлены дополнительные требования к плавности (например, непрерывность C1 или C2). [17] Непрерывные кривые C1 имеют одинаковые касательные в точке разрыва (где две кривые встречаются). Непрерывные кривые C2 имеют одинаковую кривизну в точке излома. [18]
Подгонка кривой
[ редактировать ]Обычно при подборе кривой набор точек данных аппроксимируется кривой, определяемой некоторой математической функцией. Например, распространенные типы аппроксимации кривой используют полином или набор экспоненциальных функций . Когда нет теоретической основы для выбора аппроксимирующей функции, кривая может быть аппроксимирована сплайновой функцией, состоящей из суммы B-сплайнов, с использованием метода наименьших квадратов . [19] [примечание 2] Таким образом, целевая функция для минимизации методом наименьших квадратов для сплайн-функции степени k равна
где W ( x ) — вес, а y ( x ) — исходное значение в точке x . Коэффициенты являются параметрами, которые необходимо определить. Значения узлов могут быть фиксированными или рассматриваться как параметры.
Основная трудность в применении этого процесса заключается в определении количества используемых узлов и места их размещения. де Бур предлагает различные стратегии решения этой проблемы. Например, расстояние между узлами уменьшается пропорционально кривизне (2-я производная) данных. [ нужна ссылка ] Опубликовано несколько приложений. использование 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]
с
как рациональные базисные функции.
См. также
[ редактировать ]- Кривая Безье
- Коробчатый сплайн
- Алгоритм Де Бура
- I-сплайн
- М-сплайн
- Сплайновый вейвлет
- Т-образный шлиец
Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Фарин, GE (2002). Кривые и поверхности для CAGD: практическое руководство . Морган Кауфманн. п. 119.
- ^ де Бур, с. 114.
- ^ Гэри Д. Нотт (2000), Интерполирующие кубические сплайны . Спрингер. п. 151.
- ^ Хартмут Праутч; Вольфганг Бём; Марко Палушны (2002). Методы Безье и B-сплайна . Математика и визуализация. Берлин, Гейдельберг: Springer Science & Business Media. п. 63. дои : 10.1007/978-3-662-04919-8 . ISBN 978-3-540-43761-1 . OCLC 851370272 .
- ^ Талебитоти, Р.; Шоджаифард, Миннесота; Ярмохаммадисатри, Садег (2015). «Оптимизация конструкции цилиндрического резервуара с использованием b-сплайновых кривых». Компьютер и жидкости . 109 : 100–112. doi : 10.1016/j.compfluid.2014.12.004 .
- ^ де Бур, с. 113.
- ^ де Бур, стр. 131.
- ^ де Бур, с. 134.
- ^ Ли, ETY (декабрь 1982 г.). «Упрощенная процедура расчета B-сплайна». Вычисление . 29 (4): 365–371. дои : 10.1007/BF02246763 . S2CID 2407104 .
- ^ Ли, 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 . дои : 10.1140/epjp/i2018-12042-x . S2CID 125665629 . )
- ^ Евгений Владимирович Шикин; Александр Иванович Плис (14 июля 1995 г.). Руководство по сплайнам для пользователя . ЦРК Пресс. стр. 96–. ISBN 978-0-8493-9404-1 .
- ^ Вернеке, Джози (1993). «8» . Наставник Inventor: программирование объектно-ориентированной 3D-графики с помощью Open Inventor, выпуск 2 (1-е изд.). Addison-Wesley Longman Publishing Co., Inc. Бостон, Массачусетс, США: ISBN 978-0201624953 .
- ^ де Бур, Глава XIV, с. 235.
- ^ Ганс, Питер; Гилл, Дж. Бернард (1984). «Сглаживание и дифференцирование спектроскопических кривых с использованием сплайн-функций». Прикладная спектроскопия . 38 (3): 370–376. Бибкод : 1984ApSpe..38..370G . дои : 10.1366/0003702844555511 . S2CID 96229316 .
- ^ Вичек, Мария; Нил, Шэрон Л.; Уорнер, Исайя М. (1986). «Фильтрация во временной области двумерных данных флуоресценции» . Прикладная спектроскопия . 40 (4): 542–548. Бибкод : 1986ApSpe..40..542V . дои : 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 страницы)
Внешние ссылки
[ редактировать ]- Вайсштейн, Эрик В. «B-Сплайн» . Математический мир .
- Руф, Йоханнес. «B-сплайны третьего порядка на неоднородной сетке» (PDF) . Архивировано из оригинала (PDF) 6 ноября 2013 г. Проверено 2 мая 2012 г.
- двумерный B-сплайн из numpy
- Интерактивные B-сплайны с JSXGraph
- TinySpline: C-библиотека с открытым исходным кодом и привязками для различных языков.
- Равномерные нерациональные B-сплайны, моделирование кривых в 2D-пространстве. Автор: Стефан Г. Бек
- B-Spline Editor by Shukant Pal