这个问题旨在抽象并集中一种解决我在“Find the most colourful image in a collection of images”表达的问题的方法。
想象一下,我们有一组圆圈,每个圆圈周围都有许多点。我们希望找到一个指标,该指标为圆圈提供更高的评分,其中点在圆圈周围均匀分布。有一些点散布在整个360°的圆圈更好,但是在一个区域中具有更多点数的圆圈与在另一个区域中的较小数量的圆圈相比则不太好。
点数不受限制。
两个或多个点可能重合。
巧合点仍然具有现实意义。一个点为0°,一个点为180°的圆优于一个圆,在0°时为100点,在180°时为1000点。
围绕圆圈每度有一个点的圆是非常好的。围绕圆圈每半度有一个点的圆圈更好。
在我的另一个(基于颜色的问题)中,有人建议标准偏差是有用的,但需要注意。这是一个很好的建议,是否能应对359°到1°的接近程度?
答案 0 :(得分:2)
这很大程度上取决于你真正想要实现的目标,如果你想要的只是一个均匀分布,那么你可以简单地取圆圈上的所有点并平均它们,这个平均值越接近圆心,分布越均匀。
这里需要注意的是,在0°处180点和在180°处180点的分布与在每个度数上具有单个点的分布一样好。如果这是您想要与否的话,这只是一个定义问题。
相关但更复杂的概念是几何标准偏差:http://en.wikipedia.org/wiki/Geometric_standard_deviation
另一种方法就像在你的另一个问题中建议的那样,看看各个角度的平均点数,看看每个角度的点数偏离了多少。
即。让I
成为您的角度集,例如{0..359}
和v_i = #points at angle i, for i in I
,其中点p
与角度i
iff floor(p) == i
。然后mean_v = (sum of v_i for i in I) / length(I)
和d_v_i = v_i - mean_v
。
现在您可以定义多个指标:
maximum of abs(d_v_i) for i in I
sum of abs(d_v_i) for i in I
sqrt((sum of (d_v_i^2) for i in I) / length(I))
(这是标准偏差)您可以采取更多指标,任何表示d_v_i中包含的偏差的数字都可以解决问题。这完全取决于你想要什么,这将决定最佳指标。
最后一点注意,您可能希望比较各种输入集之间的指标,即具有不同数量的数据点的集合,在您的情况下,这些数据集的大小不同。您可能需要根据输入的大小来扩展指标,并根据您使用的指标,您可能需要以不同的方式进行扩展。有一种简单的方法来验证您的指标,只需计算图像的指标,然后将图像缩放到不同的大小,并再次计算缩放的图像。当然,这两个指标应该是相同的。
答案 1 :(得分:1)
所以,我会看一下角度差异。第一步是对圆周周围的点进行排序。然后求平方相邻角度差。
所以,假设p [0]为0度,p [1]为10,p [2]为20.则误差为(10-0)^ 2 +(20-10)^ 2 + (360-20)^ 2。。
您还可以通过点数进行标准化,或者根据点数的最佳间距对每个差异进行标准化(abs(差异) - 最优)^ 2
您可能还会考虑使用感知色彩空间而不仅仅是RGB或HSV。