我有一些手动创建的矢量数据,它只是一个x,y值的列表。点的坐标并不完全准确 - 它可以偏离几个像素,并且不会产生任何可察觉的差异。
所以现在我正在寻找一些方法来为这些数据添加水印,这样如果有人窃取了矢量数据,我就可以证明它确实被盗了。我正在寻找一些足够可靠的方法,即使有人拿走了我的数据并将所有点数转移了一小部分,我仍然可以证明它已经被盗了。
有没有办法做到这一点?我知道它存在位图数据但是矢量数据怎么样?
PS:矢量图形本身相当随机 - 它不能受版权保护。
答案 0 :(得分:2)
您可以使用所有积分吗?例如,如果你正在处理SVG,你可以使用某种类型的XML格式导出文件,顶部有<!-- generated by thingummy -->
注释,根据这样的模式生成的ID,特别是额外的属性你的,一种应用翻译的特殊风格等。就像你可以用JPEG制作它可能用来创建它的那样,你可以通过观察来了解产生SVG文件的内容。
关于向量本身,你可以做一些事情,比如将它们视为有序序列,并应用两个伪随机序列的值给出的偏移量,每个伪随机序列的值从一个已知种子开始,用于X和Y平移,在一定范围内(例如[-1,1])。即使某些点被修改,您也应该能够根据事物与序列的匹配程度建立一个参数。如何更准确地区分已经转移的东西也可以做多少考虑;如果您只是在做int(x) + random(-1, 1)
,那么如果有人只是舍入了所有值,那么您的证据就会丢失。处理这个问题的一个更好的方法是,在仍然以相同的屏幕尺寸渲染时,将所有内容乘以953(任意接近1000素数)之类的常量,然后将该值调整为该范围内的某些值(即[0 ,952])。这个base-953系统将优于基础10系统,因为它很多(很多很多)很难看到正在发生的事情。如果此人更改了缩放比例,则需要对值进行更多分析,但它仍然应该是可能的。我有一种直觉,那就是选择一个素数可能会有点帮助,但我没有想到它非常多。如果在这些问题上有危险或有疑问,请为此选择一个素数......你可能会发现它有好处!
当然,结合多种不同技术可获得最佳效果。