我有两组点A和B。
我想找到B中所有在r到A一定范围内的点,如果A中至少有一个点a到b的(欧几里德)距离,那么B中的点b就在r到A的范围内等于或小于 r。
两组点中的每一个都是一组连贯的点。它们是从两个非重叠对象的体素位置生成的。
在 1D 中这个问题相当简单:[min( A )- r max( A )+ r ]内的B的所有点
但我是3D的。
做这个的最好方式是什么?
我目前使用一些 knn 算法(即 matlab 的 rangesearch)重复搜索A中的所有点B中的所有点,然后合并所有这些集合。但我觉得应该有更好的方法来做到这一点。我更喜欢matlab中的高级/矢量化解决方案,但伪代码也很好:)
我还想过将所有点写入图像并在半径为 r 的对象 A 上使用图像膨胀。但这听起来像是一个相当大的开销。