我有一个长方体(红点)(XYZvox)的8个顶点,每个顶点之间的距离以毫米为单位(vox到mm),我使用4d变换矩阵(M)在3d空间中进行变换。我真的很难为变换的顶点计算出新的体素到毫米转换。我该如何解决这个问题?我认为它应该相对简单:
XYZvox =[ 1 1 1 1 409 409 409 409
1 1 389 389 1 1 389 389
1 162 1 162 1 162 1 162]
M =[0.0337 0.0958 -0.9616 -2.5360
0.3706 0.0107 0.1012 -150.2009
0.0201 -0.3571 -0.2550 -231.0513
0 0 0 1.0000]
for i=1:8
poi1=XYZvox(:,i);
poi2=[XYZvox(:,i)];
poi2(4,1)=1;
poi_trans=M*poi2;
poi_trans=poi_trans(1:3);
scatter3(poi1(1),poi1(2),poi1(3),'red','filled'); xlabel('x'); hold all;
scatter3(poi_trans(1),poi_trans(2),poi_trans(3),'green','filled'); xlabel('x'); ylabel('y'); zlabel('z');
end
编辑:原始顶点是成像仪坐标中3d成像数据堆栈的限制,转换后的数据是世界坐标。如果没有旋转,只有缩放和平移,我可以计算出新的pix / vox-> mm转换,但因为音量也是旋转的,这使得它变得更加困难