如何在Matlab中分割后从图像中获取背景值?

时间:2011-04-12 20:31:46

标签: matlab image-processing

当我对任何图像进行分类时,它返回一个图像i-e二进制图像,其中包含背景和前景的表示。 现在,如果我想只为任何目的使用图像的背景.....怎么做..我的意思是在分割后我现在得到一个二进制图像如何识别(或采取)背景的值。 ??????

3 个答案:

答案 0 :(得分:1)

% Assume you have these variables:
%  'mask'  - binary segmentation results, all 1's or 0's.
%  'img'   - original image.
%  'bgImg' - Output, containing background only.

bgImg = zeros(size(img));  % Initialize to all zeros.
bg(mask) = img(mask);      % Use logical indexing.

答案 1 :(得分:0)

我假设你有一个灰度图像。当你的分段目标为1,背景为0时,只需进行元素矩阵乘法即可得到目标图像。这类似于掩蔽。如果你只想要背景,你可以做(​​1 - 二进制图像)并对原始图像进行类似的乘法。请记住,这是元素明智的乘法,而不是矩阵乘法。

答案 2 :(得分:0)

如果您想测量前景/背景区域的统计数据,一个有趣的选择是regionprops

% img - variable containing original grey-scale image
% mask - binary mask (same size as img) with 0 - background 1 - foreground

% using regionprops to measure average intensity and weighted centroid,
% there are MANY more interesting properties ou can measure, use 
% >> doc regionprops 
% to discover them 
st = regionprops( mask + 1, img, 'MeanIntensity', 'WeightedCentroid');

% get BG avg intensity:
fprintf(1, 'Avg intensity of background = %.2g\n', st(1).MeanIntensity );