Можно ли применить матрицу произвольного преобразования к изображению в 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