精华内容
下载资源
问答
  • 自动窗宽窗位

    千次阅读 2017-05-08 17:52:55
    Slicer实现源码: vtkMRMLScalarVolumeDisplayNode类 vtkImageBimodalAnalysis类 ...vtkImageAccumulate类(vtk) ...实质上是直方图分析,找出噪声和有用信号,保留有用信号一侧的像素(通过窗宽窗位

    Slicer实现源码:
    vtkMRMLScalarVolumeDisplayNode类
    vtkImageBimodalAnalysis类
    vtkImageAccumulate类(vtk)

    实质上是直方图分析,找出噪声和有用信号,保留有用信号一侧的像素(通过窗宽窗位)

    展开全文
  • 自动窗宽窗位可以找到合理的灰度值区间段,在这个区间段最大程度的保留所关注的内容或者整张图像的主要内容。窗宽是灰度值区间的宽度,窗位一般是灰度值区间的中点位置,窗宽窗位的设置是为了最大程度的展现观察者所...

    自动窗宽窗位可以找到合理的灰度值区间段,在这个区间段最大程度的保留所关注的内容或者整张图像的主要内容。窗宽是灰度值区间的宽度,窗位一般是灰度值区间的中点位置,窗宽窗位的设置是为了最大程度的展现观察者所需要的内容。
    窗宽窗位是为了展现图像上的内容,在图像的灰度域上能够反映这种程度的工具是直方图,因此设计合理的窗宽窗位就需要在直方图上做文章。
    自动窗宽窗位的思路是基于直方图,根据自动阈值分割计算出阈值,根据该阈值往两边延拓,是该区间尽可能的包含图像的主要部分。值得注意的是,往左/右方向延拓的大小不一定相同。延拓的多少往往依赖于经验以及图像本身。
    个人理解的自动窗宽窗位如下:
    第一步,计算图像的直方图(hist);
    第二步,根据图像的直方图计算图像阈值(thresh),可以用最大类间距法(Otsu方法, MTALAB的graythresh函数就是用的该方法提取图像阈值,高于该阈值的点为前景点,低于阈值的点为背景点)。
    第三步,如果关注点不在整个图像,跳转第四步。如果关注点在整个图像,计算出图像像素的最小像素值(min thresh, 以下用minT简代)与最大像素值(max thresh,以下用maxT简代),置窗宽的左边界(leftBorder)的初值为minT,置窗宽的右边界(rightBorder)的初值为maxR。如果需要剪切掉靠近最小像素的部分区域(如0%,1%,2.5%等),则将leftBorder上移;如果需要剪切掉靠近最大像素值的部分区域(如0%,1%,2.5%等),则将rightBorder下移;如果需要另外剪切掉部分区域(如0%,1%,2.5%等),则需要判断leftBorder和rightBorder处对应的直方图哪方更稀疏,从更稀疏处剪切掉部分区域,也即是将leftBorder加1或将rightBorder减1,再继续比较leftBorder和rightBorder处对应的直方图哪方更稀疏,直到截切的区域达到预设的比例。
    第四步,如果关注点在图像背景区域,跳转第五步。如果关注点在图像前景区域,置窗宽的左边界(leftBorder)的初值为thresh,置窗宽的右边界(rightBorder)的初值为maxR。需要计算前景区域占整个图像的比例(massRatio),根据该比例设置需要在左边界增加的区域和在右边界剪切的部分区域(该区域的大小设置依赖经验和图像本身),并移动leftBorder和rightBorder。
    第五步,如果关注点在图像背景区域,步骤与第四步类似。
    第六步,右边界与左边界的平均值为窗位,差值(大于0)为窗宽。
    如果图像是无符号16位的图像,像素值在[0, 65535],则直方图需要65536维度,在用最大类间距法计算阈值时较耗时间,这时可以将无符号16位转化为无符号10位图像(其他低位图像亦可,如无符号8位图像),计算出阈值后再安装比例放大到无符号16位图像(对于无符号10位图像,需要将其阈值放大26=16倍)得到阈值a,在[a-2(16-10), a+2^(16-10)] 的像素范围内搜索无符号16位图像的确切阈值。

    展开全文
  • CT图像中,每个器官的窗位窗宽都不同,有时我们需要着重观察某个器官,只需调整他们的窗位窗宽即可,以下为肺的窗位窗宽调整。 import numpy as np import SimpleITK as sitk def window(img): win_min = -400 ...

    CT图像中,每个器官的窗位窗宽都不同,有时我们需要着重观察某个器官,只需调整他们的窗位窗宽即可,以下为肺的窗位窗宽调整。

    import numpy as np
    import SimpleITK as sitk 
    
    def window(img):
        win_min = -400
        win_max = 1500
    
        for i in range(img.shape[0]):
            img[i] = 255.0*(img[i] - win_min)/(win_max - win_min)
            min_index = img[i] < 0
            img[i][min_index] = 0
            max_index = img[i] > 255
            img[i][max_index] = 255       
            img[i] = img[i] - img[i].min()
            c = float(255)/img[i].max()
            img[i] = img[i]*c
        
        return img.astype(np.uint8)
    
    img = sitk.ReadImage('./img.nii.gz')
    img = sitk.GetArrayFromImage(img)   
    img = window(img)
    
    out = sitk.GetImageFromArray(img)
    sitk.WriteImage(out,'lung.nii.gz')
    
    展开全文
  • 在dicom图像中,对于人体器官以及部位的观察通常是有固定的窗宽窗位的,但是有时候经过前面算法的一些处理后结果图像往往不能够套用现有的窗宽窗位,这里提供一种简单的自适应调整窗宽窗位的算法思路。 一、为什么...

    在dicom图像中,对于人体器官以及部位的观察通常是有固定的窗宽窗位的,但是有时候经过前面算法的一些处理后结果图像往往不能够套用现有的窗宽窗位,这里提供一种简单的自适应调整窗宽窗位的算法思路。

    一、为什么要设置窗宽窗位

    我并不是专门学医学出身,因此并不能给出医学上的解释,但是从图像的角度来说所谓的窗宽窗位就是找到一个合理的灰度值区间段,在这个区间段中最大程度保留了所关注的内容或者是整张图片的主体内容。简而言之,窗宽就是一个灰度值区间段,窗位一般就是这个区间段的中点位置,窗宽窗位的设置就是为了最大程度的展现观察者所需要的内容

    二、用什么指标可以衡量窗宽窗位

    基于上述理解,一般而言,窗宽窗位是为了最大程度展现图像的内容,在图像的灰度域上能够反映这种程度的工具是图像灰度值的累积分布函数,因此要设计合理的窗宽窗位计算算法就需要基于图像灰度值的累积分布函数来做文章。一个典型的归一化的灰度累积分布函数图像如下所示:值域是0到1的一个单增函数,因为是8bit灰度 因而是0到255个bins

    从累积分布函数图中来看,实际上窗宽窗位就是在上图中挑一个区间,能够将上面函数图像的主要部分包络在里面。

     

    三、如何设置包络区间

    简单的方法可以设定前后两个阈值,比如累积分布函数的函数值到达0.01以上并且小于0.99的认为是图像主要有用部分的分布,此时的0.01和0.99就是前后两个阈值,其所对应的bins在这张8bit灰度图中就是窗宽的两个边缘值,根据这两个值求平均即可算得窗位值。

    复杂一点的做法有基于先验mask的也有基于一些分割算法的,其主要的思路都是先判断出图像的主要部分,然后找到对应的灰度分布最小值和最大值,用这两个值来定义窗宽进而求出窗位。这里提供一种更为简单的做法。基于累积分布图可以有以下两个普遍假设

    1)分布函数的斜率变化反映了整幅图灰度值变化的快慢情况

    2)分布函数的斜率越大说明整幅图像的灰度分布越压缩,反之,说明灰度分布宽度越大

    对于压缩灰度分布的图像,我们需要尽可能窄的窗宽,而对于宽度大的则需要较为宽的窗宽

    因此实际上可以根据累积函数灰度分布的斜率变化来设计自适应的窗宽窗位计算算法。

    我的思路是对上述累积分布离散序列求一阶导数,会得到一个极大值点和一个次小值点,这里定义的次小值点满足以下条件:次小值点对应的累积分布函数值会比较大,起码需要大于50%,这样算法就会指定到累积分布函数值比较大的地方来找这个次小值。对应于上图的位置就是谷区一个极大值点,高位的平台区的一个次小值点,然后用上述两个点的bin值加上一个k×nbins(k我这里设置的是0.05,nbins就是前面提到的0到255,这里就是nbins等于256)的调整系数就可求得窗宽的左边界和右边界,窗位即是左右边界的中点

    用该方法设计的窗宽窗位计算方法普适性比较好,能够在不引入其他算法(比如分割不准确)干扰的情况下尽可能地得到合理的窗宽窗位,计算的结果调整如下所示:

                                                                                                      未调整前

                                                                                                    调整后

     

    展开全文
  • DICOM图像读取以及窗宽窗位调整

    热门讨论 2009-05-15 16:14:57
    DICOM图像的读取以及窗宽窗位调整,挺不错的!
  • 窗位窗宽

    千次阅读 2016-04-23 17:06:23
    最近在研究医学图像 其中涉及到窗位窗宽的概念。查阅资料了解后 现在做一个总结!  日常生活中的显示器的灰度范围是256级,日常我们见到的图像基本都是这个灰度范围。而医疗图像处于特殊要求,其灰度级会比较高...
  • 16位数字图像改变窗宽窗位使感兴趣区域拥有最大动态范围 窗宽窗位不同于亮度对比度调整,但效果类似亮度对比度。 RAW原图 16bit 1536*1536 ImageJ打开: 自动亮度对比度: 窗宽窗位调整: C++代码实现: BOOL ...
  • dicomviewer 可以调窗宽窗位,可以存为jpg
  • pyqt5+pyqtgraph+调整窗宽窗位的widget的高度如何压缩
  • X光医学图像直方图的窗宽窗位调整 图像的直方图显示了图像的灰阶分布。说白了,就是显示了图像当中每一个点的亮度分布情况(亮的地方分布了多少,黑的地方又分布了多少。反之,也可以看出某个点是落在了亮的区域还是...
  • 在CT等医学影像显示领域,我们经常会听到窗宽(Window Width,简写WW)、窗位(Window Level,简写WL)的概念,那么到底什么是窗宽窗位,它们跟医学图像之间的关系又是什么? 先说一下CT值是什么: CT图像反映的...
  • HTML5灰度图像处理练习2:窗宽窗位调节
  • CT图像之Hu值变换与窗宽窗位调整

    千次阅读 多人点赞 2019-11-05 20:36:37
    医学影像“调”(window-leveling)的算法 B. Window-leveling 算法: W/L 是专门为 CT 设计的。原理很简单:CT 图像里不同组织的密度 (用 Hounsfield 单位) 是在固定的值域, 与具体设备和成像软件没有关系。因此...
  • window_center=1200 #窗位 window_width=400 #窗宽 win_min = (2window_center - window_width)/2.0 + 0.5 win_max = (2window_center + window_width)/2.0 + 0.5 dFactor = 255.0/(win_max - win_min) nNumPixels=...
  • 一份文件是介绍用R语言中如何利用核函数估计密度函数及其各阶导数的方法,是比较新的文献,2015年的,里面介绍了7种窗宽的确定方法以及R程序
  • 针对传统均值漂移算法无法对对比度低、尺度变化的红外目标进行有效跟踪的问题, 提出一种改进Mean... 然后,提出一种基于背景和前景目标相似度的核窗宽选取算法, 自动选取窗口缩放比例, 得到与目标尺度一致的跟踪窗口.
  • 本论文介绍了:Mean-Shift跟踪算法中核函数窗宽自动选取,比较实用。
  • 本文以已实现核估计作为波动率非参数估计的代表,构建了一种能自动从实际数据中确定最优窗宽的算法.理论分析的结果表明:算法具有稳定性,其所确定的窗宽是最优窗宽的无偏一致估计量,收敛速度为O(n-1/5).实际数据...
  • 针对 Mean.Shift(~值漂移)算法中核函数带宽不能实时改变的缺陷,提 出一种基于边界力的 Mean-Shift 核函数带宽自适应更新算法.在分析 目标加权核直方图模型的基础上,引入 区域似然度以提取目标的局部信息....
  • 本人在学医学影像处理,但是想知道一般的RAW文件怎么自动调节最适的窗宽窗位,求大神指导一下
  • WPF根据窗口内容自动调整窗口大小

    千次阅读 2019-04-22 13:52:09
    在创建WPF窗体时,如果固定窗体高,在要显示内容很少或者很多的情况下,窗体布局就会显得不怎么好看。如果能根据窗口内容自动调整窗口大小会显得比较适宜,这时我们需要用到Window.SizeToContent属性。 下面以...
  • 参数化百叶,点击长和,所以数据自动完成,适合各种试验箱体导风系统使用的一个参数化设计的百叶
  • Android 悬浮功能的实现

    万次阅读 多人点赞 2019-08-29 17:15:33
    我们大多数在两种情况下可以看到悬浮,一个是视频通话时的悬浮,另一个是360卫士的悬浮球,实现此功能的方式比较多,这里以视频通话悬浮中的需求为例。编码实现使用Kotlin。Java版本留言邮箱即可。 业务场景 ...
  • 函数

    2021-03-15 15:41:28
    什么是函数? - linmue-谭祥军的文章 - 知乎 https://zhuanlan.zhihu.com/p/24318554 本文首发于公众号《模态空间》。 似乎每次做FFT都需要加窗函数,很少有不加函数的时候。那为什么要加窗函数,加窗有什么...
  • 求助: 曾经在ThinkPadX250-Win10系统笔记本上,对于超出屏幕边界的对话框,只要移动鼠标到边界,对话框会自动滚动出未显示的部分。如:对话框的下边界超出屏幕,鼠标移动到下边界,对话框就会自动上划,显示下面...
  • 首先得创建一个QWidget部件,并且定义两个全局变量用来保存长和 mWidth和mHeight ,这两个数值就是随窗口改变而改变的数值 接着别忘记在构建函数内使用 setCentralWidget,当然如果不设置也可以实现只需要将下面...
  • Windows程序设计--窗口与消息

    千次阅读 2015-09-09 14:43:04
    进行Windows程序设计时,其实就是在进行一种面向对象的编程。在面向对象中,对象是代码和数据的组合,一个窗口也是一个对象。在用户眼中,窗口是屏幕上的对象,并可借助键盘或鼠标...而窗口类又确定了处理窗口消息的
  • Android浮权限判断

    2019-07-16 22:27:42
    在开启浮窗前,要判断一下,是否能够得到浮权限打开浮。 在方法中添加以下代码: //悬浮权限判断 if (Settings.canDrawOverlays(MainActivity.this)) { Intent intent = new Intent(MainActivity.this, ...
  • FloatWindow 项目地址:FreeSunny/FloatWindow 简介: Andorid 任意界面悬浮,实现悬浮如此简单 更多:作者提 Bug官网 标签: ...4.应用退到后台时,悬浮自动隐藏 5.除小米外,4.4~7.0 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,829
精华内容 27,931
关键字:

自动窗宽窗位