CN116029971A - 用于在图像或视频内容中嵌入标记物的计算机实现的方法和对应的标记物检测方法 - Google Patents
用于在图像或视频内容中嵌入标记物的计算机实现的方法和对应的标记物检测方法 Download PDFInfo
- Publication number
- CN116029971A CN116029971A CN202211305548.8A CN202211305548A CN116029971A CN 116029971 A CN116029971 A CN 116029971A CN 202211305548 A CN202211305548 A CN 202211305548A CN 116029971 A CN116029971 A CN 116029971A
- Authority
- CN
- China
- Prior art keywords
- color
- marker
- pixel
- image
- computer
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32101—Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
- H04N1/32144—Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title embedded in the image data, i.e. enclosed or integrated in the image, e.g. watermark, super-imposed logo or stamp
- H04N1/32149—Methods relating to embedding, encoding, decoding, detection or retrieval operations
- H04N1/32309—Methods relating to embedding, encoding, decoding, detection or retrieval operations in colour image data
-
- 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/0092—Payload characteristic determination in a watermarking scheme, e.g. number of bits to be embedded
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32101—Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
- H04N1/32144—Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title embedded in the image data, i.e. enclosed or integrated in the image, e.g. watermark, super-imposed logo or stamp
- H04N1/32149—Methods relating to embedding, encoding, decoding, detection or retrieval operations
- H04N1/3232—Robust embedding or watermarking
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Editing Of Facsimile Originals (AREA)
- Television Signal Processing For Recording (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一种用于在图像或视频内容中嵌入标记物的计算机实现的方法,包括以下操作:a)接收(200)用于嵌入的输入图像或帧,b)确定(210)要在输入图像或帧内编码的二进制消息,二进制消息包括具有大于或等于2的相同位数的位序列,二进制消息至少包括头部部分,头部部分包括至少两个不相同的连续位序列,c)检测(220)输入图像或帧内的区域,使得区域内的颜色是均匀的,并且区域呈现所选的长度和高度,d)将每个可能的位序列与根据均匀区域内的颜色和编码规则确定的对应编码颜色相关联(230),使得相应颜色全部彼此不同,以及e)生成(240,260)标记物颜色表,其中每个元素存储与二进制消息的位序列相关联的编码颜色,使得颜色表构成二进制消息的颜色编码,以及f)通过在附加方向上定向地附加包括至少所选数量的像素的像素块,在区域中嵌入(270)标记物,给定像素块内的像素各自用标记物颜色表的元素的编码颜色着色,标记物颜色表的每个元素与至少一个像素块相关联。
Description
技术领域
本发明涉及计算机视觉领域。
背景技术
存在这样的上下文,其中给定的内容具有不总是可访问的特定结构,或者对其来说,可能不总是希望使用可用的工具来访问该特定结构。
例如,涉及经由图像或串流的屏幕共享的一些Web应用就是这种情况,这些应用要求使用特定模块以不依赖于第三方组件,这些模块导致与安全需求和/或用户偏好相关联的问题。
因此,需要能够检测图像或视频内容的特定部分而不求助于现有的方法或API(“应用编程接口”)。API是一种软件接口,为其他软件块提供服务。标记是解决这个问题的已知方法。标记可以被定义为使用秘密地嵌入在诸如音频、视频或图像数据的噪声容忍信号中的标记物。这更加复杂,因为标记方法需要对被标记媒体的高有损压缩具有鲁棒性,并且快速检测,以便易于使用。
已知的普通技术(例如,在颜色信息的最低有效位中逐像素地编码信息)由于在压缩中的丢失而无法使用。存在两种方法允许考虑有损压缩:
-压缩感知解决方案:这些方案试图在已知压缩算法中找到安全点,并利用这些安全点以可取回的方式将信息隐藏在压缩介质中,以及
-特征感知解决方案:这些方案通过改变源图像的特征来编码经过通用纠错码的消息。
显然,以前的解决方案不能用于本发明的目的,因为压缩算法和变体的数量与实现方式的数量一样多。
Sun,Shuliang的文章(2018)“Image Steganography Based on Hamming Codeand Edge Detection”International Arab Journal of Information Technologu,15,2018描述了如何通过修改图像内检测到的边缘像素来执行隐写(steganography)。这需要控制文档中的这些边缘,尤其是用于嵌入第三方内容时,这是非常严格的要求。一般来说,特征感知的隐写方法总是假设完全控制接收隐藏信息块的媒体的视觉外观,这也是非常严格的要求。
鉴于以上,目前还没有令人满意的现有解决方案提供一种提供计算时间友好的检测方法的抗压缩隐写技术。
发明内容
本发明旨在改善这种状况。为此,申请人提出了一种用于在图像或视频内容中嵌入标记物的计算机实现的方法,包括以下操作:
a)接收用于嵌入的输入图像或帧,
b)确定要在所述输入图像或帧内编码的二进制消息,所述二进制消息包括具有大于或等于2的相同位数的位序列,所述二进制消息至少包括头部部分,所述头部部分包括至少两个不相同的连续位序列,
c)检测所述输入图像或帧内的区域,使得所述区域内的颜色是均匀的,并且所述区域呈现所选的长度和高度,
d)将每个可能的位序列与根据均匀区域内的颜色和编码规则确定的对应编码颜色相关联,使得相应颜色全部彼此不同,以及
e)生成标记物颜色表,其中每个元素存储与所述二进制消息的位序列相关联的编码颜色,使得颜色表构成所述二进制消息的颜色编码,以及
f)通过在附加方向上定向地附加包括至少所选数量的像素的像素块,在所述区域中嵌入所述标记物,给定像素块内的像素各自用所述标记物颜色表的元素的编码颜色来着色,所述标记物颜色表的每个元素与至少一个像素块相关联。
该方法是有利的,因为它允许嵌入标记物,该标记物可以用具有线性复杂度的检测方法来检测,并且抗有损压缩。
在各种实施例中,该方法可以呈现以下特征中的一个或多个:
-操作e)包括使用水平附加方向、在附加方向上的数量为四个像素,以及进一步创建具有正方形形状的像素块,
-操作e)还包括:在附加下一像素块之前,将所述头部部分的每个像素块重复所选的次数。
-所述头部部分包括位序列,这些位序列被布置成使得每个位序列不同于其紧邻,以使得两个相邻位序列的每个组合在所述头部部分中是唯一的,并且
-所述二进制消息包括头部部分和有效载荷部分,所述有效载荷部分包括至少两个位序列,其中,操作b)包括将纠错码应用于所述有效载荷部分以获得鲁棒的有效载荷部分,以及交错所述鲁棒的有效载荷部分。
本发明还涉及一种用于检测根据前述权利要求之一的方法嵌入在图像或视频内容中的标记物的计算机实现的方法,包括以下操作:
a)接收用于检测的输入图像或帧,
b)按沿图像解析方向对齐的像素组解析所述输入图像或帧,每个像素组中的像素在所述图像解析方向上在所述图像内被等于像素块的大小的多个像素分隔开,所述像素组具有头部中的位序列数量的大小,
c)在每个像素组中,检测每个像素的颜色,并且将所述颜色与位序列的编码颜色之一匹配,
d)在考虑得到的位序列对和所述头部部分的位序列对的位置的情况下,将得到的位序列对与所述头部部分的位序列对进行比较,并且在检测到所选数量的匹配的位序列对时,将对应像素组中的第一像素的位置存储为潜在的标记物起始位置。
在各种实施例中,该方法可以呈现以下特征中的一个或多个:
-操作b)、c)和d)是通过并行地解析等于在附加方向上的所选的像素数量的多个像素组来顺序执行的,
-所述图像解析方向是水平的,
-在嵌入的标记物中编码的所述二进制消息还包括有效载荷部分,并且其中,所述方法还包括操作e):根据所述图像解析方向解析所述图像,以取回与所述有效载荷部分的像素块对应的所有像素;检测每个像素的颜色;以及将所述颜色与位序列的编码颜色之一匹配,
-如果操作e)未能将像素与编码颜色匹配,则继续至操作b)至d),
-所述有效载荷部分已经根据上述编码方法编码,所述方法还包括操作f):相应地解码所述位序列,并且如果操作f)成功,则用正方形窗口探索在所述潜在的标记物起始位置周围的区域,所述正方形窗口的边具有等于在附加方向上的所选的像素数量的大小,所述窗口以所述潜在的标记物起始位置为中心;以及识别隐含地定义图像区的像素,所述图像区在颜色上与最初嵌入的标记物最佳对应,以及
-如果操作f)未能解码有效载荷部分,则继续至操作b)至d)。
本发明还涉及一种计算机程序,包括用于执行根据本发明的方法的指令;一种在其上记录有这种计算机程序的数据存储介质;以及一种计算机系统,包括耦合到存储器的处理器,所述存储器上记录有这种计算机程序。
附图说明
本发明的其他特征和优点在下面对附图的描述中将容易地看出,这些附图示出了本发明的示例性实施例,其中:
-图1示出了根据本发明的系统的总体示意图,
-图2示出了由图1的嵌入器执行的标记物嵌入功能的示例性实施例,
-图3示出了用图2的功能产生的标记物的示意性示例,以及
-图4示出了由图1的检测器执行的标记物检测功能的示例性实施例。
具体实施方式
附图和下面的描述包括了大部分积极的和定义良好的特征。因此,它们不仅对理解本发明有用,而且在需要时还可以用于对其定义作出贡献。
图1示出了根据本发明的系统的总体示意图。系统2包括存储器4、嵌入器6和检测器8。
存储器4存储系统2中使用的所有数据,无论是持久的还是临时的。存储器4接收所有的输入和输出。存储在存储器4中的主要数据类型是图像或视频/串流帧10、嵌入和编码参数12、二进制消息14和标记的图像16。
如从本文描述的实施例将容易看出的,该系统可以是所有和任何类型的计算机,即个人计算机、膝上型计算机、平板计算、移动电话等。根据本发明处理的图像可以通过连接到系统2的显示器来显示。
在下面,表达“图像”将用于指代作为系统2的主题的任何媒体或媒体的提取。更准确地,系统2处理图像,但是这些图像可以来自文件,这些文件本身是图像的一部分或全部,但是它们也可以是视频流的帧,无论是记录的还是实时的,或者它们可能是另一文件的子部分,例如,帧内的DOM元素。
在本文描述的示例中,存储器4可以以任何合适的方式实现,即,借助于硬盘驱动器、固态驱动器、闪存、嵌入处理器中的存储器、在云中可访问的远程存储设备或任何其他合适的方式。
一些数据可以存储在与存储器4分离的存储器上,存储器4本身可以由单独的单元构成。一些数据可以在必要时被丢弃,并且不需要将所有数据存储在单个存储器中。
在本文描述的示例中,嵌入器6和检测器8是在一个或多个处理器上执行的计算机程序。这样的处理器包括任何已知的用于执行自动化演算的单元,例如,CPU、GPU、CPU和/或GPU网格、远程演算网格、专门配置的FPGA、专门配置的ASIC、诸如SOC或NOC的专用芯片、AI专用芯片等。
嵌入器6被布置成接收要被编码和嵌入的输入图像10、嵌入和编码参数12和二进制消息14。嵌入器6处理该数据并返回标记的图像16,该标记的图像16可以存储在存储器4中或发送给另一方。
相反,检测器8接收推测标记的图像16以及嵌入和编码参数12。检测器8处理该数据并返回二进制消息14或另一类型的相关信息。
图2示出了由嵌入器6执行的函数的示例性实施例。
该函数以变量输入操作200开始,其中接收图2的函数的输入。这可以通过函数inp()来执行,其中将输入图像Img、标记物生成参数Par和消息BinMsg作为将用作全局变量的变元来提供。
这可以通过人机接口(HMI)来实现。任何类型的HMI都可以使用,只要它提供一个接口,用户通过该接口指定或以其他方式上传包含这些全局变量的文件或指定存储器4中的条目。例如,无论是使用鼠标还是键盘,都可以通过指出视频会议应用的显示的特定区域来完成此操作。这也可以自动完成。
操作200之后是消息分量确定操作210,其中确定要嵌入图像中的标记物的头部和有效载荷。这可以通过函数Prepare()来完成,该函数接收消息BinMsg和参数Par作为变元,并返回一对向量Header[]和Payload[]。
在本文描述的示例中,向量Header[]包含要嵌入的标记物的二进制头部,并且总是相同的。它可以包含于参数Par中,在函数Prepare()中硬编码,或者以其他方式确定。替代地,向量Header[]可以根据参数Par构建或从消息BinMsg中提取。
向量Payload[]是消息BinMsg的有效载荷,并且包含旨在在标记物中传输的信息。在一个实施例中,有效载荷可以包含关于旨在被共享的DOM对象的信息。在另一实施例中,有效载荷可以包含关于正在标记的图像的标识符。在又一实施例中,有效载荷可以用于跟踪目的。在一些实施例中,可以省略向量Payload[]。
Header[]Payload[],向量Payload[]的大小根据参数Par固定,或者隐式固定。如果消息BinMsg的大小小于向量Payload[]的大小,那么向量Payload[]可以填充0。在另一替代实施例中,函数Prepare()还执行下面进一步描述的操作250的操作,并且向量Payload[]包含有效载荷的已编码版本。
操作210之后是标记物起始位置确定操作220。这可以通过函数Locate()来完成,该函数接收图像Img和参数Par作为变元,并返回标记物起始点StartPoint和参考颜色RefColor。在替代实施例中,操作220可以在操作210之前执行,或者它们可以并行执行。
操作220的函数Locate()用于在图像Img中检测可以存储标记物的区域。如下文进一步出现的,本发明允许存储可能不明显的标记物,并以这种方式涉及隐写。标记物本身的大小由参数Par决定,并且它采取具有不同颜色编码信息的像素行的一般形式,其中原始图像具有均匀或非常均一(homogeneous)的颜色。在不明显的标记物的情况下,颜色变化被选择为使得它们不容易被看到内容的人区分。为了嵌入这样的标记物,因此需要找到图像Img的区域,该区域在颜色上足够均匀或均一以涵盖标记物大小。
操作220的函数Locate()的结果包括图像Img内的第一区域的最左侧点的坐标,该第一区域具有均匀颜色RefColor并且大到足以包含由嵌入器6生成的标记物。标记物的大小是预先知道的,因为它是从参数Par导出的。
在图3所示的示例中,标记物由像素块30构成,每个像素块30具有由4×4像素构成的正方形形状。这允许对抗高频信息丢弃的影响,并对所有类型的压缩具有弹性。实际上,即使压缩算法改变了像素块的边缘像素,中心区域也将保持相对不受影响。因此,正方形形状可以被认为定义牺牲像素(像素块的外边缘),由此确保算法不可知性和算法相关的压缩伪影弹性。更一般地,像素块30可以是矩形或正方形,只要两个维度都等于三或更多。
在头部部分32中,像素块作为块34重复两次,这允许即使在标记物的头部部分的顶部有鼠标指针,以及在外部视觉伪影的情况下,也可以检测标记物的头部部分。消息部分36由具有与头部部分32的像素块相同的大小的单个像素块构成。
这种差异背后的逻辑在于,能够检测标记物的头部部分是至关重要的,头部部分旨在更短,因为它不携带有意义的信息。由于这个原因,重复像素块是在由于缺乏头部的存在和准确位置的先验知识而导致错误编码不可用的上下文中提供弹性的良好方式。相反,标记物的有效负荷部分通常旨在比头部部分长,并且可能经历如下面出现的错误编码,这比复制像素块更优选。在一些实施例中,头部可以任意长,而有效载荷可以被选择地任意短。
在各种实施例中,像素块的大小及其形状可以变化,并且甚至可以彼此不同。此外,消息部分的像素块也可以重复两次或更多次。
操作220之后是颜色编码确定操作230,其中函数ColorMix()接收在操作220中确定的参考颜色RefColor以及参数Par,并确定将在表EncodingColorBitSequences[]中作为结果返回并将用于对标记物的像素块着色的一组颜色。表EncodingColorBitSequences[]可以是二维的,并存储位序列和对应的编码颜色,或者它可以是一维的,其中位序列是隐式的。
如前面讨论的,参数Par包括位序列大小,它指示编码不同的位序列需要多少种不同的颜色。例如,对于位序列大小2,可能的位序列是00、01、10和11,这意味着需要四种颜色来基于参考颜色RefColor对不同的位序列进行编码。在位序列大小为3的情况下,需要8种颜色。通常,需要2^n种颜色来编码大小为n的位序列。
申请人已经发现,使用大小等于2的位序列是有利的,因为它减少了编码位序列所需的颜色的数量(越大的位序列大小意味着像素块编码越多的位,但这也意味着由于有更多不同的颜色,因此更难保持标记物不明显)。
有许多方法可以用来将一组颜色与位序列相关联。这些方法之一是获取参考颜色RefColor的RGB(红绿蓝,这是在大多数计算机应用中通常计算颜色的方式,特别是在web应用中)值,并修改R和/或B通道。不改变G通道的原因之一是人眼对绿色特别敏感,并且不修改G通道允许更不明显的标记物,例如,用于隐写应用。替代地,可以改变所有通道。例如,可以加上或减去固定值来执行编码:对R或B通道或者两者进行+3或-3。为了促进不明显性,要做出的权衡是在保证解码时间的良好鲁棒性的同时保证最小的绝对固定值。值3在这方面显示了出色的结果。申请人已经发现,高达6的值可以保持良好的不明显结果,与隐写应用兼容。
申请人还发现,如果参考颜色的通道值低于128则加上值,否则减去值,是有利的。实际上,这允许使用任何参考颜色RefCol值,不管使用的是什么固定值。在替代实施例中,操作220可以被修改以拒绝与固定值不兼容的起始点,即,如果起始点太接近RGB极值的极限。例如,对于+3或-3的固定值,操作220可以拒绝具有可以被修改并且小于3或高于252的颜色通道R、G或B的起始点。当然,可以使用3以外的另一值。此外,可以使用两个不同的边界值。
这意味着,对于具有RGB值(130、64、127)的参考颜色,编码可以是
位序列00:(130,64,127)
位序列01:(130,64,130)
位序列10:(127,64,127)
位序列11:(127,64,130)
替代地,该值可能不同于3,加和减也可能不同,可以是只加,或者只减,等等。
申请人还发现,以最小化更有可能被误认为彼此的颜色之间的汉明距离的方式将颜色分配给位序列是有利的。实际上,汉明距离是比较串(特别是位串)时的默认距离,并且它与下面解释的汉明校正的使用一致,该汉明校正的纠错能力取决于已编码消息和已解码消息的汉明距离。
为了清楚起见,需要提醒的是,长度相等的两个串之间的汉明距离是对应符号不同的位置的数量。换句话说,它测量将一个串改变为另一串所需的最小替换次数,或者可以将一个串转换为另一串的最小错误次数。
这是通过优化颜色之间的曼哈顿RGB距离和对应位序列之间的汉明距离之间的差值之和来实现的。这类似于最小化以下等式:
其中,ARGB和BRGB表示从参考颜色RefCol值导出的颜色,并且Abits和Bbits表示位序列,该位序列可以与得到的表EncodingColorBitSequence[]中的颜色ARGB和BRGB相关联。
为了清楚起见,需要提醒的是,两种颜色之间的曼哈顿RGB距离是这些颜色的每个相应RGB通道的距离之和,即对于两种颜色C1和C2,|R(C1)-R(C2)|+|G(C1)-G(C2)|+|B(C1)-B(C2)|。
这个分配可以通过函数ColorMix()计算,或者出于性能目的可以在查找表中预先计算。
一旦确定了头部、有效载荷和编码颜色,就可以生成标记物。这是通过三个操作240、250和260完成的。操作240和250与260一起可以顺序地或并行地执行。
标记物头部生成操作240执行函数MarkerHeader(),其接收向量Header[]、表EncodingColorBitSequences[]和参数Par,并返回标记物头部表MarkerHeader[],其包含编码标记物头部的像素块的颜色。
如上所述,参数Par包含像素块大小和形状,以及标记物头部像素块的冗余参数。标记物头部表MrkHeader[]可以从最左边的像素开始隐式地指定像素,其中给定行中的像素逐渐向右,而下面行中的像素逐渐向下。
有效载荷编码操作250执行函数Encode(),其接收有效载荷向量Payload[]和参数Par作为变元,并返回与已编码有效载荷对应的位序列的向量ErrorCodedPayload[]。这种编码的目标主要是使有效载荷对高损编码更加鲁棒。为了做到这一点,申请人已经发现使用向量Payload[]并用汉明错误码对其进行编码是有利的,这里的汉明错误码是Hamming(8,4)。例如,这意味着有效载荷1100 0101的向量Payload[]将被编码为0111100001001011。
使用Hamming(8,4)错误码的优点在于,它提供了附加奇偶校验位,从而允许对最优Hamming(7;4)错误码检测一个附加错误,而且它的输出长度是输入长度的倍数,这消除了填充的需要。可以使用汉明错误码以外的其他错误码。
此后,Encode()进一步交错该结果,以便将可能的错误突发扩展到不同的汉明块。可以使用汉明错误码以外的其他错误码,并且交错可以是可选的。
这意味着汉明编码的有效载荷被切割成大小为8的块(汉明块的大小),并且这些块像两个梳子一样缠绕在一起(第一块的第一位后面跟着第二块的第一位,等等,直到最后一个块的第一位,然后第一块的第二位后面跟着第二块的第二位,等等):0111100001001011变成00111010 11000101。
最后,函数Encode()将结果作为位序列存储在向量ErrorCodedPayload[]中。顺便地,当位序列大小等于2时,位序列可以在交错的同时进行,这允许更快地执行函数Encode()。如上面解释的,操作250可以与操作210同时执行。
标记物错误编码的有效载荷生成操作260执行函数MarkerPayload[],其接收向量ErrorCodedPayload[]、表EncodingColorbitSequences[]和参数Par作为变元,并返回标记物有效载荷表MarkerPayload[],其包含编码标记物有效载荷的像素块的颜色。
函数MarkerPayload[]与函数MarkerHeader()非常相似,除了生成像素块的规则对于有效载荷可能不同,如上面解释的。
最后,一旦已经生成了标记物头部和标记物有效载荷,嵌入器6在图像标记操作270中完成其功能,该操作270执行函数Embed(),该函数接收标记物头部表MarkerHeader[]、标记物有效载荷表MarkerPayload[]、起始点StartPoint和图像Img作为变元,并返回标记物嵌入的图像EmbeddedImg。函数Embed()简单地从图像Img中的起始点StartPoint开始,并将起始点StartPoint之后的像素替换为根据标记物头部表MarkerHeader[]和标记物有效载荷表MarkerPayload[]着色的像素。
结果是由于编码颜色的选择而具有不明显的标记物的图像,并且该图像高度抗有损压缩。在上述Web上下文中,这允许指定对象或子对象,而不必求助于任何外部库或使用另一有安全风险的插件的JavaScript。如上所述,在一些实施例中,特别是如果标记物可以放置在感兴趣区域中,则标记物可以被简化为仅头部。
图4示出了由检测器8执行的功能的示例性实施例。
如下所示,检测器8能够确定输入图像是否包含由嵌入器6引入的标记物。在上述Web上下文中,图像共享设备将在串流的上游使用嵌入器6,并且接收设备将在串流的下游使用检测器。
如下面将看出的,检测器8可以返回有效载荷消息,或者它可以返回与嵌入的图像的使用相关的另一信息。
图4的函数包括几个循环,其旨在执行如下操作:
-图像被水平解析,有利地通过处理等于像素块侧的大小的像素数量。因此,任何给定的循环只能在每个像素块和每行中检测至多一个承载信息的像素,使得可能以高冗余度在逐像素的基础上将颜色转换为信息,以充分受益于像素块设计的鲁棒性,
-将颜色转换与头部的位序列转换进行比较,以便尽可能快地尝试和检测头部。一旦识别出选定数量的正确放置的位序列,就停止图像解析以尝试并解码有效载荷,
-如果没有信息来推断有效载荷的正确内容,则非常严格地执行有效载荷颜色解码,并且有效载荷像素块颜色检测中的任何错误都导致解码尝试失败,以便促进错误消息解码之上的解码失败,
-如果遇到图像的右端,或者已经解析了已知大小的头部,则生成新的像素组,直到头部被认为检测到,或者图像的所有像素都解析不成功。
该函数以输入操作400开始,其中函数inp()接收输入图像Img(在图1所示的示例中,使用嵌入器6的结果——图像EmbImg)以及参数Par作为变元。
这可以通过人机接口(HMI)来实现。任何类型的HMI都可以使用,只要它提供一个接口,用户通过该接口指定或以其他方式上传包含这些全局变量的文件或指定存储器4中的条目。例如,无论是使用鼠标还是键盘,都可以通过指出视频会议应用的显示的特定区域来完成此操作。这也可以自动完成。
输入操作400返回图像解析起始点,该图像解析起始点由其在图像中的坐标(i0,j0)指定。通常,i0和j0将等于0(意味着从图像的左上角开始)。然而,参数Par可能不同地表示。
操作400之后是索引初始化操作402,其中将发起局部变量i、j和x。索引i和j将用于取回图像中的像素颜色,而x将识别函数试图用标记物头部识别的不同像素组。
在操作402之后,像素组颜色取回循环以像素组解析位置重置操作404开始,其中局部变量y以0开始。变量y将指示被解析的像素在每个像素组中的位置。
因此,在操作404之后,顺序或并行地执行四个操作406、408、410和412,其中,通过接收输入图像Img、索引i的增加的值和索引j作为变元的函数col()将增加x索引的四个像素组填充在它们的位置y,并返回像素组表GP[]中的颜色。
由于输入Img在被检测器8接收之前很可能经历了高损压缩,所以它所包含的像素的颜色很有可能与表EncodingColorBitSequences[]的颜色不匹配。因此,函数Col()尝试确定表EncodingColorBitSequences[]中哪种颜色最接近给定像素的颜色。
该距离可以基于在容差阈值内的曼哈顿RGB距离。使用0作为容差值显然会造成漏报(false negative),但申请人已经发现容差阈值最好不高于表EncodingColorbitSequences[]的最近元素之间的最小颜色距离:过高的容差阈值会导致完全不相关的颜色被解释为对应于EncodingColorbitSequences[]颜色,导致误报(falsepositive)标记物头部检测。申请人已经发现合理的经验值是表EncodingColorbitSequence[]的最近元素之间的最小颜色距离的一半,例如,如果函数Col()不能将表EncodingColorbitSequences[]中的颜色与解析的像素相关联,那么表元素GP[x,y]将保持为空,或者填充有指示对应失败的值。
当查看操作406到412时,看起来该循环将表GP[]填充为图像Img上的水平滑动窗口。因此,操作412之后是操作414,其中索引i递增4,以便解析图像Img的接下来四个水平像素。在嵌入过程中重复头部像素块时,索引i可能增加8或4的另一倍数。该过程和标记物的水平性质允许利用CPU中的推测高速缓存,这基于给定行的给定像素,用该图像行的剩余部分填充高速缓存(因为图像是从左到右然后从上到下逐像素存储在存储器中的)。可以以降低效率为代价,以不同的方式进行解析。
操作414之后是头部检测操作416,其确定像素组之一是否包含对应于标记物头部的颜色序列。为了这样做,在操作416中执行函数HdDtct(),并将在像素组GP[x]中指示的颜色转换与从标记物头部期望的颜色转换进行比较。一旦在头部中在它们的预期点处找到所选数量的精确对应的转换,例如,三个中的两个,就认为标记物头部在图像Img中已经潜在地被识别。
在这种情况下,操作416之后是有效载荷检测操作418,其中执行函数PLDtct()。该函数对所有像素进行水平解析,沿着所声称的标记物头部一直到标记物有效载荷长度。每个像素由函数Color()处理,以确定它是否与表EncodingColorBitSequences[]中的颜色相关联,然后函数PLDtct()尝试对得到的有效载荷执行解码。这是通过首先对对应于检测到的颜色的位序列进行去交错,然后通过对得到的消息进行汉明解码(或由嵌入器6使用的用于错误码的解码函数)来完成的。当然,如果没有使用交错和/或没有使用错误编码,则不执行去交错和解码。如果没有信息来推断有效载荷的正确内容,那么非常严格地执行函数PLDtct()中的有效载荷颜色解码。有效载荷像素块颜色检测中的任何错误都将导致函数PLDtct()返回否定的结果,以便促进错误消息解码之上的解码失败。
如果解码成功,则认为已成功识别标记物头部。因此,在操作418之后是可选操作419,其中,函数ref()接收表GP[]和图像Img作为变量,并返回确定的标记物头部最左侧位置。
函数Ref()的作用是探索导致成功检测标记物头部的像素组中的最左边像素周围的像素,并查看是否有更好的起始解析点。为此,函数Ref基于起始点恢复具有导致成功检测标记物头部的像素中的最左侧像素并且侧边的大小为像素块侧边的大小的窗口中的所有像素,作为其左上角。此后,函数Ref()为每个得到的候选标记物头部计算在候选标记物头部的像素与嵌入的标记物头部的颜色值之间的曼哈顿RGB距离之和。有利地,这些曼哈顿RGB距离被所有编码颜色之间的最大曼哈顿RGB距离所约束,以便考虑到标记物头部被至少部分隐藏(例如,由鼠标光标隐藏,这将生成异常高的曼哈顿RGB值)的情况。函数Ref()的演算可以看作是对以下公式的优化
其中,Δ(x,y)是要优化的值,MW和MH代表从解码的有效载荷重建的标记物(具有精确的斑点颜色)的宽度和高度,I是探索的区域,而maxdist是在表EncodingColorbitSequences[]的两个最远颜色之间的曼哈顿RGB距离。
此后,函数Ref()返回最佳候选值,即,曼哈顿RGB距离之和最小的起始点。此后,检测随着起始点和/或解码的有效载荷的返回而结束。可以使用曼哈顿RGB距离以外的其他函数,但根据申请人的探索,它与使用汉明错误编码构成最佳组合。
如果函数HdDtct()或PLDtct()中的任何一个返回负值,则意味着必须解析和测试下一组像素。首先,操作420执行函数GP(),其测试当前循环是否已将像素组填充到标记物头部的长度。如果不是这样,则在操作422中递增索引y,并且循环继续操作406到412。
如果像素组已经被填充,则这些候选无效,并且操作424执行函数I()以确定是否已经到达图像Img的右端。如果不是这种情况,则通过在操作426中将索引x递增4来填充新组,在操作404中将索引y重置为0,并用新的像素组重新启动循环。
如果已经到达图像Img的右端,则在操作428中递增索引j以解析图像Img的下一行,并且在操作430中执行函数J()以确定是否已经到达图像Img的右下角。如果是这种情况,则没有找到标记物头部,并且函数在操作432中结束。如果不是这种情况,则在操作434中将索引i重置为0,在操作426中将索引x递增4,并且通过在操作404中将索引y重置为0并用新的像素组重新启动循环来填充新的组。
以水平方式嵌入表现为特别有利,因为这样允许利用处理器的推测高速缓存,这将水平地填充缓冲器。
上述发明的使用的示例与用户的屏幕或窗口的共享相关联。通常,Web浏览器不提供在getDisplayMedia流的帧内检测DOM(文档对象模型)元素以便在不使用html2canvas(这是一种用JavaScript进行截屏的方法)的情况下获得针对该元素的截屏的可能性。为了更好地理解,getDisplayMedia()是MediaDevices接口的一种方法,它提示用户选择并授予权限,以便将显示器或其部分(如窗口)的内容捕获为Mediastream,得到的流可以使用Mediastream Recording API来记录,或者可以作为WebRTC会话的一部分传输。本发明允许提供屏幕或窗口的一部分的容易共享,而不必使用这些传统的方式。
以上仅意味着作为本发明的使用的示例,并且不应该用于限制其范围,因为存在可以使用本发明的许多其他设置。
Claims (15)
1.一种用于在图像或视频内容中嵌入标记物的计算机实现的方法,包括以下操作:
a)接收(200)用于嵌入的输入图像或帧,
b)确定(210)要在所述输入图像或帧内编码的二进制消息,所述二进制消息包括具有大于或等于2的相同位数的位序列,所述二进制消息至少包括头部部分,所述头部部分包括至少两个不相同的连续位序列,
c)检测(220)所述输入图像或帧内的区域,使得所述区域内的颜色是均匀的,并且所述区域呈现所选的长度和高度,
d)将每个可能的位序列与根据均匀区域内的颜色和编码规则确定的对应编码颜色相关联(230),使得相应颜色全部彼此不同,以及
e)生成(240,260)标记物颜色表,其中每个元素存储与所述二进制消息的位序列相关联的编码颜色,使得颜色表构成所述二进制消息的颜色编码,以及
f)通过在附加方向上定向地附加包括至少所选数量的像素的像素块,在所述区域中嵌入(270)所述标记物,给定像素块内的像素各自用所述标记物颜色表的元素的编码颜色来着色,所述标记物颜色表的每个元素与至少一个像素块相关联。
2.根据权利要求1所述的计算机实现的方法,其中,操作e)包括使用水平附加方向、在附加方向上的数量为四个的像素,以及进一步创建具有正方形形状的像素块。
3.根据权利要求1或2所述的计算机实现的方法,其中,操作e)还包括:在附加下一像素块之前,将所述头部部分的每个像素块重复所选的次数。
4.根据前述权利要求之一所述的计算机实现的方法,其中,所述头部部分包括位序列,这些位序列被布置成使得每个位序列不同于其紧邻,以使得两个相邻位序列的每个组合在所述头部部分中是唯一的。
5.根据前述权利要求之一所述的计算机实现的方法,其中,所述二进制消息包括头部部分和有效载荷部分,所述有效载荷部分包括至少两个位序列,其中,操作b)包括将纠错码应用于所述有效载荷部分以获得鲁棒的有效载荷部分,以及交错所述鲁棒的有效载荷部分。
6.一种用于检测根据前述权利要求之一的方法嵌入在图像或视频内容中的标记物的计算机实现的方法,包括以下操作:
a)接收用于检测的输入图像或帧,
b)按沿图像解析方向对齐的像素组解析所述输入图像或帧,每个像素组中的像素在所述图像解析方向上在所述图像内被等于所述像素块的大小的多个像素分隔开,所述像素组具有头部中的位序列数量的大小,
c)在每个像素组中,检测每个像素的颜色,并且将所述颜色与位序列的编码颜色之一匹配,
d)在考虑得到的位序列对和所述头部部分的位序列对的位置的情况下,将得到的位序列对与所述头部部分的位序列对进行比较,并且在检测到所选数量的匹配的位序列对时,将对应像素组中的第一像素的位置存储为潜在的标记物起始位置。
7.根据权利要求6所述的计算机实现的方法,其中,操作b)、c)和d)是通过并行地解析等于在附加方向上的所选的像素数量的多个像素组来顺序执行的。
8.根据权利要求6或7所述的计算机实现的方法,其中,所述图像解析方向是水平的。
9.根据权利要求6至8之一所述的计算机实现的方法,其中,在嵌入的标记物中编码的所述二进制消息还包括有效载荷部分,并且其中,所述方法还包括操作e):根据所述图像解析方向解析所述图像,以取回与所述有效载荷部分的像素块对应的所有像素;检测每个像素的颜色;以及将所述颜色与位序列的编码颜色之一匹配。
10.根据权利要求9所述的计算机实现的方法,其中,如果操作e)未能将像素与编码颜色匹配,则继续至操作b)至d)。
11.根据权利要求9或10所述的计算机实现的方法,其中,所述有效载荷部分已经根据权利要求5编码,所述方法还包括操作f):相应地解码所述位序列,并且如果操作f)成功,则用正方形窗口探索在所述潜在的标记物起始位置周围的区域,所述正方形窗口的边具有等于在所述附加方向上的所选的像素数量的大小,所述窗口以所述潜在的标记物起始位置为中心;以及识别隐含地定义图像区的像素,所述图像区在颜色上与最初嵌入的标记物最佳对应。
12.根据权利要求11所述的计算机实现的方法,其中,如果操作f)未能解码所述有效载荷部分,则继续至操作b)至d)。
13.一种计算机程序,包括用于执行上述权利要求中任一项所述的方法的指令。
14.一种在其上记录有根据权利要求13所述的计算机程序的数据存储介质。
15.一种计算机系统,包括耦合到存储器(4)的处理器,所述存储器(4)上记录有根据权利要求13所述的计算机程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21306480.1A EP4171034A1 (en) | 2021-10-25 | 2021-10-25 | Computer implemented method for embedding a marker in an image or video content and corresponding marker detection method |
EP21306480.1 | 2021-10-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116029971A true CN116029971A (zh) | 2023-04-28 |
Family
ID=79025040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211305548.8A Pending CN116029971A (zh) | 2021-10-25 | 2022-10-24 | 用于在图像或视频内容中嵌入标记物的计算机实现的方法和对应的标记物检测方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11936830B2 (zh) |
EP (1) | EP4171034A1 (zh) |
JP (1) | JP2023064085A (zh) |
CN (1) | CN116029971A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6590996B1 (en) * | 2000-02-14 | 2003-07-08 | Digimarc Corporation | Color adaptive watermarking |
US11082710B2 (en) * | 2016-09-14 | 2021-08-03 | Inscape Data, Inc. | Embedding video watermarks without visible impairments |
US9959586B1 (en) * | 2016-12-13 | 2018-05-01 | GoAnimate, Inc. | System, method, and computer program for encoding and decoding a unique signature in a video file as a set of watermarks |
US10986245B2 (en) * | 2017-06-16 | 2021-04-20 | Digimarc Corporation | Encoded signal systems and methods to ensure minimal robustness |
-
2021
- 2021-10-25 EP EP21306480.1A patent/EP4171034A1/en active Pending
-
2022
- 2022-10-24 US US17/972,322 patent/US11936830B2/en active Active
- 2022-10-24 JP JP2022169607A patent/JP2023064085A/ja active Pending
- 2022-10-24 CN CN202211305548.8A patent/CN116029971A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4171034A1 (en) | 2023-04-26 |
US20230132234A1 (en) | 2023-04-27 |
JP2023064085A (ja) | 2023-05-10 |
US11936830B2 (en) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5471580B2 (ja) | 画像処理装置及びプログラム | |
TW201710957A (zh) | 二維碼的產生方法、解碼方法以及裝置 | |
US9367616B2 (en) | Video descriptor generation device | |
KR20110061551A (ko) | 상황-기반의 적응형 이진 산술 코딩(cabac)비디오 스트림 준수 | |
US9239966B2 (en) | Method and device for watermarking a sequence of images, method and device for authenticating a sequence of watermarked images and corresponding computer program | |
US7840027B2 (en) | Data embedding apparatus and printed material | |
US9275316B2 (en) | Method, apparatus and system for generating an attribute map for processing an image | |
JP6363181B2 (ja) | フレームの処理及び再生 | |
CN116029971A (zh) | 用于在图像或视频内容中嵌入标记物的计算机实现的方法和对应的标记物检测方法 | |
US8504901B2 (en) | Apparatus, method, and computer program product for detecting embedded information | |
US9860562B2 (en) | Method of lookup table size reduction for depth modelling mode in depth coding | |
US20230325959A1 (en) | Zoom agnostic watermark extraction | |
CN114820666A (zh) | 一种增加抠图精确度的方法、装置、计算机设备及存储介质 | |
JP6614822B2 (ja) | 画像符号化装置及びその制御方法及びプログラム及び記憶媒体 | |
CN117597702A (zh) | 缩放无关的水印提取 | |
CN113099269A (zh) | 串匹配预测方法、编码和解码方法及相关设备、装置 | |
US6419162B1 (en) | Maximizing data capacity for embedded data blocks with occlusions therein | |
JP2007328672A (ja) | 2次元コード復号装置、2次元コード復号方法及びプログラム | |
US7702154B2 (en) | Method and apparatus indentifying halftone regions within a digital image | |
CN117291787B (zh) | 一种基于数据水印的追溯方法及系统 | |
KR101482146B1 (ko) | 위치 정보가 삽입된 워터마킹 이미지 생성 시스템 및 방법 | |
JP2009164897A (ja) | 二値化装置及び二値化処理プログラム | |
CN112183695A (zh) | 编码方法、编码图形、编码图形读取方法和拍摄装置 | |
JP4404556B2 (ja) | 動画像符号化方法とシステム及び動画像復号方法とシステム | |
US20230185886A1 (en) | Methods and systems for watermarking documents |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |