2016-10-08 16 views
1

MATLAB 2012b를 사용하고 있습니다. rgb 이미지를 사용하여 이진 이미지의 흰색 영역을 오버레이하는 MATLAB

나는 개체가 이미지의 윤곽을 얻을 수있었습니다 : image
활성 윤곽 분할의 방법을 사용하고 그 결과는 바이너리 마스크에 있습니다

가 어떻게 흰색 영역을 채울 수 있습니다 원래의 RGB 이미지와 이진 이미지의 차이점은 무엇입니까?

기본적으로 내가 원하는 것은 배경을 완전히 검은 색으로 만드는 것입니다. 데이터 유형이 일치하지 않기 때문에,

gambarOri = imread(pathGambar); 
A = rgb2gray(gambarOri); 
mask = zeros(size(A)); mask(10:end-10,10:end-10) = 1; 
BW = activecontour(A, mask, 500); 
figure, subplot(1, 2, 1), imshow(A), title('Grayscale'); 
subplot(1, 2, 2), imshow(BW), title('Segmented image in Binary'); 

답변

0

당신 대포 오버레이 바이너리 이미지에 RGB :

여기 내 코드입니다. 당신이 할 수있는 것은 이진 이미지에 따라 RGB 이미지를 수정하는 것입니다. 예를 들어 당신은 제로에 BWfalse 분야에서 RGB 이미지의 값을 대체 할 수

% separating RGB channels: 
R = gambarOri(:, :, 1); 
G = gambarOri(:, :, 2); 
B = gambarOri(:, :, 3); 
% placing zeros where BW is FALSE: 
R(~BW) = 0; 
G(~BW) = 0; 
B(~BW) = 0; 
% concatenate color layers into final result: 
blackBG = cat(3, R, G, B); 
% figure; imshow(blackBG) 

을이 결과와 함께 제공되는 이미지 : 이 enter image description here

+0

따라서 다른 데이터 유형의 이미지를 오버레이하는 것은 불가능합니다. 사실을 알려줘서 고맙습니다. 그건 그렇고 난 당신의 방법을 시도하고 [결과] (http://i.imgur.com/Gh4JJqc.jpg)는 검은 배경으로 레이어를 연결하지 않습니다. 내 BW 허위 영역이 백인 영역이 아니라는 의미입니까? –

+0

음, 이상하게 보입니다. 코드를 복사하여 붙여 넣으면 내가 가진 것과 같은 결과를 얻게됩니다. 이 과정에서 뭔가를 놓쳤습니까? 또는 다른 시간에 변수에 대한 작업을 수행 했습니까? – erfan

0

당신은 를 사용할 수 있습니다

blackBG = uint8(bsxfun(@times, double(gambarOri), BW));