检测颜色校准图表 opencv 中缺失的方块 python

Detect missing squares in color calibration chart opencv python

我目前正在研究一种从麦克白颜色图表中提取颜色的方法。到目前为止,我通过使用阈值然后提取方形轮廓取得了一定的成功。遗憾的是,彼此太接近的颜色要么混合在一起,要么没有被检测到。

当前形式的代码:

<script src="https://pastebin.com/embed_js/mNi0TcDE"></script>

The image before any processing

阈值处理后,可以看到由于颜色差异太小,线条不完整的区域。我曾尝试使用扩张来解决这些问题,并且在一定程度上确实有效。但不足以检测所有方块。

Image after thresholding

这导致检测到以下轮廓

Detected contours

我试过使用:

  1. Hough 线,遗憾的是这里没有检测到线。
  2. 等高线的质心,但我找不到使用质心画线和检测缺失等高线中心的方法
  3. 角点检测,找到的角点。但是我没能找到真正的方法来使用它们。

谁能给我指出正确的方向?

提前致谢, 埃米尔

嗯,如果你的目标是颜色校准,你真的不需要检测整个方块。每个物理正方形图像中心附近的 10x10 样本将为您提供 100 个颜色样本,这对于任何合理的校准程序来说都足够了。

有很多方法可以解决这个问题。如果你能保证图表会覆盖图像,你甚至可以只做 k-means 聚类,因为你事先知道你要寻找的聚类的确切数量。

如果你坚持使用几何图形,我会在比例+角度中进行模板匹配space - 可以合理地假设图表大部分是面向的,只是稍微旋转,所以你只需要估计比例和围绕与图表正交的轴的小旋转。