Есть ли способ отредактировать изображения NIfTI для удаления фрагментов?

#png #nifti

Вопрос:

Многие медицинские изображения, которые у нас есть, состоят из черных изображений. Я попытался устранить их, преобразовав файлы NIfTI в серию PNG, удалив PNG и преобразовав обратно. Кто-нибудь знает лучший способ сделать это?

Ответ №1:

Вы могли бы сделать это с помощью SimpleITK, но вы заменяете черные изображения чем-то другим? Или вы просто сжимаете оставшиеся изображения вместе? Это испортит 3d-положение 2d-срезов.

Если вы хотите просто взять черный ломтик и свернуть оставшиеся ломтики, вы сделаете что-то вроде этого:

 import SimpleITK as sitk

img = sitk.ReadImage("your_3d_image.nii")

slices = []

# Extract the Z slices into a list
for i in img.GetDepth():
    slices.append(img[i])

# Remove whichever slices you don't like
slices.remove(42)

# Create a new 3d image by joining together the remaining slices
new_img = sitk.JoinSeries(slices)

sitk.WriteImage(new_img, "your_new_3d_image.nii")
 

Комментарии:

1. да, действительно, простое удаление фрагмента без учета влияния на сопоставление изображения с миром может привести к возникновению всевозможных проблем…

2. Спасибо, это действительно полезно.

Ответ №2:

Достаточно легко извлечь фрагмент в python/matlab:

 import nibabel as nb;
import numpy as np;
img    = nb.load ( "MNI152_T1_2mm_brain_mask.nii.gz" );
imgvol = np.array ( img.dataobj );
imgvol = imgvol [ :, :, 1:90 ]; # remove 1st and last
newimg = nb.Nifti1Image ( imgvol, img.affine );
newimg.to_filename ( "/tmp/newimg.nii.gz" );
 

или что-то подобное, но (при условии, что вы получаете 3D-сканирование и что каждый срез соответствует определенной позиции): это эффективно перемещает все срезы выше тех, которые вы удаляете, вниз на 1 позицию среза каждый.

Это имеет эффект, который вы можете сразу увидеть в (лучшем) средстве просмотра: начало системы координат (заданной формами Q и S) теперь находится в другой, более высокой точке изображения.

Я не думаю, что это то, чего ты хочешь? В противном случае это все, что нужно сделать.