0

値のボクセルの立方行列があります1(残りは です0)。凸包の内側のボクセルがすべて value である、同じサイズの行列が必要です1。同様の例を見て、それを適応させました。これを次のようにすると、うまくいきますか?

% im3D は 0 と 1 の 3 次行列です

**[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));**

2 番目の質問: 凸包内のボクセルはすべて接続されているはずですよね? 次に、次の関数が 2 つの接続されたオブジェクトを提供するのはなぜですか...ユークリッドまたはマンハッタンのような/八角形のいずれかですか?

**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**
4

1 に答える 1

0

仮定:
- 解像度が高すぎない (3D ボクセルを使用しているためだと思います)
- おおよその解に満足しています
- 速度は問題ではありません

次に、形態学的演算子を使用するオプションを試すことができます。一連の回転された肥厚構造要素を使用してボクセルを肥厚することにより、おおよその凸包になります。

2D でのこのような計算の例は、次の場所に示されています。

http://homepages.inf.ed.ac.uk/rbf/HIPR2/thick.htm

それ以外の場合は、3D ポイントを生成して delaunay を計算するオプションも妥当なオプションです。あなたが示したコードを試してみたいと思うかもしれません。

于 2012-12-04T01:11:17.723 に答える