Source code for monalisa.image._im_crop
"""Port of src/image123/bmImCrope.m."""
import numpy as np
from monalisa._mat import vec
from monalisa.array._block_reshape import block_reshape
[docs]
def im_crop(arg_im, N_u, n_u):
"""Crop the centered region of size ``n_u`` from images of size ``N_u``."""
N_u = vec(N_u)
n_u = vec(n_u)
if np.array_equal(N_u, n_u):
return arg_im
im = block_reshape(arg_im, N_u)
sl = tuple(slice(int(N / 2 - n / 2), int(N / 2 + n / 2)) for N, n in zip(N_u, n_u, strict=True))
return im[sl + (slice(None),) * (im.ndim - len(sl))]