tomopy.prep.stripe

用于前处理任务的模块。

Functions:

remove_stripe_fw(tomo[, level, wname, ...])

基于傅立叶小波(FW)的正弦图水平条纹去除方法 [B4]

remove_stripe_ti(tomo[, nblock, alpha, ...])

用提塔连科方法去除正弦图上的水平条纹 [B13]

remove_stripe_sf(tomo[, size, ncore, nchunk])

使用平滑过滤方法对原始投影数据进行归一化。

remove_stripe_based_sorting(tomo[, size, ...])

用NghiaVo方法去除正弦图中的全部和部分条纹伪影 [B24] (算法3)。

remove_stripe_based_filtering(tomo[, sigma, ...])

用NghiaVo方法去除正弦图中的条纹伪影 [B24] (算法2)。

remove_stripe_based_fitting(tomo[, order, ...])

用NghiaVo方法去除正弦图中的条纹伪影 [B24] (算法1)。

remove_large_stripe(tomo[, snr, size, ...])

用NghiaVo方法去除正弦图中的大条纹伪影 [B24] (算法5)。

remove_dead_stripe(tomo[, snr, size, norm, ...])

用NghiaVo的方法去除正弦图中无响应和波动的条纹伪影 [B24] (算法6)。

remove_all_stripe(tomo[, snr, la_size, ...])

使用NghiaVo的方法从正弦图中去除所有类型的条纹伪影 [B24] (算法3、4、5和6的组合)。

remove_stripe_based_interpolation(tomo[, ...])

基于插值法从正弦图中去除大多数类型的条纹伪影。

tomopy.prep.stripe.remove_all_stripe(tomo, snr=3, la_size=61, sm_size=21, dim=1, ncore=None, nchunk=None)[源代码]

使用NghiaVo的方法从正弦图中去除所有类型的条纹伪影 [B24] (算法3、4、5和6的组合)。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • snr ( float )--用于定位大条纹的比率。越大越不敏感。

  • la_size ( int )--用于去除大条纹的中值过滤器的窗口大小。

  • sm_size ( int )--用于去除中小条纹的中值过滤器的窗口大小。

  • dim ( {1, 2}, optional )--窗的尺寸。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_dead_stripe(tomo, snr=3, size=51, norm=True, ncore=None, nchunk=None)[源代码]

用NghiaVo的方法去除正弦图中无响应和波动的条纹伪影 [B24] (算法6)。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • snr ( float )--用于检测大条纹位置的比率。越大越不敏感。

  • size ( int )--中值滤波的窗口大小。

  • norm ( bool, optional )--如果为True,则删除剩余条纹。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_large_stripe(tomo, snr=3, size=51, drop_ratio=0.1, norm=True, ncore=None, nchunk=None)[源代码]

用NghiaVo方法去除正弦图中的大条纹伪影 [B24] (算法5)。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • snr ( float )--用于定位大条纹的比率。越大越不敏感。

  • size ( int )--中值滤波的窗口大小。

  • drop_ratio ( float, optional )--要丢弃的像素比率,用于减少条纹的误检。

  • norm ( bool, optional )--如果为True则应用规格化。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_based_filtering(tomo, sigma=3, size=None, dim=1, ncore=None, nchunk=None)[源代码]

用NghiaVo方法去除正弦图中的条纹伪影 [B24] (算法2)。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • sigma ( float )--用于分离每列强度分布的低通和高通分量的高斯窗口的Sigma。推荐值:3->10。

  • size ( int )--中值滤波的窗口大小。

  • dim ( {1, 2}, optional )--窗的尺寸。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_based_fitting(tomo, order=3, sigma=(5, 20), ncore=None, nchunk=None)[源代码]

用NghiaVo方法去除正弦图中的条纹伪影 [B24] (算法1)。适用于去除低通条纹。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • order ( int )--多项式拟合阶。推荐值:1->5

  • sigma ( tuple of 2 floats )--二维高斯窗口在x和y方向上的Sigma。推荐值(3,20)->(10,60)。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_based_interpolation(tomo, snr=3, size=31, drop_ratio=0.1, norm=True, ncore=None, nchunk=None)[源代码]

基于插值法从正弦图中去除大多数类型的条纹伪影。源自中的算法4、5和6 [B24]

在 1.9 版本加入.

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • snr ( float )--用于分割有用信息和噪声的比率。

  • size ( int )--用于检测条纹的中值过滤器的窗口大小。

  • drop_ratio ( float, optional )--要丢弃的像素比率,用于降低条纹错误检测的可能性。

  • norm ( bool, optional )--如果为True则应用规格化。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_based_sorting(tomo, size=None, dim=1, ncore=None, nchunk=None)[源代码]

用NghiaVo方法去除正弦图中的全部和部分条纹伪影 [B24] (算法3)。适用于去除部分条纹。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • size ( int )--中值滤波的窗口大小。

  • dim ( {1, 2}, optional )--窗的尺寸。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_fw(tomo, level=None, wname='db5', sigma=2, pad=True, ncore=None, nchunk=None)[源代码]

