有若干帧的连续断层扫描图像,通常超过100帧,每帧假定是400×300象素,如果多个断层可以组成一个三维物体了吧,好像有个词叫做体绘制(volume rendering)就是这个意思,可是要怎么实现呢?我现在想到两种方法,请大家帮忙讨论一下哪种比较可行而且容易实现、运行效率高。一种是把多个断层图像作为渲染的材质,画出多个互相平行的矩形平面。第二种是根据某些特定颜色的象素的位置画三角形。或者还有别的方法吗?

解决方案 »

  1.   

    我也正在做这方面的项目,我的方法和你第一种类似,就是将图一帧帧的画出来,但这样的话,当图较多时,非常占内存。而且如果图中有较多的黑色分量时,不好处理,得到的图像效果也不太好。然后,我看网上有介绍vtk的,里面有关于这方面的做法,似乎效果还可以,但因为没时间,还没认真看这方面的资料。你可以去找一下,有好的方法的话分享一下哈。3ks
      

  2.   

    楼上的,你能给我简单介绍一下vtk吗?我以前看过有一个案例作三维重建据称也是用vtk做的,不过我就是不明白vtk究竟是怎么用的,E文又比较差,看起来很慢,你如果有这方面的心得可以与我分享吗?不过第一种方法的数据量太大了,虽然你在变换的时候可以让显卡做,省了很多事情,可是真的能实现吗,如果是300*400的250帧RGB数据得用去多少显存了,如果是512*512的512帧RGB那就更难了?
    不过我看过加拿大的一家公司做的,很奇怪啊,大概是300*400*250的8bit灰阶数据,我在奔三866+8M显存显卡的机器上运行还很流畅,想不通啊,按道理说8M显存就不可能用第一种方法了,可是按照第二种方法的话cpu也会很吃力才对啊。朋友们都来探讨一下吧,有经验的朋友来点拨一下啊。
      

  3.   

    为什么不用3D软件做尼?用opengl或D3D作很方便的,通过空间数据建立体模型,模型的面用扫描的帧图像作为纹理贴上去
      

  4.   

    vtk我也没用过,只是他们介绍后,我下了安装包,但因为又有新任务,所以并没有实际安装使用,有时间的话,以后会去看一下,不过据他们的说明文档好象做的还不错,而且我们这的演示软件的很多功能它都有实现函数,感觉就是用vtk做的。
    第一种方法对显卡和内存要求是很高,显卡差点的话根本跑不起。to syy64(太平洋):你这样好象是只有表面的才有图像吧?但如果我想实现一个看起来像是透明的三维物体(暗背景是透明的,只有目标物体显示出来),你这种方法可以实现吗?
      

  5.   

    http://www.cnblogs.com/winglemon/articles/114083.html
      

  6.   

    to:hqxs(),可以采用3D中的混合技术。
      

  7.   

    to syy64(太平洋):大侠能说详细点么?我刚学看不太懂,或者介绍本相关的书我看看,谢了先。
      

  8.   

    先将各层图片通过纹理映射贴到场景中,然后
    glShade(GL_SMOOTH);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);参考《OpenGL 编程指南》第四版,纹理映射
      

  9.   

    试试matlab吧
    傻瓜式的
    做东西比较快