【影像组学pyradiomics教程】(五)pyradiomics模块--Image Processing and Filters(图像处理及滤波器)

本系列博客后续将更新于个人微信公众号,欢迎关注。

【影像组学pyradiomics教程】(五)pyradiomics模块--Image Processing and Filters(图像处理及滤波器)_第1张图片

 

 

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

 

你可能感兴趣的:(【影像组学pyradiomics教程】(五)pyradiomics模块--Image Processing and Filters(图像处理及滤波器))