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

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

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

BestMPRBaseVtk 设置默认窗宽窗位

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

在这里插入图片描述

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

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

在这里插入图片描述


关键字: 窗宽、窗位、Window、Level、vtk

1 窗宽、窗位的概念

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

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

2 弄清楚窗宽窗位值来源

在这里插入图片描述

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

image-20211216160240603

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

在这里插入图片描述

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

3 暂时解决不了

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

在这里插入图片描述

在这里插入图片描述

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

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟

源码


博客签名2021

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装svn服务器的两种方式(转载)「建议收藏」

    linux安装svn服务器的两种方式(转载)「建议收藏」操作环境:CentOS7.264位第一种:采用压缩包安装:比如你们公司服务器上安装软件有自己的规定,一般会采用压缩包安装。第一步:SVN服务器端压缩包下载下载地址:http://mirrors.cnnic.cn/apache/subversion/我下载的是subversion-1.8.19版本,下载好的压缩包置于目录/usr/local/java/svn下(根据大家实际需要自行选择存放目录)。第二步:解压,进入解压后的文件在/usr/local/java/svn目录下执行下面两个命令:

    2022年10月17日
  • TimeTrack_cycletime和takttime的区别

    TimeTrack_cycletime和takttime的区别使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。特别像使用MQ发送数据的时候,不会显式的要求你捕获异常,如果你忘记了,那么在某个时刻MQ异常的时候(比如网络异常),在发送数据到MQ失败的时候,TimerTask就挂掉了。比如如下代码:Appli…

    2022年11月2日
  • laravel-admin 安装(总结)

    laravel-admin 安装(总结)

    2021年10月29日
  • android app反编译_安卓反编译教程

    android app反编译_安卓反编译教程在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。(注:反编译不是让各位开发者去对一个应用激活成功教程搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)测试环

    2022年10月29日
  • 404页面的制作教程「建议收藏」

    404页面的制作教程「建议收藏」近期发现很多让做SEO诊断的网站一些最基础的操作都没有做,比如首选域确定及301设置、robots.txt文件没有写、404页面没有制作及设置等。前面两项在网上信息最多,这次主要说下404页面的问题。404页面的作用是什么?404页面是为了在用户属于错误URL或网页文件被删除时提醒用户的页面,页面中可以设置网站导航、背景颜色或图片的普通网页。为的是用户没有访问到正常页面时可以…

    2022年7月27日
  • MFC常用数据类型

    MFC常用数据类型

    2022年3月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号