У меня есть точка помутнения, полученная с помощью фотограмметрии со спины человека. Я пытаюсь интерполировать его, чтобы получить обычную сетку, и для этого я использую scipy.interpolate
с хорошими результатами. Проблема в том, что функция, которую я использую (scipy.interpolate.griddata
), использует выпуклую оболочку точки облака в плоскости x,y, что дает в результате некоторые значения, которых нет на исходной поверхности, имеющей вогнутый периметр.
На следующем рисунке показана исходная точка облака слева (то, что отображается в виде горизонтальных линий, на самом деле представляет собой плотное облако точек в форме линии), результат, который griddata
дает мне в середине, и результат, который я хотел бы получить справа. -- своего рода "тень" точки облака на плоскости x,y, где несуществующие точки на исходной поверхности были бы нулями или Nans.
Я знаю, что могу удалить координату Z точки облака и проверить каждую позицию сетки на близость, но это слишком грубая сила, и я считаю, что это должно быть распространенной проблемой в приложениях облака точек. Другой возможностью может быть некоторая операция numpy для выполнения над облаком точек, поиск маски numpy или логического 2D-массива для «применения» к результату из griddata
, но я не нашел ни одной (эти операции немного выходят за рамки моего Numpy /Scipy знания).
Любое предложение?
Спасибо за чтение!