我有一個RGB圖像讀取爲3維的矩陣,img
,我有一個二進制掩碼錶示圖像的分割,mask
。Matlab - 基於前景背景分割的裁剪圖像
如何在matlab中基於二進制掩碼裁剪圖像? 我試圖只選擇由二進制掩碼標記的像素,但結果圖像沒有原始顏色。
centralPoints = find(mask > 0);
denoisedImage = zeros(424, 424, 3);
slice1 = zeros(424, 424);
origSlice = img(:, :, 1);
slice1(centralPoints) = origSlice(centralPoints);
slice2 = zeros(424, 424);
origSlice = img(:, :, 2);
slice2(centralPoints) = origSlice(centralPoints);
slice3 = zeros(424, 424);
origSlice = img(:, :, 3);
slice3(centralPoints) = origSlice(centralPoints);
denoisedImage(:, :, 1) = slice1;
denoisedImage(:, :, 2) = slice2;
denoisedImage(:, :, 3) = slice3;
這是代碼。 img
是原始圖像,centralPoints
是前景像素的座標,denoisedImage
表示裁剪後的矩陣。
但是,denoisedImage
不會保留裁剪區域內原始圖像的顏色。 前景像素不形成矩形區域,但它們形成一個連通的組件。
是'mask'矩形? – Divakar
不,遮罩不是矩形的,但它是連接的,所有的前景像素形成一個連接的圖形組件。 – Simon
你說'centralPoints'代表座標,它是X-Y座標的Nx2矩陣嗎? – Divakar