Сейчас я пытаюсь ускорить преобразование глубины в облако точек в python. На данный момент код выглядит так:
color_points = []
for v in range(depth.shape[1]):
for u in range(depth.shape[0]):
z = depth[u,v] / self.scaling_factor
if z == 0: # here np.where can be used prior to the loop
continue
x = (u - self.center_x) * z / self.focalLength # u and v are needed, no clue how to do this
y = (v - self.center_y) * z / self.focalLength
color_points.append([x, y, z])
Моя основная проблема в том, что я не знаю никакой функции (например, np.where), которая бы ускорила цикл через массив изображений, пока все еще с индексами пикселя (например, u и v). Индексы необходимы, поскольку расчет зависит от расположения пикселя на датчике.
Cython может ускорить его, но я все же думаю, что должна быть лучшая функция, доступная в пределах NumPy .
Спасибо за любую помощь!
Edit: Добавлен расчет Z в функцию. Коэффициент масштабирования зависит от формата, в котором вы получаете изображение глубины. В моем случае я получаю глубину в [мм] и конвертирую ее в метры.