Бикубическая интерполяция для нерегулярных сеток?

Я работаю над проектом, в котором у меня есть набор известных измерений (x,y,z,a) и вход (z,a). Мне нужно иметь возможность интерполировать (x,y,z), чтобы я мог получить список возможных (x,y) координат из заданного z.

Я смотрел на бикубическую интерполяцию, но я могу найти только примеры, относящиеся к регулярным сеткам, и мои (x,y) пары наверняка не являются регулярными.

В основном я ищу некоторые рекомендации по алгоритмам / моделям для достижения этой цели. Я рассматриваю триангулированную нерегулярную сеть, которая привлекательна, потому что она разбивается на плоскости, которые легко определить (x,y) из заданного Z. Но я хотел бы немного больше изящества.

Я знаю, это звучит как домашнее задание, это не так.

Эффективность не является проблемой.

Спасибо!

2 ответа

Решение

Я фактически использовал триангуляцию Делоне, чтобы разбить поля на 3-мерные поверхности X,Y,Z с Идентификатором. Затем, учитывая набор пар (Identity,Z), я формирую линию поля от каждой поверхности, и из этих линий вычисляем многоугольник, образованный из самых коротких ребер между линиями. Это дает мне область потенциальных координат x,y.

Посмотрите на Kd-дерево. Сначала они получают набор рассеянных точек в 2d или 3d или 10d, а затем отвечают на вопросы типа "найди 3 точки, ближайших к P".

Ваши запросы z a пары? Например, учитывая кучу цветных булавок на карте, таблицу x y size colorможно поставить все [x y] в дерево кд, затем попросите булавки рядом с данным x0 y0,
Или можно поставить все [size color[ в дереве, затем попросите булавки с аналогичным размером и цветом. (Обратите внимание, что большинство реализаций дерева kd используют евклидову метрику, поэтому sqrt( (size - size2)^2 + (color - color2)^2) должно иметь смысл.)

В Python я настоятельно рекомендую scipy.spatial.cKDTree.

Смотрите также ТАК вопросы / с тегом / kdtree.

Другие вопросы по тегам