复杂环境下的二维码快速识别(农业部二维码)
最近竞标了农业部二维码的识别,感觉开发出来的二维码识别率还非常不错,速度也很快,这里分享下。
二维码已经开始普及起来。15-20年前设计的QR码和DM码仍然是主流码。国内也有不少码制出现,但其实详细看,也是换汤不换药,适应性还是很差。差的原因是很难适应复杂环境,比如自然环境下的二维码。农业部就是例子,二维码套在牲畜身上,摩擦严重,污染严重,采集的图像随意性非常大。物流二维码类似。
复杂环境下的二维码识别算法异常复杂,需要建立非常多的数学模型,而不是简单的套用代码。libdmtx 是一款非常不错的开源二维码识别库,写得也不错,但是识别率和识别时间还远远不能满足复杂环境的二维码识别。
通过几个月的调研和不断的算法优化,最终我开发出的二维码对复杂环境下的二维码识别率有了非常大的提升,识别时间提升20-30倍,采用了不少加速算法。
对农业部1000个样本的识别率大概在98%, 平均识别时间在10-30ms. 当然,这是PC机的时间,嵌入式采用ARM的初级芯片还不尽人意。但是如果稍微使用高级一点的芯片,加上视频采集时引入缓冲机制,还是可以达到3-10帧率。
测试结果
样本:农业部采集的大概1000个样本,包括大量暗室,复杂背景,污损,磨损,强光,遮挡等。
识别率: 总体识别率98%, 如果只考虑普通样本,识别率接近100% (没有详细统计过)
识别速度: 10-30ms/个样本 ( 4年前的普通PC机)
图片(非最新数据,稍后更新)