我需要差异两个图像,看看哪些颜色不同.任何中级算法?

MSt*_*odd 5 algorithm color-picker image-processing computer-vision

如果我有两个图像,它们都是不同风格的同一个鞋子的左侧视图,我该如何确定它们的不同颜色?也许它是两种款式的鞋子,一种款式有粉色鞋带和白色款式,另一种款式有白色鞋带和黄色款式.我想要:

图像一种颜色:C1 =粉红色,C2 =白色

图像两种颜色:C1 =白色,C2 =黄色

没有超级高级算法,但我也不需要实际实现的代码.也许只是循环,数据结构,条件..

图像的实际鞋子部分将在白色背景上.这些照片类似于您在endless.com或zappos.com上看到的照片,因此它们非常相似,但需要一些容忍度.

j_r*_*ker 3

因为听起来您只想告诉它们颜色的不同(不考虑形状等)并且您期望形状高度相似(尽管不相同),所以我会:

  1. 计算每个图像的颜色直方图(R、G、B 可能各需要 3 个直方图)
  2. 减去它们(z = abs(x - y)对于每种颜色)
  3. 识别结果直方图中的峰值

当每个图像中的重要区域的颜色不同时,这将在最终的直方图中给出两个高峰。abs()(如果您需要区分哪个是哪个,请删除。)

[编辑]正如 jilles de wit 建议的那样,最好查看 (R, G, B) 三元组的频率,而不是单个颜色(即,为每个图像创建一个大小为 256*256*256 的大直方图,而不是 3 个大小为 256 的直方图直方图)。但在这种情况下,直方图向量很大,并且可能主要用零填充,因此最好将强度从 256 量化为 16 个级别,从而提供更易于管理的 16*16*16 向量。