1

仍然需要帮助,答案不是我要找的东西!

我需要一个函数来获取图像每个通道(R、G、B)的平均灰度

ave = getAverageGreyScale(image)

ave必须返回一个包含 3 个元素的向量。每一个都有一个通道的平均灰度(R,G,B):

[ abc ]
a = R 的平均灰度
b = G 的
平均灰度 c = B 的平均灰度

仍然需要帮助!谁能帮我解决这个问题?
提前致谢!

4

2 回答 2

2

我想你正在寻找

function [Ravg, Gavg, Bavg] = getAverageRGBValues(I)

Ravg = mean(mean(I(:, :, 1)));
Gavg = mean(mean(I(:, :, 2)));
Bavg = mean(mean(I(:, :, 3)));

假设 I 是一个rows x cols x 3矩阵(这是你从中得到的,例如imread)。

于 2011-10-22T16:07:32.763 回答
1

澄清后编辑:

您需要沿维度 1 和 2 的平均值,使用:

ave = mean(mean(image,2),1);

原答案:

如果(按用法)您的图像是最后一维长度为 3 的 3 维矩阵,您只需使用:

ave=squeeze(mean(image,3)); %#compute the average value for each pixel along the third dimension

平均值是亮度的粗略估计,但更好的方法是首先将每个颜色平面乘以不同的系数,因为红色、绿色和蓝色不等于亮度。标准系数是:

  • 0.3 红色
  • 0.59 为绿色
  • 蓝色 0.11

因此,您的代码将如下所示:

ave=image(:,:,1)*0.3 + image(:,:,2)*0.59 + image(:,:,3)*0.11
于 2011-10-22T11:56:44.240 回答