大家好,又见面了,我是你们的朋友全栈君。
BestMPRBaseVtk 设置默认窗宽窗位
今天我们来解决一个小问题,就是让图像加载完了,按照图像自带的窗宽窗位显示,这么形容不知道是否准确,大概意思就是这样吧。目前和MITK对比如下图所示:
人家MITK打开图像就已经是最好的状态了,我的呢,一上来就是一片白,读取数据显示我的默认的窗宽和窗位为255 和127 这个应该是一个默认的数值,不测试别的图像也是这个值。
所以,应该是我哪里的姿势不对,使得这两个树有了问题。经过初步调试发现我读到的数据就是这个,如下图所示。
关键字:
窗宽
、窗位
、Window
、Level
、vtk
1 窗宽、窗位的概念
窗宽是指乳香显示的灰度范围,一般显示器的回复范围为256级,而医学图像灰度则远大于这个显示范围,因此通过显示器显示时是不能同时显示所有的灰度等级,需要使用窗宽来定义要显示的灰度范围。当灰度值高于该范围是,均显示为白色,当灰度值低于该显示范围是,均显示为黑色。如果增大窗宽,则有不同的灰度值的组织结构增多,但会降低灰度值之间的对比度,若减小窗宽,则可视的不同灰度组织机构会减少,同时增大组织结构的对比度。
窗位是窗宽的中心位置,窗宽只是确定了图像在灰度范围上可视的部分,还需要窗位来确定可视灰度范围的具体显示位置,同样的窗宽,会根据窗位的变化显示不同的组织结构,比如窗宽为200 当窗位为100是,显示的可视灰度范围为0-200 ,当窗位为500是,显示的回复范围为400-600,理解了啵。当窗宽和窗位确定以后,显示底层会将可视灰度范围转化为256灰度级进行显示。
2 弄清楚窗宽窗位值来源
如上图所示,当我点击获取窗宽和窗位时候,默认窗宽为250 默认窗位为127.5。所以要弄清楚这两个值是来自哪里。
如上图所示,当我在读取窗宽窗位的时候,下一层是调用了vtkImageMapToWindowLevelColors
的GetWindow()
和GetLevel()
函数。所以我觉得应该看下vtkImageMapToWindowLevelColors
的源代码,如下图所示,这样我们知道我们获得的窗宽和窗位实际是vtkImageMapToWindowLevelColors
的默认值,而并不是充Dicom文件中读取来的窗宽和窗位。
现在是找到了默认的窗宽和窗位的出处了,但是怎么修改呢。
3 暂时解决不了
哎嗨,又是一个坑,啥时候填,再说吧,研究怎么读到这东西,扒了vtkDICOMImageReader
的源码,里面就没有这参数,在群里也请教了大佬们,确认vtkDICOMImageReader
是读不到默认的窗宽窗位信息了。
后期这里会有专门的模块来送数据过来,所以这里这个模块里面暂时就不搞他了。此坑更新了再说吧。
☞ 源码
源码链接:GitHub仓库自取
使用方法:☟☟☟
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149669.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...