从 1D 阵列构建 3-D 图像
3-D Image construction from a 1D array
我有一个插件,我在其中获取 ImageJ 图像堆栈 (3d) 并将其转换为一维浮点数组,以发送给使用 JNA 调用的本机代码进行进一步处理(Java 本机接口) .现在,一旦我完成处理并取回修改后的一维图像数组,我就不知道如何将其转换回图像堆栈。这个问题已经回答了一个二维图像,但我想以最有效的方式将它转换回图像堆栈,然后显示图像。此外,像素以以下方式存储在一维阵列中。要访问图像中位置 (x,y,z) 处的像素,您需要转到 element:
[(z * width * height) + (height * y) + y]
在一维数组中。
所以我找到了一种方法:
outputstack = ImageStack(x, y, z )
for i in xrange(0, z):
# Get the slice at index i and assign array elements corresponding to it.
outputstack.setPixels(Array1D[int(i*x*y):int((i+1)*x*y)], i+1)
outputImp = ImagePlus("Output Image", outputstack)
希望这对其他人有帮助。
我有一个插件,我在其中获取 ImageJ 图像堆栈 (3d) 并将其转换为一维浮点数组,以发送给使用 JNA 调用的本机代码进行进一步处理(Java 本机接口) .现在,一旦我完成处理并取回修改后的一维图像数组,我就不知道如何将其转换回图像堆栈。这个问题已经回答了一个二维图像,但我想以最有效的方式将它转换回图像堆栈,然后显示图像。此外,像素以以下方式存储在一维阵列中。要访问图像中位置 (x,y,z) 处的像素,您需要转到 element:
[(z * width * height) + (height * y) + y]
在一维数组中。
所以我找到了一种方法:
outputstack = ImageStack(x, y, z )
for i in xrange(0, z):
# Get the slice at index i and assign array elements corresponding to it.
outputstack.setPixels(Array1D[int(i*x*y):int((i+1)*x*y)], i+1)
outputImp = ImagePlus("Output Image", outputstack)
希望这对其他人有帮助。