如何从色卡中识别颜色?

信息处理 图像处理
2022-01-17 16:19:35

我正在开发一个视觉应用程序,它使用下面的颜色图表和相机来提取图表中每个补丁的颜色。为此,我必须首先检测图像中的图表区域并将该区域与包含补丁位置的现有模板匹配。

我的问题:我需要通过识别图表的四个角来检测色块区域。您可以在下图中看到小插入矩形指示的角。我知道一种方法是让用户通过单击它来选择这些角落。但是有什么方法可以自动检测图像中的四个角。

在此处输入图像描述

4个回答

您可以容纳霍夫线来检测颜色区域

  • 首先检测所有行
  • 最长的线将是最外面的线
  • 选择顶部的水平线并为正方形进行模板匹配。
  • 找到方格后,向下移动即可到达另一组方格。
  • 标记找到正方形的所有点
  • 您现在有一个用于颜色图表的封闭区域。

颜色分量(RGB 等)的每个 2D 阵列都具有相当高的对比度和独特性。因此,我可能会尝试使用每个颜色分量的复杂 2D FFT 来确定照片图像与参考图像的比例和偏移量。然后使用它们来调整参考图像中角落和/或补丁的测量/已知坐标,以在照片中生成坐标。

您可能必须使用位图编辑器直接测量参考图像上的一些坐标。

作为第一步 - 我会用灰色和文本删除所有杂乱无章的东西。从所有四个方面开始,我将停止,直到大多数像素具有独特的“灰色”颜色。

这将只留下由不同颜色组成的棋盘。您期望大约 22x12 - 大约 264 种颜色。

最简单的方法是应用更​​简单的颚化算法。如果您必须在 GIF 图像中翻译它 - 它会应用颜色量化,每个颜色簇都表示为质心颜色。

在您的情况下,这将特别容易,因为来源已经是某种口味,您可以做出一个不错的猜测开始。

看一下这个:

NeuQuant:http ://members.ozemail.com.au/~dekker/NEUQUANT.HTML

八叉树颜色量化:http ://www.cubic.org/docs/octree.htm 。见此

这些只是一些参考;但是您会发现在大多数使用此类图像格式的库中都可以使用代码。(BMP、PNG 和 GIF 支持此类表示)。还可以查看libpnglibjpeg以获得一些快速实现。

为什么不寻找图表的边界,而不是角落?您可以尝试使用边缘检测器,然后使用霍夫变换找到直线。