def median_intensity_projection(stack):
    """Return mean intensity projection of a stack.

    :param stack: 3D array from which to project third dimension
    :returns: :class:`jicbioimage.core.image.Image`
    """
    return reduce_stack(stack, np.median)
 def test_reduce_stack(self):
     from jicbioimage.core.util.array import reduce_stack
     zslice0 = np.array(
         [[0, 1, 2],
          [0, 1, 2],
          [0, 1, 2]], dtype=np.uint8)
     zslice1 = np.array(
         [[2, 1, 0],
          [2, 1, 0],
          [2, 1, 0]], dtype=np.uint8)
     zslice2 = np.array(
         [[0, 0, 0],
          [0, 0, 0],
          [3, 3, 3]], dtype=np.uint8)
     zstack = np.dstack([zslice0, zslice1, zslice2])
     expected = np.array(
         [[2, 1, 2],
          [2, 1, 2],
          [3, 3, 3]], dtype=np.uint8)
     max_projection = reduce_stack(zstack, max)
     self.assertTrue(np.array_equal(expected, max_projection))