两种算法比较

2024-05-27

两种算法比较(精选7篇)

两种算法比较 篇1

0 引言

重复词句, 有时指字段、短语、搭配等的重复或同现, 有时是指重复序列、重复语句、同现的字句、或重复排列等, 它是在一篇文本或文集中出现超过两次的字序列。更一般而言, 我们可把某些词看作特定符号来标记。重复字段的抽取和实现是涉及和涵盖了计算语言学和文本挖掘的范围。它们对聚类, 分类, 主题发现和其他机器学习和人工智能技术等都有着重要意义。

1 后缀树

后缀树 (ST) 是一个数据结构, 把文档看作是一个由若干短语组成的字符串, 而不是看作一组词集。例如, 我们用下列语句来生成一个后缀树结构。

“can drive trucks safely.Men drive cars safely.Men can drive trucks.”

我们确定树的最大深度 (这样最大语句长度就被确定了) m=3。图1中所示的就是这种方法生成的后缀树结构。当生成了树形结构后, 获得一个单一重复语句的最简单方法是用递归方法从根节点遍历到叶节点。在后缀树最外层描述一个句子的最后一个词的节点中常给出一个句子出现的频率。

1.1 ST算法执行中的一个细节描述

ST算法执行的伪代码如图2所示。我们同时指出了每一步的时间复杂度。

首先, 一个输入文集被存储在分表中, 以一种方式使得特定的词被连续存储, 并且句子或由标点分开的连续句子在空间上也被划界 (如图3) 。接下来生成一个不能指向任何一个字词的根节点。然后分表的第一个位置的词被读出, 并被添加到有关键码值的哈希表中。

每个后缀树节点表示输入文集的一个字词, 并且它们平行生成一个对应哈希表的接口。如果在一个后缀树中更深层的节点是重复的话, 就能减少总的存储空间。节点同样包含了信息, 如语句在输入文集中出现的次数, 并且它提供了一个关于子节点的列表 (如图3) 。如果一个字词, 在分表中被读出并写入到哈希表中, 根节点应检测:当它是一个父节点时它是否包含一个节点表示当前的字词。如果它是这样一个父节点的话, 出现次数的计数应当累加。否则, 生成一个表示当前字词的新节点并且把它添加到根节点的孩子节点的列表中。在两种情况下, 表示当前字词的节点都被添加到了父节点列表的末尾。接下来, 下一个字词被读出并且这个过程如上述重复进行, 直至分表读完。

1.2 复杂度

如我们在图2中所提到的, 其中N是所有输入文集中字词的数目, m是后缀树的最大层次, 时间复杂度是O (N+N*m+N) 。空间复杂度是O (N) , 有关键码值的哈希表是O (K) 。其中K是在输入文集中关键词的个数, 所有的后缀树节点O (N*m) 的情况是最坏的情况, 所有的ST语句得到O (N*m) , 一般而言。总的时间和空间复杂度是线性的。

2 重复序列

关于重复序列, 早在Salem等的著作中都提出过这个概念。要求每个重复序列必须包含一个名词, 对于是否包含介词等也有相应的要求。这种意义上的重复序列是由几个词组成并且有一个特定的含义。需要增加额外的资源, 如不同的过滤器等。另外它不具有语言独立性。在接下来我们的实验中, 重复序列都是指单纯的重复的词句, 本文中的实验文本和算法都是基于英文文档而言的。

2.1 算法

图4是算法的伪代码。并标注了每个步骤的时间复杂度。算法从文本中提取出的每个标记并不是严格的都是以字词作为基准的, 只要是它们符合语法形态学的意义, 作为每个标记的内容, 可以是字词也可以是任何意义上的符号。将下列句子作为输入文本:

输入文本的预处理, 如标记化, 标准化等都是在算法外实现的, 这样算法真正输入的是标记词的队列。我们将每个词添加到哈希表中时, 都同时创建了一个倒排索引。并且哈希表有一个关于每个词出现次数的表。这张伴随表的内容是这些词在文本中出现的相应位置。理论上来讲, 重复序列的最大长度可以是整个文集的长度的一半。但是, 更加具有可行性的是将重复序列的最大长度限定在一个合理的范围内, 在本例中就将其设定为了3。大于这个限制的序列在处理中将被忽略。

2.2 复杂度

算法中的每一步时间复杂度已在伪代码中标注了出来。如图4中所示, 其中N是文本中的字数, K是文本中原始词的关键码值的字数 (如哈希表中的项) , V是文本中的一个词出现的平均次数。由这三个变量表示的整个算法的时间复杂度是:

接下来再来考察空间复杂度, 我们得到内存中的标记化文本的空间复杂度是O (N) , 倒排索引的空间复杂度是O (N) , 一个词在文本中总的出现次数不可能大于N, 并且序列表的空间复杂度是O (N) 。这样, 总空间复杂度我们得到O (N) 。

3 结果分析

我们在五个长度为大约1MB到30MB的不同文本上运行这两个算法, 这些文本中字词的总数大致为几百万个。我们统计了字句最大长度为3, 4和5的句子, 并且统计了每个算法的时间和空间复杂度。在每个文本运行这两种算法得到的抽取重复词大致相同。

我们对具有30MB大小的英文文档进行了实验。两种不同方法的时间和空间复杂度分别如下所示:

图5曲线证实了我们对算法复杂度的理论假定。ST算法在时间和空间上都是线性的, 而R S算法在时间和空间复杂度上则是上线性的。ST算法的空间消耗大致是R S算法空间消耗的两倍。

两个算法的运行环境都是C#, 使用.N E T F ramework1.1编译实现AM D O pteron 1.6G H z 2G B R AM。

4总结

通过对实验结果的分析比较了二者的性能以及时间和空间复杂度。ST算法在考虑到时间成本时要更优, 但在空间复杂度方面倒排索引方法更好。印证了作者的假设。根据本文实验结果, 用户可以根据不同文档的时间和空间复杂度要求, 来选择两种算法之一。接下来的工作对重复抽取还可以从循环子序列入手, 进一步研究重复序列简化模式的提取和检测过程。

摘要:在利用计算机处理文本信息时, 为了能发现大文本信息中的重复词句, 本文介绍两种用来发现重复词句的算法——基于后缀树的方法和基于倒排索引的方法。第一种ST算法使用树型数据结构, 每个节点表示一个字并且根节点为空。第二种算法应用倒排索引, 以及哈希表实现方法 (HT) 。对同一样本运行仿真后, 在时间和空间复杂度上对实验结果进行比较。得出结论, 尽管ST算法在考虑到时间成本时要更优, 但在空间复杂度方面倒排索引方法更胜一筹。

关键词:重复词句,重复序列,后缀树,算法

参考文献

[1]Grolmus P., Hynek J., Jezek K.:User Profile Identification Based On Text Mining[C].Proc.Of6th Int.Conf.ISIM'03, MARQ Ostrava.ISBN80-85988-84-4.2003.

[2]Debar H, et a1.Fixed vs.variable—length patterns for detecting suspicious process.In J.J.Quisquater, Y.De swarte, C.Meadows, D.Gollmann.eds[C].Proc.of the1998ESORICS Conference, hum—ber1485in LNCS, sep.1998.

两种算法比较 篇2

由于近几年来网络化进程不断加速,提高了人们对信息传输和处理的要求,盲信号处理的特点和其强大的优势引起人们的注意,成为近几年来现代数字信号处理、计算智能学迅速发展的重要方向。

独立分量分析(Independent Component Analysis,ICA)是信号处理领域在20世纪90年代后期发展起来的一类新的盲处理方法,其含义是把信号分解成若干个互相独立的成分[1,2]。根据ICA分析解决问题的具体途径,大致可分为批处理(batch processing)和自适应处理(adaptive processing)两类。本文研究的两算法均是属于批处理方式的。批处理的含义就是指依据一批已经取得的数来进行处理,而不是随着数据的不断输入作递归式处理的过程[3]。在早期,主要的批处理方法是Comon提出的Jacobi法[4],计算比较繁琐,效果也不尽人意,应用较少。法国学者Cardoso对原始算法加以改进后提出的一种建立在“四阶累积量矩阵对角化”概念基础上的方法(即JADE算法[5]),性能有所提高。

笔者针对传统批处理算法存在的缺陷,详细研究了一种图像盲分离新算法———关键比值算法,它摒弃了一般ICA过程中对源信号的过多假设,通过分析混合矩阵,建立比值函数,并利用图像像素灰度值有界性(即灰度值属于0~Q=2q-1之间的整数,q表示像素深度),对函数单调性进行分析,找到解混矩阵的最佳估计值。

2 盲分离问题的数学模型和理论基础

盲分离问题可以建立如图1所示的数学模型[6,7]。

在图1中,s(t)=(s1(t),s2(t),…,sn(t))为原始输入信号,t=1,2,3,…,n,原始信号经过m×n阶混合矩阵A,得到接收端的混合信号

矩阵B为n×m阶解混矩阵,但有时需要把解混矩阵分解成两步———白化矩阵U和分离矩阵W来完成分离的目的,因此解混矩阵的数学表达式为

式中:y(t)=(y1(t),y2(t),…,yn(t))表示分离信号,是对原始信号s(t)的估计。由式(1),(2)得

