检测颜色校准图表 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
我试过使用:
- Hough 线,遗憾的是这里没有检测到线。
- 等高线的质心,但我找不到使用质心画线和检测缺失等高线中心的方法
- 角点检测,找到的角点。但是我没能找到真正的方法来使用它们。
谁能给我指出正确的方向?
提前致谢,
埃米尔
嗯,如果你的目标是颜色校准,你真的不需要检测整个方块。每个物理正方形图像中心附近的 10x10 样本将为您提供 100 个颜色样本,这对于任何合理的校准程序来说都足够了。
有很多方法可以解决这个问题。如果你能保证图表会覆盖图像,你甚至可以只做 k-means 聚类,因为你事先知道你要寻找的聚类的确切数量。
如果你坚持使用几何图形,我会在比例+角度中进行模板匹配space - 可以合理地假设图表大部分是面向的,只是稍微旋转,所以你只需要估计比例和围绕与图表正交的轴的小旋转。
我目前正在研究一种从麦克白颜色图表中提取颜色的方法。到目前为止,我通过使用阈值然后提取方形轮廓取得了一定的成功。遗憾的是,彼此太接近的颜色要么混合在一起,要么没有被检测到。
当前形式的代码:
<script src="https://pastebin.com/embed_js/mNi0TcDE"></script>
The image before any processing
阈值处理后,可以看到由于颜色差异太小,线条不完整的区域。我曾尝试使用扩张来解决这些问题,并且在一定程度上确实有效。但不足以检测所有方块。
Image after thresholding
这导致检测到以下轮廓
Detected contours
我试过使用:
- Hough 线,遗憾的是这里没有检测到线。
- 等高线的质心,但我找不到使用质心画线和检测缺失等高线中心的方法
- 角点检测,找到的角点。但是我没能找到真正的方法来使用它们。
谁能给我指出正确的方向?
提前致谢, 埃米尔
嗯,如果你的目标是颜色校准,你真的不需要检测整个方块。每个物理正方形图像中心附近的 10x10 样本将为您提供 100 个颜色样本,这对于任何合理的校准程序来说都足够了。
有很多方法可以解决这个问题。如果你能保证图表会覆盖图像,你甚至可以只做 k-means 聚类,因为你事先知道你要寻找的聚类的确切数量。
如果你坚持使用几何图形,我会在比例+角度中进行模板匹配space - 可以合理地假设图表大部分是面向的,只是稍微旋转,所以你只需要估计比例和围绕与图表正交的轴的小旋转。