Ash*_*Ash 9 c# gdi+ image object-detection computer-vision
继续这个主题:
我已经开发了我的图像处理技术,以尽可能地强调车牌,总体而言我很满意,这里有两个样本.


现在是最困难的部分,实际上是检测车牌.我知道有一些边缘检测方法,但我的数学很差,所以我无法将一些复杂的公式转换成代码.
到目前为止,我的想法是循环遍历图像中的每个像素(对于基于img宽度和高度的循环).从每个像素与颜色列表进行比较,从中检查算法以查看颜色是否保持区分许可证盘子白色,和黑色的文字.如果确实如此,则将这些像素内置到内存中的新位图中,然后在停止检测到该模式后执行OCR扫描.
我很欣赏这方面的一些意见,因为它可能是一个有缺陷的想法,太慢或太密集.
谢谢
你的方法是"看看颜色是否能区分牌照白色和文字的黑色",基本上是搜索像素强度从黑色变为白色的区域,反之亦然.边缘检测可以完成基本相同的事情.但是,实现自己的方法仍然是一个好主意,因为您将在此过程中学到很多东西.哎呀,为什么不两个都做,并将你的方法的输出与一些现成的边缘检测算法的输出进行比较?
在某些时候,你会想要一个二进制图像,比如对应于"非字符"标签的黑色像素,以及对应于"is-a-character"标签的白色像素.也许最简单的方法是使用阈值函数.但是,如果已经以某种方式强调了角色,那只会很好.
正如你在其他帖子中提到的那样,你可以使用黑帽算子来做到这一点,结果是这样的:

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

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

由于图像中的字符相对较大且完全连接,因此该方法效果很好.
接下来,您可以根据邻居的属性过滤剩余的组件,直到您拥有所需的组件数(=字符数).如果你想识别这个角色,你可以计算每个角色的特征并将它们输入到分类器中,该分类器通常是用监督学习构建的.
当然,上述所有步骤只是一种方法.
顺便说一下,我使用OpenCV + Python生成了上面的图像,这是计算机视觉的一个很好的组合.