基于傅立叶小波(FW)的正弦图水平条纹去除方法 [B4]

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • level ( int, optional )--离散小波变换层数。

  • wname ( str, optional )--小波滤器的类型。‘haar’、‘db5’、sym5‘等。

  • sigma ( float, optional )--傅立叶空间中的阻尼参数。

  • pad ( bool, optional )--如果为True,则通过用零填充来扩展正弦图的大小。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_sf(tomo, size=5, ncore=None, nchunk=None)[源代码]

使用平滑过滤方法对原始投影数据进行归一化。

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • size ( int, optional )--平滑过滤器的大小。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.remove_stripe_ti(tomo, nblock=0, alpha=1.5, ncore=None, nchunk=None)[源代码]

用提塔连科方法去除正弦图上的水平条纹 [B13]

参数:
  • tomo ( ndarray )--3D断层扫描数据。

  • nblock ( int, optional )--块数。

  • alpha ( int, optional )--衰减系数。

  • ncore ( int, optional )--将分配给作业的核心数量。

  • nchunk ( int, optional )--每个核心的区块大小。

返回:

ndarray --修正了3D断层扫描数据。

tomopy.prep.stripe.stripes_detect3d(tomo, size=10, radius=3, ncore=None)[源代码]

检测3D阵列中的条纹。通常应用于归一化投影数据。文中给出了该算法的实现方法 [B10]

该方法适用于强度恒定或变化的全条纹和部分条纹。

在 1.14 版本加入.

参数:
  • tomo ( ndarray )--Float32数据类型的3D断层扫描数据,最好在 [0, 1] 范围,尽管可以接受合理的偏差(例如,对原始数据进行归一化和负对数处理的结果)。投影数据应与 [angle, detY(depth), detX(horizontal)] 轴方向。在此方向上,条纹是沿角度轴的特征。

  • size ( int, optional )-1D中值滤波的像素大小与条纹方向垂直,以将错误检测降至最低。如果数据中有较长或完整的条带,则增加该值。

  • radius ( int, optional )--3D模板的像素大小,用于计算DetX渐变的角度方向和DetX方向之间的平均比率。较大的值可能会影响检测到的条纹的宽度,请使用1、2、3值。

  • ncore ( int, optional )--将分配给作业的核心数量。如果未指定,将使用所有核心。

返回:

ndarray --权重范围为 [0, 1] 使用较小(例如<0.5)的值突出显示条带边缘的Float32数据类型。可以手动设置权重阈值,或者将权重传递给stripe_mask3d函数以进行进一步处理和生成二进制掩码。

抛出:

ValueError -- 如果 tomo 不是三维的。如果 size 是无效的。

tomopy.prep.stripe.stripes_mask3d(weights, threshold=0.6, min_stripe_length=20, min_stripe_depth=10, min_stripe_width=5, sensitivity_perc=85.0, ncore=None)[源代码]

将stripe_Detect3d模块的结果作为输入,并生成带有条纹的二进制3D遮罩。

该方法通过检查三个方向上的权值一致性来消除数据中的非条带特征。文中给出了该算法的实现方法 [B10]

在 1.14 版本加入.

参数:
  • weights ( ndarray )--3D权重数组,这是中给出的stripe_Detect3d模块的结果 [angles, detY(depth), detX] 轴方向。

  • threshold ( float, optional )--指定权重的阈值。此参数定义哪些权重将被视为条纹的潜在候选对象。较低的值(<0.5)将仅产生数据中最显著的条纹。请谨慎增加阈值,因为增加阈值会增加错误检测的概率。可以尝试的合适范围在0.5到0.7之间。

  • min_stripe_length ( int, optional )--条纹相对于“角度”轴的最小长度(像素)。如果数据中有完整的条带,则这可能是“角度”轴大小的50%以上。

  • min_stripe_depth ( int, optional )--条纹相对于“DetY”轴的最小深度,以像素为单位。通常情况下,条带在数据中不会延伸得很深。通过将此参数设置为条纹的大致深度,可以消除更多的错误警报。

  • min_stripe_width ( int, optional )--条纹相对于“DetX”轴的最小宽度,以像素为单位。可以使用此参数将彼此接近的条纹合并在一起。

  • sensitivity_perc ( float, optional )--范围内的值 [0, 100] 它控制条纹的最小长度、深度和宽度参数的严格性。0表示不那么严格。100是更严格的。

  • ncore ( int, optional )--将分配给作业的核心数量。如果未指定,将使用所有核心。

返回:

ndarray --Bool数据类型的二进制掩码,其中条带突出显示为True Value。

抛出:

ValueError -- 如果输入数组不是三维的。如果MIN_STRIPE_LENGTH参数为负,则MIN_STRPE_LENGTH参数为负;如果MIN_STRIPE_Depth参数为负或大于其相应维度(“DETY”),则MIN_STRIPE_LENGTH参数为负;如果MIN_STRIPE_WIDTH参数为负,则MIN_STRIPE_WIDTH参数为零;如果SENSITY_PERC参数不在(0,100]范围内,则MIN_STRPE_LENGTH参数将大于其相应维度(“DetX