MATLAB:将3d平面转换为3d矩阵像素位置

时间:2018-04-05 18:49:28

标签: matlab matrix vector plane orthogonal

我试图在一个与其方向正交的3d矩阵(227x297x187二进制)中得到一个细长物体的切片。输出图像将是2d横截面。

我认为最好的方法是找到一个矢量,在物体上的某个点给出方向(因此,对于第40个切片的横截面,我得到了第30和第50个切片的质心位置并找到它们之间的矢量),然后获得对应于在所需切片处与该矢量正交的平面的像素列表(沿第40个切片处的物体的质心),然后检索与这些位置相对应的矩阵中的值。假设我附加的代码找到了平面,我可以用surf()绘制它,但不知道如何将其转换为矩阵中的像素位置以生成2d横截面的值。

startslice=30;
endslice=50;

startnums=bwconncomp(binMATRIX(:,:,startslice));
startnums=regionprops(startnums,'Centroid');

endnums=bwconncomp(binMATRIX(:,:,endslice));
endnums=regionprops(endnums2,'Centroid');

midnums3=bwconncomp(binMATRIX(:,:,(startslice+(endslice-startslice)/2)));
midnums3=regionprops(midnums,'Centroid');

startstuff=[startslice, startnums.Centroid];
endstuff=[endslice, endnums.Centroid];
midstuff=[(startslice+(endslice-startslice)/2), midnums.Centroid];

nullstuff=null(endstuff-startstuff);
A=nullstuff(:,1);
B=nullstuff(:,2);
[x,y]=meshgrid(A,B);
z=1-x-y;
surf(x+midstuff(1),y+midstuff(2),z+midstuff(3))

0 个答案:

没有答案