图像的方差和均值

时间:2012-03-30 06:28:06

标签: matlab

我正在计算原始图像和隐秘图像的均值和方差以进行比较 我正在使用comaprison的灰度BMP图像

image=imread("image name")
M = mean(image(:))
V = var((image(:)))

这是在MATLAB中计算mean / var的正确方法吗?我的差异越来越大......

任何帮助表示赞赏..

2 个答案:

答案 0 :(得分:8)

这些确实是计算图像所有像素的均值和方差的正确方法。

你的方差大于均值并非不可能,因为两者都是按照以下方式定义的:

mean     = sum(x)/length(x)
variance = sum((x - mean(x)).^2)/(length(x) - 1);

例如,如果您使用randn(N,1)从标准正态分布生成噪声,则会获得N个样本,如果计算均值和方差,则会得到大约01。所以,你的方差也可能大于均值。

两者都有完全不同的含义:均值给你一个想法 你的像素是什么(即它们是白色,黑色,50%灰色......)。平均值将让您了解选择哪种像素颜色来总结完整图像的颜色。方差可以让您了解像素值传播:例如:如果你的平均像素值是50%灰色,大多数其他像素也是50%灰色(小方差)或者你有50个黑色像素和50个白色像素(大方差)?因此,您也可以将其视为一种方式来了解平均值对图像的总结情况(即方差为零,大部分信息均由均值捕获)。

编辑:对于信号的RMS值(均方根),只需执行definition所说的内容即可。在大多数情况下,您希望在计算RMS值之前删除DC分量(即均值)。

编辑2:我忘了提到的是:从物理角度比较方差的数值和均值也没什么意义。均值与您的数据具有相同的维度(在像素的情况下,考虑强度),而方差具有数据的平方维度(因此强度^ 2)。另一方面,标准差(MATLAB中的std),即方差的平方根与数据具有相同的维度,因此您可以进行一些比较(这是另一个问题,是否应该这样做比较)。

答案 1 :(得分:5)

如果您使用RGB图像(H x W x 3)进行工作,则必须分别为每个通道计算均值和方差。在这种情况下,平均像素也将是3值向量。

for ch = 1:3
   M(ch) = mean(reshape(img(:,:,ch),[],1));
   V(ch) = var(reshape(img(:,:,ch),[],1));
end

MATLAB具有函数image。避免将其用作变量。