1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/guofei9987-blind_watermark

Клонировать/Скачать
README_cn.md 7.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 19:58 018e12b

Основываясь на частотной области, цифровые слепые водяные знаки

PyPI Build Status codecov License Python Platform stars fork Downloads Discussions

Документация:

Установка

pip install blind-watermark

или установка последней версии разработки:

git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .

Использование

В командной строке

  • Встроить водяной знак: 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

Исходное изображение + водяной знак = изображение с водяным знаком

!origin_image (docs/исходное изображение.jpeg) + '@guofei9987 开源万岁!' = !изображение с водяным знаком (docs/изображение с водяным знаком.jpg)

См. пример кода (/examples/example_str.py).

Встроить водяной знак

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))

Извлечь водяной знак

bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')
print(wm_extract)

Output:

@guofei9987 开源万岁!

Различные атаки и их результаты

Атака Изображение после атаки Извлечённый водяной знак
Поворот на 45 градусов !поворот на 45 градусов (docs/поворот на 45 градусов.jpg) '@guofei9987 开源万岁!'
Случайный снимок экрана !случайный снимок экрана (docs/случайный снимок экрана_восстановление.jpg) '@guofei9987 开源万岁!'
Множественное перекрытие !множественное перекрытие (docs/множественное перекрытие.jpg) '@guofei9987 开源万岁!'
Горизонтальное вырезание !горизонтальное вырезание (docs/горизонтальное вырезание_заполнение.jpg) '@guofei9987 开源万岁!'
Вертикальное вырезание !вертикальное вырезание (docs/вертикальное вырезание_заполнение.jpg) '@guofei9987 开源万岁!'
Масштабирование !масштабирование (docs/масштабирование.jpg) '@guofei9987 开源万岁!'
Добавление соли и перца !добавление соли и перца (docs/добавление соли и перца.jpg) '@guofei9987 开源万岁!'
Изменение яркости !изменение яркости (docs/изменение яркости.jpg) '@guofei9987 开源万岁!'

Встраивание изображения

Пример кода (/examples/example_str.py):

Встроить:

from blind_watermark import WaterMark

bwm1 = WaterMark(password_wm=1, password_img=1)
# read original image
bwm1.read_img('pic/ori_img.jpg')
# read watermark
bwm1.read_wm('pic/watermark.png')
# embed
bwm1.embed('output/embedded.png')

Извлечение:

bwm1 = WaterMark(password_wm=1, password_img=1)
# notice that wm_shape is necessary
bwm1.extract(filename='output/embedded.png', wm_shape=(128, 128), out_wm_name='output/extracted.png', )
Атака Изображение после атаки Извлечённое изображение водяного знака
Поворот на 45 градусов !поворот на 45 градусов (docs/поворот на 45 градусов.jpg) !поворот на 45 градусов_извлечённое изображение водяного знака (docs/поворот на 45 градусов_извлечённое изображение водяного знака.png)
Случайный снимок экрана !случайный снимок экрана (docs/случайный снимок экрана_восстановление.jpg) !случайный снимок экрана_извлечённое изображение водяного знака (docs/случайный снимок экрана_восстановленное_извлечённое изображение водяного знака.png)
Множественное перекрытие !множественное перекрытие (docs/множественное перекрытие.jpg) !множественное перекрытие_извлечённое изображение водяного знака (docs/множественное перекрытие_извлечённое изображение водяного знака.png)

Скрытый водяной знак также может быть двоичными данными

Пример кода (/examples/example_bit.py)

Например, если вы хотите встроить следующие двоичные данные длиной 6:

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

Встраивание водяного знака

# Помимо встраивания изображений, можно также встраивать битовые данные
from blind_watermark import

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/guofei9987-blind_watermark.git
git@api.gitlife.ru:oschina-mirror/guofei9987-blind_watermark.git
oschina-mirror
guofei9987-blind_watermark
guofei9987-blind_watermark
master