在 Python 中使用模板字符识别车牌字符

Recognizing license plate characters using template characters in Python

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

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

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

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

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

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

编辑:很遗憾,cv2.matchTemplate 和 cv2.matchShapes 不允许用于此作业...

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

出于这个原因,通常人们会尝试降低 space 维数。第三种方法我不太熟悉,不过好像是往这个方向走的。

减少 space 维度的一种方法是定义一些对您面临的问题有意义的自定义特征。

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