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

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

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

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

Я знаю, что это похоже на домашнее задание, это не так.

Эффективность не имеет значения.

Спасибо!


person FlyingStreudel    schedule 04.05.2011    source источник


Ответы (2)


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

person FlyingStreudel    schedule 13.05.2011

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

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

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

См. Также SO questions / tagged / kdtree.

person denis    schedule 06.05.2011
comment
Это может оказаться полезным, я в основном буду собирать такие данные, как [x, y, размер, идентификатор], а затем, учитывая набор пар (размер, идентификатор): получить похожие пары (x, y). Я посмотрю и дам вам знать, как это получается, спасибо! Хм, многие шестеренки только начали крутиться, спасибо вдвойне! - person FlyingStreudel; 06.05.2011
comment
Масштабируйте размеры и идентификаторы примерно до одного и того же диапазона, так что sqrt ((size - size2) ^ 2 + (id - id2) ^ 2) имеет смысл. И выведите ближайшие, скажем, 3 xy к (size, id) s, и убедитесь, что они имеют смысл. - person denis; 07.05.2011