fire-keeper / blindwatermark Goto Github PK
View Code? Open in Web Editor NEW使用盲水印保护创作者的知识产权using invisible watermark to protect creator's intellectual property
License: GNU General Public License v3.0
使用盲水印保护创作者的知识产权using invisible watermark to protect creator's intellectual property
License: GNU General Public License v3.0
I would like to request a written tutorial on how to use the software in English. And also an English localization of the software could be very nice.
RT,将水印加到透明图之后,截图是还原不了了! 怎么办
如题,如果是opencv,使用Pip install . 会报错,不知我的理解是否正确 ?
彩色图的水印如何操作呢
密钥和签名个人认为可以使用RSA这一非对称加密形式,只要私钥保存在太太手里就能有效防止反向破解,可以使用openssl实现
甚至可以使用Let's Encrypt或自签名GPG证书生成密钥和签名,保证密钥的公信力
算法方面也可以尝试对图片进行FFT之类的操作做水印
RT
是跟图像隐写相关的吗,之前看过一下图像隐写,加密这部分一直不行
感谢作者,感觉还挺好用的。
代码还没细看,先跑了点测试。然后有些问题请教一下。
cv2.imwrite(output_filename, img_data, [int(cv2.IMWRITE_JPEG_QUALITY), 90])
png也有对应的IMWRITE_PNG_COMPRESSION,但那个有损得比较厉害,不太用到。
jpg的还是挺常用的。
显然大图包含信息更多,还原更精准。(横坐标为jpg品质,纵坐标为mod)
大图有好一些,但优势不明显。(个人理解是承载信息的范围和信息本身在同比增加,压缩之后干扰程度也就差不多)
接合上一条,也许水印可以有一个上限,比如128的bitmap,足够承载较多的内容。
这里都是256的原图,分别用了32的水印和128的水印,明显128的品质更好,但block少了。
我的理解是block越多,单个block就越小,能承载的信息越少,所以解码质量越低。
这里我源码还没细看,请问block在这里的作用是什么?从原图反解码的效果来看是越少品质越好,那block增加是能实现什么效果呢?防遮挡,多处采样比较吗?
读完源码自答一下
block有一个比较隐蔽的问题是配合dwt,要凑到8px,因为jpg是按8px来压缩的,也就是block*(2^dwt_deep)刚好。
block过小,运算量几何级数增加,效率过慢。而且block过细,会导致画面有明显噪点感。
block过大,解高压缩的jpg水印会出问题。
jpg60时,block数量的宽高,达到水印2倍后解水印质量不错。比如画布1024,dwt1次,有效画布512,block4,可记载宽度128,如果用来记载32的水印,就达到了4:1,解水印效果就很好。
盲水印实际指的是提取时不需要原图的水印,可以参考这一篇的Introduction部分:
Barni M, Bartolini F, Cappellini V, et al. A DCT-domain system for robust image watermarking[J]. Signal processing, 1998, 66(3): 357-372.
包括具体的拆分block之类的也是一样的
透明部分会变成白色/黑色
不知这个方法是否有文献出处?没有的话完全可以发一篇文章了!并且如果是原创的话建议给这个方法取个名字,加个版本号,甚至申请个专利什么的
我多年前有实现这个功能的想法,但是没有相关的知识储备,被您做出来了真是太棒了!以后有机会我会常识把它移植到C++/C#进行高效处理!
为何裁剪后必须还原到原图大小才能提取水印呢,填补后图片的像素值已经变了呀
你好,就是我在测试破解者在已有水印上叠加水印的时候(readme里面写的那种情况)用自己的参数没成功的能从B中提取出来(被叠加过后的水印图中)
RBG其中某一两个通道的值总体增加一点,再加上25-50%的jpg压缩,在肉眼较难分辨的情况下,可以对水印造成极大破坏。
如果想要提高抵抗性,就不能发未压缩过的原图,得先压成AV画质打上隐水印再发出去
ValueError: operands could not be broadcast together with shapes
众所周知,我们现在所了解到的的水印只能生效一次,是因为其密钥是对称的,只要有一个key即可加解密;正如大多数对称加密算法(如AES)的特性。
那么能否结合非对称加密的特性(比如ECC,RSA)等方式加密,对于每一个创作者生成一个私钥,然后发布一个给与大家验证的公钥,由于私钥加密的东西只有公钥可以解开,公钥加密的东西只有私钥能解开,就解决了上述的一次性加密问题。
具体原理我认为可以参考一下PGP;但请各位创作者务必保存好你的私钥。
1.导入图片 多文件 (测试文件数量4)
2.导入水印 单文件
3.嵌入时 会按导入图片数量 多次弹出 【参数错误请参考关于中的公式修改参数,使其满足公式】
并 在后台提示 【水印的大小超过图片的容量】
4.在关闭警告时 闪退
修改了图片尺寸的时候,就无法提取了。。
Traceback (most recent call last):
File "bwm.py", line 57, in
bwm.extract(args.ori_img,args.output)
File "/Users/qianhuang/workspace/git_repos/BlindWatermark/BlindWatermark/BlindWatermark.py", line 314, in extract
cv2.imwrite(out_wm_name,extract_wm.reshape(64,64))
ValueError: cannot reshape array of size 1024 into shape (64,64)
这个光看代码太麻烦了......就想请问下有没有这个的相关链接或者相关资料(或者整体大致怎么弄的)
请问可以对打印和拍摄后的图片提取水印吗?
感谢开源!对您的项目很感兴趣,未来是否有可能添加视频处理模块将输入延伸到视频?另:可以提pull request吗?
我可以提供劳动力上的支持
When an input image is scale towards a different dimension (even remaining aspect ratio) the software is unable to extract the watermark. But when the image is scaled back to its original dimension (even being blurry) the watermark can be recovered. Would there be a way to be scale invariant? For example by using features such as SIFT/SURF/ORB as landmarks for embedding?
你要不考虑使用非对称加密
GUI版闪退,使用图片:https://mysteriouspreserve.com/assets/images/sources/origin.jpg
水印:https://mysteriouspreserve.com/assets/images/sources/mark.png
python2.7: File "bwm.py", line 6
SyntaxError: Non-ASCII character '\xe5' in file bwm.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Python 3.7:ModuleNotFoundError: No module named BlindWatermark
已知:如果工作目录存在中文字符,则GUI版bwm检测参数是否符合公式时会崩溃。
只有Windows版Mac用户表示一言难尽
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.