2012-12-03 9 views
0

나는 복셀 값이 1 (나머지는 0) 입방 행렬을가집니다. 볼록 선 안의 복셀이 모두 값 1 인 같은 크기의 행렬이 필요합니다. 나는 비슷한 예를 보았고 적응했다 : 만약 내가 다음과 같이 this을하면 그 것이 효과가 있는가? 볼록 포 내부의 복셀 모두 잘 연결되어야합니다 :3D 볼록한 내부의 복셀

%의 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));** 

가 두 번째 질문

0과 1의 입방 행렬이다? 그러면 다음 함수로 인해 유클리드 또는 맨하탄과 같은/팔각형이 연결된 객체가 두 개 있습니다.

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

답변

0

은 가정 :
이 - 해상도가 너무 높지 않은
이 (당신은 3D 복셀을 사용하기 때문에 내가 생각하는) - 당신이 대략 솔루션에 만족
- 속도 문제

아니다

형태소 연산자를 사용할 수 있습니다. 회전 된 두꺼운 구조 요소 세트로 복셀을 두껍게 만들면 대략적인 볼록 선체가됩니다.

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

그렇지 않으면, 3D 점을 생성하고 들로네를 계산하여 옵션도 reasonnable 옵션 :

차원에서 이러한 계산의 예

은에 표시됩니다. 당신이 보여준 코드를 사용해 볼 수 있습니다.

+0

위의 조작은 볼록 선체를 제공하지 않는다는 것을 알고 있습니다. 그러나 'octogon'볼록 선체! – anthony