Я меняю размер вокселя некоторых трехмерных объемов. Как мне отредактировать поле pixdim
и вычислить новое affine
?
У меня есть некоторые объемы MR, которые являются анизотропными, размеры вокселей, скажем, 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
. Как это дело?
Как мне явно изменить размер вокселя?