基于GPU的视频隐形水印嵌入方法及系统与流程

文档序号:30328313发布日期:2022-06-08 04:56阅读:255来源:国知局
基于GPU的视频隐形水印嵌入方法及系统与流程
基于gpu的视频隐形水印嵌入方法及系统
技术领域
1.本发明涉及视频水印嵌入技术领域,特别涉及一种基于gpu的视频隐形水印嵌入方法及系统。


背景技术:

2.目前市场的视频水印主要分为明文水印和隐形水印。明文水印的嵌入方式主要是在视频画面中的固定坐标位置添加logo标识来表明原创视频的所有者,其缺点是显示在视频画面上的水印一方面容易被定位攻击,另一方面影响了大众客户的观看体验。与明文水印不同的是,隐形水印一般是添加在整个页面上的,并且隐形水印一般是可不见或很难看到的,这样其就不容易被定位攻击,且不会影响到用户的观看体验。
3.目前,常见的隐形水印有以下几种。第一种是将水印数据信息封装到视频的前缀或后缀存储区域,这种方法的优点是隐形水印嵌入速度快,运算量小,因为它不会对视频原始数据进行处理,缺点在于被盗用翻拍时若重新编码存储,则水印会丢失,所以这种隐形水印方案很少使用。第二种是通过修改视频帧的像素值,如直接修改最低有效位的数据,即lsb(least significant bit),这种修改方法对视频的视觉影响很小,但该方式经过有损压缩后,嵌入后的水印信息损失较大。第三种是通过对原始视频数据进行频域变换之后,再进行嵌入处理,也是现在主流的隐形水印算法,比如离散余弦变换(dct),离散小波变换(dwt)以及奇异值分解(svd);由于人眼对图像中不同频率的信号敏感程度不同,在频率域加水印有助于控制水印的鲁棒性以及图像的失真度;但水印数据所属的频率范围越低,鲁棒性越高,与此同时图像失真也越大,反之亦然;因此大部分实现会选择在中频范围内添加水印。对于第二、三种方案而言,由于需要对视频每一帧全局都进行处理,导致处理速度很慢,对于一定时长的视频,往往需要更多的时间去完成水印嵌入。


技术实现要素:

