Существуют варианты загрузки файлов nii
по имени файла из файлов .nii
или .nii.gz
, расположенных в системе. Вы бы просто использовали nib.load (имя файла) .
Однако при работе с Google Cloud Storage (или любым другим хранилищем объектов, например Amazon S3) напрямую из Python вы можете пропустить загрузку данных в локальную файловую систему и затем загрузку в Python. Более того, если вы находитесь в блокноте Google Colap. Возможно, вы не хотите делать это для больших объемов данных.
Nibabel также имеет возможность создавать экземпляр Nifti1Image
непосредственно из объекта с помощью nib.Nifti1Image (dataobj, affine) , где dataobj задается следующим образом:
dataobj: объект
Объект, связанный с данными изображения. Это должен быть какой-то объект, который перенастраивает массив из np.asanyarray. Он должен иметь атрибут формы или свойство
Когда я загружаю данные объекта в записную книжку Colab, у меня появляется google.cloud.Blob
, или у меня есть BytesIO
байтов объект:
from google.cloud import storage
client = storage.Client(project="my_project")
bucket = client.get_bucket('my_bucker')
blob = bucket.blob('data/image.nii.gz') # blob
bytes = io.BytesIO(blob.download_as_string()) # bytes
Как бы я создал Nifti1Image
из этого? Я могу распаковать .nii.gz
, но, думаю, Нибабель сам справится с этим. Я не уверен, какую процедуру я бы использовал, чтобы создать правильный ndarray для подачи в nib. Nifti1Image()
. Я только что попробовал кучу трансформаций, но я что-то упустил.