本项目是基于西北农林科技大学屈卫锋等的文章《光照不均QR二维码图像的高效处理方法研究》所进行的代码复现
,并在此基础上进行进一步的实验,目的之一是完成田劲东老师的图像处理课程作业,再就是锻炼自己的代码能力与创新思维能力和OpenCV的熟练度。
- 定位二维码位置并进行图像裁剪以及旋转伸缩
- 复现直方图均衡化后Otsu分割方法并复原二维码
- 对二维码中的信息进行识别
- 现拟用OpenCV对二维码三个角点进行检测,实现识别并定位
- 调整二值化方法与直方图均衡化方法
- 分割更小图片
- 添加高频滤波组件
- 在otsu方法前先进行平滑滤波
经过实验得到:
1.分割更小图片并分别进行Histogram Equalization后虽然能起到更好的恢复效果,但是会导致图片更容易受到噪点的影响。
2.对整幅图像添加高斯滤波后效果仍然不理想。
3.在分块后,在直方图均衡化后且在otsu方法前进行平滑滤波效果要比先进行平滑滤波后直方图均衡化效果更好。
调整图像分割和直方图均衡化的先后顺序,先对整幅图像进行直方图均衡化后对输出图像进行块分割。
实验证明先均衡化后分割二值化则导致分割步骤毫无作用,该方法被证明无效。
跑 pip install -r requirements.txt
以安装所有需要的包。
相较于[4]中的使用人为设置阈值二值化的方式预处理图片,本人使用otsu方法对图片进行处理,效果有较为显著的
提升,便于后面识别二维码定位标志。其次本人对[4]中识别二维码朝向的算法做了改进,提出了一种可以较为简单
且准确的二维码朝向识别方法,便于后面对标志点进行校正。最后,本人还提出了一个形变系数D,用于改善由于
拍摄角度和相机镜头导致的图像变形而使得裁剪出的二维码信息缺少的情况。
在图像预处理步骤添加了高斯滤波步骤,对输入复现[1]中算法输出的二维码信息恢复效果有了一定的提升,并且
尝试了将图像分割成更多的子块进行处理,效果如前所述。
使用pyzbar包对经过前两步处理的二维码进行识别并输出识别结果。
[1] 屈卫锋, 徐越, 牛磊磊,等. 光照不均QR二维码图像的高效处理方法研究[J]. 软件, 2015(6):6.
[2] OTSU算法(大津法—最大类间方差法)原理及实现 https://blog.csdn.net/weixin_40647819/article/details/90179953
[3] python-opencv图像切块 https://blog.csdn.net/hymn1993/article/details/122789718
[4] 二维码的特征定位和信息识别 https://blog.csdn.net/iamqianrenzhan/article/details/79117119
[5] OpenCV二维码检测与定位 https://www.manongjc.com/detail/50-whhxujelpahjvil.html
[6] 详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强 https://www.jb51.net/article/199839.htm