计算部分图像的平均值

时间:2013-09-08 07:54:34

标签: matlab opencv

如何使用mat-lab计算图像中某个区域的平均值? 例如,如果我有一个区域更亮的强度图像,我想知道强度的平均值是多少 - 我该如何计算它? 我想我可以使用'impixelinfo'命令找到亮部区域的坐标。 如果还有另一种更有效的方法来找到坐标,我也很高兴知道。 在我知道坐标之后,我如何计算部分图像的平均值?

1 个答案:

答案 0 :(得分:1)

您可以在Matlab中使用其中一个imroi类型函数,例如imfreehand

I = imread('cameraman.tif');
h = imshow(I);
e = imfreehand;
% now select area on image - do not close image

% this makes a mask from the area you just drew
BW = createMask(e);

% this takes the mean of pixel values in that area
I_mean =  mean(I(BW));

或者,请查看使用regionprops,特别是如果图像中可能存在多个这些功能。在这里,我发现图像中的点高于一些阈值强度,然后使用imdilate挑选出每个点周围的一个小区域(假设高于阈值的点是完全分开的,可能不是这种情况 - 如果它们太近,那么imdilate会将它们合并到一个区域中。)

se = strel('disk',5);
BW = imdilate(I>thresh,se);
s = regionprops(BW, I, 'MeanIntensity');