Я изменяю размер вокселя некоторых 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
. Как это так?
Как явно изменить размер вокселя?