Как создать nibabel Nifti1Image из хранилища объектов напрямую - PullRequest
0 голосов
/ 09 апреля 2019

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

...