基于频域的数字盲水印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)
相关推荐
applepie_max4 小时前
GraphRAG本地部署 v2.7.0
python·rag·graphrag
Tiger_shl4 小时前
三大并发集合ConcurrentDictionary、ConcurrentBag、ConcurrentQueue
开发语言·c#
sulikey4 小时前
从零配置一个规范的 Python Git 仓库(适用于 Gitee / GitHub)
git·python·pycharm·gitee·github
火锅机器4 小时前
java 8 lambda表达式对list进行分组
java·开发语言·list
shaominjin1234 小时前
android在sd卡中可以mkdir, 但是不可以createNewFile
android·开发语言·python
筱砚.5 小时前
【STL——stack容器】
开发语言·c++
曦樂~5 小时前
【Qt】定时器--滚动相册
开发语言·qt
我是华为OD~HR~栗栗呀5 小时前
华为od-22届考研-测试面经
java·c++·python·功能测试·华为od·华为·面试
学习路上_write5 小时前
神经网络初次学习收获
人工智能·python