2013-05-19 1 views
1

빨강, 초록, 파랑 ​​채널 및 이진 버전의 이미지가 있습니다.Matlab - 이진 이미지를 사용하여 3D 이미지를 마스크하는 방법

내가 원하는 것은 이진 이미지가 일반 이미지의 마스크로 작동하도록 두 이미지를 연결하는 것입니다.

이진수로 1 인 색상 이미지의 픽셀 만 선택하려고합니다.

cat 또는 심지어 repmat으로 작동해야한다는 것을 알고 있습니다.하지만 Matlab에 익숙하지 않아 기능을 설명하는 문서를 읽은 후에도이를 수행하는 방법을 알 수 없습니다.

+0

어떻게하는 것이 cat' 또는'repmat''와 함께 작동하도록되어? –

답변

6

, 당신은 무관 한 비트를 마스크 할 수 있습니다 제로로 중 마스크에 의해 이미지를 곱하여 :

I = bsxfun(@times, I, M);  

또는 논리적 색인에 의해 :

I(~mask(:, :, ones(1, size(I, 3)))) = 0; 
+1

그게 효과가! :) –

1

내가 문제를 이해 100 % 확실하지 않다, 그러나 여기가는 하나의 제안 :

한다고 가정 rgbImRGB 이미지이며, bwIm바이너리 이미지이다;

당신은 당신의 바이너리 이미지에 "3D"을 "확장"을 시도 할 수 있습니다 코드의 다음 줄에 (의 크기는 원래 RGB 이미지와 일치하도록) :

bwImAux = bwIm(:,:,[1 1 1]); 

그리고 수행

rgbImNew = rgbIm.*bwImAux; 

희망 : A는 곱셈은 바이너리 이미지의 사람 아닌 모든 픽셀을 간단한 "제거"하기 이것은 도움이됩니다.

1

3dim 이미지에서 이진 이미지를 논리적 인덱스로 사용할 수 있습니다. 이진 mask 제로입니다 image의 모든 픽셀을 제로로, 각 차원에 대한 다음과 같은 코드를 사용할 수 있습니다 : 당신이 3-D 이미지 I 이진 마스크 ​​M이있는 경우 image(~mask)=0;

관련 문제