如何使用参考 RGB 值标准化 RGB 值

Posted

技术标签:

【中文标题】如何使用参考 RGB 值标准化 RGB 值【英文标题】:How to normalize RGB value with reference RGB values 【发布时间】:2012-06-30 13:55:15 【问题描述】:

我想在多种光照条件下获取图像的 RGB 值。为了获得某种中性的场景,我想用一些预定义图像的 RGB 值对 RGB 值进行归一化。

让我解释一下。我有 6 个预定义的图像,并且我知道它们的确切平均 RGB 值。现在我将在不同的照明条件下拍摄未知图像的照片。我还将在相同条件下拍摄预定义的 6 张图像。现在我的目标是通过将预定义图像的已知参考 rgb 值与从相机图片计算的值进行比较来定义归一化公式。使用这个归一化参数,我将校准未知图片的 RGB 值。这样无论光照条件如何,我都能以中性的方式从未知图片中获取平均 RGB 值。

如何在 Java 中轻松实现这一点。

【问题讨论】:

【参考方案1】:

您这样做是为了真正标准化 RGB,还是您试图将图像标准化以具有相似的亮度。因为如果您的目标只是亮度,那么我将转换为具有亮度分量的颜色标准,并仅对亮度分量进行归一化。

您可以从那里获取不同颜色分量标准的新图像,然后根据需要转换回 RGB。

步骤(但不是java):

1) Convert - RGBImage --> YUVImage
2) Normalize RGBImage using the Y component
3) Convert - Normalized(YUVImage) --> Normalized(RGBImage)

通过这种方式,您可以使用algorithm described here 对亮度进行归一化。

否则,您可以平均每个通道的平均值,并将其用作新图像的归一化因子的分子,分别计算每个通道。

【讨论】:

嗨,我想真正标准化 rgb。 我想要校准之类的东西。我想计算与参考图像的偏差并将该偏差应用于未知图像以获得中性值。 我已转换为 HSI 色彩空间。现在我正在寻找一种方法来标准化 I 索引与参考。 灯光变化不仅可以是亮度,还可以是颜色。直射阳光与云层后面的阳光或日落时的阳光具有不同的颜色。将白炽灯泡和荧光灯泡添加到混合物中,您真的会一团糟。【参考方案2】:

对于不同的照明情况,只需要线性 RGB 校正即可。只需将每个 R、G、B 值乘以为每个通道派生的常数即可。

如果只有一种参考颜色,那将很容易 - 乘以参考颜色,然后除以捕获的颜色。例如,如果您的参考颜色是 (240,200,120),但您的图像是 (250,190,150) - 您将红色乘以 240/250,绿色乘以 200/190,蓝色乘以 120/150。对图像中的每个像素使用相同的常量。

要匹配多种颜色,您必须对校正因子进行平均才能得出一组常数。需要对较亮的颜色赋予更大的权重,例如,如果您有 (200,150,20) 的参考并且它测量 (190,140,​​10) 您将尝试将蓝色的量加倍,这可能非常遥远。最简单的方法是将所有参考值相加,然后除以测量值的总和。

【讨论】:

您好,我正在使用您的方法。现在我使用 HSI 颜色空间而不是 RGB 值,并且只对强度矩阵进行归一化。 @P basak - 换句话说,你基本上是在做我建议的事情,但使用的是 HSI 而不是 YUV。所以换句话说,您确实只是想要对与亮度通道非常相似的东西进行归一化!!! @Mark - 所以基本上你提出的是每个通道的平均值,然后使用这些平均值作为新图像的归一化因子。

以上是关于如何使用参考 RGB 值标准化 RGB 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中读取给定像素的 RGB 值?

opencv 红色的rgb分别多少

如何快速知道一个颜色的rgb值

ios的颜色用rgb怎么设置啊?

如何获得十六进制颜色值而不是 RGB 值?

如何将图像的rgb值显示为百分比[重复]