【问题标题】:Recognizing license plate characters using template characters in Python在 Python 中使用模板字符识别车牌字符
【发布时间】:2021-05-30 11:34:27
【问题描述】:

对于大学项目,我必须识别车牌中的字符。我必须使用 python 3 来执行此操作。我不允许使用 OCR 函数或使用使用深度学习或神经网络的函数。我已经达到了能够从车牌中分割字符并将它们转换为统一格式的地步。这里有几个分段字符的例子。

分段字符的格式非常依赖于输入。但是,我可以使用 opencv 轻松地将其转换为统一尺寸。此外,我有一组模板字符和数字,可以用来预测它是什么字符/数字。

因此,我需要一个度量来表示分割字符和参考图像之间的相似性。这样,我可以说具有最高相似度分数的参考图像与分割的字符匹配。我尝试了以下方法来计算相似度。

对于这些操作,我已确保参考字符和分段字符具有相同的尺寸。

  • 按位异或运算符
  • 反转参考字符并逐像素比较它们。如果一个像素匹配,则增加相似度分数,如果一个像素不匹配,则减少相似度分数。
  • 使用“imagehash”对分段字符和参考字符进行散列。从而比较哈希值并查看哪些哈希值最相似。

这些方法都不能成功地为我提供所有角色的准确预测。大多数字符通常都能被正确预测。但是,该程序始终混淆 8-B、D-0、7-Z、P-R 等字符。

有人知道如何预测分段字符吗? IE。定义更好的相似度分数。

编辑:不幸的是,此分配不允许使用 cv2.matchTemplate 和 cv2.matchShapes...

【问题讨论】:

标签: python-3.x image-processing character detection image-recognition


【解决方案1】:

比较两张图像的一般过程包括从两张图像中提取特征并随后进行比较。您在前两种方法中实际所做的是将每个像素的值视为一个特征。因此,相似性度量是在非常高维空间上的距离计算。然而,这种方法会受到噪音的影响,这需要非常大的数据集才能获得可接受的结果。

出于这个原因,通常会尝试降低空间维度。第三种方法我不熟悉,但似乎是朝这个方向发展的。

降低空间维度的一种方法是定义一些对您所面临的问题有意义的自定义特征。

字符分类问题的一种可能性是定义特征来衡量输入图像对字符的战略子形状的响应(上水平线、下水平线、图像上部的圆圈、对角线等)。 您可以定义一组最小的形状,这些形状组合在一起可以生成每个字符。然后,您应该通过测量原始图像在该特定形状上的响应(,将输入图像的信号集成到形状内)来检索每个形状的一个特征。最后,您应该通过在这个较小的特征空间中获取最近的参考点来确定图像所属的类。

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2011-03-31
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多