relabeller.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:LabelsManager 作者: SebastianoF 项目源码 文件源码
def relabel_half_side_one_label(in_data, label_old, label_new, side_to_modify, axis, plane_intercept):
    """

    :param in_data:
    :param label_old:
    :param label_new:
    :param side_to_copy:
    :param axis:
    :param plane_intercept:
    :return:
    """

    msg = 'Input array must be 3-dimensional.'
    assert in_data.ndim == 3, msg

    msg = 'side_to_copy must be one of the two {}.'.format(['below', 'above'])
    assert side_to_modify in ['below', 'above'], msg

    msg = 'axis variable must be one of the following: {}.'.format(['x', 'y', 'z'])
    assert axis in ['x', 'y', 'z'], msg

    positions = in_data == label_old
    halfed_positions = np.zeros_like(positions)
    if axis == 'x':
        if side_to_modify == 'above':
            halfed_positions[plane_intercept:, :, :] = positions[plane_intercept:, :, :]
        if side_to_modify == 'below':
            halfed_positions[:plane_intercept, :, :] = positions[:plane_intercept, :, :]
    if axis == 'y':
        if side_to_modify == 'above':
            halfed_positions[: ,plane_intercept:, :] = positions[:, plane_intercept:, :]
        if side_to_modify == 'below':
            halfed_positions[:, plane_intercept, :, :] = positions[:, plane_intercept, :]
    if axis == 'z':
        if side_to_modify == 'above':
            halfed_positions[ :, :, plane_intercept:] = positions[ :, :, plane_intercept:]
        if side_to_modify == 'below':
            halfed_positions[:, :, :plane_intercept] = positions[:, :, :plane_intercept]

    new_data = in_data * np.invert(halfed_positions) + label_new * halfed_positions.astype(np.int)
    return new_data
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号