Source code for draugr.numpy_utilities.raster_grid_3d_masking

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = "Christian Heider Nielsen"
__doc__ = r"""

           Created on 14-03-2021
           """

from typing import Tuple

import numpy

from warg import Number

__all__ = ["sphere_mask"]


[docs]def sphere_mask( h: Number, w: Number, d: Number, center: Tuple[Number, Number, Number] = None, radius: Number = None, ) -> numpy.ndarray: """ :param d: :param h: :param w: :param center: :param radius: :return:""" if center is None: # use the middle of the image center = (int(w / 2), int(h / 2), int(d / 2)) if radius is None: # use the smallest distance between the center and image walls radius = min( center[0], center[1], center[2], w - center[0], h - center[1], d - center[2] ) y, x, z = numpy.ogrid[:h, :w, :d] dist_from_center = numpy.sqrt( (x - center[0]) ** 2 + (y - center[1]) ** 2 + (z - center[2]) ** 2 ) return dist_from_center <= radius
if __name__ == "__main__": print(sphere_mask(9, 9, 9))