在R中绘制体素图像

Sim*_*mon 4 3d r voxel rgl

您知道 R 中是否存在用于绘制体素对象(3D 数组)的库或函数吗?我找到了可以执行 3D 散点图的 rgl 包,但我实际上正在寻找与 3D 数组一起使用的函数“image”的等效函数。谢谢

小智 5

这是使用 rgl 包的基本示例。您可以轻松地将其变成一个对 3D 数组进行操作的函数,以更改颜色、alpha 或其他感兴趣的功能。

library(rgl)
cubit=cube3d(color="blue", alpha=0.3)
cubit$vb[cubit$vb == -1]= 0
gridx=0:5;gridy=0:5;gridz=0:5
temp=cubit
plot3d(temp,box=FALSE,axes=FALSE,xlab="",ylab="",zlab="")
wire3d(temp,add=TRUE,color="blue",alpha=1)
for(ix in gridx){
  for(iy in gridy){
    for(iz in gridz){
      temp$vb[1,]=cubit$vb[1,]+ix
      temp$vb[2,]=cubit$vb[2,]+iy
      temp$vb[3,]=cubit$vb[3,]+iz
        shade3d(temp,add=TRUE,,alpha=runif(1))      
        wire3d(temp,add=TRUE,color="blue")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用过类似的东西,但我注意到内存大小增长得非常快(我不能使用 3-4Gb RAM 处理超过 60000 个体素)。我尝试过使用plot3D包中的cube3D进行类似的操作,认为非交互式绘图会(应该!)内存效率更高,但由于某种原因,这个包的性能更差(只有1000个体素)。如果您有一个实心立方体,那么您可以更聪明地使用 ploygon3D 图仅绘制外边缘......但这不是我的情况。我仍在寻找使用 R 功能获得更好的性能,但我认为我应该添加到此对话中,以防任何其他流浪灵魂也在这里遇到。