6

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

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

在此处输入图像描述

4

1 回答 1

2

您是在问如何进行颜色校准或如何使用 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
于 2013-09-19T15:45:07.417 回答