Пытаюсь зарегистрировать два тома (vol1
и vol2
). Размер vol1
составляет 40x40x24
. Размер vol2
равен 64 x64x11
.
Пока что я извлек их особенности, а затем сопоставил их. Теперь у меня есть набор соответствующих точек в двух томах, который хранится в pairs
, который представляет собой матрицу размера 100x6
(каждая строка pairs
равна [x y z X Y Z]
, где (x,y,z)
- координаты вокселя в vol1
, а [X Y Z]
- соответствующий воксель в vol2
) . Затем, используя алгоритм RANSAC, я вычислил трехмерное аффинное преобразование T. Например, T выглядит примерно так:
T=
2.7791 0.8204 0.7561 -61.6055
-0.4418 2.2663 -1.9882 29.0375
-0.2120 0.6568 -0.7041 6.2702
0 0 0 1.0000
У меня есть пара вопросов. Во-первых, правильно ли выглядит эта матрица аффинного преобразования? Мне это кажется правильным. Если это правильно, то почему функция affine3d < / strong> в MATLAB, который вычисляет трехмерное аффинное преобразование, имеет столбец нулей вместо строки нулей (как в T выше)? Похоже, транспонирование моего преобразования T.
Если мое преобразование верное, возникает другая проблема. Я попытался выполнить повторную выборку vol1 с помощью преобразования T, но вычисленные координаты вокселей отрицательны !!! Я так растерялся. Я не знаю, что вызывает эту проблему.
Вот мой код. Пожалуйста, дайте мне знать, если у вас возникнут проблемы.
function [ vol1R ] = resampling(vol1, vol2, T)
[size1, size2, size3] = size(vol2);
vol1R = zeros(size1,size2,size3); % Initializing registered vol1
for i= 1:size1
for j= 1:size2
for k = 1:size3
V = [i;j;k;1]; % V is the coordinates of a voxel on the registered vol1
% correspoding to voxel v on the vol1
% V = T * v : Relationship between v and V
v = T\V; % Problem occurs here!!!!!!! v has some negative values
% v (coordinates in vol1)
% continue
end
end
end