式中:G称为全局矩阵,最理想的分离效果是G=I(I为n×n阶单位矩阵),即B=A-1。所以盲分离算法的核心问题就是如何寻找到分离矩阵的最佳估计值[8],它包括两个方面:优化判据(或比值函数)和寻优算法,即学习时首先建立一个以已知信息元素为变元的比值函数ρ,其次是寻找一种有效的算法求解W,若能够算出某个能使ρ达到极大(小)的值,该极值点即为W所需的解。

虽然输入的源信号是未知的,但实际的盲源分离算法都对输入源信号的性质和数学特征提出多种假设,并且解混矩阵的优化判据(或比值函数)也是根据这些假设条件提出的。不同算法都有各自的约束条件,但基本假设都具有如下共性[8]:

[假设1]混合矩阵A∈Rm×n(m≥n),为列满秩矩阵,即rank(A)=n。

[假设2]源信号向量s(t)是零均值的平稳随机向量过程,各个分量之间相互统计独立。

[假设3]s(t)的分量中,服从高斯分布的分量不超过一个。

[假设4]各个源信号向量具有零均值和单位功率,并假设噪声向量可以忽略不计。

3 JADE算法

针对上面提出的假设提出了特征矩阵联合近似对角化(Joint Approximate Diagonalization of Eigenmatrix,JADE)算法[5]。其实现过程一般如图2所示。

1)初始化。估计出白化矩阵U,且获得白化信号为z(t)=Ux(t)。此时z(t)的各个分量zi(t)的方差为1,而且互不相关(但未必相互独立);

2)选定矩阵M,根据观察数据,由QZ(M)定义式估计四阶累计量,QZ(M)为四阶累积量矩阵,其第(i,j)元素可表示为

3)求“混合-球化”阵V=UA,寻找能将QZ(M)对角化的V阵;

4)从而作出辨识和分解

最后得到的y(t)就是原始信号s(t)的估计值。

JADE算法属于典型的批处理盲分离算法。它对盲源信号具有一定的分离作用,但是由于缺乏对源信号数据认知,使得算法存在局限,通过分析和仿真实践发现,其算法分离效果存在以下局限:

1)JADE算法在分离“像素点灰度值为零”的图像时,分离图像失真严重。

2)JADE算法建立在上节所述4个假设条件基础之上,所以要求输入信号必须满足统计不相关才能实现有效分离。因此一旦遇到相关性图像时,JADE分离算法就会失效[9]。

3)JADE算法是基于四阶累积量矩阵的理论基础,所以算法数据运算量大,总体分离效果差。

针对JADE分离算法分离过程中存在的问题,关键比值算法提出了有效的解决方法。

4 关键比值算法

关键比值算法是一种新算法,是利用图像信号灰度值为一有界数值的理论建立目标比值函数,寻找分离矩阵的关键值来分离图像。对比前面提出的关于源信号的假设条件,该算法只需要满足假设1即可,具体分析如下:

1)对于假设2,该算法在两幅图像统计相关时也能成功分离图像,所以可不予考虑;

2)对于假设3,因为图像信号大多为亚高斯特性,所以基本假设3的条件已经满足;

3)对于假设4,可以通过去均值和白化处理等达到要求。

也就是说,实现关键比值算法,只需保证混合矩阵A为列满秩矩阵(det(A)≠0)即可。

参照一般盲分离的数学模型,假设输入为两幅不同的原始图像s1和s2大小均为L×R。为分析方便,将图像逐行串接成一个1×N(N=L×R)的一维向量形式,则两幅图像可分别表示为s1(k),s2(k)(k=1,2,3,…,N,N=L×R)的一维向量形式,si(k)(i=1,2)表示图像中第k个像素位置的灰度值。图像经过混合矩阵A得到的混合信号为

混合矩阵2表示两幅图像的混合过程,其中aij>0,(i,j∈{1,2})。为防止混合图像灰度值超出其表示范围,要求混合矩阵A各行之和为1[7],即ai,1+ai,2=1。实际上,假如ai,1+ai,2>1,混合后图像的最大灰度值超出其表示范围,但由于混合过程并没有交换灰度值的大小,仍可将得到的灰度值归一化以后重新调整到其表示范围内,因此本算法只要求混合矩阵中的各元素大于零即可,而混合矩阵中各元素小于零的情况找不到现实依据,故不予考虑。

利用混合矩阵A的第一行作为比例缩放因子,重新定义接收图像的灰度值为

将式(6)代入到式(5)中,对原式变形,得到新的

式中:b1=a21/a11,b2=a22/a12。式(6)中的y1(k),y2(k)就是原始图像s1(k),s2(k)的变形,矩阵则是在这种变化下相对于y1(k),y2(k)的混合矩阵。由矩阵论的相关知识也可知,式(7)等价于式(5),如果能够求解矩阵A′中的元素b1,b2,就可估计出y1(k),y2(k),即原始图像s1(k),s2(k)。考虑到数字图像像素灰度值属于0~Q=2q-1之间的整数(q表示像素深度(BitDepth),比较典型的是q=8,即各个像素点的灰度值是属于0~255之间的整数)。将上述矩阵分析与数字图像灰度值为一有界数值理论结合起来,把混合信号逐个对比,并将比值变化与图像分离情况相关联,可得出一种不同于传统方法的分离算法。令

表示接收到的混合信号之间逐一比较得出的比值,令

表示原始图像之间的比值,将式(9)代入式(8),就得到了寻找分离矩阵所需的第一步,即建立一个比值函数

称为关键比值函数。需要对ρx(k)函数单调性进行分析,来计算或估算ρx(k)的极值点,求解分离矩阵,于是式(10)两边分别对ρy(k)求导,得

可见,ρx(k)关于ρy(k)是一个单调函数,其单调性由b1,b2的大小决定。

再对式(10)的ρx(k)凹凸性进行考察,将式(11)再次对ρy(k)求导,得

由于其中a1,i>0(i=1,2),且任一幅图像像素灰度值都是属于0~Q=2q-1之间的整数,所以有ρy(k)∈(0,+∞),且(1+ρy(k))3>0,由此可知,函数ρx(k)的凹凸性也由b2,b1的大小决定。由于b2≠b1,函数ρx(k)是否会出现直线单调增加(减少)的情况由ρy(k)来决定。分析得出,只有在ρy(k)=+∞时函数才会呈直线单调增加(减少)。

综上,结合式(10)可知,当ρy(k)=0时,ρx(k)=b1,当ρy(k)=∞时,ρx(k)=b2,换而言之,ρx(k)的取值范围为

确定了ρx(k)的取值范围,也就找到了混合矩阵中与b1,b2的值,为混合图像的分离提供了依据。下面考虑如下两种极值情况:

1)假设存在像素点k1,使y2(k1)=0,y1(k1)≠0,则ρy(k1)=0;

2)假设存在像素点k2,使y2(k2)=Q,y1(k2)=0,则ρy(k2)=+∞。

通过ρy(k)的这两个值也就确定了ρx(k)的最大和最小值,即可估计出关键的混合参数带入式(7)可以得出原始信号s1(k)与s2(k)的估计值如下

为减少对逆矩阵的计算量,根据逆矩阵的定义,对上式中求逆运算进行适当简化,得

需注意的是,估计值有可能不在[0,Q]的范围内,这就需要通过一定的缩放比例使得其值为[0,Q]之间的整数,但缩放比例不是式(6)中的a11,a12,这是因为a11,a12作为混合矩阵A中的元素是未知的。由于混合矩阵和解混矩阵中并没有存在将的灰度值颠倒改变变量,故可以利用归一化的办法将灰度值重新映射到[0,Q]范围内即可以恢复出原始图像。

这里需要指出的是,综合式(10)和式(13),分析可得出下列两种情况:

1)当b1

即分离出来的图像顺序与原始图像顺序相同。

2)当b1>b2时

即分离出来的图像顺序与原始图像顺序不同。

综合以上讨论可以得出本文所分析的分离算法:

1)利用接收到的混合信号以及数字图像像素灰度值有界性理论,推导得出混合信号之间的比值函数ρx(k1)=x2(k)/x1(k);

2)找到混合信号比值ρx(k)中的最小值和最大值,分别赋给如果希望分离图像与原始图像顺序一致,可以根据需要交换的值;

3)通过式(14)得出估计的原始信号估计值

4)将的值归一化后再乘以[0,Q]中的最大值Q,取整后即得到原始图像的估计

5 仿真及分析

为衡量算法分离性能的好坏,引用2个盲信号分离性能的评价指标:

1)系统矩阵的全局指标,它是基于混合矩阵的评价准则,表达式为

式中:gji是全局系统矩阵G=BA的第(i,j)个元素,项表示在G的第i行矢量元素中的最大值,项表示在G的第i列矢量元素中的最大值。当达到最佳的分离时,性能指标是零,但是受计算误差等影响,该性能指标PI值不可能直接等于零,而只能渐近趋近于零。通常,PI到10-2附近就已表明有非常好的性能[9],因此该性能指标从定量和可操作性方面都接近于实用。

2)IF方法,它是基于图像的评价准则,表达式为

式中:f(i,j)表示源图像各像素点值,表示估计出的图像各像素点值。IF值主要用来判决两幅图像的近似程度,两幅图像相似程度越大,IF值就会越接近于1。

