Как создать nibabel Nifti1Image из хранилища объектов напрямую
Есть варианты загрузки nii
файлы по имени из .nii
или же .nii.gz
файлы, расположенные в системе. Вы бы просто использовали nib.load (имя файла).
Однако при работе с Google Cloud Storage (или любым другим хранилищем объектов, например Amazon S3) непосредственно из Python вы можете пропустить загрузку данных в локальную файловую систему и затем загрузку в Python. Более того, если вы находитесь в блокноте Google Colap. Возможно, вы не хотите делать это для больших объемов данных.
Нибабель также имеет возможность создать 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()
, Я только что перепробовал кучу трансформаций, но я что-то упустил.