在R中绘制体素图像

时间:2012-12-21 00:22:43

标签: r 3d voxel rgl

你知道它是否存在R中的库或函数来绘制体素对象(3D数组)? 我找到了可以执行3d散点图的包rgl,但我真的在寻找与3D数组一起使用的函数“image”。 感谢

1 个答案:

答案 0 :(得分:2)

这是使用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")
    }
  }
}

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