5.1 实验1

本实验选取的是存在像素灰度值为零、也即是存在“黑点”的图像进行仿真。两幅图中都存在明显的“黑点”。仿真结果如图3所示。

观察分离图像,可以看出联合对角化所得分离图像(图3b),尤其是分离图像1,2,存在分离不彻底的痕迹,而关键比值算法分离的图像(图3c)更加接近原始图像。实验中选择的混合矩阵为,通过JADE算法得到的全局矩阵为,算法性能值为PI1=0.244 229 485 1;而关键比值算法得到的全局矩阵为,算法性能值为PI2=0.007 843 137 3。

观察全局矩阵数据,G2矩阵中的每一行和每一列中有且仅有一个元素远大于其他的元素,比G1更接近单位阵。PI值显示JADE算法没有将图像有效分离,而关键比值算法PI值小于10-2,分离效果非常好。

再观察几幅图的IF值,如表1所示。可见,JADE算法得到的IF值很小,关键比值算法得到的IF值非常接近于1。这点通过理论分析也可以得出,实际值为b1=-0.966 1,b2=4.970 3,由于两幅图均存在零点像素,仿真估计出来,这样仿真值和实际值之间的误差函数值e(b2)=也很小,因此关键比值算法比JADE算法的分离图像更加接近原始图像。

综合两种指标分析得出,在分离存在像素灰度值为零的图像时,关键比值算法能够很好地将存在“黑点”的图像分离,而JADE算法则不能实现有效分离。

5.2 实验2

本实验是针对两幅统计相关的图像进行分离,实验结果如图5所示。

首先引用衡量全局矩阵性能的PI值分析关键比值算法的全局矩阵为G2=3,算法性能的PI值为PI2=0.000 000 000 0,则更能说明,尽管这时输入的两幅图像统计相关,但仍可分离出非常理想的图像;而JADE算法所得的全局矩阵为,算法性能的PI值为PI1=0.773 435 127 4,可以说,算法没有将两相关图像分离出来。

再通过衡量图像相似程度的IF值来分析,如表2所示。可见,JADE算法的IF值都很小,关键比值算法的更加IF接近于1,说明后者算法得到的分离图像和原始图像非常相似。

从两种性能评价指标均可看出,JADE算法并没有将两幅统计相关的图像分离出来,而关键比值算法则有效实现了对图像的分离。这是因为,在JADE算法中,由于源信号具有单位方差,也即是把源信号振幅的动态变化归并到混合矩阵A的相应列中,因此联合对角化所得到的酉矩阵所估计的是A赞ζ而不是A,所以在分离相关信号时,所得的分离信号和源信号相差ζ-1,即原始信号相关性越大,分离效果越差。

而在关键比值算法中,实验中的混合矩阵为A=,计算出b1=0.500 0,b2=0.666 6,仿真估计值,仿真值与计算值相等,即能够实现对相关图像的有效分离。

5.3 实验3

最后对两算法的综合性能加以验证。方法是选定一系列图片,每次随机选取2幅图像作为输入,进行500次Monte Carlo仿真。图6,7分别为两算法的仿真结果。

可以看出,JADE算法PI性能值在0.1以下的只占50%,而关键比值算法则达到了90%,这是因为JADE算法虽然在分离常规图像时有较好的表现,但其在分离“黑点”图像和相关性图像会产生失真,所以输入图像中一旦存在“黑点”或相关性图片,分离效果就非常差,甚至不能分离。而关键比值算法不仅在常规图像分离时优于前者,而且在分离“黑点”和统计相关的图像时,更具有突出表现,由于对输入图像性质的限制非常少,所以算法综合分离性能明显高于JADE算法。

6 结论

笔者针对JADE盲分离算法存在的问题,提出利用关键比值算法解决的方案,并通过理论分析阐明算法可实施性,最后利用多组不同图像仿真和性能评价指标,验证关键比值算法解决传统图像盲分离问题的有效性。仿真结果表明:在对像素灰度值较的———尤其是黑点图像,以及统计性相关的图像分离时,关键比值算法能够迅速准确地找到分离矩阵的最佳估计值对其分离;而JADE算法对这些类图像的分离则会失效。Monte Carlo仿真也表明,关键比值算法分离速度快,效果好,综合分离性能明显强于传统JADE算法。

参考文献

[1]丁铎,魏橦.混合ADSL信号的盲分离[J].电视技术,2006(4):56-58.

[2]黄锐.一种改进的视频图像采集处理系统设计[J].电视技术,2008,32(7):24-27.

[3]杨福生,洪波著.独立分量分析的原理与应用[M].北京:清华大学出版社,2006.

[4]COMON P.Independent component analysis,a new concept?[J].Signal Processing,1994,36(3):287-314.

[5]CARDOSO J F.Higher order contrasts for independent component analysis[J].Neural Computation,1999,11(1):157-192.

[6]史习智.盲信号处理——理论与实践[M].上海:上海交通大学出版社,2008.

[7]张贤达,保铮.盲信号分离[J].电子学报,2001,29(12A):1766-1771.

[8]马建仓,牛奕龙,陈海洋.盲信号处理[M].北京:国防工业出版社,2006.

两种算法比较 篇3

阵列信号处理在近几十年来得到迅速的发展。空间谱估计作为阵列信号处理的重要分支也得到了长足的发展,成为了阵列信号处理学科的重要发展方向。

宽带信号是雷达、声纳及通信中常遇到的一类特殊信号。对宽带信号的处理,在子空间思想的基础上衍生出了非相干信号子空间法(Incoherent Signal-Subspace Method)和相干信号子空间法(Coherent Signal-Subspace Method,CSM)。非相干信号的方法先将宽带信号分解成若干个窄带信号,再对于每个子带应用窄带高分辨算法进行方位估计,最后把各子带的估计结果合成为最后的宽带测向结果。这种方法的缺点是不能解相干源,而且分辨能力较低。相干信号子空间法(CSM)通过聚焦将各子带的信号聚焦到一个子空间中,使得子空间的维数等于宽带信号源的个数,从而可以使用窄带的方法进行方位估计,具有解相干的能力,而且可以显著地提高分辨率。但是这类算法中很多都需要对方向进行预估计,而且最终的测向结果很大程度上受到预估计准确性的影响。

目前对窄带信号的方位估计的算法的研究已经非常成熟,如何使得这些适用于窄带信号的成熟的算法也能用于宽带信号,从而改善宽带信号的测向性能。从宽带信号的特性可知,由于带宽较宽的缘故相对窄带的情况引入了测向模糊的问题,使得窄带的测向算法不能直接适用于宽带信号。为了利用已成熟的优良的窄带测向算法,结合宽带信号的特点,就必须对宽带信号在保证信息无损失的前提下进行一定形式的变换使之能满足窄带测向算法的要求。从而,对宽带信号应用测向算法前进行的变换处理就成为了我们研究的内容。

为了避免初始方位角的估计,文献[1]提出了广义阵列流行内插算法,引入了指向矢量的贝塞尔函数近似表达式,从而将方向矩阵变换成两部分,一部分与方向有关,一部分与频率有关,因此在求聚焦变换矩阵时不需要进行方向预估计。但是该算法在用贝塞尔函数表示指向矢量时引入了误差,而且要获得聚焦矩阵需要在每个子带内进行特征值分解运算,因此运算量很大。文献[2,3]提出了空间重采样的方法来实现聚焦,空间重采样的方法不需要方向预估计,而且降低了运算量。

本文分析了空间重采样的算法原理,并且讨论了实现空间重采样的两种不同方法,最后通过仿真实验以文献[1]提出的广义阵列流行内插算法作为参考验证了算法的有效性,并且对讨论的两种空间重采样算法的性能进行了比较。

2 信号模型

考虑由M个阵元组成的均匀线阵,各阵元间距为d,为避免相位模糊,d小于入射信号最高频率所对应波长的1/2。空间中有P个远场平面波,占有相同的带宽且为带宽与中心频率可比的宽带信号,其入射方向分别为θ1,…,θP。则第m个传感器上接收到的信号可表示为:

xm(t)=p=1Ρsp(t+(m-1)dsinθp/c)+nm(t)(1)

其中:sp(t)为p方向入射的宽带信号,nm(t)为加性噪声,c为波的传播速度。通过DFT变换得到其窄带fk处对应的频域表达式为:

xm(fk)=p=1Ρexp(j2πfk(m-1)dsinθp/c)+nm(fk)(2)

那么阵列的输出用矩阵的形式可表示为:

X(fk)=[x1(fk)x2(fk)xΜ(fk)]Τ=[a1(fk)a2(fk)aΡ(fk)][s1(fk)s2(fk)sΡ(fk)]Τ+Ν(fk)=A(fk)S(fk)+Ν(fk)(3)

对于等间距直线阵而言:

A(fk)=[a1(fk)a2(fk)aΡ(fk)](4)

A(fk)是M×P维的方向矩阵,其中元素表示为:

am(fk)=[1,exp(j2πdfksinθm/c),,exp(j(Μ-1)2πdfksinθm/c)]Τ(5)

式中:c为声速,θm为第m个目标的入射角:

S(fk)=[s1(fk)s2(fk)sΡ(fk)]Τ(6)

