文字隐写术-盲水印研究笔记

article/2025/11/7 13:47:06

gitee 开源代码(java)

shuiyin: blind watermark 盲水印技术实现 java 实现版权保护 - Gitee.comicon-default.png?t=M4ADhttps://gitee.com/chejiangyi/shuiyin/tree/master

需求概述

研究盲水印对于版权保护的效果和能力

研究尝试概述

水印实现: 大部分的python或者java算法都基于频域的盲水印效果。

涉及的算法: 傅里叶变换。

开源相关: 大部分是python算法居多,也有java的一些傅里叶实现,少部分其他语言实现。

涉及的框架: opencv (用来处理图片)

图片盲水印方式

1. 二维码(本质是图片) 盲水印(未尝试)

2. 图片盲水印(初步尝试,未深入,初步效果不佳)

3. 文本盲水印(已尝试)

图片盲水印:初步尝试一个傅里叶算法,发现在截图等复杂场景干扰下,似乎没有文本盲水印抗干扰能力强;但是没有深入印证其他多种算法效果。

文本盲水印:经过几轮尝试,发现文本盲水印会效果好,但是在一些场景下图片会有一些失真(对比原图),色泽会变浅。

在其他抗干扰(截图,缩放,涂改)情况下效果还可以。图片失真的情况,在不同傅里叶算法中,效果不一样,有些不失真,但是效果抗干扰能力差。

文本盲水印尝试详解

一. 目前java 有三种demo沉淀

第一种:

第二种:

第三种:

整体算法代码行不多,核心在于算法本身,具体算法实现原理网上论文很多,但是真正能商用的效果不好。

dct 一般用于图片算法,dft 一般用于文本算法,当然文本也可以以图片的方式显示中文。

三种总体效果都差不多,但是在干扰情况下差异还是很大的。

引用网上的一段盲水印的注意点描述:

目前没有用真实的图片效果和实际场景做测试,从而排除额外的一些情况,所以没办法确定真实的场景是否有效,或者是否可以规避一些不可能存在的实际场景。初步与产品确认,测试效果还可以,但不是很理想,比如一些截图30%,20%的情况下,部分图片信息无法有效还原“盲水印”。一些非原图处理(比如采用微信和飞书截图)之后,图片变成jpg压缩,此时盲水印可能无法有效还原检测,原图或者加水印后的图尽量都使用png或者bmp。加水印后,图片会有略微明显的色泽变化(但是其中有些算法好像变化不大,没有大范围细节测试,但是这种情况带来抗干扰能力差较多)。

二. 目前python 效果测试

python 是目前盲水印算法最多的案例和demo,在github上发现一些python算法一般加的是图片盲水印(非文字盲水印),但是没有详细测试效果(主要是没精力)。网上fork数或者关注数多的盲水印,实际测试效果并不佳。比如:https://github.com/guofei9987/blind_watermark 这个盲水印可以支持文字隐藏,但是实际进行截图和干扰的时候发现文字水印无法如期提取,跟实际描述的文档有较大差异,可能是姿势不对。其他的水印效果未深入,未来有更多精力后再深入投入实际场景做验证。

三. 云服务测试

目前云服务中支持的,主要有七牛云和腾讯云,七牛云更偏图片处理,所以用七牛云做测试(腾讯云未测)但是实际效果也不是很理想。

七牛云盲水印恢复靠的是原始图片(可能是通过水印图和原始图对比),从而恢复水印(这种手法可能要与产品商量实际场景行不行),同样也有version 3第三种算法实现盲水印,可以在水印图中提取水印。经过测试version 3的实现,在图片截图和缩放等干扰情况下,恢复水印的能力会差很多,丢失的信息更多,不如网上的一些开源算法,所以云服务效果不尽如意。

总结笔记

盲水印总体效果不是很成熟,但是作为辅助版权验证应该还是可以的(除了图片会增加一些大小),关键还是在于实际业务场景。

同时自身也不是图片处理相关专家,很多细节和参数也不敢调整,也无法真正有效结合实际业务场景发挥和调优算法。

所以真正落地盲水印,后续需要在几个方面努力:

1)需要专职的一名图片处理专家或者外聘专家支援。

2)大量的实际场景的图片和用户干扰的案例图做多次验证。

3)通过机器学习进行算法参数调优。

测试效果示例

常用案例测试:

实际案例测试:

盲水印部分截图干扰测试:

盲水印部分截图/缩放干扰测试:

参考资料

隐性水印或是叫盲水印软件介绍 (原创)隐性水印或是叫盲水印软件介绍-第1页-宁波猫的窝

有意思的数字盲水印的简单的实现 有意思的数字盲水印的简单的实现。 - Imageshop - 博客园

opencv Home - OpenCV

隐写术 隐写术-数字水印的原理、实现及应用 - 简书

隐藏水印几个注意点 图片傅里叶变换加入盲水印Python源代码实现_健康成长天线宝宝的博客-CSDN博客_盲水印原理

java 水印代码

https://github.com/ww23/BlindWatermark/

https://github.com/maohuihua123/BlindWatermark

https://github.com/aaronwong1989/blind-watermark

https://github.com/hanbings/moe-mark

python

https://github.com/guofei9987/blind_watermark

jpg截图等场景下几乎无法还原。

https://github.com/fire-keeper/BlindWatermark

非文字水印

第三方云服务

七牛云 盲水印处理(watermark)_API 文档_智能多媒体服务 - 七牛开发者中心

腾讯云 对象存储 盲水印概述-开发者指南-文档中心-腾讯云-腾讯云

by 车江毅

2022-6-13


http://chatgpt.dhexx.cn/article/3HTeOLeQ.shtml

相关文章

web系统添加盲水印

