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

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

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

BestMPRBaseVtk 设置默认窗宽窗位

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

在这里插入图片描述

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

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

在这里插入图片描述


关键字: 窗宽窗位WindowLevelvtk

1 窗宽、窗位的概念

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

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

2 弄清楚窗宽窗位值来源

在这里插入图片描述

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

image-20211216160240603

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

在这里插入图片描述

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

3 暂时解决不了

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

在这里插入图片描述

在这里插入图片描述

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

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟

源码


博客签名2021

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

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

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


相关推荐

  • Java开发手册之日志规约

    Java开发手册之日志规约Java开发手册之日志规约

    2022年4月22日
    45
  • 第二章平稳时间序列模型——AR(p),MA(q),ARMA(p,q)模型及其平稳性[通俗易懂]

    第二章平稳时间序列模型——AR(p),MA(q),ARMA(p,q)模型及其平稳性[通俗易懂]1白噪声过程:零均值,同方差,无自相关(协方差为0)以后我们遇到的efshow如果不特殊说明,就是白噪声过程。对于正态分布而言,不相关即可推出独立,所以如果该白噪声如果服从正态分布,则其还将互相

    2022年8月1日
    6
  • SpringBoot笔记(五)Linux系统与项目部署

    SpringBoot笔记(五)Linux系统与项目部署Linux操作系统与项目部署**注意:**本版块会涉及到操作系统相关知识。现在,几乎所有智能设备都有一个自己的操作系统,比如我们的家用个人电脑,基本都是预装Windows操作系统,我们的手机也有Android和iOS操作系统,还有程序员比较青睐的MacBook,预装MacOS操作系统,甚至连Macbook的Touchbar都有一个自己的小型操作系统。操作系统是管理计算机硬件与软件资源的计算机程序,操作系统可以对计算机系统的各项资源板块开展调度工作,运用计算机操作系统可以减少人工资源分配的工作强度。.

    2022年7月19日
    15
  • C++ mysql connector使用方法「建议收藏」

    C++ mysql connector使用方法「建议收藏」mysqlconnector的下载  C++操作mysql数据库可以用原生的api,也可以用mysqlconnector,在mysql下载页可以找到下载入口https://dev.mysql.com/downloads/,如下图:在vs2019中的配置头文件  Conneector的使用方式和常规sdk一样,包含头文件,静态库,动态库即可。注意Conneector在8.0之后需要boost支持,在vs中需要配置boost的路径,如下:lib路径  在附加依赖项添加静态库名

    2022年7月15日
    28
  • fastjson object转jsonobject_jsonobject取值

    fastjson object转jsonobject_jsonobject取值众所周知,kafka中存储的数据是经过BASE64加密后的jsonObject,因此从kafka中读取的数据经过base64解码,得到的是json串,利用JSONObect的方法可以对json串进行解析,拿到对应的数据。那么要如何将scala对象或者java对象转换为JsonObject对象或JSONObject对象呢?(注意:JsonObject对象和JSONObject对象不同,调用的API也…

    2022年10月5日
    5
  • activiti工作流框架_springboot工作流框架

    activiti工作流框架_springboot工作流框架工作流Activiti是一个项目的名称,Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家TomBaeyens担任。Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,…

    2022年9月1日
    3

发表回复

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

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