对宽带信号,整个带宽内被分成K个窄带,在信号与噪声相互独立的条件下,子带的协方差矩阵表示为R(fk)。

R(fk)=E{X(fk)XΗ(fk)}=A(fk)Rs(fk)AΗ(fk)+Rn(fk)(7)

式中Rs(fk)=E{S(fk)SH(fk)},Rn(fk)为噪声协方差矩阵。

3 空间重采样算法

由上述式(4)和式(5)可以得知,对于不同的频率会得到不同的方向矩阵,根据窄带Music算法的原理可以知道,那么对应不同频率处的信号张成的信号子空间就不同,相关信号子空间的聚焦方法就是通过将阵列的输出进行线性变换,使带宽范围内不同频率处的方向矩阵保持常数。用X(fk)和A(fk,a)分别表示频率为fk阵列的输出和方向矩阵,用f0表示聚焦频率,那么相关信号子空间聚焦方法就是要得到聚焦变换矩阵T(fk)使得下式成立:

A¯(fk,a)=Τ(fk)A(fk,a)=A(f0,a)(8)

那么,宽带信号的协方差可以表示为:

R¯(f0)=k=1JΤ(fk)R(fk)ΤΗ(fk)(9)

上述聚焦的思想就是通过对阵列接收到的信号进行线性变换得到相同的信号子空间,直观地说就是要使得接收到的不同频率信号得到相同的方向矩阵。基于这种思想分析式(4)可知要使得A(fk)=A(f0)成立,既要am(fk)=am(f0),由式(5)可知只要满足:

dfk=(10)

就能满足聚焦算法的要求。那么阵元间距应该是频率的函数d应该是一个频率的函数,表示为d(fk)。那么有:

d(fk)fk=d0f0(11)

则:

d(fk)=d0f0/fk(12)

其中d0表示真实阵元间距。

为了得到相同的方向向量,空间重采样的基本思想就是通过变换阵元间距d(fk)来得到。真实的测向阵列阵元间距是固定不变的,对应不同频率采用不同间距的阵列来接收也是不现实的。也就是说要通过物理的方法来得到相同的方向矩阵是不可取的,那么就需要对接收到的阵列信号用合理的方法进行处理,希望经过处理后能得到与真实阵元间距不同的虚拟阵元(对应频率为fk时阵元间距为d(fk))的输出。这样通过调整阵元间距的方法实质上与聚焦的思想是一致的,只是达到聚焦的目的与上述信号子空间方法不同。

调整阵元间距得到虚拟阵元输出可以通过不同的变换方法来得到,下面分析两种基于不同原理的变换算法:数字滤波器的方法;基于FFT变化的方法。

通过第4部分的仿真实验得出的结果比较了两者的测向性能。

3.1 数字滤波器的空间重采样算法

首先,建立一个空间频率的概念。我们研究均匀分布的线性阵列的情况,把同一时刻M个阵元的输出假设为一离散的时间序列,那么不同的阵元间距就对应了不同的信号频率,称为空间频率。采用空间频率的概念,从空间重采样的原理来看,就是要通过一定的处理来改变空间频率。文献[2]中对频率映射滤波器(frequency-mapping filter)进行了研究。用{xn}和{yn}分别表示输入和输出,h(n,m)表示滤波器的冲击响应,则可得:

yn=mh(n,m)xm(13)

Z变换和Z反变换可以得到:

yn=1/2πjX(z)Q(n,z)/zdz(14)

其中:

Q(n,z)=mh(n,m)z-m(15)

对输出yn式(14)进行Z变换得到:

Y(u)=1/2πjX(z)Η(u,z)/zdz(16)Η(u,z)=nQ(n,z)u-n(17)

z=ejφ,u=ejΨ则式(16)可改写为:

Y(ejΨ)=1/2πj-ππX(ejφ)Η(ejΨ,ejφ)dφ(18)

Q(n,ejφ)=Kejng(φ),K为常数,g(φ)为实函数g′(φ)≠0且|g(φ)|≤π,φ∈(-π,π)的条件下,则有:

Η(ejΨ,ejφ)=2Κδ[Ψ-g(φ)](19)

可见,此时的传递函数为δ函数,对于一确定的输入而言,该滤波器将频率为φ处的信号移到了Ψ=g(φ)处。我们称这种滤波器为频率映射滤波器。

从上述滤波器的原理可以看到,通过该滤波器的处理,输入信号的频率发生了变化。这样的结果正是空间重采样所需要的,将空间信号作为输入得到变换了空间频率的输出信号。空间频率的变换既是阵元间距的变换,从而得到虚拟阵列输出。用hk(n,m)表示时频fk处滤波器的冲激响应,聚焦变换可以表示为:

x¯(n,fk)=m=-hk(n,m)x(m,fk)(20)

文献[4]研究得到了使重采样绝对误差最小的理想滤波器,冲击响应为:

hk0(n,m)=1πsin(Ψk(w0n/wk-m))/(w0n/wk-m) (21)

其中Ψk=min(π,(w0/wk)π)。

理想的重采样滤波器需要无限长的阵列,真实阵列阵元个数是有限的,文献[4]中的研究表明最佳的有限长重采样滤波器表示为h+k(n,m):

hk+(n,m)=hk0(n,m),(m=-Κ,,Κ)(22)

阵元数M满足:M=2K+1。为了避免大的采样误差,输出端可选择的最大阵元数为Μ¯=2Κ¯+1Κ¯=round(Kwl/w0),wl和w0分别为信号的最低频率和聚焦频率。

通过滤波器的处理得到虚拟阵列输出满足了聚焦的要求,因此阵列总输出可以表示为各子带加和的形式得到X¯:

X¯=k=0JXk¯(23)Xk¯=[x¯(1,fk)x¯(2,fk)x¯(Μ¯,fk)]Τ(24)Ηk=(hk(1,1)hk(1,2)hk(1,Μ)hk(2,1)hk(2,2)hk(2,Μ)hk(Μ¯,1)hk(Μ¯,2)hk(Μ¯,Μ))(25)

频率fk处的虚拟阵元输出Xk¯与真实阵列输出Xk之间满足以下关系:

Xk¯=ΗkXk(26)

此时的协方差矩阵用R¯来表示:

R¯=k=0JE{Xk¯X¯kΗ}(27)

由式(27)得到聚焦的协方差矩阵,进而可以利用窄带的方法对R¯进行测向运算,得到阵列接收信号的方位估计。

3.2 基于FFT变换的空间重采样算法

基于FFT变换的空间重采样方法与通过频率映射滤波器的处理方法基本思想不同,但是他们都是建立在空间信号的基础上的。我们把阵元的序列对等于时间序列,与时间域相对应的有空间域的概念,从而对时域信号进行的各种处理方法同样可以用在空域信号上。

为了使得不同的频率子带对应的信号子空间相同,当子带的中心频率压缩了ρ倍时,就需将线列阵的阵元间距扩展ρ倍。为获得阵元间距不同于真实阵元间距的虚拟阵列的输出,必须对真实阵列进行插值。由采样定理可知,一个频谱受限的连续信号可以用等间隔的抽样值惟一表示,采样的间隔满足不大于1/2fmax。我们将真实均匀线列阵的输出看作是对一连续线阵的采样,只要满足采样定理,即d<1/2λmin(λmin为最高信号频率波长)那么连续线阵的输出就可以由采样值恢复得到,从而其上的任一点的输出都能相应的得到。也既是说虚拟阵列的输出可以通过真实阵列输出恢复的连续线阵得到。

为了使得虚拟阵元都分布在真实阵元内部,那么必须选择信号的最低频率作为聚焦频率,同时为了满足采样定理,真实阵元的间距应为最高频率波长的一半即1/2λmin。

若要将阵元数为M,阵元间距为d的真实均匀线列阵的采样输出插值为阵元间距为ρd(ρ≤1)的虚拟均匀线列阵输出,具体方法如下:

(1) 将真实阵列的采样输出做M点FFT变换。

(2) 计算虚拟阵的阵元数D=Round(M/ρ),其中Round(·)表示取最接近于M/ρ的一个整数。

(3) 将第一步中的变换结果做添值处理(增加适当的值,通常在尾部添加并于使添加的值与最后的值保持一致),然后进行D点的逆FFT变换即可得到虚拟阵的输出。

(4) 从虚拟阵的D个输出中取出连续的M个输出作为阵列的输出(通常取中间的部分)。

对于每个子带都进行如上处理后,得到方向矩阵一致的输出,将各子带的输出加和,从而可以利用窄带的方法进行后续的测向处理。

4 仿真实验

通过仿真实验验证两种算法的可行性。为了满足空间采样定理,真实阵的阵元间距d应小于宽带信号最高频率fmax对应波长的一半,此外,为保证虚拟阵列的插值点位于真实阵列的内部,聚焦的频率应选择宽带信号最低频率fmin。

