Можно ли применить матрицу произвольного преобразования к изображению в SPM?

У меня есть несколько специфическая задача, которую я хотел бы выполнить в SPM.

В основном у меня есть входной файл NII scan.nii и я хотел бы применить к нему произвольное аффинное преобразование, определенное x y z p r yw,

x,y,z,p,r,yw представлять переводы и повороты в каждой степени свободы (так сказать x=2mm, p=0.7deg и так далее). Я могу получить соответствующую матрицу с M=spm_matrix([x y z p r yw]), но я не знаю, как на самом деле я могу применить эту матрицу к моему сканированию.

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

Спасибо за помощь.

1 ответ

Аффинная матрица работает с координатами изображения, а не с самим изображением. Вам необходимо умножить аффинную матрицу на список координат вашего изображения, после чего вы получите новые координаты, соответствующие исходным координатам. Кроме того, перевод выполняется путем умножения 4-го столбца аффинной матрицы на дополнительные 1находится в последнем ряду вашего списка индексов (каждое совпадение по ним, по одному векторному умножению от этой матрицы).

Итак, вам нужно составить список ваших трехмерных координат в виде матрицы 3xn, а затем добавить строку 1находится внизу, и умножьте аффинную матрицу 4x4 на матрицу координат 4xn.

Например, скажем, ваше изображение 4x4x4:

[X Y Z]=ndgrid(1:4);
ind=reshape(cat(3,X,Y,Z),[],3)';  % list of all of the indices in the image
ind=[ind; ones(1,size(ind,2))];   % add a row of `1`s
ind_aff=m*ind;

Нижний ряд ind_aff является 1и вы можете игнорировать это. Первые 3 строки теперь являются новыми координатами, а каждый столбец - это координаты значения, которое было скоординировано с тем же номером столбца в ind матрица.

Например, если

m=spm_matrix([3 1 10 0.5 0.9 0.3])

Вы получите это преобразование:

% old coordinates (column-wise)
ind(1:3,1:3)=

     1     2     3
     1     1     1
     1     1     1

% new coordinates (column-wise)
ind_aff(1:3,1:3)=

    4.5609    5.1547    5.7486
    1.4073    0.7892    0.1711
    9.3693    8.8542    8.3392
Другие вопросы по тегам