获取图像各通道(R,G,B)的平均灰度[MATLAB]



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

我需要一个函数来得到图像的每个通道(R,G,B)的平均灰度

ave = getAverageGreyScale(image)

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

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

还需要帮助!有人能帮我一下吗?
提前感谢!

我想你是在找

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)。

澄清后编辑:

你需要沿着维度1 &2、用途:

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

原始回答:

如果你的图像是一个三维矩阵,最后一个维度长度为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

最新更新