Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过复制点云、放大点云并使其位于原始云的中心,使点云的法线指向外部_Python_Transformation_Normals_Point Clouds_Simplification - Fatal编程技术网

Python 通过复制点云、放大点云并使其位于原始云的中心,使点云的法线指向外部

Python 通过复制点云、放大点云并使其位于原始云的中心,使点云的法线指向外部,python,transformation,normals,point-clouds,simplification,Python,Transformation,Normals,Point Clouds,Simplification,我正在写一篇关于点云减少的本科生论文 我需要法线指向外面。我已经为此挣扎了一段时间了 这就是我试图做到的: 我有一个物体的点云,特别是斯坦福兔子。我创建了这个对象的放大版本,并将较小的版本放在其中。然后使法线指向外部“较大”对象的方向 我不能把较大的物体放在较小的物体上而不让它们接触(兔子的耳朵重叠)。任何人都知道我如何使较小的物体适合较大的物体 以下是我目前的代码: import numpy as np #IMPORT THE OBJECT POINT CLOUD c= np.genfromt

我正在写一篇关于点云减少的本科生论文

我需要法线指向外面。我已经为此挣扎了一段时间了

这就是我试图做到的: 我有一个物体的点云,特别是斯坦福兔子。我创建了这个对象的放大版本,并将较小的版本放在其中。然后使法线指向外部“较大”对象的方向

我不能把较大的物体放在较小的物体上而不让它们接触(兔子的耳朵重叠)。任何人都知道我如何使较小的物体适合较大的物体

以下是我目前的代码:

import numpy as np
#IMPORT THE OBJECT POINT CLOUD
c= np.genfromtxt(str('rabbitsmall') + '.txt',autostrip=True)

#Determine the x centre of the original object
xmax = np.amax(c[:,0])
xmin = np.amin(c[:,0])
tx = xmin+(xmax-xmin)/4

#Determine the y centre of the original object
ymax = np.amax(c[:,1])
ymin = np.amin(c[:,1])
ty =ymin+(ymax-ymin)/4

#Determine the z centre of the original object
zmax = np.amax(c[:,2])
zmin = np.amin(c[:,2])
tz = zmin+(zmax-zmin)/2


#CREATE A LARGER VERSION OF THE OBJECT
C = np.zeros((len(c),3))

for i in range(0,len(c)):
               C[i][0]= 1.2*c[i][0]
               C[i][1]= 1.2*c[i][1] 
               C[i][2]= 1.2*c[i][2]

#Determine the x centre of the larger object
Xmax = np.amax(C[:,0])
Xmin = np.amin(C[:,0])
TX = Xmin+(Xmax-Xmin)/4

#Determine the y centre of the larger object
Ymax = np.amax(C[:,1])
Ymin = np.amin(C[:,1])
TY =Ymin+(Ymax-Ymin)/4

#Determine the z centre of the larger object
Zmax = np.amax(C[:,2])
Zmin = np.amin(C[:,2])
TZ = Zmin+(Zmax-Zmin)/2

#TRANSLATE THE LARGER OBJECT TO BE OVER THE SMALLER OBJECT. IE THE CENTRES ARE AT THE SAME PLACE
for i in range(0,len(c)):
               C[i][0]= C[i][0]-(TX-tx)
               C[i][1]= C[i][1]-(TY-ty)
               C[i][2]= C[i][2]-(TZ-tz)


np.savetxt('rabbitlarger.txt',C)

第一:你看过你的输出了吗,也就是说,兔子真的被你想要的方式覆盖了吗


第二:您缺少确定法线的部分。您是否在寻找最近的点,因此交叉点是一个问题?更好的解决方案可能是匹配两个点云中的精确点,并通过这些点云确定法线。

嗨,多恩赫,谢谢你的回答。我想把大兔子直接放在小兔子的上面。想象一个不同层次的matryoshka dol。我可以完美地确定法线(我有单独的代码),但是我不能让它们指向任何地方,在某些情况下,比如兔子的底部,它们指向内部,我计划让它们指向外层的方向。问题是让外层与内层完美贴合。谢谢