【问题标题】:Algorithm to detect credit card sized card检测信用卡大小卡片的算法
【发布时间】:2018-08-30 00:57:23
【问题描述】:

我想在图像中检测信用卡大小的卡片。该卡可以是任何卡,例如身份证、会员卡。目前,我正在考虑使用 Canny Edge、Hough Line 和 Hough Circle 来检测卡片。但是当我想结合霍夫线和霍夫圆的所有信息来定位卡片时,这个过程会很繁琐。有人建议使用阈值和findContour,但是卡片的颜色可能与背景相似,这使得这种方法难以达到预期的效果。有没有什么内核和方法可以帮我检测卡?

【问题讨论】:

  • 发布您当前的工作和一些示例图片。
  • @Gopiraj 更新
  • 霍夫圈应该如何提供帮助?
  • 检测曲线角点。但这好像不可行

标签: opencv computer-vision


【解决方案1】:

我认为,您的问题类似于文档扫描仪。可以参考this link

  1. 使用 Canny 边缘检测器查找图像中的边缘(下限和上限阈值可设置为 0.66*meanIntensity 和 1.33*meanIntensity)并进行形态学关闭操作。

    Edge image after performing close

  2. 使用 findContours 查找图像中的轮廓

  3. 过滤掉不需要的轮廓(我用contourArea过滤轮廓)

  4. 使用 approxPolyDP 将轮廓近似为 7 个或更多点。 (我这里用0.005 *周长作为参数)

  5. 如果您想找到准确的边缘,请在点之间拟合线并获得最大的 4 条线。找到它们的交点(因为卡片可能包含也可能不包含弯曲边缘)

  6. 您最终会得到可进一步用于单应性或确定区域的卡端点。

    vertices of the card

编辑 编辑答案以包括获取卡片顶点的步骤并更新结果。

【讨论】:

    【解决方案2】:

    这里有两个子问题——

    1. 检测图像中的矩形对象。
    2. 矩形对象的实际大小应与信用卡相似。

    对于第一部分,您可以尝试几种方法来提取图像中的矩形区域,看看哪种方法适合您的需要。

    • 这个post 展示了许多您可以尝试的方法。
    • 根据我的经验,边缘检测在大多数情况下效果最好。尝试 Canny > Contours with Appoximations > 过滤掉不相关的轮廓 > 使用一些形状检测、模板匹配或任何其他方法搜索矩形。甚至this post 也做了类似的事情来完成它的任务。

    来到第二点,除非图像中有任何参考(已知)大小的对象,否则您无法找出图像中对象的大小。如果图像是从较近的距离拍摄的,卡片会显得更大,如果从远处拍摄,卡片会显得更小。因此,在捕获时,您必须强制执行一些限制,例如您可以要求用户使用一些标准标尺来捕获图像。您还可以要求用户在 A4 纸上捕获所有纸张边缘可见的图像。由于您知道 A4 纸的尺寸,因此您可以估算卡片的尺寸。

    除了上述方法之外,如果您有足够的此类图像数据集,您可以使用 Haar 分类器或基于神经网络/深度学习的方法来做这件事,准确率更高。

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 2019-03-11
      • 2021-07-21
      • 2017-01-03
      • 2014-01-26
      • 2021-05-12
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多