本系列博客后续将更新于个人微信公众号,欢迎关注。
radiomics.imageoperations.getBinEdges(binwidth, parameterValues)
计算并返回灰度直方图
radiomics.imageoperations.binImage(binwidth, parameterMatrix,parameterMatrixCoordinates)
radiomics.imageoperations.generateAngles(size, **kwargs)
radiomics.imageoperations.checkMask(imageNode, maskNode, **kwargs)
检查Mask中的ROI的尺寸和维度是否符合要求,具体步骤如下:
1. 检查原始图像和Mask是否一致(例如尺寸、spacing、direction和origin),可使用geometryTolerance参数来调整tolerance,如果返回值为True,系统会检查Mask是否包含有效的ROI(即ROI区域必须小于图片的物理尺寸),如果上述检查没有问题,系统会将Mask重采样为原始图像的几何尺寸
2. 检查Mask中是否存在label
3. 检查ROI的维度是否符合定义的最小维度(使用minimumROIDimensions定义)
4. 检查ROI中体素数量是否符合定义的最小数量(使用minimumROISize定义)
- 1
- 2
- 3
- 4
- 5
- 该函数返回一个包含两个元素的元组,第一个元素是Mask的bounding box,第二个元素是重采样后的与原始图像具有同样几何尺寸的Mask
- 如果检测不通过,则报错,返回一个值为(None, None)的列表;如果检测通过,返回的bounding box将在cropToTumorMask()会用到。
- Bounding box在(1)中计算,并在后续的检查中需要用到。Bounding box是使用SimpleITK.LabelStatisticsImageFilter()计算得到的,是一个拥有六个元素的元组:(L_x, U_x, L_y, U_y, L_z, U_z)
- 通过反复调用SimpleITK.LabelStatisticsImageFilter()来计算boundingbox,提升性能
- 参数:
- minimumROIDimensions [1]:1-3范围内的整数
- minimumROISize [None]:大于0的整数
- 如果第一步检测失败,通常可能原因有两个:
- 原始图像和Mask匹配,但是在origin、sapacing或者direction等方面存在轻微的差异。具体的错误原因存储在DEBUG级别的log文件中(如果使用了log),通过更改geometryTolerance和调用correctMask函数可以解决这个问题
- 虽然原始图像和Mask不匹配,但是Mask中包含的ROI包含在原始图像范围内。我们可以通过在特征提取前进行重采样来解决这个问题
radiomics.imageoperations.cropToTumorMask(imageNode, maskNode,boundingBox, padDistance=0
- 输入参数:
- BoundingBox:checkMask()返回的bounding box,用于确定裁剪后的图像大小。
- Label:label的值
- 返回值:
- 裁剪后的image和Mask(SimpleITK类型)
radiomics.imageoperations.resampleImage(imageNode, maskNode,resampledPixelSpacing, interpolator=3, label=1, padDistance=5)
-
将原始图像和Mask重采样为特定的spacing(默认使用线性差值)
-
Interpolator和resampledPixelSpacing参数可通过参数文件定义,或者作为关键字参数直接传递给特征抽取器
-
imageNode和maskNode时候SimpleITK对象,resampledPixelSpacing是输出图片spacing(三元素的元组)
-
如果spacing的某元素为0,则用原始Mask的对应维度的spacing替代它
-
重采样网格会和输入的原始图片进行对齐,并且只会对Mask的ROI对应的区域进行重采样
radiomics.imageoperations.normalizeImage(image, scale=1,outliers=None)
对图片进行归一化
radiomics.imageoperations.resegmentMask(imageNode, maskNode,resegmentRange, label=1)
对Mask进行重分割,移除灰度值在resegmentRange之外的体素
radiomics.imageoperations.getOriginalImage(inputImage, **kwargs)
获取原始图像
- 返回值:迭代器,指向的元素为一个三元素的Tuple,第一个元素为原始图像,第二个元素为字符串‘Oringinal’,第三个元素为参数字典
radiomics.imageoperations.getLoGImage(inputImage, **kwargs)
对原始图像应用LOG滤波器
- 输入参数:
- Sigma:浮点数或者整数的列表,大于0。每一个元素代表一个滤波器。
radiomics.imageoperations.getWaveletImage(inputImage, **kwargs)
radiomics.imageoperations.getSquareImage(inputImage, **kwargs)
radiomics.imageoperations.getSquareRootImage(inputImage, **kwargs)
radiomics.imageoperations.getLogarithmImage(inputImage, **kwargs)
radiomics.imageoperations.getExponentialImage(inputImage, **kwargs