4.本发明的首要目的在于提供一种基于gpu的视频隐形水印嵌入方法,能够快速的实现视频水印的嵌入。
5.为实现以上目的,本发明采用的技术方案为:一种基于gpu的视频隐形水印嵌入方法,包括如下步骤:s100、根据gpu型号确定其处理数据的最佳格式;s200、将视频数据使用gpu解码成该最佳格式得到多帧视频图像;s300、将隐形水印数据转换成该最佳格式并与每一帧视频图像进行叠加;s400、将添加水印后的多帧视频图像在gpu的编码芯片中进行编码得到含有隐形水印的视频数据。
6.本发明的另一个目的在于提供一种基于gpu的视频隐形水印嵌入系统,能够快速的实现视频水印的嵌入。
7.为实现以上目的,本发明采用的技术方案为:一种基于gpu的视频隐形水印嵌入系统,包括图片转换单元、图片存储单元、视频解码单元、数据叠加单元以及视频编码单元;所述的图片转换单元用于在gpu显存中将水印矩阵图转换成nv12格式,图片存储单元用于存
储转换后的图片数据,视频解码单元用于在gpu编解码芯片中将原视频解码为nv12格式,数据叠加单元用于在gpu显存中将水印和视频的nv12数据进行叠加操作,视频编码单元用于对修改后nv12数据流在gpu编解码芯片中编码得到视频信息并输出。
8.与现有技术相比,本发明存在以下技术效果:通过在视频的操作层面上进行水印的嵌入,在gpu中将视频解码得到nv12数据,再对nv12数据进行简单的计算,最后对nv12数据编码即可得到嵌有水印的视频,整个嵌入过程非常的简单,处理速度快,相对于传统的水印嵌入方法快了很多。
附图说明
9.图1是本发明的流程示意图;图2是本发明的原理框图。
具体实施方式
10.下面结合图1至图2,对本发明做进一步详细叙述。
11.参阅图1,一种基于gpu的视频隐形水印嵌入方法,包括如下步骤:s100、根据gpu型号确定其处理数据的最佳格式;s200、将视频数据使用gpu解码成该最佳格式得到多帧视频图像;s300、将隐形水印数据转换成该最佳格式并与每一帧视频图像进行叠加;s400、将添加水印后的多帧视频图像在gpu的编码芯片中进行编码得到含有隐形水印的视频数据。cpu需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理,这些都使得cpu的内部结构异常复杂;而gpu面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。本案中,正是利用了gpu的这个特性,通过上述步骤,可以实现在gpu中向视频数据中嵌入水印,这样可以极大的提高水印的嵌入速度。由于不同厂家生产的gpu,底层设计有所不同,其能处理的最佳数据格式也有所不同,因此这里需要先确定gpu能处理的最佳格式,以保证后续都能针对该最佳格式进行。
12.传统编解码通过代码将视频编码和解码的标准实现,然后放在cpu上面进行执行,导致速度相对比较缓慢。而gpu的编解码是通过asic来实现,而asic的优点就体现在放弃通用性追求速度,也就是说用电路将h264/hevc的标准实现出来,而这部分电路只能用来做编解码,不能进行其他操作。而且在gpu中进行数据叠加可以拥有多核并行进行操作。尽管cpu也是拥有多核操作,但是cpu在计算机中需要处理的事情非常繁杂,会损失一部分计算能力。不仅如此,在隐形水印叠加方面,cpu既要对视频数据进行解码,又要对内存中的数据进行处理,需要消耗很多计算单元和寄存器,导致整个流程变得缓慢。而在gpu中,主要在显存进行统一处理,并且每个cuda核心和编解码芯片的数据传输相对于cpu与内存的传输速度也是非常快。因此,采用上述gpu进行水印嵌入的操作,可以极大的提高视频水印的嵌入速度。
13.进一步地,所述的最佳格式为i420、yv12、nv12、nv21中的任一种,这几种是较为常见的数据格式,当然也可以是其他的数据格式,具体需要根据gpu来确定。
14.一般来说,待嵌入水印的视频都是视频文件,因此在进行水印嵌入的开始和结束,都需要进行视频文件和视频数据的转换。本发明中优选地,所述的步骤s200中,视频数据通
过如下方式获得:s210、读取待嵌入水印的视频文件的后缀名,判断文件的封装格式;s220、根据文件的封装格式,从视频文件中分离得到音频数据和视频数据,并将音频数据存储在临时文件中;步骤s400后,还包括如下步骤对得到的视频数据进行处理:s500、将临时文件中存储的音频数据和嵌入水印的视频数据进行重新封装得到嵌入水印的视频文件。对于视频数据而言,音频数据准确的封装至关重要,一般有两种方法可以实现音频文件的封装:第一种方案,在分离线程中增加一个回调函数,让音频数据存储在计算机的固定内存中,但是在后期的视频和音频重封装过程中无法进行很好的同步。因此,我们采用的是第二种方案:将分离线程中的音频数据保存在临时文件中,尽管磁盘读写方面会损失部分空间,但是为后续的重封装提供了便利。
15.下面以常见的pc机上使用的英伟达gpu为例详细阐述下上述步骤。所述的步骤s100中,最佳格式为nv12。所述的步骤s220中,包括如下步骤:s221、创建h264/h265解码器;s222、将h264/h265数据拷贝到显存中;s223、将显存中的数据传输到gpu内置的解码器函数中,从而获取到解码器解码过后的nv12数据;所述的步骤s300中,将显存中通过水印产生的nv12数据与步骤s223产生的nv12数据按照逻辑关系进行数据叠加;所述的步骤s400中,将上述叠加水印后的nv12数据输入到gpu专用的编码器中,编码器输出的数据就是压缩过后的h264/h265视频数据。通过上述步骤我们可以看出,所有的编解码以及水印叠加操作都是在gpu中实现的,非常的快速。
16.进一步地,这里之所以需要判断视频文件的封装格式,是因为对于不同封装格式的视频文件,处理起来并不相同。这里需要特别注意苹果公司的mov格式,步骤s220中,若文件的封装格式为mov,由于mov格式文件主要由apple prores编码器所产生视频压缩文件,目前英伟达gpu编解码芯片无法对apple prores压缩编码进行加速处理,因此只能通过ffmpeg cpu解码器进行解码;否则,直接利用gpu进行解码。也就是说,对于一些特殊格式,无法直接在gpu中进行解码时,我们也可以引入cpu进行解码操作,解码得到的视频文件再输入gpu中进行水印嵌入操作,这样针对特殊格式也可以实现在gpu中进行水印的嵌入。
17.参阅图2,本发明还公开了一种基于gpu的视频隐形水印嵌入系统,包括图片转换单元、图片存储单元、视频解码单元、数据叠加单元以及视频编码单元;所述的图片转换单元用于在gpu显存中将水印矩阵图转换成nv12格式,图片存储单元用于存储转换后的图片数据,视频解码单元用于在gpu编解码芯片中将原视频解码为nv12格式,数据叠加单元用于在gpu显存中将水印和视频的nv12数据进行叠加操作,视频编码单元用于对修改后nv12数据流在gpu编解码芯片中编码得到视频信息并输出。通过在视频的操作层面上进行水印的嵌入,在gpu中将视频解码得到nv12数据,再对nv12数据进行简单的计算,最后对nv12数据编码即可得到嵌有水印的视频,整个嵌入过程非常的简单,处理速度快,相对于传统的水印嵌入方法快了很多。
18.本发明还公开了一种计算机可读存储介质和一种电子设备。其中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述任一项基于gpu的视频隐形水印嵌入方法。一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序时,实现前述任一项基于gpu的视频隐形水印嵌入方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1