File size: 1,068 Bytes
8444121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import nibabel as nib
import numpy as np
from skimage.transform import resize

def load_nifti(file_path):
    """Load a NIfTI file and return it as a numpy array."""
    nifti = nib.load(file_path)
    return nifti.get_fdata()

def preprocess_nifti(nifti_array, target_size=(256, 256)):
    """Preprocess the NIfTI array by selecting a middle slice, resizing and normalizing."""
    # Select the middle slice if it's a 3D volume
    if nifti_array.ndim == 3:
        middle_slice = nifti_array.shape[2] // 2
        nifti_array = nifti_array[:, :, middle_slice]
    
    # Resize the image
    resized = resize(nifti_array, target_size, mode='constant', preserve_range=True)
    
    # Normalize the image
    normalized = (resized - np.min(resized)) / (np.max(resized) - np.min(resized))
    
    return normalized.astype(np.float32)

def load_and_preprocess_nifti(file_path, target_size=(256, 256)):
    """Load a NIfTI file, preprocess it, and return as a numpy array."""
    nifti_array = load_nifti(file_path)
    return preprocess_nifti(nifti_array, target_size)