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

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沉淀

第一种:

文字隐写术-盲水印研究笔记_第1张图片

第二种:

文字隐写术-盲水印研究笔记_第2张图片

第三种:

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

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

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

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

文字隐写术-盲水印研究笔记_第3张图片

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

二. 目前python 效果测试

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

三. 云服务测试

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

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

总结笔记

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

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

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

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

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

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

测试效果示例

常用案例测试:

文字隐写术-盲水印研究笔记_第4张图片

实际案例测试:

文字隐写术-盲水印研究笔记_第5张图片

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

文字隐写术-盲水印研究笔记_第6张图片

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

文字隐写术-盲水印研究笔记_第7张图片

参考资料

隐性水印或是叫盲水印软件介绍 (原创)隐性水印或是叫盲水印软件介绍-第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

你可能感兴趣的:(图像处理,opencv,java,计算机视觉,傅立叶分析,算法)