zxing 源码解读日志 01
这两天看zxing的代码,只针对QRCode部分,首先还是对QRCode的版本和来源做一定的了解,广东发票的条码属于version10(57x57),解读和debug基本也是依靠这个条码来。
目标:了解解码原理,解读部分条码难度的原因,能否针对实际应用做一定的改进,比如处理前做一定的除噪,或者锐化,优化二值化的阙值设置,针对发票的红色边框和文字考虑去掉红色channel,避免打印错位造成无法处理。
QRCode的解码比较复杂,相信看过里面的数据分区就会觉得头皮发麻,特别是不同版本的读取区域又有所不同,所以基本上了解它的原理和读取方法即可。比较重要的还是识别定位点,三个定位点出来就可以获得条码的位置了,也可以做旋转并进一步处理。
首先对图像做了灰度化处理,处理位8bit的灰色图形,不过没有采用预料中的0.3r+0.59g+0.11b,而是直接绘制到content中转换,不知道效率和效果如何。
图形二值化看不出在哪里处理,貌似看到有一处居然是模糊化的函数,不接,而且这个函数确实被调用过。
1 zxing对于旋转一定角度的发票识别效果不好,是抓不到定位点还是其他原因呢?理论上来说旋转应该对抓取定位点影响不大。
2 条码定位点接触到任何神色的点必然影响效果,例如红色表格线,或者连线纸的孔,甚至版本区也会受影响,或者可以尝试取消红色channel,并取消对定位点最后一道线的检测要求,并根据这个形成的边界吧右边的边界清空为白色,避免影响数据读取(可能没有,确定矩形后应该不会读取矩形外的区域吧?)。
//************************************************************************************
* 消对定位点最后一道线的检测要求,修改后效果还可以
* 取消红色channel,效果待检测。。。