点击我爱计算机视觉标星,更快获取CVML新技术
二维码已经进入人们的日常生活中,尤其是日本Denso Wave公司1994年发明的QR码,由于其易于检测、写入信息量大、提供强大的纠错机制,应用最为广泛,可说是名副其实的第一大图像识别应用。
QR码的检测和解码成为很多应用开发的必备,面对众多的开源库,到底哪一种是比较好的呢?
BoofCV的作者Peter Abeles对较有影响力的五大开源库中检测算法进行了比较,值得大家参考。
参与比较的开源库:
BoofCV (Ver. 0.33):一种用Java实现的开源、实时的计算机视觉库;
http://boofcv.org/
OpenCV (Ver. 4.0.1):OpenCV 4.0后加入了QR码检测和解码功能,C++实现;
http://opencv.org/
Quirc (Feb 1, 2018. SHA 307473db):一种专门面向QR码的检测和解码库,C语言实现;
ZBar (Ver. 0.10):一种被广泛使用的包含各种条码检测识别的专门库,支持各种平台,支持Python, Perl, C++等语言;
ZXing (Ver. 3.3.3):一种面向Java Android开发的各种条码检测识别库,用Java开发,支持多种语言;
图像分类:
为全方位比较各个开源库检测QR码的性能,作者收集了在应用中大量常见的情况。
包括模糊、阴影、高光、扭曲、被涂损等15种情况,如下图:
各类别包含的图像数:
检测结果:
作者以检测到的位置和标签位置重合10%为阈值定义检测成功,计算true positives, false positives, true negatives, 与 false negatives,并最终计算F-Measure来比较检测结果。
分类别的检测结果统计:
不分类别的全局统计:
可见,没有哪个库处于统治地位完全比其他库更好,但BoofCV在大多数情况下为最好或者接近次好。Zbar在大多数类别下比ZXing好,但在ZXing最擅长的类别,Zbar不够好。quirc在一般情况下都表现良好,但在其他库表现最好的类别却不是很好。OpenCV则是毫无疑问总是最差。
检测速度结果比较:
在哪一类别的表现均一致,ZXing是最快的库,BoofCV次之。OpenCV的速度表现很稳定,最慢。。。
结论:
选择哪个库取决于你的应用,如果二维码比较标准建议BoofCV,它的检测精度高而且速度也很好,如果二维码有污损或外观变化,ZXing是不错的选择。如果只能使用C++,则推荐Zbar。
(反正OpenCV是不被推荐的!)
CV细分方向交流群
52CV已经建立多个CV专业交流群,包括:目标跟踪、目标检测、语义分割、姿态估计、人脸识别检测、医学影像处理、超分辨率、神经架构搜索、OCR、SLAM、GAN、强化学习等,扫码添加CV君拉你入群,
(请务必注明相关方向,比如:目标检测)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。
(不会时时在线,如果没能及时通过验证还请见谅
长按关注我爱计算机视觉