Как создать 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(), Я только что перепробовал кучу трансформаций, но я что-то упустил.

0 ответов

Другие вопросы по тегам