我有一组3D点数,大约有100万点。我希望用matlab可视化这些。
我尝试过以下功能:
plot3
scatter3
但他们都非常迟钝。有没有更有效的方法来在matlab中可视化这个级别的点?也许一种方法来点对点?
如果没有,任何人都可以建议使用插件甚至是不同的程序来显示3D点数吗?
答案 0 :(得分:5)
如果您希望所有百万+积分都显示在情节中,无论您使用哪种插件/程序,都会遇到效率问题。我的建议是下采样。在每个其他点或每第n个点使用plot3或scatter3函数,直到得到一个不缓慢的数字。只要数据的方差不是天文数字,下采样一点不应影响点的整体分布(假设你有一百万+点)。任何 能够显示那么多数据而不会缓慢的软件很可能是下采样/分级或使用某种插值技术(所以你可以控制它)。
答案 1 :(得分:3)
fscatter3,做你喜欢的事。
答案 2 :(得分:2)
是否有特定的理由让它实际显示多个点?
我用Google搜索了一下,发现一些有类似问题的人(有人建议将Avizo作为替代程序,但我从未使用过它):
如果您对数据密度更感兴趣,另一种解决方案是生成直方图:
答案 3 :(得分:2)
我事先大致知道您正在寻找的功能的坐标,尝试通过简单的直通过滤器传递云,这实际上是您的点云。即如果您知道该特征是在x坐标处> 5,删除所有带x坐标的点<&lt; 5。
这个过滤器可以为第一个协调实现 data = data(data(1,:)&gt; 5,:); 只要您的3d数据存储在n×3矩阵中。
这与下采样一起可以帮助你。如果您仍然发现性能滞后,请考虑在PointCloudLibrary中使用类似PCD查看器的内容,请检查页面的下半部分 http://pointclouds.org/documentation/overview/visualization.php
这是一个可以从matlab启动的独立应用程序。我发现它的性能远远好于缓慢的matlab绘图工具。
答案 4 :(得分:1)
对于任何有兴趣的人,我最终找到了一个名为Cloud Compare的Point云可视化工具。它非常快,允许选择和分割以及点云过滤。