将黑白图像堆栈写入布尔3D体素数组?

时间:2017-01-07 21:02:59

标签: arrays unity3d geometry voxels

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

我开始写一个3D boolan数组boolean [z,y,x] ......它不起作用?!:我需要一个二维数组的数组boolean [x,y](怎么样?)

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

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

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

感谢您的任何提示。

1 个答案:

答案 0 :(得分:2)

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

可以制作长度为1000的1D布尔数组,即

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亿个体素。

我认为它比使用1d阵列更复杂因为我已经转换了一个行进立方体代码,它以模数和devide / float的形式读取每个空格,以了解对象在1d数组中的位置,这可能是精神上的负担并且在3D中编码速度慢。以上应该容易。