暗水印——空域:二值化图像水印(看不见我吧 啦啦啦~)
引言
随着计算机和网络技术的飞速发展,信息的安全保护问题日益突出。数字图像、音频和视频等多媒体数字产品愈来愈需要一种有效的版权保护方法——水印技术,通常用于保护知识产权、防止未经授权的访问、作弊等。
广义上可以把水印技术划分为四大类:图像水印、视频水印、音频水印和文本水印。这些水印技术都有其独特的特点和应用场景,需要根据具体的数字媒体保护需求进行选择使用。
技术与实践意义
本文以“多通道、多层水印”为目标,旨在让操作人员通过自定义的方式,制作水印信息,深入体验水印“添加”、“提取”的全过程,及水印抵抗攻击手段后的“鲁棒性”对比。
二值化图像水印算法
水印添加
1. 通过 canvas 将原图转化为 argb 数组,同时用 canvas 绘制同等大小的水印图像,同样转化为 argb 数组;
2. 将原图的 argb 中的 red 位置元素的最后一位舍去(red 取值为 0~255)即偶数不变,奇数-1;
3. 判断水印图像的同一像素点的元素的 alpha 的值是否为 0,不为 0 说明当前像素点有文字像素存在, 将原图的 argb 中的 red 位置元素的最后一位置为 1,即原值+1;
4. 将原图的改变后的 argb 数组重新写入 canvas 中并生成 base64 图像。
提取水印
遍历修改后的图的 argb 数组,如果 red 位置为奇数(最后一位为 1), 则将对应位置的水印像素点 rgb 置为 255,否则置为 0,alpha 位置都是 255, 然后将生成的水印 argb 数组通过 canvas 显示在 img 中。
工程效果展示
水印的添加与提取
本文以一个落地的简易数字水印系统为例。系统可以定义水印类型,上传图像、文本、音频等,生成可见或不可见的水印,之后可以提取出水印信息。通过一些攻击手段验证水印算法的鲁棒性,如 PS 等。
用户输入用户名及手机号,验证通过后,即可进入系统界面,所添加的水印信息来源于用户名及手机号,如下图:
水印的鲁棒性测验
用户通过一些攻击手段可以验证水印算法的鲁棒性,如 PS 等,主要有二十种攻击操作的测试图片,测试素材如下图:
这里列举暗水印——空域算法中图像色相+20 的攻击实验:
以上是对系统操作的一个简易步骤说明,此算法计算复杂度相对较低;对图像视觉效果影响很小;但鲁棒性较低,对比明水印,效果还是可观的。
作者:京东物流 陈雨
来源:京东云开发者社区
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c91c6dc7178e602ef51abdaa】。文章转载请联系作者。
评论