2016-10-08 10 views
1

MATLAB 2012bを使用しています。MATLABは、RGBの画像を含む2値画像の白い部分を重ねて表示します。

私はオブジェクトが画像で概説取得することができた:動的輪郭セグメンテーションの方法を使用して 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)); 
関連する問題