2013-12-11 1 views
2

뼈 영역을 이진화하고자합니다 (뼈 영역을 255로하고 다른 영역을 0으로 만듭니다). 그래도 그레이 레벨 분포는 간단하지 않습니다. 값을 찾고 임계 값을 찾으면 충분합니다 (하반부에서는 밝아집니다). 그래서 만약 내가 완전한 윤곽선을 감지하고 이러한 윤곽선 안의 공간을 채우면 더 쉬운 방법이 될 수 있다고 생각합니다.canny edge 감지를 사용하고 윤곽선이 폐색되지 않은 경우 원형 윤곽선을 완성하십시오.

원본 이미지 :

enter image description here

검소한 에지 검출을 적용한 후 :

enter image description here

나는 폐색 뼈의이 윤곽을 가지고 할 수있는 합리적인 방법을 찾기 위해 노력했지만 실패했습니다 . 제발 조언이 있으면주세요. 고맙습니다.

두 개의 뼈가 겹치는 경우에도 문제를 해결해야합니다. 내가 뼈 한 쌍 함께 중복 분리 할 수 ​​있습니다 어떻게 고려하고

을 (내가 .. 내가 아주 처음부터이 문제를 언급하지 않았다 사과) : http://i.imgur.com/dI5s11L.png

+0

중복을 분리하는 두 번째 질문에 대해 새 게시물을 시작하는 것이 좋습니다. 원래의 질문과는 다른 것으로 보입니다. – lennon310

답변

1

은 사용을 고려 Active Contours (snakes)

로컬 그라디언트와 전반적인 "부드러움"을 모두 고려하여 "퍼지"가장자리를 계산합니다 (이 설명은 그다지 정확하지 않습니다. 개념을 이해하기 만하면됩니다).

여러 가지 비슷한 경우에 시도해 보았습니다. 좋은 결과를 얻었습니다.

+1

이 방법은 나에게 익숙하지 않지만 이것을 확인해 보겠습니다. 감사합니다. –

0

원시 이미지의 하위 Contrast to Noise Ratio은 임계 값 설정이 모든 이미지에 견고하지 않을 수 있으므로 개체 추출에 어려움을 겪습니다. 그러나 나는 당신의 현재 인물에서 뼈를 추출하려고했습니다. 내 처리에는 두 가지 트릭이 적용됩니다. (1) 이미지의 비선형 변환으로 배경과 비교하여 강도가 낮은 뼈를 향상시킵니다. (2) canny edge detector가 적용된 후에 가능한 뼈 부위에서 이미지의 테두리에 제로 패딩을합니다.

I=rgb2gray(I); 

I=double(I); 
I=I.^0.6; % non linear transform before canny edge detector 
BW=edge(I,'canny'); 

%%% padding at the possible bone regions 
BW(1,BW(2,:)==1)=1; 
BW(end,BW(end-1,:)==1)=1; 
BW(BW(:,2)==1,1)=1; 
BW(BW(:,end-1)==1,end)=1; 

%%% padding in order to fill in the bone boundaries 
bw2=imfill(padarray(BW,size(BW),'symmetric'),'holes'); 
bw2=bw2(size(bw,1)+(1:size(bw,1)),size(bw,2)+(1:size(bw,2))); 

bw2=bwareaopen(bw2,200); % remove the too small regions 
MASK=I>10; % remove the background with very low intensity 
figure,imshow(bw2.*MASK) 

결과 : 아래에있는 내 코드를 참조

enter image description here

모든 것이 하나 개의 뼈 경계를 제외하고 잘 보이는 것은 조금 지저분하다.