Как мне отредактировать и сохранить размер вокселя и соответствующий аффин 3D-объема в формате Nifti в python? - PullRequest
0 голосов
/ 20 апреля 2019

Я изменяю размер вокселя некоторых 3D-томов. Как мне отредактировать поле pixdim и вычислить новое affine?

У меня есть некоторые объемы МР, которые являются анизотропными, размеры вокселей, скажем, 0.5 x 0.5 x 3 мм. И у меня есть некоторый код для интерполяции их в изотропные (например, 0.5 x 0.5 x 0.5 мм воксел) объемы. Проблема в том, что когда мне нужно сохранить файл, мне нужно вычислить аффинное отображение, чтобы сопоставить теперь более плотные вокселы в пространстве ijk со ссылкой на пространство xyz. Как мне это сделать?

Во-первых, я думаю использовать старый аффин и вычислить новый аффин.

Например, если том V имеет форму 256 x 256 x 20 вокселей с 0.5 x 0.5 x 3 размером вокселей и интерполирован в объем U 256 x 256 x 120 вокселей с 0.5 x 0.5 x 0.5 вокселями.

Старый аффин будет делать [255 255 19]OA = [X Y Z], а новый аффин должен делать [255 255 119]NA = [X Y Z], и мы знаем AX=B X=inverse(A)B.

Таким образом, новый аффин должен быть inverse([255 255 119])[X Y Z]. Однако обратная матрица существует только для квадратной матрицы. Не будет такой вещи inverse([255 255 119]).

И кажется, что в python-nibabel matlab-nifti-toolbox и так далее нет функции set_voxel_size. Как это так?

Как явно изменить размер вокселя?

...