首先比较两种空间重采样的性能。设有15个阵元组成的均匀线列阵,入射信号的带宽为 75~125 Hz,相对带宽为50%,入射角度分别为25°,30°,45°,噪声为不相关的空间白噪声,第二个信号是经第一个信号延迟0.5 s得到的相干信号。每次估计时,信号带宽被分解为10个子带,空间信源的功率相等。由于阵元的限制要得到相对误差较小的测向结果空间重采样的方法要求取较大的快拍数k=500,在信噪比为15 dB的情况下分别进行50次独立实验,两种空间重采样方法所得谱估计结果的均值如图1,图2所示,根据文献[1]中的阵列流形内插算法在相同条件下得到的测向结果如图3所示。

测向算法的均方误差定义为各个方向上的均方误差的和的平均。从均方误差的大小上能较为直观的得到各算法的测向性能的比较。

从图1、图2和图3的比较可以看出空间重采样的算法的优越性。

在相同条件下,列出空间重采样两种算法的10次独立实验估计结果和均方误差如表1,表2所示,对比两者的测向性能。由表1,表2的比较结果可以得出FFT方法相对滤波器方法的性能更优越。

阵列流形内插算法中用近似计算来代替贝塞尔函数的无穷加和,为得到正确的结果应增大n值,当增大到n=-35∶35时得到如图4所示的测向结果,随着n的增大测向算法的计算量也相应增大。

5 结 语

空间重采样的方法通过对接收到的信号进行变换使得不同频率的信号得到相同的信号子空间。

这种算法也是基于聚焦的思想,其频域处理保持了对相干信号子的处理能力。因为不需要对方位进行预估计克服了一般方法对预估计角度的依赖性。正是在这方面基于FFT的空间重采样方法改善了方位估计的性能。

空间重采样算法与阵列流形内插算法相比测向性能更加优越。由文中对空间重采样算法原理的介绍可以看到基于FFT的空间重采样算法是通过对接收信号进行空间傅里叶变换来得到,而通过滤波器变换的算法由于在进行滤波器变换的时候引入了近似运算(对滤波器进行加窗处理)使得算法存在不可避免的算法误差,因此相比基于FFT的空间重采样算法的性能要差一些,而阵列流形内插算法由于贝塞尔函数的近似运算也从根本上就存在了算法误差,加之计算量较大,因此测向性能与空间重采样的方法相比要差一些。

在空间重采样算法的应用中为了使得虚拟阵元在真实阵元内部须选择最低频率作为中心频率。基于FFT的空间重采样算法在进行虚拟阵元数计算时D=Round(M/ρ)可能因此引入误差,为了避免由于近似运算引入的误差就必须选择合适数量的子带使得需要增加的阵元数恰好为整数,从而可以避免近似运算引入的算法误差。同时,为了满足采样定理阵元间距必须小于最高频率信号波长的一半,降低了基阵的相对孔径,导致了其在低信噪比条件下估计信能的下降,但随信噪比的提高,其估计性能迅速提高。空间重采样宽带信号方位估计算法要得到预期的测向效果,对于阵元的选择和子带的选择有严格的要求。

参考文献

[1]Doron M A,Doron E,Weiss A J.Coherent Wide-band Pro-cessing for Arbitrary Array Geometry[J].IEEE Trans.Sig-nal Processing,1993(41):414-417.

[2]Krolik J,Swingler D,Focused Wide-Band Array Processingby Spatial Resampling[J].IEEE Trans.ASSP,1990,38(2):356-360.

[3]朱维杰,孙进才.基于快速富式变换插值的宽带信号方位估计[J].声学学报.2002,27(6):513-517.

两种算法比较 篇4

变换域水印算法按嵌入方式可以分为扩频水印算法和量化水印算法两大类。选择较优的嵌入方式, 对数字水印算法具有重要影响。但究竟何种嵌入方式鲁棒性能更优, 目前尚没有明确的定论。文献[3]中对各种类型的量化嵌入水印算法进行了详细分析;文献[4]研究了基于扩频机制的水印算法;Fernando等人针对这两类算法曾在理论上进行了对比分析[5]。该文主要从实验的角度选择两类嵌入算法中的典型代表进行对比分析。

对图像进行分块 (8×8) DCT变换, 分别利用加性扩频算法和抖动调制算法在其低频系数嵌入水印, 在确保嵌入水印后的图像的峰值信噪比 (PSNR) 相同的条件下, 对嵌入水印的图像进行各种简单的攻击测试, 通过检测其误码率 (BER) 来比较水印算法的鲁棒性能。该文的研究有助于数字水印嵌入算法的深入开发和研究。

1 数字水印性能

数字水印就是隐藏在载体数据中的有意义或无意义的标识信息, 当嵌入水印的载体数据经历攻击之后, 通过对隐藏信息的检测或提取, 可以达到版权保护、防伪等目的。因此对于数字水印而言, 保真度、鲁棒性和容量是其最主要的三个特性[6]。

从图像数字水印的角度来说, 保真度即视觉上对水印的不可感知性, 它要求嵌入水印的图像和载体图像近似相等, 通常用峰值信噪比 (PSNR) 来衡量;鲁棒性指经历了各种攻击之后, 仍能检测到水印信息的能力, 一般是用误码率 (BER) (公式15) 来衡量鲁棒性能的高低, 误码率越低, 鲁棒性越高;容量则是指在载体图像中最多可以嵌入水印的比特数。

若三个特性都达到最优, 则算法肯定最好, 可是三个特性之间的关系是相互制约的, 如图1所示, 不可能设计一个算法使三个特性的值都达到最高, 只能根据实际的需求在三者之间进行折中。对于图像数字水印技术而言, 一般对鲁棒性具有较高的要求, 即要求载体图像被攻击之后, 仍能够检测到水印信息。因此本文选择在保真度和容量达到一定要求的情况下, 对算法的鲁棒性能进行比较, 具有更实际的意义。

2 两类水印嵌入算法的理论分析

2.1 扩频水印算法

扩频水印算法就是将水印信息以扩频的方式嵌入到载体图像的变换域系数上, 这里所指的扩频水印算法仅局限于Cox最早提出的三种方式嵌入水印的算法, 即

其中X表示载体图像待嵌入水印的变换域系数, W表示待嵌入的水印信息, α表示加权系数, 用于控制水印的嵌入强度, S表示嵌入水印之后的变换域系数。

我们将以上三种方式分别称作加性扩频、乘性扩频和对数扩频的方式。实际上, (1) 式和 (2) 式是等价的, (1) 式中的α相当于 (2) 式中的αX。对 (3) 式两边取对数, 可得

在对数坐标下, (1) 式和 (4) 式是等价的, 因此 (1) (2) (3) 式在本质上是相同的[6]。

从以上的嵌入方式来看, 扩频水印算法较为简单, 水印信息经过简单的缩放, 加载到载体图像上, 在嵌入的过程中没有充分利用载体图像的信息。而在提取水印时需要利用原始载体或者原始水印信息, 无法做到盲提取。这对于要求实现盲提取的水印系统不适用。若是在嵌入水印之前, 利用伪随机序列对水印信息进行调制, 则可以通过相关性检测达到盲提取的效果[7]。

2.2 量化水印算法

量化用于数字水印技术主要是从保真度和鲁棒性两个方面出发考虑的。量化可以用以下公式表示:

其中, x表示待量化的数据, step表示量化步长, y表示量化结果, []和round表示四舍五入的取整操作, fstep () 是一个量化函数。从公式 (5) 来看, 量化的结果均是整数, 因此量化输出的数据都是离散的。y-x称为量化误差, 并且要求量化误差满足|y-x|≤step/2, 若是量化的步长不是很大, 则y和x是近似相等的, 所以量化可以满足数字水印保真度和鲁棒性的要求, 因此将量化应用到数字水印技术中[8]。

量化索引调制 (QIM) 是Chen等人最早通过对基于量化的水印算法分析提出的, 而抖动调制 (DM) 是一种典型的实现方法[9]。该文中选取此方法进行实验, 具体算法将在下一节描述。

量化水印算法与扩频水印算法不同的是, 水印信息不是简单的加在原始信号上, 而是根据水印信息用不同的量化器去量化原始的载体信息, 从而实现水印的嵌入。提取水印时, 根据待检测数据与不同量化结果之间的距离恢复水印信息, 可以实现盲提取。

3 具体算法描述

实验中选择对载体图像进行分块 (8×8) DCT变换, 采用典型的加性扩频水印算法和抖动调制量化水印算法 (DM) 在低频系数上嵌入水印信息。水印的嵌入框架如图2所示。

3.1 加性扩频算法

1) 水印嵌入

(1) 将二值水印图像扫描成一个一维序列m, 并做如下映射处理:

(2) 对图像做分块DCT变换, 块大小为8×8;选择每块的低频系数嵌入水印, 每块嵌入同一比特水印信息, 块内的多个低频系数重复嵌入, 嵌入公式为:

式 (7) 其中, X (i, j) 表示用于嵌入水印信息的系数, i, j=1, 2, ..., 8, k=1, 2, ..., 1024, α是加权因子, 用于控制嵌入的强度。Fk[i, j]公式如式 (8) 所示, 若Fk[i, j]≤1/4则认为是低频系数, 这是Chen等对于低频系数的定义【8】。

(3) 对各块做逆DCT变换, 得到含有水印的图像。

2) 水印提取

(1) 对含水印图像进行8×8分块做DCT变换, 同样选择每块的低频系数, 提取1比特的水印信息, 即

(2) 根据式 (10) 判断水印信息,

3.2 DM量化算法

