我需要对一大批三维点进行分区(使用C++)。这些点以二进制浮点数组的形式存储在硬盘上,文件通常大于10GB。我需要将数据分成小一些的子集,每个子集的大小都小于1GB。由于我需要对数据执行某些算法(例如对象检测),因此子集中的点仍应具有相同的邻域。
我想我可以使用KD-Tree进行分区。但是如果我无法将所有点加载到RAM中,该如何有效地构造KD-Tree?也许我可以将文件映射为虚拟内存。然后,我可以保存属于一个段的每个三维点的指针并将其存储在KD-Tree的节点中。这样行得通吗?还有其他的想法吗?
感谢您的帮助。希望您能理解这个问题 :D
我想我可以使用KD-Tree进行分区。但是如果我无法将所有点加载到RAM中,该如何有效地构造KD-Tree?也许我可以将文件映射为虚拟内存。然后,我可以保存属于一个段的每个三维点的指针并将其存储在KD-Tree的节点中。这样行得通吗?还有其他的想法吗?
感谢您的帮助。希望您能理解这个问题 :D