我有一个值体素的三次矩阵1
(其余的是0
)。我需要一个相同大小的矩阵,其中凸包内的体素都是有价值的1
。我看过一个类似的例子并对其进行了修改:如果我对以下内容执行此操作,那会起作用吗?
% im3D 是一个零和一的三次矩阵
**[x,y,z]=ind2sub(size(im3D), find(im3D==value));
pointMatrix(:,1) = x;
pointMatrix(:,2) = y;
pointMatrix(:,3) = z;
[K,V] = convhull(x,y,z);
dt = DelaunayTri(pointMatrix);
[X,Y,Z] = meshgrid(1:size(im3D));
simplexIndex = pointLocation(dt,X(:),Y(:),Z(:));
filled_chull = ~isnan(simplexIndex);
filled_chull = reshape(filled_chull,size(X));**
第二个问题:凸包内的体素应该都是连接的吧?那么为什么下面的函数给了我两个连接的对象......欧几里得或曼哈顿式/八角形?
**function [nEL, nVOX] = im3D_countobj(im3D,METRIC)
% set METRIC either 'euclidean' or 'octagon'
ES = mmsedisk(1,'3D',METRIC);
q = bwlabeln(im3D,mmseshow(ES));
nEL = max(max(max(q)));
nVOX = size(find(im3D),1);
end**