【发布时间】:2020-02-19 22:15:28
【问题描述】:
假设我们有一组先前已知的 n 个颜色 C。我们得到一个颜色列表 l。
目标是对于每种颜色 l,将其与 C 中的颜色相匹配,使其最小化距离函数 D。
最直接的方法是使用欧几里得距离,但这不是一个好主意,因为以下示例:
假设输入颜色是 (0.1, 0, 0) 所以非常深的红色。假设棕色(0,5,0.5,0)和纯红色(1,0,0)都在C中。
欧式距离给出:
到棕色的距离 = (0.4^2 + 0.5^2) = 0.41
到红色的距离 = (0.9^2) = 0.81
因此,深红色被映射为棕色而不是红色,这在视觉上并没有什么意义。
我们可以试试切比雪夫距离:
到棕色的距离 = max(0.4, 0.5, 0) = 0.5
到红色的距离 = max(0.9, 0, 0) = 0.9
或者曼哈顿距离:
到棕色的距离 = max(0.4 + 0.5) = 0.9
到红色的距离 = max(0.9 + 0 + 0) = 0.9
第一个仍然选择棕色而不是红色,第二个选择两者作为同样有效的选择。虽然有所改进,但并不理想。
但是我不确定如何测量“视觉距离”,即如果一种颜色对人类来说“看起来是绿色”,例如如何将所述颜色映射到绿色。
我正在使用opencv,我已经搜索了文档,但我似乎没有找到这个问题是否已经解决。
【问题讨论】:
标签: python algorithm math colors computer-vision