-1

更具体地说,我需要从 Android 相机图像中选择一种颜色,并将其与众多(100-200 之间)其他纯色样本进行比较,并找到最接近的(可能是前 5 个最接近的)匹配。

最简单的方法是否只是将从图像中选择的颜色的 RGB 值与其他每个样本的 RGB 值进行比较?如果可以提供任何快速的示例算法,甚至是伪代码,将不胜感激......

100-200 个颜色样本应该存储在 Android 应用程序中,还是存储在服务器上并通过一些 php 和 sql 访问会更好?

熟悉 java、html、css、javascript、jquery、ajax、jason、perl 和 xml,如果这些都应该使用的话。

4

1 回答 1

0

首先,让我们定义两个 RGB 颜色之间的距离。一种方法可以是计算 R 字节之间的绝对差,加上 G 字节之间的绝对差,加上 B 字节之间的绝对差。

计算两种颜色的这个距离很简单,你得到一个整数作为结果。要找到最佳的 5 个匹配项,只需检查 100 个样本并计算您选择的颜色与每个样本之间的距离,然后根据距离对结果进行排序。5 个最小的距离是您的最佳匹配。

如果您对来自相机的单个选定颜色(例如与相机图像中的所有像素颜色相反)进行一次整个计算,我认为没有性能问题,因此无需进一步优化。

在您的应用程序中保存 100 个样本是最快和最容易做到的。无需在服务器上进行计算 - 您只有一台服务器,但有许多设备,请使用它们。与服务器通信的唯一原因是您的 100 个样本可能会定期更改。从服务器更新样本以防它们发生变化可能比将新的更新应用发布到 Play 商店更容易一些。如果您不打算经常更改 100 个样本,请完全跳过服务器位。

于 2013-07-31T00:16:55.970 回答