从这个帖子继续:
What are good algorithms for vehicle license plate detection?
我已经开发了我的图像处理技术来尽可能地强调车牌,总体上我对它很满意,这里有两个示例。
现在最困难的部分来了,实际上是检测车牌。我知道有几种边缘检测方法,但我的数学很差,所以我无法将一些复杂的公式转换成代码。
到目前为止,我的想法是循环通过图像中的每个像素(基于img宽度和高度的循环),从这个比较每个像素与一个颜色列表,从这个检查一个算法,看看颜色是否继续区分车牌白色和文本的黑色。如果这是真的,这些像素被构建到内存中的新位图中,那么一旦停止检测到该图案,就执行OCR扫描。
我希望在这方面提供一些意见,因为它可能是一个有缺陷的想法,太慢或太密集。
谢谢
发布于 2011-01-19 06:00:33
您的“查看颜色是否持续区分车牌白色和文本的黑色”的方法基本上是搜索像素强度从黑色变为白色的区域,反之亦然。边缘检测本质上也可以完成同样的事情。然而,实现您自己的方法仍然是一个好主意,因为您将在这个过程中学到很多东西。见鬼,为什么不两者都做,并将您的方法的输出与一些现成的边缘检测算法的输出进行比较?
在某些情况下,你会想要一个二进制图像,比如黑色像素对应于“非字符”标签,白色像素对应于“是字符”标签。也许最简单的方法是使用阈值函数。但是,只有在以某种方式强调了人物的情况下,这才能起到很好的作用。
正如您在其他帖子中提到的,您可以使用黑帽操作符来完成此操作,其结果如下所示:
比方说,如果你用Otsu的方法(它自动确定一个全局阈值水平)对上面的图像进行阈值处理,你会得到这样的结果:
有几种方法可以清理该图像。例如,您可以找到连接的组件,并丢弃那些太小、太大、太宽或太高而不是字符的组件:
由于图像中的字符相对较大且完全连接,因此此方法效果很好。
接下来,您可以根据邻居的属性过滤剩余的组件,直到获得所需的组件数量(=字符数)。如果你想识别字符,你可以计算每个字符的特征,并将它们输入到分类器中,分类器通常是通过监督学习构建的。
当然,上面的所有步骤只是一种方法。
顺便说一句,我使用OpenCV + Python生成了上面的图像,这是计算机视觉的一个很好的组合。
发布于 2011-01-19 01:48:43
颜色,就像看起来很好一样,在阴影和光照条件下会带来相当多的挑战。这取决于你有多想让它变得健壮,但现实世界中的案例必须处理这样的问题。
我对道路镜头进行了研究(请查看我的个人资料页面并在此处查找sample),并发现现实世界中的道路镜头在光线条件下非常嘈杂,您的颜色可能会从棕色变为白色,以获得黄色的背面车牌。
大多数算法使用线检测,并尝试找到纵横比在可接受范围内的框。
我建议你做一个关于这个主题的文献回顾,但这是在1993年实现的(如果我没记错的话),所以将会有数千篇文章。
这是一个相当科学的领域,所以只有一个算法不能解决它,您将需要许多预处理/后处理步骤。
简而言之,我的建议是使用Hough变换来查找线条,然后尝试查找可以创建可接受的纵横比的矩形。
哈里斯特征检测可以提供重要的边缘,但如果汽车是浅色的,这将不起作用。
发布于 2011-01-19 18:34:06
如果你有很多样本,你可以尝试检查Paul Viola和Michael Jones开发的人脸检测方法。它对人脸检测很好,也许它在车牌检测方面也可以做得很好(特别是如果结合其他方法的话)
https://stackoverflow.com/questions/4727119
复制相似问题