1) 水印嵌入

1) 将二值水印信息扫描成一个一维序列m。

2) 对图像做分块DCT变换, 块大小同样为8×8, 选择每块的低频系数 (同扩频选择的系数) 嵌入水印, 每块嵌入同一比特水印信息, 块内的多个低频系数重复嵌入, 这里采用抖动调制的方式, 公式为:

式 (11) 中, X (k) 表示用于嵌入水印信息的第k个数据, bk∈{0.1}, 与水印信息m相对应;d[k, bk]为抖动量, q (∙) 是量化器, 即

式 (12) 中, Δ是量化步长, x是待量化数据。若每个数据的量化步长不同, 则是一种自适应的量化, 这里采用等步长的量化, 即Δ均相等。

3) 确定抖动量d[k, bk], 一般d[k, 0]可以任意选择, 但是d[k, 1]要根据式 (13) 进行选择:

这里设置

4) 对各块做逆DCT变换, 得到含有水印的图像。

2) 水印提取

水印信息提取时, 一般采用最小距离检测, 即

式 (14) 中, Yk表示接收到的信号数据;Syk[0]与Syk[1]分别表示假设Yk是以d[k, 0]和d[k, 1]为抖动量的情况下得到的抖动调制结果。

4 实验结果分析

实验选择大小为256×256的Lena灰度图作为载体图像 (见图3) , 大小为32×32的二值图像作为水印图像 (见图4) , 以MAT-LAB2010Ra作为实验平台。

实验中通过控制嵌入强度以及量化步长, 使嵌入水印图像的PSNR都值达到41.8, 在此PSNR值下, 嵌入水印图像和载体图像在人眼视觉效果上没有太大差异。对含水印图像进行各种简单缩放、滤波、剪切和噪声攻击, 通过误码率 (BER) 比较算法的鲁棒性能[10]。

式 (15) 中, B表示水印信息的长度, W (i) 表示原始的水印信息, w (i) 表示提取的水印信息。实验得到分块DCT变换下扩频和量化水印算法的误码率显示在表1中。图5是根据表1绘制的柱状图, 可以更直观的对各种算法的抵抗攻击的误码率进行比较。

从表1及图5来看, 在抵抗缩放和滤波攻击方面, DM量化水印算法的鲁棒性基本上都优于加性扩频算法;在剪切攻击方面, 两者都具有较高的鲁棒性能, 差异较小;而在抵抗噪声攻击方面, 加性扩频算法的鲁棒性比DM量化水印算法稍好。

噪声攻击和JPEG压缩是较容易受到的两类攻击, 为了详细比较各种算法抵抗噪声攻击时的稳定性能, 对含水印的图像进行不同程度的高斯噪声攻击, 取不同的高斯噪声方差, 得到的误码率如图6所示。

从图6可以看出, 加性扩频水印算法对噪声不敏感, 表现出更好的稳定性, 而DM量化水印算法随着噪声强度的增加, 鲁棒性逐渐降低, 因此加性扩频水印对于噪声攻击具有较强的鲁棒性和稳定性。

含水印图像在不同压缩因子压缩攻击下的误码率, 如图7所示。

从图7来看, 随着压缩强度的增加, 加性扩频算法的误码率呈现逐渐升高的趋势, 而DM量化算法的误码率虽然整体是也是升高的, 但变化则不然加性扩频算法稳定。当压缩因子高于50%, 即受到较弱程度的压缩, DM量化算法的鲁棒性是明显高于加性扩频算法的;当压缩因子在25%-50% (较强程度的压缩) 时加性扩频算法的鲁棒性偏高;当压缩因子低于25%, 即强压缩时, DM量化算法检测出的误码率比加性扩频算法稍低。实际情况下当在压缩因子低于50%时, 两种算法提取出的水印人眼都已无法判别, 此时测出的误码率数值已没有意义。因此, 在抵抗JPEG压缩方面, DM量化算法的鲁棒性也是优于加性扩频算法的。

5 结束语

本文从实验的角度, 对同一载体图像进行分块DCT变换, 并在相同的低频系数下分别以加性扩频和DM量化的方式嵌入水印信息, 在确保相同保真度的情况下, 通过检测误码率比较两种算法的鲁棒性能。实验结果表明, 加性扩频和DM量化水印算法在抵抗不同的攻击方面各有优势:在抵抗缩放、滤波、剪切攻击和JPEG压缩方面, DM量化水印算法的鲁棒性要明显优于加性扩频水印算法, 这主要是由于量化算法采用抖动估算的方法将水印嵌入, 载体中的信息只是发生一些波动, 当做缩放、滤波和裁切破坏时, 对水印信息的损失较小, 所以鲁棒性较好。而扩频原理是在整个低频系数上做同样的改变嵌入水印信息, 当受到以上攻击时每块损失的效果是同等的, 因此水印信息也丢失严重。而在抵抗噪声攻击方面, 加性扩频水印算法比DM量化水印算法稳定, 对噪声不敏感, 鲁棒性较强。

在实际的应用中, 我们可以根据应用需求和环境来选择嵌入水印的方式, 同时也可以考虑将扩频和量化两种方式相结合, 从而充分发挥各自的优势, 以提高数字水印算法的鲁棒性。

摘要:该文阐述了扩频和量化两类嵌入算法的基本原理, 并选择各自典型代表算法加性扩频算法和抖动调制量化算法基于MATLAB具体实现, 实验比较在分块DCT变换下两种嵌入算法的鲁棒性能。结果表明:抖动调制量化水印算法相比于加性扩频水印算法在抵抗缩放、滤波攻击和JPEG压缩方面有着更好的鲁棒性能, 但在抵抗噪声攻击方面不如其稳定, 且鲁棒性较低。

关键词:数字水印,扩频,量化,离散余弦变换,鲁棒性

参考文献

[1]丁盈盈, 刘真.3种频域数字水印算法的分析和比较[J].包装工程, 2011 (5) :103-107.

[2]黄继武, Yun Q.SHI, 程卫东.DCT域图像水印:嵌入对策和算法[J].电子学报, 2000 (4) :57-60.

[3]许君一, 熊昌镇, 齐东旭, 黄继武.量化水印算法分析[J].通信学报, 2006 (3) :15-27.

[4]姚恒.基于扩频机制的数字水印算法研究[D].上海:上海师范大学, 2008.

[5]P G Fernando, F Balado, J R HernAndez.Performance Analysis of Existing and New Methods for Data Hiding with Known-Host Information in Additive channels.IEEE Transactions on Signal Processing, 2003, 51 (4) :960-980.

[6]王颖, 肖俊, 王蕴红.数字水印原理与技术[M].北京:科学出版社, 2007.

[7]陈伟超, 敖珺, 马春波.基于DCT特性的图像隐藏稳健扩频算法[J].计算机工程, 2011 (10) :117-119, 122.

[8]B Chen, G W Wornell.Quantization Index Modulation:A Class of Provably Good Methods for Digital Watermarking and Information Embedding.IEEE Transaction on Information Theory, 2001, 47 (4) :1423-1443.

[9]肖俊, 王颖.自适应抖动调制图像水印算法[J].电子与信息学报, 2009 (3) :552-555.

两种算法比较 篇5

中文分词方法最早的研究起源于北京航空航天大学的梁南元教授设计的一种基于“查字典”的分词方法。近年来, 伴随着中文在世界舞台扮演着越来越重要的角色, 吸引了众多学者投入中文分词的研究, 目前实现了很多基于词典和基于概率统计的中文分词算法。

面对这些海量中文信息, 我们希望文本分词的结果应满足:首先符合词本身的意义, 其次词组长度尽可能长 (即满足最小切分数) 。现有的中文分词算法各种各样, 但大体可归纳为三类:基于字符串匹配的分词、基于理解的分词、基于统计的分词。另外还有很多分词算法的产品, 比如SCWS、Fudan NLP、ICTCLAS、HTTPCWS、IKAnalyzer 2012和庖丁等等, 然而这些分词算法多数并不开源, 考虑到ICTCLAS、IKAnalyzer是开源的, 并且这些分词算法大都应用在单机环境下, 基于以上考虑将这两种分词算法引入到Hadoop平台上。所以, 中文分词的算法更多时候需要同实际的应用相结合。

本文的目的是基于云计算平台考虑这些分词的利弊, 进而对它们权衡选择。首先我们在第2节对这两种算法进行简要回顾, 在第3节讨论中文分词算法的评价标准等等。然后, 在第4节中, 我们分别在四种不同环境下实现两个分词算法的对比并根据实验结果给出相应的分析结果。最后我们提出今后的工作, 并考虑其他智能分割算法, 考虑是否可以引入到Hadoop平台。

1 两种中文分词算法

汉语自然语言处理中, 词具有原子性, 它是汉语言中能够表达具有实际意义的最小的语素。众所周知, 在英文语句表达中, 单词有天然的分界符“”。中文比起英文, 有它自身的构词特点, 中文语句的构成以字为基本的书写单位, 句子和句子、段落和段落间有规范的分界符来划界, 但是“词”与“词”之间没有一个明确的分界符。

1.1 KAnalyzer

