CN112789650B - 检测半透明图像水印 - Google Patents
检测半透明图像水印 Download PDFInfo
- Publication number
- CN112789650B CN112789650B CN201980012645.8A CN201980012645A CN112789650B CN 112789650 B CN112789650 B CN 112789650B CN 201980012645 A CN201980012645 A CN 201980012645A CN 112789650 B CN112789650 B CN 112789650B
- Authority
- CN
- China
- Prior art keywords
- image
- encoded
- pixels
- possibly
- watermark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims abstract description 62
- 230000004044 response Effects 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 11
- 239000003086 colorant Substances 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000010801 machine learning Methods 0.000 claims description 4
- 238000013145 classification model Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims 1
- 238000012549 training Methods 0.000 description 27
- 238000004590 computer program Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000010191 image analysis Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 238000002156 mixing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/467—Embedding additional information in the video signal during the compression process characterised by the embedded information being invisible, e.g. watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
- G06T1/005—Robust watermarking, e.g. average attack or collusion attack resistant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0051—Embedding of the watermark in the spatial domain
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0061—Embedding of the watermark in each block of the image, e.g. segmented watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0065—Extraction of an embedded watermark; Reliable detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0083—Image watermarking whereby only watermarked image required at decoder, e.g. source-based, blind, oblivious
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V2201/00—Indexing scheme relating to image or video recognition or understanding
- G06V2201/10—Recognition assisted with metadata
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
Abstract
用于用预测模型检测捕获的源图像中水印图像的存在的***、方法、设备和其他技术。该技术可以涉及获得第一图像的操作,其中,第一图像是捕获的源图像的缩放版本。分析第一图像中的像素的颜色以确定第一图像中的可能已编码像素的编码值,并且分析第一图像中的可能已编码像素的编码值的图案以确定第一图像的可能已编码区域。确定第一图像的可能已编码区域的特征的值,并且预测模型处理特征值以生成指示水印图像是否被编码在第一图像中的预测。该预测被存储并提供给控制器以做出关于解码过程的调用的决定。
Description
技术领域
本申请一般地涉及检测半透明图像水印。
背景技术
在诸如因特网的联网环境中,第一方内容提供者可以提供用于在电子文档中呈现的信息,例如,网页或应用界面。这些文档可以包括由第一方内容提供者提供的第一方内容和由第三方内容提供者提供的第三方内容。
可以使用各种技术将第三方内容添加到电子文档。一些文档包括指示在其处呈现文档的客户端计算机直接从第三方内容提供者请求第三方内容项的标签。其他文档包括指示客户端计算机调用与多个第三方内容提供者合作的中间服务以返回从一个或多个第三方内容提供者选择的第三方内容项的标签。在一些情况下,动态选择在电子文档中呈现的第三方内容项,并且为文档的给定服务选择的特定第三方内容项可以不同于为同一文档的其他服务选择的第三方内容项。
发明内容
本说明书描述了用于预测图像是否可能用或没有用视觉上不可感知的水印图像编码的基于计算机的***、方法、设备和其他技术。如下面更详细地解释的,通过首先处理图像的特征以预测其是否包含水印,通过避免尝试对未检测到水印的图像进行解码,可以在解码过程中节省大量的计算时间和费用。
在一些示例中,请求服务***以识别与源图像相关联的元数据。源图像可以是由第三方内容提供者服务并在用户计算设备处的网页或本机应用的图形界面中呈现的图像(尽管源图像也可以源自各种其他上下文)。可以在通常通过水印图像在源图像上的alpha混合将水印图像编码在源图像中的上下文中渲染源图像。例如,可以通过散布空白非编码像素将QR码转换为水印图像,使得QR码中的每个原始(已编码)像素直接与所有空白像素邻接。可以使QR码中的所有黑色像素部分透明,并且在水印图像中具有很高的透明度值,使得当它们覆盖在大多数源图像上时对于大多数用户而言是视觉上不可感知的,并且可以使所有白色和空白像素完全透明。QR码可以包括或引用关于源图像的来源的信息、其被服务的时间和/或其他相关信息或元数据。在某些情况下,可以捕获源图像的屏幕快照并将其提供给服务***以进行解码,例如,以恢复QR码及其编码数据。
然而,因为可以请求服务***来处理来自广泛范围的客户端或用户的屏幕快照,所以一些屏幕快照可能描绘没有用水印图像编码的源图像。其他屏幕快照可能会描绘已经用水印图像编码的图像,但是其编码已被损坏(例如,由于来自图像压缩的噪声的存在或由于故意的混淆/攻击)到使成功解码的前景变得不可能或昂贵到令人望而却步的程度。编码和对应解码过程本身的性质(其涉及基于屏幕快照图像中对应像素相对于邻接像素的阴影或着色来估计水印图像中的像素的值)可能是不精确的并且使一些已编码源图像即使没有噪声也无法解码。为了帮助服务***辨别给定屏幕快照中描绘的源图像是否能够成功解码,本说明书中描述的技术提供了一种预测模型,该预测模型用于分析源图像的唯一特征集,其允许生成指示源图像是否可能包含或不包含水印图像的预测。然后可以将该预测用于多种目的,包括确定是否尝试对源图像进行解码和/或确定不成功解码可能是起初源图像不包含可以解码的水印的结果,或者可能是噪声损坏水印或其他原因的结果。
本文公开的主题的一些实施方式包括计算机实现的方法。该方法可以包括由计算***获得第一图像,诸如在用户(例如,客户端)计算设备处捕获的源图像的屏幕快照或屏幕快照/源图像的缩放版本。该计算***分析第一图像中的像素的属性(例如,颜色、阴影)以确定第一图像中的可能已编码像素的编码值。该***分析第一图像中的可能已编码像素的编码值的图案(pattern),以确定第一图像的可能已编码区域。该***然后可以确定第一图像的可能已编码区域的特征的值。将第一图像的可能已编码区域的特征的值提供给预测模型,并由预测模型进行处理以生成指示水印图像是否被编码在第一图像中的预测。然后,该***可以以一种或多种方式应用和输出预测。
这些和其他实施方式可以进一步包括以下特征中的一个或多个。
生成预测可以包括选择指示水印图像被编码在第一图像中或者水印图像没有被编码在第一图像中的二进制值。
生成预测可以包括生成量化水印图像被编码或没有被编码在第一图像中的可能性的数值预测。
输出预测可以包括将预测存储在计算***的存储器中或提供预测以呈现给用户中的至少一个。
输出预测可以包括将预测提供给控制器,该控制器被配置为至少基于该预测来确定是否对第一图像或从其导出第一图像的第二图像应用解码过程以恢复水印图像。
控制器可以被配置为响应于识别出预测指示水印图像被编码在第一图像中,对第一图像或第二图像应用解码过程以恢复水印图像。
控制器可以被配置为响应于识别出预测指示水印图像没有被编码在第一图像中,不对第一图像或第二图像应用用于恢复水印图像的解码过程。
获得第一图像可以包括从用户的计算设备获得屏幕快照图像,该屏幕快照图像在网页或本机应用的图形用户界面中显示服务内容。
该方法可以进一步包括以下动作:获得以未知缩放级别渲染的第二图像;识别第二图像的多个可能缩放级别;以及从第二图像生成包括第一图像的多个缩放图像,其中,生成每个缩放图像包括(i)从多个缩放级别中选择不同的可能缩放级别,以及(ii)如果已经以不同的可能缩放级别渲染了第二图像,则将第二图像缩放实现共同目标缩放级别所需的量。
该方法可以进一步包括,对于多个缩放图像中的每个缩放图像:分析缩放图像中的像素的颜色以确定缩放图像中的可能已编码像素的编码值;分析缩放图像中的可能已编码像素的编码值的图案,以确定缩放图像的可能已编码区域;确定缩放图像的可能已编码区域的特征的值;以及基于一个或多个准则,确定提供第一图像的可能已编码区域的特征的值,而不是多个缩放图像中的其他缩放图像的可能已编码区域的特征的值,以供预测模型处理。
分析第一图像中的像素的颜色以确定第一图像中的可能已编码像素的编码值可以包括,对于第一图像中的所有或一些可能已编码像素中的每一个,将可能已编码像素的颜色与第一图像中与该可能已编码像素相邻的一个或多个像素的相应颜色进行比较。
分析第一图像中的可能已编码像素的编码值的图案以确定第一图像的可能已编码区域可以包括:识别包含可能已编码像素的一个或多个块的区域,可能已编码像素的一个或多个块的编码值被确定为可能对应于第一图像中的水印图像的一个或多个编码实例。
识别包含其编码值被确定为可能对应于第一图像中的水印图像的一个或多个编码实例的可能已编码像素的一个或多个块的第一图像的区域可以包括:定位出现在每个块中的预定义比特图案的实例。
确定第一图像的可能已编码区域的特征的值可以包括:对于每个可能已编码区域,对可能已编码区域中的其编码值被确定为对应于水印图像的不同编码实例的可能已编码像素的块的数量进行计数;其中,第一图像的可能已编码区域的特征选自包括以下各项的组:可能已编码区域中的计数块的平均数量、可能已编码区域中的计数块的最大数量、识别的可能已编码区域的数量、可能已编码区域中的计数块的数量的标准差。
第一图像可以是第二图像的缩放版本。该方法可以进一步包括以下动作:将第一图像的可能已编码区域映射到第二图像的对应区域;确定第二图像的每个映射区域中的像素中的一个或多个颜色通道中的每一个的方差;对于每个颜色通道,确定第二图像的映射区域中的颜色通道的最小方差;以及生成指示水印图像是否被编码在第一图像中的预测包括:进一步处理第二图像的每个映射区域中的像素中的一个或多个颜色通道中的每一个的最小方差。
预测模型可以包括二进制分类模型。
预测模型可以包括神经网络。
本文公开的主题的一些实施方式包括对应计算机***、装置和记录在一个或多个计算机存储设备上的计算机程序(例如,计算机可读介质),每个被配置为执行方法的动作。一个或多个位置中的一个或多个计算机的***可以被配置为通过在***上安装软件、固件、硬件或它们的组合来执行特定的操作或动作,软件、固件、硬件或它们的组合在运行时使***执行动作。一个或多个计算机程序可以被配置为通过包括指令来执行特定的操作或动作,这些指令在由数据处理装置(例如,一个或多个处理器)运行时使该装置执行动作。
在某些情况下,本文描述的主题的一些实施方式可以实现以下优点中的一个或多个。首先,即使当创建水印图像时源图像是未知的,***也可以生成水印图像以增强任意源图像。由于水印图像可以覆盖在源图像上以在远离***的客户端计算机处呈现给用户,因此在将水印图像发送到客户端计算机之前,***无需直接获得或修改源图像。第二,即使没有源图像的先验知识,***也可以恢复水印图像,或者可以恢复从其导出水印图像的编码图像,从而使***能够对任意图像进行解码而无需知道它们源自何处。第三,水印图像可以是基本上透明的,以便当水印图像渲染在源图像上时对用户而言是不可感知的,使得水印图像不会降低源图像的感知视觉质量。第四,可以采用预测模型来预测可能已编码源图像是否已经用或没有用水印图像编码。通过在尝试完成对源图像的解码过程之前首先生成这样的预测,可以通过避免尝试对可能起初从未被编码的图像进行解码来减少计算时间和费用。
本说明书中描述的主题的特定实施方式的细节在附图和以下描述中阐述。根据描述、附图和权利要求书,主题的其他特征、方面和优点将显而易见。
附图说明
图1是用于使用被布置为在文档中的一个或多个源图像上显示的水印图像来增强服务于客户端设备的电子文档的计算环境和被配置为实现用于水印预测和解码的操作的服务器***的框图。
图2A-2J示出了用于生成半透明水印图像并在源图像上盲编码水印图像的示例技术。
图3是用于用水印图像来增强在服务于客户端计算机的文档中呈现的源图像,随后对包含已经用水印编码的源图像的屏幕快照进行解码的示例过程的流程图。
图4是用于从编码图像生成水印图像的示例过程的流程图。
图5是二维二进制快速响应码(QR码)形式的示例编码图像的图示。
图6是用于预测捕获的源图像(例如,屏幕快照)是否用一个或多个水印图像编码的示例过程的流程图。
图7是用于识别图像中可能已经用一个或多个水印图像编码的区域的示例过程的流程图。
图8是处理与可能已编码源图像相关联的各种特征的值以生成水印预测的水印预测模型的图。
图9提供了可能已编码源图像的未缩放版本和缩放版本的图示,以及在可能已编码源图像中识别的可能已编码区域的指示。
图10描绘了用于存储一组缩放级别的可能已编码源图像的示例数据库表的简图。
图11是用于训练预测模型以生成指示可能已编码源图像是否可能用或没有用水印图像编码的预测的示例过程的流程图。
图12是可以与本档文中描述的计算机实现的方法和其他技术结合使用的计算***的框图。
在各个附图中,相似的参考编号和标记指示相似的元件。
具体实施方式
本说明书描述了用于检测半透明水印图像的技术,半透明水印图像已经被混合在源图像上以便使水印在正常观看条件下对于人类用户而言在视觉上是不可感知的。检测过程可以采用预测模型,该预测模型处理可能已编码源图像的特征以生成指示图像是否可能包含或不包含水印的预测。
参考图1,描绘了计算环境100的图,在其中对源图像加水印以对与该源图像相关联的信息进行数字编码,并且在其中对已编码源图像进行解码以恢复水印或访问由水印引用(reference)的信息。环境100包括服务器***102、客户端计算机104以及一个或多个源图像提供者106a-n的计算***。服务器***102、客户端计算机104和源图像提供者106a-n通过一个或多个网络(诸如,因特网或局域网(local area network,LAN))可通信地连接。通常,客户端计算机104被配置为生成对电子文档的请求并将其发送到服务器***102。基于来自客户端计算机104的请求,服务器***102生成响应(例如,电子文档)以返回至客户端计算机104。给定响应可以引用要在客户端计算机104处渲染(render)以向用户显示的选择的源图像128a,其中,源图像128a由源图像提供者106a-n中的一个提供。在一些实施方式中,服务器***102可以利用不同的(distinct)、半透明的水印图像126来增强服务于客户端计算机104的响应,水印图像126被布置为在源图像128上显示在客户端计算机104处的响应文档的呈现中。在其他实施方式中,服务器***102可以被配置为以与客户端计算机104将水印图像126放置在源图像128上(例如,通过将半透明水印图像126阿尔法混合(alpha-blending)在源图像128上的前景中)产生的编码相同或相似的方式,采用源图像编码器138在服务器***102处用水印图像126对源图像128加水印或编码,从而将源图像128和水印图像126合并为服务于客户端计算机104的单个已编码源图像。图1的以下讨论集中于先前的实施方式,其中,不同的水印图像126服务于客户端计算机104,以供客户端计算机104在源图像128上方进行渲染。
客户端计算机104通常可以是向一个或多个人类用户呈现图像和其他内容的任何类型的计算设备。客户端计算机104可以包括向服务器***102做出请求并从服务器***102接收响应的应用,诸如web浏览器应用。该应用可以运行来自服务器***102的响应,诸如网页代码或其他类型的文档文件,以将响应呈现给客户端计算机104的一个或多个用户。在一些实施方式中,客户端计算机104包括电子显示设备(例如,LCD或LED屏、CRT监视器、头戴式虚拟现实显示器、头戴式混合现实显示器)或耦合到电子显示设备,该电子显示设备向客户端计算机104的一个或多个用户显示来自渲染的响应的内容。显示的内容可以包括选择的源图像128a和以基本上透明的方式显示在选择的源图像128a上方的水印图像126。在一些实施方式中,客户端计算机104是笔记本计算机、智能电话、平板计算机、台式计算机或智能手表或其他可穿戴设备。
在一些实施方式中,在对客户端计算机104的响应中提供的源图像128是例如不在由响应的第一方内容提供者提供的内容中的第三方内容项。例如,如果响应是网页,则网页的创建者可以包括被配置为由来自不同于网页的创建者的第三方内容提供者(例如,图像存储库的提供者)的源图像填充的插槽(slot)。在另一个示例中,第一方内容提供者可以直接链接到第三方源图像128。客户端计算机104可以直接地或经由中间服务(诸如,由服务器***102或另一个服务器***提供的服务)间接地从源图像提供者106a-n中的一个的对应计算***请求源图像128。
服务器***102被配置为用电子文档和将在源图像128a上显示在电子文档中的半透明水印图像126响应来自客户端计算机104的请求。服务器***102及其每个组件可以实现为在一个或多个位置的包括数据处理装置的一个或多个计算机。服务器***102可以包括前端子***108、图像生成子***110、响应格式化器116、图像分析和解码器模块118、响应记录数据库120、水印预测模型132、模型训练引擎134、控制器136和源图像编码器138中的一个或多个。每个子***可以在包括数据处理装置(诸如,一个或多个处理设备)的硬件上实现。组件108-120、132-138中的每一个被配置为执行本文所述的相应操作。例如,可以由存储在一个或多个计算机可读存储设备上的存储器中的指令来定义与每个组件108-120和132-138相关联的操作,并且当指令由服务器***102的一个或多个处理器运行时可以执行操作。另外或可替代地,可以使用软件、硬件、固件或软件、硬件和固件的组合来实现操作。尽管本文通过示例的方式将一些操作描述为由组件108-120或132-138中的一个特定组件执行,但在其他实施方式中,组件108-120中的两个或更多个组件的一些或全部操作可以被合并,并替代地由单个组件执行。在又一其他实施方式中,组件108-120或132-138中的任何一个的操作可以被划分在两个或更多个组件中。
服务器***102可以被配置为执行图2A-2I所示的技术以及过程300、400、600、700和1100。下面参考图3、4、6、7和11进一步详细描述过程300、400、600、700和1100的操作以及其他技术。下面是服务器***102及其组件108-120、132-138的概述,其后关于图2-11描述了由这些组件执行的操作和其他技术的更多细节。
前端子***108提供用于通过一个或多个网络进行通信的接口。前端子***108从客户端计算机104接收请求,并将对请求的响应连同与该请求相关联的任何内容(诸如,水印图像以及可选地源图像)发送到客户端计算机104。前端子***108还可以与源图像提供者106a-n的计算***通信,例如,以获得要服务于客户端计算机104的源图像128a。前端子***108还可以与服务器***102的组件112-120、132-138中的每一个进行通信,并包括用于协调服务器***102的组件112-120、132-138中的每一个之间的活动的控制器136。为了促进通过网络与设备的通信,前端子***108可以包括有线(例如,金属的或光学的)、无线或有线和无线通信接口的组合,使前端子***能够连接到合适的通信网络。
图像生成子***110被配置为从输入数据生成图像。具体地,图像生成子***110包括编码输入生成器112和水印图像生成器114。
编码输入生成器112处理明文数据项122以生成对明文数据项122进行编码的编码图像124。明文数据项122可以是能够在编码输入生成器112的约束内被编码的任何数据。例如,明文数据项122可以是具有n个字符的最大长度的文本样本或串,这是因为编码图像124的大小可能能够对仅达n个字符的预定最大长度的文本样本提供无损编码。在一些实施方式中,明文数据项122包括会话识别符,该会话识别符唯一地识别客户端计算机104和服务器***102之间的网络会话,在该网络会话期间,响应服务于来自客户端计算机104的请求。
在一些实施方式中,明文数据项122包括或引用识别服务于客户端计算机104的特定源图像128a的源图像数据或与源图像128a相关联的信息(例如,指示哪个源图像提供者106a-n提供了服务于客户端计算机104的特定源图像128a的信息,以及指示何时服务或请求源图像128a的时间戳)。在一些实施方式中,响应记录数据库120存储与关于源图像128的此类信息或服务于特定请求的响应相关的数据,以便使可经由会话识别符或由明文数据项122表示的其他信息来访问详细信息。响应记录数据库120还可以将会话识别符与源图像数据相关联,从而使源图像数据可通过使用由明文数据项122表示的会话识别符查询数据库120被访问。然后,由于使用来自明文数据项122的会话识别符,用户可以识别例如来自哪个源图像提供者106a-n的哪个源图像128a-n在什么时候服务于客户端计算机104。
编码图像124是对明文数据项122进行编码的图像。在一些实施方式中,编码图像124是表示明文数据项122的矩阵型条形码。合适的矩阵型条形码的一个示例是快速响应码(Quick Response Code,QR码)。就像素的行和列的数量而言,编码图像124可以具有预定义大小。编码图像124中的每个像素可以对二进制比特的数据进行编码,其中,每个比特的值由不同的颜色表示。例如,对二进制值“1”进行编码的像素可以是黑色的,而对二进制值“0”进行编码的像素可以是白色的。在一些实施方式中,编码图像124的最小编码单元实际上可以大于单个像素。但是出于本文描述的示例的目的,假设最小编码单元是单个像素。然而,应当理解,本文描述的技术可以扩展到最小编码单元是多个像素的集合(例如,2×2或3×3像素的集合)的实施方式。
图像生成子***110还包括水印图像生成器114。水印图像生成器114被配置为处理编码图像124以生成半透明水印图像126。半透明水印图像126是从编码图像124导出的,并且也对明文数据项122进行编码。然而,水印图像126的透明度、颜色、编码像素的排列和/或其他特征可以从编码图像124的透明度、颜色、编码像素的排列和/或其他特征改变。例如,尽管编码图像124可以是均匀不透明的并且由彼此紧密相邻的编码像素组成,但是水印图像126可以包括一些完全透明的像素和一些部分透明的像素。此外,水印图像126中的编码像素可以相对于彼此间隔开,使得每个编码像素被非编码像素(即,“空白”像素)包围。可执行编码图像124到水印图像126的变换,使得在将水印图像126覆盖并合并在背景源图像128a上之后,可以例如通过重建编码图像124或水印图像126对编码信息进行解码。
在一些实施方式中,可以直接从明文数据122生成水印图像126,而无需在实现水印图像126的途中显式地生成编码图像124作为中间操作。此外,对于服务器***102采用源图像编码器138直接将水印图像126合并在源图像128a上方以将合并的图像服务于客户端计算机104的实施方式,服务器***102可以直接在源图像128中编码水印,而无需显式地生成编码图像124、水印图像126或两者。然而,为了清楚可以如何实现这种水印,本说明书讨论了可以如何显式地生成编码图像124和水印图像126的细节。对于本领域技术人员来说如何合并这些操作中的一个或多个以提供源图像128a的编码/加水印的更直接形式将是显而易见的。
响应格式化器116被配置为在客户端对电子文档的请求的答复中生成返回到客户端计算机104的响应。响应可以包括一个或多个内容项,包括第一方内容项和第三方内容项,它们共同形成电子文档,诸如网页、应用界面、PDF、演示幻灯片或电子表格。在一些实施方式中,响应包括指定要如何布置和显示各种内容项的主文档。诸如超文本标记语言(hypertext markup language,HTML)页面的主文档可以指要在文档的呈现中显示的第一方内容项和第三方内容项。在一些实施方式中,响应格式化器116被配置为将计算机代码添加到主文档,该计算机代码在运行响应时指示客户端计算机104在源图像128a上显示水印图像126的一个或多个实例,例如,向源图像128a添加人类用户基本不可感知的水印。因为水印图像126具有完全和部分透明的像素,所以渲染电子文档的客户端计算机104处的应用可以执行混合技术,以根据水印图像126的指定透明度将水印图像126覆盖在源图像128a上。例如,响应格式化器116可以添加代码,该代码指导客户端计算机104将源图像128a作为背景图像显示在电子文档的第三方内容插槽中,并将水印图像126的一个或多个实例作为前景图像显示在源图像128a上。
服务器***102还包括图像分析和解码器模块118。图像分析和解码器模块118被配置为对已编码/加水印源图像进行解码,例如,以重建编码图像124或水印图像126,以恢复源图像128a的非编码版本和/或恢复明文数据122,使得可以读取来自明文数据122的信息和/或可以基于来自明文数据122的信息访问来自响应记录数据库120的适当记录。已编码/加水印源图像是由客户端计算机104在源图像128a上渲染水印图像126而得到的图像。即使水印图像126可以与源图像128a分离,但是由图像分析和解码器模块118处理的已编码源图像130可以是示出在源图像128a上混合的水印图像126的合并图像。例如,客户端计算机104的用户可以响应于对电子文档的请求而从源图像提供者106a-n中的一个接收不适当或不相关的源图像128a。用户可以捕获已编码源图像130的屏幕快照(screenshot),并将屏幕快照发送到服务器***102以进行分析,例如,以查询源图像128a的来源。因为屏幕快照示出被水印图像126覆盖的原始源图像128a,所以图像分析和解码器模块118可以处理屏幕快照以恢复明文数据项122的编码表示,而该编码表示又可以被解码以恢复明文数据项122本身。然后,***102可以将恢复的明文数据项122用于各种目的,例如,来查询响应记录数据库120以查找关于源图像128a及其来源的详细信息,或关于其中源图像128a被服务于客户端计算机104的特定客户端会话的其他信息。图像分析和解码器模块118生成的明文数据项122的编码表示可以是例如恢复的水印图像126或恢复的编码图像124。
在某些情况下,包括图像分析和解码器模块118的服务器***102可以接收分析可能已编码/加水印的源图像的请求。如本文所使用的,术语“可能”是指项目的条件,该条件可归属于该项目,但是对于处理该项目的处理实体(例如,服务器***102/解码器118)来说,该条件仍然是未知的。也就是说,项目的可能条件是处理实体未知其真相的项目的候选条件。处理实体可以执行处理以识别项目的可能(候选)条件,做出关于可能(候选)条件的真相的预测,和/或识别表现出特定条件的可能(候选)项目。例如,可能已编码源图像是可能用水印编码的源图像,但是服务器***102最初不知道该图像是否已加水印。因此,可能用水印对源图像进行编码是源图像的候选条件,并且源图像是表现出用水印编码的条件的候选项。可能已编码源图像可以由用户捕获源图像的屏幕快照并将图像提供给服务器***102以进行分析而产生,但是没有将指示关于图像是否已编码/加水印的确认的更多的信息。在服务器***102接收到可能已编码/加水印的源图像的这些情况下,解码器118可以与水印预测模型132和控制器136协作,以在解码器118完成对可能已编码源图像进行解码的一次或多次尝试之前,预测可能已编码源图像是否可能包含或不包含水印。如关于其他附图进一步详细说明的,解码器118可以识别可能已编码源图像的可能已编码区域,并且可以确定可能已编码源图像的特征的值。这些特征的值然后可以由水印预测模型132处理,以生成指示可能已编码源图像是否已经用水印图像126编码的预测。控制器136可以使用该预测来确定解码器118是否应该尝试完成对可能已编码源图像的解码过程。水印预测模型132可以在实现服务器***102的一个或多个位置中的一个或多个计算机上实现。在一些示例中,模型132是二元分类器。在一些示例中,模型132是神经网络(例如,具有操作的输入层、一个或多个隐藏层和输出层的前馈神经网络)或其他机器学习模型。可以由模型训练引擎134在样本训练数据上训练模型132。
关于计算环境100以及用于对图像中的水印进行编码和解码的技术的附加信息在美国专利申请序列号15/712,395(公开为美国预授权专利申请公开号2018/0270388)中描述,该申请的全部内容通过引用整体合并于此。
图2A-2I示出了示例技术,该示例技术用于生成对明文数据进行编码的水印图像,并且用于对已编码源图像进行解码以恢复明文数据的编码表示(例如,从已编码源图像重建编码图像、水印图像或明文数据中的一个或多个)。下面关于图3和图4的流程图中表示的过程来更详细地讨论图2A至图2I中的每一个。具体地,图3是用于使用半透明水印图像来增强在服务于客户端计算机的电子文档中呈现的源图像的示例过程300的流程图。过程300可以由一个或多个计算机的***(例如,服务器***102)来执行。
在一些实施方式中,过程300开始于阶段302,在该阶段***接收明文数据,例如,明文数据项122。明文数据通常是能够在诸如QR码的编码图像中进行编码的任何数据。在一些实施方式中,明文数据是会话识别符,其唯一地识别客户端计算机和***之间的逻辑会话,或者识别响应于来自客户端计算机的请求而服务的电子文档。在一些实施方式中,明文数据包括或引用识别服务于客户端计算机的特定源图像或与该源图像相关联的信息的源图像数据。
在阶段304,***的编码输入生成器(例如,编码输入生成器112)从明文数据生成编码图像。编码图像是对明文数据进行编码的图像。在一些实施方式中,编码图像是表示明文数据的矩阵型条形码。合适的矩阵型条形码的一个示例是快速响应码(QR码),诸如,图5中所描绘的QR码500。就像素的行和列的数量而言,编码图像可以具有预定义大小。编码图像中的每个像素可以对二进制比特的数据进行编码,其中,每个比特的值由不同的颜色表示。例如,对二进制值“1”进行编码的像素可以是黑色的,而对二进制值“0”进行编码的像素可以是白色的。
在图2A中示出了简单编码图像202的一个示例。该示例中的编码图像202是具有三行和三列像素的二维条形码。当然,具有更多或更少行和列的像素的其他大小的编码图像也是可能的。在编码图像202中,一些像素具有第一二进制颜色,即黑色,并且其他像素具有第二二进制颜色,即白色。每个像素的颜色由颜色值定义。位于(行,列)坐标(1,2)、(3,1)和(3,3)的像素例如是白色的,而编码图像202中的其他像素是黑色的。
另外,每个像素可以具有指示像素的透明度级别的透明度值(也称为“阿尔法”值)。透明度值可以归一化为范围[0,1],其中,值'0'表示完全透明,值'1'表示完全非透明(不透明),'0'和'1'之间的中间值表示部分透明度。在一些实施方式中,编码图像202是完全非透明的,使得编码图像202的像素中的每一个具有透明度值“1”。然后,图像渲染应用可以使用透明度值来确定前景图像覆盖并混合在背景图像上时产生的像素的合成颜色。例如,在某些混合过程中,如果背景像素的颜色值为“bgRGB”,前景像素的颜色值为“fgRGB”,并且透明度(阿尔法)值'fgA'归一化为范围[0,1],则最终渲染以显示给用户的合成像素将具有fgRGB*fgA+bgRGB*(1–fgA)的颜色值。如果“fgA”的值为零,则公式将压缩为bgRGB*(1–fgA)。例如,图2F示出了示例背景图像212(例如,源图像),其中每个像素具有由符号CnRGB识别的颜色值。
图2G示出了已编码源图像214,该已编码源图像214已经使用前段所述的混合技术将水印图像210(前景图像)覆盖在源图像212(背景图像)上而生成,其中,已编码源图像214中某些编码像素的颜色是来自水印图像210的部分透明前景像素与来自源图像212的对应背景像素颜色的混合。应该注意,图2G中所示的颜色值和表达式假设前景水印图像中的阴影像素为黑色的,因此该像素的前景RGB值为(0,0,0)。因此,将前景水印图像和背景源图像混合得到的合成像素的完整表达式从'fgRGB*fgA+bgRGB*(1-fgA)'简化为简单的'bgRGB*(1-fgA)'。因此,如果来自水印图像的前景像素具有颜色(0,0,0)和透明度值Ba,并且背景像素的颜色为CnRGB,则该像素的合成颜色值由表达式CnRGB*(1–Ba)定义。如果来自水印图像的前景像素具有颜色(0,0,0)和透明度值0,并且背景像素的颜色为CnRGB,则该像素的合成颜色值为CnRGB。
在阶段306,***的水印图像生成器(例如,水印图像生成器114)生成水印图像。水印图像是包括具有两个或更多个不同级别的透明度的像素的半透明图像以对明文数据项进行编码。对于双级别透明度,水印图像可以由具有第一透明度级别(例如,部分透明)的第一像素集和具有第二透明度级别(例如,完全透明)的第二像素集组成。第一像素集可以是编码像素,每个编码像素表示来自编码图像的具有第一颜色值(诸如,黑色)的相应像素。第二像素集可以包括两个子集的像素,即编码像素和空白像素。尽管两个子集中的编码像素和空白像素可以共享相同的透明度级别,但是仅编码像素子集表示来自编码图像的具有第二颜色值(诸如,白色)的像素。空白像素不表示来自编码图像的任何像素,而是散布在第一像素集和第二像素集的编码像素当中,以促进从已编码源图像中恢复信息,该已编码源图像随后可以通过将水印图像覆盖在背景图像上而得到。
在一些实施方式中,***根据图4的流程图中描绘的示例过程400执行阶段306。过程400是用于从编码图像生成水印图像的过程。过程400可以由一个或多个计算机的***(例如,服务器***102)执行,并且具体地由水印图像生成器(例如,水印图像生成器114)执行。
在阶段402,水印图像生成器识别编码图像(诸如,编码图像202)。
可选地,在阶段404,水印图像生成器将编码图像归一化。将编码图像归一化可以涉及将编码图像中的所有或一些像素的相应颜色值和透明度值映射到预定义的颜色和/或透明度值。例如,如果在原始编码图像中,通过像素颜色来区分被编码在图像中的二进制值,则在归一化编码图像中,可以通过像素透明度来区分被编码在归一化图像中的二进制值。
图2B和2C描绘了将编码图像归一化的一个示例。具体地,图2B示出了原始编码图像202的示例表示204,其中,黑色像素都具有颜色值BRGB并且具有透明度值BA,白色像素都具有颜色值WRGB并且具有透明度值WA。在一些实施方式中,WA和BA是相同的。图2C示出了归一化编码图像206,其中,像素的颜色和透明度已经被变换,使得黑色像素和白色像素被分配为公共颜色BRGB,但是通过它们的透明度来区分。黑色像素被分配透明度值BA,而白色像素被分配透明度值“0”,即完全透明。
再次参考图4,在阶段406,水印图像生成器生成初始水印画布。在一些实施方式中,初始水印画布是具有预定义大小并提供用于创建水印图像的起点的初步图像。如图2D所示,示例初始水印画布是画布208。画布208具有与归一化编码图像206相同的行数,但是使其具有是归一化编码图像206的两倍的列数。另外,初始水印画布208中的所有像素都是具有相同颜色和透明度级别的空白像素。空白像素是不对来自编码图像的信息进行编码并且不与编码图像中的任何像素相对应的像素。在一些实施方式中,空白像素具有与归一化编码图像206中的第二像素集相同的透明度。例如,画布208中的空白像素是完全透明的,如每个像素的相应括号(颜色值,透明度值)中的后一个值所指示的。
在阶段408,水印图像生成器使用归一化编码图像将编码像素添加到初始水印画布以创建最终水印图像。编码像素是水印图像中的、与空白像素相比,确实对来自编码图像的信息进行编码的像素。水印图像中的每个编码像素对应于归一化编码图像中的像素中的一个。在一些实施方式中,通过用来自归一化编码图像的编码像素替换初始水印画布中的空白像素的子集来生成最终水印图像。例如,初始水印画布中的给定空白像素可以是完全透明的。如果将像素作为编码像素,则该像素被分配来自要被编码的归一化编码图像的对应像素的透明度。在一些情况下,如果来自归一化编码图像的对应像素是完全透明的,则该像素可以保持完全透明。在其他情况下,如果来自归一化编码图像的对应像素是部分透明的,则可以将水印像素的透明度调整为部分透明状态。
图2E示出了水印图像生成器基于归一化编码图像206从初始水印画布208生成的水印图像210的一个示例。具有图案化(patterned)背景的水印图像210中的像素中的每一个表示编码像素。具有非图案化白色背景的水印图像210中的像素中的每一个表示空白像素。如水印图像210所示,编码像素分布在空白像素当中,使得每个编码像素在顶部、底部、左侧和/或右侧与至少两个空白像素邻接。通常,水印图像生成器将编码像素分布在水印图像中,使得每个编码像素与至少一个、两个、三个、四个或更多个空白像素直接相邻。这种排列可以允许稍后在没有源图像的先验知识的情况下从通过水印图像增强的源图像中恢复编码信息,如下文进一步描述的。在图2E的示例中,水印图像生成器已经通过从归一化编码图像中的像素的排列开始,将空白像素直接***奇数行中每个编码像素的右侧,并将空白像素直接***偶数行中每个编码像素的左侧,以便使偶数行中的编码像素相对于奇数行中的编码像素移位一个像素,来在水印图像中散布编码像素。效果是使编码像素交错,并用空白像素包围它们,如最终水印图像210所示。因此,在最终水印图像210中,仅有的不完全透明的像素是与原始编码图像202中的黑色像素相对应的编码像素。更一般地,与原始编码图像202中的第一二进制颜色的像素相对应的水印图像210中的编码像素可以被分配第一透明度级别,而不同的第二透明度级别可以被分配给空白像素和与来自原始编码图像202的第二二进制颜色的像素相对应的编码像素两者。
在一些实施方式中,水印图像生成器可以使用其他技术来将来自归一化编码图像206的编码像素映射到最终水印图像210。水印图像生成器可以使用映射模板,该映射模板将编码像素在水印图像210中的位置与归一化编码图像206中的像素位置相关联。归一化编码图像206中的每个像素可以映射到水印图像210中的像素。在一些实施方式中,***还可以使用映射模板执行编码像素从已编码源图像的反向映射,以便从已编码源图像重建水印图像210或编码图像202。映射模板可以识别水印图像210中的编码像素的任何合适的排列(例如,以任何顺序),只要编码像素中的每一个与空白像素邻接即可。
再次参考图3,在阶段308,***在响应记录数据库(例如,响应记录数据库120)中生成条目。响应记录数据库包含日志,该日志存储关于在一段时间内发送到与服务器***通信的一个或多个客户端计算机的每个响应或其他电子文档(例如,不是对特定请求的响应的推送电子文档)的信息。每个响应可以与客户端会话相关联,该客户端会话可能引起(entail)在给定客户端计算机和服务器***之间的一个或多个请求-响应交互。在一些实施方式中,响应记录数据库中的给定条目包括会话ID、响应ID和源图像数据。会话ID唯一地识别服务器-客户端网络会话,响应ID唯一地识别在给定会话期间服务于客户端计算机的响应,并且源图像数据识别关于针对特定会话或响应发送到客户端计算机的源图像的信息。会话ID、响应ID或两者都可以形成在编码图像和水印图像中编码的明文数据,使得***稍后可以使用覆盖在源图像上的水印来恢复会话ID、响应ID或两者,并查找与会话ID和/或响应ID相关联的适当的源图像数据。
在阶段310,服务器***将电子文档服务于客户端计算机。电子文档可以包括计算机代码,该计算机代码在由客户端计算机运行时使客户端计算机请求并获得源图像和水印图像。此外,计算机代码可以包括当渲染电子文档以呈现给用户时,使客户端计算机将水印图像覆盖在源图像上的指令。例如,图6中描绘了用于在客户端计算机处渲染已编码源图像的示例过程600。该过程600可以由一个或多个计算设备(例如,客户端计算机104)来执行。在一些实施方式中,过程600由安装在客户端计算机上的应用(诸如,Web浏览应用)执行。备选地,服务器***102可以在将已编码源图像服务于客户端计算机104之前,在服务器***102处混合水印图像和源图像以创建已编码源图像。
有时,可以请求服务器***102对已编码源图像进行解码。例如,在阶段312,***接收已编码源图像,该已编码源图像可能已经被客户端计算机104的用户捕获为屏幕快照并提交给服务器***102以进行解码和分析。在阶段314,***对已编码源图像进行解码。解码过程通常涉及识别已编码源图像中的编码像素的编码值,例如,以确定每个编码像素是对应于编码图像(例如,QR码)中的黑色像素(值1)还是编码图像中的白色像素(值0)。一旦查明了编码像素的位置或坐标,就可以采用各种解码技术来辨别像素的编码值。例如,可以将像素的颜色与其邻接像素进行比较,如果像素的颜色比其邻接像素暗一定量,则其可以被认为对来自编码图像的黑色像素(值1)进行编码。如果像素的颜色不比其邻接像素暗所需的量,则其可以被认为对来自编码图像的白色像素(值0)进行编码。另外,可以分析来自被编码在源图像中的水印图像的多个实例的相同编码像素,并且对结果进行统计平均。在一些实施方式中,可以训练机器学习模型执行解码分析。尽管如此,解码过程在计算上可能是昂贵的并且并不总是成功的。例如,如果底层(underlying)源图像中的颜色图案模糊了部分透明的黑色编码像素施加的暗化,则可能无法成功恢复编码值。此外,***可能需要在已编码源图像的屏幕快照上进行迭代搜索,以识别水印图像的可能位置,并且由于***可能对渲染和捕获屏幕快照的缩放级别或分辨率的数据指示不知情,因此可能需要针对许多可能的缩放级别或分辨率进行此操作。因此,图6-10的描述提供了使用预测模型来提高解码过程的效率的技术,该预测模型生成可能已编码源图像究竟是否用水印图像编码的预测。
如果解码成功,则在阶段316,服务器***使用解码信息来恢复明文数据。然后,***可以将明文数据用于各种目的。在一些实施方式中,明文数据表示会话ID或响应ID。服务器***可以使用会话ID或响应ID查询响应记录数据库以查找源图像数据,并确定例如提供源图像的特定内容提供者。
图5描绘了出于本说明书中所描述技术的目的可以用作编码图像(例如,编码图像124)的示例QR码500。在此示例中,QR码500具有固定大小的21x21个像素,尽管其他预定义大小的QR码也将适用。举例来说,在图6-10的讨论中将参考21×21QR码500,以示出本文公开的用于预测可能已编码源图像是否可能已经用水印图像编码或没有用水印图像编码的技术。
QR码500的区别性特征是其位于码500的左上角、右上角和左下角处的三个7x7像素正方形502a-502c。正方形图案502a-c帮助光学读取设备定位QR码500的边界并正确定向QR码500的图像,使得可以查明像素的行和列,并可以成功读取码500。每个正方形图案由其第一行和第七行中的七个连续的黑色像素(例如,编码值1)、第二行和第六行中的图案黑-白-白-白-白-白-黑(例如,编码值1-0-0-0-0-0-1)以及第三行、第四行和第五行中的图案黑-白-黑-黑-黑-白-黑(例如,编码值1-0-1-1-1-0-1)定义。如关于图1-4所描述的,可以从QR码500形成水印图像,包括通过向码500中的每个黑色像素分配高部分透明度值,向码500中的每个白色像素应用完全透明度值,在每个奇数行中从QR码500的每个像素的右侧***空白(非编码)完全透明的像素,并在码500的每个偶数行中从QR码500的每个像素的左侧***空白完全透明的像素。结果是21x43像素的水印图像,其可以覆盖在要编码的源图像上。
图6是用于分析可能已编码源图像以预测图像是编码还是未编码水印图像的示例过程600的流程图。在一些实施方式中,过程600由服务器***102的图像分析和解码器模块118与水印预测模型132和控制器136协作执行。
在阶段602,***获得可能已编码源图像。在一些实施方式中,可能已编码源图像是由用户在用户的客户端计算机设备处捕获在网页或应用的图形界面中显示的内容的屏幕快照而获取的。作为屏幕快照的目标的网页或应用可以包括易于用视觉上不可感知的水印图像编码的源图像,诸如,用从QR码500导出的水印图像126编码的来自第三方内容提供者106的源图像128a。用户可以出于多种原因(诸如,分析程序)手动(或用户的设备可以自动)捕获屏幕快照,并将其提交用于服务器***进行分析,以报告源图像中的攻击性或不相关的内容,以兑换(redeem)被编码在图像中的促销内容,或以其他方式识别关于服务于客户端计算机104的源图像的源或上下文的信息。当在客户端计算机104处渲染时,源图像可以或可以不合并到单个图像文件中,但是通常在用户已经捕获源图像的屏幕快照之后,其效果是创建将任何部分透明水印图像放置在源图像上方的合并图像。在一些情况下,与捕获屏幕快照的情况有关的一个或多个因素可能会增加服务器请求对图像进行解码的难度。例如,在捕获屏幕快照时,用户的设备可能已渲染了图像的放大或缩小视图,使得图像以比原始源图像和水印图像更高或更低的分辨率显示,并且服务器***可能接收不到图像的缩放级别和对应分辨率的指示。此外,屏幕快照可能会过多或过少地捕获可能已编码源图像。例如,如果可能已编码源图像是用户为其提交整个网页的屏幕快照的网页中的横幅广告,则实际上可能只有屏幕快照的相对小的一部分用水印图像编码。在其他情况下,屏幕快照可能被裁剪,并包含少于全部可能已编码源图像。另外,作为减少了屏幕快照的存储和/或传输费用的文件压缩的结果,屏幕快照可能包括噪声。
在阶段604,***生成可能已编码源图像的一个或多个缩放版本。***可以被配置为以其本机的原始分辨率(例如,100%缩放级别,使得可能已编码源图像的大小与源图像的原始大小匹配)执行可能已编码源图像的解码,以确保编码和非编码像素的图案的可预测性。但是,由于在阶段602获得的可能已编码源图像的缩放级别对于解码***可能是未知的,因此***生成可能已编码源图像的缩放版本集,其中,通过为在阶段602获得的可能已编码图像假设不同的起始缩放级别,并将图像的大小从假设的起始缩放级别缩小或扩展到目标100%缩放级别(也称为“目标”分辨率或缩放级别),每个缩放图像以与100%缩放级别相对应的估计分辨率提供可能已编码源图像的不同版本。因此,如果假设屏幕快照是已经以200%缩放级别捕获的,则***将通过将图像的尺寸缩小一半以实现目标100%缩放级别,来生成可能已编码源图像的第一缩放版本。如果假设屏幕快照是已经以500%缩放级别捕获的,则***将通过将图像的尺寸缩小五分之一以实现目标100%缩放级别,来生成可能已编码源图像的第二缩放版本。可以生成可能已编码源图像的任何数量的缩放版本。由于可以从其捕获可能已编码源图像的屏幕快照的许多用户设备为用户提供了将放大的显示分辨率设置为从100%到500%缩放级别的任何分辨率的能力,因此在一些实施方式中,***生成与从100%到500%的所有401种可能的起始缩放级别相对应的可能已编码源图像的相应缩放版本。然而,在其他实施方式中,可以将不同范围的缩放级别假设为可能的起始分辨率。另外,在一些实施方式中,仅对给定范围内的可能缩放级别的子集进行采样,并将其用作从其生成可能已编码源图像的缩放版本的起始分辨率。
在阶段606,***针对第一估计的起始缩放级别选择可能已编码源图像的第一缩放版本,并在缩放图像中搜索可能已编码区域。如果将起始缩放级别估计为目标缩放级别(例如,100%),则选择的图像可以简单地是在阶段602获得的原始图像。选择的/缩放图像的可能已编码区域是被确定为可能用水印图像的一个或多个实例编码的区域。在一些实施方式中,水印图像比源图像本身小得多,因此水印图像在全部或部分源图像上被直接彼此相邻地平铺而不重叠。在一些实施方式中,对于要包含在同一可能已编码区域中的可能已编码水印图像的多个实例,水印图像必须彼此连续(例如,一系列直接相邻/邻接的水印)。如果在缩放图像中检测到彼此不连续的可能已编码水印图像的两个实例(直接或经由可能已编码水印图像的其他实例间接地),则可以将它们分配到不同的可能已编码区域。图9示出了在可能已编码源图像950的缩放版本900内的可能已编码区域902a-902d的集合的示例。虚线指示与特定区域内的可能已编码水印图像的不同实例相对应的块之间的划分。
在一些实施方式中,在阶段606所涉及的用于识别缩放图像中的可能已编码区域的操作的附加细节由图7中所描绘的过程700提供。在阶段702,***(例如,图像分析和解码器模块118)获得要被搜索可能已编码区域的可能已编码源图像的缩放版本。在阶段704,***预测缩放图像中的可能已编码像素的编码值。对于水印图像以交错的方式在每隔一个像素位置提供编码像素使得每个编码像素在上方、下方、左侧和右侧与空白(非编码)像素邻接的情况,***可以预测缩放图像中每隔一个像素的编码值,即,将与缩放图像编码的任何(一个或多个)水印图像中的编码像素相对应的像素。可以通过分析像素相对于其邻接空白像素的颜色的颜色来预测每个编码像素的编码值。例如,如果可能已编码像素的颜色比其邻接像素中的一个或多个或其邻接像素的平均值足够暗(例如,至少预定义阈值量),则可以预测该像素对来自水印图像的黑色像素(例如,值“1”)进行编码。如果可能已编码像素的颜色没有比其邻接像素中的一个或多个或其邻接像素的平均值足够暗,则可以预测该像素对来自水印图像的白色像素(例如,值'0')进行编码。在一些实施方式中,***可以为每个像素生成分数(例如,概率值),该分数指示该像素对特定二进制值进行编码的可能性(例如,该像素对黑色像素或白色像素进行编码的概率),而不是对每个可能已编码像素应用二进制分类以预测像素是对来自水印图像或编码图像的黑色像素还是对来自水印图像或编码图像的白色像素进行编码。
在阶段706,***基于缩放图像中的可能已编码像素的预测编码值的图案来确定缩放图像的可能已编码区域。在一些实施方式中,***通过评估缩放图像中的可能已编码像素的预测编码值以识别指示水印图像或编码图像的区别性图案,来识别可能已编码区域。当预测的编码值与水印图像或编码图像的预定义图案匹配时,将水印图像或编码图像的实例注册为可能已编码区域的块。例如,***可以搜索与QR码500的区别性正方形图案502a-502c相对应的预测编码值的图案,或者可以搜索正方形图案502a-502c的一部分,诸如来自每个正方形图案的中间三行的图案黑-白-黑-黑-黑-白-黑(例如,值1-0-1-1-1-0-1)。如果以预测的编码值识别出这些预定义图案,则***将可能已编码的水印图像或编码图像的实例注册在缩放图像中识别出图案的位置处。在一些实施方式中,***可能需要预测编码值和预定义图案之间的完美对应以注册匹配。在其他实施方式中,***可以允许一定程度的公差,使得预测编码值与预定义图案之间的不完美对应仍然可以导致注册的匹配(例如,只要预测编码值的至少阈值部分与预定义图案中提供的对应编码值匹配)。然后,将缩放图像中可能已编码的水印/编码图像的一个或多个识别的块的连续集合分配给相应的可能已编码区域。
在一些实施方式中,可以通过执行图7的阶段708-712的操作来增强搜索和识别可能已编码区域的过程。在阶段708,***确定缩放图像中可能已编码像素中的每一个(或子集)的序列分数。给定可能已编码像素的序列分数指示包括或与给定可能已编码像素具有定义关系的可能已编码像素的序列的编码值与指示水印图像或编码图像的存在的编码值的预定区别性图案匹配的可能性。在一些实施方式中,给定可能已编码像素的序列分数指示缩放图像中与给定可能已编码像素在同一行中的接下来的七个可能已编码像素的编码值与在QR码500的正方形图案502a-502c的中间三行中发现的黑-白-黑-黑-黑-白-黑(例如,1-0-1-1-1-0-1)序列匹配的可能性。在某些情况下,基于预测编码值与编码值的预定序列匹配的数量来确定序列分数。在某些情况下,基于对序列中的每个可能已编码像素相对于预定序列中的目标值的个体概率值的考虑来确定序列分数。
在阶段710,***在缩放图像中识别块的每个可能位置,即,水印或编码图像的可能已编码实例,并且对于每个块位置,识别指示水印或编码图像在该块位置处被编码的可能性的块分数。在一些示例中,块位置的数量大约等于缩放图像中的像素的数量,因为可以通过逐个像素地滑动块来识别不同的块位置(也许除了在图像的***周围,在图像的***周围完整的块是不可能的,因为它会延伸超出图像的边缘)。可以基于块中的可能已编码像素的某些位置的序列分数来计算块位置的块分数。例如,为了确定缩放图像的给定位置处的块的块分数,该块分数指示与QR码500相对应的水印图像在该位置处的块中编码的可能性,***可以评估该块的左上、右上和左下部分附近的像素的序列分数,该序列分数指示来自正方形图案502a-502c的七个像素序列出现在该块的将与已编码QR码水印图像相对应的适当位置处的可能性。例如,如果块的那三个角处的序列分数每个都指示在那些角处的像素已经用黑-白-黑-黑-黑-白-黑(例如,1-0-1-1-1-0-1)序列编码的高可能性,则块分数可以指示水印图像被被编码在该块中的较高可能性。
在阶段712,***基于块分数确定缩放图像的可能已编码区域。例如,对于缩放图像中的每个块位置,***可以评价从该块位置开始的一个或多个连续块用水印图像或编码图像的相应实例编码的可能性。根据块分数和对每个用水印编码的连续块的各种排列的可能性的分析,***解析出互斥的可能已编码区域集,***对这些区域可能用水印图像或编码图像的一个或多个连续块编码具有足够的置信度。
再次参考图6,在确定缩放图像的一个或多个可能已编码区域之后,在阶段608,***确定缩放图像的预测特征集的值。随后将对这些值进行处理,以生成关于可能已编码源图像是否已经根据先前关于图2-4所述的技术用视觉上不可感知的、部分透明的水印图像(或平铺在源图像上的重复的水印图像集)编码的最后或最终预测。在一些实施方式中,预测特征表征关于在缩放图像中识别的可能已编码区域的信息。例如,特征可包含(i)缩放图像的识别的可能已编码区域中的块的均值(或其他平均)数量,(ii)缩放图像的最大识别的可能已编码区域中的块的数量(即,可能已编码区域中的块的最大数量),(iii)缩放图像的识别的可能已编码区域中包含的块的数量的标准差或其他散布度量,(iv)缩放图像中的识别的可能已编码区域的总数,或者其中两个或更多个的组合。
在一些实施方式中,基于对可能已编码源图像的未缩放版本中的像素的分析来计算附加特征的值。例如,***可以将识别的可能已编码区域从可能已编码源图像的缩放版本映射到可能已编码源图像的未缩放版本的对应区域。在图9中以示例的方式示出了一个这样的映射,其中,来自可能已编码源图像的缩放版本900的可能已编码区域902a-902d中的每一个被映射到可能已编码源图像的未缩放版本950中的对应区域952a-952d。对于可能已编码源图像的未缩放版本中的每个映射区域952a-952d,***计算三个值:(i)映射区域中像素的红色通道值的方差,(ii)映射区域中像素的蓝色通道值的方差,以及(iii)映射区域中像素的绿色通道值的方差。然后,***选择映射区域952a-952d中的最低(最小)红色通道方差,映射区域952a-952d中的最低绿色通道方差和映射区域952a-952d中的最低蓝色通道方差。然后,可以将这三个选择的最低方差值与表征可能已编码源图像的缩放版本的可能已编码区域的特征一起应用到预测特征中作为水印预测模型的输入,如前一段所述。例如,让S表示源图像,X表示水印图像,Y=X+S作为已编码(加水印)源图像。由于X是在不知道S的情况下生成的,因此可以合理地假设X和S彼此独立。因此,Var[Y]=Var[X]+Var[S]。在解码器侧,接收到由Z表示的Y的噪声版本。在不失一般性的前提下,假设由N表示的噪声是可加的且与Y独立。也就是Z=Y+N。因此,Var[Z]=Var[Y]+Var[N]=Var[X]+Var[S]+Var[N]。Var[S]和Var[N]是非负的,并且Var[X]>0。因此,当Var[Z]小时,很大程度上归因于Var[X]。换句话说,当Var[Z]小时,可以理解,在存在水印的情况下,可以通过使用Var[Z]来近似Var[X]。此外,当Var[X]小时,可以在分类结果中获得更大的置信度(例如,水印是否被编码在源图像中)。另一方面,当Var[X]大时,分类结果中可见较小置信度。
在阶段610,***存储在阶段608确定的预测特征的值。在一些实施方式中,***维护针对***分析的可能已编码源图像的每个缩放版本确定的预测特征的值的数据库。每当针对图像的另一缩放版本确定特征集的新值时,就可以在数据库中创建新记录或条目并将值存储在其中。在图10中描绘了用于存储与给定可能已编码源图像相关联的预测特征值的示例数据库表1000。如图所示,表1000中的每一行代表存储可能已编码源图像的不同缩放版本的特征的值的记录。***可以将针对图像的每个缩放版本计算的特征的值临时存储在数据库中,直到已经针对所有感兴趣的缩放级别计算了特征值为止。
在阶段612,***确定是否要针对与可能已编码源图像的起始缩放级别的不同估计相对应的任何附加缩放图像计算特征值。如果要分析附加缩放图像,则***前进到阶段611,选择可能已编码源图像的下一缩放版本,然后返回到阶段606。如果没有要分析的其余的附加缩放图像,则***前进到阶段614。
在阶段614,***访问针对缩放图像中的每一个计算的特征值的数据库,并选择特定缩放图像的特征值集中的一个作为代表集。可以应用各种规则来确定选择哪个特征值集作为代表集。在一些实施方式中,***选择可能已编码源图像的缩放版本的特征值集,就区域中的块的数量而言,可能已编码源图像的该缩放版本产生最大可能已编码区域。例如,如果从假设的200%的起始缩放比例缩小到目标缩放比例的图像的缩放版本产生了比与其他任何缩放比例的缩放图像相关联的最大区域块计数大的最大区域块计数,则可以选择与图像的该缩放版本相对应的特征值集作为代表集。附加或其他特征也可以用作选择代表集的基础。在一些实施方式中,可以选择多个缩放比例的多个特征值集作为代表集,诸如,前n个集(例如,n=2、3、4或5)。在一些实施方式中,所有特征值集都可以被选择为代表集。
在阶段616,***用预测模型(例如,水印预测模型132)处理预测特征的(一个或多个)代表集中的值,以生成指示可能已编码源图像是否可能已经用或没有用水印图像编码的最终预测。在一些实施方式中,预测模型被配置为生成二进制输出,该二进制输出指示可能已编码源图像是可能用水印图像编码还是可能没有用水印图像编码。在一些实施方式中,预测模型被配置为输出分数(例如,概率值),该分数指示可能已编码源图像用水印图像编码或没有用水印图像编码的数值可能性。在一些实施方式中,预测模型可以生成分数作为中间输出,然后将分数与指定的阈值进行比较以产生最终的二进制输出,该最终的二进制输出指示可能已编码源图像是否可能用或没有用水印图像编码。任何合适形式的预测模型都可以用于此任务。在一些实施方式中,预测模型是机器学习模型,诸如神经网络。例如,神经网络可以是前馈神经网络,该前馈神经网络具有被配置为处理来自预测特征的(一个或多个)代表集的值的输入层,对输入执行一系列操作的一个或多个隐藏层以及生成预测输出的输出层。在图8中描绘了水印预测模型802的图示800,该水印预测模型802处理来自值的单个代表集的七个特征804a-804g的值以生成水印预测806。
在一些实施方式中,***可以使用水印预测来通知关于在继续尝试对可能已编码源图像进行解码时是否招致进一步的处理费用的决定。在阶段618,***控制器(例如,控制器136)基于预测模型的输出确定是否继续解码。如果预测指示可能已编码源图像可能用水印图像编码,则***进行到阶段620,并使用另一个解码模型尝试对可能已编码源图像进行解码。如果成功,则可以对已编码源图像进行解码以重建水印图像、编码图像(例如,QR码500)或两者。然后,可以从水印图像或编码图像中识别明文数据项及其引用的任何信息。如果预测指示可能已编码源图像可能没有用水印图像编码,则***放弃对可能已编码源图像的进一步处理,并且不再继续尝试对该图像进行解码(阶段622)。在一些实施方式中,当解码确实在阶段620处进行时,***可以使用从过程600的较早阶段收集的信息来将被估计具有最高的成功可能性的特定区域作为目标用于解码。例如,目标区域可以是与图像的缩放版本相对应的识别的可能已编码区域,该图像的缩放版本的特征值被选择为代表集。
图11是用于训练诸如神经网络的预测模型的示例过程1100的流程图,该预测模型实现了服务器***102中采用的水印预测模型132。在一些实施方式中,过程1100由模型训练引擎134执行。在阶段1102,***获得训练图像集。训练集中的一些图像已经用水印图像编码,而其他图像没有用水印图像编码,但每个图像都标记有指示该图像是否已经或没有加水印的目标(真实)分类值。***确定每个训练图像的预测特征的值(阶段1104)。预测特征可以包括例如关于图6和图8描述的七个特征。然后,***创建训练样本集(阶段1106)。每个训练样本对应于训练图像中的不同的一个,并且包含训练输入和目标训练输出。训练输入包括针对对应训练图像确定的预测特征的值或由其组成。训练输出是在给定训练输入的情况下代表预测模型的目标输出的值。目标输出可以是二进制值,该二进制值指示从其导出预测特征的值的对应训练图像是否已经用或没有用水印图像编码。***(例如,使用随机初始化过程)初始化神经网络模型的内部参数(阶段1108)。***选择第一训练样本(阶段1110),然后根据模型的内部参数的当前值处理来自该训练样本的训练输入,以生成预测输出(阶段1112)。***确定训练样本的预测输出与目标输出之间的任何误差(阶段1114),然后使用该误差来更新模型的内部参数以减小误差(阶段1116)。在一些实施方式中,可以对误差进行反向传播,并使用梯度下降来更新模型。在阶段1118,***检查是否还有剩余的附加训练样本要处理或训练是否已完成。如果训练阶段尚未完成并且剩余了附加样本,则过程1100返回到阶段1110,在该阶段1110选择下一个训练样本并且重复操作1112-1118。一旦训练完成,就可以提供预测模型以在实践中使用,例如用作水印预测模型132或802(阶段1120)。
本说明书中描述的主题和功能操作的实施方式可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本说明书中公开的结构及其等效结构,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施方式可以实现为一个或多个计算机程序,即,被编码在有形的非暂时性程序载体上的计算机程序指令的一个或多个模块,以由数据处理装置运行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器产生的电、光或电磁信号,其被生成以对信息进行编码以发送到合适的接收器装置以由数据处理装置运行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。
术语“数据处理装置”是指数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,该装置可以可选地包括创建计算机程序的运行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***或它们中的一个或多个的组合的代码。
计算机程序也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码,可以以任何形式的编程语言来编写,包括编译的或解释性语言或者声明性或过程性语言,并且可以以任何形式进行部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其他单元。计算机程序可以但不必对应于文件***中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以将计算机程序部署为在一个计算机上运行,或者在位于一个站点处或者在分布在多个站点上并通过通信网络互连的多个计算机上运行。
本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程计算机来执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于运行计算机程序的计算机包括例如通用或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)以从一个或多个大容量存储设备接收数据或将数据传送到一个或多个大容量存储设备或两者。然而,计算机不必有此类设备。此外,计算机可以嵌入在另一个设备中,例如,移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或视频播放器、游戏机、全球定位***(Global Positioning System,GPS)接收器或便携式存储设备(例如,通用串行总线(universal serial bus,USB)闪存驱动器),仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如,EPROM,EEPROM和闪存存储器设备);磁盘(例如,内部硬盘或可移动磁盘);磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施方式可以在具有用于向用户显示信息的显示设备(例如,CRT(cathode ray tube,阴极射线管)或LCD(liquidcrystal display,液晶显示)监视器)以及用户可以通过其向计算机提供输入的键盘和指点设备(例如,鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的交互。例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应从web浏览器接收的请求,将网页发送到用户的设备上的web浏览器。
本说明书中描述的主题的实施方式可以在包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可以通过其与本说明书中的描述的主题的实施方式交互的图形用户界面或Web浏览器的客户端计算机),或者一个或多个这种后端、中间件或前端组件的任意组合的计算***中实现。***的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,因特网。
计算***可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过在相应计算机上运行并彼此具有客户端-服务器关系的计算机程序产生的。在一些实施方式中,服务器例如向用户设备发送数据(例如,HTML页面)以用于向与充当客户端的用户设备交互的用户显示数据并从用户接收用户输入。可以在服务器处从用户设备接收在用户设备处生成的数据(例如,用户交互的结果)。
图12中示出一个这种类型的计算机的示例,其示出了通用计算机***1200的示意图。根据一种实施方式,该***可用于与前述任一计算机实现的方法相关联地描述的操作。***1200包括处理器1210、存储器1220、存储设备1230和输入/输出设备1240。组件1210、1220、1230和1240中的每一个使用***总线1250互连。处理器1210能够处理用于在***1200内运行的指令。在一个实施方式中,处理器1210是单线程处理器。在另一实施方式中,处理器1210是多线程处理器。处理器1210能够处理存储在存储器1220中或存储在存储设备1230上的指令,以在输入/输出设备1240上显示用户界面的图形信息。
存储器1220存储***1200内的信息。在一个实施方式中,存储器1220是计算机可读介质。在一个实施方式中,存储器1220是易失性存储器单元。在另一实施方式中,存储器1220是非易失性存储器单元。
存储设备1230能够为***1200提供大容量存储。在一个实施方式中,存储设备1230是计算机可读介质。在各种不同的实施方式中,存储设备1230可以是软盘设备、硬盘设备、光盘设备或磁带设备。
输入/输出设备1240为***1200提供输入/输出操作。在一个实施方式中,输入/输出设备1240包括键盘和/或指点设备。在另一实施方式中,输入/输出设备1240包括用于显示图形用户界面的显示单元。
尽管本说明书包含许多具体的实施方式细节,但是这些不应被解释为对所要求保护的范围的限制,而应被解释为可能特定于特定实施方式的特征的描述。在本说明书中在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实施。相反,在单个实施方式的上下文中描述的各种特征也可以分别在多个实施方式中或在任何合适的子组合中实施。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此声称,但是在一些情况下,可以从组合中切除来自所要求保护的组合的一个或多个特征,并且可以将所要求保护的组合指向子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或连续顺序执行这样的操作,或者执行所有示出的操作以实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。此外,在上述实施方式中的各种***模块和组件的分离不应被理解为在所有实施方式中都需要这种分离,并且应当理解,所描述的程序组件和***通常可以被一起集成在单个软件产品种或打包成多个软件产品。
已经描述了主题的特定实施方式。其他实施方式在所附权利要求的范围内。例如,可以以与逻辑一致的不同顺序执行权利要求中记载的动作,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。
Claims (24)
1.一种用于预测水印图像的计算机实现的方法,包括:
获得第一图像;
分析所述第一图像中的像素的属性以预测所述第一图像中的可能已编码像素的编码值;
分析所述第一图像中的可能已编码像素的预测的编码值的图案,以确定所述第一图像的可能已编码区域,其中,每个可能已编码区域包括可能已编码像素的一个或多个块,并且其中,可能已编码像素的每个块包括被识别为在指定公差内匹配到第一图像中的水印图像的不同实例的预测的编码值;
确定所述第一图像的可能已编码区域的特征的值,其中,所述第一图像的可能已编码区域的特征包括可能已编码区域中的可能已编码像素的块在第一图像内的分布的一个或多个度量,其中,可能已编码像素的块的分布的一个或多个度量基于每个可能已编码区域中的可能已编码像素的块的数量;
用预测模型处理所述第一图像的可能已编码区域的特征的值,以生成指示水印图像是否被编码在所述第一图像中的预测;以及
输出所述预测。
2.根据权利要求1所述的方法,其中,生成所述预测包括选择二进制值,所述二进制值指示所述水印图像被编码在所述第一图像中或者所述水印图像没有被编码在所述第一图像中。
3.根据权利要求1或2所述的方法,其中,生成所述预测包括生成数值预测,所述数值预测量化所述水印图像编码或没有被编码在所述第一图像中的可能性。
4.根据权利要求1所述的方法,其中,输出所述预测包括将所述预测存储在计算***的存储器中或提供所述预测以呈现给用户中的至少一个。
5.根据权利要求1所述的方法,其中,输出所述预测包括将所述预测提供给控制器,所述控制器被配置为至少基于所述预测来确定是否对所述第一图像或从其导出所述第一图像的第二图像应用解码过程以恢复所述水印图像,所述解码过程包括识别第一图像或第二图像中编码像素的编码值,并且将编码像素的颜色与和编码像素相邻的一个或多个像素的相应颜色进行比较。
6.根据权利要求5所述的方法,其中:
所述控制器被配置为响应于识别出所述预测指示所述水印图像被编码在所述第一图像中,对所述第一图像或所述第二图像应用所述解码过程以恢复所述水印图像;以及
所述控制器被配置为响应于识别出所述预测指示所述水印图像没有被编码在所述第一图像中,不对所述第一图像或所述第二图像应用用于恢复所述水印图像的所述解码过程。
7.根据权利要求1所述的方法,其中,获得所述第一图像包括从用户的计算设备获得屏幕快照图像,所述屏幕快照图像显示网页或本机应用的图形用户界面中的服务内容。
8.根据权利要求1所述的方法,还包括:
获得以未知缩放级别渲染的第二图像;
识别所述第二图像的多个可能缩放级别;以及
从所述第二图像生成包括所述第一图像的多个缩放图像,其中,生成每个缩放图像包括(i)从所述多个缩放级别中选择不同的可能缩放级别,以及(ii)如果已经以所述不同的可能缩放级别渲染了所述第二图像,则将所述第二图像缩放用于实现共同目标缩放级别所需的量。
9.根据权利要求8所述的方法,还包括:
对于所述多个缩放图像中的每个缩放图像:
分析所述缩放图像中的像素的属性,以确定所述缩放图像中的可能已编码像素的编码值;
分析所述缩放图像中的可能已编码像素的编码值的图案,以确定所述缩放图像的可能已编码区域;以及
确定所述缩放图像的可能已编码区域的特征的值;以及
基于一个或多个准则,确定提供所述第一图像的可能已编码区域的特征的值,而不是所述多个缩放图像中的其他缩放图像的可能已编码区域的特征的值,以供所述预测模型处理。
10.根据权利要求1所述的方法,其中,分析所述第一图像中的像素的属性以预测所述第一图像中的可能已编码像素的编码值包括:对于所述第一图像中的所有或一些可能已编码像素中的每一个,将可能已编码像素的颜色与所述第一图像中的与所述可能已编码像素相邻的一个或多个像素的相应颜色进行比较。
11.根据权利要求1所述的方法,其中,分析所述第一图像中的可能已编码像素的预测的编码值的图案以确定所述第一图像的可能已编码区域包括:识别包含可能已编码像素的一个或多个块的区域。
12.根据权利要求11所述的方法,其中,识别所述第一图像的包含可能已编码像素的一个或多个块的区域包括:定位出现在每个块中的预定义比特图案的实例。
13.根据权利要求1所述的方法,其中,确定所述第一图像的可能已编码区域的特征的值包括:
对于每个可能已编码区域,对所述可能已编码区域中的可能已编码像素的块的数量进行计数;
其中,所述可能已编码像素的块的分布的一个或多个度量选自包括以下各项的组:可能已编码区域中的计数块的平均数量、可能已编码区域中的计数块的最大数量、识别的可能已编码区域的数量、可能已编码区域中的计数块的数量的标准差。
14.根据权利要求1所述的方法,其中,所述第一图像是第二图像的缩放版本,并且所述方法还包括:
将所述第一图像的可能已编码区域映射到所述第二图像的对应区域;
确定所述第二图像的每个映射区域中的像素中的一个或多个颜色通道中的每一个的方差;
对于每个颜色通道,确定第二图像的映射区域中的颜色通道的最小方差;以及
生成指示水印图像是否被编码在所述第一图像中的所述预测包括:进一步处理所述第二图像的每个映射区域中的像素中的一个或多个颜色通道中的每一个的最小方差。
15.根据权利要求1所述的方法,其中,所述预测模型包括二进制分类模型。
16.根据权利要求1所述的方法,其中,所述预测模型包括神经网络。
17.根据权利要求1所述的方法,其中,预测可能已编码像素的编码值包括:确定可能已编码像素比第一图像中与可能已编码像素相邻的一个或多个像素更暗。
18.根据权利要求1所述的方法,其中,分析所述第一图像中的可能已编码像素的预测的编码值的图案包括:针对可能已编码像素中的一个或多个确定表示可能已编码像素的序列的编码值具有到编码值的预定图案至少阈值级别的匹配的可能性的序列分数。
19.根据权利要求1所述的方法,其中,所述预测模型是经训练的机器学习模型。
20.根据权利要求1所述的方法,其中,分析所述第一图像中的可能已编码像素的预测的编码值的图案,以确定所述第一图像的可能已编码区域包括:
识别像素块在第一图像中的位置;
针对像素块,基于块的不同部分处像素的序列分数的评估来确定表示水印图像在该位置处被编码在像素块中的可能性的块分数;以及
基于块分数确定第一图像中该位置处的像素块是在指定公差内匹配到水印图像的实例的可能已编码像素的块。
21.一种用于预测水印图像的***,包括:
一个或多个处理器;以及
一个或多个计算机可读介质,其上存储有指令,所述指令在由所述一个或多个处理器运行时,使所述一个或多个处理器执行操作,所述操作包括:
获得第一图像;
分析所述第一图像中的像素的属性以预测所述第一图像中的可能已编码像素的编码值;
分析所述第一图像中的可能已编码像素的预测的编码值的图案,以确定所述第一图像的可能已编码区域,其中,每个可能已编码区域包括可能已编码像素的一个或多个块,并且其中,可能已编码像素的每个块包括被识别为在指定公差内匹配到第一图像中的水印图像的不同实例的预测的编码值;
确定所述第一图像的可能已编码区域的特征的值,其中,所述第一图像的可能已编码区域的特征包括可能已编码区域中的可能已编码像素的块在第一图像内的分布的一个或多个度量,其中,可能已编码像素的块的分布的一个或多个度量基于每个可能已编码区域中的可能已编码像素的块的数量;
用预测模型处理所述第一图像的可能已编码区域的特征的值,以生成指示水印图像是否被编码在所述第一图像中的预测;以及
输出所述预测。
22.根据权利要求21所述的***,其中,输出所述预测包括:将所述预测提供给控制器,所述控制器被配置为至少基于所述预测来确定是否对所述第一图像或从其导出所述第一图像的第二图像应用解码过程以恢复所述水印图像,所述解码过程包括识别第一图像或第二图像中编码像素的编码值,并且将编码像素的颜色与和编码像素相邻的一个或多个像素的相应颜色进行比较。
23.根据权利要求22所述的***,其中:
所述控制器被配置为响应于识别出所述预测指示所述水印图像被编码在所述第一图像中,对所述第一图像或所述第二图像应用所述解码过程以恢复所述水印图像;以及
所述控制器被配置为响应于识别出所述预测指示所述水印图像没有被编码在所述第一图像中,不对所述第一图像或所述第二图像应用用于恢复所述水印图像的所述解码过程。
24.一个或多个非暂时性计算机可读介质,其上存储有指令,所述指令在由一个或多个处理器运行时,使所述一个或多个处理器执行操作,所述操作包括:
获得第一图像;
分析所述第一图像中的像素的属性以预测所述第一图像中的可能已编码像素的编码值;
分析所述第一图像中的可能已编码像素的预测的编码值的图案,以确定所述第一图像的可能已编码区域,其中,每个可能已编码区域包括可能已编码像素的一个或多个块,并且其中,可能已编码像素的每个块包括被识别为在指定公差内匹配到第一图像中的水印图像的不同实例的预测的编码值;
确定所述第一图像的可能已编码区域的特征的值,其中,所述第一图像的可能已编码区域的特征包括可能已编码区域中的可能已编码像素的块在第一图像内的分布的一个或多个度量,其中,可能已编码像素的块的分布的一个或多个度量基于每个可能已编码区域中的可能已编码像素的块的数量;
用预测模型处理所述第一图像的可能已编码区域的特征的值,以生成指示水印图像是否被编码在所述第一图像中的预测;以及
输出所述预测。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/050011 WO2021045781A1 (en) | 2019-09-06 | 2019-09-06 | Detecting semi-transparent image watermarks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112789650A CN112789650A (zh) | 2021-05-11 |
CN112789650B true CN112789650B (zh) | 2024-03-12 |
Family
ID=68000123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980012645.8A Active CN112789650B (zh) | 2019-09-06 | 2019-09-06 | 检测半透明图像水印 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210334929A1 (zh) |
EP (1) | EP3815034A1 (zh) |
JP (1) | JP7142709B2 (zh) |
KR (1) | KR102423710B1 (zh) |
CN (1) | CN112789650B (zh) |
WO (1) | WO2021045781A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116391200A (zh) * | 2021-06-21 | 2023-07-04 | 谷歌有限责任公司 | 缩放不可知水印提取 |
WO2022271146A1 (en) * | 2021-06-21 | 2022-12-29 | Google Llc | Zoom agnostic watermark extraction |
EP4238312A1 (en) | 2022-01-11 | 2023-09-06 | Google LLC | End-to-end watermarking system |
US20240087075A1 (en) * | 2022-01-11 | 2024-03-14 | Google Llc | End-to-end watermarking system |
CN114440834B (zh) * | 2022-01-27 | 2023-05-02 | 中国人民解放军战略支援部队信息工程大学 | 一种非编码标志的物方与像方匹配方法 |
US11706369B1 (en) * | 2022-03-02 | 2023-07-18 | Avalara, Inc. | Systems and methods for digitally watermarking resources produced by an online software platform |
CN114863143B (zh) * | 2022-05-20 | 2023-03-21 | 北京百度网讯科技有限公司 | 图像检测方法、装置、电子设备及存储介质 |
US20240037688A1 (en) * | 2022-07-27 | 2024-02-01 | GeoSnapshot Pty Ltd | Inspection of digital images through watermarks |
CN116385414B (zh) * | 2023-04-10 | 2023-11-07 | 哈尔滨耐是智能科技有限公司 | 零部件多尺度缺陷特征提取方法、计算设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748900A (zh) * | 2011-02-04 | 2014-04-23 | 斯诺弗雷克解决方案公司 | 用于数字媒体的独特水印 |
CN106991423A (zh) * | 2016-01-21 | 2017-07-28 | 腾讯科技(深圳)有限公司 | 识别规格图片中是否包含水印的方法及装置 |
CN109791579A (zh) * | 2017-03-14 | 2019-05-21 | 谷歌有限责任公司 | 半透明嵌入式水印 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832119C1 (en) * | 1993-11-18 | 2002-03-05 | Digimarc Corp | Methods for controlling systems using control signals embedded in empirical data |
US6360000B1 (en) * | 1998-11-09 | 2002-03-19 | David C. Collier | Method and apparatus for watermark detection for specific scales and arbitrary shifts |
US7013021B2 (en) * | 1999-03-19 | 2006-03-14 | Digimarc Corporation | Watermark detection utilizing regions with higher probability of success |
JP2002092683A (ja) | 2000-07-14 | 2002-03-29 | Oki Electric Ind Co Ltd | 媒体真偽鑑別装置 |
US6952485B1 (en) * | 2000-09-11 | 2005-10-04 | Digimarc Corporation | Watermark encoding and decoding in imaging devices and imaging device interfaces |
MXPA05003984A (es) * | 2002-10-15 | 2005-06-22 | Digimarc Corp | Documento de identificacion y metodos relacionados. |
JP4269861B2 (ja) | 2003-09-12 | 2009-05-27 | 沖電気工業株式会社 | 印刷物処理システム,透かし入り文書印刷装置,透かし入り文書読み取り装置,印刷物処理方法,情報読み取り装置,および情報読み取り方法 |
WO2012034280A1 (en) * | 2010-09-16 | 2012-03-22 | Hewlett-Packard Development Company, L.P. | Digital watermarking |
JP2013009162A (ja) | 2011-06-24 | 2013-01-10 | Mitsubishi Electric Corp | 画像電子透かし埋め込み装置及び画像電子透かし検出装置 |
EP2749040A4 (en) * | 2011-08-26 | 2015-05-06 | Google Inc | SYSTEM AND METHOD FOR DETERMINING THE CONFIDENCE LEVEL FOR THE CURRENT PRESENTATION OF A MEDIA ELEMENT |
JP6216516B2 (ja) | 2013-02-25 | 2017-10-18 | 株式会社日立ソリューションズ | 電子透かし埋め込み方法および電子透かし検出方法 |
JP6138706B2 (ja) | 2014-01-17 | 2017-05-31 | 株式会社日立ソリューションズ | 電子透かし埋め込み方法または電子透かし検出方法 |
US9639911B2 (en) * | 2014-08-20 | 2017-05-02 | Verance Corporation | Watermark detection using a multiplicity of predicted patterns |
US9756401B2 (en) * | 2015-04-07 | 2017-09-05 | Sony Corporation | Processing and providing an image in which a plurality of symbols are encoded |
EP3410685B1 (en) * | 2016-01-27 | 2020-12-02 | Rakuten, Inc. | Image processing device, image processing method, and program |
US10521566B2 (en) * | 2016-05-12 | 2019-12-31 | Markany Inc. | Method and apparatus of DRM systems for protecting enterprise confidentiality |
-
2019
- 2019-09-06 KR KR1020207022603A patent/KR102423710B1/ko active IP Right Grant
- 2019-09-06 CN CN201980012645.8A patent/CN112789650B/zh active Active
- 2019-09-06 WO PCT/US2019/050011 patent/WO2021045781A1/en unknown
- 2019-09-06 EP EP19773283.7A patent/EP3815034A1/en active Pending
- 2019-09-06 JP JP2020542769A patent/JP7142709B2/ja active Active
- 2019-09-06 US US16/967,284 patent/US20210334929A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103748900A (zh) * | 2011-02-04 | 2014-04-23 | 斯诺弗雷克解决方案公司 | 用于数字媒体的独特水印 |
CN106991423A (zh) * | 2016-01-21 | 2017-07-28 | 腾讯科技(深圳)有限公司 | 识别规格图片中是否包含水印的方法及装置 |
CN109791579A (zh) * | 2017-03-14 | 2019-05-21 | 谷歌有限责任公司 | 半透明嵌入式水印 |
Also Published As
Publication number | Publication date |
---|---|
EP3815034A1 (en) | 2021-05-05 |
KR102423710B1 (ko) | 2022-07-22 |
WO2021045781A1 (en) | 2021-03-11 |
KR20210030247A (ko) | 2021-03-17 |
JP2022503307A (ja) | 2022-01-12 |
US20210334929A1 (en) | 2021-10-28 |
CN112789650A (zh) | 2021-05-11 |
JP7142709B2 (ja) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112789650B (zh) | 检测半透明图像水印 | |
Ni et al. | ESIM: Edge similarity for screen content image quality assessment | |
CN109791579B (zh) | 半透明嵌入式水印 | |
US7528848B2 (en) | Embedded interaction code decoding for a liquid crystal display | |
US10867171B1 (en) | Systems and methods for machine learning based content extraction from document images | |
US7619607B2 (en) | Embedding a pattern design onto a liquid crystal display | |
EP2587826A1 (en) | Extraction and association method and system for objects of interest in video | |
US10885879B2 (en) | Media rendering with orientation metadata | |
CN116746155A (zh) | 端到端加水印*** | |
US20220382807A1 (en) | Deduplication of media files | |
US20230328101A1 (en) | Systems and methods of detecting anomalous websites | |
CN107247984B (zh) | 一种可视化二维码的编码方法 | |
US20100121907A1 (en) | Cooperative Measurement Technique for the Determination of Internet Web Page Exposure and Viewing Behavior | |
CN117597702A (zh) | 缩放无关的水印提取 | |
US20230325959A1 (en) | Zoom agnostic watermark extraction | |
Hua et al. | Steganography for medical record image | |
Rajkumar et al. | A robust and forensic transform for copy move digital image forgery detection based on dense depth block matching | |
US8571342B2 (en) | Image processing and generation of focus information | |
CN113762393B (zh) | 模型训练方法、注视点检测方法、介质、装置和计算设备 | |
CN113495839B (zh) | 测试页面的生成方法、装置、电子设备和存储介质 | |
US20240087075A1 (en) | End-to-end watermarking system | |
CN115294227A (zh) | 一种多媒体界面生成方法、装置、设备及介质 | |
CN112085670A (zh) | 一种联合语义可解释信息的图像修复方法及*** | |
CN118051908A (zh) | 恶意代码同源检测方法、装置、设备及存储介质 | |
CN112257749A (zh) | 相似图片处理方法、装置、终端设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |