2013-05-19 157 views
1

我有一個圖像與紅色,綠色,藍色通道和二進制版本的圖像。Matlab - 如何使用二進制圖像掩蓋三維圖像

我想要做的是連接這兩個圖像,以便二進制圖像作爲正常圖像的掩膜。

我想只選擇彩色圖像中二進制爲1的像素。

我知道這應該與cat甚至repmat一起工作,但因爲我對Matlab很新穎,所以即使在閱讀函數的文檔之後,我也無法弄清楚如何做到這一點。

+0

怎麼是,應該以'cat'或'repmat'工作? –

回答

6

如果有3-d圖像I和二進制掩碼M,可以屏蔽不相關比特零或者由屏蔽圖像乘以:

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

,或按邏輯索引:

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

thx它的工作! :) –

1

我不是100%肯定我明白你的問題,但在這裏不用一個建議:

假設rgbIm是你RGB圖像bwIm是你二值圖像;

您可以嘗試以「擴大」的二進制圖像「3D」(這樣它的尺寸與原來的RGB圖像一致)與下面的代碼行:

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

,然後執行一個簡單的乘法「消除」這不是那些二值圖像中的所有像素:

rgbImNew = rgbIm.*bwImAux; 

希望這有助於。

1

您可以將二進制圖像用作3dim圖像中的邏輯索引。在零image,在二進制mask都是零的所有像素,則可以使用下面的代碼對每個維:image(~mask)=0;