IKAnalyzer分词算法是一个基于JAVA语言开源的轻量级的中文分词第三方工具包。通过分析该算法的源码, 发现分词工具类IKQuery Parser是支撑整个算法的核心。该算法通过采用从最大词到最小词层层迭代检索方式的切分来搜索关键词, 经多次实验验证速度最大支持80W字/秒 (1600KB/秒, 此处官方没有提供相应的测试条件) 。由于IK分词算法是有JAVA语言编写而成, 因此算法具有很好的移植性。

1.2 CTCLAS

中国科学院计算技术研究所在多年研究自然语言处理的基础上, 提出了汉语词法分析系统ICTCLAS (Institute ofComputing Technology, Chinese Lexical Analysis System) , 主要包括中文分词, 词性标注, 命名实体识别, 新词识别, 同时支持用户词典等功能。

2 实验

2.1 不同大小的文本

在Map阶段, splits决定Maptask的数量。当用Map Reduce处理大量的小文件时, 由于每一个小文件要占用一个任务, 就会产生过多的Maptask。然而任务启动将耗费大量时间以至于大部分时间都耗费在启动任务和释放任务上。总之, 由于线程管理开销的上升导致整体作业处理时间的增加。

总之, 两种分词算法在处理小文本数据时, 都会因为启动Map任务而占用大量的时间, 使得单位时间内分词算法分词效率低下, 因此基于Hadoop的分词算法不适合处理小文本数据集。

2.2 不同数量的文本

在总的文本容量固定为100M的情况下, 不同数量1, 10, 100, 1000的文本在单个节点运行时间的对比, 用以比较不同数量的文本是否影响ICTCLAS和IKAnalyzer在Hadoop平台上运行的速度。用同样的方法得到相应100M, 10M, 1M, 100K的文本。

HDFS是提供高吞吐量的分布式文件系统, HDFS一开始就被设计用于访问大文件。而新闻数据大多数是几KB的小文件, 这些数量庞大的小文件产生的元数据会过多的向主节点发送读写请求, 增加网络中的数据传输和请求响应的时间, 最终降低整个平台的性能。

2.3 不同领域的文本

这里我们约定分词的效果:首先符合词本身的意义, 其次词组尽可能的长 (最小切分数) 。按照上述约定则, 在IT, 军事, 体育和招聘四大领域中IK的正确率明显高于IC, 但二者在体育领域正确率都不到80%, 在教育领域正确率二者却都可以达到95%以上。说明文本内容对两种算法的正确率有很大影响。两种算法在这五大领域中召回率都很高, 但IK仍然高于IC。IC的召回率体育比起教育要低18%左右, 文本内容对两种算法的召回率也有一定影响。在IT, 军事, 体育和招聘四大领域中IK的F值明显高于IC, 那么在上述四个领域, IK的综合表现要明显优于IC。同时, IC在教育领域比体育领域高出近21%, 而IK在上述两个领域悬殊差为12%。说明IK比IC鲁棒性更强。并且文本内容确实对这两种算法的综合性能有影响。

3 结论

比较于传统的集中环境下的分词算法, 基于Hadoop平台的分词算法在分割汉字效率上有了很明显的提高, 对于解决分词算法‘精而不快‘的困扰是一个十分有效的解决办法。

总之, 比较IC和IK在Hadoop平台对海量文本分词, IC明显优于IK在分词速度上, IK明显优于IC在分词正确率和召回率方面 (有效的分词长度越长, 分值越高) 。

参考文献

[1]刘群, 张华平, 俞鸿魁等.基于层叠隐马模型的汉语词法分析[J].计算机研究与发展, 2004, 41 (8) , 1421-1428

[2]Cloudera.http://www.cloudera.com/blog/2009/02/the-small-files-problem/.

RSA两种相关算法的改进 篇6

RSA公钥密码体制是由麻省理工学院的Ron Divest, Adi Shamir和Leonard l Adleman于1976年提出, 1978年正式发表的一种可将加密密钥公开的密码体制。RSA密码体制从提出到现在经受住了多年深入的密码分析的考验, 已逐步走向成熟, 被越来越多的人所接受, 它是目前世界上唯一被广泛使用的公开密钥密码体制。

目前, 为保证安全性, RSA算法中用户选择的素数p和q都为100位左右的十进制数, 这样的大整数运算必然造成其加解密速度异常缓慢, 因此探讨RSA算法的某些局部优化, 以加快其运行速度, 是十分必要的。

二、大数存储与运算的改进

1. 大数存储。

RSA算法中用到的大数其十进制位数可达数百位, 而在编程语言提供的各种标准数据类型中, 32位机器上整型数所能表示的最大的正整数也只有232-1, 远远不能满足要求, 因此, 大数的存储不能用通常的方法来表示, 必须用自己定义的数据结构来实现。

最常用的表示大整数的方法是将大整数表示成为一个二进制序列, 该序列用一个数组表示, 则每一个二进制位对应该数组的一位。这种方法的优点是表达直观, 编程容易。但它也有明显的缺点, 首先, 占用的存储空间多。一个十位的十进制数化为二进制数, 是 位, 因此, 一个数百位的十进制数用该方法将占用上千个存储单元, 这是一个很大的浪费。其次, 运行速度慢, RSA算法中明文的表示采用分组形式, 实际应用中都是通过键盘输入, 键盘输入读取的字符都直接表示为ASCII值, 为将其转换成二进制形式, 必须多花费一道转换的过程, 同时, 由于二进制形式的表示使得数组长度很长, 减慢了运算速度。

2. 改进的大数表示。

改进的大数表示, 最常见的是采用万进位法, 它逢万进位, 每个存储单元存储的最大值是9 999, 这种方法的性能比二进位法有了很大的提高, 它的思路是通过增加每个数据单元储存的信息量来减少存储空间和总循环次数, 但还可以在它的基础上对其做更进一步的改进。本文采用了一种特殊的表示方法, 整个大数采用一个数据结构表示, 该数据结构中包含一个用来表示该数值的数组, 每个数组单元都是一个无符号长整型数, 可表示大小在32位CPU上为232-1, 每个数组单元的值是十进制数, 但数组相邻的上一单元与下一单元之间的关系是二进制形式的。举例说明, 设大数占用一个存储单元, 则用十进制表示, 不妨设为93, 即表示为十进制数93, 若大数占用两个存储单元, 不妨仍设第一个单元为93, 第二个单元为1, 注意, 此时表示的数不是1, 000…093, 而是232+93。

该数据结构中, 包括一个指示该数是否为负数的标志, 一个整数指示实际分配的存储单元的大小, 还有一个整数专门用来指示实际使用的存储单元的大小。这样做的好处是由于大数的频繁运算, 它的位数会经常发生改变, 只有当存储空间不满足要求时才会考虑重新分配, 而当由于某些运算后大数实际使用的存储单元减少而不需要重新分配, 只需改变指示实际使用的存储单元的大小的整数值就可以了, 这样就可以避免每次运算后由于参与运算的数据位数的改变而频繁释放和分配内存。

三、递归余数和算法及改进

1. 递归余数和算法。

传统的幂剩余计算采用的是BR (BinaryRePresentations) 算法。即将指数E表示成二进制形式,

然后将幂剩余计算分解成一系列乘同余和平方剩余的迭代:

如果中间结果为A, 则每步迭代进行乘同余AM mod N或平方剩余A 2mod N的计算。

若令X=AM或X=A 2, 将X表示成二进制形式:

式中k为x的二进制长度。AM mod N或A 2mod N可表示成:

由于模运算满足结合律, 则上式可变为:

于是 (6) 中X对N的模运算就变成了一系列余数之和。

由 (5) 得:

(7) 说明第i个余数可由前一个余数迭代而来, 这就是递归余数和的由来。

2. 递归余数和的操作步骤。

首先建立一个余数表, 将预先产生的2的各次幂的余数顺序排列进去, 在进行求模运算时, 只需找出被模数的非零位, 在余数表中查出相应的余数并求和即可。

计算18 mod 7。由于18= (10010) 2, 非零位为

所以18 mod 7=2+2=4

直接计算18mod7, 亦可得到相同的结果。从上面的例子可以看出, 被模数所包含的非零位个数越少, 求和次数就越少, 计算速度就越快。

3. 递归余数和算法的改进。

由上述讨论可知, 递归余数和算法速度取决于被模数非零位个数。据此, 提出一种改进的递归余数和算法。

先将待加密信息M的二进制表示变换成二进制冗余表示。用i代表-l, 当M的二进制表示中有3个以上连“1’, 时, 将最低位“1”变成“i”, 最高位“1”前面增加一个“l”, 中间各位都置为“0”。如111变成100i, 1111变成1000i, 不难证明111=1000-1=100i, 1111=10000-l=1000i, 当M=10111001111101时, 相应的二进制冗余数R (M) =1100i010000i01, 容易证明M=R (M) 。以后每计算一步, 都对中间结果进行同样的变换。用变换后的二进制冗余数进行乘法运算, 其乘积必为二进制冗余数,

并可能出现连“i”的情况。此时将最低位“i”, 置为“1’, 在最高位“i”, 前增加一个“i”, 中间各位均置为“0”。如iii=i001, iiii=i0001。如果。“l”和“i”相邻, 则按如下规则变换:

不难证明这些变换的正确性。

