How to display smooth 3D surface from 3D binary matrix from 2D slices ?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello,
I extracted a contour of a vessel on successive 2D images acquired along z-axis.
I get a 202x194x1494 binary matrix of the contour of the vessel and would like to display it (see attached).
I tried this based on isosurface function.
[lmax,cmax,nbframe] = size(maskcontour);
xb = linspace(xstart,xend,cmax);yb = linspace(ystart,yend,lmax);
v= smoothdata(maskcontour,3);
fv = isosurface(xb,yb,vz*(1:nbframe),maskcontour,0);
p = patch(fv,'FaceColor','red','Linestyle','none');
view(3);
axis equal
camlight
lighting gouraud
Resulting in this image.
![Vesselcontour.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/260317/Vesselcontour.jpeg)
I would like a smooth surface with no holes on it. Can you help me ?
댓글 수: 0
답변 (1개)
KALYAN ACHARJYA
2020년 1월 7일
Try with increasing cmax & lmax?
xb = linspace(xstart,xend,cmax);
yb = linspace(ystart,yend,lmax);
댓글 수: 5
darova
2020년 1월 8일
Maybe griddata is not the better way
n = 50;
r = rand(1,n)+5;
t = linspace(0,2*pi,n);
[x,y] = pol2cart(t,r);
z = rand(1,n)*20;
zz = linspace(min(z),max(z),20);
tt = linspace(0,2*pi,50);
[Z,T] = meshgrid(zz,tt);
R = griddata(t,z,r,T,Z);
[X,Y] = pol2cart(T,R);
plot3(x,y,z,'.r')
hold on
surf(X,Y,Z)
hold off
axis equal
What about alphaShape?
참고 항목
카테고리
Help Center 및 File Exchange에서 3-D Volumetric Image Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!