我试图在一个与其方向正交的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))