Pyradiomics: v1.2.0和v1.3.0之间的小波特征值不一致

创建于 2018-06-21  ·  11评论  ·  资料来源: AIM-Harvard/pyradiomics

你好! 我承担了一个以前由使用pydiadomics v1.2的人启动的项目。 鉴于我刚开始,所以选择了最新版本(v.1.3)。 为了确保我走在正确的道路上,我正在与运行v1.2的人员比较运行中得到的特征,我发现从小波滤波后的图像计算出的特征存在一些显着差异。 我已经能够指出两个问题:

问题1:
在1.3版中,我发现某些分解名称未归因于正确的分解图像。 当我发现与1.2版相比几乎完美的对称性时,我发现了这一点。
image
这特定于名称不是回文的小波分解(例如,“ LLL”特征在各个版本中都是相同的,而HHL(v1.3)= LHH(v.1.2),LLH(v1.3)= HHL(v.1.2 ), 等等)。 仔细研究imageoperations.py中的getWaveletImage函数,我发现v1.3中增加了以下几行:

轴= {2,1,0}#组
如果kwargs.get('force2D',False):
轴-= {kwargs.get('force2Ddimension',0)}#设置

大约,ret = _swt3(inputImage,kwargs.get('wavelet','coif1'),kwargs.get('level',1),kwargs.get('start_level',0),axes = tuple(axes))

根据我对pywavelet的理解,axis是变量,其顺序确定分解名称中字母的顺序。 我想知道为什么这是一套? 在我看来,在_swt3函数中将其转换为元组时,其顺序将变得不可预测,然后可以更改分解名称和功能标签。 当我将axes变量更改为列表时,我不再遇到问题。

问题2:
解决上述问题后,对于某些图像,我开始获得与v1.2相同的小波特征值,而对于其他图像,则没有。 这次差异是随机的(而且是显着的)。
image
再次查看imageoperations.py v1.3中的getWaveletImage函数,如果图像的尺寸不能被2整除,则似乎正在填充图像。这似乎是pywavelets的约束,其中信号长度必须被2整除**级别(在这种情况下为2)。 我认为v 1.2中不会出现相同的填充。 确实,当我查看测试图像的尺寸时,与v1.2完全匹配的图像具有偶数尺寸(在v.1.3中没有填充),而那些没有至少一个奇数尺寸的图像(在v1中具有填充) .3)。 可以肯定地说,v1.3对小波滤波后的图像具有最准确的特征值(第一个问题除外)?

question

最有用的评论

谢谢@michaelschwier
确实,我们可以看到,还原7ff0548时,这些功能与v1.2保持一致
image

所有11条评论

@sandfis感谢您对此进行调查!

在1.2和1.3之间发生了另外两个相关的提交:

抄送: @michaelschwier

@sandfis关于您的笔记:

  • 问题1:您的解决方案对我来说很有意义。 让我们等待@JoostJM的来信,但是我想如果您可以提交包含此修复程序的PR,那将是很好的。
  • 问题2:我认为我之前提到的提交可能是原因: https :

实际上,问题2最肯定也与7ff05482d3615e26ff7439e8f9044aefcba50a9a有关。 填充奇数尺寸的图像之前是不正确的!

太好了,谢谢@fedorov! 我也要

我必须说,如果确实是差异的根源,那么引入的填充策略的变化有多么显着。

@sandfis您认为您可以继续进行调查,看看是否还原上面引用的提交会使值匹配? 这将超级有帮助。

@fedorov @sandfis对不起,我之前可能应该更详细地解释它,因为仅凭代码更改就不明显,而又不知道numpy的调整大小是什么:填充的方法是在(使用调整大小)之前完成的,字面意思是图像! 调整大小会将零添加到数组/矩阵缓冲区的末尾(而不是每个维度的末尾)。 请参阅此处的示例3“扩大数组”: https :

因此,最大的区别是,在7ff05482d3615e26ff7439e8f9044aefcba50a9a之前,奇数维图像的小波计算完全是错误的

@michaelschwier感谢您澄清这一点,确实我在https://github.com/Radiomics/pyradiomics/commit/7ff05482d3615e26ff7439e8f9044aefcba50a9a中完全错过了它pad切换到wrap 。 确实,既然您已经解释了,那是完全错误的。 因此,我认为应该在https://github.com/Radiomics/pyradiomics/releases/tag/1.3.0的“错误修复”部分中列出

现在,对于所有基于v1.2.0中实现的小波特征,能够成功开发出能够预测疾病并根除癌症的新型放射学特征的论文,我们该怎么办? 🤣

谢谢@michaelschwier
确实,我们可以看到,还原7ff0548时,这些功能与v1.2保持一致
image

这么晚才回复很抱歉!

我同意@fedorov@michaelschwier ,尽管我认为这应该记录在即将发布的版本中,因为此更改是在当前的主版本中以及在v1.3.0发行之后进行的。

我是否正确假设v1.3表示当前的主设备?

另外,关于问题1,这里的确是不正确的。 但是,更改为元组是行不通的,因为您无法删除2D中提取要素时所需的元素(在此期间,小波也将在2D中进行计算,因此需要删除平面间轴)。

我通过使用列表和list.remove()修复了此问题,我将很快将此错误修复推送到主服务器。

见4027a52

谢谢@JoostJM! 确实,我正在与现任硕士一起工作。

此页面是否有帮助?
0 / 5 - 0 等级