Open Erimus-Koo opened 4 years ago
假设:
水印 = [32, 64, 128]
block = [2, 4] # 测试用1的话好像完全不能抗涂抹
信息承载范围 = 源图 / block
常数 = 信息承载范围 / 水印
然后如果水印上限128,block上限4的话,就对源图小于1024以内的部分,写一点适配规则自动取水印大小和block。
再用这个 常数+jpg品质,出一套图,可能就能map出一个mod值。这样自动取mod也就有了。
大致的一个想法,不知道行不行得通。考虑在作者的基础上套一层自动参数的壳试试。
因为现在都是正方的在试,条状截图不知道会怎么样。现在block好像只接受两个相同的参数,不晓得条状图还原会不会有问题。有空我再试试。
测了下超窄图,128x2048,像素同512x512。
宽高1:16,看来条状图没什么问题。
原图
使用的水印图
测试结果 test_plot_src512_wm64_block4_jpg60-100_mod16-32
使用反色(黑底白字)水印的结果 test_plot_src512_wm64b_block4_jpg60-100_mod16-32
使用纯黑白原图(接近bitmap)的测试结果 testb_plot_src512_wm64_block4_jpg60-100_mod16-32
使用纯黑白原图(接近bitmap)且黑底白字的测试结果 testw_plot_src512_wm64_block4_jpg60-100_mod16-32
使用纯黑白原图(接近bitmap)且黑底白字+黑底白字水印的测试结果 testw_plot_src512_wm64b_block4_jpg60-100_mod16-32
好像在哪里看到一眼说明说主要取Y通道,就试了试。 LAB,其中L也是明度。明度通道空白,另外两个通道用了同样的图。 特地看了下YUV输出时的Y,的确也是纯白。
原图
测试结果 noy_plot_src512_wm64_block4_jpg60-100_mod16-32
noy_plot_src512_wm32_block4_jpg60-100_mod16-32
我看懂了代码,个人理解是这样的:
加了个jpg压缩的参数
png也有对应的IMWRITE_PNG_COMPRESSION,但那个有损得比较厉害,不太用到。
jpg的还是挺常用的。
做了一些测试
同水印大小不同源图大小
水印刚好是图源1/8
block的影响
同样源图用到最大水印 block4->1
同样源图/水印/仅改变block
其他一些问题
考虑自动根据源图生成参数