Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
B-сплайн с контрольными точками / контрольным многоугольником и отмеченными кривыми компонентов

В математическом подполе численного анализа , B-сплайн или основой сплайн является сплайном функция , которая имеет минимальную поддержку в отношении данной степени , гладкость и области раздела. Любая сплайн-функция заданной степени может быть выражена как линейная комбинация B-сплайнов этой степени. Кардинальные B-шлицы имеют узлы, равноудаленные друг от друга. B-сплайны могут использоваться для аппроксимации кривой и численного дифференцирования экспериментальных данных.

В системе автоматизированного проектирования и компьютерной графики сплайн-функции строятся как линейные комбинации B-сплайнов с набором контрольных точек.

Введение [ править ]

Термин «B-сплайн» был придуман Исаак Шёнберг [1] и является аббревиатурой основе сплайна. [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-сплайны порядка 1 определяются следующим образом:

Они удовлетворяют для всех, потому что для любого точно одно из , а все остальные равны нулю.

B-сплайны более высокого порядка определяются рекурсией

куда

Свойства [ править ]

Функция B-сплайна - это комбинация гибких полос, которая проходит через ряд точек, называемых контрольными точками, и создает плавные кривые. Эти функции позволяют создавать сложные формы и поверхности и управлять ими с помощью ряда точек. B-сплайн и функции Безье широко применяются в методах оптимизации формы. [4]

B-сплайн порядка - это кусочно-полиномиальная функция степени от переменной . Он определяется по местоположениям , называемым узлами или точками останова, которые должны быть в порядке убывания . B-сплайн вносит вклад только в диапазоне между первым и последним из этих узлов и равен нулю в других местах. Если каждый узел отделен от своего предшественника на одинаковое расстояние (где ), вектор узла и соответствующие B-сплайны называются «равномерными» (см. Кардинальный B-сплайн ниже).

Для каждого конечного узлового интервала, где он не равен нулю, B-сплайн является полиномом степени . B-сплайн - это непрерывная функция в узлах. [примечание 1] Когда все узлы, принадлежащие B-сплайну, различны, его производные также непрерывны с точностью до производной степени . Если узлы совпадают при заданном значении , непрерывность производного порядка уменьшается на 1 для каждого дополнительного совпадающего узла. B-сплайны могут иметь общие подмножества своих узлов, но два B-сплайна, определенные над одними и теми же узлами, идентичны. Другими словами, B-сплайн однозначно определяется своими узлами.

Различают внутренние узлы и конечные точки. Внутренние узлы покрывают интересующую вас область. Поскольку один B-сплайн уже распространяется на узлы, из этого следует, что внутренние узлы должны быть расширены с конечными точками на каждой стороне, чтобы обеспечить полную поддержку первого и последнего B- шлицы, которые влияют на внутренние интервалы узлов. Значения конечных точек не имеют значения, обычно первый или последний внутренний узел просто повторяется.

Полезность B-сплайнов заключается в том, что любую сплайн-функцию порядка на данном наборе узлов можно выразить как линейную комбинацию B-сплайнов:

B-сплайны играют роль базисных функций для функции сплайна пространства, отсюда и название. Это свойство следует из того факта, что все части имеют одинаковые свойства непрерывности в пределах их индивидуального диапазона поддержки в узлах. [5]

Выражения для полиномиальных частей могут быть получены с помощью рекурсивной формулы Кокса – де Бора [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.

См. Распределение Ирвина – Холла. # Особые случаи алгебраических выражений для кардинальных B-сплайнов степени 1–4.

P-шлиц [ править ]

Термин P-spline означает «B-spline со штрафом». Это относится к использованию B-сплайнового представления, в котором коэффициенты определяются частично данными, которые необходимо подогнать , и частично дополнительной функцией штрафа, которая направлена ​​на обеспечение гладкости во избежание переобучения . [12]

Двумерные и многомерные P-сплайновые аппроксимации данных могут использовать произведение матриц Face-splitting для минимизации вычислительных операций. [13]

Производные выражения [ править ]

Производная B-сплайна степени k - это просто функция B-сплайна степени k -1. [14]

Отсюда следует, что

который показывает, что существует простая взаимосвязь между производной сплайн-функции и B-сплайнами степени на единицу меньше.

Моменты одномерных B-сплайнов [ править ]

Одномерные B-сплайны, т. Е. B-сплайны, в которых положения узлов лежат в одном измерении, могут использоваться для представления одномерных функций плотности вероятности . Примером является взвешенная сумма базисных функций B-сплайна порядка , каждая из которых нормализована по площади до единицы (т.е. не оценивается напрямую с использованием стандартного алгоритма де-Бура).

и с ограничением постоянной нормализации . К-й сырец момент нормализованной B-сплайн может быть записан в виде среднего Дирихле Карлсона , [15] , который , в свою очередь , может быть решен точно через интеграл контура и итеративную сумму [16] , как

с

и . Здесь представляет вектор с положениями узлов и вектор с соответствующими кратностями узлов. Таким образом, можно точно вычислить любой момент функции плотности вероятности, представленной суммой базисных функций B-сплайна, не прибегая к численным методам.

Отношение к кусочно-составному Безье [ править ]

Кривая Безье также является полиномиальной кривой определима с помощью рекурсии из нижних кривых степени одного и того же класса и кодируются в терминах контрольных точек, но основное различие в том , что все члены в рекурсии для сегмента кривой Безье имеют одинаковую область определения (обычно ), в то время как опоры двух членов в B-сплайн-рекурсии различны (внешние подынтервалы не являются общими). Это означает, что кривая Безье степени, заданной контрольными точками, состоит примерно изв основном независимые сегменты, тогда как B-сплайн с теми же параметрами плавно переходит от подынтервала к подынтервалу. Чтобы получить что-то сопоставимое с кривой Безье, нужно наложить условие гладкости на переходы между сегментами, что приведет к некоторому виду сплайна Безье (для которого многие контрольные точки будут определяться требованием гладкости).

Кусочно / композит кривая Безье представляет собой серию кривых Безье , соединенных с , по меньшей мере непрерывности С0 (последней точки одной кривой совпадает с исходной точкой следующей кривой). В зависимости от приложения могут быть добавлены дополнительные требования к гладкости (например, непрерывность C1 или C2). [17] Непрерывные кривые C1 имеют идентичные касательные в точке излома (где пересекаются две кривые). Непрерывные кривые C2 имеют одинаковую кривизну в точке излома. [18]

Чтобы получить непрерывность C2, кривая Безье теряет локальный контроль, потому что для обеспечения непрерывности C2 контрольные точки зависят друг от друга. Если движется одна контрольная точка, необходимо переоценить весь сплайн. B-сплайны имеют как непрерывность C2, так и локальное управление, но они теряют свойство интерполяции кусочного Безье. [19]

Подгонка кривой [ править ]

Обычно при подборе кривой набор точек данных соответствует кривой, определяемой некоторой математической функцией. Например, обычные типы аппроксимации кривой используют полином или набор экспоненциальных функций . Когда нет теоретической основы для выбора функции аппроксимации, кривая может быть аппроксимирована сплайн-функцией, составленной из суммы B-сплайнов, с использованием метода наименьших квадратов . [20] [примечание 2] Таким образом, целевая функция для наименее минимизации квадратов, сплайн для функции степени к ,

W (x) - это вес, а y (x) - исходное значение в x . Коэффициенты - это параметры, которые необходимо определить. Значения узлов могут быть фиксированными или их также можно рассматривать как параметры.

Основная трудность при применении этого процесса заключается в определении количества используемых узлов и их расположения. де Бур предлагает различные стратегии решения этой проблемы. Например, расстояние между узлами уменьшается пропорционально кривизне (2-я производная) данных. [ необходима цитата ] Было опубликовано несколько приложений. Например, было исследовано использование B-сплайнов для аппроксимации одиночных кривых Лоренца и Гаусса . Рассчитаны оптимальные сплайн-функции степеней 3-7 включительно, основанные на симметричном расположении узлов 5, 6 и 7 узлов, и метод применен для сглаживания и дифференцирования спектроскопических кривых. [21]В сопоставимом исследовании двумерная версия фильтрации Савицкого-Голея и сплайн-метод дали лучшие результаты, чем скользящее среднее или фильтрация Чебышева . [22]

Компьютерный дизайн и компьютерная графика [ править ]

В приложениях для автоматизированного проектирования и компьютерной графики сплайн-кривую иногда представляют как параметрическую кривую некоторого реального параметра . В этом случае кривую можно рассматривать как две или три отдельные координатные функции , или . Координатные функции , и являются каждым сплайн функции, с общим набором значений узлов .

Поскольку B-сплайны образуют базисные функции, каждая из координатных функций может быть выражена как линейная сумма B-сплайнов, поэтому мы имеем

Веса , и могут быть объединены с образованием точек в 3-й пространстве. Эти точки обычно называются контрольными точками.

В обратном порядке последовательность контрольных точек, значений узлов и порядка B-сплайна определяет параметрическую кривую. Такое представление кривой контрольными точками имеет несколько полезных свойств:

  1. Контрольные точки определяют кривую. Если все контрольные точки каким-либо образом преобразовываются вместе, например, перемещаются, вращаются, масштабируются или перемещаются с помощью любого аффинного преобразования, соответствующая кривая преобразуется таким же образом.
  2. Поскольку B-сплайны не равны нулю только для конечного числа узловых интервалов, если одна контрольная точка перемещается, соответствующее изменение параметрической кривой находится чуть выше диапазона параметров небольшого числа узловых интервалов.
  3. Потому что , и всегда , кривая остается внутри ограничивающей рамки контрольных точек. Кроме того, в некотором смысле кривая в целом следует за контрольными точками.

Менее желательной особенностью является то, что параметрическая кривая не интерполирует контрольные точки. Обычно кривая не проходит через контрольные точки.

NURBS [ править ]

NURBS-кривая - полиномиальная кривая, заданная в однородных координатах (синий цвет) и ее проекция на плоскость - рациональная кривая (красный)

В автоматизированном проектировании , автоматизированном производстве и компьютерной графике мощным расширением B-сплайнов являются неоднородные рациональные B-сплайны (NURBS). NURBS - это, по сути, B-сплайны в однородных координатах . Как и B-сплайны, они определяются своим порядком, вектором узла и набором контрольных точек, но в отличие от простых B-сплайнов, каждая контрольная точка имеет вес. Когда вес равен 1, NURBS - это просто B-сплайн, и как таковой NURBS обобщает как B-сплайны, так и кривые и поверхности Безье , основное различие заключается во взвешивании контрольных точек, которое делает кривые NURBS «рациональными».

Оценивая NURBS при различных значениях параметров, кривую можно проследить в пространстве; аналогично, оценивая поверхность NURBS при различных значениях двух параметров, поверхность может быть представлена ​​в декартовом пространстве.

Как и B-сплайны, контрольные точки NURBS определяют форму кривой. Каждая точка кривой вычисляется путем взвешивания суммы нескольких контрольных точек. Вес каждой точки зависит от управляющего параметра. Для кривой степени d влияние любой контрольной точки отлично от нуля только в интервале d +1 (узлы) пространства параметров. В пределах этих интервалов вес изменяется в соответствии с полиномиальной функцией (базисными функциями) степени d . На границах интервалов базисные функции плавно уходят в нуль, причем гладкость определяется степенью полинома.

Узловой вектор - это последовательность значений параметров, которая определяет, где и как контрольные точки влияют на кривую NURBS. Количество узлов всегда равно количеству контрольных точек плюс градус кривой плюс один. Каждый раз, когда значение параметра входит в новый диапазон узлов, новая контрольная точка становится активной, а старая контрольная точка отбрасывается.

Кривая NURBS имеет следующий вид: [23]

Обозначения здесь следующие. u - независимая переменная (вместо x ), k - количество контрольных точек, N - это B-сплайн (используется вместо B ), n - степень полинома, P - контрольная точка, а w - вес. Знаменатель - это нормализующий коэффициент, который дает единицу, если все веса равны единице.

Это принято писать как

в котором функции

известны как рациональные базисные функции.

NURBS-поверхность получается как тензорное произведение двух NURBS-кривых с использованием двух независимых параметров u и v (с индексами i и j соответственно): [24]

с

как рациональные базисные функции.

См. Также [ править ]

  • Кривая Безье
  • Коробчатый шлиц
  • Алгоритм де Бура
  • I-шлиц
  • M-шлиц
  • Сплайн вейвлет
  • Т-образный шлиц

Примечания [ править ]

  1. ^ Строго говоря, B-сплайны обычно определяются как непрерывные слева.
  2. ^ де Бур приводит процедуры FORTRAN для аппроксимации экспериментальных данных методом наименьших квадратов.

Ссылки [ править ]

  1. ^ де Бур, стр. 114
  2. ^ Gary D. Нотт (2000), Интерполяция кубическими сплайнами . Springer. п. 151
  3. ^ Хартмут., Prautzsch (2002). Безье и методы B-сплайна . Математика и визуализация. Бём, Вольфганг., Палушны, Марко. Берлин, Гейдельберг: Springer Berlin Heidelberg. п. 63. DOI : 10.1007 / 978-3-662-04919-8 . ISBN 9783662049198. OCLC  851370272 .
  4. ^ Talebitooti, ​​R .; Shojaeefard, MH; Ярмохаммадисатри, Садех (2015). «Оптимизация формы цилиндрического резервуара с использованием b-шлицевых кривых». Компьютер и жидкости . 109 : 100–112. DOI : 10.1016 / j.compfluid.2014.12.004 .
  5. ^ де Бур, стр 113.
  6. de Boor, p 131.
  7. ^ де Бур, стр. 131
  8. ^ де Бур, стр. 134.
  9. ^ Ли, ETY (декабрь 1982). «Упрощенная процедура вычисления B-сплайна». Вычислительная техника . 29 (4): 365–371. DOI : 10.1007 / BF02246763 .
  10. ^ Ли, ETY (1986). «Комментарии к некоторым алгоритмам B-сплайнов». Вычислительная техника . 36 (3): 229–238. DOI : 10.1007 / BF02240069 .
  11. ^ де Бур, стр 322.
  12. ^ Эйлерс, РНС и Маркса, BD (1996). Гибкое сглаживание с помощью B-сплайнов и штрафов (с комментариями и репликой). Статистическая наука 11 (2): 89-121.
  13. ^ Эйлерс, Пол ХК; Маркс, Брайан Д. (2003). «Многомерная калибровка с температурным взаимодействием с использованием двумерной регрессии сигнала со штрафами». Хемометрия и интеллектуальные лабораторные системы . 66 (2): 159–174. DOI : 10.1016 / S0169-7439 (03) 00029-7 .
  14. ^ де Бур, стр. 115
  15. ^ Карлсон, Британская Колумбия (1991). «B-сплайны, гипергеометрические функции и средние Дирихле» . Журнал теории приближений . 67 (3): 311–325. DOI : 10.1016 / 0021-9045 (91) 90006-V .
  16. ^ Glüsenkamp, Т. (2018). «Вероятностная обработка неопределенности от конечного размера взвешенных данных Монте-Карло». EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Bibcode : 2018EPJP..133..218G . DOI : 10.1140 / epjp / i2018-12042-х .)
  17. Евгений В. Шикин; Александр И. Плис (14 июля 1995 г.). Справочник по сплайнам для пользователя . CRC Press. С. 96–. ISBN 978-0-8493-9404-1.
  18. ^ Вернеке, Джози (1993). «8» . Наставник по Inventor: программирование объектно-ориентированной трехмерной графики с помощью Open Inventor, выпуск 2 (1-е изд.). Бостон, Массачусетс, США: ISBN Addison-Wesley Longman Publishing Co., Inc. 978-0201624953.
  19. Zorin, Denis (2002), Кривые Безье и B-сплайны, Blossoming (PDF) , Нью-Йоркский университет , получено 4 января 2015 г.
  20. ^ де Бур, Глава XIV, стр. 235
  21. ^ Ганс, Питер; Гилл, Дж. Бернард (1984). «Сглаживание и дифференцирование спектроскопических кривых с помощью сплайн-функций». Прикладная спектроскопия . 38 (3): 370–376. Bibcode : 1984ApSpe..38..370G . DOI : 10.1366 / 0003702844555511 .
  22. ^ Vicsek, Мария; Neal, Sharon L .; Уорнер, Исайя М. (1986). «Фильтрация данных двумерной флуоресценции во временной области» . Прикладная спектроскопия . 40 (4): 542–548. Bibcode : 1986ApSpe..40..542V . DOI : 10.1366 / 0003702864508773 .
  23. ^ Piegl и культиватор, глава 4, сек. 2
  24. ^ Piegl и культиватор, глава 4, сек. 4

Процитированные работы

  • Карл де Бур (1978). Практическое руководство по сплайнам . Springer-Verlag. 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.

Внешние ссылки [ править ]

  • Вайсштейн, Эрик В. "B-Spline" . MathWorld .
  • Руф, Йоханнес. «B-сплайны третьего порядка на неоднородной сетке» (PDF) . Архивировано из оригинального (PDF) 06.11.2013 . Проверено 2 мая 2012 .
  • двумерный B-сплайн от numpy
  • Интерактивные B-сплайны с JSXGraph
  • TinySpline: C-библиотека с открытым исходным кодом с привязками для разных языков
  • Равномерные нерациональные B-сплайны, Моделирование кривых в 2D пространстве. Автор: Стефан Г. Бек
  • Редактор B-Spline от Shukant Pal