我想在许多光照条件下获取图像的RGB值。为了获得某种中立的方案,我想用一些预定义图像的RGB值标准化RGB值。

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

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

最佳答案

对于不同的照明情况,只需进行线性RGB校正即可。只需将每个R,G,B值乘以为每个 channel 得出的常数即可。

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

要匹配多种颜色,您必须对校正因子求平均值,以得出一组常数。需要给较亮的颜色更大的权重,例如,如果您的引用值为(200,150,20),而其引用值为(190,140,​​10),则您将尝试使蓝色的数量加倍,而蓝色的数量可能相差甚远。最简单的方法是将所有引用值相加,然后除以测量值的总和。

关于java - 如何使用引用RGB值标准化RGB值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11254923/

10-12 20:35