【发布时间】:2013-09-05 14:10:40
【问题描述】:
嘿,我目前正在尝试从 3d 数组中提取信息,其中每个条目代表一个坐标,以便从中绘制一些东西。问题是数组非常大(并且有几个),这意味着我实际上无法绘制所有数组。
我想要完成的只是绘制外部坐标的表示,如果您愿意,可以绘制数组的外壳。该数组未满,可能有大的空白空间,只设置了几个像素,或者有大的像素数据集群组合在一起。我不知道期待什么样的形状(可能是一个简单的立方体,或者一个复杂的凹面网格),并且正在努力想出一种算法来有效地提取边界。该数组有效地将一组点存储在 3d 空间中。
我想创建 6 个 2d 网格(3d 阵列的每一侧一个),并为每个位置获取他们可以找到的最浅点,然后分别绘制它们。然而,正如我所说,这个 3d 形状可能是凹形的,这会给这种方法带来问题。想象一个顶部有一个圆圈的圆锥体(所说的圆圈比圆锥体的底部大)。虽然顶部和侧面的网格会从形状中获得正确的深度信息,但底部的网格会通过垂直线将底部与圆形连接起来,让我有效地松开圆锥形。
然后我想到逐个切片分析数组,并从切片数据创建 2 个网格。我相信这应该适用于任何类型的形状,但是我正在努力寻找一种能够准确地为我提供每个切片的边框信息的算法。再一次,如果你只是尝试从切片创建高度图,如果它们有任何凹面,你会遇到问题。我也通过了某种边缘跟踪算法,但是数组不提供连续数据,而且几乎可以肯定每个切片都没有连续的边缘。
我尝试研究体绘制,用于医学成像等,因为它处理与我所拥有的类似的问题,但实际上找不到任何我可以使用的东西。
如果有人对此类问题有任何经验,或有任何宝贵意见,请您指出正确的方向。
附:我更喜欢得到一个封闭的外壳表示,因此我早期的 2d 网格方法。但是,一种只为我提供 shell 点的方法,它们之间没有任何联系,这仍然会非常有帮助。
谢谢你, 泽
【问题讨论】:
标签: java 3d mesh edge-detection