一、背景描述:
在医学影像处理中,反色,又叫负片,是在医学影像浏览时常用的一个功能,反色功能可以改变影像的视觉效果,使得医生能够更好地观察某些特定的组织结构。
Dicom医学图像的原始数据数值的分布区间一般比较大,如CT值的正常范围为-1000HU到+1000HU,空气的HU值接近于-1000,人体组织中骨头的含钙量高,HU值最高,大概在1000左右。一般显示器显示灰度级别在0-255也就是256个颜色级别。如果将dicom的-1000-1000的灰度级直接映射到0-255,势必会使得图像的灰度级太低,图像会呈现整体灰暗,无法正常阅读。聪明的人类想出了窗宽窗位的概念来解决这个问题。窗宽窗位其实就是选择性的将某个区间的CT值映射到0-255的范围。这样针对不同的器官,只要选择适当的窗宽窗位就可以完美呈现该器官的具体样貌。对于窗宽窗位以外的CT值,则用0或255来取代。
大部分影像处理软件使用灰度渲染医学影像,反色就是就是将每个像素的灰度值取反,黑色变成白色,白色变成黑色,实现算法就是用255减去原来的像素值。例如,如果原图像是灰度值为128的像素,反色后就变成了255-128=127。
本文介绍如何基于MITK实现反色功能。MITK本身实现的Action按键及插件中没有提供该功能的实现。
二、实现过程
一个MITK的data node设置了一些属性(properties),这些属性包含了MITK对节点处理的相关信息,包括渲染、交互信息等。其中有一个属性:“LoopupTable”,该属性用于设置用户自定义的配色查找表,用来将标量值映射到颜色值,对应的属性值类型为mitk::LookupTableProperty,当该属性设置后,color属性不再影响影像的颜色。
在MITK中mitk::LookupTable预置了一系列的类型
enum LookupTableType
{
GRAYSCALE,
INVERSE_GRAYSCALE,
HOT_IRON,
JET,
JET_TRANSPARENT,
PLASMA,
INFERNO,
VIRIDIS,
MAGMA,
LEGACY_BINARY,
LEGACY_RAINBOW_COLOR,
MULTILABEL,
PET_COLOR,
PET_20,
TURBO
};
其中,默认使用灰度值来渲染影像,即使用GRAYSCALE类型,而反色效果即使用INVERSE_GRAYSCALE类型即可 。