CN110390620B - 一种基于曲线傅里叶变换的等高线地图数据盲水印方法 - Google Patents
一种基于曲线傅里叶变换的等高线地图数据盲水印方法 Download PDFInfo
- Publication number
- CN110390620B CN110390620B CN201910629302.8A CN201910629302A CN110390620B CN 110390620 B CN110390620 B CN 110390620B CN 201910629302 A CN201910629302 A CN 201910629302A CN 110390620 B CN110390620 B CN 110390620B
- Authority
- CN
- China
- Prior art keywords
- curve
- sequence
- fourier transform
- vertex
- coefficients
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0065—Extraction of an embedded watermark; Reliable detection
Abstract
本发明公开了一种基于曲线傅里叶变换的等高线地图数据盲水印方法。传统水印算法还很难直接应用在等高线地图数据上。本发明方法包括水印信息嵌入和水印信息提取。水印信息嵌入是把用户选择的水印信息嵌入到原始等高线地图中得到一个新的等高线地图,具体包括调制水印信息、对等高线地图数据进行处理和嵌入水印信息。水印信息提取是从待检测的等高线地图中提取水印信息内容,具体包括对待检测的等高线地图数据进行处理、提取水印信息。本发明具有较好的鲁棒性,并且是一种盲检方法,具有较好的实用价值。
Description
技术领域
本发明属于多媒体信息安全技术领域,涉及一种针对地理空间数据中等高线地图数据的盲水印方法。
背景技术
数字水印技术是将代表著作权人身份的特定信息,按照某种方式嵌入被保护的信息中,在产生版权纠纷时,通过相应的算法提取出该数字水印,从而验证版权的归属,确保著作权人的合法利益,避免非法盗版的威胁。被保护的信息可以是任何一种数字媒体,如图像、声音、视频或一般性的电子文档等。数字水印技术运用于数据版权保护和数据真伪检测应用中,是一种可在开放的网络环境下实现信息隐藏与跟踪的新型技术。
等高线地图数据水印算法不同于传统的基于图像水印算法,这主要是由于等高线数据不具有图像数据应用的普遍性等原因,同时还在于等高线地图数据在数据结构、存储形式、表现方式、应用环境、使用要求以及可能的攻击行为等方面与图像等多媒体数据都不一样,一般的数字水印算法还很难直接应用在等高线地图数据上,这使得目前针对等高线地图的数字水印技术应用还非常匮乏。
由于等高线地图是地理空间数据的一个重要组成部分,它是描述关于人类赖以生存的地球的重要信息,是国家基础性、公益性设施,是国家基础设施建设和地球科学研究的支撑性成果,是国家经济、国防建设中不可缺少的资源,对社会持续发展起着重要作用,因此对于等高线地图数据的水印技术也具有非常好的使用前景。由此可见,数字水印技术在等高线地图数据上的应用具有更加潜在的用途,而且具有非常好的经济社会效益。
发明内容
本发明针对现有技术的不足,提供了一种基于曲线傅里叶变换的等高线地图数据盲水印方法。
本发明方法的包括水印信息嵌入和水印信息提取。
所述的水印信息嵌入是把用户选择的水印信息嵌入到原始等高线地图中得到一个新的等高线地图,输入为一个等高线地图M和一个包含11个0~9之间整数的序列w,输出为包含水印信息的等高线地图M′,具体步骤为:
步骤(1):曲线傅里叶变换计算
设有一顶点序列D1,D2,...,Di,其对应的坐标序列为(x1,y1),(x2,y2),...,(xi,yi),对于顶点序列D1,D2,...,Di,使用曲线傅里叶变换计算得到一组曲线傅里叶变换系数an,bn,cn和dn。
步骤(2):调制水印信息
嵌入的水印信息是一个包含11个整数的序列,每个整数取值在1到9之间,记这个整数序列为w=(w1,w2,...,wm,...,w11)。
画一圆R,其半径为1,在圆R中分别画角度为0度、30度、60度,90度、120度,150度,180度、210度、240度,270度、300度、330度的半径线,这12条半径线与R的交点分别记为A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11。其中,A0是0度半径线与R的交点,A1是30度半径线与的R的交点,A3是60度半径线与R的交点,其他以此类推。
把Ak交点在圆R上的坐标分别记为(xk,yk),k=0,1,,...,11那么有:
xk=cos(k×π/6),yk=sin(k×π/6)
将w=(w1,w2,...,wm,...,w11)的11个整数值按从前到后的顺序,分别与A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11一一对应,然后把A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11的横坐标和纵坐标分别除以w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11的整数值。
计算A0和点A1之间线段长度h0;计算A1和点A2之间线段长度h1,计算A2和A3之间的线段长度h2、A3和A4之间的线段长度h3、A4和A5之间的线段长度h4、A5和A6之间的线段长度h5、A6和A7之间的线段长度h6、A7和A8之间的线段长度h7、A8和A9之间的线段长度h8、A9和A10之间的线段长度h9、A10和A11之间的线段长度h10及A11和A0之间的线段长度h11。
对A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11使用曲线傅里叶变换得到一组曲线傅里叶变换系数,得到系数Wan、Wbn、Wcn和Wdn。这样,根据水印信息w=(w1,w2,...,wm,...,w11),利用曲线傅里叶变换得到一组曲线傅里叶变换系数Wan,Wbn,Wcn,Wdn,n=1,2,...,199,200。
步骤(3):嵌入水印信息
步骤(a):
对等高线地图的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前。
对等高线地图的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为嵌入数字水印的对象。将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,排序第三,四,五的闭合曲线分别记为L3,L4和L5。
将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5。
步骤(b):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,获得一个顶点序列。对于该顶点序列,使用曲线傅里叶变换得到一组曲线傅里叶变换系数,分别记为L1an、L1bn、L1cn和L1dn,其中n=1,2,...,999,1000。
在使用曲线傅里叶变换计算L1顶点序列的曲线傅里叶系数时,同时保存所有的tj,也就是保存L1第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的计算方法,对于L2计算得到一组曲线傅里叶变换系数L2an,L2bn,L2cn,L2dn,n=1,2,...,999,1000和L2第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L3计算得到一组曲线傅里叶变换系数L3an,L3bn,L3cn,L3dn,n=1,2,...,999,1000和L3第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L4计算得到一组曲线傅里叶变换系数L4an,L4bn,L4cn,L4dn,n=1,2,...,999,1000和L4第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L5计算得到一组曲线傅里叶变换系数L5an,L5bn,L5cn,L5dn,n=1,2,...,999,1000和L5第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
步骤(c):
其中[·]表示取整运算。
步骤(d):
将Wan,n=1,2,...,50这些系数按n的顺序放在L1a1000系数后面,得到L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50序列。将Wan,n=51,52,...,100这些系数按n的顺序放在L2a1000系数后面;将Wan,n=101,102,...,150这些系数按n的顺序放在L3a1000系数后面;将Wan,n=151,152,...,200这些系数按n的顺序放在L4a1000系数后面。
将Wbn,n=1,2,...,50这些系数按n的顺序放在L1b1000系数后面,得到L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50序列;将Wbn,n=51,52,...,100这些系数按n的顺序放在L2b1000系数后面;将Wbn,n=101,102,...,150这些系数按n的顺序放在L3b1000系数后面;将Wbn,n=151,152,...,200这些系数按n的顺序放在L4b1000系数后面。
同样,使用上述Wan和Wbn分片放置的方式,将Wcn的系数分片按顺序放到L1c1000,L2c1000,L3c1000,L4c1000的后面。将Wdn的系数分片按顺序放到L1d1000,L2d1000,L3d1000,L4d1000的后面。
将h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11按顺序分别放在L5a1000,L5b1000,L5c1000和L5d1000的后面,分别得到L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11序列;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11序列;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11序列;L5d1,L5d2,...,L5d49,L5d1000,h0,h1,...,h10,h11序列。
步骤(e):
对于L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50;L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50;L1c1,L1c2,...,L1c50,Wc1,Wc2,...,Wc1000;L1d1,L1d2,...,L1d1000,Wd1,Wd2,...,Wd50,采用逆曲线傅里叶变换得到顶点坐标。
由顶点坐标得到一个顶点序列(x(n),y(n)),n=0,1,2,...,N-1。将这个顶点序列依次用线段连接得到一个闭合曲线WL1。把这个闭合曲线WL1替代L1保存到等高线地图中。
对于L2a1,L2a2,...,L2a1000,Wa51,Wa52,...,Wa100;L2b1,L2b2,...,L2b1000,Wb51,Wb52,...,Wb100;L2c1,L2c2,...,L2c1000,Wc51,Wc52,...,Wc100;L2d1,L2d2,...,L2d1000,Wd50,Wd51,...,Wd100,采用与WL1同样的方法,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL2,将WL2替代L2保存到等高线地图中。
对于L3a1,L3a2,...,L3a1000,Wa101,Wa102,...,Wa150;L3b1,L3b2,...,L3b1000,Wb101,Wb102,...,Wb150;L3c1,L3c2,...,L3c1000,Wc101,Wc102,...,Wc150;L3d1,L3d2,...,L3d1000,Wd101,Wd102,...,Wd150,采用与WL1同样的方法,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL3,将WL3替代L3保存到等高线地图中。
对于L4a1,L4a2,...,L4a1000,Wa151,Wa152,...,Wa200;L4b1,L4b2,...,L4b50,Wb151,Wb152,...,Wb200;L4c1,L4c2,...,L4c1000,Wc151,Wc152,...,Wc200;L4d1,L4d2,...,L4d1000,Wd151,Wd152,...,Wd200,采用与WL1同样的方法,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL4,将WL4替代L4保存到等高线地图中。
对于,L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11;L5d1,L5d2,...,L5d1000,h0,h1,...,h10,h11,采用与WL1同样的方法,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接可以得到WL5,将WL5替代L5保存到等高线地图中。
这样,经过步骤(a)至步骤(e),将水印信息w=(w1,w2,...,wm,...,w11)嵌入到了等高线地图中。
所述的水印信息的提取是从待检测的等高线地图M′中提取水印信息w的内容,输入为包含水印信息的等高线地图M′,输出为等高线地图里包含的水印信息w,具体包括以下步骤:
步骤(1):
对等高线地图的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前。
对等高线地图的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为潜入数字水印的对象。将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,排序第三,四,五的闭合曲线分别记为L3,L4和L5。将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5。
步骤(2):
步骤(a):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,获得一个顶点序列。对于该顶点序列,使用曲线傅里叶变换得到一组曲线傅里叶变换系数,记为L1an、L1bn、L1cn和L1dn,n=1,2,...,1050。
把L1a1001赋值给Wa1,把L1a1002赋值给Wa2,以此类推,这样得到Wa1,Wa2,...,Wa50。把L1b1001赋值给Wb1,把L1b1002赋值给Wb2,以此类推,这样得到Wb1,Wb2,...,Wb50。用同样的方法,利用L1cn和L1dn分别得到Wc1,Wc2,...,Wc50和Wd1,Wd2,...,Wd50。
步骤(b):
按如上所述步骤(a)的方法,对于L2计算得到Wan,Wbn,Wcn,Wdn,n=51,52,...,100;对于L3计算得到Wan,Wbn,Wcn,Wdn,n=101,102,...,150;对于L4计算得到Wan,Wbn,Wcn,Wdn,n=151,152,...,200。
步骤(c):
对于L5,采用步骤(a)L1的方法得到顶点序列,然后对于该顶点序列,使用曲线傅里叶变换公式计算得到一组曲线傅里叶变换系数,n=1,2,...,1012。最后把L1a1001赋值给h0,把L1a1002赋值给h1,以此类推,这样得到h0,h1,...,h10,h11。
步骤(d):
步骤(3):
按如下公式计算顶点坐标:
本发明的有益效果:本发明方法具有较好的鲁棒性,并且是一种盲检方法,具有较好的实用价值。
具体实施方式
一种基于曲线傅里叶变换的等高线地图数据盲水印方法,该方法包括水印信息嵌入和水印信息提取两部分。
(一)、所述的水印信息嵌入是把用户选择的水印信息嵌入到原始等高线地图中得到一个新的等高线地图,输入为一个等高线地图M和一个包含11个0~9之间整数的序列w,输出为包含水印信息的等高线地图M′,具体步骤包括:
步骤(1):曲线傅里叶变换计算
设有一顶点序列D1,D2,...,Di,其对应的坐标序列为(x1,y1),(x2,y2),...,(xi,yi),即D1对应了(x1,y1),D2对应了(x2,y2),后面以此类推。
对于顶点序列D1,D2,...,Di,使用公式(1)到公式(4)所示的曲线傅里叶变换计算得到一组曲线傅里叶变换系数an,bn,cn,dn。
步骤(2):调制水印信息
嵌入的水印信息w是一个包含11个整数的整数序列,每个整数取值在1到9之间,记这个整数序列为w=(w1,w2,...,wm,...,w11)。
画一圆R,其半径为1,在圆R中分别画角度为0度、30度、60度,90度、120度,150度,180度、210度、240度,270度、300度、330度的半径线,这12条半径线与R的交点分别记为A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11。其中,A0是0度半径线与R的交点,A1是30度半径线与的R的交点,A3是60度半径线与R的交点,其他以此类推。
把Ak交点在圆R上的坐标分别记为(xk,yk),k=0,1,,...,11那么有:
xk=cos(k×π/6),yk=sin(k×π/6),k=0,1,...,11。
将w=(w1,w2,...,wm,...,w11)的11个整数值按从前到后的顺序,分别与A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11一一对应,然后把A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11的横坐标和纵坐标分别除以和w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11的整数值。例如A1对应了w1,那么A1的坐标调整为x1=cos(1×π/6)/w1,y1=sin(1×π/6)/w1。A2对应了w2,那么A2的坐标值就调整为x2=cos(2×π/6)/w2,y2=sin(2×π/6)/w2,其他以此类推。
计算A0和点A1之间线段长度h0,计算方法为Δx1=x1-x0,y1=y1-y0。计算A1和点A2之间线段长度h1,计算方法为Δx2=x2-x1,y2=y2-y1。依次类推,计算A2和A3之间的线段长度h2、A3和A4之间的线段长度h3、A4和A5之间的线段长度h4、A5和A6之间的线段长度h5、A6和A7之间的线段长度h6、A7和A8之间的线段长度h7、A8和A9之间的线段长度h8、A9和A10之间的线段长度h9、A10和A11之间的线段长度h10、及A11和A0之间的线段长度h11。
对A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11使用公式(1)-公式(4)所示的曲线傅里叶变换公式计算,得到一组曲线傅里叶变换系数,其中n=1,2,...,199,200。这里把公式(1)计算得到的系数记为Wan,把公式(2)计算得到的系数记为Wbn,把公式(3)计算得到的系数记为Wcn,把公式(4)计算得到的系数记为Wdn。这样,根据水印信息w=(w1,w2,...,wm,...,w11),利用曲线傅里叶变换可以得到一组曲线傅里叶变换系数Wan,Wbn,Wcn,Wdn,n=1,2,...,199,200。
步骤(3):对等高线地图M嵌入水印信息
水印信息的嵌入可以分为如下子步骤:
步骤(a)
对等高线地图M的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前。如果有曲线周长相同,那么对周长相等的闭合曲线再按顶点数量进行排序,顶点数量越大,排序越前。
对等高线地图M的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为嵌入数字水印的对象。这里将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,后面以此类推,排序第三,四,五的闭合曲线分别记为L3,L4和L5。
将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5。
步骤(b):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,可以获得一个顶点序列。对于该顶点序列,使用公式(1)-公式(4)所示的曲线傅里叶变换公式计算得到一组曲线傅里叶变换系数,其中n=1,2,...,999,1000。把公式(1)计算得到的系数记为L1an,把公式(2)计算得到的系数记为L1bn,把公式(3)计算得到的系数记为L1cn,把公式(4)计算得到的系数记为L1dn。
在使用曲线傅里叶变换计算L1顶点序列的曲线傅里叶系数时,同时保存所有的tj,也就是保存L1第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的计算方法,对于L2计算得到一组曲线傅里叶变换系数L2an,L2bn,L2cn,L2dn,n=1,2,...,999,1000和L2第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L3计算得到一组曲线傅里叶变换系数L3an,L3bn,L3cn,L3dn,n=1,2,...,999,1000和L3第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L4计算得到一组曲线傅里叶变换系数L4an,L4bn,L4cn,L4dn,n=1,2,...,999,1000和L4第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
采用与如上L1同样的方法,对于L5计算得到一组曲线傅里叶变换系数L5an,L5bn,L5cn,L5dn,n=1,2,...,999,1000和L5第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离。
步骤(c):
步骤(d):
将Wan,n=1,2,...,50这些系数按n的顺序放在L1a1000系数后面,得到L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50序列。将Wan,n=51,52,...,100这些系数按n的顺序放在L2a1000系数后面;将Wan,n=101,102,...,150这些系数按n的顺序放在L3a1000系数后面;将Wan,n=151,152,...,200这些系数按n的顺序放在L4a1000系数后面;
将Wbn,n=1,2,...,50这些系数按n的顺序放在L1b1000系数后面,得到L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50序列;将Wbn,n=51,52,...,100这些系数按n的顺序放在L2b1000系数后面;将Wbn,n=101,102,...,150这些系数按n的顺序放在L3b1000系数后面;将Wbn,n=151,152,...,200这些系数按n的顺序放在L4b1000系数后面;
同样,使用上述Wan和Wbn分片放置的方法,将Wcn的系数分片按顺序放到L1c1000,L2c1000,L3c1000,L4c1000的后面。将Wdn的系数分片按顺序放到L1d1000,L2d1000,L3d1000,L4d1000的后面。
将h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11按顺序分别放在L5a1000,L5b1000,L5c1000和L5d1000的后面,分别得到L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11序列;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11序列;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11序列;L5d1,L5d2,...,L5d49,L5d1000,h0,h1,...,h10,h11序列;
步骤(e):
对于L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50;L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50;L1c1,L1c2,...,L1c50,Wc1,Wc2,...,Wc1000;L1d1,L1d2,...,L1d1000,Wd1,Wd2,...,Wd50,按公式(5)和公式(6)所示的逆曲线傅里叶变换公式计算顶点坐标:
其中,公式中的ak按k值由小到大的顺序依次对应了L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50。同样,bk对应了L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50;ck对应了L1c1,L1c2,...,L1c50,Wc1,Wc2,...,Wc1000;dk对应了L1d1,L1d2,...,L1d1000,Wd1,Wd2,...,Wd50。K是系数序列的系数个数。n=0,1,2,...,N-1,N是L1曲线的顶点个数。T是TL1,t0等于0,t1是L1的起点沿着曲线到第一个顶点的曲线长度,t2是L1的起点沿着曲线到第二个顶点的曲线长度,后面以此类推,实际上tn在步骤(b)中已经计算得到。
将公式(5)和公式(6)计算得到的x(n)作为横坐标,y(n)作为纵坐标,得到一个顶点序列(x(n),y(n)),n=0,1,2,...,N-1。将这个顶点序列依次用线段连接可以得到一个闭合曲线WL1。把这个闭合曲线WL1替代L1保存到等高线地图M中。
对于L2a1,L2a2,...,L2a1000,Wa51,Wa52,...,Wa100;L2b1,L2b2,...,L2b1000,Wb51,Wb52,...,Wb100;L2c1,L2c2,...,L2c1000,Wc51,Wc52,...,Wc100;L2d1,L2d2,...,L2d1000,Wd50,Wd51,...,Wd100,采用与WL1同样的方法,利用逆曲线傅里叶变换可以得到一个顶点序列,将这个顶点序列依次连接得到WL2,将WL2替代L2保存到等高线地图M中。
对于L3a1,L3a2,...,L3a1000,Wa101,Wa102,...,Wa150;L3b1,L3b2,...,L3b1000,Wb101,Wb102,...,Wb150;L3c1,L3c2,...,L3c1000,Wc101,Wc102,...,Wc150;L3d1,L3d2,...,L3d1000,Wd101,Wd102,...,Wd150,采用与WL1同样的方法,利用逆曲线傅里叶变换可以得到一个顶点序列,将这个顶点序列依次连接得到WL3,将WL3替代L3保存到等高线地图M中。
对于L4a1,L4a2,...,L4a1000,Wa151,Wa152,...,Wa200;L4b1,L4b2,...,L4b50,Wb151,Wb152,...,Wb200;L4c1,L4c2,...,L4c1000,Wc151,Wc152,...,Wc200;L4d1,L4d2,...,L4d1000,Wd151,Wd152,...,Wd200,采用与WL1同样的方法,利用逆曲线傅里叶变换可以得到一个顶点序列,将这个顶点序列依次连接得到WL4,将WL4替代L4保存到等高线地图M中。
对于,L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11;L5d1,L5d2,...,L5d1000,h0,h1,...,h10,h11,采用与WL1同样的方法,利用逆曲线傅里叶变换可以得到一个顶点序列,将这个顶点序列依次连接可以得到WL5,将WL5替代L5保存到等高线地图M中。
这样,经过步骤(a)至步骤(e),将水印信息w=(w1,w2,...,wm,...,w11)嵌入到了等高线地图M中,得到包含水印信息的等高线地图M′。
(二)、水印信息的提取是从待检测的等高线地图M′中提取水印信息w的内容,输入为包含水印信息的等高线地图M′,输出为等高线地图里包含的水印信息w,具体包括以下步骤:
步骤(1):
对等高线地图M′的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前。如果有曲线周长相同,那么对周长相等的闭合曲线再按顶点数量进行排序,顶点数量越大,排序越前。
对等高线地图M′的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为潜入数字水印的对象。这里将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,后面以此类推,排序第三,四,五的闭合曲线分别记为L3,L4和L5。将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5。
步骤(2):
步骤(a):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,可以获得一个顶点序列。对于该顶点序列,使用公式(1)-公式(4)所示的曲线傅里叶变换公式计算得到一组曲线傅里叶变换系数,n=1,2,...,1050。这里把公式(1)计算得到的系数记为L1an,把公式(2)计算得到的系数记为L1bn,把公式(3)计算得到的系数记为L1cn,把公式(4)计算得到的系数记为L1dn。
把L1a1001赋值给Wa1,把L1a1002赋值给Wa2,以此类推,这样得到Wa1,Wa2,...,Wa50。把L1b1001赋值给Wb1,把L1b1002赋值给Wb2,以此类推,这样得到Wb1,Wb2,...,Wb50。用同样的方法,利用L1cn和L1dn分别得到Wc1,Wc2,...,Wc50和Wd1,Wd2,...,Wd50。
步骤(b):
按如上所述步骤(a)的方法,对于L2计算得到Wan,Wbn,Wcn,Wdn,n=51,52,...,100;对于L3计算得到Wan,Wbn,Wcn,Wdn,n=101,102,...,150;对于L4计算得到Wan,Wbn,Wcn,Wdn,n=151,152,...,200。
步骤(c):
对于L5,采用步骤(a)L1的方法得到顶点序列,然后对于该顶点序列,使用公式(1)-公式(4)所示的曲线傅里叶变换公式计算得到一组曲线傅里叶变换系数,n=1,2,...,1012。最后把L1a1001赋值给h0,把L1a1002赋值给h1,以此类推,这样得到h0,h1,...,h10,h11。
步骤(d):
步骤(3):
按公式(7)和公式(8)所示的逆曲线傅里叶变换公式计算顶点坐标:
Claims (4)
1.一种基于曲线傅里叶变换的等高线地图数据盲水印方法,其特征在于该方法包括水印信息嵌入和水印信息提取两部分;
所述的水印信息嵌入是把用户选择的水印信息嵌入到原始等高线地图中得到一个新的等高线地图,输入为一个等高线地图M和一个包含11个0~9之间整数的序列w,输出为包含水印信息的等高线地图M′,具体步骤为:
步骤(1):曲线傅里叶变换计算
设有一顶点序列D1,D2,...,Di,其对应的坐标序列为(x1,y1),(x2,y2),...,(xi,yi),对于顶点序列D1,D2,...,Di,使用曲线傅里叶变换计算得到一组曲线傅里叶变换系数an,bn,cn和dn;
步骤(2):调制水印信息
嵌入的水印信息是一个包含11个整数的序列,每个整数取值在1到9之间,记这个整数序列为w=(w1,w2,...,wm,...,w11);
画一圆R,其半径为1,在圆R中分别画角度为0度、30度、60度,90度、120度,150度,180度、210度、240度,270度、300度、330度的半径线,这12条半径线与R的交点分别记为A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11;其中,A0是0度半径线与R的交点,A1是30度半径线与R的交点,A3是60度半径线与R的交点,其他以此类推;
把Ak交点在圆R上的坐标分别记为(xk,yk),k=0,1,,...,11那么有:
xk=cos(k×π/6),yk=sin(k×π/6)
将w=(w1,w2,...,wm,...,w11)的11个整数值按从前到后的顺序,分别与A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11一一对应,然后把A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11的横坐标和纵坐标分别除以w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11的整数值;
计算A0和点A1之间线段长度h0;计算A1和点A2之间线段长度h1,计算A2和A3之间的线段长度h2、A3和A4之间的线段长度h3、A4和A5之间的线段长度h4、A5和A6之间的线段长度h5、A6和A7之间的线段长度h6、A7和A8之间的线段长度h7、A8和A9之间的线段长度h8、A9和A10之间的线段长度h9、A10和A11之间的线段长度h10及A11和A0之间的线段长度h11;
对A0、A1、A2、A3、A4、A5、A6、A7、A8、A9、A10及A11使用曲线傅里叶变换得到一组曲线傅里叶变换系数,得到系数Wan、Wbn、Wcn和Wdn;这样,根据水印信息w=(w1,w2,...,wm,...,w11),利用曲线傅里叶变换得到一组曲线傅里叶变换系数Wan,Wbn,Wcn,Wdn,n=1,2,...,199,200;
步骤(3):嵌入水印信息
步骤(a):
对等高线地图的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前;
对等高线地图的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为嵌入数字水印的对象;将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,排序第三,四,五的闭合曲线分别记为L3,L4和L5;
将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5;
步骤(b):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,获得一个顶点序列;对于该顶点序列,使用曲线傅里叶变换得到一组曲线傅里叶变换系数,分别记为L1an、L1bn、L1cn和L1dn,其中n=1,2,...,999,1000;
在使用曲线傅里叶变换计算L1顶点序列的曲线傅里叶系数时,同时保存所有的tj,也就是保存L1第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离;
采用与如上L1同样的计算方式,对于L2计算得到一组曲线傅里叶变换系数L2an,L2bn,L2cn,L2dn,n=1,2,...,999,1000和L2第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离;
采用与如上L1同样的方式,对于L3计算得到一组曲线傅里叶变换系数L3an,L3bn,L3cn,L3dn,n=1,2,...,999,1000和L3第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离;
采用与如上L1同样的方式,对于L4计算得到一组曲线傅里叶变换系数L4an,L4bn,L4cn,L4dn,n=1,2,...,999,1000和L4第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离;
采用与如上L1同样的方式,对于L5计算得到一组曲线傅里叶变换系数L5an,L5bn,L5cn,L5dn,n=1,2,...,999,1000和L5第一个顶点沿着曲线按逆时针方向到其他每一个顶点的曲线距离;
步骤(c):
其中[·]表示取整运算;
步骤(d):
将Wan,n=1,2,...,50这些系数按n的顺序放在L1a1000系数后面,得到L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50序列;将Wan,n=51,52,...,100这些系数按n的顺序放在L2a1000系数后面;将Wan,n=101,102,...,150这些系数按n的顺序放在L3a1000系数后面;将Wan,n=151,152,...,200这些系数按n的顺序放在L4a1000系数后面;
将Wbn,n=1,2,...,50这些系数按n的顺序放在L1b1000系数后面,得到L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50序列;将Wbn,n=51,52,...,100这些系数按n的顺序放在L2b1000系数后面;将Wbn,n=101,102,...,150这些系数按n的顺序放在L3b1000系数后面;将Wbn,n=151,152,...,200这些系数按n的顺序放在L4b1000系数后面;
同样,使用上述Wan和Wbn分片放置的方式,将Wcn的系数分片按顺序放到L1c1000,L2c1000,L3c1000,L4c1000的后面;将Wdn的系数分片按顺序放到L1d1000,L2d1000,L3d1000,L4d1000的后面;
将h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11按顺序分别放在L5a1000,L5b1000,L5c1000和L5d1000的后面,分别得到L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11序列;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11序列;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11序列;L5d1,L5d2,...,L5d49,L5d1000,h0,h1,...,h10,h11序列;
步骤(e):
对于L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50;L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50;L1c1,L1c2,...,L1c50,Wc1,Wc2,...,Wc1000;L1d1,L1d2,...,L1d1000,Wd1,Wd2,...,Wd50,采用逆曲线傅里叶变换得到顶点坐标;
由顶点坐标得到一个顶点序列(x(n),y(n)),n=0,1,2,...,N-1;将这个顶点序列依次用线段连接得到一个闭合曲线WL1;把这个闭合曲线WL1替代L1保存到等高线地图中;
对于L2a1,L2a2,...,L2a1000,Wa51,Wa52,...,Wa100;L2b1,L2b2,...,L2b1000,Wb51,Wb52,...,Wb100;L2c1,L2c2,...,L2c1000,Wc51,Wc52,...,Wc100;L2d1,L2d2,...,L2d1000,Wd50,Wd51,...,Wd100,采用与WL1同样的方式,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL2,将WL2替代L2保存到等高线地图中;
对于L3a1,L3a2,...,L3a1000,Wa101,Wa102,...,Wa150;L3b1,L3b2,...,L3b1000,Wb101,Wb102,...,Wb150;L3c1,L3c2,...,L3c1000,Wc101,Wc102,...,Wc150;L3d1,L3d2,...,L3d1000,Wd101,Wd102,...,Wd150,采用与WL1同样的方式,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL3,将WL3替代L3保存到等高线地图中;
对于L4a1,L4a2,...,L4a1000,Wa151,Wa152,...,Wa200;L4b1,L4b2,...,L4b50,Wb151,Wb152,...,Wb200;L4c1,L4c2,...,L4c1000,Wc151,Wc152,...,Wc200;L4d1,L4d2,...,L4d1000,Wd151,Wd152,...,Wd200,采用与WL1同样的方式,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接得到WL4,将WL4替代L4保存到等高线地图中;
对于,L5a1,L5a2,...,L5a1000,h0,h1,...,h10,h11;L5b1,L5b2,...,L5b1000,h0,h1,...,h10,h11;L5c1,L5c2,...,L5c1000,h0,h1,...,h10,h11;L5d1,L5d2,...,L5d1000,h0,h1,...,h10,h11,采用与WL1同样的方式,利用逆曲线傅里叶变换得到一个顶点序列,将这个顶点序列依次连接可以得到WL5,将WL5替代L5保存到等高线地图中;
这样,经过步骤(a)至步骤(e),将水印信息w=(w1,w2,...,wm,...,w11)嵌入到了等高线地图中;
所述的水印信息的提取是从待检测的等高线地图M′中提取水印信息w的内容,输入为包含水印信息的等高线地图M′,输出为等高线地图里包含的水印信息w,具体包括以下步骤:
步骤(1):
对等高线地图的所有闭合曲线分别计算其周长,对所有闭合曲线按周长进行排序,周长越大,排序越靠前;
对等高线地图的所有闭合曲线排好序后,在排好序的闭合曲线中选择最靠前的五条闭合曲线作为潜入数字水印的对象;将排序第一的闭合曲线记为L1,排序第二的闭合曲线记为L2,排序第三,四,五的闭合曲线分别记为L3,L4和L5;将L1的周长记为TL1,L2的周长记为TL2,L3的周长记为TL3,L4的周长记为TL4,L5的周长记为TL5;
步骤(2):
步骤(a):
对L1,从0度水平开始按逆时针顺序扫描闭合曲线所记录包含的顶点,获得一个顶点序列;对于该顶点序列,使用曲线傅里叶变换得到一组曲线傅里叶变换系数,记为L1an、L1bn、L1cn和L1dn,n=1,2,...,1050;
把L1a1001赋值给Wa1,把L1a1002赋值给Wa2,以此类推,这样得到Wa1,Wa2,...,Wa50;把L1b1001赋值给Wb1,把L1b1002赋值给Wb2,以此类推,这样得到Wb1,Wb2,...,Wb50;用同样的方式,利用L1cn和L1dn分别得到Wc1,Wc2,...,Wc50和Wd1,Wd2,...,Wd50;
步骤(b):
按如上所述步骤(a)的方式,对于L2计算得到Wan,Wbn,Wcn,Wdn,n=51,52,...,100;对于L3计算得到Wan,Wbn,Wcn,Wdn,n=101,102,...,150;对于L4计算得到Wan,Wbn,Wcn,Wdn,n=151,152,...,200;
步骤(c):
对于L5,采用步骤(a)L1的方式得到顶点序列,然后对于该顶点序列,使用曲线傅里叶变换公式计算得到一组曲线傅里叶变换系数,n=1,2,...,1012;最后把L1a1001赋值给h0,把L1a1002赋值给h1,以此类推,这样得到h0,h1,...,h10,h11;
步骤(d):
步骤(3):
按如下公式计算顶点坐标:
3.根据权利要求1所述的一种基于曲线傅里叶变换的等高线地图数据盲水印方法,其特征在于:在嵌入水印信息的步骤(a)中,如果有曲线周长相同,那么对周长相等的闭合曲线再按顶点数量进行排序,顶点数量越大,排序越前。
4.根据权利要求1所述的一种基于曲线傅里叶变换的等高线地图数据盲水印方法,其特征在于:在嵌入水印信息的步骤(e)中逆曲线傅里叶变换采用如下公式:
其中,公式中的ak按k值由小到大的顺序依次对应L1a1,L1a2,...,L1a1000,Wa1,Wa2,...,Wa50;同样,bk对应L1b1,L1b2,...,L1b1000,Wb1,Wb2,...,Wb50;ck对应L1c1,L1c2,...,L1c50,Wc1,Wc2,...,Wc1000;dk对应L1d1,L1d2,...,L1d1000,Wd1,Wd2,...,Wd50;K是系数序列的系数个数;n=0,1,2,...,N-1,N是L1曲线的顶点个数;T是TL1,t0等于0,t1是L1的起点沿着曲线到第一个顶点的曲线长度,t2是L1的起点沿着曲线到第二个顶点的曲线长度,以此类推。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910629302.8A CN110390620B (zh) | 2019-07-12 | 2019-07-12 | 一种基于曲线傅里叶变换的等高线地图数据盲水印方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910629302.8A CN110390620B (zh) | 2019-07-12 | 2019-07-12 | 一种基于曲线傅里叶变换的等高线地图数据盲水印方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110390620A CN110390620A (zh) | 2019-10-29 |
CN110390620B true CN110390620B (zh) | 2022-12-23 |
Family
ID=68286613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910629302.8A Active CN110390620B (zh) | 2019-07-12 | 2019-07-12 | 一种基于曲线傅里叶变换的等高线地图数据盲水印方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110390620B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563835B (zh) * | 2020-03-16 | 2021-06-22 | 北京完美知识科技有限公司 | 一种为矢量地图嵌入水印的方法与装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154571A (en) * | 1998-06-24 | 2000-11-28 | Nec Research Institute, Inc. | Robust digital watermarking |
WO2003056515A1 (en) * | 2001-12-21 | 2003-07-10 | The University Of Surrey | Digital watermarking |
CN101383042A (zh) * | 2008-10-07 | 2009-03-11 | 北京理工大学 | 一种基于分数阶傅里叶域滤波器组的数字水印技术 |
CN101847250A (zh) * | 2010-04-27 | 2010-09-29 | 浙江工商大学 | 一种基于dct变换的矢量地图数据盲水印方法 |
CN103390261A (zh) * | 2013-07-05 | 2013-11-13 | 兰州交通大学 | 基于误差缩小的矢量地理空间数据全盲水印方法 |
CN104978706A (zh) * | 2014-04-11 | 2015-10-14 | 深圳中兴力维技术有限公司 | 基于傅里叶描述子的水印嵌入与提取方法、装置及系统 |
-
2019
- 2019-07-12 CN CN201910629302.8A patent/CN110390620B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154571A (en) * | 1998-06-24 | 2000-11-28 | Nec Research Institute, Inc. | Robust digital watermarking |
WO2003056515A1 (en) * | 2001-12-21 | 2003-07-10 | The University Of Surrey | Digital watermarking |
CN101383042A (zh) * | 2008-10-07 | 2009-03-11 | 北京理工大学 | 一种基于分数阶傅里叶域滤波器组的数字水印技术 |
CN101847250A (zh) * | 2010-04-27 | 2010-09-29 | 浙江工商大学 | 一种基于dct变换的矢量地图数据盲水印方法 |
CN103390261A (zh) * | 2013-07-05 | 2013-11-13 | 兰州交通大学 | 基于误差缩小的矢量地理空间数据全盲水印方法 |
CN104978706A (zh) * | 2014-04-11 | 2015-10-14 | 深圳中兴力维技术有限公司 | 基于傅里叶描述子的水印嵌入与提取方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110390620A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | Coverless steganography based on image retrieval of DenseNet features and DWT sequence mapping | |
Bas et al. | Geometrically invariant watermarking using feature points | |
Bravo-Solorio et al. | Automated detection and localisation of duplicated regions affected by reflection, rotation and scaling in image forensics | |
Simitopoulos et al. | Robust image watermarking based on generalized radon transformations | |
Li et al. | Geometrically invariant image watermarking using polar harmonic transforms | |
Cao et al. | Nonlinear scrambling-based reversible watermarking for 2D-vector maps | |
CN104794671A (zh) | 抗投影攻击的矢量空间数据盲水印方法 | |
CN110223213B (zh) | 一种gd-pbibd编码的矢量空间数据数字指纹方法 | |
CN110390620B (zh) | 一种基于曲线傅里叶变换的等高线地图数据盲水印方法 | |
Kaushik | A novel approach for digital watermarking of an image using DFT | |
CN108876694B (zh) | 基于Schur分解的三维模型盲数字水印算法 | |
Zope-Chaudhari et al. | Copyright protection of vector data using vector watermark | |
CN101847250B (zh) | 一种基于dct变换的矢量地图数据盲水印方法 | |
CN111242825B (zh) | 一种基于水深特征的enc电子航海图零水印方法 | |
CN104504645A (zh) | 基于圆谐傅里叶矩的鲁棒图像水印嵌入及检测方法 | |
Sakib et al. | A basic digital watermarking algorithm in discrete cosine transformation domain | |
Luo et al. | A reversible data hiding scheme for 3D point cloud model | |
Rui-mei et al. | A watermarking algorithm by modifying AC coefficies in DCT domain | |
CN104103031A (zh) | 基于归一化的矢量空间数据盲水印方法 | |
KR20090030454A (ko) | 방위각을 이용한 벡터 데이터 워터마크 삽입방법 및검출방법 | |
Hosam et al. | Watermarking 3d triangular mesh with high visual quality | |
Zheng et al. | Research on vector map digital watermarking technology | |
Jia et al. | A watermark algorithm based on SVD and image geometric correction | |
CN103390261A (zh) | 基于误差缩小的矢量地理空间数据全盲水印方法 | |
Jadav | Comparison of LSB and Subband DCT Technique for Image Watermarking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |