8

假设使用简单的 HSV 颜色模型获取 5 个色相样本,其值分别为 355、5、5、5、5,就感知而言,所有色相都是红色并且彼此“相邻”。但简单的平均值是75,离0或360很远,接近黄绿色。

计算这个平均值和相关标准的更好方法是什么?

4

2 回答 2

12

简单的解决方案是将这些角度转换为一组向量,从极坐标转换为笛卡尔坐标。

由于您正在使用颜色,因此可以将此视为转换为 (a*,b*) 平面。然后取这些坐标的平均值,然后再次恢复为极坐标形式。在matlab中完成,

theta = [355,5,5,5,5];
x = cosd(theta); % cosine in terms of degrees
y = sind(theta); % sine with a degree argument

现在,取 x 和 y 的平均值,计算角度,然后从弧度转换回度数。

meanangle = atan2(mean(y),mean(x))*180/pi
meanangle =
       3.0049

当然,这个解只对平均角度有效。如您所见,它直接与角度的平均值产生了一致的结果,我认识到 355 度确实包裹到 -5 度。

mean([-5 5 5 5 5])
ans =
     3

要计算标准偏差,最简单的方法是

std([-5 5 5 5 5])
ans =
       4.4721

是的,这需要我明确地进行包装。

于 2011-11-17T16:21:33.723 回答
0

我认为 user85109 提出的方法是计算平均值的好方法,但不是标准差:想象有三个角度:180、180、181

平均值将被正确计算,作为大约等于 180 的数字

但是从 [180,180,-179] 你会计算一个高方差,而实际上它接近于零

乍一看,我会分别计算半正角 [0 到 180] 的均值和方差,然后计算负角 [0,-180] 的均值和方差,然后我会计算组合方差 https://www.emathzone。 com/tutorials/basic-statistics/combined-variance.html

考虑到全局均值及其与局部均值之间的差异必须在两个方向上计算:顺时针和逆时针方向,并且必须选择正确的方向。

于 2020-08-14T06:28:56.063 回答