基于混沌图像的防伪技术
摘要:本技术采用国际上最新科学成果“混沌”(Chaos)理论,用混沌图像作为防伪技术。混沌系统不同于一般意义的线性系统,其混沌信号具有不可预测的特性,即使设定系统于同一起始点,系统的结果也可能是千差万别。混沌图像包含大量的微结构,这种微结构远小于微印刷技术所能达到的程度,使造假者无法采用“复印”和照相技术等手段来复制。针对混沌图像的信息量大和现有仪器测量不可能很精确的特点,采用非线性复杂性算法的粗粒化技术来提取混沌图像的特征信息。实验表明该混沌图象防伪技术有很强的抗干扰能力。
关键词:混沌 防伪技术 复杂性 不可复制
防伪技术发展到今天,已经成为一个相当可观而且增长迅速的产业,具体的方法、技术和产品数不胜数。当前主要的防伪技术有:激光防伪技术、生物防伪技术、核径迹防伪技术、包装防伪技术和查询识别类防伪技术等等。防伪技术众多,但是不论采用何种防伪技术,无外乎数字型和模拟型两种,而混沌防伪技术结合了这两种类型并通过在模拟信息和数据信息之间建立一一对应关系来达到防伪的目的。由于模拟信息是无法复制的,因此整个防伪标识也是无法被复制、破密的。另外,由于它的信息量大,在这种防伪标记上即使受到一些污点也不影响真假的辨别,抗干扰能力强。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 混沌图像的产生
混沌现象无处不在,只要细心留意,就会发现身边到处都有混沌现象。例如,拿一张纸随意一撕,就会发现纸的边缘有很多毛刺。这些毛刺既没有规律也不可以被重复产生。类似于以上现象,用钢笔在受潮的纸上画一条线时,墨水马上就在纸上渗透开来,在线的两侧出现了无数长短、形状都不一样的“毛刺”。这也是一个混沌现象,同样也是不可复制的。混沌防伪技术正是基于这种混沌现象。显然,这种方法制作容易,成本低,非常适合应用于各种各样的票证。在本文中,为了增加防伪的信息量和美观,用钢笔画了四条长短一至、相互并行的线条在受潮的纸上,外加一个定位框组成混沌防伪图像(如图1)。图中有四条混沌轨道,每条混沌轨道四周是长短参次不齐、弯曲不同的毛刺。混沌防伪技术正是利用这些混沌轨道的不可复制性来达到防伪的目的。
2 混沌防伪标记的识别和信息化
从摄像机上得到的图像,无论从几何形状(尺寸、倾斜角度)上,还是从光照度上都是不确定的。为了能够对图像进行分析,必须首先获得以上的信息,也就是说必须对图像进行定位,然后归一化到某一个确定的几何形状、光照度。在具体实现时,需要在混沌防伪图像周围设计定位符。识别过程如图2所示。
采用图像模式识别、图像定位、图像光照强度分析、图像均衡、图像放大、缩小和旋转等等图像处理技术,获取定位符的几何、光照等信息。然后根据定位符的这些信息对混沌防伪图像进行归一化处理,从而使得防伪图像具有较强的几何适应性和光照适应性,抗干扰能力强,从而大大降低了硬件的成本。
由于每条混沌轨道相对于混沌防伪图像是不确定的,图像识别、定位后,不能直接读取混沌防伪图像的数字信息,还必须采用直线拟合的方法定位每条混沌轨道(结果如图1)。把图1中的许多″毛刺″所组成的弯弯曲曲的曲线看作是一条不规则的波形。然后对它进行采样。于是可以得到以下序列:
xi=x1x2x3…xi…xn (1)
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 用复杂性算法提取特征值
由于混沌图像的信息量大、结构细微,而现有仪器的精度却很有限,不适合直接计算″毛刺″的长短作为混沌图象的特征信息。为此本文采用类似于符号动力学的方法,也就是粗粒化方法,将序列1的复杂性测度作为混沌轨道的特征序列。复杂性方法是计算给定一个序列的复杂程度,任何信号根本上都是一个序列,复杂性测度就反应这个序列的一个重要的非线性特征。
首先取序列(1)的均值:
javascript:window.open(this.src);" style="cursor:pointer;"/>
按(3)式可以把序列(1)变为符号序列{si}=s1s2s3…si …snKolmogorov认为序列{si}的复杂性可以代替序列{xi}的复杂性。
采用最基本的Kolmogorov复杂性算法处理序列{si}。根据Kolmogorov复杂性可认为是产生某给定(0,1)序列最少的计算机程序的比特数,它可以用来衡量序列的复杂程度如何。Lempel和Ziv定义了由有限集合的元素所构成的有限序列的复杂度C(n),它反映了序列接近随机的程度。按有限序列从头开始反复进行以下操作:每次添加一个元素构成一个检验子串,如果该子串在除去最后添加的那个元素之前所构成的序列中已出现过,那么所构成的新序列的复杂度保持不变,并继续添加元素,直到由上述相继添加元素所构成的添加子串在除去最后添加的那个元素之前所形成的整个序列中从未出现过为止。此时整个序列的复杂度增加一,当往后继续添加元素时重新建立新的检验子串,如此反复进行,直到结束。如果最后一个检验子串在除去末尾一个元素之前的序列中出现过,复杂度也仍然加一。具体来说,分以下几个步骤:
(1)假如有一数列(x1,x2,x3,...xn), 首先求得这个数列的平均值m,再把这个数列重构。大于平均值m的