如何计算色调值从0到360的平均值和标准偏差?

drb*_*drb 6 statistics colors hue

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

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

小智 10

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

由于您正在使用颜色,因此将其视为转换为(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
Run Code Online (Sandbox Code Playgroud)

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

meanangle = atan2(mean(y),mean(x))*180/pi
meanangle =
       3.0049
Run Code Online (Sandbox Code Playgroud)

当然,该解决方案仅对平均角度有效.正如你所看到的,它直接产生一致的结果与角度的平均值,我认识到355度真的包裹到-5度.

mean([-5 5 5 5 5])
ans =
     3
Run Code Online (Sandbox Code Playgroud)

要计算标准偏差,最简单的方法就是这样做

std([-5 5 5 5 5])
ans =
       4.4721
Run Code Online (Sandbox Code Playgroud)

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