Newer
Older
from typing import Tuple
import numpy as np
def align_images(
image_1: np.ndarray, image_2: np.ndarray
) -> Tuple[np.ndarray, np.ndarray]:
"""
Center align the image with more slices to the one with fewer slices on the first axis (z-axis).
Parameters
----------
image_1: np.ndarray
the image to be aligned
image_2: np.ndarray
the image to which image_1 is aligned
Returns
-------
Tuple[np.ndarray, np.ndarray]
both images aligned in the order they were put in
"""
# reverse function if image_2 has more slices
if image_2.shape[0] > image_1.shape[0]:
return align_images(image_2, image_1)[::-1]
# central slice of image 2
c_2 = image_2.shape[0] // 2
# image to the left and right of the center
left = c_2
right = image_2.shape[0] - c_2
# central slice of image 1
c_1 = image_1.shape[0] // 2
# select center and same amount to the left/right as image_2
return image_1[(c_1 - left) : (c_1 + right)], image_2