检测图像中的点并进行比较

时间:2015-10-07 08:32:43

标签: c++ opencv image-processing feature-detection

我正在尝试从构成某些符号的图像中提取点。

original picture

首先,我正在应用自适应阈值:

adaptive

然后我尝试检测斑点并忽略所有不能用测量距离和斑点半径来构成标志。

detection

但是,它并没有精确地(不同的原始图像)并且检测到许多人工制品。我尝试了所有参数的变化,但没有适合:

enter image description here

有没有更好的方法呢?

图片来自相机,我正在尝试检测标志中的缺失点。如果缺少点,则它们从底部丢失并影响整行(因此它们会影响符号的总高度)。现在我正在创建没有丢失点的模板,并将其与每几帧的实际图像进行比较,但这不起作用,因为缺失点创建的错误小于帧之间的错误。

有什么想法可以更好地解决这个问题?

3 个答案:

答案 0 :(得分:2)

我处理了类似的问题,我的方法更长,但它提供了更多的参数来调整(一个好处就像它可以是一个诅咒) - 无论如何:

  1. GaussianBlur (如果需要)
  2. Canny 过滤器
  3. 扩张(如果需要关闭Canny步骤中的'响铃')
  4. findContours
  5. 使用初始图像处理,以便在给予(略微)更多候选轮廓的方面犯错误 - 然后根据目标的特征与误报进行过滤。

    如果您之前没有使用过轮廓和力矩分析,现在是时候阅读了它......

    就我而言,我实施了:

    • 基于轮廓嵌套方式的“分层”过滤器 彼此。
    • 一个'形态'过滤器,用于查找周长与面积比接近理想圆的轮廓(这看起来与您的任务相关)。

答案 1 :(得分:0)

这是我刚刚测试过的,它给出了很好的结果:

  1. 使用较小的结构元素半径打开+关闭以清理一点图像
  2. 大白帽,以提取你的文字。
  3. 它提供了比自动阈值更好的结果。

    [编辑]这是一个结果,但只有一个开口和一个大小为13的白色礼帽:result

答案 2 :(得分:-1)

结果

enter image description here我按照@FiReTiTi的指示实现了代码。请检查。!!

pushInsteadOf