【问题标题】:Template Matching in Playing Cards扑克牌中的模板匹配
【发布时间】:2015-10-01 12:39:23
【问题描述】:

我正在尝试拍摄纸牌的图像并使用某种形式的模板匹配来提取有关它们的信息。首先,我一直在使用高斯模糊、灰度转换和阈值处理来创建二值化图像,它们在将卡片隔离为图像中唯一真实的细节方面非常有效:

http://imgur.com/a/y1H7F

然而,在进行下一步之前(希望使用 OpenCV 的模板匹配东西),我在两件事上苦苦挣扎:首先,这些图像在模板匹配之前需要更多处理吗?例如,我是否需要考虑卡片的规模和方向?快速说明:我打算使用的模板是带有等级和花色的卡片的一角(在上面的链接中)。我从概念上理解,您可以通过找到具有内角的四个角来潜在地选择整个区域,但我对如何实现它一无所知。其次:是否有一种特定的模板匹配算法最适合这类工作?我宁愿在模板匹配之前做更多的处理,而不是对同一图像的多种类型进行暴力匹配(旋转和缩放以考虑每张照片的差异)。

所以总结:在匹配之前我是否需要对比例和方向进行更多处理(如果需要,建议的算法?),什么模板匹配算法是解决这个问题的最佳方法?

我认为理想的解决方案是找到整张卡片并形成一个单独的图像,在其中缩放和定位以进行模板匹配,然后使用匹配算法,但我不确定这是否可能!非常感谢任何帮助。

【问题讨论】:

    标签: image-processing computer-vision


    【解决方案1】:

    如果您正在使用一组特定的卡片,那么您需要做的所有事情(假设卡片不重叠)就是找到卡片的轮廓 (http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/find_contours/find_contours.html),将逆透视变换映射到得到一个直接的卡片图像,然后使用你的模板匹配。

    但是,如果您想要更稳健地应对套牌变化,您可能还需要检测数字/字母/花色形状的内部轮廓,并识别它们以对卡片进行分类。

    【讨论】:

    • 这将是一组特定的卡片。我应该能够从阈值图像中找到轮廓,还是需要应用 Canny?您还知道映射逆透视变换的任何 OpenCV 方法吗?我一直在寻找描述如何实施该过程的资源,但我很难理解。我知道逆透视变换会将卡片直接放在上面,但更精细的细节让我感到困扰。
    • 只是另一条评论,我读到可以从卡片的角坐标创建反向透视。使用 Canny 或我创建的二进制图像,是否有可能检测卡片并找到它们的角,并从它们的反向透视以直接查看卡片?
    • 您可以在阈值图像上使用边缘检测(例如 canny)来获得可以使用霍夫变换的图像。然后,您可以通过查找线交点来检测角点。尽管使用相机校准矩阵的完整 3D 解决方案更可取,但您可以只拍摄卡片的图像,将其取消剪切以使其笔直并从那里开始。应该给出一个相当好的结果。
    • 好的,我之前尝试过使用角点检测,但我似乎无法使用 Hough 检测线条。这些是我从 Canny 在阈值图像上生成的图像:imgur.com/a/l4Kjd 这些是否适合其余的处理?我会研究什么是不剪切,然后希望我能检测到这些角落。非常感谢您的帮助,很抱歉打扰您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多