仍然需要帮助,答案不是我正在寻找的东西!得到一个图片的每个通道(R,G,B)的平均灰度[MATLAB]
我需要让我每个信道的平均灰度(R,G,B)的图像
ave = getAverageGreyScale(image)
AVE的必须返回3个元素的向量的函数。每一个与一个信道的平均灰度(R,G,B):
[ABC]
R的=平均灰度
B =平均灰阶的 ģ
C = B的平均灰度
仍然需要帮助!任何人都可以给我一个帮助吗?
在此先感谢!澄清后
仍然需要帮助,答案不是我正在寻找的东西!得到一个图片的每个通道(R,G,B)的平均灰度[MATLAB]
我需要让我每个信道的平均灰度(R,G,B)的图像
ave = getAverageGreyScale(image)
AVE的必须返回3个元素的向量的函数。每一个与一个信道的平均灰度(R,G,B):
[ABC]
R的=平均灰度
B =平均灰阶的 ģ
C = B的平均灰度
仍然需要帮助!任何人都可以给我一个帮助吗?
在此先感谢!澄清后
我认为你正在寻找为
function [Ravg, Gavg, Bavg] = getAverageRGBValues(I)
Ravg = mean(mean(I(:, :, 1)));
Gavg = mean(mean(I(:, :, 2)));
Bavg = mean(mean(I(:, :, 3)));
假设我是rows x cols x 3
矩阵(您可以从中获得,例如,imread
)。
dantswain,谢谢,但例如,从我的样本图像中,Bavg结果为我提供了一个“ 129.932“,这是一个大于100的数字。可以得到这个结果吗? – user981227
是的,数字可能范围从0到255。 – dantswain
编辑:
你需要沿着维度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
平均值是对亮度的粗略估计,但更好的方法是首先将每个颜色平面乘以不同的系数,因为红色,绿色和蓝色不等于亮度。 Standard coefficients是:
你的代码,因此应该是这样的:
ave=image(:,:,1)*0.3 + image(:,:,2)*0.59 + image(:,:,3)*0.11
该代码给出了所有颜色的平均值。我需要该函数来返回一个3项目的向量。每一个,每个R,G,B的平均值。我编辑了我的第一条消息,以便更清楚。 – user981227
我该怎么做? :/ – user981227
@ user981227我编辑了我的答案 –
灰度值的“规范”公式(参见[Poynton's Color FAQ](http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC11))为0.299R + 0.587G + 0.114B 。如果你的每个通道都是一个向量,那么获得灰度值的向量是微不足道的。 –
这就是我需要的。该函数必须返回3个元素的向量。每个通道具有一个通道的平均灰度(R,G,B) – user981227
是否需要整个图像的平均值?这将涉及对图像进行迭代,对通道值求和,然后除以像素数。如果您愿意,可以应用Chris的比例因子。 –