技术领域
本发明属于地理信息系统中矢量地图数据版权保护领域,具体涉及一 种针对基于整体矢量地图数据的鲁棒性水印嵌入方法及检测方法。
背景技术
随着计算机技术和互联网的发展与普及,以及多媒体数据存储和传输 技术的进步,数字产品的传输和共享变得非常容易,也得数字产品的 非法复制变得非常容易,随之带来了一系列有关版权的问题。为了保 护版权所有者的利益,迫切需要找到一种有效的方法来保护数字产品 的知识产权。
矢量地图数据水印算法不同于传统的基于图像水印算法,这主要是由 于地图数据不具有图像数据应用的普遍性等原因,同时还在于矢量地 图数据在数据结构、存储形式、表现方式、应用环境、使用要求以及 可能的攻击行为等方面与图像等多媒体数据都不一样,一般的水印算 法还很难直接应用在矢量地图数据上。由此可见,数据水印技术在矢 量地图数据上的应用具有更加潜在的用途。由于地理空间数据是描述 关于人类赖以生存的地球的重要信息,是国家基础性、公益性设施, 是国家基础设施建设和地球科学研究的支撑性成果,是国家经济、国 防建设中不可缺少的资源,对社会持续发展起着重要作用,因此,对 于矢量地图数据的水印技术也具有非常好的使用前景。
发明内容
为了克服现有的矢量地图数据的容易被非法拷贝、被逆向破解和原始 数据无损恢复的不足,本发明提供一种能以有效解决矢量地图数据被 非法拷贝、被逆向破解和原始数据无损恢复问题的基于虚拟圆的矢量 地图水印嵌入方法及提取方法。
本发明解决其技术问题所采用的技术方案是:
一种基于虚拟圆的矢量地图水印嵌入方法,所述矢量地图水印嵌入方 法包括以下步骤:
(1)、设计一个具有标识意义的虚拟圆形标识;
(1.1)、确定虚拟圆的基准半径,标识特征为虚拟圆的半径γ,0≤ γ;
(1.2)、定义一组水印信息嵌入同心圆组半径γn,0≤γn;
(1.3)、定义虚拟圆的圆心坐标(X,Y);
(1.4)、针对圆心坐标(X,Y)、同心圆组半径γn这一系列变量,设 计具有标识意义的特定虚拟圆组,此虚拟圆组中包含有水印信息;
(1.5)、所述水印虚拟圆组允许覆盖矢量数字地图全图;
(2)、特征点的嵌入过程,具体如下:
(2.1)、当虚拟圆与矢量地图坐标序列中的线段相切,那么切点就作 为特征点加入矢量地图坐标序列中;
(2.2)、当虚拟圆与矢量地图坐标序列的线段相交,且有两个交点时 ,我们只选取第一个交点,并按正常相交进行特征点的移位处理;
(2.3)、当虚拟圆与矢量地图坐标序列正常相交,且交点与线段的端 点重合时,那么就不需要做任何的处理,直接使用端点;
(2.4)、当虚拟圆与矢量地图坐标序列正常相交,但交点与端点之间 距离小于一个限定的误差值d时,那么就删除原来最近的端点,以新的 交点代替端点;
(2.5)、当虚拟圆与矢量地图坐标序列中的线段(X1,Y1)-(X2, Y2)正常相交,且只有一个交点时,作为特征点插入,还需要消除三 点共线因素,采用交点沿着圆弧左右移动一个限定的误差值d;那么这 两个点中,如何选择那一个点插入坐标串。
(3)、虚拟圆矢量地图水印嵌入过程,对矢量地图数据中具有2个顶 点以上的坐标序列与一组虚拟同心圆中的每一个虚拟圆检测是否有交 点,如果存在交点,把相关交点插入到坐标序列中,具体如下:
(3.1)、读取矢量地图坐标序列数据;
(3.2)、确定虚拟圆组的同心圆圆心坐标(X,Y);
(3.3)、确定虚拟圆组的同心圆的基准半径γ;
(3.4)、对坐标序列数据中的相邻两点,判断虚拟圆组中的虚拟圆( X-X0)2+(Y-Y0)2=r2与线段(X1,Y1)-(X2,Y2)之间是否有交点;
(3.5)、则设交点为(X,Y),那么其一定是(X1,Y1)-(X2,Y2)线 段上的一点,其(X,Y)坐标可以由(X1,Y1)-(X2,Y2)两点决定:
把公式(2)确定的交点(X,Y)代入已知的虚拟圆方程(X-X0)2+(Y-Y 0)2=r2求得μ一元二次方程;
根据μ的一元二次方程中的求根判别式Δ,当Δ=0时,线段与虚拟圆 相切,当Δ>0时,线段与虚拟圆相交,且有两个交点;当Δ<0时, 线段与圆没有交变。再求得μ一元二次方程解代入(2)式,即可求得 交点(X,Y)坐标的坐标值;
(3.6)、最后根据虚拟圆水印算法设计思想中的特征点嵌入策略,把 特征点插入到坐标序列中的(X1,Y1)与(X2,Y2)之间,得到特征点 分布整体的矢量地图数据。
一种基于虚拟圆的矢量地图水印检测方法,所述检测方法步骤如下:
(4.1)、读取矢量地图坐标序列数据;
(4.2)、输入具有密钥的虚拟圆定位坐标与虚拟圆基准半径;
(4.3)、根据虚拟圆定位坐标与基准半径,对坐标序列数据中的相邻 两点,判断虚拟圆组中的虚拟圆(X-X0)2+(Y-Y0)2=r2与线段(X1,Y1) -(X2,Y2)之间是否有交点。
(4.4)、设交点为(X,Y),那么其一定是(X1,Y1)-(X2,Y2)线段 上的一点,其(X,Y)坐标可以由(X1,Y1)-(X2,Y2)两点决定:
把公式(2)确定的交点(X,Y)代入已知的虚拟圆方程(X-X0)2+(Y-Y 0)2=r2求得μ一元二次方程;
根据μ的一元二次方程中的求根判别式Δ,当Δ=0时,线段与虚拟圆 相切,当Δ>0时,线段与虚拟圆相交,且有两个交点;当Δ<0时, 线段与圆没有交变。再求得μ一元二次方程解代入(2)式,即求得交 点(X,Y)坐标的坐标值;
(4.5)、根据求得交点(X,Y)坐标的坐标值,线段的端点坐标的( X1,Y1)与(X2,Y2)进行比较;限差在规定范围内,即交点与端点非 之间距离小于一个限定的误差值d时,此端点作为虚拟圆上的水印特征 点提取出来;
(4.6)、根据提取出来的特征点集,构建虚拟圆,以三点确定圆,其 余点进行验证,符合虚拟圆方程的加入水印信息集,不符合的抛弃;
(4.7)、最后,根据检测出来的虚拟圆反算水印信息,实现水印 信息的提取。
本发明的有益效果为:解决了目前矢量地图水印算法对坐标数据序列 组织形式的依赖,解决了水印定位问题;通过设计一个特定的虚拟圆 作为水印标识,实现了小容量嵌入数据表示水印大内容问题;算法对 矢量地图数据造成的精度误差是可控的,且水印可以被精确提取出来 ;本发明所采用的方法实现简单有效,摆脱了现有矢量地图数字水印 的对矢量地图数据组织形式的依赖,具有很好的抗几何攻击性能。能 够为地理信息系统矢量地图数据的生产、传播与应用提供有效的版权 保护。
附图说明
图1为基于虚拟圆的数字水印标识。
图2、图3为虚拟圆与坐标序列线段的相交关系两种情况示意图。
图4、图5为虚拟圆特征点的嵌入策略两种状态示意图。
图6、图7 为特征点需要插入时,为避免水印攻击,对特征点移位处 理的两种状态示意图。
图8、 图9、图10为虚拟圆水印标识嵌入矢量地图后的三种情况示意 图。
图11 为虚拟圆检测中存在的虚拟圆误差示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图10,一种基于虚拟圆的矢量地图水印嵌入方法,包括以下 步骤:
(1)图1 是设计一个具有标识意义的虚拟圆水印标识的具体步骤:
(1.1)、确定虚拟圆的基准半径,其主要的标识特征为虚拟圆的半径 γ(0≤γ);
(1.2)、定义一组水印信息嵌入同心圆组半径γn(0≤γn);
(1.3)、定义虚拟圆的圆心坐标(X,Y);
(1.4)、针对圆心坐标(X,Y)、同心圆组半径γn(0≤γn)这一系 列变量,可以设计具有标识意义的特定虚拟圆组,此虚拟圆组中包含 有相关的水印信息;
(1.5)、此水印虚拟圆组可以覆盖矢量数字地图全图,图形范围越大 ,鲁棒性越强;
(2)图2-图7 是特征点的相交关系与特征点嵌入策略:
特征点的嵌入设计关系到水印算法的鲁棒性,为了防止三点共线给攻 击者留下攻击痕迹,拟采用如下特征点嵌入策略:
(2.1)、当虚拟圆与矢量地图坐标序列中的线段相切,那么切点就作 为特征点加入矢量地图坐标序列中,如图二。
(2.2)、当虚拟圆与矢量地图坐标序列的线段相交,且有两个交点时 ,我们只选取第一个交点,并按正常相交进行特征点的移位处理,如 图三。
(2.3)、当虚拟圆与矢量地图坐标序列正常相交,且交点与线段的端 点重合时,那么就不需要做任何的处理,直接使用端点。
(2.4)、当虚拟圆与矢量地图坐标序列正常相交,但交点与端点非常 接近(小于一个限定的误差值d)时,那么就删除原来最近的端点,以 新的交点代替端点。
(2.5)、当虚拟圆与矢量地图坐标序列中的线段(X1,Y1)-(X2, Y2)正常相交,且只有一个交点时,作为特征点插入,还需要消除三 点共线因素(三点共线,此特征易于被水印攻击算法利用,为此需要进 行消除处理),采用交点沿着圆弧左右移动一个限定的误差值d。那么 这两个点中,如何选择那一个点插入坐标串。我们以如下一个原则确 定插入的特征点:即根据图形趋势,如图四,当然是选择外部的那个 红点;如图五,左右两个红点都可以;从图四中可以看到,其中C’是 符合曲线趋势的点,从△ABC和△ABC’的构成上可以看出,只要计算 它们两个三角形的面积,选取面积较大的那点C’即为我们需要选择的 插入点坐标。具体结果见图六与图七。
(3)图8 图9图10是虚拟圆水印标识嵌入矢量地图水印后的示意图, 具体的嵌入方法为:
对矢量地图数据坐标序列中任何两个相邻坐标序列与一组虚拟圆中的 每一个虚拟圆检测是否有交点,如果存在交点,那么就根据虚拟圆水 印算法思想的特征点嵌入策略,把相关交点插入到坐标序列中,具体 方法步骤如下:
(3.1)、读取矢量地图坐标序列数据。
(3.2)、确定虚拟圆组的同心圆圆心坐标(X,Y)。
(3.3)、确定虚拟圆组的同心圆的基准半径γ。
(3.4)、对坐标序列数据中的相邻两点,判断虚拟圆组中的虚拟圆( X-X0)2+(Y-Y0)2=r2与线段(X1,Y1)-(X2,Y2)之间是否有交点。
(3.5)、则设交点为(X,Y),那么其一定是(X1,Y1)-(X2,Y2)线 段上的一点,其(X,Y)坐标可以由(X1,Y1)-(X2,Y2)两点决定:
把公式(2)确定的交点(X,Y)代入已知的虚拟圆方程X-X0)2+(Y-Y0)2=r2可以求得μ一元二次方程。
根据μ的一元二次方程中的求根判别式Δ,当Δ=0时,线段与虚拟圆 相切,当Δ>0时,线段与虚拟圆相交,且有两个交点;当Δ<0时, 线段与圆没有交变。再求得μ一元二次方程解代入(2)式,即可求得 交点(X,Y)坐标的坐标值。
(3.6)、最后根据虚拟圆水印算法设计思想中的特征点嵌入策略,把 特征点插入到坐标序列中的(X1,Y1)与(X2,Y2)之间。具体实现后 的矢量地图与特征点分布整体的矢量地图数据上。
一种基于虚拟圆的矢量地图水印检测方法,图11为虚拟圆矢量地图水 印检测中存在的虚拟圆误差示意图,虚拟圆矢量地图水印的检测步骤 如下:
(4)虚拟圆矢量地图水印检测方法是虚拟圆矢量地图水印嵌入算法的逆 过程,具体的方法步骤如下:
(4.1)、读取矢量地图坐标序列数据。
(4.2)、输入具有密钥的虚拟圆定位坐标与虚拟圆基准半径(注:此 圆定位坐标与基准半径也可以程序内置,或由配置文件配置)。
(4.3)、根据虚拟圆定位坐标与基准半径,对坐标序列数据中的相邻 两点,判断虚拟圆组中的虚拟圆(X-X0)2+(Y-Y0)2=r2与线段(X1,Y1) -(X2,Y2)之间是否有交点。
(4.4)、设交点为(X,Y),那么其一定是(X1,Y1)-(X2,Y2)线 段上的一点,其(X,Y)坐标可以由(X1,Y1)-(X2,Y2)两点决定:
把公式(2)确定的交点(X,Y)代入已知的虚拟圆方程(X-X0)2+(Y-Y 0)2=r2可以求得μ一元二次方程。
根据μ的一元二次方程中的求根判别式Δ,当Δ=0时,线段与虚拟圆 相切,当Δ>0时,线段与虚拟圆相交,且有两个交点;当Δ<0时, 线段与圆没有交变。再求得μ一元二次方程解代入(2)式,即可求得 交点(X,Y)坐标的坐标值。
(4.5)、根据求得交点(X,Y)坐标的坐标值,线段的端点坐 标的(X1,Y1)与(X2,Y2)进行比较。限差在规定范围内,即交点与 端点非常接近(小于一个限定的误差值d)时,此端点作为虚拟圆上的 水印特征点提取出来。
(4.6)、根据提取出来的特征点集,构建虚拟圆,以三点确定圆, 其余点进行验证,符合虚拟圆方程的加入水印信息集,不符合的抛弃 。
(4.7)、最后,根据检测出来的虚拟圆反算水印信息,实现水印信 息的提取。