王薇娜
(中国电影科学技术研究所,北京 100086)
随着国民收入水平不断提升,影院观影的消费需求也在急剧飙升。但由于实体院线的单体投资巨大,且影院建设严重受限于影院盈利必备的辐射半径人口密度,致使实体影院建设增长乏力,无法满足广大非影院建设适配区域的观影需求。基于这个市场定位,在产品功能上,移动电影院以手机、平板电脑为载体,向观众放映已取得电影公映许可证且处于公映期内的电影,打破了时间、地点的限制,从“一对多的大广播模式”变成“一对一的电影放映模式”,从而覆盖放映盲区。与此同时,经过10多年的技术发展,随着资本、政策、版权、技术等多重浪潮的推进,国家出台了一系列政策规范在线视频的发展,并逐步加强知识产权保护。同时,随着播放技术、链路保护技术、便捷支付技术的发展,付费获得视频服务已逐渐被大众接受,市场逐渐被培育成熟。
移动端音视频内容的供给越来越丰富,而且由于观看方式更具有便捷性、私密性,因此被存储、盗版的可能性越来越高。除了专业的录屏软件,随机自带的录屏软件使用起来也异常方便。这些现状给移动端观影的版权保护带来了巨大挑战,也或多或少为良性发展制造了障碍。为了降低移动端观影盗拍盗录情况的发生,版权保护技术的应用是必须考虑的问题。
水印技术在版权保护领域具有举足轻重的地位。在应用时,需要根据应用场景在隐蔽性、鲁棒性和效率需求之间寻找平衡点。然后,在这种平衡下,选择出信息嵌入的最佳位置以及用于嵌入的方法。根据水印所需要的特性以及预判水印可能遇到的破坏模型,找到嵌入的平衡点。嵌入最佳位置是指将水印信息添加到视频的元数据或是帧的特定区域。水印的嵌入方法是通过改变水印的嵌入域与系数来嵌入需要的信息。
视频水印的嵌入方法可以从几个不同角度出发:
(1)把视频看作一个比特序列。如果水印是用来标记视频传输过程中的网络实体,我们可以把这个序列看作是数据包。这个数据包遵循一系列协议,而这些协议就包含冗余空间,可用于水印嵌入。
(2)从把视频看作是序列帧的角度出发,水印嵌入可以理解成为图像水印嵌入的集合。这种嵌入方式多利用的是图像像素空间上的冗余。
(3)水印的嵌入位置:考虑到水印应用中的隐形要求,我们需要从人眼视觉系统(HVS)研究成果出发。人类视觉感知最不敏锐的区域就是嵌入水印的最佳位置。例如,在RGB格式的图像中,人眼对蓝色分量的敏锐度是最低的,因此就可以选择在蓝色分量中加入水印。在YUV或YCr Cb格式的图像中,人眼对高亮区域的变化不敏感,因此可以选择Y分亮高值区域。还有一种是人眼对纹理细节的不敏感特性。纹理细节对应的是图像具有高频内容的位置。因此通过频域变换,可以确定这些区域,添加水印。
2020年7月DCI组织推出了《数字影院系统规范》V1.4版,其对于水印标记的规定还沿用了前序版本的规则,其中详细规定了数字水印的技术参数:水印信息有效载荷最少为35比特。这些比特必须包含两类必要信息:一类是时间码,一类是水印标识(FMID)。时间码,标记精度为15分钟,即每15分钟用同一个时间戳,一年按366天计,共有35136种时间戳,需要16比特标记。水印标识利用剩余的19比特,用于标记硬件。水印标识不能被随意更改。搭载水印嵌入工具的实体制造商应能保持提供一个准确、及时的数据库,从而将含有水印标识的SPB序列号与数字证书对应,并确保其唯一性。35比特的水印信息可能重复分布在5分钟的片段内,并且要做到在放映时实时嵌入。在实现方面,考虑到业务和生产后期的约束,建议水印嵌入实现时尽量减少水印标记数据所需的元数据有效负载。合理的目标应该是小于压缩图像和声音数据有效载荷的2%检出要求:能够从30分钟的连续片段内找到水印识别信息。图像的水印信息需要满足隐形,能够抵御由于图像变换带来的攻击等。
常见的攻击行为有以下几种方式:
(1)数字-模拟-数字转换(包括多次D-A/A-D转换)、重采样和重量化(包括抖动和重压缩)以及对图像对比度和颜色的常见信号增强,都必须保证水印不被破坏。
(2)大小调整、信盒、光圈控制、低通滤波和抗混叠、矩形滤波、数字视频降噪滤波、帧交换、压缩、缩放、裁剪、覆盖、添加噪声和其他转换。
(3)能够抵抗拼接,多个视频的拼接时,能够防御对水印的破坏。
(4)能够抵抗格式转换,频率和空间分辨率的变化带来的破坏。例如,NTSC、PAL和SECAM之间的转换。
(5)能够抵抗画面水平和垂直转动。
(6)能够抵抗任意缩放 (高宽比不一定是恒定的)
小波变换(DWT)是一种最常用的频域水印嵌入变换。 小波变换也属于无损变换。在小波变换中,表示图像的矩阵被分解为两部分,分别在水平和垂直方向进行滤波的方法实现二维小波多分辨率分解,会得到四个子图像,如图1结构图所示:左上角代表LL子频带,表示在两个方向都用低通小波滤波器卷积后产生的小波系数,这样会得到图像的低频分量,展现的是图像的基本要素。其他三部分描述的是图像不同方向细节的子频带分量,HL子频带表示在水平方向高通处理,在垂直方向低通处理,表现的是水平方向的边缘特性。同理LH子频带和H H子频带,第一个字母表示水平方向的处理,第二个字母表示垂直方向的处理。最终都显示了不同方向的边缘特性。这种变换可以在同一幅图像上被多次应用,称为“层”,从而产生帧的递归表示。越靠近左上角的频带,频率越低,水印嵌入对载波图像的质量影响越大,但得到的水印的鲁棒性越好。
图1 小波变换的图像结构
图2是用matlab实现的一次haar小波变换处理的图像,可以看出,变换后的左上角保留了图像的基本信息。右上角的图像主要表现了水平方向的细节变化,左下角表现的是垂直方向的细节信息,右下角表现的是对角线方向的细节信息。
图2 一次小波变换图像分解
图3 二次小波变换
经过二次小波变换后,左上角的低频分量进行了二次分解,就得到了方向上进一步的细节分量。我们生成了一组64比特随机数模拟需要添加的水印信息。为了确保一定的鲁棒性,我们将这组随机数添加在了二次变换区域的右下角高频区域的一段向量中(见图3标记位置)。再经过小波逆变换得到添加水印的图像。如图4所示,可以看出这样添加的水印也可以满足肉眼无法分辨的隐形要求。
图4 添加水印后图像
水印信息中包含了用于识别用户的信息码以及播放时间码。DCI规范中要求的水印负载不低于35比特。本项目中采用的水印算法,水印负载为64比特,0-39比特被分配给定位信息(识别码),40-63比特被分配给时间戳。水印信息包括:机器序号+用户编号+放映时间戳。
机器序号和用户编号分别由5位十六进制字符表示,共40比特。
时间戳:自动动态获取,其格式:YYYYMM-DD hh∶mm∶ss,用24比特表示。
图5 视频帧扫描行采样格式
嵌入水印时需要已知视频帧的码流存储格式,这样才能准确读取想要的图像分量信息,并且对添加水印之后的图像正确还原。码流的存储格式与采样方式是密切相关的。根据移动端的影片的素材格式来进行设定,视频帧的编码格式为YUV420,如图5所示。
图5中,黑点表示Y亮度分量采样,圆圈表示UV分量采样。读取Y分量,利用小波变换,确定添加水印的位置,加入水印,再经过图像重组,得到添加过水印之后的帧图像。
数字电影隐形实时水印技术在专业的播放服务器中已经相对成熟,由专业芯片完成。在移动端的影片播放应用要想通过芯片实现并不容易实施,因此考虑直接使用纯软件算法来实现添加水印的过程。中国电影科学技术研究所已成功在点播影院系统中实现了符合要求的水印算法。同时安卓平台移动端应用,我们采用调用封装好的动态链接库来实现。将水印添加算法封装为so库,在应用程序的底层播放器程序中调用此库,读取播放器解码的图像信息,在视频帧中添加隐形实时水印信息,并将播放器程序再次封装为so库,在应用层程序中完成上层接口调用,避免图像明流信息泄露。水印信息中包含了用于识别用户的信息码FMID以及播放时间码。
表1 初始化参数
水印算法一共有三个调用接口,分别是:初始化函数接口、嵌入水印接口、水印工具释放接口。在初始化函数中需要确定表1参数。
将影片解码后的帧数据流传入“数字水印接口”,同时提供用于标识终端用户的信息负载FMID,水印算法完成数字水印的嵌入,最后返回含有水印的“帧数据流”,进行显示输出。
图6 水印嵌入基本流程图
添加了水印的视频文件,在盗拍盗录编辑等传输过程中,会经历自然噪声或恶意破坏等方式攻击。因此水印算法应具备一定的鲁棒性,能够抵抗一些主动或被动遭遇的攻击。鲁棒性的测试就是设定预先已知的水印信息,添加水印后,人为模拟攻击过程,再做水印检出。根据检出结果,判定水印是否被破坏。
使用智能移动终端视频播放器(高分辨率智能手机和低分辨率智能手机)分别播放测试内容,并用手机自带录屏软件录屏,其中,录屏素材图7为使用小米系统MIUI 9.6稳定版,使用设备自带的录屏工具录制,录屏画面红色框分辨率为:2248×1080。有效画面为黄色框内小于此分辨率。绿色框半透明的视频参数内容在加水印的画面上层,造成一定的画面遮挡攻击,如图7所示。
图7 水印鲁棒性测试素材1截图
录屏素材图8为使用华为系统EMUI 9.1.0录制,使用设备自带的录屏工具录制,录屏画面红色框分辨率为:1280×606。有效画面黄色框,画面下边缘有裁切。绿色框半透明的视频参数内容在加水印的画面上层,造成一定的画面遮挡攻击,见图8所示。
图8 水印鲁棒性测试素材2截图
嵌入被测视频中的初始FMID水印信息为“123456789A”,时间信息为被测录屏素材实际录制时间(UTC时间)。
表2 测试项目
通过模拟常见的攻击形式,验证水印信息是否能够保留。测试项目如表2所示。
项目组委托中央宣传部电影技术质量检测所对样本开展测试,模拟了多种人为攻击,共计19项内容。之后利用水印检测工具检测,检测结果表明,水印信息都存在且完整,达到了项目组对水印算法的鲁棒性要求。
为了增强移动端观影影片的版权保护性能,有效管控移动端观影盗拍盗录的情况发生,项目组采用在播放器端集成视频图像的水印嵌入算法,水印负载为64比特。通过在安卓播放器底层解码后实时读取帧数据,调用频域水印嵌入算法,实现水印信息嵌入。通过与移动应用播放器解码端适配,达到了最终的隐形水印实时添加的需求,并进行了鲁棒性测试,测试结果满足使用需求。