从数字图像中提取水印的方法和系统的制作方法
【专利摘要】本发明涉及从数字图像中提取水印的方法和系统。一种从数字图像中提取水印的方法包括:(a)将所述数字图像变换为具有频域中的系数的系数矩阵;(b)基于投影的系数块分布中的每个系数块中的水印指示符系数集合确定所述数字图像是否带有水印,其中所述投影的系数块分布基于所述系数矩阵中的系数偏移量;和(c)从投影的水印块分布的水印块获取水印,其中所述投影的水印块分布基于所述投影的系数块分布的块偏移量。
【专利说明】从数字图像中提取水印的方法和系统
[0001] 分案说明
[0002] 本申请属于申请日为2010年1月15日的中国专利申请201080004744. 0的分案 申请。
【技术领域】
[0003] 本发明涉及数字图像的水印添加。
【背景技术】
[0004] 数字成像允许利用数字数据来表示图像。随着万维网(WWW)的可用性和对其访问 的增长以及数字成像技术的广泛可用性,数字图像的数量及其使用频率都已增长。许多应 用出于诸如观看、编辑或共享之类的目的而向大量的不同用户提供了对特定数字图像或图 像集合的访问。例如,人、动物、物体和风景的数字图像经常被那些图像的所有者以与选定 的人群体或普遍公众共享所述图像的意图而发布在WWW上。
[0005] 然而,这些数字图像在WWW上的可访问性使得其他人更容易出于非授权的目的而 复制和使用它们。例如,Google Orkut社交网络团体的成员可以发布图像以将其自己标识 为其博客上所发布素材的所有者。另一个人可以复制该图像并将其发布在别处而声称是他 自己的。存在许多诸如上述的示例,其中数字图像能够被合法所有者之外的其他人复制和 使用。
[0006] -种用来降低图像的非授权复制的技术是水印技术。数字图像的水印包括在该图 像中嵌入数字水印(简单称作"水印")。水印可以是数字签名、用户标识符、标识,或者能 够充分针对其出处或所有权对图像进行识别的类似值。非常希望所嵌入的水印不会改变原 始图像的外观,即水印应当是肉眼基本看不到的。在许多传统的水印添加方法中,水印在感 官上改变了原始图像的外观。
[0007] 数字图像通常以压缩形式被发布在WWW上,诸如联合图像专家组(JPEG或JPG)压 缩格式或者其它类型的图像压缩格式。由于图像压缩方法改变了所选择图像像素的值,所 以所嵌入的水印可能以改变图像外观和/或使得水印不可恢复的方式而受到影响。因此, 还希望水印为鲁棒的以能够经受诸如JPEG60或JPEG80压缩的高等级压缩。
[0008] 通常,复制数字图像的人也参与修改图像,例如通过修剪原始图像。为了有效,所 嵌入的水印还应当能够在进行了这样的修剪之后从复制的图像中检测和/或获取。
[0009] 已经针对数字水印提出了许多方法。例如,一种方法涉及为图像生成离散余弦变 换(DCT)系数矩阵(DCT矩阵),将所述系数矩阵划分为一个或多个水印块,并且在每个水印 块中嵌入数字签名。Wen-Nung Lie、Guo_Shiang Lin、Chih_Liang Wu 和 Ta-Chun Wang 的 "Robust Image Watermarking On the DCT Domain,' IEEE International Symposium on Circuits and Systems,日内瓦(2000)中描述了这样的方法。Lie等人描述的方法在相应 DCT矩阵中的不同图像部分中重复地嵌入水印。然而,该方法易于受到修剪的影响并且计算 成本高。例如,修剪具有使用Lin等人的方法所嵌入的水印的带水印图像能够防止修剪后 的图像被识别为带水印的图像。而且,Lie等人所描述的方法由于需要识别相当大部分的 原始嵌入水印以便确定图像带有水印而带来了相对高的计算成本。
[0010] 因此,需要改进的用于对数字图像添加水印的方法和系统。
【发明内容】
[0011] 提出了用于对数字图像添加水印的方法和系统。一个实施例是一种在数字图像中 嵌入信息以创建带水印的数字图像的方法。所述方法包括将数字图像变换为频域中的系数 的多个系数块,在每个系数块中嵌入水印指示符,在每个水印块中嵌入水印以生成带水印 的数字图像,并且输出所述带水印的数字图像。
[0012] 另一个实施例是一种从数字图像提取水印的方法。所述方法包括将数字图像变换 为具有频域中的系数的系数矩阵,基于投影的系数块分布中每个系数块中的预定水印指示 符系数集合确定所述数字图像是否带有水印,并且从投影的水印块分布的投影的水印块获 取水印。投影的水印块分布基于投影的系数块分布。
[0013] 又另一个实施例是一种用于对数字图像添加水印的系统。所述系统包括处理器、 存储器、图像变换模块和水印嵌入模块。所述图像变换模块被配置为将数字图像变换为频 域中的系数的多个系数块。所述水印嵌入模块被配置为在多个水印块中的每一个中嵌入水 印以生成带水印的数字图像。水印指示符嵌入模块被配置为在所述多个系数块中的每一个 中嵌入水印指示符。
[0014] 进一步的实施例是一种用于从数字图像中提取水印的系统,其具有处理器、存储 器、图像变换模块、水印指示符检测模块和水印提取器模块。所述图像变换模块被配置为将 数字图像变换为频域中的系数的多个系数块。所述水印指示符检测模块被配置为基于投影 的系数块分布中每个系数块中的预定水印指示符系数集合来确定所述数字图像是否带有 水印。所述水印提取器模块被进一步配置为从投影的水印块分布的投影的水印块获取水 印。投影的水印块分布基于投影的系数块分布。
[0015] 本发明进一步的特征和优势及其各个实施例的结构和操作在以下参考附图进行 详细描述。所要注意的是,本发明不局限于这里所描述的特定实施例。在这里给出这样的 实施例仅是出于说明的目的。基于这里所包含的教导,其它实施例对于相关领域的技术人 员将是显而易见的。
【专利附图】
【附图说明】
[0016] 现在将参考本发明的实施例,其示例可以在附图中进行图示。这些附图意在进行 说明而非限制。虽然本发明总体上在这些实施例的背景下进行描述,但是应当理解的是,其 并非意在将本发明的范围限制为这些特定实施例。
[0017] 图1是根据本发明实施例的在数字图像中嵌入水印的方法的流程图。
[0018] 图2示出了根据本发明实施例的图像的系数阵列表示。
[0019] 图3示出了根据本发明实施例的图像阵列表示中的能够嵌入水印信息的的示例 性位置。
[0020] 图4示出了根据本发明实施例的在数字图像中嵌入水印的方法的流程图。
[0021] 图5示出了根据本发明实施例的确定数字图像是否包含水印的方法的流程图。
[0022] 图6图示了根据本发明实施例的用于确定图像是否带有水印的过程。
[0023] 图7图示了根据本发明实施例的用于从图像提取所嵌入水印的过程。
[0024] 图8图示了根据本发明实施例的用于从图像提取所嵌入水印的处理的各个方面。
[0025] 图9是根据本发明实施例的用于对图像添加水印的系统。
[0026] 图10示出了根据本发明实施例的添加水印之前和之后的图像。
【具体实施方式】
[0027] 虽然在这里参考针对特定应用的说明性实施例对本发明进行了描述,但是应当理 解本发明不局限于此。本领域技术人员通过这里的教导将认识到处于其范围之内的其它修 改、应用和实施例以及本发明将具有明显作用的其它领域。
[0028] 数字图像中的水印可以被用来识别图像并且也可以是该图像的任意数字副本。水 印可以包括关于该图像的出处和/或所有权的任意识别标准。例如,数字签名、用户标识 符、标识、代码等是在数字图像中所使用的一些水印类型。
[0029] 水印可以在多种应用中用于数字图像中以帮助识别数字图像的出处或所有权以 及帮助降低数字图像的非授权使用。可以在其中使用本发明实施例的一个示例性环境包括 降低WWW上图像的非授权复制和发布。例如,本发明的实施例可以使得能够嵌入水印,包括 发布在PICASA或0RKUT上的照片中原始发布者的用户标识符,上述二者均是加利福尼亚 Mountain View的Google所提供的基于web的服务。无论带水印的图像何时被复制和在其 它地方发布,本发明的实施例都可以允许任意相关实体来确定该图像是否带有水印,并且 如果是则获取所嵌入的水印。所发布图像已经带有水印的知识允许有关其真实性的确定。 获取实际嵌入的水印允许追踪到图像的来源。
[0030] 在本发明的实施例中,提供了用于对数字图像添加水印的方法和系统。示例性实 施例包括在数字图像中嵌入信息以创建带水印的数字图像的方法,从数字图像中提取水印 的方法,以及用于对数字图像添加水印的系统。一种创建带水印的数字图像的方法包括将 数字图像变换为频域中的系数的多个系数块,在每个系数块中嵌入水印指示符,在每个水 印块中嵌入水印以生成带水印的数字图像,以及输出带水印的数字图像。提取水印的方法 包括将数字图像变换为具有频域中的系数的系数矩阵,基于投影的系数块分布中每个系数 块中的预定水印指示符系数集合确定所述数字图像是否带有水印,并且从投影的水印块分 布的投影的水印块获取水印。投影的水印块分布基于投影的系数块分布。
[0031] 可以在实施例中获得多种优势。本发明的实施例可以在图像上复制水印数据并且 还在定义区域上扩展水印的每个实例以针对压缩和修剪获得提高的鲁棒性。可以在实施例 中进行水印数据元素的乱序恢复。此外,可以获得相对于修剪和压缩的增强的水印鲁棒性。 通过将水印的检测和提取区分开来,本发明的实施例可以明显提高处理的计算效率并且还 提升了鲁棒性。例如,本发明的实施例可以允许针对非常高的压缩和/或修剪程度进行水 印检测,并且针对高度压缩和/或修剪提取所嵌入的水印。本发明的实施例还可以嵌入人 类肉眼基本上看不到的水印并且因此不会在感官上扭曲原始图像。
[0032] 在实施例中,所提供的水印可以是实用的、计算高效的,以便在具有大量待处理图 像的环境中使用,并且针对压缩和修剪是鲁棒的以成为降低包括WWW在内的环境中数字图 像的错误使用的有效工具。
[0033] 嵌入水印
[0034] 图1图示了根据本发明实施例的在数字图像中嵌入水印的过程100(步骤 102-116)。在步骤102,图像被变换为表示性的数字系数矩阵,例如离散余弦变换(DCT)域 中的系数矩阵。所述系数矩阵此后可互换地被称作"系数矩阵"或"DCT矩阵"。这里的描 述基于DCT域中的系数。然而,频域中产生对应于数字图像的系数矩阵的其它变换也是可 能的,并且预期在本发明的实施例中。
[0035] 图2图示了根据本发明实施例的系数矩阵200。例如,系数矩阵200包括MXN个 系数,诸如系数202。例如,当使用DCT变换对图像进行变换时,所述系数为DCT系数。所 述MXN个系数被逻辑划分为系数块(CB),诸如预定大小的系数块204,所述预定大小例如 8X8个系数。系数矩阵200的系数块被逻辑分组为块组(G0B),诸如G0B206。例如,四个相 邻的DCT块可以包括在一个相应的G0B206中。系数矩阵200的G0B接着被分组为水印块 (WB),诸如水印块208。每个水印块208中的G0B数目可以取决于所嵌入水印的特征。以下 关于各个过程对系数、系数块、块组和水印块的功能和使用进行解释。
[0036] 系数矩阵(例如200)中的系数(例如202)可以对应于数字图像中的像素。例如, DCT变换对数字图像中一个或多个像素的每个组分配频域中的值。在Andrew B. Watson的 "Image Compression Using the Discrete Cosine Transform,',Mathematica Journal, v4(l)第81-88页(1994)中描述了一种计算图像的DCT矩阵-二维DCT-的方法。
[0037] 在步骤104中,识别系数矩阵(例如200)的系数块(例如204)并且在每个系数块 中嵌入水印指示符。例如,如果系数矩阵包括MXN个系数,则将其逻辑划分为8X8的系数 块将导致M/8XN/8个系数块。可以在M/8XN/8个系数块中的每一个中嵌入水印指示符。
[0038] 可以通过将每个系数块中被称作"水印指示符系数集合"的预定系数集合替换为 其它值来嵌入水印。在一个实施例中,在每个系数块中,可以将系数的预定对角线的系数 设置为新的值以指示图像中存在水印。例如,在如图3所示的G0B206中,可以选择各系数 块308A、308B、308C和308D的对角线302A、302B、302C和302D来嵌入水印指示符。对角线 302A中的系数,即对应于系数块308A的水印指示符系数集合,可以被设置为该对角线的系 数的平均值。类似地,对应于系数矩阵中所有其它系数块中的302A的每条对角线的系数都 可以被设置为相应对角线的系数的平均值。
[0039] 在以上示例中,选择每个系数块中用于嵌入水印指示符的对角线是因为在图像的 DCT变换中那些对角线中的系数表示以上的正常感知范围而且基本上不会受到JPEG压缩 影响的频率分量。以简单重复、可容易确定的方式另外选择水印指示符系数集合的系数也 是可能的并且在本发明的实施例中得到预期。应当注意的是,水印指示符系数集合中的系 数可以被设置为不同于平均值的值。
[0040] 以重复、可容易确定的方式嵌入水印指示符有利于降低执行时间并且有利于针对 修剪和压缩的鲁棒性,其是本发明实施例的特征。
[0041] 在步骤106,确定G0B边界。在一个实施例中,G0B可以包含以2X2系数块阵列排 列的4个系数块,即例如如图2和3所示的系数矩阵中的2行和2列的系数块。包括G0B 的选定系数块的数目和组织的其它选择也是可能的并且在本发明的实施例中得到预期。
[0042] 在步骤108,选择G0B中的一个系数块作为"信息块",并且选择该G0B中的另外两 个块作为"贡献块"。信息块是保持所有或部分水印的系数块。贡献块是相同G0B中作为相 应信息块的其它系数块,所述信息块提供系数值,基于该系数值在信息块中嵌入水印数据。 被用于得出水印系数集合的系数数值的贡献块中的系数可以被称作水印贡献系数集合。在 一个实施例中,在2X2系数块的G0B206中,选择系数块308D作为信息块,而选择系数块 308B和308C作为贡献块。贡献块308B被称作"顶部块",而贡献块308C被称作"左侧块"。 所选择的模式对于系数矩阵的所有GOB是共同的。
[0043] 在信息块中选择预定数量的系数(被称作"水印系数集合"),其中它们的值将被 修改以对所选择水印的部分进行编码。例如,在图3中,可以选择系数对角线304D以嵌入 水印的部分。信息块和贡献块的其它选择、以及水印系数集合的数量和组织的其它选择也 是可能的并且在本发明的实施例中得到预期。
[0044] 在步骤110中,基于水印以及每个G0B中要嵌入的水印的位数来确定WB所需的 G0B数量。预先确定的水印可以被划分为一个或多个"水印单元",并且每个水印单元可以 嵌入不同G0B中。例如,如果水印为32位的串并且决定在每个G0B中嵌入8位的水印,则 四个G0B可以构成相应的WB。每个WB至少包括嵌入所选择水印的完整实例的足够数量的 G0B。
[0045] 在步骤112中,即使在无法保证按序提取时也可以将水印定义为鲁棒的。例如,当 已经对带水印图像进行了修剪时,则所述水印的多个部分可能在从带水印图像提取水印时 乱序返回。可以在预定水印的水印单元之间的选定点插入被称作"标记(sentinel)单元" 的附加数据。
[0046] 例如,考虑可能被修剪并且要在其中嵌入32位水印的相对大的图像。如果要在每 个G0B中嵌入4位,则总共需要8个G0B来嵌入整个32位水印的一个实例。因此,相应WB 应当包括至少8个G0B。通常,32位水印的4位部分(即,水印单元)按照顺序嵌入在相应 G0B中。但是,如果带水印图像被修剪,则获取所述水印的那些4位部分的顺序可能不同于 它们嵌入的顺序。因此,可以将标记单元散布在所述水印的水印单元的有序顺序中的预定 位置。例如,可以利用8个水印单元的序列{dl,d2, d3, d4, d5, d6, d7, d8}散布4个标记单 元si、s2、s3、s4以具有构成处理水印的总共12个经组合的水印单元和标记单元,如下:{s 1,dl,d2, d3, s2, d4, d5, d6, s3, d7, d8, s4}。当嵌入在 3X4 的 GOB 阵列的 WB 中时,即使水印 单元的提取没有保持有序,该经处理的水印单元序列也可以完全确定水印单元的顺序。
[0047] 在步骤114中,已经被处理或没有处理为在提取中保持有序的水印被嵌入系数矩 阵中。在本发明的一个实施例中,如图4的示例性过程中更为详细图示的,步骤114可以被 用来在系数矩阵中嵌入水印。
[0048] 可以对对角线304D中预定数量的系数的值进行修改以嵌入所选择水印的每一 位。例如,系数对角线304D中的系数306D可以被设置为顶部块中的相应系数306B和左侧 块中的相应系数306C的平均值,其以预定常数值向上或向下调整。如果所要嵌入的水印的 相应位是1,则来自顶部块和左侧块的相应系数的平均值被递增预定常数Q。如果所要嵌入 的位是0,则来自顶部块和左侧块的相应系数的平均值被递减预定常数Q。
[0049] 使修改值(即,水印系数集合)表示所嵌入水印的对角线304D中的系数是基于随 机选择或者基于其它一些标准预先确定的。在数字图像的DCT变换中,对角线304D中的系 数表示通常能够改变而基本上不会影响所感知图像的频率分量。在以上示例之后,可以使 用对角线304D中的任意4个系数来嵌入相应的水印单元。
[0050] 与在G0B206的对角线304D中嵌入一个水印单元相类似,重复该过程以在WB的其 它G0B中嵌入该水印实例的其余水印单元,以使得整个水印实例按照顺序嵌入在所述系数 矩阵的每个WB中。
[0051] 返回如图4所示的过程114,水印可以如下嵌入在系数矩阵中。在步骤402,选择 WB。通常,每个WB可以以其在相应系数矩阵内放置的顺序进行处理,例如从所述系数矩阵 的左侧边缘开始并且在移动到WB的下一行之前水平贯穿移动。在步骤404中,对于每个所 选择的WB,选择该WB中的G0B。例如,每个实例中的G0B也可以以从相应WB的左侧边缘开 始并且在移动到WB的下一行之前水平贯穿移动的顺序进行选择。
[0052] 在步骤406中,在所选择的G0B内,选择要利用新值进行更新、根据所要嵌入的水 印数据进行修改的系数。如之前所描述的,所要更新的系数,即水印系数集合,可以预先确 定。
[0053] 在步骤408中,对于水印系数集合中的一个系数,值被设置为顶部块和左侧块中 相应位置中的系数的平均值。接着,在步骤410中,对于水印系数集合中的该系数,根据所 要嵌入的位是〇还是1,分别以预先确定的常数Q递减或递增该数值。
[0054] 在步骤412中,确定是否需要嵌入所处理的水印单元的更多数据。如果是,则处理 返回步骤406以选择当前G0B中所要修改的下一个系数。如果否,并且如果在步骤414中 发现了当前WB中待处理的更多G0B,则处理返回步骤404以选择下一个G0B以及所要嵌入 的下一个水印单元。如果在当前WB中没有待处理的更多G0B并且在步骤416中确定存在 待处理的更多WB,则处理进行至步骤402并且选择下一个WB以嵌入水印的实例。如果在步 骤416中发现没有待处理的更多WB,则已经对数字图像中所有可用的WB进行了处理以嵌 入水印的实例。在过程114完成时,水印实例的所有水印单元被嵌入在系数矩阵的每个WB 中。
[0055] 图5图示了根据本发明实施例的能够被用来确定图像是否带有水印的过程500。 如果发现图像已经带有水印,则过程500使得能够获取所述水印。如果发现图像没有水印, 则在所述图像中嵌入水印。
[0056] 在一个示例中,过程500可以是处理整个图像集合的过程的一部分,所述图像集 合例如由web爬行器(crawler)或其它装置所收集并且存放在过程500可以访问的一个或 多个存储中。在步骤501,例如从WWW或者过程500能够访问的其它图像库获取数字图像, 例如JPEG格式的数字图像。
[0057] 在步骤502,对所述数字图像进行处理以确定其是否已经具有所嵌入的水印。以 下关于图6描述确定是否已经嵌入水印的示例性方法。在步骤504,过程500基于步骤502 中是否检测到水印来选择两个处理分支之一。如果检测到水印,则处理进行至步骤510以 提取水印。以下关于图6描述提取水印的示例性方法。否则,如果在步骤502没有检测到 水印,则处理进行至步骤506以嵌入水印。能够被用来嵌入水印的示例性过程以上关于图 1进行了描述。
[0058] 检测水印
[0059] 图6图示了根据本发明实施例的确定图像是否包括数字水印的过程600。在步骤 601,将图像变换为如之前所描述的系数矩阵。步骤601仅在系数矩阵在之前还没有由另一 过程生成或者对于过程600不可用的情况下是必要的。在步骤602,在表示所处理的数字图 像的系数矩阵中确定开始点。例如,过程600可以考虑处于系数矩阵位置(0,0)的系数作 为开始点:元组(〇,〇)中的第一个元素表示系数在系数矩阵中的行位置,而第二个元素则 表示列位置。过程600可以通过考虑系数(0,0)在第一系数块的左上角而开始处理,所述 第一系数块例如8X8系数块。因此,在步骤602,确定系数块边界。基于这种边界确定的所 有系数块的集合可以被称作系数块分布。系数块分布的最初确定也可以被看作投影的系数 块分布。
[0060] 在步骤604,基于假设的系数块边界,即投影的系数块分布,对每个系数块中的水 印指示符系数集合进行处理。例如,可能预先确定对应于如图3所示的对角线302A的6个 元素的对角线将构成相应的水印指示符系数集合。
[0061] 在每个系数块中,计算水印指示符系数集合的标准偏差。例如,在该步骤中计算对 角线302A的所有六个元素的标准偏差。
[0062] 在步骤606,确定其中各水印指示符系数集合具有低于预定水印指示符阈值的标 准偏差的系数块百分比。如果这样确定的百分比大于水印指示符阈值,则在步骤608,确定 所述图像包含水印。否则,在可以确定该图像不包含水印之前需要进一步的处理。
[0063] 如果在步骤606中所确定的系数块百分比低于预先确定的水印指示符阈值,则过 程600返回步骤602并且选择新的系数块边界,即新的投影的系数块分布。
[0064] 每次过程600返回步骤602,系数块边界,特别是系数矩阵中第一系数块的左上角 系数以覆盖一个系数块中的每个系数的方式进行移动。例如,在该示例中,每次将系数块的 左上角系数移动到锚定于系数矩阵左上角的8 X 8系数阵列中的下一个元素时,过程600就 将返回602。因此,每个投影的系数块分布都基于8X8系数阵列中新的系数偏移量。
[0065] 在选择了新的系数块边界之后,处理通过步骤604-606进行。在一次迭代中,如果 在步骤606确定了具有小于预定水印指示符阈值的水印指示符系数集合的标准偏差的系 数块百分比大于期望的百分比,则在步骤608确定相应图像带有水印。
[0066] 另一方面,如果过程600迭代通过例如整个8X8系数阵列的整个系数块,也没有 在步骤606中找到其中水印指示符系数集合的标准偏差低于预定水印指示符阈值的系数 块的百分比,则断定所述图像不带有水印。如果确定了所述图像不带有水印,则例如可以调 用过程100以在该图像中嵌入水印。
[0067] 如果在步骤606确定了其中水印指示符系数的标准偏差高于预定水印指示符阈 值的DCT块百分比,则断定该图像带有水印,并且例如可以使用诸如过程700的过程来提取 水印。
[0068] 本发明的各个实施例能够以相对高效的方式来确定特定图像是否包含水印。在最 差情况下,检测过程迭代通过大小为一个系数块的阵列的每个系数。而且,由于水印被嵌入 每个系数块中,所以即使在带水印图像被压缩或修剪时所述检测也是相当鲁棒的。
[0069] 提取水印
[0070] 图7图示了能够被用来从图像中提取水印的过程700。水印提取的过程基于对WB 确定边界,即"水印块分布",并且接着确定相应的"水印单元矢量",即水印实例的水印单元 的矢量。
[0071] 可以对每种应用预先确定水印的大小,即水印长度。例如,在本发明的实施例被应 用于0RKUT社交网络站点中所发布的图像的情况下,相关联的水印嵌入应用和水印获取应 用可以被配置为基于ORKUT应用的要求使用预先确定的长度的水印。例如,32位的水印可 能就足以嵌入与0RKUT相关联的用户标识符的确定性部分。类似地,在其开始处理图像以 获取所嵌入的水印时,过程700能够得知系数块大小、GOB大小、WB大小、水印指示符系数的 位置(水印指示符系数集合)以及水印系数的位置(水印系数集合)。
[0072] 通过使用例如过程600已经确定了图像是否带有水印,过程700可以获得对应于 所处理数字图像的系数矩阵中的系数块边界。在步骤702,确定用于水印确定和获取的开始 点。在一个实施例中,过程700的开始点被选择为水印检测过程所确定的处于系数矩阵左 上角的系数块边界。例如,过程700可以将处于系数矩阵位置804的系数看作开始点:所述 系数矩阵中第一个WB中的第一个系数块。可以对每种应用预先确定水印的大小,即水印长 度。因此,在步骤702中,确定WB边界。这可以被认为是投影的水印块分布。
[0073] 在步骤704,基于当前假设的WB边界,即当前投影的水印块分布,从所处理图像中 的每个WB获取对应于嵌入水印实例的系数的数据矢量。基于当前的投影的水印块分布,确 定各个G0B边界。例如,在图8所示的图像800中,在一个投影的水印块分布中,当过程700 基于WB810假设WB边界时,可以确定包括G0B808的相应G0B边界。
[0074] 从投影的水印块分布中的每个WB生成水印单元矢量,产生所述系数矩阵的该投 影的水印块分布的水印单元矢量集合。在步骤706,确定过程700是否应当迭代通过更多的 系数块偏移量,并且如果答案为是,则过程700返回步骤702。在一个示例中,可以按顺序尝 试投影的G0B中的每个系数块偏移量。
[0075] 对每个投影的水印块分布重复步骤702和704。每个投影的水印块分布可以通过 考虑一个G0B的限制内的不同系数块偏移量来确定。
[0076] 在投影的水印块分布的当前所处理WB的每个G0B中,将水印系数集合中的每个系 数与例如顶部块和左侧块的贡献块中的相应系数的平均值进行比较。如果水印系数集合中 的系数高于贡献块中相应系数的平均值,则该系数可以被认为是表示所嵌入水印中的" 1"。 如果水印系数集合中的系数低于顶部块和左侧块中相应系数的平均值,则该系数可以被认 为表示"0"。对于投影的水印块分布而言,可以通过根据投影的水印块分布对每个WB的每 个G0B中的水印系数集合中的每个系数重复该系数平均值比较来生成所述图像的整个水 印单元矢量集合。
[0077] 在其它实施例中,在步骤706,可以基于不同于按顺序的系数块偏移量的标准来重 复步骤702-704,例如可以以随机模式尝试系数块偏移量,或者可以使用基于行和列索引的 其它偏移量。
[0078] 当在步骤706中确定已经生成了足够数量的水印单元矢量集合,例如在已经通过 投影的G0B内的所有系数块偏移量重复了步骤702-704时,过程700进行至步骤708。在步 骤708,选择一个水印单元矢量集合来表示所嵌入的数据。
[0079] 在一个实施例中,选择一个水印数据集合表示所嵌入的数据可以基于对每个水印 单元矢量集合所计算的相关性量度。例如,相关性量度可以基于主要元素出现的频率。在 一个实施例中,对于每个G0B而言,可以跨相应水印单元矢量集合中的所有水印单元矢量 识别最频繁出现的水印单元。该水印单元矢量集合的相关性量度可以是在所有G0B上加总 的最频繁出现的水印单元的出现数量。
[0080] 已经观察到,以上所描述的基于水印单元的出现频率确定相关性量度的方法对于 JPG图像中所观察到例如所选择局部区域损坏的许多损坏类型是相当有抵抗力的。确定相 关性量度的其它方法也是可能的并且在本公开的教导中得到预期。例如,可以在每个集合 中的所有水印单元矢量之间执行逐位相关以获得相关性量度值。
[0081] 在步骤710,确定具有最高相关性的水印单元矢量集合来表示所嵌入的数据。例 如,可以选择具有最高相关性量度的水印单元矢量集合来表示所嵌入的数据。接着可以从 所述矢量集合来确定实际所嵌入的水印,这是因为每个矢量表示一个WB中的水印系数。例 如,可以选择与最多的其它矢量相匹配的矢量,并且采用其数据单元来表示所嵌入的水印。 [0082] 在图像受到修剪的情况下,所选择的矢量非常可能不具有适当顺序的水印单元来 表示所嵌入的水印。如果水印在已经例如通过在实际水印单元之间插入标记单元(例如, 见以上过程100的步骤110和112的描述)并接着使用所插入的标记单元而针对乱序提取 进行处理之后嵌入,则实际的数据单元可以被重新排序以获得实际水印。乱序提取数据单 元并且还能够确定实际水印的能力是使得这里所公开的方法和系统针对修剪鲁棒的关键 特征。
[0083] 其它示例性实施例
[0084] 在另一实施例中,可以仅在图像的一个或多个所选择区域中嵌入水印和水印指示 符。在一些应用中,限制新数据的嵌入可以提高该方法抵御水印损坏的能力,并且提高嵌入 和提取数据标志的计算效率。例如,可以在每个图像中识别出要添加水印的一个或多个预 定热点集合。可以仅在那些热点中插入水印。在一个实施例中,可以采用脸部检测或边缘 检测机制来检测脸部或其它更为特定的热点,例如眼睛、嘴、鼻子等,并且可以在覆盖所选 择热点的图像区域中插入水印和水印指示符。
[0085] 图9是根据本发明实施例的在图像中嵌入水印、检测图像是否带有水印和/或从 图像中提取水印的嵌入系统900。系统900可以是通用或专用计算机,其包括处理器901、 存储器903、存储905、输入接口 907、输出接口 909、通信装置930和水印模块910。
[0086] 处理器901可以包括一个或多个微处理器、数字信号处理器(DSP)、现场可编程 门阵列(FGGA)或类似处理装置。存储器903可以包括诸如随机访问存储器(RAM)的临时 数字存储器装置,并且存储装置905可以包括持久存储装置,诸如硬盘、闪存或只读存储器 (R0M),但并不局限于此。输入接口 907可以包括键盘、鼠标、笔输入装置、到网络的连接或 者到外部装置的连接中的一个或多个,但是并不局限于此。输出装置909可以包括显示器、 到网络或其它外部装置的连接中的一个或多个,但是并不局限于此。通信装置930可以包 括通信总线,诸如适用于外部组件互连(PCI)标准或扩展工业标准结构(EISA)的装置,但 是并不局限于此。
[0087] 水印模块910包括实施本发明实施例的功能的子模块。水印模块910包括系数计 算模块912、水印嵌入模块914、水印指示符嵌入模块916、水印提取器模块918和水印检测 器模块920。这些模块中每一个的功能可以以硬件、固件、软件或者使用其组合来实现。
[0088] 这些子模块的功能可以在处理器901的控制下实现。例如,处理器901能够控制 通过输入接口 907接收图像,使用水印模块910中的一个或多个模块处理该图像,并且通过 输出接口 909输出经处理的图像。在使用水印模块910处理图像期间,例如原始图像和被 处理图像可以驻留于存储器903中。存储905例如可以在处理期间被用来存储临时信息, 或者存储处理之后的图像和信息。模块912-920还可以以分布式的方式在两个或更多互连 计算机上实现。
[0089] 系数计算模块912包括将例如JPG格式图像的图像变换为频域中的系数表示的功 能,例如用以生成该图像的系数矩阵。如之前所描述的,所述系数矩阵可以是对应于图像的 DCT变换的DCT矩阵。系数计算模块912还包括在根据本发明实施例进行处理之前或之后 将系数矩阵转换回诸如JPG的图像格式的功能。例如,系数计算模块912可以包括执行反 向DCT变换的能力。系数计算模块912可以包括关于过程100的步骤102和106所描述的 所有或部分功能。在一个实施例中,系数计算模块912被配置为实施如以上所描述的过程 100的步骤102和116。
[0090] 水印嵌入模块914包括在图像的系数矩阵表示中嵌入预定水印的功能。例如,水 印嵌入模块914可以包括关于过程100的步骤106、108、110、112和114所描述的所有或部 分功能。在一个实施例中,水印嵌入模块914被配置为实施如以上所描述的过程100的步 骤 106、108、110、112 和 114。
[0091] 水印指示符嵌入模块916包括根据本发明的实施例在图像中嵌入水印指示符的 功能。例如,水印指示符嵌入模块916可以包括以上关于过程100的步骤104所描述的功 能。在一个实施例中,水印指示符嵌入模块916被配置为实施如以上所描述的过程100的 步骤104。
[0092] 水印提取器模块918包括根据本发明实施例的从图像中提取所嵌入的实际水印 的功能。例如,水印提取器模块可以包括关于过程700所描述的功能。在一个实施例中,水 印提取器模块918被配置为实施如以上所描述的过程700的步骤702-710。
[0093] 水印检测器模块920包括根据本发明实施例的检测图像中水印的存在的功能。例 如,水印检测器模块920能够对图像进行处理以发现充分数量的水印指示符的存在。水印 检测器模块920可以包括关于过程600所描述的功能。在一个实施例中,水印提取器模块 920被配置为实施如以上所描述的过程600的步骤601-608。
[0094] 图10示出了根据本发明实施例的处理之前和之后的示例性图像。图像1001是处 理之前的图像,而图像1002是已经根据本发明实施例进行处理之后的相同图像1001。在图 像1002中,已经在每16X16的像素区域中嵌入了 32位的水印,并且已经在每8X8的像素 区域中包括了水印指示符。两个图像的比较示出具有根据本发明实施例所嵌入的水印的图 像1002与图像1001相比没有可感知到的差异,即水印基本上是人类肉眼看不到的。
[0095]
【发明内容】
和摘要部分可以给出发明人所预期的本发明的一个或多个但不是全部 的示例性实施例,并且因此并非意在以任何方式对本发明和权利要求进行限制。
[0096] 以上已经借助于说明特定功能及其关系的实施方式的功能构建块对本发明进行 了描述。这些功能构建块的边界在这里已经出于方便描述的目的而进行了任意定义。只要 能够适当实现特定功能及其关系就可以定义替选的边界。
[0097] 以上对特定实施例的描述将全面揭示本发明的一般特性,通过应用本【技术领域】的 知识,其他人能够针对各种应用容易地对这些特定实施例进行修改和/或适用而无需不适 当的实验,这并不背离本发明的一般概念。因此,基于这里所给出的教导和指引,这样的适 用和修改意在处于所公开实施例的等同形式的含义和范围之内。所要理解的是,这里所使 用的短语或术语是为了描述而非限制,从而本说明书的术语或短语应由本领域技术人员借 助于所述教导和指引进行解释。
[0098] 本发明的宽度和范围不应当由以上所描述的任意示例性实施例所限制,而是仅应 当依据权利要求及其等同形式来确定。
【权利要求】
1. 一种从数字图像中提取水印的方法,包括: (a) 将所述数字图像变换为具有频域中的系数的系数矩阵; (b) 基于投影的系数块分布中的每个系数块中的水印指示符系数集合确定所述数字图 像是否带有水印,其中所述投影的系数块分布基于所述系数矩阵中的系数偏移量;和 (c) 从投影的水印块分布的水印块获取水印,其中所述投影的水印块分布基于所述投 影的系数块分布的块偏移量。
2. 如权利要求1所述的方法,其中所述确定所述数字图像是否带有水印包括: (i) 选择所述系数矩阵中的投影的系数块偏移量; (ii) 基于所述系数矩阵中的多个投影的系数块中的每个中的水印指示符系数集合确 定统计测量;并且 (iii) 将所述统计测量与预定阈值进行比较以确定所述数字图像是否带有水印。
3. 如权利要求2所述的方法,其中所述统计测量包括所述水印指示符系数集合中的系 数的标准偏差。
4. 如权利要求2所述的方法,进一步包括: 重复步骤(i)、(ii)和(iii),改变所述投影的系数块偏移量直至以下中的一个: 在步骤(iii)中确定所述数字图像带有水印;或者 已经对系数块区域内的所有所述投影的系数块偏移量重复了步骤和(iii)。
5. 如权利要求1所述的方法,其中获取水印包括: 生成多个投影的水印块分布,其中每个所述投影的水印块分布基于不同的系数块偏移 量; 从每个投影的水印块分布提取水印单元矢量集合; 选择所提取的水印单元矢量集合中的一个;并且 基于所选择的所述一个水印单元矢量集合确定所述水印。
6. 如权利要求5所述的方法,其中所述选择所述水印单元矢量集合中的一个包括: 对每个所述水印单元矢量集合生成相关性量度;并且 基于所述相关性量度选择所述一个水印单元矢量集合。
7. -种用于从数字图像中提取水印的系统,包括: 图像变换模块,其耦合到至少一个处理器并且被配置为使用所述至少一个处理器将所 述数字图像变换为频域中的系数的多个系数块; 水印指示符检测模块,其耦合到所述至少一个处理器并且被配置为使用所述至少一个 处理器基于投影的系数块分布中的每个系数块中的预定水印指示符系数集合来确定所述 数字图像是否带有水印;和 水印提取器模块,其耦合到所述至少一个处理器并且被配置为使用所述至少一个处理 器从投影的水印块分布的投影的水印块获取水印,其中所述投影的水印块分布基于所述投 影的系数块分布。
【文档编号】H04N1/32GK104112249SQ201410265221
【公开日】2014年10月22日 申请日期:2010年1月15日 优先权日:2009年1月15日
【发明者】维维克·塞沙德里, 基兰·辛格·帕尼萨, 兰韦尔·库纳 申请人:谷歌公司