LINUX.ORG.RU
ФорумTalks

[математикам][need help] Аппроксимация симплекс-сплайнами


0

3

Бьюсь уже с месяц, никак не могу найти нормальной литературы. Везде - определения, теоремы, доказательства. А мне нужен просто алгоритм.

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

// Уже голова пухнет от всех этих дурацких американских математических обозначений...

☆☆☆☆☆

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

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

olegsov
()
Ответ на: комментарий от olegsov

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

И ладно бы дело было только в триангуляции: непонятно, как вообще эти самые сплайны задать алгоритмически...

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Zhbert

Не ругайся, тут дети!

:) Дык, детей вроде в talks не пускают.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от olegsov

Если бы все было так просто...

// Эта статья у меня уже есть, там тоже сплошные теоремы и доказательства. Алгоритма вычисления нет.

Eddy_Em ☆☆☆☆☆
() автор топика

в издательстве ДИАЛОГ-МИФИ выпускала книжечку по сплайнам для совсем тупеньких программистов с исходниками на фортране, вечерком загляну в нее, только вот что-то мне такой термин «симплекс-сплайны» не припоминается

hizel ★★★★★
()
Ответ на: комментарий от hizel

Сплайн - это элементарная функция, работать с ними очень просто, и во всяких бласах/джиэселях они давно есть. А вот симплекс-сплайн - это сплайн, заданный на симплексе (элементарной фигуре для (N-1)-мерного пространства), причем его коэффициенты зависят как от значений функции внутри симплекса, так и от самого симплекса.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

вкурил, думаю в книжке такого нет, там рассматривается двух и трехмерные случаи, наглядно на палцах

hizel ★★★★★
()

>Ткните меня, пожалуйста, в нормальную публикацию...

Роджерс Д. Адамс Дж. «Математические основы машинной графики».
§6-12 (стр. 446, ...) B-сплайн поверхности (Безье). Там подробное описание.

>А мне нужен просто алгоритм.

В конце книги на фортрановском псевдокоде subroutin'ы: bsplsurf и другие.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

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

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от hizel

>>книжечку по сплайнам для совсем тупеньких программистов

вечерком загляну в нее

Красиво сказал, чо.

mclaudt
()
Ответ на: комментарий от quickquest

Посмотрел. Про симплекс-сплайны там ничего нет. Зато можно хотя бы подтянуть уровень своей математики (алгебра у меня была на первом курсе, т.е. экзамен по ней я сдавал 12 лет назад - уже и подзабыл). Ну и можно будет подумать, как притянуть эти B-сплайны к симплексам.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от gizzka

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

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

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

gizzka ★★
()
Ответ на: комментарий от gizzka

В общих чертах - да. Есть изображение. Из него удаляются полезные области (заменяются, скажем, нулями). Затем по оставшимся точкам строится триангуляция (скажем, Делоне), а на этой триангуляции строятся симплекс-сплайны. Для расчета коэффициентов сплайнов используется критерий минимума абсолютного отклонения или же нормы в степени <1/2.

И вот проблема как раз в определении задающей матрицы для симплекс-сплайнов и в методе решения задачи. С методом, конечно, можно определиться (можно даже при помощи CUDA использовать рекуррентный способ расчета коэффициентов, хоть и считать будет с полдня), а вот как матрицу получить - неясно.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

А что просто построение плоскостей на треугольниках не даёт нужного результата? Для триангуляции Делоне должно неплохо смотреться.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Очень грубо. Нужна достаточно точная аппроксимация полиномами второй, а лучше - третьей степени.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

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

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.