Skip to main content

Blind Watermark in Python

Project description

blind-watermark

基于傅里叶变换的数字盲水印

如何使用

嵌入水印

from blind_watermark import WaterMark

bwm1 = WaterMark(password_wm=1, password_img=1)

# 读取原图
bwm1.read_ori_img('pic/原图.jpg')

# 读取水印
bwm1.read_wm('pic/水印.png')

# 打上盲水印
bwm1.embed('output/打上水印的图.png')

提取水印

from blind_watermark import WaterMark

bwm1 = WaterMark(4399, 2333, 36, 20, wm_shape=(128, 128))
# 注意需要设定水印的长宽wm_shape
bwm1.extract('output/打上水印的图.png', 'output/解出的水印.png')

效果展示

原图 水印
水印
嵌入后的图 提取的水印
提取的水印

各种攻击后的效果

攻击方式 攻击后的图片 提取的水印
多遮挡
多遮挡攻击.py
多遮挡_提取水印
横向裁剪50%
横向裁剪攻击.py
纵向裁剪10%
纵向裁剪攻击.py
纵向裁剪
缩放攻击(1200X1920->600X800)
缩放攻击.py
椒盐攻击
椒盐击.py
亮度提高10%
亮度调高攻击.py
亮度调低10%
亮度调暗攻击.py
旋转攻击45度
旋转攻击.py

隐水印还可以是二进制数据

作为 demo, 如果要嵌入是如下长度为6的二进制数据

wm = [True, False, True, True, True, False]

嵌入水印

# 除了嵌入图片,也可以嵌入比特类数据
from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_ori_img('pic/原图.jpg')
bwm1.read_wm([True, False, True, True, True, False], mode='bit')
bwm1.embed('output/打上水印的图.png')

解水印:(注意设定水印形状 wm_shape

bwm1 = WaterMark(password_img=1, password_wm=1, wm_shape=6)
wm_extract = bwm1.extract('output/打上水印的图.png', mode='bit')
print(wm_extract)

解出的水印是一个0~1之间的实数,方便用户自行卡阈值。如果水印信息量远小于图片可容纳量,偏差极小。


几种隐写术比较:

方法 示例 埋入信息量 是否有损 鲁棒性 隐蔽性
隐写在频域上 有损 很强,抗各种攻击。 很强
隐写在空域上 无损
图种 copy /b xx.jpg+xx.rar xx.jpg 理论上无上限 无损 几乎无,像素和文件大小不匹配、扫描内容都可以发现

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blind_watermark-0.0.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blind_watermark-0.0.1-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file blind_watermark-0.0.1.tar.gz.

File metadata

  • Download URL: blind_watermark-0.0.1.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for blind_watermark-0.0.1.tar.gz
Algorithm Hash digest
SHA256 7fbcd65a1e0a40a52ab94f7ba54043ef46b79b62de30301f2b2ab14a7b66fc2b
MD5 efa50b3ceabbf95131b25b60f6339e17
BLAKE2b-256 bd2c5605630a68d258db47f35531716bee6359768bf080406c4f9eefe9d24fd2

See more details on using hashes here.

File details

Details for the file blind_watermark-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: blind_watermark-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for blind_watermark-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0dc9426245b58b82f5aef1a333a4655bf992c072ec4a687a3fbd9f80c9150b22
MD5 e4d07219a2ad7b5ac95e9e214242d072
BLAKE2b-256 679152b0ad4f9771a10e405316050e87d3dc8bac4a50dd7ff15761ff430ada7c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page