如何比较两种颜色?

时间:2012-12-30 20:06:53

标签: matlab image-processing opencv colors computer-vision

问题:如何比较两种颜色,可能是用两种不同的相机拍摄的?

情景:

我有一个参考图像,它有不同的彩色方块。可以使用iPhone相机拍摄,也可以从PDF文件中复制。以下是从PDF复制的示例参考图像:

enter image description here

现在其他人用他们自己的相机拍摄类似图像(彩色方块)的图像。下面给出了一个样本测试图像:

enter image description here

对于测试图像中的每个方块,我需要检查哪个是参考图像中最接近的方块。

我的理解:

在SOF中有几个与之相关的类似问题。以下是我得到的要点:

1 - 找到正方形的RGB值并找到所有正方形之间的欧几里德距离,并选择最小的正方形。

但有几个人说它是RGB不是一个好的颜色表示

2 - 使用HSV或Lab进行上述方法。

3 - DeltaE方法(我不太了解它)

在我的问题中,图像是用两个不同的相机拍摄的。那么上述方法会解决这类问题吗?

如果没有,有没有人可以分享一种比较两种不同相机颜色的好方法?

2 个答案:

答案 0 :(得分:1)

RGB欧氏距离不适合匹配不同的颜色。想象一下,你从黑色(0,0,0)开始,然后纯蓝色,纯红色和纯绿色都是平等的,你的方案也是如此。

转换为HSV / HSL类型的色彩空间有助于您将整体亮度与色彩分开,并识别具有不同饱和度的相似色彩。

如果您需要完全准确,您可能还需要在图像中找到白色区域并使用它来校正背景光的颜色

答案 1 :(得分:1)

我会使用设计的色彩空间(近似)感知统一。从我在维基百科上的记忆引导的短搜索中,我个人会选择CIE L*u*v*并使用欧几里德规范。这与simplest \delta E非常相似,它与L * a * b *相同而不是L * u * v *。我相信eiter(或任何更复杂的\ delta E)应该做得很好。

正如马丁所指出的那样,如果没有相机平衡,白平衡也可能起到一定作用......