专利名称::一种基于曲线分割的矢量地图水印方法
技术领域:
:本发明涉及一种基于曲线分割的矢量地图水印方法。技术背景数字水印技术涉及的应用领域比较广泛,尤其是在各种图像、视频和音频数据中已有相当多的研究成果,并已形成各种产品投入应用。然而,它们绝大多数是针对场模型的栅格数据,而基于对象模型的矢量图形数字水印则研究的相对非常少。随着矢量图形的广泛应用和SVG网络图形发布标准的推出,各种矢量数据,如GIS、3D数字模型、各种设计图、规划图和艺术创作图等,常以矢量图形存储、表达和传输。值得关注的是,随着"数字中国"的逐步实现,空间信息应用面越来越广泛,空间信息共享服务被列入重要的议事议程,但随之而来的重要问题之一是空间信息的数据版权保护。因此,作为空间信息主要数据类型——矢量图形或数字地图的数字水印必然受到多方关注,并成为亟需解决的关键技术之一。目前,国内外关于矢量图形数字水印的研究较少,相关的技术仍不够成熟,常在水印的鲁棒性、安全性、抗压縮能力和抗格式转换等方面的性能不能兼顾,难以适应或符合实际应用。矢量图形数字水印嵌入的算法按水印信息嵌入方式可分为两大类一是移动点;二是添加点。移动点的水印嵌入算法又被分为空间域或频率域移动点,前者的算法主要是通过在一定容差范围内移动坐标点来嵌入水印;后者则是基于频率域的算法,这类方法通过运用各种变换算法,如-DCT变换、傅立叶变换或小波变换的系数来嵌入水印,其实质也是移动矢量图形的顶点,且顶点的移动幅度无法精确控制,故不适合对精度要求较高的矢量地图应用。然而,添加点算法仅有屈指可数的研究报道,主要采用在每个顶点附近或若干个顶点附近嵌入水印点,这些算法主要优点是简单、鲁棒性较好,但缺乏安全性,不能抗矢量图有损压縮压縮和无损压縮的攻击或应用操作攻击。
发明内容本发明的目的在于针对上述问题,提供一种既能保证矢量图形或地图精度,又具有安全性、鲁棒性,并能抗剪裁、抗无损压縮的基于曲线分割的矢量地图水印方法。本发明采取的技术方案为一种基于曲线分割的矢量地图水印方法,包括如下步骤(1)利用水印嵌入界面实现水印生成、矢量地图嵌入水印和水印提取检测;(2)对待加水印的矢量地图进行曲线分割;(3)根据步骤(2)分割后的矢量地图的曲线总数目,把在步骤(1)中生成的水印信息循环多次的嵌入到曲线中;(4)对歩骤(3)水印嵌入曲线的位置进行旋转;(5)利用水印提取及检测单元对含有水印信息的地图提取水印信息,计算水印的相似度,并进行相似度检测。步骤(1)中,从用户证书中取出密钥,利用密钥对个性化用户信息进行加密形成水印信息,加密算法采用RSA公钥系统,用户个性化信息为2025个英文字母。步骤(2)中,把矢量地图看作一个曲线的集合,对所有的长曲线按照一定阈值进行分割,形成多条短曲线。用于分割曲线的阈值应由用户密钥确定步骤(3)中,每条曲线中除了最后一个顶点的其它所有顶点的附近都嵌入一个水印点,一条曲线所有的水印点都表示同一个水印位,曲线上的第i个点为(^\i,ww),要嵌入的水印位为v,,嵌入水印点的坐标为(^^,"^乙),则(W^,W。的计算公式如下^、=(vxi+li-"1^,',".入其中,0<<1,是调制幅值,A由用户密钥确定。步骤(4)中,对水印嵌入曲线的坐标点0^l,Wl)进行位置的旋转,旋转角度为e,则计算公式如下气'+cos<9_《乂_—^n(9一永_对嵌入点以前一结点为中心旋转一个小角度《,使嵌入的水印点和原曲线的两个结点间略有偏移。步骤(5)中,①把水印地图和原始地图进行比较,按照水印嵌入算法步骤(2)进行水印图形或地图的曲线分割。②对水印图中的水印点进行反旋转,旋转角度为P,第i条曲线的第k个水印点为(VX^+u,"'n》,则其反旋转的计算公式为f《二议'骑-气议_%」+《碜;③对每一条曲线p'和p'i,分别计算其除去最后一个点后的重心坐标:<formula>formulaseeoriginaldocumentpage9</formula>并对原图的每条曲线i的顶点计算以下两个量的值:<formula>formulaseeoriginaldocumentpage9</formula>按照以下公式分别计算每条曲线纵横坐标的水印点<formula>formulaseeoriginaldocumentpage9</formula><formula>formulaseeoriginaldocumentpage10</formula>计算每条曲线的水印信息值<formula>formulaseeoriginaldocumentpage10</formula>对提取出的水印m'进行检测,首先计算其与原始水印信息m的相似度,公式如下<formula>formulaseeoriginaldocumentpage11</formula>对照相似度的阈值曲线进行阈值确定,从而判断是否有水印存在。图l为水印嵌入、提取和检测方法的实施流程图;图2为水印嵌入方法的用户界面;图3为水印提取和检测方法的用户界面;图4为相似度阈值的阈值曲线;图5为试验区SVG矢量地图被嵌入完整水印图示;图6为试验区地图经多种几何变换操作后的水印图示;图7为对试验区水印图进行7种比例裁剪攻击模式的示意图。具体实施方式如图1所示,本发明的基于曲线分割的矢量地图水印方法,在此,以基于XML-SVG的全文本标准格式的地图为例,其包括两个方面a、水印嵌入算法与处理方法;b、水印提取和检测算法与处理方法。a、水印嵌入算法与处理方法(1)利用水印嵌入界面将矢量地图嵌入水印。利用本发明的水印嵌入界面,如图2所示,可对矢量地图嵌入水印。系统要求使用者必须提供用户证书库文件,即用户证书信息,包括证书库密码、证书别名和证书密码。此外,还需输入用户的个性化信息,从用户的水印证书中取出用户密钥,采用RSA密钥系统对用户个性化的待嵌入信息加密,并形成水印信息,如单位名称或姓名等用于生成水印信息,并保存用户特征水印信息后,方能进一步将其嵌入待加水印的地图中。上述的用户个性化信息一般为2025个英文字母。(2)对待加水印的矢量地图进行曲线分割。矢量图形的曲线分割由于本文发明是将每一个水印信息位(watermarkbit)嵌入到图形图层中每一条曲线内,若图层中所包含的原始曲线数分布不均匀,或者曲线长度过长等,均会导致水印信息在整个图层上分布不均匀,或水印信息大于图形本身的信息,从而降低水印的鲁棒性。因此,在嵌入水印前则先对整个图层的曲线进行长度和数目适中的曲线段分割。曲线分割是以深度优先顺序排列好图形树中的多边形边界(曲线),并计算各曲线的长度(以结点数目计)。在分割曲线时,不仅需限定曲线的最大长度为dmax,即大于dmax的曲线应分割为多条曲线;还需限定曲线的最小长度为dmia,小于dnin的曲线被弃为不嵌入水印点的线段。另外,d皿可根据用户信息(M)和用户证书中的密钥计算水印信息的长度n,以字节位数计,^二(mi,^,…,m")。其中,^'^^^确定之,再对矢量地图所有曲线进行分割,即由用户密钥确定曲线长度的阈值,按照该阈值对长曲线进行分割,形成多条短曲线。(3)根据步骤(2)分割后的矢量地图的曲线总数目,把步骤(1)中生成的水印信息循环多次的嵌入到曲线中。根据步骤(2)分割后的矢量图形或地图的曲线总数目,把步骤(1)中生成的水印信息循环多次的嵌入到曲线中,每条曲线嵌入一个水印位,水印点的位置与用户密钥有关。假定某条曲线上第i个点为(^^VK^-),要嵌入的水印位的坐标为(议U可^),则6^,W。的计算公式如下<formula>formulaseeoriginaldocumentpage13</formula>其中,0<"<1,是调制幅值,A由用户密钥确定。(4)对步骤(3)水印嵌入曲线的位置进行旋转。对步骤(3)嵌入的坐标点(^^,iyw)进行位置的旋转,如旋转角度为0,计算公式如下<formula>formulaseeoriginaldocumentpage13</formula>水这里,对嵌入点以前一结点为中心旋转一个小角度e,使嵌入的水印点和原曲线的两个结点间略有偏移,以提高水印信息的鲁棒性。b、水印提取和检测算法与处理方法(5)如图3所示,利用水印提取及检测单元对含有水印信息的地图提取水印信息,计算水印的相似度,并进行相似度检测,其具体包括以下步骤①把水印地图和原始地图进行比较,按照水印嵌入算法歩骤②进行水印图形或地图的曲线分割。②对水印图中的水印点进行反旋转,旋转角度为^,第i条曲线的第k个水印点为(^''^'2""),则其反旋转的计算公式为:<formula>formulaseeoriginaldocumentpage0</formula><formula>formulaseeoriginaldocumentpage0</formula>③对每一条曲线R和P、分别计算其除去最后一个点后的重心坐标:<formula>formulaseeoriginaldocumentpage0</formula><formula>formulaseeoriginaldocumentpage0</formula>并对原图的每条曲线i的顶点计算以下两个量的值<formula>formulaseeoriginaldocumentpage0</formula>④按照以下公式分别计算每条曲线纵横坐标的水印点:1)<formula>formulaseeoriginaldocumentpage0</formula><formula>formulaseeoriginaldocumentpage0</formula><formula>formulaseeoriginaldocumentpage15</formula>计算每条曲线的水印信息值<formula>formulaseeoriginaldocumentpage15</formula>对提取出的水印m'进行检测。首先计算其与原始水印信息m的相似度,公式如下:<formula>formulaseeoriginaldocumentpage16</formula>然后,对照相似度的如图4所示的阈值曲线进行阈值确定,从而判断是否有水印存在。为了验证本发明的可靠性,我们利用本发明提供的矢量地图水印算法进行了以下的各种试验。如图57所示,试验中,对一张SVG地图嵌入水印,设置的用户个性化信息为"kongjianxinxizhongxin",即"空间信息中心"的汉语拼音,对该信息加密后形成1152位的完整水印信息,把水印信息嵌入到地图中形成水印图。然后,对水印图进行几何变形操作、剪裁和抗压缩等几种外部攻击实验进行水印性能的测试,以及对旋转角度e的变化对水印性能的影响进行定量分析1、几何攻击下的水印检测。对完整水印图经横坐标向右平移5000个单位,纵坐标平移500000个单位,然后围绕地图的中心顺时针旋转30度,再以相对于原点縮小地图到原来的85%的几何变换后,水印检测的相似度为0.996527,有效水印位1152bits。由此可见,几何变形操作对svg水印地图中的水印没有影响。2、裁剪攻击下的水印检测。地图在网络传输或使用过程中,剪裁是最常见的操作。由于不同人对同一幅地图可能有不同的使用目的,他们可能会只取其中需要的部分。这样,嵌入矢量地图或图形数据中数字水印的抗剪裁能力就显得相当重要。水印检测的结果如表1所示,为水印图在7种剪裁攻击下的检测结果,对照图4中的阈值曲线,可以看出,即使水印地图被裁剪了1/3以上时,仍能捡测出其中的水印信息。因此,本发明具有很好的抗裁剪能力。裁剪模式总顶点数裁剪顶点数有效水印位位数水印相似度<table>tableseeoriginaldocumentpage17</column></row><table>表l3、抗压缩性能分析。本实验采用经典的道格拉斯-普克压缩算法(DP算法),实验只对其进行了简单修改,用于测试水印的抗压縮能力,并将前期研究所提出的添加点的水印算法作为对比算法。实验样本采用矢量图GD.svg,压縮算法的阈值T为相连的两条线段的斜率之差,即在连续的三个结点中,若中间结点偏离两边结点的连线达到指定的斜率差,则认为中间的结点是可压縮的结点。分别用对比算法和本发明的算法对GD.svg嵌入水印(本发明的算法的旋转角度6设置为0.4,水印信息的长度为1152位),设置不同的阈值T,对水印图进行有损压縮,再分别检测水印信息。从表2的对比算法与本发明的算法抗压縮能力的比较给出的实验结果可知,对比算法嵌入的水印点随着压縮阈值的增大,压縮量迅速增大,检测的相似度也迅速的降低,本发明的算法嵌入的水印点由于经过了旋转操作,具有较好的抗压縮能力,压縮阈值增大到0.3时,仍保持0.64410的水印信息相似度。<table>tableseeoriginaldocumentpage18</column></row><table>表24、旋转角度的定量分析。在本发明的水印嵌入算法中,在水印点嵌入后旋转角度e,该角度的大小既可影响水印地图的精度,又可能影响到水印的抗压縮能力、抗剪裁攻击能力。因此,确定e的大小,既要考虑到地图对精度的需求,又要考虑其对水印性能的影响。由于不同的应用单位可能对地图的精度要求不同,则所设计的工具中该算法的e角度大小是可交互调节,即精度可控,故不在此进行精度讨论;对其抗压縮性则视压縮算法而言,例如常用的矢量图压缩的DP算法,其压縮能力也与用户预定的阈值有关。因此,在具体的水印信息嵌入应用中,交互调节e值需既考虑地图精度,又考虑其抗压縮性,即灵活选择e的大小,在精度范围内取偏离程度较大的值,且不大于压縮算法极限值域即可。使其在保证地图质量的前提下,最大程度的提高水印的抗压縮能力。在此,还对e值的大小变化对水印抗剪裁能力进一步进行定量分析。同样以上述svg地图为例,不断改变角度e的大小,对其完整水印图及剪裁后的水印进行水印提取及相似度计算,试验结果如表3的旋转角度e的变化对水印图检测及抗裁剪能力的影响所示。由试验结果可以看出,e对水印最终的相似度并无明显的影响,对水印的抗裁剪能力也无明显影响。旋转角度e(弧度)裁剪前的相似度裁剪掉的结点数裁剪后的相似度00.99653561580.945760.120.99826561560.948020.240.99653561540.945760.360.99826561550.94350.480.99653561550.948020.60.99653561560.945760.720.99826561580.950280.840.99653561580.945760.960.99653561590.94351.080.99826561590.94576表权利要求1、一种基于曲线分割的矢量地图水印方法,其特征在于包括如下步骤(1)利用水印嵌入界面实现水印生成、矢量地图嵌入水印和水印提取检测;(2)对待加水印的矢量地图进行曲线分割;(3)根据步骤(2)分割后的矢量地图的曲线总数目,把在步骤(1)中生成的水印信息循环多次的嵌入到曲线中;(4)对步骤(3)水印嵌入曲线的位置进行旋转;(5)利用步骤(1)中水印提取及检测单元对含有水印信息的地图提取水印信息,计算水印的相似度,并进行相似度检测。2、如权利要求l所述的基于曲线分割的矢量地图水印方法,其特征在于-步骤(1)中,从用户证书中取出密钥,利用密钥对个性化用户信息进行加密形成水印信息,加密算法采用RSA公钥系统,用户个性化信息为2025个英文字母。3、如权利要求2所述的基于曲线分割的矢量地图水印方法,其特征在于步骤(2)中,把矢量地图看作一个曲线的集合,对所有的长曲线按照一定阈值进行分割,形成多条短曲线。4、如权利要求3所述的基于曲线分割的矢量地图水印方法,其特征在于用于分割曲线的阈值应由用户密钥确定。5、如权利要求2所述的基于曲线分割的矢量地图水印方法,其特征在于歩骤(3)中,每条曲线中除了最后一个顶点的其它所有顶点的附近都嵌入一个水印点,一条曲线所有的水印点都表示同一个水印位,曲线上的第i个点为(%,,"^),要嵌入的水印位为^,嵌入水印点的坐标为(议;W。,则(vxki,vykj)"'凡的计算公式如下f"义*=(v义""一v义")Z仏=("一-jfe,iA,tA:"'"=+仏其中,0<"<1,是调制幅值,A由用户密钥确定。6、如权利要求2所述的基于曲线分割的矢量地图水印方法,其特征在于步骤(4)中,对水印嵌入曲线的坐标点(v^,炒'J进行位置的旋转,旋转角度为0,则计算公式如下气4-卞sin<9cos^夂对嵌入点以前一结点为中心旋转一个小角度e,使嵌入的水印点和原曲线的两个结点间略有偏移。7、如权利要求2所述的基于曲线分割的矢量地图水印方法,其特征在于步骤(5)中,①把水印地图和原始地图进行比较,按照水印嵌入算法步骤(2)进行水印图形或地图的曲线分割;②对水印图中的水印点进行反旋转,旋转角度为^,第i条曲线的第k个水印点为(^'2^,"'"+"),则其反旋转的计算公式为《,,:2W巧,+sinCoqs("^净;③对每一条曲线R和P'i,分别计算其除去最后一个点后的重心坐标:<formula>formulaseeoriginaldocumentpage0</formula>并对原图的每条曲线i的顶点计算以下两个量的值:<formula>formulaseeoriginaldocumentpage0</formula>@按照以下公式分别计算每条曲线纵横坐标的水印点1)Ax/#0&&A一O<formula>formulaseeoriginaldocumentpage0</formula>3)<formula>formulaseeoriginaldocumentpage5</formula>4)<formula>formulaseeoriginaldocumentpage5</formula>计算每条曲线的水印信息值:<formula>formulaseeoriginaldocumentpage5</formula>⑥对提取出的水印m'进行检测,首先计算其与原始水印信息m的相似度,公式如下w<formula>formulaseeoriginaldocumentpage5</formula>对照相似度的阈值曲线进行阈值确定,从而判断是否有水印存在(全文摘要本发明一种基于曲线分割的矢量地图水印方法,其包括如下步骤利用水印嵌入界面将矢量地图嵌入水印;对待加水印的矢量地图进行曲线分割;分割后的矢量地图的曲线总数目,生成的水印信息循环多次的嵌入到曲线中;对水印嵌入曲线的位置进行旋转;利用水印提取及检测单元对含有水印信息的地图提取水印信息,计算水印的相似度,并进行相似度检测。本方法能保证矢量图形或地图精度,又具有安全性、鲁棒性,并能抗剪裁、抗无损压缩等优点。文档编号G06T1/00GK101246586SQ20081002640公开日2008年8月20日申请日期2008年2月22日优先权日2008年2月22日发明者张鸿生,岩李申请人:华南师范大学