Получите только «действительные» точки при 2D-интерполяции точки помутнения с помощью Scipy/Numpy

У меня есть точка помутнения, полученная фотограмметрией со спины человека. Я пытаюсь интерполировать его, чтобы получить регулярную сетку, и для этого я использую scipy.interpolateс хорошими результатами. Проблема в том, что :функция, которую я использую (scipy.interpolate.griddata), использует выпуклую оболочку точки облака в плоскости x, y, что дает в результате некоторые значения, которых нет на исходной поверхности, имеющей вогнутый периметр..

На следующем рисунке показана исходная точка облака слева (то, что отображается в виде горизонтальных линий, на самом деле представляет собой плотную линию -облако точек в форме ), результат, который griddataдает мне посередине, и результат, который я хотел бы получить в правильном --виде «тени» точки облака на плоскости x, y, где не -существующие точки на исходной поверхности были бы нулями или Nans.

enter image description here

Я знаю, что могу удалить координату Z точки облака и проверить каждую позицию сетки на близость, но это слишком грубая -сила, и я полагаю, что это должно быть распространенной проблемой в точечных -облачных приложениях. Другой возможностью может быть некоторая операция numpy для выполнения над облаком точек -, поиск маски numpy или логического 2D-массива -для «применения» к результату из griddata, но я не нашел никаких (эти операции немного выходят за рамки моих знаний Numpy/Scipy ).

Есть предложения?

Спасибо за внимание!

6
задан heltonbiker 4 May 2012 в 21:07
поделиться