неправильные оценки_normals с open3d?

#python #matlab #point-clouds

#python #matlab #облака точек

Вопрос:

Я пытаюсь вычислить нормали облака точек, образованного тремя плоскостями, каждая из которых выровнена с осью. В matlab функция pcnormals дает мне согласованный результат, в то время как когда я пытаюсь сделать то же самое с оценки_normals из open3d, результат неверен. Код находится здесь:

 import numpy as np
from open3d import *
pcd = read_point_cloud("D:Artificial.txt",format = 'xyz')
estimate_normals(pcd, search_param =  KDTreeSearchParamKNN(knn = 25))
x = np.concatenate((np.asarray(pcd.points),np.asarray(pcd.normals)),axis=1)
np.savetxt("D:ArtificialN_python.txt",x,delimiter=',') 
  

Я также пробовал использовать разные значения knn и search_param, но результат похож.

Я прилагаю изображения цветных облаков в соответствии с третьим компонентом нормального (красный -горизонтальный и зеленый -наклонный), рассчитанные с помощью matlab и python.

результат matlab:

введите описание изображения здесь

результат python:

введите описание изображения здесь

Кто-нибудь знает, с чем это может быть связано?