Screen-Shooting Resilient Watermarking 论文笔记

基于屏幕摄像的弹性水印

综述

文章提出了一个新型的屏幕摄像的弹性水印,即当水印图像显示在屏幕上时,摄像头拍摄屏幕信息,仍然可以捕获照片中的水印信息。

遇到的困难和解决方案

  • 由于拍摄角度,拍摄场景等的限制,屏幕拍摄过程中可能出现畸变

    • 透视变形

      • 解决办法:为了抵抗透视变形引起的几何变换,我们提出了一种基于强度的尺度不变特征变换(I-SIFT)算法,能够有效定位嵌入区域
    • 光源畸变和Moire畸变

      • 没办法解决,但可以通过一种小尺寸模板算法,将水印反复嵌入到不同区域,试至少一个完整的信息区域不受失真影响。
  • 提取方面,如何提高水印提取的精度

    • 我们设计了一种基于交叉验证的提取算法来处理重复嵌入。
  • 速度方面,如何加快提取水印的速度

    • 我们提出了一种SIFT特征编辑算法来增强关键点的强度,在此基础上提高提取精度和提取速度。

成果

  1. 提出了一种基于强度的尺度不变特征变换(I-SIFT)算法,该算法可以在不含原始图像信息的情况下准确定位嵌入区域。
  2. 我们提出了一种小尺寸模板算法,将水印反复嵌入到不同的区域,使至少一个完整的信息区域能够在光源失真Moire失真的情况下存活下来。
  3. 设计了一种基于交叉验证盲提取算法,并将其与重复嵌入相结合,有效地保证了提取的准确性。
  4. 我们提出了一种SIFT特征编辑算法来增强关键点的强度,应用该算法可以大大提高关键点的鲁棒性和提取过程的速度。

屏幕摄像的形变分析

透视变形

由于拍摄角度的多样性,在透视变换中会出现旋转、缩放和平移失真RST(rotation, scaling and translation distortions)。而在图像的透视较正(可以了解一下照相机成像过程)中,图像的一些细节也会失真。

另外我们进行盲提取,即不通过原始图像的信息或其他先验信息。所以我们需要一个不需要任何先验信息的定位算法来定位畸变图像中的嵌入区域。

光源畸变

屏幕光源的不均匀性会产生很多亮度失真,因此不能采用全图嵌入的方法,否则会因为光源不均丢失大量信息。为了解决这一问题,我们需要将信息反复嵌入多个区域,以保证至少有一个完整的水印序列能够在失真中存活下来。

Moire畸变

当摄像机传感器中的像素的空间频率接近于屏幕中的像素的空间频率时会生成摩尔纹。摩尔纹是不规律的,并且会扩散到全图,对细节信息造成很大的扭曲。所以我们需要将信息嵌入到某一个收到摩尔纹影响最小的域。

SIFT(尺度不变特征匹配算法)

SIFT是一种计算机视觉的算法用来侦测与描述图像的局部性特征(这些局部特征对畸变引起的几何变换具有一定程度的抗性),它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。这些关键点(极值点)具有特征不变性,因此我们可以使用SIFT来定位嵌入位置。使得这些位置的特征在透视变形中具有鲁棒性。

关于特征不变性:

有些图像的特征即使发生了旋转(旋转不变性)、距离或远或近(尺度不变性),依然可以描述一张图像。就像对一个人的照片旋转拉远(降低分辨率)以后,但依旧可以辨识出这个人是谁。

关于空间尺度:https://blog.csdn.net/samkieth/article/details/50407655

当用一个机器视觉系统分析未知场景时,计算机没有办法预先知识图像中物体尺度,因此,我们需要同时考虑图像在多尺度下的描述,获知感兴趣物体的最佳尺度(就像一张照片,太近了看不清楚,太远也看不清楚,所以需要一个合适的尺度去观察)。

存在的问题

  1. 在定位过程中需要提供关键点描述符,不满足盲提取的要求
  2. 对于每一个关键点,拥有三个信息:位置、尺度以及方向。接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来。但需要计算每个关键点的描述性信息,大大增加了定位时间

嵌入位置

对于彩色图像,我们需要将其转化为YCbCr的色彩空间。

摄影机感光元件产生的RGB信号中,每个色彩通道都含有色彩信息灰度明度)信息,后者是冗余信息。因此,大部分录像系统将色度信息提炼成了彩色差异饱和度)信号。

关于YCbCr:

这是和RGB一样,是一种色彩空间。也具有三个通道:

  • 明度以Y表示。
  • 其中一个色彩通道用蓝色元素减去明度:B-Y
  • 另外一个色彩通道用红色元素减去明度:R-Y

这里的明度Y不是简单的亮度,而是有一个计算公式: Y = 0.2126R + 0.7152G + 0.0722B

这样我们有:

  • Y = Y
  • B = Pb + Y
  • R = Pr + Y
  • G = (Y - 0.2126 R - 0.0722 B) / 0.7152

如果不是彩色图像,就直接用灰度图像。

实现过程

关于高斯模糊:

参考上述的尺度空间,我们需要找到一个观察图像最好的尺度空间。而变换图像尺度的方法,用的就是高斯模糊。高斯模糊用一个高斯核卷积图像,