前言 为增加系统安全性,避免重要敏感信息通过截图方式泄露,对web页面增加盲水印标识,标注系统名称,登陆人,当前时间等信息,这里的盲水印指肉眼不可见的html水印 增加水印 引入watermark.js调用 watermar…

【OpenCV 例程 300篇】219. 添加数字水印(盲水印)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程 300篇】219. 添加数字水印(盲水印) 8.2 添加数字盲水印 数字水印,是指将特征信息嵌入音频、图像或是视频等数字信号中。 数字水印分为明水印和盲水印(blind watermark&#…

照片里的盲水印

这个题是安恒月赛里面的一道misc类型的题,在CTF中misc所谓最考验你的脑洞和检验你的赛事水平(赛棍???) 但是这个方面还是要看一下,就当做开发脑力了。 题目:暴力可解 题目文件 下载…

[python] 基于blind-watermark库添加图片盲水印

blind-watermark是一个能够给图片添加/解析基于频域的数字盲水印的Python库。图像水印image watermark是指在图片里添加文本或图形,以标记图片的来源。但是图像水印会破坏原图。因此另外一种水印形式,即图像盲水印blind image watermark在实践中更多地用…

图片盲水印软件

bulid_watermark_gui Blind&Invisible Watermark (图片盲水印,提取水印无须原图!) 增加图形界面 项目地址:github开源 软件下载地址:无需环境软件下载 how to use pip install -r requirements.txt 运行main.py…

隐写术(盲水印):从入门到出门

0. 前言 我在做 Blind Watermark 这个库的时候,翻阅了大量材料,学到了关于隐写术、盲水印的很多知识,现在梳理了一遍,发出来。 本文结构: 简介:隐写术的应用场景、分类、特点隐写术:介绍几种…

图片隐写,盲水印,加密logo

1.定义 隐写术算是一种加密技术,权威的 wiki 说法是“ 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。” example: 钱图(钱上面的水印&#xff0…

CTF盲水印详解

原创稿件征集 邮箱:eduantvsion.com QQ:3200599554 黑客极客技术、信息安全热点安全研究分析等安全相关的技术文章 稿件通过并发布还能收获 200-800元不等的稿酬 前言 在CTF杂项题型中,盲水印的出现频率是相当高的,但大多数人处于…

盲水印(Blind-WaterMark)

盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 这类盲水印是怎样实现的呢?原理并不复杂&…

Windows系统通过CMD连接MySql

1.按压WindowsR快捷键后输入"cmd" 2.点击"确定"按钮后打开命令行 3.通过输入"cd"MySql安装的bin目录,按压"Enter"后进入MySql安装的bin目录 4.输入"mysql -h localhost -u root -p",此处-h后为对应ho…

cmd中无法连接MySQL

本人电脑是win10系统,安装的是MySQL5.7版本的,最近在登录MySQL的时候老师出现下面的错误,有的时候重启电脑耶也会出现这样的情况 1.先检查你的环境变量是否配置好了; (如果没有配置好,请参考一下的步骤&am…

如何使用cmd安装MySQL

步骤一: 在官网MySQL: 点击download显示下载页面: 点击 MySQL community download(这个适个人合开发者,免费的,之前的MySQL Enterprise Edition是企业版付费需要 ,MySQL cluster CGE 是免费版但…

navicat或者cmd远程连接mysql数据库

问题产生: 一般情况下,MySql数据库是不允许进行远程连接操作的,强行使用Navicat连接会报出下面的错误。 服务器连接错误主机XXX不允许连接到此的MySQL的服务器 方法步骤: 1、远程登录授权 在服务器端进行操作,下…

cmd窗口无法连接MySQL的解决方法

1.将下载Mysql中的bin目录的路径配置到Path环境变量中; 2.winR,输入services.msc,到服务窗口找到mysql服务,其中mysql的服务名可能是mysqlxx而不是mysql,比如我的是mysql80,找到之后点击,然后在…

cmd启动MySQL

命令行启动MySQL step1:打开命令行:win R step2:输入如下命令,root与1234分别为MySQL的用户名与密码 mysql -uroot -p1234出现如下信息即为启动成功 如果连接失败 显示如下错误信息: ERROR 2003 (HY000): Cant …

cmd的mysql命令_MySQL cmd命令

1.MySQL 登录: mysql -h localhost -u root -p test Enter password: ***** -h 指定数据库主机名,默认时登录主机。-u指定用户名(即安装数据库时的设置的用户名)。-p指明登录需要密码,如果没有密码,可省略-p参数。 -p 后面的test并不是密码,而是要登录的数据库名。如果-p后…

cmd命令创建连接MySQL数据库

欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。 一、连接MYSQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码1、 连接到本机上的MYSQL。 首先打开DOS窗口&#…

解决在cmd情况下无法连接MySQL情况(无脑操作教程)

在输入外部命令:mysql -u root -p的时候,出现下面的情况: (网图,侵删) 问题分析:可能是MySQL路径问题没有解决; 解决方法:1.打开电脑高级设置; 2.点击环境变…

cmd控制台连接MySQL数据库_如何利用CMD连接本机mysql数据库

从事数据工作的IT人员,很多人都会与Mysql数据库打交道。因为mysql数据库是一个开源的数据库,利用它来学习数据库的人也有很多。笔者今天就给大家分享一下,安装好mysql之后,怎么利用CMD连接本机mysql数据库。 1.首先第一步是需要我…

cmd指令连接mysql数据库,以及创建数据库与表

cmd指令连接mysql数据库,以及创建数据库与表 1, 打开命令提示符cmd(直接搜索cmd回车) 2,进入mysql,在cmd命令行输入mysql -uroot -p,然后输入你的mysql密码,成功后进入数据库 3,查看mysql中的…