将Android中的颜色样本与其他颜色的数据库进行比较


Compare a color sample in Android to database of other colors?

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

最简单的方法是将从图像中选择的颜色的RGB值与其他每个样本的RGB值进行比较吗?如果能提供任何快速采样算法,即使是伪代码,也将不胜感激。。。

100-200个颜色样本应该存储在Android应用程序中吗?或者如果它们存储在服务器上并通过一些php和sql访问会更好吗?

熟悉java、html、css、javascript、jquery、ajax、jason、perl和xml(如果应该使用的话)。

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

计算两种颜色的距离是微不足道的,结果是得到一个整数。要找到最好的5个匹配,只需查看100个样本,计算所选颜色与每个样本之间的距离,然后根据距离对结果进行排序。5个最小的距离是你最好的匹配。

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

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