在颜色校准图表opencv python中检测丢失的正方形

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在颜色校准图表opencv python中检测丢失的正方形相关的知识,希望对你有一定的参考价值。

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

它的当前形式的代码:

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

The image before any processing

在阈值处理后,您可以看到由于颜色差异太小而存在线条不完整的区域。我试图使用扩张来缓解这些问题,并且它确实在某种程度上起作用。但还不足以检测所有方块。

Image after thresholding

这导致检测到以下轮廓

Detected contours

我尝试过使用:

  1. 霍夫线,遗憾的是没有检测到线条。
  2. 轮廓的质心,但我无法找到一种方法来使用质心绘制线条并检测缺失轮廓的中心
  3. 角落检测,发现角落。但是我没有找到一种真正的方法来使用它们。

谁能指出我正确的方向?

在此先感谢,电子邮件

答案

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

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

如果你坚持使用几何,我会在比例+角度空间进行模板匹配 - 可以合理地假设图表主要面向,并且只是略微旋转,所以你只需要估算比例和一个小的旋转轴与图表正交。

以上是关于在颜色校准图表opencv python中检测丢失的正方形的主要内容,如果未能解决你的问题,请参考以下文章

使用Python,Opencv检测AprilTag

如何使用 OpenCV Python 检测颜色

不使用 cv2.findChessboardCorners 在 Python 中校准 OpenCV 相机

如何在 Leap Motion 上检测用于相机校准的棋盘?

OpenCV 颜色浓度直方图

Python 如何使用 HoughLines 和 OpenCV 检测图像中的垂直线和水平线?