我如何使用colorchecker在opencv中进行颜色校准?

时间:2013-09-19 14:40:17

标签: python opencv camera-calibration

我有一个数码相机获取的colorchecker图像,我如何使用它来使用opencv校准图像?

按照以下颜色检查器图像进行操作:

enter image description here

1 个答案:

答案 0 :(得分:2)

您是否在询问如何进行色彩校准或如何使用OpenCV进行色彩校准?

要进行颜色校准,请使用校准板的最后一行(灰色调)。以下是您应该逐步进行颜色校准的步骤:

  1. 捕捉图像并在灰色区域内拍摄小区域。中间的10x10像素应该没问题。完成此步骤后,您将拥有6个10x10区域。
  2. 获取每个灰色区域的10x10区域的平均值。在此步骤之后,您将有6个平均值,每个灰色区域为1。请记住,每个值都是RGB值,就像每种颜色下面给出的值一样。
  3. 检查平均值并尝试将值与给定值匹配。在第一次尝试中,最可能的是平均值与给定值不同。实际上使它们匹配是校准操作。要使它们匹配,您应该更改相机的增益。更改每个通道的增益并尝试将平均值与给定值匹配。
  4. 更改每个通道的相机增益后,重复这些操作直至其收敛并校准相机。
  5. 您可以通过从另一种颜色中取一个小区域并使用给定值检查其平均值来检查校准是否正确完成。如果它们匹配或几乎相同,那么您已成功校准了相机的颜色。

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

    如果您了解这个过程,那么使用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