yahuiliu99/PointConT

如何可视化每个阶段聚类的效果?

Closed this issue · 6 comments

您好! 我非常想知道论文中图6是如何画的呀?特别是怎样用相同类颜色去画同一蔟的点云?
1703599637041

您好!论文中的点云可视化都是用Mitsuba渲染的,具体代码可以参考PointFlowRenderer,可以自己设置颜色;
关于如何用相同类颜色去画同一簇的点云,我这边是预先将数据经过网络,保存每一阶段的聚类索引,然后对每个簇设置一个颜色(随机),对簇内的每个点进行渲染上色

非常感谢您耐心的回复!点云可视化用Mitsuba渲染按照步骤倒是没问题,但是我对后面有几点有疑惑:
(1)您说的聚类索引,按照我的理解,请问是图中的部分吗?
1703766725694
(2)如果上述理解无误的话,该如何给每个蔟设置一个颜色呢?这部分请问可以贴代码让我理解下吗?

(1) 对,是图中红圈部分,单独保存下来,假设保存成idx.npy,需要rearrange. (S = num_clusters * each_cluster_size)

(2) 看下面这段代码,是对每一个点都使用不同color

for i in range(pcl.shape[0]):
    color = colormap(pcl[i,0]+0.5,pcl[i,1]+0.5,pcl[i,2]+0.5-0.0125)
    xml_segments.append(xml_ball_segment.format(pcl[i,0],pcl[i,1],pcl[i,2], *color))

所以给每个簇设置颜色,只需每个簇使用同一colormap就好,双重for循环搞定~

非常谢谢您详细的指导!

但我还有一个问题,保存的索引维度是B h S(nl*ls),但是实际渲染的点是xyz3维坐标。如果是直接渲染这个索引又如何投影到3维呀?在这里我用的每个阶段下采样的pos作为坐标,取最大的head,并按照保存的索引去渲染该点。不知道这样是不是符合您的意思哈?如有不正确的地方,期待您的指正

这是渲染颜色的代码
1703820923952

这是实际渲染的效果
5bdb69b30138394404e3ed07b4636c8

对,是在xyz3维坐标 (每个阶段下采样的pos) 里去索引保存的idx, 但是你的这个代码里pcl[i*j, 0]表示是不对的,应该是pcl[idx[i][j], 0]才能对应第i簇的第j个点。

太感谢您的解释了!
h索引我保存错了,习惯性取max,应该是 torch.argmax,所以才导致上述渲染效果缺失很多;其次索引的方式也不对。
Anyway, 很感谢您及时的解答,送你一个小飞机,祝您生活愉快,身体健康~
image