|
最近帮同事做一个仪器数显值的视觉识别程序,遇到了一个分割数字、逗号、小数点的问题。
试了几段流行的 python 代码,效果不甚理想。主要原因是逗号和小数点离数字太近了,经常误读。
现成的库不好用,也懒得找其他库了,干脆自己开发新方法。
试了几种,发现只要把坐标系旋转大约 5° ,然后将像素投影到横轴上,就自然形成了字符的分割。
接下来是要让程序自动计算出坐标系的旋转角度。
如果把分割字符看作是像素点的无监督分类问题,那么线性判别算法(LDA)正好可以用上。LDA 的常规用法是做分类器,这里不是用作分类器,而是用的 LDA 分类的副产品——确定投影轴。
除了 LDA 还想到一种方法,不知道有没有人用过。首先计算字符沿轴的像素累积值,也就得到一个像素的分布函数,并计算这个分布的熵。接下来找到使熵最小的投影轴。
理由是:均匀分布熵最大,对应字符投影相互重叠的情况;集中分布使熵减小,对应字符投影分离的情况。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-24 03:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社