主要使用:VS2008 MFC 、 GDI+ 、 DCMTK。
一、MFC下使用GDI+需要稍微配置一下,过程很简单,网上也很多,不详细介绍。
可参考:http://www.codeproject.com/Articles/3962/Using-GDI-with-MFC-or-native-C-C
二、采用DCMTK来读取DICOM文件。
三、采用GDI+来生成Bitmap对象,进而显示DICOM图像。
生成Bitmap对象主要使用了四种方法:
PixelFormat8bppIndexed 【成功】(需要调用SetPalette,设置调色板)
PixelFormat16bppGrayScale 【失败】(查了相关资料,虽然GDI+定义了改宏,但目前还不支持)
PixelFormat24bppRGB 【成功】(同PixelFormat32bppARGB、PixelFormat32bppRGB)
PixelFormat48bppRGB 【失败】(显示的结果很差)
(另外还调用了DCMTK中对象DicomImage的createWindowsDIB方法,该方法不属于GDI+,所以没列出)
四、测试数据是一张DR的DICOM数据。
图像的宽和高是1760、2140。
采用DicomImage来调节窗宽和窗位的速度非常快,比我自己写的快的多,可能是自己的方法有问题吧!本来还想自己封装一个显示的类,现在打算放弃了,就用DicomImage来处理。
PixelFormat8bppIndexed与PixelFormat24bppRGB显示结果:
PixelFormat16bppGrayScale:方法无效
PixelFormat48bppRGB :显示结果
先整理到这里,其它测试结果以后记录,吃饭先。
五、窗宽窗位与缩放的测试结果
1、对窗宽窗位的调整,最好能生成与窗口对应大小的DicomImage来进行窗宽与窗位的调节,这样速度会很快。
2、对图像的缩放。对以上DR图像进行缩放,采用了两种方法:一种采用GDI+来做;另外一种是用DicomImage的createScaledImage()方法来实现。
在没有采用差值算法的情况下,利用createScaledImage方法还是很快的,但一旦进行插值后,其速度下降很快,在实际应用中无法达到要求;
另外一种方法即利用GDI+来完成,在插值的前提下,速度还可以接受。
(以上仅仅是自己测试的结果,仅记录于此,如若有错,欢迎指正)