一个车厢号码识别算法(2005年的老程序----ccc)
2023-09-18 ccc
- 程序的识别效果
对图中的车厢号码部分用上下两条线限定分为,然后进行识别。
从上面的识别效果可以看出,识别算法具有一定的鲁棒性,能够适应车厢号码的各种形态,并正确是识别。本算法在光照适当的条件下能够达到99%的识别率。
- 基本算法原理
算法的基本原理就是:
- 基本图像块使用128x128归一图块
- 使用基本图快的周围趋势,以及左/上的穿透频率
- 使用最小二乘的距离运算
- 冗余模板计算冗余误差(多模板统计)
这个算法与当前的神经网络和机器学习算法没有任何关系,完全是自己开发出来的(在2004—2005年还没有接触到神经网络和机器学习等概念)。
- 周围趋势描述
使用左边缘线段探查图块中目标的左边缘,根据线段长度(像素数)从上到下生成边缘趋势值,用-1表示减小,0表示不变,1表示增大。同理对上边缘,从左到右,对右边缘从上到下,对下边缘从左到右进行处理,获得图块的边缘数据。
- 左/上穿透频率描述
用线段从左向右穿透图块,每一次遇到像素从0到1的变化表示一个波动,记录整个线段上的所有波动数,表示为该线段上的频率数,对于左频率,从上到下计算,对于上频率从左到右计算,每个频率值使用4比特表示最大为16。
- 冗余误差
对于模板图块使用各种形态的模板,判断比较时采用最小二乘的前n个模板值,统计其中出现的识别种类,以及误差,根据统计规则判定识别结果。
- 图像处理
对于采集的图像,使用基本的灰度/二值图像处理方式,增加一些滤波手段,主要强调光照的一致性,比如环境光,应遮挡日光照射,夜间应使用照明灯(无影灯)。
一般车厢号码应在一定范围内,因此需要确定要处理的图像范围,没有必要全图处理。
这是一个老程序,在2005年完成的,使用delphi编写。现在拿出来看一下,个人觉得还有点价值。