这个问题需要旋转作为 3D 矩阵给出的图像,其中第一维是宽度,第二维是高度,第三维包含 x,y,z 坐标。
目前我正在使用以下代码绘制表面
Fig.sub1im=surf(ToFparam.ROI.XYZ(:,:,1),ToFparam.ROI.XYZ(:,:,2),ToFparam.ROI.XYZ(:,:,3),zeros(ToFparam.ROI.height,ToFparam.ROI.width,3));
现在,我有一个 100x50x3 的 3-D 矩阵。所有 x 数据都在第 3 维的第一页或层中,y 是第二层...z 第三层。现在我需要对 xy 和 z 数据应用 3x3 旋转矩阵。我知道如何重塑矩阵来做到这一点,我认为....只需将其放入 3 行 x...50000 列矩阵,然后应用矩阵。
接下来我需要循环更新我的情节。然后我将执行以下操作,其中还包括了我的新矩阵计算。
ToFparam.ROI.XYZ_Vector = ToFparam.ROI.XYZ;
ToFparam.ROI.XYZ_Vector = reshape(ToFparam.ROI.XYZ, [size(ToFparam.ROI.XYZ,1)*size(ToFparam.ROI.XYZ,2),3]);
ToFparam.ROI.XYZ_Vector = ToFparam.ROI.XYZ_Vector';
ToFparam.ROI.XYZ_DICOM = inv(DICOMparam.calib.navi2dicom(1:3,1:3))*inv(Naviparam.data.Endo_RefHomMat(1:3,1:3))*ToFparam.ROI.XYZ_Vector;
%refresh plot standard cuts
set(Fig.sub1im,'CData', Color);
set(Fig.sub1im, 'XData', ToFparam.ROI.XYZ_DICOM(1,:) + DICOMPos(1)/Fig.sub2samp);
set(Fig.sub1im, 'YData', ToFparam.ROI.XYZ_DICOM(2,:) + DICOMPos(2)/Fig.sub2samp);
set(Fig.sub1im, 'ZData', ToFparam.ROI.XYZ_DICOM(3,:) + DICOMPos(3)/Fig.sub2samp);
当我更新我的情节时,我没有收到任何错误,但它看起来并不正确。似乎它对我的数据产生了巨大的偏移,并将其定位在我不希望它定位的地方。我不希望旋转矩阵影响缩放,只是方向。让我知道是否有更快/更好的方法来完成这个冲浪情节,谢谢!