matlab - 计算部分图像的平均值

标签 matlab opencv

如何使用Mat-Lab计算图像中特定区域的平均值?
例如,如果我有一个强度图像,其面积更大,并且我想知道强度的平均值是多少,我该如何计算?
我想我可以使用“impixelinfo”命令找到下车区域的坐标。
如果还有另一种更有效的查找坐标的方法,我也将很高兴知道。
我知道坐标后,如何计算图像部分的平均值?

最佳答案

您可以在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在这些点的每一个周围选择一个较小的区域(假定阈值以上的点被很好地分开了,可能不是这种情况-如果它们是如果距离太近,则会将其合并为一个区域)。
se = strel('disk',5);
BW = imdilate(I>thresh,se);
s = regionprops(BW, I, 'MeanIntensity');

关于matlab - 计算部分图像的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681661/

相关文章:

javascript - 如何使用opencv4node.js设置矩阵区域

matlab - matlab中的多个矩阵没有递归

python - 如何使用 Python 3.7 安装 MATLAB Engine API for Python?

opencv - cvResize 标识符未定义

android - UnsatisfiedLinkError : Couldn't load libopencv_java. 所以

windows - OpenCV - cv.h、core.hpp、highgui.hpp 和其他文件包含在哪里?

python - MATLAB 和 Numpy/Scipy 之间的 3d 插值有什么区别?

matlab - 如何求不均匀波形的包络线

matlab - 如何在 MATLAB 中列出全局变量?

python - 将<class 'list'>转换为numpy.ndarray