zxing源码分析——DataMatrix码部分
zxing 源码分析——DataMatrix 码部分 本文主要讲述了 zxing 源码中 DataMatrix 码部分的代码结构和解码流程。DataMatrix 码是一种二维码,zxing 是一个 Java 库,用于解析和生成各种二维码。 在 zxing 源码中,DataMatrix 码部分的代码结构与 QR 码基本相同。Detector 的功能是从原始图像中找出符号码的部分,并进行透视转换纠正扭曲。解码流程也是类似的,关键在于怎么从原始图像中取出真实的符号图像。 Detector 的主要步骤包括: 1. 大致划出符号图像的位置 Detector 使用 WhiteRectangleDetector 来检测符号图像的位置。该 detector 从图像中间画一个 30X30 的框,然后依次向四边推行,检测四边上是否有黑色的点,直到每一边都没有黑色的点为止。 2. 找寻符号图像四个顶点 大致范围确定以后, Detector 需要确定符号图像四个角的顶点,有了四个角的顶点就可以进行透视变换,符号码图像也就能够取出。zxing 中首先在大检测框的四个角用斜 45 度的直线去检测,按照图中四个角的箭头所示方向进行扫描,检测到第一个黑色的点就返回。 3. 确定定位符 DataMatrix 的定位符是在符号图像边缘的一圈成两个 L 形,一个 L 是实线,一个 L 是虚线。搜索的方法就是沿 4 条边的直线进行黑白变换次数的检测,这里画直线的方法是使用了 bresenham 算法,该算法在求直线各点的过程中全部以整数来运算,因而大幅度提升计算速度。 4. 计算纬度并确定符号形状 纬度就是符号的一边上有多少个模块,计算方法就是去找虚线定位符那一边有多少次黑白变换。纬度计算出来了就可以知道每个模块的宽度,再由此就可以计算出四条边分别有多少个模块。这样就可以计算出符号的长宽比,就能够确定是长方形还是正方形。 zxing 使用 SampleGrid 进行透视变换和采样变换,将原始图像中的符号图像纠正、变换为我们解码需要的规则的,以模块为单位的符号矩阵。 zxing 源码中的 DataMatrix 码部分的代码结构和解码流程与 QR 码基本相同,但有一些特定的实现细节不同。
- yingxin1232018-01-10支持一下下
- xxss552015-01-23没什么用处! 内容质量不高!
- qq_431972272019-01-05百度的玩意
- qq_236122552018-12-11还可以,只是讲解了,整个包的主题逻辑,只是没有对编码规则做分析
- dqy_max2017-10-12还可以,只是讲解了,整个包的主题逻辑,只是没有对编码规则做分析
- 粉丝: 29
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助