本发明涉及图像分析处理,具体地说是一种双图层混合水印嵌入方法、设备及介质。
背景技术:
1、图像水印技术是指在数字图像中嵌入一种信息,用于标识图像的所有权信息、来源信息或其他相关信息。与传统的纸质水印类似,数字图像水印可以隐藏在原始图像中,以不影响观赏图像的质量和内容。图像水印技术在实际应用中具有广泛的应用场景。例如,它可以用于数字作品的知识产权保护,嵌入版权信息如所有者信息、授权信息等,以保护图像的版权权益。此外,在个人隐私保护方面,图像水印技术也展现了一定的应用价值。
2、近些年来,随着网络和多媒体技术的发展,在给人们的生活和工作提供了很多的便利,同时也使侵犯原始作品知识产权的现象变得越来越普遍。如何有效地保护图像信息的安全成为当前研究的热点。图像水印作为信息隐藏技术的重要分支,也是版权保护的重要手段。图像水印通过在原始信息中嵌入秘密信息——水印来证明该信息的所有权或完整性,以此来抵制对数字作品的盗版或篡改。而目前的图像水印技术存在压缩、水印字体模糊、截屏泄露客户信息等问题。
技术实现思路
1、本发明的技术任务是提供一种双图层混合水印嵌入方法、设备及介质,来解决目前的图像水印技术存在压缩、水印字体模糊、截屏泄露客户信息等的问题。
2、本发明的技术任务是按以下方式实现的,一种双图层混合水印嵌入方法,该方法具体如下:
3、对原始图像进行小规模变换得到原始图像的初步轮廓;
4、将需要进行水印内容嵌入原始图像做相应的rgb三基本色变换,获取水印图像;
5、利用图层的混合固定算法进行重构,并通过自定义相机获取双图层混合水印图像。
6、作为优选,水印图像是指两个图层的混合,图层的混合固定算法具体如下:
7、将a作为不透明度:混合色=前景色 * a + 背景色 *(1 - a);
8、推断背景色:背景色r = (混合色r - 前景色r * a) / (1 - a);
9、背景色g = (混合色g - 前景色g * a) / (1 - a);
10、背景色b = (混合色b - 前景色b * a) / (1 - a)。
11、作为优选,通过自定义相机获取双图层混合水印图像具体如下:
12、经过水印原理剖析,通过手机相机硬件中的camera类自定义相机实现水印渲染功能,调用手机照相机,通过初始化surfaceholder得到setpreviewdisplay(surfaceholder),实现取景的预览;
13、通过camera.parameters控制相机的参数,如对焦,闪光灯等,借助surfaceview绘制应用层内嵌浮层的类,预览镜头的取景;surfaceholder持有一个展示的surface的抽象接口;允许控制surface的尺寸和格式,编辑surface中的像素和监听surface的改变;surfaceholder.callback控制对应接口的客户端能够接收surface改变的信息;
14、手机对自定义相机发起拍照请求时,内置默认的请求码或自定义请求码,并通过构造器保存,即onactivityresult通过构造器getrequestcode()方法区分返回拍照图片;
15、使用canvas画布获取原始的图片地址转化成为 sourcebitmap,使用canvas将sourcebitmap作为底片,再将水印bitmap画上去,将底片与水印bitmap二者合并的bitmap,保存成jpg格式水印图片即可。
16、更优地,取景预览的设置是通过继承surfaceview,派生一个自定义的camerapreview,同时实现surfaceholder.callback接口,便于对surface进行控制;camerapreview里面涉及到预览主要的逻辑,包括对焦模式或闪光灯模式的相机参数,再在oncreate()方法里,将surfaceview加入设置好的布局容器中即可;
17、更优地,自定义相机发起拍照是通过调用takepicture(camera.shuttercallback shutter, camera.picturecallback raw,camera.picturecallback jpeg)方法,camera.shuttercallback 发生在照片刚被捕获的一瞬间,camera.picturecallback raw, camera.picturecallback jpeg)两个回调分别发生在原始的照片数据或/和压缩的jpeg照片数据;其中,拍照可能需要的时间比较长,所以自定义相机发起拍照采用异步方式,具体为:ui线程启动拍照后不等待结果,而是设置一个回调监听器picturecallback,当照片数据生成后会回调onpicturetaken方法,并将数据传入;若保存完图片后,继续拍照,则重置一下相机;拍完照,取景预览默认定格在取景页,取景页提供resetcamera()重置方法。
18、更优地,自定义相机提供canvas画布,获取原始图片地址,转化成为sourcebitmap;对于复杂的水印图片,把水印图片转化成一个view,再把view转成bitmap;其中每个像素军分解为 argb 四位信息(分别是 alpha, red, green, blue),作为标准的argb 编码方式,每一位都由一个从 0 到 255 的整形数字表示,其中作为人眼来说,最后一位色阶的细小变化是根本不会被观察到的,将水印的文字或图片信息编码为一串二进制的字符,将每个 argb 的值的最后一位清零,用二进制字符替换,达到了利用最后一位色阶储存隐藏的信息的作用;
19、将水印信息编码成二进制后,加上非二进制的前后缀用于识别程序检测,同时,为了让整张图片都被水印给覆盖,将水印信息循环地铺设在背景图片中,只要图片之中含有一个有效的水印信息,就能够成功地检测到。
20、作为优选,对双图层混合水印图像进行压缩,具体如下:
21、在android系统设备中图片是以bitmap形式存在的,bitmap所占内存,直接影响到了应用所占内存大小,首先获取bitmap所占内存大小,计算方式:图片长度 x 图片宽度 x一个像素点占用的字节数;
22、为了将取得的bitmap进行质量压缩,读取100%的图片bytearrayoutputstream对象;
23、获取100%的图片bytearrayoutputstream对象字节的大小(bytearrayoutputstream.size()),并判断字节大小与待压缩值的大小:
24、若100%的图片bytearrayoutputstream对象的字节大小大于待压缩值,则压缩获取0%的图片bytearrayoutputstream对象;
25、通过二分法不断找到[0,100]的任一个位置,得到最佳位置position ;
26、通过 bitmap.compress(bitmap.compressformat.jpeg, position,bytearrayoutputstream)获取bytearrayoutputstream对象,并获取bytearrayoutputstream对象的字节流返回即可。
27、作为优选,对双图层混合水印图像中水印字体进行优化,具体如下:
28、调整图片画布的分辨率:当创建水印bitmap时,确保view的尺寸与水印bitmap的尺寸一致,并通过设置图片画布的layoutparams使用质量缩放方法调整图片的尺寸;在使用bitmap.createbitmap()时,从原位图src复制出一个新的位图,和原始位图相同,确保使用高质量的缩放方法生成带有水印的图片;
29、使用bitmap createbitmap (int width, int height, bitmap.config config)方法根据参数创建新位图,通过适当的质量参数进行bitmap保存;其中width和height创建空位图,再用指定的颜色数组colors从左到右从上至下一次填充颜色;config用于指定位图“质量”,将bitmap保存为jpeg或png格式的图片时,确保使用适当的质量参数;其中,jpeg的质量参数范围是0-100,png是无损压缩,质量参数对其没有影响。
30、一种电子设备,包括:存储器和至少一个处理器;
31、其中,所述存储器上存储有计算机程序;
32、所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如上述的双图层混合水印嵌入方法。
33、一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的双图层混合水印嵌入方法。
34、本发明的双图层混合水印嵌入方法、设备及介质具有以下优点:
35、(一)本发明实现了在照片加水印信号方法重构形成双图层混合水印图片,水印元素基于自定义相机及帧布局元素生成,可以灵活设置水印设置位置、透明度等,操作简单易于实现,使水印元素可以较好地融入水印场景;
36、(二)本发明将需要保护的图片产品成果等的标识码文字以及购买者的信息等(称为水印信号)嵌入到目标图片中,嵌入的水印信号应当不降低原数据的质量、且在感觉上不易察觉,能够经受一定的攻击而不被清除;在一些对安全性要求较高的app应用中,会要求对所有的界面加上水印,防止截屏泄露客户信息,从而起到保护产品版权或完整性的一种技术,以解决图像作品版权保护问题;
37、(三)本发明通过水印原理剖析、通过自定义相机进行双图层混合水印、水印渲染性能测试及优化,获取底层的布局,在画布图层上添加一个水印信号文字,通过水印文字渲染由自定义生照相机拍照生成双图层混合水印图片;
38、(四)本发明借鉴jpeg压缩思想,并利用人类视觉系统和图像局部特点,提出一种新的用于图像处理的数字水印算法,用于图像处理的数字水印算法是在载体图像中嵌入数字水印信息,嵌入水印后的载体图像不影响其使用价值,通过图层的混合算法将不同的透明度与原图层进行混合;
39、(五)本发明通过手机帧布局将两张或多张图片的混合叠加,借助自定义相机对所需添加水印的实物取景,完成图层混合渲染,从而达到图片水印的效果,防止审核人员截图把内容外部扭曲的情况,虽然截图内容不是特别敏感,但是安全问题还是不能忽略,通过基于bitmap的双图层混合水印技术加上图片水印,对于审核人员截图等敏感操作有一定的提示作用。
1.一种双图层混合水印嵌入方法,其特征在于,该方法具体如下:
2.根据权利要求1所述的双图层混合水印嵌入方法,其特征在于,水印图像是指两个图层的混合,图层的混合固定算法具体如下:
3.根据权利要求1所述的双图层混合水印嵌入方法,其特征在于,通过自定义相机获取双图层混合水印图像具体如下:
4.根据权利要求3所述的双图层混合水印嵌入方法,其特征在于,取景预览的设置是通过继承surfaceview,派生一个自定义的camerapreview,同时实现surfaceholder.callback接口,便于对surface进行控制;camerapreview里面涉及到预览主要的逻辑,包括对焦模式或闪光灯模式的相机参数,再在oncreate()方法里,将surfaceview加入设置好的布局容器中即可。
5.根据权利要求3所述的双图层混合水印嵌入方法,其特征在于,自定义相机发起拍照是通过调用takepicture (camera.shuttercallback shutter, camera.picturecallbackraw, camera.picturecallback jpeg)方法,camera.shuttercallback 发生在照片刚被捕获的一瞬间,camera.picturecallback raw, camera.picturecallback jpeg)两个回调分别发生在原始的照片数据或/和压缩的jpeg照片数据;其中,自定义相机发起拍照采用异步方式,具体为:ui线程启动拍照后不等待结果,而是设置一个回调监听器picturecallback,当照片数据生成后会回调onpicturetaken方法,并将数据传入;若保存完图片后,继续拍照,则重置一下相机;拍完照,取景预览默认定格在取景页,取景页提供resetcamera()重置方法。
6.根据权利要求5所述的双图层混合水印嵌入方法,其特征在于,自定义相机提供canvas画布,获取原始图片地址,转化成为 sourcebitmap;对于复杂的水印图片,把水印图片转化成一个view,再把view转成bitmap;其中每个像素军分解为 argb 四位信息,作为标准的 argb 编码方式,每一位都由一个从 0 到 255 的整形数字表示,将水印的文字或图片信息编码为一串二进制的字符,将每个 argb 的值的最后一位清零,用二进制字符替换,达到了利用最后一位色阶储存隐藏的信息的作用;
7.根据权利要求1所述的双图层混合水印嵌入方法,其特征在于,对双图层混合水印图像进行压缩,具体如下:
8.根据权利要求1所述的双图层混合水印嵌入方法,其特征在于,对双图层混合水印图像中水印字体进行优化,具体如下:
9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至8中任一项所述的双图层混合水印嵌入方法。
