2013-08-06 3 views
1

3D "볼륨"에서 물건을 감거나 감싸는 도구를 개발 중입니다. "슬라이스"1과 3에 라벨을 지정하고 그 정보에서 슬라이스 2를 "채우는"방법으로 시간을 절약하고 싶습니다. 이들은 확인하고 빨리3D 공간에서 두 비행기 사이 보간

1. slice2 = slice1 AND slice3 (gets the overlap between the two) 
2. slice2 = slice2 OR slice3 (true for any pixel true in either image) 

, 그러나 나는 모양에게 둘 사이의 평균/보간의 일종을함으로써보다 지능적인 일을하는 것을 선호 :

두 쉬운 솔루션에 있습니다. 비행기를 볼 수있는 평면과 공중의 일부 고원을 연결하는 벼랑면을 찾으려는 것으로 상상할 수 있습니다.

예 :이 3d 매트릭스에서 조각 2 ~ 4를 채 웁니다. (montage을 사용하여 생성) slices one through five

완전히 새로운 아이디어를 내놓을 수 있습니다. 나는 지금까지 나의 생각을 넣을 것이다.

내가 생각한 몇 가지 물건은 응답자에게 도움이 될 수 있지만 성공적으로 사용할 수는 없습니다.
- 각 이미지에서 흑백 이미지를 만들 수 있습니다.
- 이미지 (또는 가중 평균)를 "평균"수 있습니다.

내가 지금까지있어 최고 :

이 이미지를 추가합니다. 중첩과 두 개의 경계를 제공합니다.
- 내부는
- 내부 (의심스러운 부분은 내부)입니다.
또한이 의심스러운 영역의 마스크 인> 0 AND < 2 영역을 마스크 할 수 있습니다.
는 두 경계 이미지에 bwdist를 실행하고 그 마스크 :

masked bwdist image

하지만, 여기에서 이동하는 방법을 잘하지 않습니다. 해당 영역을 따라 "최대"윤곽선을 잡은 선은 효과가 있지만 그 방법을 강력하게 수행 할 방법이 확실하지 않습니다.

내 아이디어 또는 다른 아이디어를 수정하는 데 대한 아이디어는 언제든지 환영합니다!

감사합니다.

+1

(마스크, 'skel이'는 INF)는 확인 대답을합니다. 그 작업을하려면 슬라이스 [1 5]에 적용하여 슬라이스 3을 얻습니다. 그런 다음 [1 3]을 슬라이스하여 2를 얻으십시오. – Frederick

답변

2

독서 후 오늘 이것을 알아 냈습니다. "Schenk 등의"의학 이미지의 3D 개체의 반자동적인 세분화 " al.

여기에 내가 쓴 함수는 다음과 같습니다`bwmorph 사용

function out = interp_shape(top,bottom,num) 


if nargin<2; 
    error('not enough args'); 
end 
if nargin<3; 
    num = 1; 
end 
if ~num>0 && round(num)== num; 
    error('number of slices to be interpolated must be integer >0'); 
end 

top = signed_bwdist(top); % see local function below 
bottom = signed_bwdist(bottom); 

r = size(top,1); 
c = size(top,2); 
t = num+2; 

[x y z] = ndgrid(1:r,1:c,[1 t]); % existing data 
[xi yi zi] = ndgrid(1:r,1:c,1:t); % including new slice 

out = interpn(x,y,z,cat(3,bottom,top),xi,yi,zi); 
out = out(:,:,2:end-1)>=0; 

function im = signed_bwdist(im) 
im = -bwdist(bwperim(im)).*~im + bwdist(bwperim(im)).*im; 

enter image description here

관련 문제