BestMPRBaseVtk-009-设置默认窗宽窗位

2022-09-12 08:11:17 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

BestMPRBaseVtk 设置默认窗宽窗位

​ 今天我们来解决一个小问题,就是让图像加载完了,按照图像自带的窗宽窗位显示,这么形容不知道是否准确,大概意思就是这样吧。目前和MITK对比如下图所示:

​ 人家MITK打开图像就已经是最好的状态了,我的呢,一上来就是一片白,读取数据显示我的默认的窗宽和窗位为255 和127 这个应该是一个默认的数值,不测试别的图像也是这个值。

​ 所以,应该是我哪里的姿势不对,使得这两个树有了问题。经过初步调试发现我读到的数据就是这个,如下图所示。


文章目录

  • BestMPRBaseVtk 设置默认窗宽窗位
    • 1 窗宽、窗位的概念
    • 2 弄清楚窗宽窗位值来源
    • 3 暂时解决不了
    • ☞ 源码

关键字: 窗宽窗位WindowLevelvtk

1 窗宽、窗位的概念

​ 窗宽是指乳香显示的灰度范围,一般显示器的回复范围为256级,而医学图像灰度则远大于这个显示范围,因此通过显示器显示时是不能同时显示所有的灰度等级,需要使用窗宽来定义要显示的灰度范围。当灰度值高于该范围是,均显示为白色,当灰度值低于该显示范围是,均显示为黑色。如果增大窗宽,则有不同的灰度值的组织结构增多,但会降低灰度值之间的对比度,若减小窗宽,则可视的不同灰度组织机构会减少,同时增大组织结构的对比度。

​ 窗位是窗宽的中心位置,窗宽只是确定了图像在灰度范围上可视的部分,还需要窗位来确定可视灰度范围的具体显示位置,同样的窗宽,会根据窗位的变化显示不同的组织结构,比如窗宽为200 当窗位为100是,显示的可视灰度范围为0-200 ,当窗位为500是,显示的回复范围为400-600,理解了啵。当窗宽和窗位确定以后,显示底层会将可视灰度范围转化为256灰度级进行显示。

2 弄清楚窗宽窗位值来源

​ 如上图所示,当我点击获取窗宽和窗位时候,默认窗宽为250 默认窗位为127.5。所以要弄清楚这两个值是来自哪里。

​ 如上图所示,当我在读取窗宽窗位的时候,下一层是调用了vtkImageMapToWindowLevelColorsGetWindow()GetLevel()函数。所以我觉得应该看下vtkImageMapToWindowLevelColors的源代码,如下图所示,这样我们知道我们获得的窗宽和窗位实际是vtkImageMapToWindowLevelColors的默认值,而并不是充Dicom文件中读取来的窗宽和窗位。

​ 现在是找到了默认的窗宽和窗位的出处了,但是怎么修改呢。

3 暂时解决不了

​ 哎嗨,又是一个坑,啥时候填,再说吧,研究怎么读到这东西,扒了vtkDICOMImageReader的源码,里面就没有这参数,在群里也请教了大佬们,确认vtkDICOMImageReader是读不到默认的窗宽窗位信息了。

​ 后期这里会有专门的模块来送数据过来,所以这里这个模块里面暂时就不搞他了。此坑更新了再说吧。

☞ 源码

源码链接:GitHub仓库自取 使用方法:☟☟☟


发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149669.html原文链接:https://javaforall.cn

0 人点赞