10

从这个线程继续:

车牌检测有哪些好的算法?

我开发了我的图像处理技术来尽可能地强调车牌,总的来说我很满意,这里有两个示例。

替代文字

替代文字

现在是最困难的部分,实际检测车牌。我知道有一些边缘检测方法,但我的数学很差,所以我无法将一些复杂的公式翻译成代码。

到目前为止,我的想法是遍历图像中的每个像素(基于 img 宽度和高度的循环)由此将每个像素与颜色列表进行比较,由此检查算法以查看颜色是否在许可证之间保持区分盘子白色,文字黑色。如果发生这种情况,这些像素会被构建到内存中的新位图中,那么一旦停止检测到该模式,就会执行 OCR 扫描。

我很感激对此的一些意见,因为这可能是一个有缺陷的想法,太慢或太密集。

谢谢

4

3 回答 3

5

您的“查看颜色是否不断区分车牌白色和文本的黑色”的方法基本上是搜索像素强度从黑色变为白色的区域,反之亦然。边缘检测可以完成基本相同的事情。但是,实现自己的方法仍然是一个好主意,因为您将在此过程中学到很多东西。哎呀,为什么不两者都做并将您的方法的输出与一些现成的边缘检测算法的输出进行比较呢?

在某些时候,您会想要一个二值图像,例如黑色像素对应于“非字符”标签,白色像素对应于“是字符”标签。也许最简单的方法是使用阈值函数。但这只有在角色已经以某种方式得到强调的情况下才会奏效。

正如您在另一个线程中提到的那样,您可以使用黑帽运算符来执行此操作,这会产生如下结果:

黑帽手术后的图像

如果您使用 Otsu 的方法(自动确定全局阈值级别)对上面的图像进行阈值处理,您会得到:

替代文字

有几种方法可以清理该图像。例如,您可以找到连接的组件并丢弃那些太小、太大、太宽或太高而不能成为角色的组件:

替代文字

由于图像中的字符相对较大且完全连接,因此此方法效果很好。

接下来,您可以根据邻居的属性过滤剩余的组件,直到您拥有所需数量的组件(= 字符数)。如果您想识别字符,您可以计算每个字符的特征并将它们输入到分类器,该分类器通常使用监督学习构建。

当然,上述所有步骤只是一种方法。

顺便说一句,我使用 OpenCV + Python 生成了上面的图像,这是计算机视觉的绝佳组合。

于 2011-01-18T22:00:32.760 回答
3

颜色,尽管看起来不错,但会在阴影和光照条件下提出相当多的挑战。真的取决于你想让它变得健壮多少,但现实世界的案例必须处理这些问题。

我对道路镜头进行了研究(请参阅我的个人资料页面并在此处查找示例),并发现现实世界的道路镜头在光线条件下非常嘈杂,并且您的颜色可以从棕色变为白色以获得黄色背景 -车牌。

大多数算法使用线检测并尝试找到一个宽高比在可接受范围内的框。

我建议您对该主题进行文献综述,但这是在 1993 年实现的(如果我没记错的话),因此会有数千篇文章。

这是一个相当科学的领域,因此仅靠算法无法解决它,您将需要大量的预处理/后处理步骤。

简而言之,我的建议是使用霍夫变换来查找线条,然后尝试寻找可以创建可接受的纵横比的矩形。

哈里斯特征检测可以提供重要的边缘,但如果汽车是浅色的,这将不起作用。

于 2011-01-18T17:48:43.270 回答
1

如果您有很多样本,您可以尝试检查 Paul Viola 和 Michael Jones 开发的人脸检测方法。这对人脸检测很有用,也许它可以很好地用于车牌检测(尤其是与其他方法结合使用时)

于 2011-01-19T10:34:05.773 回答