Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2010, 21:47
Новичок

Отправить личное сообщение для mikxael Посмотреть профиль Найти все сообщения от mikxael
 
Регистрация: 28.09.2010
Сообщений: 2

Подскажите реализацию 3D интерполяции
Здравствуйте. Может кто сталкивался с такой задачей. Нужно интепролировать значения функции заданной на трехмерной сетке в произвольных точках внутри и вблизи этой сетки. Решение типа ближайшего соседа не годится из-за недостаточной точности. Ищу исходники интерполяции на С/С++. Подскажите готовую библиотеку или любой другой код. Спасибо.
  #2  
Старый 28.09.2010, 22:45
гость

 
Сообщений: n/a

Ну, стандартный вроде прием для сглаживания - задаешь некую функцию K(x,y,z), называемую ядро. С потолка берешь, лишь бы гладкая была, неотрицательная, посимметричней и чтобы поскорее стремилась к нулю при удалении от (0,0,0).

Потом, когда нужно проинтерполировать в точке x0, y0, z0, то просто берешь сумму всех известных тебе значений функций в точках сетки с весами K(x[i] - x0, y[i] - y0, z[i] - z0), ну и нормализуешь на сумму весов. Т.е.

f(x0, y0, z0) = \frac{\sum K(x[i] - x0, y[i] - y0, z[i] - z0) * u[i]}{\sum K(x[i] - x0, y[i] - y0, z[i] - z0)},
где (x[i], y[i], z[i]) - координата i-й точки сетки, и u[i] - значение в ней.

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

Какие ядра брать. Ну это от данных зависит. Попробуй Ланкоша - http://en.wikipedia.org/wiki/Lanczos...ation_formulas
- хвалят его в image processing. Плюс с ним значения в точках сетки не изменятся после этой интерполяции-сглаживания. С другими ядрам это не обязательно так.
  #3  
Старый 29.09.2010, 09:27
Новичок

Отправить личное сообщение для mikxael Посмотреть профиль Найти все сообщения от mikxael
 
Регистрация: 28.09.2010
Сообщений: 2

Спасибо за совет. Так и сделаю.
  #4  
Старый 04.04.2011, 05:13
Гoсть

 
Сообщений: n/a

Сообщение от гость Посмотреть сообщение
f(x0, y0, z0) = \frac{\sum K(x[i] - x0, y[i] - y0, z[i] - z0) * u[i]}{\sum K(x[i] - x0, y[i] - y0, z[i] - z0)},
где (x[i], y[i], z[i]) - координата i-й точки сетки, и u[i] - значение в ней.
формула зовется Nadaraya-Watson estimator
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите алгоритм XTasy Математические алгоритмы (другое) 12 13.04.2011 00:56
Подскажите пожалуйста Math_Zero Реализация, исходники, языки 1 12.10.2009 16:39
Подскажите направление Flier Графы 10 23.04.2008 16:22
подскажите незарегистрированный Математические алгоритмы 0 24.05.2007 18:40
подскажите с исходником se7en Реализация, исходники, языки 1 04.10.2006 08:54