图像的方差和均值

use*_*559 5 matlab

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

image=imread("image name")
M = mean(image(:))
V = var((image(:)))
Run Code Online (Sandbox Code Playgroud)

这是计算MATLAB中均值/变量的正确方法吗?我的差异越来越大......

任何帮助赞赏..

Ego*_*gon 8

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

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

mean     = sum(x)/length(x)
variance = sum((x - mean(x)).^2)/(length(x) - 1);
Run Code Online (Sandbox Code Playgroud)

例如,如果您使用标准正态分布生成噪声randn(N,1),您将获得N样本,如果计算均值和方差,您将获得大约01.所以,你的方差也可能比平均值大.

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

编辑:对于信号的RMS值(均方根),只需按照定义所说的那样做.在大多数情况下,您希望在计算RMS值之前删除DC分量(即均值).

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


yuk*_*yuk 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
Run Code Online (Sandbox Code Playgroud)

MATLAB有功能image.避免将其用作变量.