计算另一个图像像素满足条件的像素值的平均值

Posted

技术标签:

【中文标题】计算另一个图像像素满足条件的像素值的平均值【英文标题】:Compute mean of pixel values where another image pixels meet condition 【发布时间】:2018-09-02 10:01:30 【问题描述】:

分割后,我有labelsgray 图像。我想计算每个标签的平均强度,即标签像素具有特定值的强度值的平均值。像这样的:

// both are 1-channel
cv::Mat gray, labels
// ...
float avg=cv::mean(gray(labels==1));

cv::MatExpr 不会(至少不会自动)转换为可用作灰度图像 ROI 的 cv::Range,因此此示例无法编译。

除了显式编写循环之外,有没有简单的方法?

【问题讨论】:

由于 cv::mean 允许使用掩码,您可以只使用该可选参数:C++: Scalar mean(InputArray src, InputArray mask=noArray()) 【参考方案1】:

使用面具:

float avg=cv::mean(gray, (labels==1));

“标签”必须与“灰色”具有相同的尺寸

【讨论】:

啊,太好了!谢谢。

以上是关于计算另一个图像像素满足条件的像素值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

均值滤波

图像清晰度计算方法

仅当满足每行元素的条件时,才计算二维数组特定列的均值和方差

如何计算向量中的渐进平均值但在满足条件时重新启动?

表单“X”标记识别

计算满足条件的列部分的平均值以创建新数据框