Python 计算方差的算法工作不正常

Python 计算方差的算法工作不正常,python,python-3.x,Python,Python 3.x,我写了一个函数,它应该返回给定簇中一组像素的R,G,B分量的方差 def RGB_方差(img,密度): R_总计=0 G_总计=0 B_总计=0 N=透镜(密度) 对于密度中的像素: x=像素[0] y=像素[1] R_总计+=img[x][y][0] G_总计+=img[x][y][1] B_total+=img[x][y][2] R_平均值,G_平均值,B_平均值=R_总计/N,G_总计/N,B_总计/N R_和=0 G_和=0 B_和=0 平均值=[R_平均值,G_平均值,B_平均值]

我写了一个函数,它应该返回给定簇中一组像素的R,G,B分量的方差

def RGB_方差(img,密度):
R_总计=0
G_总计=0
B_总计=0
N=透镜(密度)
对于密度中的像素:
x=像素[0]
y=像素[1]
R_总计+=img[x][y][0]
G_总计+=img[x][y][1]
B_total+=img[x][y][2]
R_平均值,G_平均值,B_平均值=R_总计/N,G_总计/N,B_总计/N
R_和=0
G_和=0
B_和=0
平均值=[R_平均值,G_平均值,B_平均值]
总和=[R_总和,G_总和,B_总和]
对于密度中的像素:
x=像素[0]
y=像素[1]
对于范围(0,3)内的i:
和[i]+=(img[x][y][i]-表示[i])**2
方差={
“R_方差”:总和[0]/N,
“G_方差”:总和[1]/N,
“B_方差”:总和[2]/N,
}
回报差异
这些照片显示了我正在处理的区域和相应的像素:

我得到的结果是,它并不完全正确:

{'R_variance':71.56184661531957'G_variance':91.47570122951443'B_variance':521.035179427894}

当B分量的值的范围为范围(0255)时,它的方差怎么可能是521?

那么,方差可以大于值的范围。下面是一个例子:

data = [10, 10, 10, 10, 0, 0, 0, 0]
range of values = [0, 10]
mean = 5
var = ((10 - 5)^2 * 4 + (0 - 5)^2 * 4) / 8 = 200 / 8 = 25

方差高于数据可以采用的最大值。也许你想要的是方差的平方根。

为什么你认为方差不能是521?标准偏差可以在0和数据范围的一半之间(本例中为127.5),这意味着方差可以在0和127.5之间的任何地方**2。我想得到一个符合逻辑的差值,使用521这样大的数字来检查不能大于255的值之间的差异,这对我有什么帮助?是的,我似乎忘记了结果的平方根,我实际上需要标准偏差,但使用了方差公式