我有一個圖像與紅色,綠色,藍色通道和二進制版本的圖像。Matlab - 如何使用二進制圖像掩蓋三維圖像
我想要做的是連接這兩個圖像,以便二進制圖像作爲正常圖像的掩膜。
我想只選擇彩色圖像中二進制爲1的像素。
我知道這應該與cat
甚至repmat
一起工作,但因爲我對Matlab很新穎,所以即使在閱讀函數的文檔之後,我也無法弄清楚如何做到這一點。
我有一個圖像與紅色,綠色,藍色通道和二進制版本的圖像。Matlab - 如何使用二進制圖像掩蓋三維圖像
我想要做的是連接這兩個圖像,以便二進制圖像作爲正常圖像的掩膜。
我想只選擇彩色圖像中二進制爲1的像素。
我知道這應該與cat
甚至repmat
一起工作,但因爲我對Matlab很新穎,所以即使在閱讀函數的文檔之後,我也無法弄清楚如何做到這一點。
如果有3-d圖像I
和二進制掩碼M
,可以屏蔽不相關比特零或者由屏蔽圖像乘以:
I = bsxfun(@times, I, M);
,或按邏輯索引:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
thx它的工作! :) –
我不是100%肯定我明白你的問題,但在這裏不用一個建議:
假設rgbIm
是你RGB圖像和bwIm
是你二值圖像;
您可以嘗試以「擴大」的二進制圖像「3D」(這樣它的尺寸與原來的RGB圖像一致)與下面的代碼行:
bwImAux = bwIm(:,:,[1 1 1]);
,然後執行一個簡單的乘法到「消除」這不是那些二值圖像中的所有像素:
rgbImNew = rgbIm.*bwImAux;
希望這有助於。
您可以將二進制圖像用作3dim圖像中的邏輯索引。在零image
,在二進制mask
都是零的所有像素,則可以使用下面的代碼對每個維:image(~mask)=0;
怎麼是,應該以'cat'或'repmat'工作? –