# Geometry ## point cloud!!! open3d.data.PointCloud内部数据: ``` | Data descriptors defined here: | | colors | ``float64`` array of shape ``(num_points, 3)``, range ``[0, 1]`` , use ``numpy.asarray()`` to access data: RGB colors of points. | | covariances | ``float64`` array of shape ``(num_points, 3, 3)``, use ``numpy.asarray()`` to access data: Points covariances. | | normals | ``float64`` array of shape ``(num_points, 3)``, use ``numpy.asarray()`` to access data: Points normals. | | points | ``float64`` array of shape ``(num_points, 3)``, use ``numpy.asarray()`` to access data: Points coordinates. | ``` ### Voxel downsampling!!! 可用于减少计算量。 ### crop point cloud!!! 用一个立体的多边形polygon(用一个json数据描述)对点云做裁剪。这个json数据的规则呢? ### Convex hull!!! ### DBSCAN clustering 对点云聚类,给每个点加上一个标签属性,-1表示噪点。参数:同类别中相邻点的距离、一个类别最少包含多少个点。 计算量大! ### Plane segmentation 找到潜在的平面,把点云中各个点分类到不同的平面上。系用最小二乘法近似。 ### planar patch detection 类似上一条,但找到的不是无限的平面而是平的有边界的“片”。 ### Hidden point removal 在某个视角查看点云时,把按理说会在点云所代表的物体的背面的那些点去掉。 ## mesh ### mesh filtering 对mesh表面做滤波,效果可以是让mesh表面变得光滑一些。 ### Sampling 对mesh表面采样形成点云。 ### Mesh subdivision 把各个三角形拆成更小的三角形,从而让mesh表面更圆滑。 ### Mesh simplification 把mesh表面三角形变大,从而让mesh表面更粗糙更简单。 ### Connected components 把各个三角形按连通与否分组。进而能够知道每个组的大小。 ## Point cloud outlier removal 去除点云中的噪声 ## Voxelization 点云和mesh都可以素格化。 进而可以知道给定点是否在素格以内。 ### voxel carving 用点云和mesh得到的素格都在物体表面。用深度图则可以carve出实心的一堆素格。 ## Surface reconstruction 就是从点云得到mesh。 ### alpha shapes!!!! 点云内部也可以挖空。 得到的mesh可能不封闭。 ### ball pivoting!!! 要求点云有法线(normals)信息。 封闭???? ### Poisson surface reconstruction 要求点云有法线(normals)信息。 得到的mesh可能不封闭。 ### Normal estimation 用于给点云加上法线信息。可以用一个方法使各点的法线协调起来。 ## Ray Casting 创建一个场景,里边放些几何物,设置一个光线的远点和方向,能得到光线与几何物的交汇点。 ## Distance Queries 用于知道给定的一个点到mesh的最短距离,以及这个点是否在mesh内部。!!!! ## python interface 用help(o3d.xxx.yyy)获取某个API的文档。!!! ## Working with Numpy # Visualization ## interactive_visualization.py