自适应计算医学图像窗宽窗位技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxifei/article/details/83447921

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

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

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

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

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

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

三、如何设置包络区间

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

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

扫描二维码关注公众号,回复: 3763688 查看本文章

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

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

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

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

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

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

                                                                                                  未调整前

                                                                                                调整后

猜你喜欢

转载自blog.csdn.net/xiaoxifei/article/details/83447921
今日推荐