改进后的递归余数和算法仍然是先建立余数表, 然后用二进制冗余数进行乘法运算, 再用递归余数和方法对二进制冗余数求模。求模时, 从高位算起, 遇到为“1”的位就加上相应的余数, 遇到为“i”, 的位就减去相应的余数。如计算7 mod 5:

在幂剩余的BR算法中, 每步迭代都只有两种基本运算:乘法和求模。乘法的快慢取决乘数和被乘数的非零位个数。乘数的非零位个数越多, 乘法运算的移位累加就越多, 累加越多, 进位就越多。当乘数和被乘数很大时, 进位的传播严重制约了乘法速度的提高。当用二进制冗余数代替二进制数时, 由于非零位减少, 移位累加次数减少, 在累加时, 当“1”和“i”相遇时则互相抵消, 这就使进位传播减少, 从而缩短了乘法运算时间。

例如:计算15x15的二进制数乘法为1111*1111=11100001。二进制冗余数乘法结果为:100i00001。两者结果相等, 但二进制冗余数乘法运算步骤明显减少, 进位传播也明显减少。同时, 非零位个数的减少, 也使递归余数和算法的求和次数减少, 使求模速度加快。不同的只是求算术和变成了求代数和。

两种美德的比较 篇7

具有伤害倾向、出自不适宜动机的行为,是需要惩罚的,因为它是公认的憎恨的对象,或是能激起旁观者出于同情的憎恨的对象。

仁慈是自由的,它不应该受武力的威逼。仅仅是缺少它不会受到惩罚,因为仅仅缺少仁慈并不会造成实质的确定的罪恶。它也许使人们本来合理期待的善行失望,因此,它能公正地激起厌恶和反感。但是,它不会引发任何人们赞同的憎恨。如果一个人有能力报答他的恩人,当恩人需要他的帮助时,他没有回报,他无疑应该背负忘恩负义之罪。每个公正的旁观者心里都拒绝同情他自私的动机,他是应该反对的最适宜的对象。但他仍未对任何人造成实质的伤害,他只是没有做应该做的善行。他是仇恨的对象,这种仇恨是不适宜的情感和行为自然激起的;但他不是憎恨的对象,这种憎恨是除了行为对某个人造成真实确定的伤害外,从未适宜地唤起的。因此,他缺乏感激是不应该受到惩罚的。如果可能的话,强迫他做出感激时应有的行为,以及每个公正的旁观者认可他所做的行为,这比他不做这些更不合适。如果恩人试图以暴力强迫他做出感激之事,就会使他自己蒙羞。如果有个不高于两者的第三者来干预,也是不合适的。感激之情使我们乐于承担的各种仁慈行为的责任,最接近于成为完美和完整的职责。友谊、慷慨、慈善促使我们所做的得到普遍赞同的事情,则更加自由,与感激的责任相比,更加不是外力所能逼迫的。我们谈论感激之恩,而不是慈善之恩、慷慨之恩、甚至友谊之恩,即使在友谊仅仅是值得尊重,并不因对善行的感激之情而加强和混杂时,也不谈友谊之恩。

憎恨似乎是自卫的天性赋予我们的,并只能用来自卫。它是正义和清白的保证。它促使我们击退试图对我们造成的伤害,并报复已对我们造成的伤害;使冒犯者对自己的不义而悔恨,而其他人因为害怕同样的惩罚,会因犯同样的罪行而感到恐慌。因此憎恨必须仅仅用于这个目的。当它是处于别的目的时,旁观者是不会赞同的。但仅仅缺少仁慈的美德,虽然会使我们对合理期待的善行感到失望,它不会也不试图造成这种伤害,因此,我们有必要自卫。

然而,还有一种美德,对它的遵守并不取决于我们的自由意志,它可以用于外力强迫,对它的违反会招致憎恨乃至惩罚。这种美德就是正义。对正义的违反就是伤害。他对某些人造成真实确定的伤害,其动机自然是不能认同的。因此,它是憎恨的适宜对象,也是惩罚的适宜对象。这种惩罚是憎恨的必然结果。因为人们会赞同并认可,为报复不义行动而采取的暴力,他们也更能赞同并认可阻止和击退伤害的暴力和抑制罪犯伤害其邻居的暴力。考虑做出不义行为的人自己也意识到这一点,并感到无论是他准备伤害的人还是别人,都能适宜地运用这种暴力来阻止他犯罪,或是在他犯罪后惩罚他。在这个基础上确立了正义和一切其他的社会美德的显著区别。这是一位极富天才和伟大的作家特别坚持的,即我们感到自己按正义办事,会比愉快地按友谊、慈善或慷慨办事受到更多的限制。实践上面提到的美德在一定程度上是我们自己的选择,但不知为何,我们感到自己以特别的方式受到束缚、限制、约束,而必须遵守正义。也就是说,我们觉得这种暴力最为适宜、并得到人们的认可,被用来强迫我们遵守正义的规则,而不是强迫我们遵守其他美德的格言。

因此,我们必须总是小心地区分,什么只是应该责备的或是合适的反对对象,什么是可以用外力来惩罚或阻止的。应该责备的似乎是缺乏一定程度适当的善行,经验告诉我们,可以指望每个人做到。相反,值得赞扬的是超过了这个程度的。一个父亲、儿子或兄弟的行为若是与大部分人一致,既不好也不坏,似乎不应该得到赞扬或责备。那些因突出而意想不到的、然而又合适和适当的友好使我们惊讶的人,或是相反,以突出而意想不到,又以不合适的不仁慈使我们惊讶的人,在前一种情况中似乎值得赞扬,在后一种情况中应该责备。

但是,在地位相等的人中,即使是最普通程度的友好或仁慈也不能以力相逼。在地位相等的人中,每个人都自然地被认为、并在市政府建立之前就被认为应保护自己不受伤害,并且有对伤害自己的人实行一定程度惩罚的权利。每个宽厚的旁观者不仅赞成他的行为,而且深切体谅他的感情,因此常常愿意帮助他。当一个人攻击、抢劫或企图谋杀他人时,所有的邻居都会惊慌,并认为他赶去为被害者报仇、或是在这样的危险中保护自己,都是正当的。但是,当一个父亲对儿子缺乏一般程度的父爱,当一个儿子缺乏所期望地对父亲的尊敬,当兄弟没有一般程度的手足之情,当一个人缺乏同情心,在能够最大程度缓解同伴的痛苦时拒绝这样做。所有的这些例子中,虽然每个人都指责这种行为,却没有人认为那些或许有理由期望更多友善的人,有权利以力相逼。受难者只能抱怨,而旁观者除了建议和劝告,也没有其他干涉的方法。在所有这些场合中,地位相等的人之间以暴力相争,会被看作是极端无理和蛮横的。

上级有时确实可以强制人们在他的权限内按照一定程度的适宜性办事。这种强制是受到普遍赞同的。一切文明国家的法律都要求父母养育儿女,儿女赡养父母,并要人们承担很多其他行善的责任。市政官员不仅被赋予通过限制不义行为来维护社会和平的权力,还被赋予通过树立良好的纪律、阻止各种邪恶和不适宜的行为,来推动国家繁荣的权力。因此,他可以制定法律,这不仅能阻止市民间的相互伤害,而且要求我们在一定程度上相互行善。一旦君主下令做无关紧要的事情,违抗他就不仅会受到责备而且会受到惩罚。因此,一旦他下令做那些他颁布任何这种命令之前、被人忽略就会受到极为严厉的责备的事情,那么,不服从它的确会受到更大的惩罚。但是,立法者的全部职责或许在于带着在最大的细致和谨慎适宜公正地行事。对它的忽视会使整个国家陷于严重的骚乱和惊人的暴动中,但行之过度又会破坏自由、安全和公正。

虽然在地位相等的人之间,仅仅缺乏仁慈不应受惩罚,但施行最大的仁慈似乎应该得到最大的报答。由于做了最大的善举,他们是最强烈的的感激之情自然赞同的对象。相反,虽然违反正义会受到惩罚,对这种美德规则的最受似乎很难得到报答。实践正义无疑存在着适宜性,因此,它应该得到归功于适宜性的全部赞同。但由于不是真正的善举,它几乎不值得感激。在多数情况下,正义仅仅是一种消极的美德,它只是妨碍我们伤害邻居。一个只是不去侵犯邻居人身、财产和名声的人,必然没有什么积极的优点。但他履行了特定的、被称为正义的全部准则,并做到了其他人要求他做的事。我们常常能安静地坐着,什么也不做,就可以履行正义的全部法则。

以牙还牙和报复似乎是天性命令我们履行的最重大的法则。我们认为,仁慈和慷慨的行为只能给予仁慈和慷慨的人。我们认为,那些内心从未向仁慈的感情开放的人,应该同样地得不到同伴的情感,并不允许居住在社会中,犹如生活在广袤的沙漠中,无人关心、无人问候。正义的法律的违反者应该在内心中感到自己所犯的罪过,由于对他的同胞的痛苦的任何关心都不能限制他,应该用他害怕的东西使他畏惧。只有清白的人,只有对他人遵守正义的法律的人,只有不伤害邻居的人,才能得到邻居对其清白的尊敬,并同他一样严格地遵守同样的法规。

上一篇:马克思生产理论下一篇:实践演练