私はそれが働いて得ることができた:
function [X,Y,Z,C] = extract_surface(file_name,slice_number,voxel_size)
LT = imread(file_name);%..READ THE 2D MAP
BW = im2bw(LT,1);%..THRESHOLD TO BINARY
B = bwboundaries(BW,8,'noholes');%..FIND THE OUTLINE OF THE IMAGE
X = B{1}(:,1);%..EXTRACT X AND Y COORDINATES
Y = B{1}(:,2);
indices = sub2ind(size(LT),X,Y);%..FIND THE CORRESPONDING LINEAR INDICES
C = LT(indices);%..NOW READ THE VALUES AT THE OUTLINE POSITION
Z = ones(size(X))*slice_number;
私は、私は改善できる唯一のことはして接続されている散布図内のすべてのこれらの点を持つことである今
figure
scatter3(X,Y,Z,2,C)
でこれをプロットすることができます表面。あなたがこの目的のためにdelaunay3
を提案した@upperBound - これをどうやってどうやって解決するのか分かりません。あなたはヒントを持っていますか?
これは、 'tri = delaunay(X、Y);'の後ろに 'trisurf(tri、X、Y、Z、C、 'EdgeAlpha'、0、 'FaceColor'、 'interp')'が続きます。しかし、結果として生じるサーフェスにはアーチファクトがあり、このメッセージが表示されます: "警告:重複したデータポイントが検出されました 三角測量の頂点にマップされないデータポイントがあります この現象を回避するには、 DELAUNAYを呼び出す前のデータポイント "これは、おそらく、異なるスライスの輪郭が、隣接するzスライス間のxおよびy座標においてかなり類似しているからである。私はUNIQUEを使用できません。何ができますか?何かヒントありがとう。 –