Matlab - 基于前景 - 背景分割的裁剪图像

时间:2014-03-24 13:12:49

标签: matlab

我有一个RGB图像,它被读作3维矩阵img,我有一个二进制掩码,代表图像的分割mask

如何根据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不会保留裁剪区域内原始图像的颜色。 前景像素不形成矩形区域,但是它们形成一个连通分量。

1 个答案:

答案 0 :(得分:1)

你试过吗

denoisedImage = bsxfun( @times, im2double(img), mask > 0 );