基于混沌图像的防伪技术
所构成的添加子串在除去最后添加的那个元素之前所形成的整个序列中从未出现过为止。此时整个序列的复杂度增加一,当往后继续添加元素时重新建立新的检验子串,如此反复进行,直到结束。如果最后一个检验子串在除去末尾一个元素之前的序列中出现过,复杂度也仍然加一。具体来说,分以下几个步骤:
(1)假如有一数列(x1,x2,x3,...xn), 首先求得这个数列的平均值m,再把这个数列重构。大于平均值m的值,令它们为1;小于平均值m的,令之为0。这样,就构成了(s1,s2,...sn)新的(0,1)序列。
(2)在这样的(0,1)序列中已形成的一串字符S=s1,s2,...sr后,再加称之为Q的一个或一串字符Sr+1或者(Sr+1,Sr+2…Sr+k),得到SQ。令SQπ是一串字符SQ减去最后的一个字符,再看Q是否属于SQπ字符串中已有的“字句”。如果已经有过,那么把这个字符加在后面称之为“复制”。如果没有出现过,则称之为“插入”。“插入”时用一个“。”把前后分开。下一步则把“。”前面的所有字符看成S,再重复如上步骤。例如,序列0010的复杂度可以由下列步骤而得:
a)第一个符号永远是插入→0.
b)S=0,Q=0, SQ=00, SQπ=0,Q属于SQπ→0.0.
c)S=0,Q=01,SQ=001,SQπ=00,Q不属于SQπ→0.01.
d)S=001,Q=0,SQ=0010,SQπ=001,Q属于SQπ→0.01.0.这时c(n)=3。如符号列0000...应是最简单的,它的形式应是0.0000…,c(n)=2。符号列01010101…应是0.1.0101…,c(n)=3。
(3)如上所述,就得到用“。”分成段的字符串。分成了段的数目就定义为“复杂度”c(n)。
根据Lampel和Ziv的研究,对几乎所有的x属于[0,1]?区间的c(n)都会趋向一个定值:
其中,b(n)是随机序列的渐进行为,可以用它来使c(n)归一化,称为“相对复杂度”。
定义相对复杂度:
C(n)=c(n)/b(n)=[c(n)logn]/n? (5)?
通常就是用这个函数来表达时间序列的复杂性变化。从这种算法可以看出,完全随机的序列C(n)值趋向于1,而有规律的周期运动的C(n)值则趋向于0。
如果有一个随机序列,其中“1”的概率并非是0.5,那么它的复杂性就被认为是一个概率为P的随机序列的复杂性。由此可以表达为:
h≤1,h称为源熵,其极大值在p=0.5的位置。h<1时,比较
《基于混沌图像的防伪技术(第2页)》