基于频域的数字盲水印blind-watermark

基于频域的数字盲水印技术是一种通过将水印信息嵌入到图像的频率域中来实现版权保护和内容认证的技术。以下是其核心要点:

基本原理

  1. 频域转换‌:通过傅里叶变换(DFT)、离散余弦变换(DCT)或离散小波变换(DWT)将图像从空域转换到频域‌12。
  2. 水印嵌入‌:将水印信息(如二进制数据、文本或图像)嵌入到频域的中高频系数中,利用人类视觉对高频不敏感的特性实现不可见性‌1。
  3. 鲁棒性设计‌:通过调整系数关系(如DCT系数的相对大小)或结合奇异值分解(SVD)增强抗攻击能力,抵抗压缩、裁剪、噪声等常见处理‌

数字盲水印blind-watermark源码:https://github.com/guofei9987/blind_watermark

安装

复制代码
pip install blind-watermark

命令行中使用

复制代码
# 嵌入水印:
blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png
# 提取水印:
blind_watermark --extract --pwd 1234 --wm_shape 111 examples/output/embedded.png

python中使用

嵌入水印

python 复制代码
from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('pic/ori_img.jpg')
wm = '@guofei9987 开源万岁!'
bwm1.read_wm(wm, mode='str')
bwm1.embed('output/embedded.png')
len_wm = len(bwm1.wm_bit)
print('Put down the length of wm_bit {len_wm}'.format(len_wm=len_wm))

提取水印

python 复制代码
bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')
print(wm_extract)
相关推荐
百锦再3 分钟前
大型省级政务平台采用金仓数据库(KingbaseES)
开发语言·数据库·后端·rust·eclipse
biter down20 分钟前
C 语言17:位操作符 & | ^:从二进制编码到大小端
c语言·开发语言
mjhcsp24 分钟前
C++ map 容器:有序关联容器的深度解析与实战
开发语言·c++·map
将编程培养成爱好27 分钟前
C++ 设计模式《账本事故:当备份被删光那天》
开发语言·c++·设计模式·备忘录模式
权泽谦33 分钟前
从 Linux 到 Docker:一条通向 DevOps 的进阶之路
linux·docker·devops
黑咩狗夜.cm34 分钟前
Aspose.word实现表格每页固定表头、最后一行填满整个页面
开发语言·c#·word
yuanManGan44 分钟前
走进Linux的世界:进程优先级
linux·运维·服务器
antonytyler1 小时前
机器学习实践项目(二)- 房价预测增强篇 - 特征工程四
人工智能·python·机器学习
一叶知秋yyds1 小时前
linux 系统查看进程占用物理内存大小方法
linux·运维·服务器
gCode Teacher 格码致知1 小时前
Python教学基础:用Python和openpyxl结合Word模板域写入数据-由Deepseek产生
python·word