UDN-企业互联网技术人气社区
UDN 企业互联网技术社区 U视野 盲水印API接**术原理及实现方式

盲水印API接**术原理及实现方式

盲水印 2018-3-29 16:55
分享到:
摘要: PS:如果你只是在寻找解决问题的方法,没有耐心看完本文,可以直接调用现成的API:https://api.yonyoucloud.com/apilink/tempServicePages/97dbba20-0466-4f00-96db-2fd50ae7d9ee_true.html前言水印,一般是指图片上 ...

PS:如果你只是在寻找解决问题的方法,没有耐心看完本文,可以直接调用现成的APIhttps://api.yonyoucloud.com/apilink/tempServicePages/97dbba20-0466-4f00-96db-2fd50ae7d9ee_true.html

前言

水印,一般是指图片上的文字标识,比如发表在微博时图片都会自动打上肉眼可见的博主昵称,像这种一般用于标识某张图片的出处或者用于声明版权。但是这样做会破坏掉原图,而且影响美观,比较粗暴。此文主要是讨论另一种水印——盲水印,所谓盲水印,是指人感知不到的水印,包括看不到或听不见(因为数字盲水印也能够用于音频)。其主要应用于音像作品、数字图书等,目的是在不破坏原始作品的情况下,实现版权的防护与追踪。当然这篇文章只讨论图片上的应用。盲水印隐蔽性强,给水印数据进行编码过后不易被破解出来。这是它最大的优势。

 

原理

 

盲水印的实现过程主要参考了傅里叶分析(不知道傅里叶分析的可以自行百度或者看下一这篇文章)傅立叶变换可以把数据从时域转换到频域。而且过程可逆。盲水印就是在图像的频域上添加水印数据。再通过逆变换转回时域。区别是图片是二维数据,要把图片数据由时域转到频域需要用到二维傅立叶变换。

水印添加流程图如下:


图像的二维傅立叶变换

和一维数据不同,要想对图片进行频域转换就要使用二维傅立叶变换。其实,只要实现了一维傅立叶变换,二维傅立叶变换就不会那么难:先对图像矩阵数据每一行进行傅立叶变换,再对每一列进行傅立叶变换即完成二维傅立叶变换。这里还是用一张常见的美女lena. lena256*256)进行二维傅立叶变换如下图:

对于分辨率很大的图片,DFT的效率很低,通常不会考虑,取而代之的是FFT,但是,FFT的条件是要保证图片的宽和高都是2的幂级数。但是通常生活中的图片一般都不满足这个条件。这时候我们就需要对图片的宽和高进行补0扩充直到满足条件为止。

图片频域数据特征如下图所示:


图片中明亮的部分就是低频部分,暗点的是高频部分。一般为了展示会把频谱图低频的部分移到中心(上面手机拍的最右边的图)。频谱图是关于中心点对称的。

由于傅立叶变换是可逆的,若一张图片进行补零扩大后,进行逆变换后再把它补零的部分进行裁剪就可以得到原图。


水印数据嵌入

为了让水印更加隐蔽,需要将水印像素按照一定的顺序打乱,再进行二维傅立叶变化,最后再让它叠加在需要加水印的图片的频域上。为了提高水印的安全性,规定这种打乱的顺序需要外界传入一个密钥,根据不同的密钥生成不同乱序的规则,而且过程是可逆的。

 

1、乱序

2、水印添加过程.png


水印的提取

因为水印的添加是在原图的频域上进行叠加。我们只需要将原图和加了水印的图片分别进行傅立叶变换,最后通过减法则可提取出加密过的水印数据。通过已知的密钥可以逆推出打乱的规则,这样当我们从水印图片中提取出水印像素时,可以还原出水印像素的原序列。最后就可以得到原水印。


后记

图片盲水印技术其实还有很多,时间限制,文中只介绍了比较基础的一种方法,但道理都是大同小异的,如果各位读者有兴趣可以自己去了解,当然,也可以直接使用现成的盲水印API去实现上述效果

分享到:
已有6条评论

最新评论

uec_G00pRPnncN
hhhhh
uec_e2o2qQcK65
为活力值 顶一个
uec_e2o2qQcK65
**活力值 顶一个
uec_e2o2qQcK65
需要demo
uec_e2o2qQcK65
demo有没有?
uec_e2o2qQcK65
这个说的比较清楚,学习了

一周焦点

    关注我们:
    关于我们
    联系我们
    • 电话:010-86393388
    • 邮件:udn@yonyou.com
    • 地址:北京市海淀区北清路68号
    移动客户端下载
    关注我们
    • 微信公众号:yonyouudn
    • 扫描右侧二维码关注我们
    • 专注企业互联网的技术社区
    版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
    返回顶部