基于透视变换的3D柱面失真快速响应码修复算法 下载: 747次
1 引言
数据矩阵码(DMC)是一种二维条形码,其形状通过堆叠点或方阵而生成。作为最流行的DMC之一,快速响应(QR)码已广泛应用于日常生活和工业生产中,满足了用户的爆炸性需求。由于QR码的广泛使用和重要性,目前有关QR码的研究有很多,包括视频嵌入QR码[1]、防伪校验[2]、车辆自动导引[3]、QR码标刻[4]。
目前识别和修复QR码仍然充满挑战。当前的解码方法(例如Zxing[5]、Zbar[6])和某些开源库(例如Libdmtx[7]、OpenCV[8])中的解码算法无法直接解码失真的QR码,必须通过一些预处理方法来消除失真。目前可以通过简单的校正方法(例如Gamma校正、旋转)或者特征算子(例如分数阶积分[9]、灰狼优化算法[10])解决一些常见的失真,也有部分深度学习方法(例如堆叠式自编码器[11]、卷积神经网络[12-13])被尝试用来修复运动模糊和斑块失真,但是修复的图像还存在主观可见的失真。目前依然有部分失真(例如3D几何失真)是现有的解码算法依旧无法很好处理的。在3D柱面失真中,每个位置与成像平面之间的角度和距离是不同的,因此失真的程度也是不一致的,当前的算法很难修复圆柱面上的QR码。
在处理失真前通常需要QR码定位。在平面上,Li等[14]使用形态学操作和Hough变换来检测QR码的边界,王素敏等[15]使用轮廓检测,通过查找具有多个内轮廓的轮廓来判断QR码边角区域。在圆柱表面上,Chen等[16]利用轮廓树聚类轮廓,并使用斜率和坐标值获得QR码外边缘,而Wakahara等[17-18]根据QR码的定位符的黑白间隔比率是固定的(1∶1∶3∶1∶1)这个特征来定位QR码区域。
为了修复几何变形,Lay等[19]建议利用透视变换来修复圆柱面QR码,但是此方法需要先获得相机到圆柱的距离。He等[20]提出了一种无需超参数的圆柱表面QR码修复方法,但是需要利用摄像机拍摄旋转圆柱体,然后使用多帧拼接旋转的QR码实现复原。李红卫等[21]在固定场景下使用相机进行标定,获得QR码的空间表达式。刘烽杰等[22]提出了一种通过2D仿射变换修复QR码的方法,该方法首先将QR码分成若干个宽度相同的块,并计算每个块对应的弧长,然后将每个块的宽度拉伸到对应的弧长并重新拼接,获得修复的QR码。该方法虽然简单,但是使用的分段仿射对形变严重的区域存在拟合不足的问题,导致失真依旧存在。
因此本文提出了一个新颖的框架,该框架由定位算法和修复算法组成,能够定位和识别3D圆柱失真的QR码,算法仅需要很少的超参数量。定位算法根据具有固定间隔比率的定位图形来锁定QR码位置。修复算法首先将2D失真的QR图像反向投影到3D真实世界场景,然后将柱面QR码展平,最后投影到成像平面以消除柱面失真。
2 基本原理
2.1 定位算法
整个框架流程首先实现对QR码的定位,然后根据定位结果计算必要的超参数,最后实现QR码修复算法,如
对于输入的QR码,如
2.2 修复算法
柱面失真修复就是将柱面QR码转为平面QR码,即将每个位置的码元拉伸至对应的弧长,但是3D柱面中垂直于成像平面的维度在2D图像中被压缩了,因此在图像中是无法求得每个码元对应的弧长的。同时不同位置与成像平面夹角的不同导致柱面失真的程度也是不同的,所以也无法使用同一变换将每个码元的投影宽度映射为对应的弧长。所以要想修复柱面失真,需要将QR码还原到世界坐标系去计算每个码元被压缩的垂直于成像平面的分量和弧长,然后逐位置将柱面展开成平面,并生成修复结果。
首先将图像中QR码的每个像素映射到世界坐标系下对应的坐标。
式中:f、dx和dy分别为相机的焦距、像素物理长度和宽度。这三个内参都可以通过设备的说明书获得。
图 3. 像素坐标系转换到世界坐标系示意图
Fig. 3. Illustration of transformation from pixel coordinate system to world coordinate system
之后将图像坐标系转换到相机坐标系Xc-Yc-Zc。根据QR码的每个位置与相机之间的距离,成比例地将相机坐标系下的成像QR码投影到相机坐标系的成像平面上。但是,圆柱表面上不同位置与相机的距离是不一致的,因此需要通过几何关系计算。
式中:Z和R分别为相机到圆柱表面的实际距离和圆柱的实际半径。通过(2)式,得到zc的表达式为
其中Δ为
根据求根公式,可以得到zc的两个根,其中一个根对应的QR码张角大于π,但是实际上为了完整地捕获到QR码图像,QR码在柱面上的张角都是小于π,因此无需处理数值较大的根。此外还需注意的是,(2)式只对柱面区域像素成立,而无法求解背景部分的像素。
图 4. 图像坐标系转换到相机坐标系示意图
Fig. 4. Illustration of transformation from image coordinate system to camera coordinate system
最后将相机坐标系中的(xc,yc,zc)转换为世界坐标系Xw-Yw-Zw下对应的(xw,yw,zw)。经一系列平移和旋转,通过朝相机方向平移Z+R,改变坐标系原点位置,然后将Zc轴和Xc轴沿Yc轴顺时针旋转
将QR码还原到世界坐标系后,就可以实现柱面到平面的修复。首先设置QR码的左边界作为基准线,则QR码上任意一点(xw,yw,zw)与左边界形成的张角为θ,根据坐标变换的结果可知,左边界的xw等于0,因此张角θ的计算公式为
因此θ所对应的弧长也能得到,并且该弧长长度即为平面上点(xw,yw,zw)的水平坐标。用(x',y')表示世界坐标系下QR码在修复平面上的坐标,则(x',y')与(xw,yw,zw)之间的关系为
式中:L为QR码的实际长度。
最后需要将世界坐标系中的平面修复图重新投影到图像坐标系中,这个过程可以分解为3个子过程。第一步是将世界坐标系转换为相机坐标系,该步骤不调整坐标轴的指向,因此有
式中:(x'c,y'c,z'c)为(x',y')在相机坐标系下的坐标。第二步是将相机坐标系转换为图像坐标系,由于QR码已经被展平,因此可以认为每个位置的缩放比例一样,即
式中:(x*,y*)是(x'c,y'c,z'c)在图像坐标系下的坐标。最后一步是将图像坐标系转换为像素坐标系,即将原点调整回左上角,公式为
得到的(u*,v*)即为像素最终修复的位置。
尽管世界坐标系下修复的QR码的每个位置能够准确映射到图像中相应位置,但是图像中并非所有位置都将被分配到像素,尤其是在图像中QR码的左右边界附近,像素分布将会比较稀疏。因此,额外采用了最近邻插值方法将最近的像素值填充到这些位置。而且,在修复的图像中,由于QR码被展平,修复的图像尺寸可能会大于输入的图像,因此使用归一化来确保尺寸的一致性。
2.3 超参数计算
将圆柱表面上的QR码映射到平面的转换过程需要一些必要的超参数,其中外部参数包括实际的圆柱半径R、QR码的实际长度L、QR码在圆柱表面的张角θ0、相机与圆柱表面的距离Z,内部参数包括焦距f、像素的物理长度dx和宽度dy。通过定位算法可以获得QR码的水平像素宽度d和垂直像素长度l,
式中:r为柱面的像素半径。将(11)式中的r消除,即可求出θ0。而d、l和r与实际长度的对应关系可以表示为
式中:vval∈{l,d,r};Vval是vval对应的实际长度。
因此只需要知道Z的大小就能够获得所有坐标变换的超参数,然而在整个修复过程中,Z的大小不会影响到最终修复的图像。从像素坐标系到世界坐标系的转换过程中,所有的参数和转换结果实际上都与Z成正比,因此最后得到的(xw,yw,zw)与Z也成正比。虽然QR码的实际坐标依赖于Z,然而通过(8)式和(9)式得到从世界坐标系转换回像素坐标系的过程中,相机坐标系到图像坐标系的比例缩放也为Z,因此可以消除Z对修复图像的影响,即Z只影响QR码实际坐标的结果,而不影响修复图像的QR码像素坐标。在实际处理过程中,将Z设置为10 mm。
3 实验分析与讨论
3.1 实验设置
为了评估所提算法,选择了三个版本为29×29的QR码和另外三个版本为41×41的QR码用于数据对比和主观比较。为了方便,在以下实验中,每个QR码都用“版本/id”来表示。所有输入图像的大小设置为2448×2448。拍摄距离设置为距相机
光心大致500~600 mm处,同时保持实验中的光照不变。从手机说明中得到智能手机的焦距为5.3 mm,像素物理长度和宽度均为0.0015 mm。算法均在Matlab2017a软件中进行仿真。
3.2 预处理分析
所提修复算法需要建立在QR码能够准确定位的基础上。但是,在执行定位算法时,必须分析每个连通域是否是真正的定位符所在的区域,这会增加算法的时间开销。因此,使用预处理技术减少干扰的连通域数量,并以此来验证所提预处理操作的效率。
表 1. 不同预处理操作后剩余连通域的数量比较
Table 1. Comparison of the remaining number of connected domains after different preprocessing operations
|
3.3 Z的有效性分析
本文论述了Z对整个QR码的修复过程是没有影响的。为了支撑这一论述,以“29×29/2”中位于QR码区域的某一点(212,266)为例。
图 6. 当输入点为(212,266)时,在不同坐标系下Z对坐标值变化的影响
Fig. 6. Effects of Z on coordinate value changing under different coordinate systems when the input point is (212,266)
3.4 算法对混合失真的鲁棒性
在现实生活中,在圆柱表面上扫描QR码时,很容易引入其他失真,从而构成混合失真。当存在其他类型的失真时,评估算法对柱面QR码修复的能力,结果如
3.5 与其他算法比较
对文献[
22]的基于仿射变换的修复算法(简称为“SWS”)和所提修复算法(简称为“Ours”)进行性能评估。在文献[
22]中,SWS将图像分别分为4、6、8个等宽部分进行处理,本文分别将其表示为SWS/4、SWS/6、SWS/8。此外,受SWS启发,本文还提出了“DWS”作为基准比较算法。DWS将QR码图像上的投影像素宽度直接拉伸到其相应的像素长度。使用200个位于圆柱表面的QR码作为测试集来验证所提算法性能,QR码包含了从29×29到41×41不同的版本。每个QR码的中心大致位于相机中心附近且部分QR码与水平方向存在0°~30°的倾角。识别率结果如
图 8. 不同柱面失真修复算法的识别率比较
Fig. 8. Comparison of recognition rate of different cylindrical restoration algorithms
图 9. 不同柱面失真修复算法的主观比较
Fig. 9. Qualitative comparisons of different cylindrical restoration algorithms
4 结论
提出了一种低成本但有效的QR码修复方法,该方法通过QR码定位符定位和坐标变换来解决位于圆柱形面上的QR码。首先利用定位符的特定结构来定位QR码;然后在搜索到定位符位置的情况下获得坐标变换的必要超参数;再通过逆透视变换,将柱面失真的QR码反向投影到真实世界场景,在3D世界坐标系中将QR码展平;最后,在投影到图像的过程中使用同一组超参数进行透视变换,获得了没有柱面失真的QR码图像。为了优化修复的图像,采用最近邻插值和归一化以消除未分配到像素值的坐标和调整输出分辨率。大量实验表明,所提算法在修复柱面失真的QR码上具有优异的表现,有助于当前设备识别这类失真的QR码。
[1] 褚晶辉, 田叶, 苏育挺. 基于频率约束的相机与屏幕通信隐写算法[J]. 激光与光电子学进展, 2018, 55(5): 051003.
[2] 乌旭, 张瑾瑾, 张燕恒. 基于二维条码的光学相位防伪掩膜设计方法[J]. 激光与光电子学进展, 2020, 57(21): 210604.
[3] 高雪松, 李宇昊, 张立强, 等. 基于SURF算法的自动导引车精确定位技术[J]. 激光与光电子学进展, 2019, 56(10): 101203.
[4] 李建华, 张郁天, 伊煊, 等. 激光标刻铝锭二维码图像灰度与加工参数计算模型[J]. 激光与光电子学进展, 2017, 54(7): 071203.
[5] Zxing. Open source[EB/OL]. [2020-06-17]. https://github.com/zxing/zxing.
[6] Zbar. Open source[EB/OL]. [2020-6-17]. https://github.com/ZBar/ZBar.
[7] Libdmtx. Open source[EB/OL]. [2020-6-17]. http://libdmtx.sourceforge.net/.
[8] OpenCV. Open source[EB/OL]. [2020-6-17]. http://opencv.org/.
[9] 张晨曦, 陈明惠, 王帆, 等. 小波变换和分数阶积分结合的OCT图像去噪算法[J]. 激光与光电子学进展, 2019, 56(18): 181008.
[10] 严春满, 陈佳辉, 马芸婷, 等. 改进灰狼优化算法及其在QR码识别上的应用[J]. 激光与光电子学进展, 2020, 57(2): 021015.
[11] 吴芯洋, 曾月, 廉昊, 等. 基于SAE的全息图恢复算法[J]. 电子设计工程, 2020, 28(5): 7-11, 16.
[12] 杜亚男. 基于稀疏正则化和深度学习的二维码复原算法研究[D]. 南京: 南京航空航天大学, 2019: 36- 48.
Du YN. Research on two-dimensional code restoration algorithm based on sparse regularization and deep learning[D]. Nanjing: Nanjing University of Aeronautics and Astronautics, 2019: 36- 48.
[13] 宋昊泽, 吴小俊. 图像多尺度密集网络去模糊模型[J]. 激光与光电子学进展, 2019, 56(21): 211001.
[14] Li MM, CaoP, Feng LP, et al.The research of QR code image correction based on image gray feature[C] //2017 First International Conference on Electronics Instrumentation & Information Systems (EIIS), June 3-5, 2017, Harbin, China.New York: IEEE Press, 2017.
[15] 王素敏, 侯爱萍, 袁亮, 等. 基于QR码图形特征的移动机器人定位[J]. 机床与液压, 2019, 47(23): 28-31, 37.
[16] ChenJ, HuangB, MaoJ, et al.A novel correction algorithm for distorted QR-code image[C] //2019 3rd International Conference on Electronic Information Technology and Computer Engineering (EITCE), October 18-20, 2019, Xiamen, China.New York: IEEE Press, 2019: 380- 384.
[17] WakaharaT, YamamotoN. Image processing of 2-dimensional barcode[C] //2011 14th International Conference on Network-Based Information Systems, September 7-9, 2011, Tirana, Albania.New York: IEEE Press, 2011: 484- 490.
[18] Chang YH, Chu CH, Chen MS. A general scheme for extracting QR code from a non-uniform background in camera phones and applications[C] //Ninth IEEE International Symposium on Multimedia (ISM 2007), December 10-12, 2007, Taichung, Taiwan, China.New York: IEEE Press, 2007: 123- 130.
[19] Lay KT, Wang LJ, Wang CH. Rectification of QR-code images using the parametric cylindrical surface model[C] //2015 International Symposium on Next-Generation Electronics (ISNE), May 4-6, 2015, Taipei, Taiwan, China.New York: IEEE Press, 2015.
[21] 李红卫, 熊韬. 基于二维码识别的P4P算法研究[J]. 激光与光电子学进展, 2020, 57(12): 121501.
[22] 刘烽杰, 蔡明. 柱面QR码的识别及实现[J]. 计算机与现代化, 2015(2): 110-112, 116.
Liu F J, Cai M. Recognition and implementation of cylinder QR code[J]. Computer and Modernization, 2015(2): 110-112, 116.
Article Outline
苏育挺, 严昌飞, 刘婧. 基于透视变换的3D柱面失真快速响应码修复算法[J]. 激光与光电子学进展, 2021, 58(8): 0810015. Yuting Su, Changfei Yan, Jing Liu. Restoring 3D Cylindrically Distorted QR Code Based on Perspective Transformation[J]. Laser & Optoelectronics Progress, 2021, 58(8): 0810015.