Skip to content

使用python实现的水印代码。1、LSB 2、DWT+SVD

Notifications You must be signed in to change notification settings

lishuaijuly/Watermark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

使用场景分类

  • 文本水印
  • 图像水印 (当前目标)
  • 音频水印
  • 视频水印

水印算法

  • 空间域上,经典的 LSB( Least Significant Bits),支持的水印信息量大,对原图影响小。但是抗干扰能力比较差,不能抵抗图像的裁剪、缩放和jpg压缩。
  • 频域上,不支持盲提取算法,例如:DCTDWT,抗干扰能力强。但提取时需要原图。
  • 频域上,支持盲提取算法,例如:DWT+SVD,主要是使用图像中的稳定特征作为作为提取的指引,一般使用图像矩阵的特征值。相比DWT,抗干扰能力差一些,可附加的水印信息量小一些
    • 提取时不需要水印图像,缺点是能嵌入的信息非常有限。
    • 提取时需要水印图像,优点是嵌入信息比较多,实现上是把水印的信息分成两部分。

综合我司的使用场景,建议使用第一种或者第三种方法。

运行

    python test.py

所有代码由python实现,可封装成dll、so、web服务。

名词解释:

  • 盲嵌入:嵌入的水印信号与载体作品无关
  • 盲提取:提取水印时不需要原图像
  • 不可视水印:肉眼看不到的水印
  • PSNR:顶峰信噪比,用来度量加了水印之后的图像好坏,数字越大越好,超过35,肉眼就很难看出区别。

历史

  • 1954年,出现了第一个与“数字水印”方法类似的技术实例。当时,美国Muzac公司的Emil Hembrooke申请了一项名为“Identification of Sond and Lide Singals”的专利。改专利描述了一种将标识码不可感知的嵌入到音乐中而证明所有权的方法。这是迄今为止所知道的最早的电子水印技术.
  • 1993年Cox等提出了一种其余扩频通信思想的水印方案。该方案相对于空域算法具有较好的鲁棒性,已经成为数字水印技术中一个比较经典的方案。但它也存在一些缺陷,其中最重要的一点就是提取水印信息时必须有原始图像的参与
  • Chen等于1998年提出了一类盲水印方案。该方案采用量化器来实现水印信息的嵌入,在容量和鲁棒性等方面都具有较好的性能,并已成为数字水印技术中一个比较典型的方案。
  • 关于音频水印技术的研究最早见于1996年,Bender提出了LSB编码、回声编码、扩频编码和相位编码等四种算法
  • 对文本水印的研究始于1994年,贝尔实验室的Maxemchuk首先提出在数字文档中嵌入标记的方法,用于保护电子出版物所有者的利益。
  • 视频水印的研究也始于1994年,当时Matsui等提出了一种类似于图像水印的视频水印算法,它将视频信号的每一帧简单地视作图像进行处理

####难度

  • 信息的两个丢失 :
    • 图像的数据都是整型,svd、dwt后会产生浮点数,二者转换会有误差,
    • 图像数据存储为jpg之后再读取,也会有差异。
    • 都resize到512×512 是有问题的,对于某些图像,压缩后再恢复失真比较大。
  • 文件大小信息丢失,
其他
  • 打不了盲水印的情况:

    • 大小要求: 必须大于64×64 【能保存的信息太少,判断不准确,而且意义也不大】
    • 颜色要求,二值化图像打不了【打完之后失真较大】
    • 满足鲁棒性,必须要求打的水印有一定强度,有强度的水印在二值化图像上失真比较明显。
  • HVS有以下几个特点:

    • HVS对含有显着灰度变化的区域(即含有纹理的区域)的变化较不敏感.【嵌入区域应该与'灰度变化区'有关】
    • 主要图像图案的存在强烈地掩盖了具有相似取向和空间频率的较小变化.
    • HVS灵敏度随着背景亮度的增加而降低,即难以感知图像的较亮区域的灰度级变化.【嵌入强度应该与亮度有关】 将HVS归纳为运动敏感性、纹理敏感性和亮度敏感性
  • 截图产生的近视黑白图像,图像的容量低,难以隐蔽性的嵌入信息。

About

使用python实现的水印代码。1、LSB 2、DWT+SVD

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages