【问题标题】:Compare two images by "simplifying" them通过“简化”它们来比较两个图像
【发布时间】:2012-02-25 21:38:31
【问题描述】:

我正在使用 AForgeNet 从视频流中抓取扑克牌。我抓住了整张卡片以及卡片实际排名的部分,我的问题是模板匹配对我来说并没有真正发挥作用,因为它要么敏感,要么会犯很多错误。

所以我想到了将图像分成如下部分的想法:

如果一个部分的黑色超过 50%,它将表示 1,否则表示 0。这将生成一个二进制表示,我可以将其与我的“模板”进行比较。作为一个游戏牌组,它只有字符:AKQJ1098765432,我认为它们是独一无二的,而且几乎没有足够的字符来工作。这样,图像是否偏离 1-2 个像素都无关紧要。

我确实怀疑已经有类似的东西可以重复使用,有什么想法吗?

【问题讨论】:

  • 当您使用 AForge.NET 时,这可能是他们神经网络的一个有趣用途。
  • 我读到的内容不够快,无法每秒处理至少 3-4 次读取,我错了吗?
  • @StefanE NN 训练后的速度非常快

标签: c# .net image-processing aforge


【解决方案1】:

我认为更稳健的解决方案是从卡号和等级中提取尺度和旋转不变特征。你可以试试,例如image moments

提取这些图像特征后,您可以训练一些分类器(例如神经网络)来预测卡号和排名。

【讨论】:

  • 是的。像 SURF 这样的功能也是处理这类问题的好方法。它们似乎在 openCV 中可用
【解决方案2】:

您可以通过使用插值将图像缩小到不小于原始大小的 10% 来创建图像指纹。对于黑白图像,指纹将呈灰色阴影。如果您减去两个图像的指纹,您将获得它们相似性的度量——您可以通过实验确定一个阈值,以一致地确定匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2014-02-09
    • 2014-03-22
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多