如何使用颜色检查器在 opencv 中进行颜色校准?

ali*_*iel 6 python opencv camera-calibration

我有一张由数码相机拍摄的颜色检查器图像,我如何使用它来使用 opencv 校准图像?

按照颜色检查器图像下方:

在此处输入图片说明

gun*_*yim 3

您是想问如何进行颜色校准或如何使用 OpenCV 进行校准?

为了进行颜色校准,您可以使用校准板的最后一行(灰色调)。以下是您应该逐步进行颜色校准的操作:

  1. 捕获图像并拍摄灰色区域内的小区域。中间的 10x10 像素应该没问题。完成此步骤后,您将拥有 6 个 10x10 区域。
  2. 取每个灰色区域的 10x10 区域的平均值。在此步骤之后,您将获得 6 个平均值,每个灰色区域 1 个。请记住,每个值都是 RGB 值,就像每种颜色下方给出的值一样。
  3. 检查平均值并尝试将这些值与给定值相匹配。在第一次尝试中,平均值很可能与给定值不同。实际上让它们匹配就是校准操作。为了使它们匹配,您应该更改相机的增益。改变每个通道的增益并尝试将平均值与给定值匹配。
  4. 更改每个通道的摄像机增益后,重复这些操作,直到收敛并且摄像机已校准。

您可以通过从另一种颜色中取出一小部分区域并检查其平均值与其给定值来检查校准是否正确。如果它们匹配或几乎相同,那么您已经成功校准了相机的颜色。

您需要做的就是能够设置相机增益,然后捕获图像并尝试匹配值并找到正确的相机增益。

如果您了解该过程,那么使用 OpenCV 来完成此操作应该是小菜一碟。

[编辑]

好吧,我不知道有什么方法可以计算增益。但最简单的方法是暴力。你可以做这样的事情;

假设您的增益值在 0.0 和 3.0 之间变化,请指定一个步长值(例如 0.1)并尝试所有值。你应该有一个像这样的 for 循环:

for (double redGain=0.0; redGain <= 3.0; redGain += 0.1)
   for (double greenGain=0.0; greenGain <= 3.0; greenGain += 0.1)
      for (double blueGain=0.0; blueGain<= 3.0; blueGain+= 0.1)
         setCameraGain(redGain, greenGain, bluegain);
         // do the rest of the stuff
      end
   end
end
Run Code Online (Sandbox Code Playgroud)