数字水印技术介绍

1 数字水印

1.1 定义

  数字水印,即通过某种算法,在不影响原有多媒体价值及使用的前提下,将标识信息嵌入到多媒体文件中的技术。数字水印利用人体感官自身的不敏感性和信息本身存在的冗余,采用硬件或软件的方法将图像、文本等一切可以作为标识信息的数字信号与原始载体融合并深深隐藏其中。并且在必要时可检测或提取秘密信息。
  数字水印技术是一种被动保护工具,只能标记数据,无法阻止原始数据的非法使用。其基本特性如下:

  • 不可感知性:从感官的角度,在多媒体作品中嵌入隐藏信息会造成原始数据的改变,但这种改变光凭听觉或视觉是不会察觉到的。
  • 安全性:数字水印的信息不可伪造。
  • 鲁棒性:指数字载体在受到非法入侵者的干扰或破坏后,水印信息仍然能被完整且准确提出出来的能力。
  • 嵌入容量:嵌入容量提高的同时,水印的不可感知性会降低。
  • 明确性:数字水印必须能够且唯一地确定出来,用来确定多媒体作品的真正归属。
1.2 分类

根据数字水印的嵌入位置可以分为:

  • 空间域水印算法:直接在图片上的灰度值上进行操作,不需要对原始载体进行变换,具有计算简单、效率较高、嵌入容量大等优点。
  • 变换域水印算法:通过在变换域执行指定的任务,以后在用反变换返回到空间域已实现信息隐匿效果。目前常用的变换域有DWT域或DCT域。
1.3 示例

  利用LSB算法给图片文件添加文本类型水印。

from PIL import Image
#图片文件
img=Image.open(r'/Users/sherry/Downloads/杀生丸.jpeg')
rgb_img=img.convert('RGB')

#水印信息
text='作者:sherry_sun,2023-09-11'
bin_text=''.join(format(ord(i),'08b') for i in text)

k=0
while True:
    if k==len(bin_text):
        break
    i=(k//3)//img.size[1]
    j=(k//3)%img.size[1]
    data=list(img.getpixel((i,j)))
    data[k%3]=(data[k%3]-data[k%3]%2)+int(bin_text[k])
    img.putpixel((i,j),tuple(data))
    k=k+1

img.save('/Users/sherry/documents/杀生丸1.jpeg')

你可能感兴趣的:(区块链,数字水印,区块链)