发明名称 一种保持方向关系的矢量地图可逆信息隐藏方法
摘要 本发明提供一种保持方向关系的矢量地图可逆信息隐藏方法。包括如下步骤:获取顶点坐标;顶点坐标排序;有序序列坐标分段;计算段的边界;获取段的扩展坐标序列,嵌入水印;获取有序含水印坐标序列;获取含水印坐标;水印提取及无损恢复。本发明对各坐标轴顶点坐标排序并分段,利用段的边界坐标扩大嵌入容量,依据矢量地图的精度误差容限设置嵌入参数,通过设定水印嵌入条件,使水印嵌入过程不改变各坐标轴的顶点坐标相对位置,保持矢量地图图元方向关系的同时,具有较好不可见性;另一方面该算法在水印提取后,无损恢复矢量地图原始数据,能够有效确保矢量地图的精确使用。
申请公布号 CN105427232A 申请公布日期 2016.03.23
申请号 CN201510883460.8 申请日期 2015.12.03
申请人 江苏师范大学 发明人 王娜娜
分类号 G06T1/00(2006.01)I 主分类号 G06T1/00(2006.01)I
代理机构 代理人
主权项 一种保持方向关系的矢量地图可逆信息隐藏方法,其特征在于,包括以下步骤:(1)获取顶点坐标;顺次扫描矢量地图顶点,获取顶点坐标序列V={v<sub>j</sub>(x<sub>j</sub>,y<sub>j</sub>)|j=1,2,...,n},v<sub>j</sub>表示顶点序列V中的第j个顶点,x<sub>j</sub>和y<sub>j</sub>分别表示顶点v<sub>j</sub>的x坐标和y坐标,n表示序列V中的顶点数目,将X={x<sub>j</sub>|j=1,2,…,n]}和Y={y<sub>j</sub>|j=1,2,…,n}分别记为与坐标序列V对应的x坐标序列和y坐标序列,将x<sub>max</sub>和x<sub>min</sub>分别记为序列X中坐标的最大值和最小值,y<sub>max</sub>和y<sub>min</sub>分别记为序列Y中坐标的最大值和最小值;(2)顶点坐标排序;按照升序,将步骤(1)中序列X的坐标排序,得到有序序列<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msup><mi>X</mi><mi>s</mi></msup><mo>=</mo><mo>{</mo><msubsup><mi>x</mi><mi>j</mi><mi>s</mi></msubsup><mo>|</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>}</mo></mrow>]]></math><img file="FDA0000867000480000011.GIF" wi="495" he="71" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mo>(</mo><msubsup><mi>x</mi><mi>t</mi><mi>s</mi></msubsup><mo>&le;</mo><msubsup><mi>x</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>&le;</mo><msubsup><mi>x</mi><mrow><mi>t</mi><mo>+</mo><mn>2</mn></mrow><mi>s</mi></msubsup><mo>,</mo><mi>t</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>-</mo><mn>2</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000867000480000012.GIF" wi="660" he="71" /></maths><img file="FDA0000867000480000013.GIF" wi="59" he="70" />表示序列X中第j个坐标;(3)有序序列坐标分段;将步骤(2)中有序序列X<sup>s</sup>的坐标平均分为D<sub>x</sub>(D<sub>x</sub>≥1)段,将划分的第i(i=0,1,…,D<sub>x</sub>–1)段记为S<sub>i</sub>,每段的长度记为l<sub>x</sub>,将段S<sub>i</sub>对应的坐标序列记为<img file="FDA0000867000480000014.GIF" wi="748" he="71" /><img file="FDA0000867000480000015.GIF" wi="85" he="63" /><img file="FDA0000867000480000016.GIF" wi="66" he="70" />表示序列<img file="FDA0000867000480000017.GIF" wi="63" he="62" />的第j个坐标,n<sub>i</sub>表示序列<img file="FDA0000867000480000018.GIF" wi="63" he="60" />的坐标数目;(4)计算段的边界;为步骤(3)的每个段S<sub>i</sub>(i=0,1,…,D<sub>x</sub>–1)计算定义该段范围的左端点坐标<img file="FDA0000867000480000019.GIF" wi="49" he="69" />和右端点坐标<img file="FDA00008670004800000110.GIF" wi="74" he="70" />将计算得到<img file="FDA00008670004800000111.GIF" wi="46" he="75" />和<img file="FDA00008670004800000112.GIF" wi="78" he="71" />称为S<sub>i</sub>的边界坐标;(5)获取段的扩展坐标序列;对于步骤(3)的每个段S<sub>i</sub>(i=0,1,…,D<sub>x</sub>–1),将其边界坐标<img file="FDA00008670004800000113.GIF" wi="51" he="76" />作为第一个坐标,<img file="FDA00008670004800000114.GIF" wi="52" he="71" />作为最后一个坐标,加入到其对应的坐标序列<img file="FDA00008670004800000115.GIF" wi="70" he="61" />中,得到段S<sub>i</sub>的扩展坐标序列<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msup><msub><mi>X</mi><mi>i</mi></msub><mi>a</mi></msup><mo>=</mo></mrow>]]></math><img file="FDA00008670004800000116.GIF" wi="101" he="55" /></maths><img file="FDA00008670004800000117.GIF" wi="1738" he="78" /><img file="FDA00008670004800000118.GIF" wi="74" he="71" />表示序列X<sub>i</sub><sup>a</sup>的第j个坐标;(6)嵌入水印;在步骤(5)的每个扩展坐标序列X<sub>i</sub><sup>a</sup>(i=0,1,…,D<sub>x</sub>–1)的eligible顶点中嵌入水印,嵌入水印后,得到含水印坐标序列<img file="FDA00008670004800000120.GIF" wi="626" he="71" /><img file="FDA00008670004800000121.GIF" wi="87" he="70" />表示序列X<sub>i</sub><sup>a′</sup>的第j个坐标,由于嵌入方法不改变坐标序列X<sub>i</sub><sup>a</sup>的坐标相对顺序,X<sub>i</sub><sup>a′</sup>仍然为有序坐标序列,即<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi><mo>+</mo><mn>2</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>(</mo><mi>t</mi></mrow>]]></math><img file="FDA00008670004800000125.GIF" wi="396" he="70" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub><mo>-</mo><mn>1</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA00008670004800000126.GIF" wi="349" he="70" /></maths>且<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow><mi>a</mi></msubsup><mo>=</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub><mo>+</mo><mn>1</mn></mrow><mi>a</mi></msubsup><mo>=</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub><mo>+</mo><mn>1</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo></mrow>]]></math><img file="FDA00008670004800000127.GIF" wi="503" he="71" /></maths>从X<sub>i</sub><sup>a′</sup>中去除<img file="FDA00008670004800000129.GIF" wi="86" he="69" />和<img file="FDA00008670004800000130.GIF" wi="135" he="70" />得到有序坐标序列X<sub>i</sub><sup>s</sup>对应的含水印序列<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msubsup><mi>X</mi><mi>i</mi><msup><mi>s</mi><mo>&prime;</mo></msup></msubsup><mo>=</mo><mrow><mo>{</mo><mrow><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mn>2</mn></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo><mo>...</mo><mo>,</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub></mrow><mi>a</mi></msubsup><mo>&prime;</mo></msup></mrow><mo>}</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>|</mo><mi>j</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub><mo>-</mo><mn>1</mn></mrow><mo>}</mo></mrow><mo>(</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi><mo>+</mo><mn>2</mn></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo><mi>t</mi><mo>=</mo></mrow>]]></math><img file="FDA0000867000480000021.GIF" wi="1589" he="79" /></maths><maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>n</mi><mi>i</mi></msub><mo>-</mo><mn>3</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000867000480000022.GIF" wi="302" he="71" /></maths><img file="FDA0000867000480000023.GIF" wi="89" he="70" />表示序列X<sub>i</sub><sup>s′</sup>的第j个坐标;(7)获取有序含水印坐标序列;按照升序,将步骤(6)的含水印序列<img file="FDA0000867000480000025.GIF" wi="460" he="71" />顺次连接,得到有序坐标序列X<sup>s</sup>对应的含水印坐标序列<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msup><mi>X</mi><msup><mi>s</mi><mo>&prime;</mo></msup></msup><mo>=</mo><mo>{</mo><msup><msubsup><mi>x</mi><mi>j</mi><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>|</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>}</mo><mrow><mo>(</mo><msup><msubsup><mi>x</mi><mi>t</mi><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>&le;</mo><msup><msubsup><mi>x</mi><mrow><mi>t</mi><mo>+</mo><mn>2</mn></mrow><mi>s</mi></msubsup><mo>&prime;</mo></msup><mo>,</mo><mi>t</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000867000480000026.GIF" wi="1191" he="78" /></maths><img file="FDA0000867000480000027.GIF" wi="69" he="71" />表示序列X<sup>s'</sup>的第j个坐标;(8)获取含水印坐标;依据步骤(2)中序列X和序列X<sup>s</sup>的一一映射关系,通过调整含水印坐标序列X<sup>s'</sup>的坐标位置,得到含水印坐标序列X'={x<sub>j</sub>'|j=0,1,…,n–1},x<sub>j</sub>'表示序列X'的第j个坐标;(9)获取含水印矢量地图;利用步骤(2)‑(8),在顶点坐标序列V的y坐标中嵌入水印后,得到含水印顶点坐标序列V={v<sub>j</sub>'(x<sub>j</sub>',y<sub>j</sub>')|j=1,2,...,n},其中v<sub>j</sub>'表示V'的第j个顶点,y<sub>j</sub>'表示顶点v<sub>j</sub>'的y坐标;(10)水印提取及无损恢复;依据嵌入参数,提取含水印矢量地图水印信息并恢复其原始数据;具体步骤如下:(10.1)获取含水印顶点坐标;依据步骤(1),获取含水印矢量地图顶点坐标序列V={v<sub>j</sub>'(x<sub>j</sub>',y<sub>j</sub>')|j=1,2,....,n]}及与之对应的含水印x坐标序列X'={x<sub>j</sub>'|j=1,2,…,n}和含水印y坐标序列Y'={y<sub>j</sub>'|j=1,2,…,n};其中,v<sub>j</sub>'表示顶点序列V'的第j个顶点,x<sub>j</sub>'和y<sub>j</sub>'分别表示顶点v<sub>j</sub>'的x坐标和y坐标,n表示序列V'的顶点数目;将x<sub>max</sub>'和x<sub>min</sub>'分别记为序列X'中坐标的最大值和最小值,将y<sub>max</sub>'和y<sub>min</sub>'分别记为序列Y'中坐标的最大值和最小值;(10.2)含水印顶点坐标排序;依据步骤(2),将序列X'的坐标排序,得到含水印坐标序列X<sup>s'</sup>;(10.3)含水印有序序列坐标分段;依据步骤(3),将x<sub>max</sub>'和x<sub>min</sub>'之间的距离平均分为D<sub>x</sub>'(D<sub>x</sub>'≥1)段,每段的长度为l<sub>x</sub>',并计算段S<sub>i</sub>'(i=0,1,…,D<sub>x</sub>'–1)对应的含水印坐标序列记为<img file="FDA00008670004800000212.GIF" wi="100" he="67" />(10.4)计算段的边界;依据步骤(4),计算每个段S<sub>i</sub>'(i=0,1,…,D<sub>x</sub>'–1)的边界坐标<img file="FDA0000867000480000028.GIF" wi="64" he="69" />和<img file="FDA0000867000480000029.GIF" wi="172" he="69" />为段S<sub>i</sub>′的左端点坐标,<img file="FDA00008670004800000211.GIF" wi="65" he="63" />为段S<sub>i</sub>′的右端点坐标;(10.5)获取段的含水印扩展坐标序列;依据步骤(5),对于每个段S<sub>i</sub>'(i=0,1,…,D<sub>x</sub>'–1),将其边界坐标<img file="FDA0000867000480000031.GIF" wi="66" he="71" />和<img file="FDA0000867000480000032.GIF" wi="62" he="70" />分别作为第一个坐标和最后一个坐标,加入到其对应的含水印坐标序列<img file="FDA0000867000480000033.GIF" wi="84" he="70" />中,得到段S<sub>i</sub>′的含水印扩展坐标序列X<sub>i</sub><sup>a</sup>′;(10.6)提取水印和恢复原始数据;从每个含水印扩展坐标序列X<sub>i</sub><sup>a′</sup>(i=0,1,...,D<sub>x</sub>′‑1)的eligible坐标中提取水印并恢复原始数据,得到恢复数据的扩展坐标序列X<sub>i</sub><sup>a</sup>;从序列X<sub>i</sub><sup>a</sup>中去除第一个坐标和最后一个坐标,得到有序坐标序列X<sub>i</sub><sup>s</sup>;(10.7)获取恢复数据的有序坐标序列;按照升序,将每段对应的有序坐标序列X<sub>i</sub><sup>s</sup>(i=0,1,...,D<sub>x</sub>‑1)顺次连接,得到恢复数据的有序坐标序列X<sup>s</sup>;(10.8)获取原始坐标序列;利用本步骤b中序列X'和序列X<sup>s'</sup>的一一映射关系,通过调整恢复数据的有序坐标序列X<sup>s</sup>的坐标位置,得到含水印坐标序列X;(10.9)恢复矢量地图原始数据;利用本步骤的b‑h,提取含水印y坐标序列Y'中水印信息并恢复其原始数据,最终得到原始顶点坐标序列V,恢复矢量地图原始数据。
地址 221000 江苏省徐州市铜山区上海路101号