最近宣称开发出自有条码系统的人越来越多了,振戎融通也在2006年11月推出了自己的Zcode。下面我们分析一下这个Zcode水平怎么样、它到底是个什么条码系统、它能不能获得专利以形成自己的技术壁垒。
先看看条码模样,一眼就能看出:
1. 这个条码稀疏难看,一定没有掩膜设计。所谓掩膜(masking),指在编码区域内用特定的公式对条码颜色分布进行异或(XOR)处理。简单地说,掩膜就是让条码排的更均匀的设计,其目的是使符号中深色与浅色模块数的比例均衡,并减少影响图像快速处理的图形出现。
2. Zcode在编码中没有剩余码字的处理算法。所谓剩余码字(remainder crossword),指当数据码字不能全部填满数据区单元格时,用于填充所余空间的一种格式化码字。其目的是使其目的是使符号中深色与浅色模块数的比例均衡。
3. Zcode在编码中很难设计纠错算法,原因是全部数据区最大仅为60个单元,很难设计RS纠错算法。没有纠错算法,意味着条码在印刷和使用过程中,不能有一点污损,同时也无法避免内容识读出错现象。
4. Zcode的寻像图像设计思路,同Visual code有直接的血缘关系。Visual code是Michael Rohs在2004年开发的一个开源二维条码项目,此项目版权采用Creative Commons模式,如果核心算法来自这种已经完全公开的知识产权开源项目,则无法申请算法专利。
从以上四点,我们可以得出结论,Zcode是“无掩膜、无剩余码字、无纠错”的三无产品,在二维条码技术上处于非常原始的阶段,全球200多种二维条码系统中,仅有极少数的条码系统处于这种初级技术水平的发展阶段。
下面是对Zcode条码系统的简单分析:
下面是对Zcode纠错能力的试验:
下面是Zcode的寻像图形与Visual code的对比分析:
从上面的对比可以发现,Zcode有明显的侵犯Visual code开源项目Creative Commons知识产权的嫌疑,无法就此获得寻像图像的核心专利。下图是开源代码在Source Forge上的地址,不过已经不能下载了:
为什么这么多机构都不顾知识产权问题,飞蛾扑火一般盗用Visual code的设计思路呢?
我认为,一方面是因为开发人员缺乏技术能力,饮鸩止渴者都是极度饥渴的人,开发人员没有核心技术却被老板天天逼着出成果,自然找到什么就用什么,管他知识产权如何,那不是开发者关心的问题。同时,老板也对技术和专利懵懵懂懂,如此下去,自然就走到抄袭乃至剽窃的路上了。不过,老板一旦明白了其中的利害关系,就要推翻重来了,比如Quick Mark用低效率但是自己研发的V3取代有侵权嫌疑的V1,就是一个案例。
另一方面,写出Visual code的Michael Rohs实在是天才,所有看过他源代码的人都会赞叹不已,那些代码思路清晰,逻辑简捷,非常适合初学者,就像是一只魔戒,谁见了都想据为己有。坦率地讲,Visual code给了我很多挑战和启发,但是我找不到源代码,没有办法拿来参考,只有自己重新设计一套思路出来。我非常庆幸自己看到这套源代码时,已经设计出来了更有效率的寻像图形方案,才有足够的自信抵御抄袭的诱惑。如果是在完善自己的条码系统设计之前看到过这些代码,可能我也会放弃自己的想法,直接采用Rohs的思路的。
BTW, 说说我对Visual code的评价吧。这个东西是如此简洁有效,就像条码界的《葵花宝典》,不需要什么功力,只用“引刀自宫”,就能拥有天下无敌的神功。在小说里了解东方不败功夫的人都知道,葵花宝典的秘诀在于一个“快”字,快捷如风使得东方不败“以无隙入有间”,用一根小小绣花针击败诸多绝世高手。理论上说,这种“快”的解释是成立的,但是金庸没有说明白“如何能快”,总不能说“引刀自宫”后比别人少了一点重量,就变得很快吧!
Visual code的神功不在于条码编得有多高明,关键在于“引刀自宫”,这种编码系统设定为仅有一个版本,不需要验证版本信息,没有交织方案,没有掩膜,没有纠错,只有一个校验,把所有增强功能选项全部去除,自然运算速度就快了。
当然,Michael Rohs的高明不仅仅在于他劝说门徒都“引刀自宫”,在功能删减以外,他的创举就在于对整个解码流程的逻辑设计。他用一个“大循环”框架,把寻像、定位、标记、二值化、仿射变换、01矩阵全部一次完成,使得解码速度大大提升,这是高手风范的真正体现。
Visual code快的其他特点,除了寻像图形的优越外,还来自Michael Rohs对S60系统特性的了如指掌。如果把Visual code速度快的原因划分比例,应该是这样的:
寻像图形的优越 10%
编码方案的简单“自宫” 20%
程序流程的简单“大循环” 60%
对运行平台的了解 10%
最后,说说Visual code的缺点。首先,Michael Rohs设计这个条码系统的目的,是作为人机交互的快速标签,不是为了存储过多信息。下图是Visual code标签设计的初衷:
在Visual code设计方案中信息存储量极少,如下图所示,Visual code包括纠错仅仅能存储76个比特,换算成中文最多只能存5个汉字。人家根本就不是为这个设计的,目的不同,方案设计自然不能算是优越的。
其次,物极必反,Visual code的最大缺点同样也是“引刀自宫”造成的。码图太小,没有空间设计掩膜、纠错这些成熟条码系统必备的功能,Michael Rohs曾对我说过这也是他的遗憾。当年他开发Visual code仅用了四个月,也许再给他1个月时间就能把这些东西解决了。不过,这个东西他早就不感兴趣了,天才不管了,那些抄袭天才的庸人们自然也拿不出来解决方案。
我们重温一下《笑傲江湖》的情节。当五岳盟主岳不群先生拿到写有《辟邪剑法》的袈裟(这是一个“Home 版”的《葵花宝典》),他按照指示挥刀自宫,练了之后,居然发现还有另外的法门时,懊悔不已,羞愤之下把那件袈裟从窗口扔向华山的万丈深渊,没想到竟然被藏在窗外偷窥的林平之拣到。
岳不群先生为什么懊悔不已,《笑傲江湖》中没有说,不过清华几个学生拍的搞笑DV里面解释了这个问题。原来,《葵花宝典》的第一页写了:
“欲成神功,引刀自宫”
当东方不败痛苦地吐了一口血,做好 “初始化条件”后,翻开第二页,发现:
“如不自宫,也能成功”
他更郁闷了,气愤之下,又吐了一口血,翻开第三页,发现:
“即使自宫,未必成功”
此时,东方不败的心情,恐怕只有岳不群先生能够体会。
也许那些抄袭Visual code搞条码的人也能体会啊:)