关于图像卷积:https://blog.csdn.net/naruhina/article/details/104729037/

图像卷积就是卷积核(中间3*3的矩阵)在图像上按行滑动遍历像素时不断的相乘求和的过程。(降维,图像由7*7变成了5*5;提取特征,将一整个3*3的框内的所有特征归纳成了一个值)

如图中所示,目前卷积核滑动到了图像左上角,我们把图像上的9个值与卷积核的9个数值按照对应位置相乘再相加得到一个和,这个和就是我们得到的卷积值。然后把卷积核向右移动一个像素,再执行对应位置相乘再相加的过程得到第二个卷积值,当把所有像素遍历完成之后我们得到的结果就构成了一幅图像。这就是卷积得到的图像。

高斯模糊,用一个高斯核席卷图像,保留图像的轮廓信息(低频信息),去除细节。

这里的高斯核,可以看到,中间权重高,四周低,这样卷积出来的图像,细节全部丢失,但灰度梯度大的地方反而保留了下来。

传统SIFT

  1. 寻找关键点:

    使用高斯模糊,生成各个尺度下的图像,寻找各个尺度下都存在的极值点(极大值或极小值),这些点都是具有一定的特征不变性。然后去除低对比度的和不稳定的边缘点。

  2. 生成关键点描述符

    每个关键点拥有三个信息:位置、尺度以及方向(灰度图像中该像素点的梯度)。接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来。

基于强度的关键点筛选

在选择关键点(极值点)时,将关键点按强度降序排序,并命名为“top-n”。而在屏幕摄像的过程中,会对关键点产生重大的影响:

  • 关键点强度的变化
  • 点位置的偏移

在后面会介绍具体的解决方法。

挑选特征区域(嵌入区域)

对于一个长度为I的二进制水印序列,将其嵌入到a*b的矩阵中。如图

为了防止每个特征区域之间互不重合,需要将重合的关键点筛出,取强度高的留下,其余的筛掉。这样留下的区域,我们还要比较替换前后的结构相似性指数(SSIM),选取SSIM最高的k个区域为嵌入区域,其余的不变。

信息嵌入

关于DCT矩阵:

DCT,即离散余弦变换,步骤如下:

  1. 分割,首先将图像分割成8x8或16x16的小块;
  2. DCT变换,对每个小块进行DCT变换;
  3. 舍弃高频系数(AC系数),保留低频信息(DC系数)。高频系数一般保存的是图像的边界、纹理信息,低频信息主要是保存的图像中平坦区域信息。

对于一串二进制01串,我们将每一个0或1嵌入到DCT矩阵(8x8)中,然后我们观察发现,再屏幕摄像过程中,虽然对于的矩阵系数发生了改变(图中每个方块的亮度),但是R1((7,7)+(7,8))和R2((8,7)+(8,8))的相对大小没有改变。我们将R1>R2当作信息0,将R1<R2当作信息1。这样一来,就算就能抵抗在拍摄过程中的失真。

见特征区域的图可以看出:

每一个8x8块可以嵌入一个信息0或1,axb个块即可嵌入长度为I的二进制串。

下图:

b,c是嵌入时的0和1。

c,d是提取时的0和1。

提取过程

矫正失真

通过透视变换来矫正透视变形,然后进行裁剪和缩放操作。但对于获得的一个图像,我们很难直接得到4个图像的顶点,因为该矫正算法需要4个顶点时才有效。所以我们需要人为的在图像四周添加边框

特征区域定位

我们采用的是盲提取,所以如何找到嵌入的特征区域十分重要。我们对图像的Y通道运用I-SIFT后,还需要做一些额外的操作来避免提取过程中关键点定位的错误,如:

  • 关键点强度的变化
    • 由于关键点的强度顺序可能会发生变化,因此需要增加提取次数来确保提取的k个关键点都在其中。但关键点我们将提取范围从k翻倍,变成2k个
  • 点位置的偏移
    • 由于矫正失真过程,同一关键点的精确位置会有一些轻微的偏移,我们需要做一个邻域遍历来补偿偏移。
    • 我们对这个点执行3 × 3像素的遍历。将以该关键点为中心的9个邻域点作为提取点组。
  • 这样我们一共需要2xkx9个水印序列。

信息提取

提取过程总的来说就算嵌入过程的逆过程。只不过我们嵌入了k个特征区域,但提取过程是2*k*9。这样我们会有2*k*9个水印序列。我们设置了一个th,如果水印对的差值不大于th,那么提取准确。

但这样耗时较大,因为我们需要检索足够多的区域保证嵌入的特征区域在这些区域中。如果我们能适当减少提取区域的数量,我们就能减少提取时间

所以我们提出了SIFT特征编辑算法

SIFT特征编辑算法

核心问题是,在提取过程中,有些关键点不足以抵御屏幕拍摄的扭曲,从而导致前k个强度的关键点发生了变化。

如果在嵌入过程中,将提取到的关键点的强度提高,再减弱未嵌入区域关键点的强度。使前k个关键点能抵御失真。就可以减少提取过程时提取区域的数量。从而提高提取速度。这是一种减缓了嵌入速度但加快了提取速度的做法。

同时因为对关键点的特征编辑,画面可能会有所失真,如图。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2023 YYz
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信