1

读取包含 ISO 卷的 0/1 值并将其写入布尔体素数组的黑白图像堆栈的最佳和低内存选项是什么?即 2k 平方像素的 2k 图像提供 800MB 的布尔值。

我开始编写一个 3D 布尔数组 boolean[z,y,x]... 但它不起作用?!:我需要一个 2D 数组 boolean[x,y] 数组(如何?)

我已经编写了一个程序,通过 X,Y 遍历图像堆栈以检测体积的边缘,即图像从 0 到 1 和从 1 到 0 变化的空间中的每个点,它给了我顶点以及泊松盘网格划分的对象法线。我现在还需要在 Z 中遍历,而不需要加载 2000 张图像 N 次。

体素总共可以达到 80 亿个体素。

我需要哪个?如何在 C/C#/JS 中声明数组?

感谢您的任何提示。

4

1 回答 1

2

挑战在于使用最小的数据类型来表示每个体素的开/关值。将其简化为 10x10x10 体素空间。

制作长度为 1000 的一维布尔数组很好,即

var myvoxels : boolean[]= new boolean[x*y*z];

然后使用以下功能访问它:

function boolreturn(x,y,z) : boolean
{
    return myvoxels[ z*10*10+y*10+x]

}

所以最后一个大小为 10x10x10 的体素的数组位置为 900 + 90 + 9 = 999。

它对 100 个体素和其中的 80 亿个体素起作用。

我认为它比使用一维数组更复杂,因为我已经转换了一个行进立方体代码,它将每个空间读取为模数和分/浮点数,以了解一个对象在一维数组中的位置,这可能会让人费神且缓慢3D 代码。以上应该很容易。

于 2017-01-08T02:05:02.387 回答