如何实现更快的3 d翻译?

5视图(30天)
我正在做一个GUI允许用户做形象翻译的3 d图像数据集。
我希望用户能够直观地看到转变的影响(用XY, XZ和YZ片)。
我试着这对3 d:
% 3 d变换:
trslt =[眼睛(3)xyz ';0 0 0 1)';
tform = maketform (仿射的,trslt);
data = tformarray(数据、tform rsmp [2 1 3], [2 1 3], sizXYZ ([2 1 3]), [], 0);
然而,执行下面的2 d操作运行在一小部分的时间:
xyTform = maketform (“射影”,1;1胶水;sizX 1;sizX胶水]、[1 + x + y;1 + x胶水+ y;sizX 1 + x + y;sizX + x胶水+ y]);
zTform = maketform (“射影”,1;1胶水;发嘶嘶声1;发嘶嘶声胶水]、[1 + z 1;1 + z胶水;发嘶嘶声+ z 1;发嘶嘶声+ z胶水]);
data = tformarray(数据、zTform rsmp 1 [3], [3 1], sizXYZ (1 [3]), [], 0);
data = tformarray(数据、xyTform rsmp 2 [1], [2 1], sizXYZ (2 [1]), [], 0);
有什么更好的(或速度)的方法吗?
编辑:澄清一下,我使用这个变换允许转移“分数”的像素数量。我知道这将是更容易如果改变整个像素。

接受的答案

肖恩·德Wolski
肖恩·德Wolski 2013年1月28日
可能 能够获得更好的速度 griddedInterpolant () ,特别是如果你有为此多次在同一查询点。
3评论
克里斯多夫
克里斯多夫 2013年1月28日
编辑:克里斯多夫 2013年1月28日
我用DICOM图像数据从PET / MR扫描。矩阵的大小是377 x377x127
~ 8秒的时间就在我的机器上有两个2 d转换和~ 20秒3 d变换。
只有采取~ 2 - 3秒使用griddedInterpolant ()。
我可能尝试R2013a预映。

登录置评。

答案(1)

vishal所在
vishal所在 2015年6月5日
你好克里斯多夫,你怎么读取dicom图像的?有没有直接命令获取矩阵尺寸377 * 377 * 127 ?或者你缩放图像三维数组吗? ?给定的代码吗? ? ?fid = fopen (1. im, ' r ');%了头后的第一个字节状态= fseek(支撑材,1024,“转炉”);% =从文件中读数据读取数据(fid);%关闭文件文件关闭(fid);%重塑数据到一个3 d数组data3d =重塑(128128128年数据);

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!