CT、MRI、Xray等设备扫描出来的数据如果不通过可视化技术展现给用户,那数据的价值将大打折扣,今天我们就来看一下在医疗影像后处理工作站中用于数据可视化的实现方式。
MPR图像
VR图像
相比普通的二维图片,上面两幅图像可以很生动的向用户展示患者的三维立体信息。
如果只是想做个演示的样例,OpenGL和VTK都可以通过很少的代码就能实现上面的结果,但现实工程化的项目中,技术栈可能不是那么单一,例如,UI框架可能因为种种原因已经确定使用QT、MFC、WPF、Web中的一种,而非是OpenGL和VTK,但是我们对于可视化算法还没有那么多技术积累,目前只能依赖于VTK,那我们该如何将UI框架和可视化结合起来呢?今天我们就简单介绍两种常见的组合方式。
WPF+VTK:
WPF作为.NetFramework家族的UI框架,是MFC、WinForm的替代产品,这里不做过多介绍,根据我个人的经验,如果是做Windows平台下的UI开发,WPF绝对是首选;所以我们接下来就是要解决如何把VTK中的绘制结果显示到WPF的UserControl中的图像控件中。
方法一:
将VTK窗口做到一个单独的进程中,然后通过Windows提供的API将VTK进程的UI贴到WPF进程中。
详细方法请参照WPF利用多进程UI嵌套实现组件化
方法二:
VTK代码中提供了对Python和JS的接口,但是没有提供对于C#的接口,虽然官方没有提供,但是在另一个.Net项目中找到了对VTK的封装,项目名称是activiz,在VTK中的每一个C++类,在activiz中都对应存在一个C#类,而且两者类中的方法、字段也几乎一致,我们可以像构造UserControl一样去构造VTK中的类vtkRenderWindow,并且vtkRenderWindow中已经帮我们实现了与用户的交互逻辑。