KR20210079362A - Improved image watermarking - Google Patents

Improved image watermarking Download PDF

Info

Publication number
KR20210079362A
KR20210079362A KR1020217016131A KR20217016131A KR20210079362A KR 20210079362 A KR20210079362 A KR 20210079362A KR 1020217016131 A KR1020217016131 A KR 1020217016131A KR 20217016131 A KR20217016131 A KR 20217016131A KR 20210079362 A KR20210079362 A KR 20210079362A
Authority
KR
South Korea
Prior art keywords
image
string
decoder
screenshot
timestamp
Prior art date
Application number
KR1020217016131A
Other languages
Korean (ko)
Other versions
KR102578027B1 (en
Inventor
다안 히
데이크 히
Original Assignee
구글 엘엘씨
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210079362A publication Critical patent/KR20210079362A/en
Application granted granted Critical
Publication of KR102578027B1 publication Critical patent/KR102578027B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8358Generation of protective data, e.g. certificates involving watermark
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • G06T1/005Robust watermarking, e.g. average attack or collusion attack resistant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2389Multiplex stream processing, e.g. multiplex stream encrypting
    • H04N21/23892Multiplex stream processing, e.g. multiplex stream encrypting involving embedding information at multiplex stream level, e.g. embedding a watermark at packet level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0051Embedding of the watermark in the spatial domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0065Extraction of an embedded watermark; Reliable detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0083Image watermarking whereby only watermarked image required at decoder, e.g. source-based, blind, oblivious
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0202Image watermarking whereby the quality of watermarked images is measured; Measuring quality or performance of watermarking methods; Balancing between quality and robustness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 개시 내용은 지각성을 저하시키지 않으면서 견고성과 용량을 개선하기 위해 개선된 이미지 워터 마킹을 위한 시스템 및 방법을 제공한다. 특히, 본 명세서에서 논의된 시스템 및 방법은 동일한 왜곡 레벨 및 메시지 속도에서 더 높은 디코딩 성공률을 허용하거나 동일한 왜곡 레벨 및 디코딩 성공률에서 더 높은 메시지 속도를 허용할 수 있다. 이러한 시스템의 구현은 인코더가 아닌 디코더에서만 사용할 수 있는 추가 정보의 부가 체인을 활용하여 점근 무손실 데이터 압축을 달성하여, 동일한 메시지가 더 적은 비트로 전송되도록 한다. The present disclosure provides systems and methods for improved image watermarking to improve robustness and capacity without compromising perceptibility. In particular, the systems and methods discussed herein may allow for a higher decoding success rate at the same distortion level and message rate or a higher message rate at the same distortion level and decoding success rate. Implementations of such a system achieve asymptotic lossless data compression by utilizing an additional chain of additional information available only to the decoder and not the encoder, allowing the same message to be transmitted with fewer bits.

Description

개선된 이미지 워터 마킹Improved image watermarking

본 출원은 2019년 6월 19일에 "개선된 이미지 워터 마킹"이란 제목으로 출원된 PCT 출원 번호 PCT/US2019/037959에 대한 우선권의 이점을 주장하며, 그 전체는 본 명세서에 참고로 포함된다. This application claims the benefit of priority to PCT Application No. PCT/US2019/037959, filed on June 19, 2019, entitled "Improved Image Watermarking", which is incorporated herein by reference in its entirety.

이미지 워터 마킹은 시각적으로 지각할 수 없는 데이터 또는 메시지를 이미지에 임베딩(embed)하는 기술이며, 오리지널 이미지가 워터 마크 추출에 필요한지 여부에 따라 비-블라인트 또는 블라인드로 각각 분류될 수 있다. 블라인드 워터 마킹은 임베딩된 데이터가 미리 임베딩된 오리지널 이미지에 액세스하지 않고도 복구될 수 있다는 점에서 특히 유용하다.Image watermarking is a technique for embedding visually imperceptible data or messages into an image, and can be classified as non-blind or blind, respectively, depending on whether the original image is required for watermark extraction. Blind watermarking is particularly useful in that embedded data can be recovered without accessing the original previously embedded image.

그러나, 현재의 블라인드 이미지 워터 마킹의 구현은 지각성(예컨대, 워터 마킹 메시지 임베딩으로 인한 왜곡이 뷰어(viewer)에 의해 검출될 수 있는지 여부), 견고성(예컨대, 임베딩된 메시지를 디코딩하는 디코더의 성공률) 및 용량(예컨대, 데이터가 이미지에 임베딩될 수 있는 데이터의 양 또는 속도)에 문제가 있을 수 있다. 많은 구현에서, 이 중 하나를 증가시키면 다른 것에서 급격한 성능 저하가 발생할 수 있다.However, the current implementation of blind image watermarking is not perceptible (eg, whether distortion due to embedding the watermarking message can be detected by a viewer), robustness (eg, the success rate of the decoder in decoding the embedded message) ) and capacity (eg, the amount or speed of data at which data can be embedded in an image). In many implementations, increasing one of these can result in sharp performance degradation in the other.

본 명세서에서 논의된 시스템 및 방법은 지각성을 저하시키지 않으면서 견고성과 용량을 개선하기 위해 개선된 이미지 워터 마킹을 제공한다. 특히, 본 명세서에서 논의된 시스템 및 방법은 동일한 왜곡 레벨과 메시지 속도에서 더 높은 디코딩 성공률을 허용하거나 동일한 왜곡 레벨과 디코딩 성공률에서 더 높은 메시지 속도를 허용한다. 이러한 시스템의 구현은 인코더가 아닌 디코더에서만 사용할 수 있는 추가 정보의 부가(side) 체인(또는 부가 채널)을 활용하여 점근 무손실 데이터 압축을 달성하여 동일한 메시지가 더욱 견고하게 또는 더 적은 비트로 전송될 수 있도록 한다.The systems and methods discussed herein provide improved image watermarking to improve robustness and capacity without compromising perceptibility. In particular, the systems and methods discussed herein allow for a higher decoding success rate at the same distortion level and message rate or a higher message rate at the same distortion level and decoding success rate. Implementations of such systems achieve asymptotic lossless data compression by utilizing side chains (or side channels) of additional information available only to the decoder, not the encoder, so that the same message can be transmitted more robustly or with fewer bits. do.

일 양태에서, 본 개시는 개선된 워터 마킹을 위한 시스템에 관한 것이다. 이 시스템은 디바이스의 디코더를 포함한다. 디코더는 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지의 캡처를 수신하고, 캡처의 타임 스탬프를 결정하고, 임베딩된 워터 마크로부터 이진 문자열을 디코딩하고, 캡처의 타임 스탬프의 일부를 사용하여, 이미지의 타임 스탬프를 포함하는 이진 문자열로부터 식별자를 디코딩하고; 디코딩된 식별자를 출력하도록 구성된다. In one aspect, the present disclosure relates to a system for improved watermarking. The system includes a decoder in the device. The decoder receives a capture of an image including at least one embedded watermark, determines a timestamp of the capture, decodes a binary string from the embedded watermark, and uses a portion of the timestamp of the capture, decode the identifier from the binary string containing the timestamp; and output the decoded identifier.

일부 구현에서, 캡처의 타임 스탬프는 캡처의 메타 데이터에서 식별된다. 일부 구현에서, 디코더는 캡처를 포함하는 패킷의 헤더로부터 캡처의 타임 스탬프를 추출하도록 구성된다. 일부 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 서브 세트를 포함한다. 추가 구현에서, 디코더는 캡처의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결함으로써 이진 문자열로부터 식별자를 디코딩하도록 구성된다. 다른 추가 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 큰 다수의 오류 정정 비트를 포함한다.In some implementations, the timestamp of the capture is identified in the metadata of the capture. In some implementations, the decoder is configured to extract a timestamp of the capture from a header of a packet containing the capture. In some implementations, the binary string of the embedded watermark includes a subset of the timestamp of the image. In a further implementation, the decoder is configured to decode the identifier from the binary string by concatenating a portion of the timestamp of the capture with a subset of the timestamp of the image. In another further implementation, the binary string of the embedded watermark includes a number of error correction bits greater than the difference between the length of the timestamp of the image and the length of the subset of timestamps of the image.

일부 구현에서, 디코더는 캡처의 타임 스탬프 일부를 사전 결정된 오프셋과 결합함으로써 이진 문자열로부터 식별자를 디코딩하도록 구성된다. 추가 구현에서, 디코더는 식별자를 성공적으로 디코딩할 때까지 캡처의 타임 스탬프의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합함으로써 이진 문자열로부터 식별자를 디코딩하도록 구성된다. In some implementations, the decoder is configured to decode the identifier from the binary string by combining a portion of a timestamp of the capture with a predetermined offset. In a further implementation, the decoder is configured to decode the identifier from the binary string by repeatedly combining a portion of the timestamp of the capture with a multiple of a predetermined offset until successfully decoding the identifier.

일부 구현에서, 이진 문자열은 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지를 생성한 컨텐츠 서버의 주소를 포함한다. 추가 구현에서, 이진 문자열은 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지를 생성한 컨텐츠 서버의 프로세스 식별자를 포함한다.In some implementations, the binary string includes the address of the content server that generated the image including the at least one embedded watermark. In a further implementation, the binary string includes the process identifier of the content server that generated the image including the at least one embedded watermark.

다른 양태에서, 본 개시는 개선된 워터 마킹을 위한 방법에 관한 것이다. 방법은 클라이언트 디바이스로부터 디바이스의 디코더에 의해, 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지의 캡처를 수신하는 단계를 포함한다. 방법은 또한 디코더에 의해, 캡처의 타임 스탬프를 결정하는 단계를 포함한다. 방법은 또한 디코더에 의해, 임베딘된 워터 마크로부터 이진 문자열을 디코딩하는 단계를 포함한다. 방법은 또한 캡처의 타임 스탬프의 일부를 사용하여, 디코더에 의해, 이미지의 타임 스탬프를 포함하는 이진 문자열로부터 식별자를 디코딩하는 단계를 포함한다. 방법은 또한 디코더에 의해, 디코딩된 식별자를 출력하는 단계를 포함한다.In another aspect, the present disclosure relates to a method for improved watermarking. The method includes receiving, by a decoder of the device, a capture of an image comprising at least one embedded watermark from a client device. The method also includes determining, by the decoder, a timestamp of the capture. The method also includes decoding, by the decoder, the binary string from the embedded watermark. The method also includes decoding, by the decoder, the identifier from the binary string comprising the timestamp of the image, using the portion of the timestamp of the capture. The method also includes outputting, by the decoder, the decoded identifier.

일부 구현에서, 캡처의 타임 스탬프는 캡처의 메타 데이터에서 식별된다. 일부 구현에서, 방법은 디코더에 의해, 캡처를 포함하는 패킷의 헤더로부터 캡처의 타임 스탬프를 추출하는 단계를 포함한다. 일부 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 서브 세트를 포함한다. 추가 구현에서, 방법은 캡처의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 단계를 포함한다. 다른 추가 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 큰 다수의 오류 정정 비트를 포함한다. In some implementations, the timestamp of the capture is identified in the metadata of the capture. In some implementations, the method includes extracting, by a decoder, a timestamp of the capture from a header of a packet containing the capture. In some implementations, the binary string of the embedded watermark includes a subset of the timestamp of the image. In a further implementation, the method includes associating the portion of the timestamp of the capture with the subset of the timestamp of the image. In another further implementation, the binary string of the embedded watermark includes a number of error correction bits greater than the difference between the length of the timestamp of the image and the length of the subset of timestamps of the image.

일부 구현에서, 방법은 캡처의 타임 스탬프의 일부를 사전 결정된 오프셋과 결합하는 단계를 포함한다. 추가 구현에서, 방법은 식별자를 성공적으로 디코딩할 때까지 캡처의 타임 스탬프의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합하는 단계를 포함한다.In some implementations, the method includes combining a portion of a timestamp of the capture with a predetermined offset. In a further implementation, the method includes iteratively combining a portion of a timestamp of the capture with a multiple of a predetermined offset until the identifier is successfully decoded.

일부 구현에서, 이진 문자열은 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지를 생성한 컨텐츠 서버의 주소를 포함한다. 추가 구현에서, 이진 문자열은 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지를 생성한 컨텐츠 서버의 프로세스의 식별자를 포함한다.In some implementations, the binary string includes the address of the content server that generated the image including the at least one embedded watermark. In a further implementation, the binary string includes the identifier of the process of the content server that generated the image including the at least one embedded watermark.

또 다른 양태에서, 본 개시는 워터 마킹 시스템에 관한 것이다. 시스템은 이미지 및 이미지와 관련된 메타 데이터를 수신하고; 이미지와 관련된 메타 데이터의 서브 세트로부터 이진 문자열을 생성하고; 이진 문자열로부터 워터 마크를 인코딩하고, 이미지에 워터 마크를 임베딩하도록 구성된 디바이스의 인코더를 포함한다. 디바이스 및 제2 디바이스의 디코더는 임베딩된 워터 마크에 인코딩된 이미지와 관련된 메타 데이터의 서브 세트 및 제3 디바이스에서 이미지의 디스플레이 캡처와 관련된 추가 메타 데이터로부터 이미지와 관련된 메타 데이터를 복구한다.In another aspect, the present disclosure relates to a watermarking system. the system receives the image and metadata associated with the image; generate a binary string from a subset of metadata associated with the image; and an encoder of the device configured to encode the watermark from the binary string and embed the watermark in the image. The device and the decoder of the second device recover the metadata associated with the image from a subset of the metadata associated with the image encoded in the embedded watermark and additional metadata associated with display capture of the image at the third device.

일부 구현에서, 이미지와 관련된 메타 데이터는 이미지의 타임 스탬프를 포함하고, 추가 메타 데이터는 제3 디바이스에서 이미지의 디스플레이 캡처의 타임 스탬프를 포함한다. 일부 구현에서, 디바이스의 인코더는 이미지와 관련된 메타 데이터의 사전 결정된 수의 최하위 비트로부터 이진 문자열을 생성하도록 구성된다. In some implementations, the metadata associated with the image includes a timestamp of the image, and the additional metadata includes a timestamp of a display capture of the image at the third device. In some implementations, the encoder of the device is configured to generate a binary string from a predetermined number of least significant bits of metadata associated with the image.

또 다른 양태에서, 본 개시는 워터 마킹 방법에 관한 것이다. 방법은 디바이스의 인코더에 의해, 이미지 및 이미지와 관련된 메타 데이터를 수신하는 단계를 포함한다. 방법은 또한 인코더에 의해, 이미지와 관련된 메타 데이터의 서브 세트로부터 이진 문자열을 생성하는 단계를 포함한다. 방법은 또한 인코더에 의해, 이진 문자열로부터 워터 마크를 인코딩하는 단계를 포함한다. 방법은 또한 인코더에 의해, 이미지에 워터 마크를 임베딩하는 단계를 포함한다. 디바이스 또는 제2 디바이스의 디코더는 임베딩된 워터 마크에 인코딩된 이미지와 관련된 메타 데이터의 서브 세트 및 제3 디바이스에서 이미지의 디스플레이 캡처와 관련된 추가 메타 데이터로부터 이미지와 관련된 메타 데이터를 복구한다.In another aspect, the present disclosure relates to a watermarking method. The method includes receiving, by an encoder of a device, an image and metadata associated with the image. The method also includes generating, by the encoder, a binary string from a subset of metadata associated with the image. The method also includes encoding, by the encoder, the watermark from the binary string. The method also includes embedding, by the encoder, a watermark in the image. The device or the decoder of the second device recovers the metadata associated with the image from a subset of the metadata associated with the image encoded in the embedded watermark and additional metadata associated with display capture of the image at the third device.

일부 구현에서, 이미지와 관련된 메타 데이터는 이미지의 타임 스탬프를 포함하고, 추가 메타 데이터는 제3 디바이스에서 이미지의 디스플레이 캡처의 타임 스탬프를 포함한다. 일부 구현에서, 방법은 이미지와 관련된 메타 데이터의 사전 결정된 수의 최하위 비트로부터 이진 문자열 생성하는 단계를 포함한다. In some implementations, the metadata associated with the image includes a timestamp of the image, and the additional metadata includes a timestamp of a display capture of the image at the third device. In some implementations, the method includes generating a binary string from a predetermined number of least significant bits of metadata associated with the image.

본 개시는 또한 컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스가 본 명세서에 개시된 방법 중 임의의 것을 수행하게 하는 명령을 포함하는 컴퓨터 프로그램을 제공한다. 본 개시는 또한 컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스로 하여금 본 명세서에 개시된 방법 중 임의의 것을 수행하게 하는 명령을 포함하는 컴퓨터 판독 가능 매체를 제공한다.The disclosure also provides a computer program comprising instructions that, when executed by the computing device, cause the computing device to perform any of the methods disclosed herein. The disclosure also provides a computer-readable medium comprising instructions that, when executed by the computing device, cause the computing device to perform any of the methods disclosed herein.

한 양태의 선택적 특징은 임의의 다른 양태와 결합될 수 있다.Optional features of one aspect may be combined with any other aspect.

하나 이상의 구현의 세부 사항은 첨부된 도면 및 아래의 설명에서 설명된다. 본 개시의 다른 특징, 양태 및 이점은 다음과 같은 설명, 도면 및 청구 범위로부터 명백해질 것이다 :
도 1a는 이미지 워터 마킹의 예시적인 구현의 예시이다.
도 1b는 일 구현에 따른 이미지 워터 마킹을 위한 데이터 포맷의 예시이다.
도 1c는 다른 구현에 따른 이미지 워터 마킹을 위한 데이터 포맷의 예시이다. 과
도 2a는 일 구현에 따른 이미지 워터 마킹을 위한 시스템의 블록도이다.
도 2b는 다른 구현에 따른 이미지 워터 마킹을 위한 시스템의 블록도이다.
도 3은 일부 구현에 따른 이미지 워터 마킹을 위한 시스템의 블록도이다.
도 4는 일부 구현에 따른 이미지 워터 마킹을 위한 방법의 흐름도이다.
다양한 도면에서 유사한 참조 번호 및 지정은 유사한 요소를 나타낸다.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects and advantages of the present disclosure will become apparent from the following description, drawings and claims:
1A is an illustration of an example implementation of image watermarking.
1B is an example of a data format for image watermarking according to an implementation.
1C is an example of a data format for image watermarking according to another implementation. and
2A is a block diagram of a system for image watermarking according to one implementation.
2B is a block diagram of a system for image watermarking according to another implementation.
3 is a block diagram of a system for image watermarking in accordance with some implementations.
4 is a flowchart of a method for image watermarking in accordance with some implementations.
Like reference numbers and designations in the various drawings indicate like elements.

이미지 워터 마킹은 시각적으로 지각할 수 없는 데이터 또는 메시지를 이미지에 임베딩(삽입)하는 기술이며, 오리지널 이미지가 워터 마크 추출에 필요한지 여부에 따라 비-블라인드 또는 블라인드로 각각 분류될 수 있다. 블라인드 워터 마킹은 임베딩된 데이터가 미리 임베딩된 오리지널 이미지에 액세스하지 않고도 복구될 수 있다는 점에서 특히 유용하다.Image watermarking is a technique for embedding (inserting) visually imperceptible data or messages into an image, and may be classified as non-blind or blind, respectively, depending on whether the original image is required for watermark extraction. Blind watermarking is particularly useful in that embedded data can be recovered without accessing the original previously embedded image.

예를 들어, 도 1a를 간략히 참조하면, 이미지(100)에 대한 이미지 워터 마킹의 예시적인 구현이 도시되어 있다. 작은 워터 마크 코드(102)는 크기의 픽셀 어레이를 포함할 수 있으며, 뷰어에게 보이지 않도록 이미지(100)내에 배치될 수 있다. 도시된 바와 같이, 워터 마크 코드(102)는 자르기, 압축 또는 다른 손상으로 인한 지역적 아티팩트, 또는 다른 이러한 왜곡에 대한 저항을 제공하기 위해 이미지 전체에 걸쳐 이중화될 수 있다. 명확성을 위해 몇 픽셀로만 도시되었지만, 많은 구현에서, 워터 마크 코드는 64 픽셀, 128 픽셀 또는 임의의 다른 양을 갖는 영역을 포함할 수 있다. 인코딩 값을 정의하기 위한 픽셀 조정은 단순한 흑백 픽셀과는 달리 상대적으로 눈에 띄지 않을 수 있다. 예를 들어, 많은 구현에서, 인코딩된 영역을 구성하는 픽셀은 주변 픽셀과 매칭하거나 유사하지만 조정된 알파(투명도) 값을 가진 색상을 가질 수 있다. 예를 들어, 인코딩은 알파값이 0인 픽셀을 알파값이 10, 50, 100, 255 또는 기타 이러한 값으로 변경할 수 있다. 일부 구현에서, 코드는 주변 알파값과 크게 다른 알파값을 갖는 픽셀을 식별함으로써 검출될 수 있다. 일부 구현에서, 차동 인코딩은 오버레이내의 픽셀의 알파값을 변경하여 상이한 값을 인코딩하는 것을 통해 각 비트를 오버레이 인코딩하여 적용될 수 있다. For example, referring briefly to FIG. 1A , an example implementation of image watermarking for image 100 is shown. The small watermark code 102 may include an array of sized pixels and may be placed within the image 100 so that it is not visible to the viewer. As shown, the watermark code 102 may be duplicated throughout the image to provide resistance to local artifacts, or other such distortions due to cropping, compression or other damage. Although shown with only a few pixels for clarity, in many implementations the watermark code may include an area having 64 pixels, 128 pixels, or any other amount. Pixel adjustments to define encoding values can be relatively inconspicuous, unlike simple black and white pixels. For example, in many implementations, the pixels that make up the encoded region may have a color that matches or is similar to surrounding pixels but has an adjusted alpha (transparency) value. For example, the encoding may change a pixel with an alpha value of 0 to an alpha value of 10, 50, 100, 255, or some other such value. In some implementations, the code may be detected by identifying pixels that have an alpha value that differs significantly from the surrounding alpha value. In some implementations, differential encoding may be applied by overlay encoding each bit through encoding a different value by changing the alpha value of the pixels within the overlay.

임의의 종류의 데이터가 워터 마크(102)내에 인코딩될 수 있다. 도 1b를 간략하게 참조하면, 일 구현에 따른 이미지 워터 마킹을 위한 데이터 포맷(150)이 도시되어 있다. 도시된 데이터 포맷은 64 비트 타임 스탬프(152)(예를 들어, 에포크(epoch) 시간에 기초함), IP 주소(154) 및 프로세스 식별자(156)를 갖는 128 비트를 포함한다. 데이터 포맷(150)의 데이터는 본 명세서에서 쿼리 ID로 지칭될 수 있다. 많은 구현은 또한 워터 마크의 디코딩을 개선하기 위해 오류 정정 비트(미도시)를 포함한다. 예를 들어, 이 코드는 마크 내에 포함된 리드-솔로몬 오류 정정 코드를 사용하여 QR 코드로 인코딩될 수 있다.Any kind of data may be encoded in the watermark 102 . Referring briefly to FIG. 1B , a data format 150 for image watermarking according to one implementation is shown. The data format shown includes 128 bits with a 64 bit timestamp 152 (eg, based on epoch time), an IP address 154 and a process identifier 156 . Data in data format 150 may be referred to herein as a query ID. Many implementations also include error correction bits (not shown) to improve decoding of the watermark. For example, this code may be encoded into a QR code using a Reed-Solomon error correction code contained within the mark.

하나의 이러한 구현에서, 데이터는 컨텐츠 서버의 IP 주소 및 이미지를 생성 한 프로세스의 프로세스 식별자와 함께 이미지를 클라이언트 디바이스에 제공하기 전에 컨텐츠 서버에 의해 이미지에 인코딩될 수 있다. 이후, 이미지가 클라이언트 디바이스에 의해 수신되어 렌더링될 때, 클라이언트 디바이스의 모니터링 프로세스는 이미지의 스크린 샷을 캡처하여 그 스크린 샷을 컨텐츠 서버 또는 모니터링 서버로 제공할 수 있다. 예를 들어, 클라이언트 디바이스상의 모니터링 프로세스는 이미지 자체에 액세스할 수 없지만(예를 들어, 이미지는 모니터링 프로세스가 액세스할 수 없는 클라이언트 디바이스의 메모리 위치에 저장될 수 있음), (예를 들어, 프레임 버퍼로부터 이미지 데이터를 판독하거나 카메라로 이미지를 캡처함으로써) 이미지의 스크린 샷을 캡처할 수 있다. 서버는 워터 마크를 디코딩하여 오리지널 생성 프로세스 및 서버는 물론 이미지가 생성 또는 마킹된 시간을 식별하고, 스크린 샷 이미지를 오리지널 이미지와 비교할 수 있다. 이를 통해 시스템은 이미지의 다른 측면을 식별할 뿐만 아니라 이미지에 대한 렌더링 또는 인코딩 프로세스로 인해 발생하는 왜곡 또는 이미지 손상을 자동으로 식별할 수 있다. 컨텐츠 서버와 모니터링 서버가 서로 다른 구현에서, 이것은 특히 모니터링 서버가 클라이언트 디바이스로 이미지를 제공한 복수의 컨텐츠 서버 중 특정 컨텐츠 서버를 식별하게 할 수 있다. 이는 로깅(기록), 추적 및 분석에 유용할 수 있으며, 클라이언트 디바이스((모니터링 서버에 액세스 권한이 없을 수 있음)로부터 HTTP 로그 또는 유사 로그를 검색하는 것보다 훨씬 쉬울 수 있다.In one such implementation, data may be encoded into the image by the content server prior to providing the image to the client device along with the content server's IP address and the process identifier of the process that created the image. Then, when the image is received and rendered by the client device, the monitoring process of the client device may capture a screen shot of the image and provide the screen shot to the content server or the monitoring server. For example, a monitoring process on the client device may not have access to the image itself (eg, the image may be stored in a memory location on the client device that the monitoring process does not have access to), but (eg, a frame buffer You can take a screenshot of an image (by reading the image data from it or by capturing the image with a camera). The server can decode the watermark to identify the original creation process and server as well as the time the image was created or marked, and compare the screenshot image with the original image. This allows the system to not only identify different aspects of the image, but also automatically identify distortions or image damage caused by the rendering or encoding process on the image. In implementations where the content server and the monitoring server are different, this may in particular allow the monitoring server to identify a particular content server among a plurality of content servers that provided images to the client device. This can be useful for logging (history), tracking and analysis, and can be much easier than retrieving HTTP logs or similar logs from a client device (which may not have access to the monitoring server).

워터 마킹 효율은 때때로 "D"라고 지칭되는 지각성(예를 들어, 워터 마킹 메시지를 임베딩함으로써 도입된 왜곡이 뷰어에 의해 감지될 수 있는지 여부), 때때로 "E"로 지칭되는 견고성(예를 들어, 임베딩된 메시지를 디코딩하는 디코더의 성공률) 및 때때로 "R"로 지칭되는 용량(예를 들어, 데이터가 이미지에 임베딩될 수 있는 데이터의 양 또는 속도)의 관점에서 설명될 수 있다. 많은 구현에서, 낮은 지각성, 높은 견고성 및 높은 용량을 갖는 것이 바람직할 수 있다. 그러나, 많은 구현에서, 이들 중 하나를 개선하면 다른 구현에서 급격한 성능 저하가 발생할 수 있다. 예를 들어, 견고성을 유지하면서 메시지에 더 많은 데이터를 추가하려면 워터 마크의 크기를 확대하여 더 잘 지각될 수 있어야 한다. 유사하게, 마크 크기는 오류 정정 비트를 제거하여 데이터를 추가하는 동안 유지될 수 있지만, 이것은 당연히 마크를 디코딩하기 더 어렵게 만들고 손상되기 쉽게 만든다.Watermarking efficiency depends on perceptuality sometimes referred to as “D” (eg, whether distortion introduced by embedding a watermarking message can be perceived by the viewer), and robustness sometimes referred to as “E” (e.g. , the success rate of a decoder in decoding an embedded message) and capacity sometimes referred to as “R” (eg, the amount or rate of data at which data can be embedded in an image). In many implementations, it may be desirable to have low perceptibility, high robustness, and high capacity. However, in many implementations, improving one of these may result in a sharp performance penalty in the other implementation. For example, if you want to add more data to a message while maintaining robustness, you need to enlarge the size of the watermark so that it can be more perceptible. Similarly, the mark size can be maintained while adding data by removing the error correction bits, but this of course makes the mark more difficult to decode and more fragile.

도 2a는 일 구현에 따른 이미지 워터 마킹을 위한 시스템(200)의 블록도이다. 시스템은 동일하거나 상이한 컴퓨팅 디바이스(예를 들어, 컨텐츠 서버 및 모니터링 서버)에 있을 수 있는 인코더(202)와 디코더(204)를 포함할 수 있다. 이미지("S")(206)는 메시지("X")(208)로 인코더(202)에 의해 인코딩되어 S+X를 포함하는 워터 마크 이미지("S"')(210)를 생성할 수 있다. 인코딩되거나 워터 마킹된 이미지(S')는 통신 채널(212)을 통해 예를 들어 클라이언트 디바이스로 전송될 수 있다. (예를 들어, 위에서 논의된 바와 같이 스크린 샷으로부터의) 대응하는 워터 마킹된 이미지가 디코더(204)로 제공될 수 있다. 예를 들어, 클라이언트 디바이스는 워터 마킹된 이미지를 통신 채널(212)을 통해 디코더(204)로 전송할 수 있다. 따라서 통신 채널은 인코더와 디코더 사이의 네트워크 및 디바이스의 임의의 조합을 포함할 수 있으며, 이는 잠재적으로 임의의 종류의 추가 왜곡을 도입할 수 있다. 예를 들어, 의도적 또는 비의도적 공격이나 손상의 결과로 채널이 손실될 수 있다. 비의도적 손상의 예로는 이미지 회전, 크기 조정(스케일링) 및 포멧 변환이 있다. 의도적 손상의 예로는 노이즈 주입(예를 들어, 정보 추가), 워터 마킹 코드를 제거하기 위한 시도(예를 들어, 정보 빼기)가 있다.2A is a block diagram of a system 200 for image watermarking according to one implementation. The system may include an encoder 202 and a decoder 204 that may be on the same or different computing devices (eg, a content server and a monitoring server). The image ("S") 206 may be encoded by the encoder 202 as a message ("X") 208 to produce a watermark image ("S"') 210 comprising S+X. have. The encoded or watermarked image S′ may be transmitted via communication channel 212 to, for example, a client device. A corresponding watermarked image (eg, from a screen shot as discussed above) may be provided to the decoder 204 . For example, the client device may send the watermarked image to the decoder 204 via the communication channel 212 . Thus, a communication channel can include any combination of networks and devices between encoders and decoders, which can potentially introduce additional distortions of any kind. For example, channels may be lost as a result of intentional or unintentional attack or damage. Examples of unintentional corruption include image rotation, resizing (scaling) and format conversion. Examples of intentional damage include noise injection (eg, adding information), and attempts to remove watermarking codes (eg, subtracting information).

디코더(204)는 워터 마크 이미지(S')로부터 워터 마크를 검출하고 디코딩하여 오리지널 메시지(X)(208')을 복구하고, 필요에 따라 오류 정정을 적용할 수 있다(그리고 잠재적으로 이미지에서 다수의 워터 마크를 캡처하고 각각의 디코딩된 메시지를 비교하여 단일 워터 마크에서 오류 또는 왜곡을 배제함).The decoder 204 may detect and decode the watermark from the watermark image (S') to recover the original message (X) 208', and apply error correction as needed (and potentially multiple in the image). ) and compares each decoded message to rule out errors or distortions in a single watermark).

따라서, 인코더는 임의의 오류 정정 코드와 함께 위에서 논의된 타임 스탬프/주소/프로세스 ID 문자열과 같은 메시지를 QR 코드와 같은 마크로 인코딩하고, 알파 채널 오버레이의 블렌딩(blending)을 통해 마크의 적어도 하나의 사본을 이미지에 인코딩할 수 있으며, 디코더는 오버레이 패턴 및 QR 코드를 식별하는 불일치 (inconsistencies)를 검출함으로써 메시지를 디코딩하고, 오리지널 문자열을 디코딩하고, 그리고 오리지널 타임 스탬프/주소/프로세스 ID를 식별할 수 있다. Thus, the encoder encodes a message such as the timestamp/address/process ID string discussed above along with any error correction code into a mark such as a QR code, and at least one copy of the mark through blending of an alpha channel overlay. can be encoded into the image, the decoder can decode the message by detecting inconsistencies that identify overlay patterns and QR codes, decode the original string, and identify the original timestamp/address/process ID. .

이러한 시스템은 비교적 성공적이지만 오류율이 높다. 임베딩된 마크를 인코딩된 이미지의 스크린 샷으로부터 디코딩하는 실험에서, 디코딩 성공률은 44.03%였다.Although these systems are relatively successful, they have a high error rate. In the experiment of decoding the embedded mark from the screenshot of the encoded image, the decoding success rate was 44.03%.

위에서 언급한 바와 같이, 고정된 메시지 속도(예를 들어, 128 비트)가 주어지면, 디코딩 성공률에 영향을 미치는 요인은 인코더에 의해 이미지에 도입된 왜곡(De) 및 상기 캡처된 스크린 샷과 인코더 출력(Dc)에서의 워터 마킹된 이미지 사이의 왜곡이다. 일반적으로 디코딩 성공률에서 측정된 이미지 워터 마킹의 견고성은 De에 의해 제어되는데, 동일한 Dc에 대해 De가 증가하면 디코딩 성공률이 더 높아질 수 있다. 그러나, 대부분의 경우, 워터 마크는 워터 마킹된 이미지에서 시각적으로 지각될 수 없어야 한다. 이러한 요구 사항은 De에 대한 상한(upper bound)을 부과한다. De에 대한 이 제약은 본질적으로 임의의 주어진 채널에 대한 디코딩 성공률의 상한을 의미한다. 채널에 의해 도입된 Dc가 큰 일부 극단적인 경우, 디코딩 성공률이 거의 0으로 떨어질 수 있고 따라서 이러한 워터 마킹 구현의 적용 가능성을 제한할 수 있다. As mentioned above, given a fixed message rate (eg 128 bits), the factors affecting the decoding success rate are the distortion introduced into the image by the encoder (D e ) and the captured screenshot and the encoder. Distortion between watermarked images at the output D c . In general, the robustness of an image watermarked measured in the decoding success rate is controlled by D e, D e when it increases could lead to higher decoding success rate for the same D c. However, in most cases the watermark should not be visually perceptible in the watermarked image. This requirement imposes an upper limit (upper bound) for the D e. This constraint on D e essentially implies an upper bound on the decoding success rate for any given channel. In some extreme cases where the D c introduced by the channel is large, the decoding success rate may drop to almost zero, thus limiting the applicability of this watermarking implementation.

(D0, E0, R0)은 위에서 논의된 워터 마킹 방법의 구현의 왜곡, 디코딩 성공률 및 메시지 속도를 각각 나타낸다. 일반적인 구현에서 3가지 수량 중 하나의 개선은 필연적으로 다른 수량 중 적어도 하나의 성능 손실을 초래한다. 예를 들어, E0를 개선하기 위해서는, R0를 유지하면서 D0를 희생하거나 D0를 유지하면서 R0를 줄여야 한다. 그러나, 많은 애플리케이션에서, D0와 R0 모두 현재 엄격한 제약 조건이 있는데, D0는 사용자 경험에 부정적인 영향을 주지 않기 위해 반드시 상한으로 지정되고, R0는 워터 마킹 메시지가 추적 목적에 유용하도록 반드시 하한으로 지정되어야 한다. 이러한 맥락에서, 현재 워터 마킹의 구현은 E0를 개선할 여지가 거의 없다.(D 0 , E 0 , R 0 ) represent the distortion, decoding success rate and message rate of the implementation of the watermarking method discussed above, respectively. In a typical implementation, an improvement in one of the three quantities necessarily results in a loss of performance in at least one of the other quantities. For example, in order to improve the E 0, to reduce the R 0 while keeping the expense of the R 0 D 0 D 0 or maintain. However, in many applications, both D 0 and R 0 currently have strict constraints, where D 0 must be set as an upper bound so as not to negatively affect the user experience, and R 0 must be set as an upper bound so that the watermarking message is useful for tracking purposes. It should be specified as the lower limit. In this context, the current implementation of watermarking has little room to improve E 0 .

본 명세서에서 논의된 시스템 및 방법은 지각성을 저하시키지 않으면서 견고성과 용량을 개선하기 위해 개선된 이미지 워터 마킹을 제공한다. 특히, 본 명세서에서 논의된 시스템 및 방법은 동일한 왜곡 레벨 및 메시지 속도에서 더 높은 디코딩 성공률을 가능하게 하거나 동일한 왜곡 레벨 및 디코딩 성공률에서 더 높은 메시지 속도를 가능하게 한다. 이러한 시스템의 구현은 인코더가 아닌 디코더에서만 사용할 수 있는 추가 정보의 부가 체인을 활용하여 점근 무손실 데이터 압축을 달성하여 동일한 메시지가 더 적은 비트로 전송할 수 있다.The systems and methods discussed herein provide improved image watermarking to improve robustness and capacity without compromising perceptibility. In particular, the systems and methods discussed herein enable higher decoding success rates at the same distortion level and message rate or higher message rates at the same distortion level and decoding success rate. Implementations of such a system achieve asymptotic lossless data compression by utilizing an additional chain of additional information available only to the decoder, not the encoder, so that the same message can be transmitted with fewer bits.

왜곡 제약은 애플리케이션에 의해 주어지기 때문에, 본 명세서에서 논의되는 시스템은 디코딩 성공률과 메시지 속도 사이의 절충(트레이드 오프)에 초점을 맞춘다. 특히, 시스템은 워터 마킹 메시지의 유용성을 손상시키지 않고 위에서 언급한 메시지 속도의 하한을 회피한다. 결과적으로, 이를 통해 이전 구현에서는 불가능했던 견고성과 용량간의 적절한 절충을 찾는데 더 큰 유연성을 제공한다. 특히, 디코더에서만 이용 가능한 부가 정보가 점근 무손실 압축을 달성하는데 사용될 수 있다. Because the distortion constraint is imposed by the application, the systems discussed herein focus on the trade-off between decoding success rate and message rate. In particular, the system avoids the lower limit of the message rate mentioned above without compromising the usefulness of the watermarking message. As a result, this provides greater flexibility in finding the right trade-off between robustness and capacity that was not possible in previous implementations. In particular, side information available only at the decoder can be used to achieve asymptotic lossless compression.

도 2b는 하나의 이러한 구현에 따른 이미지 워터 마킹을 위한 시스템(200')의 블록도이다. 도 2a와 관련하여 논의된 바와 같이, 인코더(202)는 통신 채널 (212)을 통해 디코더(204)에 제공될 수 있는 워터 마킹된 이미지(210)를 생성하기 위해 메시지(208)로 이미지(206)를 인코딩한다. 그러나, 오리지널 메시지(208')를 복구하기 위해, 디코더는 인코더에 사용할 수 없는 추가적인 부가 정보("Y")(214)를 사용한다. 이것은 인코더와 디코더 사이의 별도의 통신에 대한 요구를 제거하며, 컨텐츠 서버와 모니터링 서버가 동일한 디바이스가 아닌(동일한 엔티티에 의해 제어되지 않을 수 있는) 구현에서 특히 유리할 수 있다.2B is a block diagram of a system 200' for image watermarking according to one such implementation. As discussed with respect to FIG. 2A , the encoder 202 sends the image 206 in the message 208 to generate a watermarked image 210 that can be provided to the decoder 204 via the communication channel 212 . ) is encoded. However, to recover the original message 208', the decoder uses additional side information ("Y") 214 that is not available to the encoder. This eliminates the need for separate communication between the encoder and decoder, and can be particularly advantageous in implementations where the content server and monitoring server are not on the same device (which may not be controlled by the same entity).

도 2a 및 2b 사이에서, 주요 차이점은 도 2b의 디코더에서 부가 정보(Y)의 도입이다. 고전적인 소스 코딩 정리로부터 도 2a에 있는 디코더에서 메시지(X)의 무손실 복구에 필요한 최소 속도는 X의 한계(marginal) 엔트로피 H(X)에 의해 주어진다. 이에 상응하여, SlepianWolf 코딩 정리로부터 도 2b에 있는 디코더에서 메시지(X)의 무손실 복구에 필요한 최소 속도는 Y가 주어진 X의 조건부 엔트로피 H(X|Y)에 의해 주어진다. 임의의(X, Y)에 대해 H(X|Y)≤H(X)이므로, 부가 정보(Y)를 사용함으로써, 도 2a에서보다 도 2b에서 동일한 메시지(X)를 전송하기 위해 더 낮은 메시지 속도를 사용하는 것이 가능하다. X와 Y 사이의 상관 관계가 강할수록 메시지 속도가 낮아질 수 있다. 2A and 2B, the main difference is the introduction of side information Y in the decoder of FIG. 2B. From the classical source coding theorem, the minimum speed required for lossless recovery of message X in the decoder in Fig. 2a is given by the marginal entropy H(X) of X. Correspondingly, from the SlepianWolf coding theorem, the minimum speed required for lossless recovery of message X in the decoder in Fig. 2b is given by the conditional entropy H(X|Y) of X given Y. Since H(X|Y)≤H(X) for any (X,Y), by using side information (Y), a lower message to send the same message (X) in FIG. 2B than in FIG. 2A It is possible to use speed. The stronger the correlation between X and Y, the lower the message rate can be.

향상된 견고성improved robustness

제1 구현에서, 시스템은 디코더에서 부가 정보(Y)를 활용하여 견고성을 개선할 수 있다. 이러한 일부 구현에서, 도 2b의 인코더는 다음과 같이 이미지에 워터 마킹 메시지를 임베딩한다 :In a first implementation, the system may utilize side information Y in the decoder to improve robustness. In some such implementations, the encoder of Figure 2b embeds a watermarking message in the image as follows:

1. 워터 마킹 메시지(X)를 K 비트 이진 문자열로 변환하는데, 여기서 K는 H(X|Y)에 의해 결정된다. 1. Convert the watermarking message (X) to a K-bit binary string, where K is determined by H(X|Y).

2. K 비트 이진 문자열을 QR 코드워드로 변환한다.2. Convert the K-bit binary string into a QR codeword.

3. QR 코드워드의 적어도 하나의 사본을 포함하는 워터 마킹 이미지를 생성한다.3. Create a watermarked image comprising at least one copy of the QR codeword.

4. 오리지널 이미지 위에 워터 마킹 이미지를 오버레이함으로써 워터 마킹 이미지와 오리지널 이미지를 블렌딩(혼합)한다. 4. Blend (mix) the watermarking image and the original image by overlaying the watermarking image on the original image.

이에 상응하여, 도 2b의 디코더는 다음과 같이 워터 마킹된 이미지의 스크린 샷으로부터 워터 마킹 메시지(X)를 디코딩한다.Correspondingly, the decoder of Fig. 2b decodes the watermarking message X from the screen shot of the watermarked image as follows.

5. 스크린 샷으로부터 QR 코드워드를 검출 및 추출한다.5. Detect and extract QR codewords from screenshots.

6. 추출된 QR 코드워드에서 K 비트 이진 문자열을 디코딩한다.6. Decode the K-bit binary string from the extracted QR codeword.

7. K 비트 이진 문자열 및 부가 정보(Y)에서 워터 마킹 메시지(X)를 디코딩한다.7. Decode the watermarking message (X) from the K-bit binary string and side information (Y).

많은 구현에서, 위의 단계 중 하나 이상(예를 들어, 단계 6-7)은 더 나은 성능을 위해 단일 단계로 결합될 수 있다는 점에 유의한다. It is noted that in many implementations, one or more of the above steps (eg, steps 6-7) may be combined into a single step for better performance.

QR 코드워드는 2차원(2D) 레이아웃에서 검출용 패턴 및 오류 정정 코드를 포함한다는 점에 유의한다. 일부 실시예에서, 워터 마킹 이미지를 생성할 때 더 나은 성능/유연성을 위해 QR 코드워드 대신에 1차원(1D) 검출용 패턴과 함께 1차원 오류 정정 코드 워드가 사용될 수 있다. 1차원 오류 정정 코드의 예로는 리드-솔로몬 코드, 터보 코드, 저밀도 패리티 검사(LDPC) 코드 및 기타 일반 선형 블록 코드가 있다.Note that a QR codeword contains a pattern for detection and an error correction code in a two-dimensional (2D) layout. In some embodiments, a one-dimensional error correction code word with a pattern for one-dimensional (1D) detection may be used instead of a QR codeword for better performance/flexibility when generating a watermarking image. Examples of one-dimensional error correction codes include Reed-Solomon codes, turbo codes, low density parity check (LDPC) codes, and other general linear block codes.

위의 인코딩 프로세스의 단계 1을 고려하여, K를 결정하기 위해서는, Y(즉, 실제 부가 정보 시퀀스)의 실현에 대한 지식은 필요하지 않지만 사전에 H(X|Y)를 알아야 한다. H(X|Y)에 대한 사전 지식이 있는 부가 정보(Y)의 예는 스크린 샷 타임 스탬프, 디코딩 시간, 및 스크린 샷에 관한 임의의 관련 정보(예를 들어, IP 주소 및 지리적 위치, 게시자 정보 및 플랫폼 정보를 포함하는 사이트에 관한 정보)를 포함한다.Considering step 1 of the above encoding process, in order to determine K, knowledge of the realization of Y (that is, the actual side information sequence) is not required, but H(X|Y) must be known in advance. Examples of side information Y with prior knowledge of H(X|Y) include screenshot timestamp, decoding time, and any relevant information about the screenshot (e.g., IP address and geographic location, publisher information). and information about the site including platform information).

다음 설명은 스크린 샷 타임 스탬프를 예로 사용하지만, 다른 유사한 구현은 IP 주소 정보 및/또는 플랫폼 정보, 또는 이들의 조합을 활용할 수 있다.Although the following description uses the screenshot timestamp as an example, other similar implementations may utilize IP address information and/or platform information, or a combination thereof.

위의 도 1b에서 논의된 쿼리 ID는 타임 스탬프(64 비트), IP 주소(32 비트) 및 프로세스 id(32 비트)(임의의 추가 오류 코딩 비트를 포함하지 않음)로 구성된 128 비트 이진 문자열임을 상기한다. 일반적인 애플리케이션에서, 스크린 샷 타임 스탬프(Ts)는 Tq≤Ts가 되도록 쿼리 ID의 타임 스탬프(Tq)와 강하게 상관되며, 여기에는 Ts-Tq ≤Δ와 같은 높은 확률의 음이 아닌 정수(Δ)가 있다.Recall that the query ID discussed in Figure 1b above is a 128-bit binary string consisting of a timestamp (64 bits), an IP address (32 bits) and a process id (32 bits) (not including any additional error coding bits). do. In a typical application, screenshots timestamp (T s) is strongly correlated with the time stamp (T q) of the query ID to be T q ≤T s, where there is a high probability of negative, such as T s -T q ≤Δ There is an integer (Δ) that is not

이러한 관점에서, 타임 스탬프에 대해 이러한 구현에서 64 비트를 사용하는 대신, 도 2b의 인코더는 H(X|Y)의 추정치로서 K=(ceil(64-log2(Δ)) + 64) 비트를 사용할 수 있으며, 여기서 Y는 Ts이고, "ceil"은 인수를 가장 가까운 정수로 반올림하는 천정 함수이다. 결과적으로, 일 실시예에서, 비닝(binning) 기술이 Tq를 코딩하는데 사용되며, 여기서 각 빈은 적어도 Δ 마이크로 초 간격의 후보 타임 스탬프를 포함하며, 빈의 인덱스는 길이 ceil(64-log2(Δ))의 Tq 접미사이다. In this regard, instead of using 64 bits in this implementation for the timestamp, the encoder of Figure 2b would use K=(ceil(64-log2(Δ)) + 64) bits as an estimate of H(X|Y). where Y is T s and "ceil" is the zenith function rounding the argument to the nearest integer. Consequently, in one embodiment, a binning technique is used to code T q , where each bin contains a candidate timestamp at least Δ microseconds apart, and the index of the bin is of length ceil(64-log2( Δ)) is the T q suffix.

제안된 비닝 방식은 서로 가까운 2개의 타임 스탬프에 대해 최상위 비트가 동일하다는 사실을 기반으로 한다. 예를 들어, 에포크(epoch) 시간의 2019-01-01에 대한 타임 스탬프는 1546300800이고 그의 이진은 0b0101 0111 1110 0101 1010 0011 0101 1110 0110 0110 0000 0000 0000이다.The proposed binning scheme is based on the fact that the most significant bit is the same for two time stamps that are close to each other. For example, the timestamp for 2019-01-01 in epoch time is 1546300800 and its binary is 0b0101 0111 1110 0101 1010 0011 0101 1110 0110 0110 0000 0000 0000.

2018-01-01에 대한 타임 스탬프는 1514764800이고 그의 이진 버전은 0b0101 0110 0001 1010 1011 1010 1001 1101 0010 1000 0000 0000 0000이다. The timestamp for 2018-01-01 is 1514764800 and its binary version is 0b0101 0110 0001 1010 1011 1010 1001 1101 0010 1000 0000 0000 0000.

64 비트 표현에서 상위 18 비트는 동일하다. 두 타임 스탬프가 가까울수록 최상위 비트가 더 많이 동일하다. 전형적인 구현에서, 이미지 타임 스탬프와 스크린 샷 타임 스탬프는 일반적으로 하루, 한 주 또는 한 달과 같이 훨씬 더 가까울 수 있으므로 동일한 비트수가 더 많다. In a 64-bit representation, the upper 18 bits are identical. The closer the two timestamps are, the more the most significant bits are identical. In a typical implementation, image timestamps and screenshot timestamps can typically be much closer, such as a day, a week, or a month, so they have the same number of bits.

위에서 설명된 비닝 방식을 사용함으로써, 일부 구현에서, 시스템은 K = (ceil(64-log2(Δ)) + 64) 비트를 사용하여 Tq에서 최상위 비트의 약 log2(Δ)를 제거함으로써 쿼리 ID를 코딩할 수 있다. 도 1c는 하나의 이러한 구현에 따른 이미지 워터 마킹을 위한 데이터 포맷(150')의 예시이다. 도시된 바와 같이, IP 주소(154) 및 프로세스 ID(156)는 도 1b의 구현에서와 동일하지만, 타임 스탬프는 최하위 비트(158)의 일부로 감소되고, 추가 데이터(160)는 데이터의 크기를 감소시키지 않고 추가될 수 있다. By using the binning scheme described above, in some implementations, the system removes about log2(Δ) of the most significant bit from T q using K = (ceil(64-log2(Δ)) + 64) bits to query ID can be coded. 1C is an illustration of a data format 150' for image watermarking according to one such implementation. As shown, the IP address 154 and process ID 156 are the same as in the implementation of FIG. 1B , but the timestamp is reduced to some of the least significant bits 158 and the additional data 160 reduces the size of the data. It can be added without

디코더 측에서는, 수신된 스크린 샷으로부터 QR 코드를 추출 및 디코딩하여 K 비트의 이진 문자열을 획득한 후, 타임 스탬프 LSB(158)는 정확한 타임 스탬프(Tq)를 포함하는 빈의 인덱스를 식별할 수 있다. Tq를 복구하기 위해, 디코더는 Ts의 첫 번째 log2(Δ) 비트와 (64-log2(Δ))비트의 빈 인덱스를 결합하여 T'q를 얻을 수 있다. log2(Δ)가 정수가 아닌 경우 여기에는 log2(Δ)보다 큰 가장 작은 정수, 즉 ceil(log2(Δ)))가 대신 사용된다. 많은 구현에서 높은 확률로 Ts-Tq≤Δ이므로, 디코더에서 높은 확률로 T'q=Tq가 된다. Ts-Tq>Δ인 드문 경우, Ts-Tq≤mΔ(여기서 m이 양의 정수)인 경우 Tq는 다음의 크기 m 목록에 속해야 한다.On the decoder side, after extracting and decoding the QR code from the received screen shot to obtain a K-bit binary string, the timestamp LSB 158 can identify the index of the bin containing the correct timestamp T q . . To recover T q , the decoder can obtain T' q by combining the first log2(Δ) bits of T s and the empty index of (64-log2(Δ)) bits. If log2(Δ) is not an integer, the smallest integer greater than log2(Δ), ceil(log2(Δ))), is used instead. Since T s -T q ≤Δ with high probability in many implementations, T' q =T q with high probability in the decoder. In the rare case where T s -T q >Δ, if T s -T q ≤ mΔ, where m is a positive integer, then T q must belong to the following list of sizes m:

{T'q, T'q-Δ, T'q-2Δ,...,T'q-(m-1)Δ}. {T' q , T' q -Δ, T' q -2Δ,...,T' q -(m-1)Δ}.

(ceil(64-log2(Δ)) + 64)<128이기 때문에, 이들 구현은 디코더에서 쿼리 ID를 복구하는데 필요한 메시지 속도를 효과적으로 감소시킨다. 이러한 감소는 디코딩 성공률을 향상시키기 위해 두 가지 방법으로 활용될 수 있다.Since (ceil(64-log2(Δ)) + 64)<128, these implementations effectively reduce the message rate required to recover the query ID at the decoder. This reduction can be exploited in two ways to improve the decoding success rate.

1. 추가 패리티 또는 오류 정정 비트를 포함함으로써 선택된 QR 코드의 정정 레벨을 증가, 또는 1. increase the correction level of the selected QR code by including additional parity or error correction bits; or

2. 더 작은 매크로 QR 코드 사용(예를 들어, 매크로 17). 2. Use a smaller macro QR code (eg macro 17).

21×21 QR 코드는 다음 표에 나열된 바와같이 최대 152 비트의 정보를 저장할 수 있다. A 21×21 QR code can store up to 152 bits of information as listed in the following table.

Figure pct00001
Figure pct00001

비트 수를 128개에서 K=(ceil(64-log2(Δ) + 64)로 줄임으로써, 시스템은 디코딩 성공률을 개선하기 위해((예를 들어, 중간으로부터 사분위수(quartile)로 변경) 더 높은 오류 정정 코드(ECC) 레벨 또는 더 작은 QR 코드를 사용할 수 있다.By reducing the number of bits from 128 to K=(ceil(64-log2(Δ) + 64), the system uses higher (e.g., changing from middle to quartile) to improve the decoding success rate. Error Correcting Code (ECC) levels or smaller QR codes can be used.

향상된 메시지 속도Improved message rate

위에서 논의된 구현들은 워터 마킹의 견고성을 개선하기 위해 디코더에서 이용 가능한 부가 정보를 사용한다. 다른 관점에서, 시스템은 메시지 속도를 향상시키기 위해 부가 정보를 활용할 수도 있다.The implementations discussed above use side information available at the decoder to improve the robustness of the watermarking. In another aspect, the system may utilize side information to improve message rate.

이러한 구현에서, 도 2b의 인코더는 다음과 같이 워터 마킹 메시지를 이미지에 임베딩할 수 있다.In this implementation, the encoder of FIG. 2B may embed the watermarking message into the image as follows.

1. K 비트의 추가 정보와 함께 128 비트의 쿼리 ID를 128 비트의 이진 문자열로 변환한다. 여기서 K는 H(X)-H(X|Y)에 의해 결정된다. 1. Convert a 128-bit query ID to a 128-bit binary string with K bits of additional information. where K is determined by H(X)-H(X|Y).

2. 128 비트의 이진 문자열을 QR 코드워드로 변환한다.2. Converts a 128-bit binary string into a QR codeword.

3. QR 코드워드 적어도 하나의 사본을 포함하는 워터 마킹 이미지를 생성한다.3. Create a watermarked image comprising at least one copy of the QR codeword.

4. 소스 이미지 위에 워터 마킹 이미지를 오버레이하여 워터 마킹 이미지와 소스 이미지를 블렌딩한다. 4. Blend the watermarking image and the source image by overlaying the watermarking image on the source image.

이에 대응하여, 도 2b의 디코더는 다음과 같이 이미지의 스크린 샷으로부터 워터 마킹 메시지(X)를 디코딩할 수 있다.Correspondingly, the decoder of FIG. 2B may decode the watermarking message X from the screen shot of the image as follows.

4. 스크린 샷으로부터 QR 코드워드를 검출 및 추출한다.4. Detect and extract QR codewords from screenshots.

5. 추출된 QR 코드워드에서 128 비트의 이진 문자열을 디코딩한다.5. Decode a 128-bit binary string from the extracted QR codeword.

6. 128 비트의 이진 문자열과 부가 정보(Y)로부터 K 비트의 추가 정보와 함께 128 비트의 쿼리 ID를 디코딩한다.6. Decode 128-bit query ID with K-bit additional information from 128-bit binary string and side information (Y).

이러한 방법을 구현하지 않는 시스템과 비교할 때, 이러한 구현은 기본적으로 무료로, 즉 동일한 디코딩 성공률 및 동일한 왜곡 레벨로 추가적인 K 비트 메시징 기능을 제공한다. 이러한 추가적인 K 비트는 사용 편의성 측면에서 더 나은 추적 기능 및/또는 사용자 경험을 제공하는데 사용될 수 있다.Compared to a system that does not implement this method, this implementation provides additional K-bit messaging capabilities for essentially free, i.e. with the same decoding success rate and the same distortion level. These additional K bits can be used to provide better tracking and/or user experience in terms of ease of use.

위에서 언급한 바와 같이, 주로 워터 마크 데이터 내의 타임 스탬프에 대한 데이터 크기를 줄이는 측면에서 논의되었지만, 유사한 구현이 IP 주소 및/또는 프로세스 식별자에 적용된 비닝과 함께 사용될 수 있다. 예를 들어, 일반적인 프로세스 식별자의 길이가 모두 20 비트 미만이면, 프로세스 ID(156)(MSB)에서 12 비트가 제거될 수 있다. 마찬가지로, 워터 마크 데이터 내의 IP 주소의 일부(예를 들어, 맨 왼쪽 8 비트)는 디코더에서 사용할 수 있는 부가 정보(예를 들어, 스크린 샷 제출에 사용된 IP 주소, 디코더의 IP 주소 등)로부터 유도될 수 있다. 데이터 크기를 더 줄이기 위해, 이러한 필드의 조합이 이러한 방식으로 처리될 수 있다. As mentioned above, although discussed primarily in terms of reducing the data size for timestamps in watermark data, similar implementations may be used with binning applied to IP addresses and/or process identifiers. For example, if the length of a typical process identifier is all less than 20 bits, 12 bits may be removed from the process ID 156 (MSB). Similarly, part of the IP address in the watermark data (eg, the leftmost 8 bits) is derived from additional information available to the decoder (eg, the IP address used to submit the screenshot, the IP address of the decoder, etc.) can be To further reduce the data size, combinations of these fields can be processed in this way.

도 3은 일부 구현에 따른 이미지 워터 마킹을 위한 시스템의 블록도이다. 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨터, 스마트 폰, 임베디드 컴퓨터, 스마트 카, 또는 임의의 다른 유형 및 형태의 컴퓨팅 디바이스를 포함할 수 있는 클라이언트 디바이스(300)는 네트워크(312)를 통해 하나 이상의 서버(314)와 통신할 수 있다.3 is a block diagram of a system for image watermarking in accordance with some implementations. Client device 300 , which may include a desktop computer, laptop computer, tablet computer, wearable computer, smart phone, embedded computer, smart car, or any other type and form of computing device, may be connected via network 312 to one or more It can communicate with the server 314 .

많은 구현에서, 클라이언트 디바이스(300)는 프로세서(302)와 메모리 디바이스(306)를 포함할 수 있다. 메모리 디바이스(306)는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 설명된 하나 이상의 동작을 수행하게 하는 기계 명령들(명령어)를 저장할 수 있다. 프로세서(302)는 마이크로 프로세서, ASIC, FPGA 또는 이들의 조합을 포함할 수 있다. 많은 구현에서, 프로세서는 멀티-코어 프로세서 또는 프로세서 어레이일 수 있다. 메모리 디바이스(306)는 이에 한정되지 않지만 프로세서에 프로그램 명령들을 제공할 수 있는 전자, 광학, 자기 또는 임의의 다른 저장 디바이스를 포함할 수 있다. 메모리 디바이스는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 매체, 또는 프로세서가 명령들을 팜독할 수 있는 다른 적절한 메모리를 포함할 수 있다. 명령들은 C, C++, C#, 자바, 자바스크립트, Perl, HTML, XML, Python 및 Visual Basic과 같은 적절한 컴퓨터 프로그래밍 언어의 코드가 포함될 수 있다. In many implementations, the client device 300 may include a processor 302 and a memory device 306 . Memory device 306 may store machine instructions (instructions) that, when executed by a processor, cause the processor to perform one or more operations described herein. The processor 302 may include a microprocessor, an ASIC, an FPGA, or a combination thereof. In many implementations, the processor may be a multi-core processor or processor array. Memory device 306 may include, but is not limited to, electronic, optical, magnetic, or any other storage device capable of providing program instructions to a processor. The memory device may include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM, RAM, EEPROM, EPROM, flash memory, optical medium, or other suitable memory in which the processor can read instructions. The instructions may include code in a suitable computer programming language such as C, C++, C#, Java, JavaScript, Perl, HTML, XML, Python and Visual Basic.

클라이언트 디바이스(300)는 하나 이상의 네트워크 인터페이스(304)를 포함할 수 있다. 네트워크 인터페이스(304)는 10 베이스 T, 100 베이스 T 또는 1000 베이스 T("기가비트")를 이더넷을 포함하는 임의의 유형 및 형태의 인터페이스; 802.11a, 802.11b, 802.11g, 802.11n 또는 802.11ac와 같은 다양한 802.11 무선; CDMA, LTE, 3G 또는 4G 셀룰러를 포함하는 셀룰러; 블루투스 또는 기타 단거리 무선 연결; 또는 네트워크와 통신하기 위한 이들 또는 다른 인터페이스의 임의의 조합을 포함할 수 있다. 많은 구현에서, 클라이언트 디바이스(300)는 다양한 유형의 네트워크(312)에 대한 연결을 허용하는 상이한 유형의 복수의 네트워크 인터페이스(304)를 포함할 수 있다. 이에 따라, 네트워크(312)는 근거리 통신망(LAN), 인터넷과 같은 광역 통신망(WAN), 셀룰러 네트워크, 광대역 네트워크, 블루투스 네트워크, 802.11(WiFi) 네트워크, 위성 네트워크, 또는 이들 또는 기타 네트워크의 조합을 포함할 수 있으며, 하나 이상의 추가 디바이스(예를 들어, 라우터, 스위치, 방화벽, 허브, 네트워크 가속기, 캐시 등)를 포함할 수 있다.The client device 300 may include one or more network interfaces 304 . The network interface 304 may be a 10 base T, 100 base T, or 1000 base T (“Gigabit”) interface of any type and form, including Ethernet; various 802.11 radios such as 802.11a, 802.11b, 802.11g, 802.11n or 802.11ac; cellular, including CDMA, LTE, 3G or 4G cellular; Bluetooth or other short-range wireless connection; or any combination of these or other interfaces for communicating with the network. In many implementations, the client device 300 may include a plurality of network interfaces 304 of different types that allow connections to various types of networks 312 . Accordingly, network 312 may include a local area network (LAN), a wide area network (WAN) such as the Internet, a cellular network, a broadband network, a Bluetooth network, an 802.11 (WiFi) network, a satellite network, or a combination of these or other networks. and may include one or more additional devices (eg, routers, switches, firewalls, hubs, network accelerators, caches, etc.).

클라이언트 디바이스는 하나 이상의 사용자 인터페이스 디바이스를 포함할 수 있다. 사용자 인터페이스 디바이스는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드, 촉각 피드백 등)를 생성하여 사용자에게 데이터를 전달하거나 사용자로부터 수신된 감각 정보를 전자 신호(예를 들어, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크 등)로 변환하는 임의의 전자 디바이스일 수 있다. 하나 이상의 사용자 인터페이스 디바이스는 다양한 구현예에 따라 내장 디스플레이, 터치 스크린, 마이크 등과 같은 클라이언트 디바이스의 하우징 내부에 있거나 클라이언트 디바이스에 연결된 모니터, 클라이언트 디바이스에 연결된 스피커와 같이 클라이언트 디바이스의 하우징 외부에 있을 수 있다. A client device may include one or more user interface devices. The user interface device generates sensory information (eg, a visualization on a display, one or more sounds, tactile feedback, etc.) to transmit data to the user or transmit sensory information received from the user to an electronic signal (eg, keyboard, mouse, pointing device, touch screen display, microphone, etc.). One or more user interface devices may be within the housing of the client device, such as an embedded display, touch screen, microphone, etc., or may be external to the housing of the client device, such as a monitor connected to the client device, speakers connected to the client device, according to various implementations.

메모리(306)는 프로세스(302)에 의한 실행을 위한 애플리케이션(308)을 포함할 수 있다. 애플리케이션(308)은 미디어 애플리케이션, 웹 브라우저, 생산적 애플리케이션 또는 임의의 다른 이러한 애플리케이션과 같은 임의의 유형 및 형태의 애플리케이션을 포함할 수 있다. 애플리케이션(308)은 이미지내에 임베딩된 워터 마크를 포함하는 이미지를 컨텐츠 서버로부터 수신할 수 있고, 클라이언트 디바이스의 사용자를 위한 사용자 인터페이스를 통해 이를 디스플레이할 수 있다. Memory 306 may contain applications 308 for execution by process 302 . Applications 308 may include any type and type of application, such as a media application, a web browser, a productive application, or any other such application. The application 308 may receive an image including a watermark embedded in the image from a content server and display it via a user interface for a user of the client device.

메모리(306)는 또한 애플리케이션(308)의 일부(예를 들어, 브라우저의 플러그인 또는 확장) 및/또는 디바이스의 운영 체제의 일부일 수 있는 캡처 엔진(310)을 포함할 수 있다. 캡처 엔진(310)은 워터 마크를 포함하는 렌더링된 이미지의 스크린 샷을 캡처하기 위한 애플리케이션, 서버, 서비스, 데몬, 루틴 또는 다른 실행 가능한 로직을 포함할 수 있다. 캡처 엔진(310)은 모든 이미지 또는 일부 이미지의 스크린 샷을 캡처하도록 구성될 수 있다. 예를 들어, 일부 구현에서, 캡처 엔진(310)은 이미지의 메타 데이터에 응답하거나 애플리케이션(308)에 의해 실행되는 스크립트에 응답하여(예를 들어, 브라우저에 의해 디스플레이되는웹 페이지에 임베딩된 스크립트에 응답하여) 이미지의 스크린 샷을 찍도록 트리거될 수 있다. 캡처 엔진(310)은 일부 구현에서 단지 이미지의 스크린 샷을 찍거나 전체 디스플레이 또는 화면의 스크린 샷을 찍을 수 있다. 추가 구현에서, 캡처 엔진은 캡처된 이미지를 원하는 이미지로 잘라낼 수 있다. 이것은 예를 들어 디스플레이내의 이미지 디스플레이 좌표에 기초하여 수행될 수 있다. 캡처 엔진(310)은 전술한 바와 같이 캡처 시간(예를 들어, 에포크 시간)과 같은 메타 데이터를 스크린 샷에 추가할 수 있다. 캡처 엔진(310)은 또한 네트워크 인터페이스(304)를 통해 스크린 샷을 모니터링 서버로 전송할 수 있다. 일부 구현에서, 캡처 엔진(310)은 웹 페이지에 임베딩되고 웹 페이지를 렌더링하는 동안 애플리케이션(308)에 의해 실행되는 스크립트를 포함할 수 있으며, 이러한 웹 페이지는 또한 캡쳐 엔진이 스크린 샷을 캡쳐할 수 있도록 임베딩된 이미지 또는 이미지 링크를 포함할 수 있다.The memory 306 may also include a capture engine 310 which may be part of the application 308 (eg, a plug-in or extension of a browser) and/or part of the device's operating system. The capture engine 310 may include an application, server, service, daemon, routine, or other executable logic for capturing a screen shot of a rendered image including a watermark. The capture engine 310 may be configured to capture screen shots of all images or some images. For example, in some implementations, the capture engine 310 responds to metadata of an image or in response to a script executed by the application 308 (eg, to a script embedded in a web page displayed by a browser). in response) to take a screenshot of the image. Capture engine 310 may, in some implementations, just take a screenshot of an image or take a screenshot of the entire display or screen. In a further implementation, the capture engine may crop the captured image to a desired image. This can be done, for example, based on the image display coordinates in the display. The capture engine 310 may add metadata such as capture time (eg, epoch time) to the screen shot as described above. The capture engine 310 may also send the screenshot to the monitoring server via the network interface 304 . In some implementations, the capture engine 310 may include scripts embedded in web pages and executed by the application 308 while rendering the web pages, which web pages also enable the capture engine to capture screenshots. You can include an embedded image or image link to help you.

서버(314)는 동일하거나 상이한 디바이스일 수 있는 컨텐츠 서버 및/또는 모니터링 서버를 포함할 수 있다. 서버(들)(314)는 하나 이상의 프로세서(302), 네트워크 인터페이스(304) 및 메모리 디바이스(306)를 포함할 수 있다. 컨텐츠 서버(314)는 워터 마킹될 이미지뿐만 아니라 다른 컨텐츠(예를 들어, 웹 페이지, 다른 미디어 등)와 같이 스토리지에 있는 하나 이상의 컨텐츠 아이템(316)을 포함할 수 있다. 컨텐츠 서버(314)는 또한 도 2a 및 2b와 관련하여 위에서 논의된 바와 같이 인코더(202)를 포함할 수 있다. 인코더(202)는 소프트웨어, 하드웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 예를 들어, 인코더(202)는 이미지에 워터 마크를 임베딩하기 위한 ASIC, FPGA 또는 다른 전용 하드웨어를 포함할 수 있다. Server 314 may include a content server and/or monitoring server, which may be the same or a different device. The server(s) 314 may include one or more processors 302 , a network interface 304 , and a memory device 306 . The content server 314 may include one or more content items 316 in storage, such as images to be watermarked as well as other content (eg, web pages, other media, etc.). The content server 314 may also include an encoder 202 as discussed above with respect to FIGS. 2A and 2B . The encoder 202 may include software, hardware, or a combination of hardware and software. For example, the encoder 202 may include an ASIC, FPGA, or other dedicated hardware for embedding a watermark in an image.

모니터링 서버는 도 2b와 관련하여 위에서 논의된 바와 같이 디코더(204)를 포함할 수 있다. 디코더(204)는 소프트웨어, 하드웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 예를 들어, 디코더(204)는 이미지로부터 워터 마크를 식별하고 디코딩하기 위한 ASIC, FPGA, 또는 다른 전용 하드웨어를 포함할 수 있다. 위에서 논의된 바와 같이, 디코더(204)는 캡쳐 엔진(310)으로부터 수신된 스크린 샷의 메타 데이터로부터의 스크린 샷 시간과 같은 워터 마크 디코딩에 도움이 되는 부가 정보를 수신할 수 있다.The monitoring server may include a decoder 204 as discussed above with respect to FIG. 2B . The decoder 204 may include software, hardware, or a combination of hardware and software. For example, the decoder 204 may include an ASIC, FPGA, or other dedicated hardware for identifying and decoding a watermark from an image. As discussed above, the decoder 204 may receive additional information from the capture engine 310 to aid in watermark decoding, such as the screen shot time from metadata of the received screen shot.

도 4는 일부 구현에 따른 이미지 워터 마킹 방법의 흐름도이다. 단계(402)에서, 클라이언트 디바이스는 컨텐츠 아이템을 요청할 수 있다. 요청은 브라우저 또는 다른 애플리케이션(예를 들어, 모바일 게임 또는 다른 유형 및 형태의 컨텐츠에서 휴식 중의 전면 광고 컨텐츠 아이템)에 의한 웹 페이지의 렌더링 동안 트리거될 수 있다. 단계(404)에서, 컨텐츠 서버(314)는 컨텐츠 아이템을 선택할 수 있다. 컨텐츠 아이템은 임의의 수단을 통해 선택될 수 있으며, 클라이언트 디바이스 유형, 사용자 계정 또는 디바이스 식별자, 웹 페이지 또는 다른 애플리케이션내의 컨텍스트 아이템, 또는 임의의 다른 이러한 정보에 기초할 수 있다.4 is a flowchart of an image watermarking method in accordance with some implementations. At step 402 , the client device may request a content item. The request may be triggered during rendering of a web page by a browser or other application (eg, an interstitial content item resting in a mobile game or other type and form of content). At step 404, the content server 314 may select a content item. The content item may be selected through any means, and may be based on a client device type, a user account or device identifier, a context item in a web page or other application, or any other such information.

단계(406)에서, 컨텐츠 서버(314)는 타임 스탬프, 서버의 식별자 또는 서버의 IP 주소, 및/또는 컨텐츠 아이템을 선택하는데 사용되는 프로세스의 프로세스 식별자를 포함하여 하나 이상의 식별자를 포함할 수 있는 워터 마크 식별자를 생성할 수 있다. 일부 구현에서, 워터 마크 식별자는 컨텐츠 아이템의 식별자와 같은 추가 정보를 포함할 수 있다. 단계(408)에서, 컨텐츠 아이템은 워터 마크로 인코딩될 수 있다. 위에서 논의된 바와 같이, 컨텐츠 아이템을 인코딩하는 것은 인코딩된 워터 마크의 변경된 비트(예를 들어, QR 코드 또는 유사 코드)를 나타내는 패턴 또는 디폴트값에서 수정된 픽셀들을 갖는 알파 채널로 오버레이를 생성하는 것을 포함할 수 있다. 워터 마크는 이미지에 걸쳐 사전 결정된 인터벌 또는 간격으로 반복될 수 있다. 그런 다음 오버레이는 이미지와 블렌딩되거나 결합되어 인코딩된 컨텐츠 아이템을 생성할 수 있다. 단계(410)에서, 인코딩된 컨텐츠 아이템은 컨텐츠 서버에 의해 클라이언트 디바이스로 전송될 수 있다. In step 406, the content server 314 sends water that may include one or more identifiers including a timestamp, the server's identifier or IP address of the server, and/or the process identifier of the process used to select the content item. You can create a mark identifier. In some implementations, the watermark identifier may include additional information, such as an identifier of a content item. At step 408, the content item may be encoded with a watermark. As discussed above, encoding a content item involves creating an overlay with an alpha channel with pixels modified from a default or pattern representing a changed bit (eg, a QR code or similar code) of the encoded watermark. may include The watermark may be repeated at predetermined intervals or intervals across the image. The overlay can then be blended or combined with the image to create an encoded content item. In step 410, the encoded content item may be transmitted by the content server to the client device.

컨텐츠 서버가 워터 마크 식별자를 생성하고 컨텐츠 아이템 요청을 수신한 후 워터 마크를 인코딩하는 것으로 도시되었지만, 일부 구현에서, 컨텐츠 아이템은 (예를 들어, 단계(402) 이전에) 사전 인코딩될 수 있고, 컨텐츠 서버는 전달을 위해 사전 인코딩된 컨텐츠 아이템을 선택할 수 있다. 많은 구현에서, 이러한 사전 인코딩은 상기 요청 이전에 사전 결정된 시간 프레임 내에 수행될 수 있다. 예를 들어, 컨텐츠 아이템은 주어진 타임 스탬프로 인코딩되고 사전 결정된 시간 기간(예를 들어, 2주)동안 사용될 수 있으며 그런 다음 새로운 타임 스탬프로 대체되거나 재인코딩될 수 있다. 이는 컨텐츠 및 타임 스탬프가 비교적 최신 상태임을 보장하면서 컨텐츠 서버가 덜 바쁜 시간 동안 인코딩 처리를 수행할 수 있게 한다. 위에서 논의된 바와 같이, 사전 인코딩된 컨텐츠 아이템이 사용될 수 있는 기간이 짧을수록, 더 많은 데이터가 워터 마크에 인코딩될 수 있고 및/또는 워터 마크가 더욱 견고해질 수 있다. 그러나 위에서 설명한 예에서도, 필요한 데이터를 크게 줄이면서 1년 이상의 기간이 사용될 수 있다.Although the content server is shown to generate the watermark identifier and encode the watermark after receiving the content item request, in some implementations the content item may be pre-encoded (eg, prior to step 402 ); The content server may select the pre-encoded content item for delivery. In many implementations, this pre-encoding may be performed within a predetermined time frame prior to the request. For example, a content item may be encoded with a given timestamp and used for a predetermined period of time (eg, two weeks) and then replaced or re-encoded with a new timestamp. This allows the content server to perform encoding processing during less busy times while ensuring that the content and timestamps are relatively up-to-date. As discussed above, the shorter the period over which a pre-encoded content item can be used, the more data can be encoded in the watermark and/or the more robust the watermark can be. However, even in the example described above, a period of one year or more can be used while greatly reducing the data required.

단계(412)에서, 클라이언트 디바이스는 예를 들어, 웹 브라우저, 미디어 플레이어, 게임 또는 다른 애플리케이션과 같은 애플리케이션 내에서 컨텐츠 아이템을 렌더링할 수 있다. 단계(414)에서, 클라이언트 디바이스의 캡처 엔진(별도의 서비스 또는 애플리케이션의 플러그인 또는 스크립트로 실행됨)은 컨텐츠 아이템의 스크린 샷을 캡처할 수 있다. 스크린 샷은 잘리거나 컨텐츠 아이템으로 제한되거나, 전체 화면 또는 화면의 일부일 수 있다. 스크린 샷은 캡처 타임 스탬프를 갖는 메타 데이터를 통해 식별될 수 있으며 다른 식별자(예를 들어, 디바이스 식별자, 애플리케이션 및/또는 웹 페이지의 컨텍스트 식별자 등)를 포함할 수 있다. 다른 구현에서, 캡처 타임 스탬프는 다른 수단을 통해 제공될 수 있다. 예를 들어, 일부 구현에서, 캡쳐 시간 및 서버로의 스크린 샷 전송 시간이 매우 근접할 가능성이 있는 경우(예를 들어, 몇 초 이내), 패킷 전송 시간(예를 들어, 전송 계층 헤더의 타임 스탬프 옵션 필드와 같은 패킷 헤더에서 식별 또는 추출됨) 또는 수신 시간이 캡처 타임 스탬프로 활용될 수 있다. 단계(416)에서, 클라이언트 디바이스는 스크린 샷을 모니터링 서버로 전송할 수 있다.At step 412 , the client device may render the content item within an application such as, for example, a web browser, media player, game, or other application. At step 414 , the client device's capture engine (executed as a plug-in or script in a separate service or application) may capture a screen shot of the content item. Screenshots may be cropped, limited to content items, or may be the entire screen or part of the screen. Screenshots may be identified via metadata with capture timestamps and may include other identifiers (eg, device identifiers, context identifiers of applications and/or web pages, etc.). In other implementations, the capture timestamp may be provided through other means. For example, in some implementations, when the capture time and the screen shot transmission time to the server are likely to be very close (eg within a few seconds), the packet transmission time (eg, a timestamp in the transport layer header) (identified or extracted from the packet header, such as an option field) or the reception time may be utilized as the capture timestamp. In step 416 , the client device may send the screen shot to the monitoring server.

단계(418)에서, 컨텐츠 서버 또는 다른 디바이스일 수 있는 모니터링 서버는 스크린 샷을 수신할 수 있으며, 일부 구현에서 스크린 샷의 메타 데이터에서 타임 스탬프를 추출하거나 스크린 샷의 전송 또는 수신 시간을 식별할 수 있다. 타임 스탬프는 부가 정보로서 모니터링 서버의 디코더로 제공될 수 있다. At step 418, a monitoring server, which may be a content server or other device, may receive the screenshot, and in some implementations may extract a timestamp from the metadata of the screenshot or identify the time the screenshot was sent or received. have. The time stamp may be provided to the decoder of the monitoring server as additional information.

단계(420)에서, 디코더는 스크린 샷을 스캔하여 임의의 식별된 워터 마크를 추출할 수 있다. 워터 마크가 스크린 샷에 여러 번 나타나는 일부 구현에서, 디코더는 식별된 워터 마크들을 비교하고 왜곡이 가장 적은 워터 마크(예를 들어, 이미지에서 가장 많은 다른 워터 마크의 매칭하는 워터 마크, 식별된 다른 워터 마크들의 평균인 워터 마크 등)를 선택하거나 생성할 수 있다. 단계(422)에서, 디코더는 워터 마크를 문자열로 변환할 수 있다.In step 420, the decoder may scan the screen shot to extract any identified watermarks. In some implementations where the watermark appears multiple times in the screen shot, the decoder compares the identified watermarks and the watermark with the least distortion (e.g., the matching watermark of the most other watermarks in the image, the other watermark identified A watermark that is an average of the marks, etc.) or create In step 422, the decoder may convert the watermark to a string.

단계(424)에서, 디코더는 단계(418)에서 추출된 타임 스탬프의 일부(예를 들어, 사전 결정된 수의 최하위 비트)로부터 타임 스탬프를 생성할 수 있고, 생성된 타임 스탬프를 사용하여(예를 들어, 생성된 타임 스탬프를 갖는 상기 디코딩된 문자열에 오류 정정 알고리즘을 적용하여) 문자열의 디코딩을 테스트할 수 있다. 문자열이 오류 정정 비트에 따라 올바르게 디코딩되면, 단계(426)에서, 모니터링 서버는 컨텐츠 아이템과 관련된 스크린 샷 이미지 또는 데이터를 처리할 수 있다(예를 들어, IP 주소 및 프로세스 식별자를 통한 컨텐츠 서버 식별, 렌더링 왜곡 또는 손상을 검출하기 위해 스크린 샷과 오리지널 컨텐츠 아이템 비교, 컨텐츠 아이템의 전달 추적 등).At step 424, the decoder may generate a timestamp from a portion of the timestamp extracted in step 418 (eg, a predetermined number of least significant bits) and using the generated timestamp (e.g., For example, by applying an error correction algorithm to the decoded character string having the generated time stamp), the decoding of the character string may be tested. If the string is decoded correctly according to the error correction bits, at step 426, the monitoring server may process the screenshot image or data associated with the content item (eg, identify the content server via IP address and process identifier; Compare screenshots to original content items, track delivery of content items, etc.) to detect rendering distortion or corruption.

문자열이 올바르게 디코딩되지 않는 경우, 디코더는 비닝 방식으로부터의 Δ값에 따라 상기 생성된 타임 스탬프를 진행시킬 수 있고, 단계(424)에서 디코딩을 재테스트할 수 있다. 이것은 디코딩이 성공하거나, 모든 빈 인덱스 값이 테스트될 때까지 반복적으로 반복될 수 있다(워터 마크가 손상되었거나 부적절하게 추출되었거나 전술한 사용 시간 창 이전의 컨텐츠 아이템이 활용되었음을 암시). 모든 빈 인덱스 값이 테스트되고 디코딩이 실패한 경우, 단계(428)에서 디코더는 시스템의 관리자 또는 사용자에게 오류를 보고할 수 있다. If the character string is not decoded correctly, the decoder may advance the generated timestamp according to the Δ value from the binning scheme, and may retest decoding in step 424 . This may be iteratively repeated until either the decoding succeeds, or all bin index values have been tested (suggesting that the watermark has been corrupted or improperly extracted, or that a content item prior to the aforementioned usage time window has been utilized). If all bin index values have been tested and decoding fails, then in step 428 the decoder may report an error to an administrator or user of the system.

따라서, 본 명세서에서 논의된 시스템 및 방법은 지각성을 저하시키지 않으면서 견고성과 용량을 개선하기 위해 개선된 이미지 워터 마킹을 제공한다. 특히, 본 명세서에서 논의된 시스템 및 방법은 동일한 왜곡 레벨 및 메시지 속도에서 더 높은 디코딩 성공률을 허용하거나 동일한 왜곡 레벨 및 디코딩 성공률에서 더 높은 메시지 속도를 허용한다. 이러한 시스템의 구현은 인코더가 아닌 디코더에서만 사용할 수 있는 추가 정보의 부가 체인을 활용하여 점근 무손실 데이터 압축을 달성하여, 동일한 메시지가 더 적은 비트로 전송되도록 할 수 있다.Accordingly, the systems and methods discussed herein provide improved image watermarking to improve robustness and capacity without compromising perceptibility. In particular, the systems and methods discussed herein allow for higher decoding success rates at the same distortion level and message rate or higher message rates at the same distortion level and decoding success rate. Implementations of such a system can achieve asymptotic lossless data compression by utilizing an additional chain of additional information available only to the decoder, not the encoder, so that the same message is transmitted with fewer bits.

본 명세서에 기술된 주제 및 동작들의 구현은 디지털 전자 회로, 또는 본 명세서 및 그의 구조적 등가물에 개시된 구조를 포함하는 유형의 매체, 펌웨어 또는 하드웨어에 구현된 컴퓨터 소프트웨어 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 주제의 구현은 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 부가적으로, 프로그램 명령은 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성된 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 그 안에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령의 소스 또는 목적지를 포함할 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 구성 요소 또는 매체(예를 들어, 다중 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 그 안에 포함될 수 있다. 따라서, 컴퓨터 저장 매체는 유형적일 수 있다. Implementations of the subject matter and operations described herein may be implemented in digital electronic circuitry, or as computer software embodied in firmware or hardware, or a combination of one or more of them, in a tangible medium comprising the structures disclosed herein and structural equivalents thereof. have. Implementations of the subject matter described herein may be implemented as one or more computer programs, ie, one or more modules of computer program instructions executed by a data processing device or encoded in a computer storage medium for controlling the operation of the data processing device. Alternatively or additionally, the program instructions may be an artificially generated radio signal, eg, a machine generated electrical, optical or electromagnetic generated to encode information for transmission to a receiver device suitable for execution by a data processing device. may be encoded in the signal. A computer storage medium may be or be included in a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or a combination of one or more thereof. Moreover, while computer storage media is not a propagated signal, computer storage media may include a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium may also be or be included in one or more separate physical components or media (eg, multiple CDs, disks, or other storage devices). Accordingly, computer storage media can be tangible.

본 명세서에 설명된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작들로 구현될 수 있다.The operations described herein may be implemented as operations performed by a data processing apparatus on data stored in one or more computer-readable storage devices or received from other sources.

"클라이언트 또는"서버 "라는 용어는 프로그래밍 가능 프로세서, 컴퓨터, 칩상의 시스템 또는 전술한 것 중 다수 또는 조합과 같이 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 장치는 FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)와 같은 특수 목적 논리 회로를 포함할 수 있다. 장치는 또한 하드웨어에 추가하여 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스 플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 구현할 수 있다.The term "client" or "server" includes all kinds of apparatus, devices and machines for processing data, such as programmable processors, computers, systems on a chip, or many or combinations of the foregoing. programmable gate arrays) or special purpose logic circuits such as ASICs (application specific integrated circuits) A device may also include, in addition to hardware, code that creates an execution environment for its computer program, for example, processor firmware. , protocol stacks, database management systems, operating systems, cross-platform runtime environments, virtual machines, or a combination of one or more of these devices and execution environments, such as web services, distributed computing and grid computing infrastructure. Various computing model infrastructures can be implemented.

컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램이나 모듈, 구성 요소, 서브 루틴, 객체, 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함하여 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램 또는 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 해당 프로그램 전용 단일 파일, 또는 다수의 조정 파일(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 다수의 컴퓨터에서 실행되도록 배포될 수 있다.A computer program (also called a program, software, software application, script or code) may be written in any form of programming language, including compiled or interpreted language, declarative or procedural language, and may be a stand-alone program or module; It may be distributed in any form, including components, subroutines, objects, or other units suitable for use in a computing environment. A computer program can, but need not, correspond to a file in a file system. A program may be a part of another program or file holding data (e.g., one or more scripts stored in a markup language document), a single file dedicated to that program, or multiple control files (e.g., one or more modules, subprograms). or in a file that stores portions of code). The computer program may be distributed to be executed on one computer or multiple computers located at one site or distributed over multiple sites and interconnected by a communication network.

본 명세서에 설명된 프로세스 및 로직 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 동작들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 또한 특수 목적 논리 회로, 예를 들어 FPGA 또는 ASIC에 의해 수행될 수 있으며 장치 또한 이들로 구현될 수 있다.The processes and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform operations by operating on input data and generating output. Processes and logic flows may also be performed by special purpose logic circuits, such as FPGAs or ASICs, and devices may also be implemented with them.

컴퓨터 프로그램의 실행에 적합한 프로세서들은 예를 들어 범용 및 특수 목적의 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터에 대한 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 모두로부터 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령에 따라 동작을 수행하기 위한 프로세서 및 명령과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광 자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나, 컴퓨터에는 이러한 디바이스가 필요하지 않다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화기, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어, USB 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 예로서 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스); 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크); 광 자기 디스크; 및 CD-ROM과 DVD-ROM 디스크를 포함하는 모든 형태의 비-휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.Processors suitable for the execution of a computer program include, for example, general and special purpose microprocessors, and any one or more processors for digital computers of any kind. Processors typically receive instructions and data from read-only memory, random access memory, or both. Essential elements of a computer are a processor for performing operations according to instructions and one or more memory devices for storing instructions and data. In general, a computer also includes, or is operatively coupled to, one or more mass storage devices for storing data, for example, receiving data from, sending data to, or receiving data from, for example, a magnetic, magneto-optical disk, or optical disk. However, a computer does not need such a device. The computer may also be embedded in another device, such as a mobile phone, PDA, mobile audio or video player, game console, GPS receiver, or portable storage device (eg, a USB flash drive). Devices suitable for storing computer program instructions and data include, for example, semiconductor memory devices (eg, EPROM, EEPROM, and flash memory devices); magnetic disks (eg, internal hard disks or removable disks); magneto-optical disk; and all forms of non-volatile memory, media and memory devices, including CD-ROM and DVD-ROM disks. The processor and memory may be supplemented or integrated by special purpose logic circuitry.

사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 주제의 구현들은 사용자에게 정보를 디스플레이하기 위한 CRT(음극선 관), 플라즈마 또는 LCD(액정 디스플레이) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)가 있는 컴퓨터에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각적 피드백 또는 촉각적 피드백을 포함할 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여 임의의 형태로 수신될 수 있다. 또한 컴퓨터는 사용자가 사용하는 디바이스와 문서를 주고 받음으로써, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자 클라이언트 디바이스의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 상호 작용할 수 있다. To provide for interaction with a user, implementations of the subject matter described herein may include a display device such as a CRT (cathode ray tube), plasma or LCD (liquid crystal display) monitor for displaying information to the user and input by the user into the computer. may be implemented in a computer with a keyboard and pointing device (eg, mouse or trackball) that may provide Other types of devices may be used to provide interaction with the user. For example, the feedback provided to the user may include any form of sensory feedback, such as visual feedback, auditory feedback or tactile feedback, and input from the user may include acoustic, voice, or tactile input. It may be received in any form. In addition, the computer may interact with the user by exchanging documents with the device used by the user, for example, by sending a web page to the web browser of the user's client device in response to a request received from the web browser.

본 명세서에 기술된 주제의 구현들은 백엔드 구성 요소(예를 들어, 데이터 서버)를 포함하거나, 미들웨어 구성 요소(예를 들어, 애플리케이션 서버)를 포함하거나 프런트 엔드 구성 요소(예를 들어, 사용자가 본 명세서에 기술된 주제의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저가 있는 클라이언트 컴퓨터)를 포함하거나, 하나 이상의 이러한 백엔드, 미들웨어 또는 프런트 엔드 구성 요소의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성 요소들은 디지털 데이터 통신의 모든 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크에는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 네트워크 간(예를 들어, 인터넷) 및 피어-투-피어 네트워크(예를 들어, 애드 혹 피어-투-피어 네트워크)가 포함될 수 있다.Implementations of the subject matter described herein may include a back-end component (eg, a data server), a middleware component (eg, an application server), or a front-end component (eg, a user to be implemented on a computing system comprising any combination of one or more such backend, middleware or frontend components) or a client computer having a web browser or graphical user interface capable of interacting with implementations of the subject matter described in the specification. can The components of the system may be interconnected by any form or medium of digital data communication, for example, a communication network. Telecommunication networks include local area networks (“LANs”) and wide area networks (“WANs”), network-to-network (eg, the Internet), and peer-to-peer networks (eg, ad hoc peer-to-peer networks). may be included.

본 명세서에서 논의된 시스템이 사용자에 대한 개인 정보를 수집하거나 개인 정보를 사용할 수 있는 상황의 경우, 사용자는 개인 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 사용자의 선호도 또는 사용자의 위치에 관한 정보)를 수집할 수 있는 프로그램 또는 기능을 제어하거나 사용자와 더 관련이 있을 수 있는 컨텐츠 서버 또는 다른 데이터 처리 시스템으로부터 컨텐츠를 수신할지 여부 또는 수신 방법을 제어할 수 있는 기회를 제공받을 수 있다. 또한, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 익명화될 수 있으므로 개인 식별 정보는 파라미터를 생성할 때 제거될 수 있다. 예를 들어, 사용자의 신원은 익명화되어 개인 식별 정보가 사용자에 대해 결정되지 않도록 할 수 있고, 사용자의 지리적 위치는 사용자의 특정 위치를 결정되지 않도록 위치 정보가 획득되는 곳에서 일반화된다(예를 들어, 도시, 우편 번호 또는 주 수준). 따라서, 사용자는 자신에 대한 정보를 수집하고 컨텐츠 서버에서 사용하는 방법을 제어할 수 있다.In the circumstances in which the systems discussed herein may collect or use personal information about a user, the user may use personal information (e.g., the user's social networks, social actions or activities, the user's preferences, or the user's You may be provided with the opportunity to control programs or features that may collect information about your location) or to control whether or how we receive content from content servers or other data processing systems that may be more relevant to you. have. Additionally, certain data may be anonymized in one or more ways before being stored or used, so personally identifiable information may be removed when creating parameters. For example, the user's identity may be anonymized so that personally identifiable information cannot be determined about the user, and the user's geographic location is generalized where location information is obtained so that the user's specific location is not determined (e.g. , city, zip code or state level). Thus, users can control how information about themselves is collected and used by the content server.

본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안되며, 오히려 특정 발명의 특정 구현에 특정된 특징들의 설명으로 해석되어야 한다. 개별 구현의 맥락에서 본 명세서에 설명된 특정 기능은 단일 구현에서 조합하여 구현될 수도 있다. 반대로, 단일 구현의 맥락에서 설명되는 다양한 기능은 여러 구현에서 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징이 경우에 따라 그 조합으로부터 배제될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 대한 것일 수 있다.While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described herein in the context of separate implementations may be implemented in combination in a single implementation. Conversely, various functions that are described in the context of a single implementation may be implemented in multiple implementations individually or in any suitable subcombination. Moreover, although features may be described above and even initially claimed as acting in a particular combination, one or more features from a claimed combination may in some cases be excluded from the combination, and the claimed combination may be a sub-combination or It may be for a variant of a sub-combination.

유사하게, 동작들은 특정 순서로 도면에 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명한 구현에서 다양한 시스템 구성 요소의 분리는 모든 구현에서 이러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지될 수 있음을 이해해야 한다.Similarly, while acts are shown in the figures in a particular order, this should not be construed as requiring that such acts be performed in the particular order shown or sequential order or that all illustrated acts be performed to achieve desirable results. . Multitasking and parallel processing can be advantageous in certain situations. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and the described program components and systems are typically integrated together into a single software product or packaged into multiple software products. You have to understand that it can be.

따라서, 주제의 특정 구현들이 설명되었다. 다른 구현은 다음 청구항의 범위 내에 있다. 일부 경우에, 청구 범위에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 묘사된 프로세스는 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로하지 않는다. 특정 구현에서, 멀티 태스킹 또는 병렬 처리가 이용될 수 있다.Accordingly, specific implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results. Moreover, the processes depicted in the accompanying drawings do not necessarily require the specific order shown or sequential order to achieve desirable results. In certain implementations, multitasking or parallel processing may be used.

Claims (27)

워터 마킹 시스템을 위한 디코더로서, 상기 디코더는:
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 그 이미지와 관련된 메타 데이터와 관련된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷을 수신하고,
패킷으로부터, 문자열 및 이미지의 스크린 샷과 관련된 관련된 메타 데이터를 추출하고,
이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지지와 관련된 메타 데이터를 포함하고; 그리고
디코딩된 식별자에 응답하여 이미지와 관련된 컨텐츠 아이템의 전달을 추적하도록 구성되는 워터 마킹 시스템을 위한 디코더.
A decoder for a watermarking system, the decoder comprising:
From the client device, (i) a screen shot of an image displayed by the client device, wherein the image is watermarked with a string associated with metadata associated with the image and (ii) a packet containing metadata associated with the screen shot of the image receive,
extract from the packet, string and image related metadata related to the screenshot,
decode an identifier from the string using a part of metadata related to the screenshot of the image, wherein the identifier includes metadata related to the image sheet; And
A decoder for a watermarking system configured to track delivery of a content item associated with an image in response to the decoded identifier.
제1항에 있어서,
상기 이미지의 스크린 샷과 관련된 메타 데이터는 이미지의 스크린 샷의 타임 스탬프를 포함하고, 상기 디코딩된 식별자는 이미지의 타임 스탬프를 포함하는 워터 마킹 시스템을 위한 디코더.
According to claim 1,
The metadata associated with the screenshot of the image includes a timestamp of the screenshot of the image, and the decoded identifier includes a timestamp of the image.
제2항에 있어서,
상기 디코더는,
이미지의 스크린 샷 및 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷의 헤더로부터 이미지의 스크린 샷의 타임 스탬프를 추출하도록 구성되는 워터 마킹 시스템을 위한 디코더.
3. The method of claim 2,
The decoder is
A decoder for a watermarking system, configured to extract a timestamp of a screenshot of an image from a header of a packet comprising a screenshot of the image and metadata associated with the screenshot of the image.
제2항 또는 제3항에 있어서,
상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하는 워터 마킹 시스템을 위한 디코더.
4. The method of claim 2 or 3,
wherein the string includes a subset of timestamps of the image.
제4항에 있어서,
상기 디코더는,
이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결(concatenate)함으로써 문자열로부터 식별자를 디코딩하도록 구성되는 워터 마킹 시스템을 위한 디코더.
5. The method of claim 4,
The decoder is
A decoder for a watermarking system, configured to decode an identifier from a string by concatenating a portion of a timestamp of a screen shot of the image with a subset of the timestamp of the image.
제4항 또는 제5항에 있어서,
상기 문자열은,
이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 더 큰 다수의 오류 정정 비트를 포함하는 워터 마킹 시스템을 위한 디코더.
6. The method according to claim 4 or 5,
The string is
A decoder for a watermarking system comprising a plurality of error correction bits greater than a difference between a length of a timestamp of an image and a length of a subset of timestamps of the image.
선행하는 항 중 어느 한 항에 있어서,
상기 디코더는,
이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사전 결정된 오프셋과 결합함으로써 문자열로부터 식별자를 디코딩하도록 구성되는 워터 마킹 시스템을 위한 디코더.
According to any one of the preceding claims,
The decoder is
A decoder for a watermarking system, configured to decode an identifier from a string by combining a portion of metadata associated with a screenshot of an image with a predetermined offset.
제7항에 있어서,
상기 디코더는,
식별자를 성공적으로 디코딩할 때까지 이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합함으로써 문자열로부터 식별자를 디코딩하도록 구성되는 워터 마킹 시스템을 위한 디코더.
8. The method of claim 7,
The decoder is
A decoder for a watermarking system, configured to decode an identifier from a string by repeatedly combining a portion of metadata associated with a screenshot of an image with a multiple of a predetermined offset until successfully decoding the identifier.
선행하는 항 중 어느 한 항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 주소를 포함하는 워터 마킹 시스템을 위한 디코더.
According to any one of the preceding claims,
The string is
A decoder for a watermarking system that contains the address of the content server that generated the watermarked image as a string.
제9항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 프로세스 식별자를 포함하는 워터 마킹 시스템을 위한 디코더.
10. The method of claim 9,
The string is
A decoder for a watermarking system that includes the process identifier of the content server that generated the watermarked image as a string.
워터 마킹 방법으로서,
클라이언트 디바이스로부터 디바이스의 디코더에 의해, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 그 이미지와 관련된 메타 데이터와 관련된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷을 수신하는 단계;
디코더에 의해 패킷으로부터, 문자열 및 이미지의 스크린 샷과 관련된 메타 데이터를 추출하는 단계;
디코더에 의해 이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하는 단계, 상기 식별자는 이미지지와 관련된 메타 데이터를 포함하고; 및
디코더에 의해, 디코딩된 식별자에 응답하여 이미지와 관련된 컨텐츠 아이템의 전달을 추적하는 단계를 포함하는 포함하는 워터 마킹 방법.
A watermarking method comprising:
by the device's decoder from the client device, (i) a screen shot of an image displayed by the client device, wherein the image is watermarked with a string associated with metadata associated with the image and (ii) meta data associated with the screen shot of the image receiving a packet comprising data;
extracting, by the decoder, from the packet, metadata related to the character string and the screenshot of the image;
decoding, by a decoder, an identifier from the string, using a portion of metadata related to the screenshot of the image, the identifier including metadata related to the image sheet; and
and tracking, by a decoder, delivery of a content item associated with the image in response to the decoded identifier.
제11항에 있어서,
상기 이미지의 스크린 샷과 관련된 메타 데이터는 이미지의 스크린 샷의 타임 스탬프를 포함하고, 상기 디코딩된 식별자는 이미지의 타임 스탬프를 포함하는 워터 마킹 방법.
12. The method of claim 11,
The metadata associated with the screenshot of the image includes a timestamp of the screenshot of the image, and the decoded identifier includes a timestamp of the image.
제12항에 있어서,
디코더에 의해, 이미지의 스크린 샷을 포함하는 패킷의 헤더로부터 이미지의 스크린 샷의 타임 스탬프를 추출하는 단계를 더 포함하는 워터 마킹 방법.
13. The method of claim 12,
and extracting, by a decoder, a timestamp of the screen shot of the image from the header of the packet containing the screenshot of the image.
제12항 또는 제13항에 있어서,
상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하는 워터 마킹 방법.
14. The method of claim 12 or 13,
wherein the string includes a subset of the timestamp of the image.
제14항에 있어서,
상기 문자열로부터 식별자를 디코딩하는 단계는,
이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 단계를 더 포함하는 워터 마킹 방법.
15. The method of claim 14,
Decoding the identifier from the string comprises:
and associating a portion of the timestamp of the screenshot of the image with a subset of the timestamp of the image.
제14항 또는 제15항에 있어서,
상기 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 더 큰 다수의 오류 정정 비트를 포함하는 워터 마킹 방법.
16. The method of claim 14 or 15,
wherein the string includes a plurality of error correction bits greater than a difference between the length of the timestamp of the image and the length of the subset of timestamps of the image.
제11항 내지 제16항 중 어느 한 항에 있어서,
상기 문자열로부터 식별자를 디코딩하는 단계는,
이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사전 결정된 오프셋과 결합하는 단계를 더 포함하는 워터 마킹 방법.
17. The method according to any one of claims 11 to 16,
Decoding the identifier from the string comprises:
and associating a portion of the metadata associated with the screenshot of the image with a predetermined offset.
제17항에 있어서,
상기 문자열로부터 식별자를 디코딩하는 단계는,
식별자를 성공적으로 디코딩할 때까지 이미지의 스크린 샷과 관련된 메타 데이터의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합하는 단계를 더 포함하는 워터 마킹 방법.
18. The method of claim 17,
Decoding the identifier from the string comprises:
and iteratively combining a portion of the metadata associated with the screenshot of the image with a multiple of a predetermined offset until the identifier is successfully decoded.
제11항 내지 제18항 중 어느 한 항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 주소를 포함하는 워터 마킹 방법.
19. The method according to any one of claims 11 to 18,
The string is
A watermarking method including the address of the content server that generated the watermarked image as a string.
제19항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 프로세스 식별자를 포함하는 워터 마킹 방법.
20. The method of claim 19,
The string is
A watermarking method including the process identifier of the content server that generated the watermarked image as a string.
컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스로 하여금 제11항 내지 제20항 중 어느 한 항의 방법을 수행하게 하는 명령들을 포함하는 컴퓨터 판독 가능 매체. A computer-readable medium comprising instructions that, when executed by a computing device, cause the computing device to perform the method of any one of claims 11-20. 워터 마킹 시스템으로서,
디바이스의 인코더를 포함고, 상기 디바이스의 인코더는,
이미지 및 이미지와 관련된 메타 데이터를 수신하고,
이미지와 관련된 메타 데이터의 서브 세트로부터 문자열을 생성하고,
문자열로부터 워터 마크를 인코딩하고, 그리고
워터 마크를 이미지에 임베딩하도록 구성되고;
상기 디바이스 또는 제2 디바이스의 디코더는,
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지와 관련된 메타 데이터의 서브 세트로부터 생성된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷을 수신하고,
클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷 및 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷으로부터, 문자열 및 이미지의 스크린 샷과 관련된 추가 메타 데이터를 추출하고,
이미지의 스크린 샷과 관련된 추가 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지와 관련된 메타 데이터의 일부를 포함하고; 그리고
디코딩된 식별자에 응답하여 이미지와 관련된 컨텐츠 아이템의 전달을 추적하는 워터 마킹 시스템.
A water marking system comprising:
an encoder of a device, wherein the encoder of the device comprises:
receive images and metadata associated with them;
create a string from a subset of metadata associated with the image,
encode the watermark from the string, and
and embed a watermark into the image;
The device or the decoder of the second device,
From the client device, (i) a screen shot of an image displayed by the client device, wherein the image is watermarked with a string generated from a subset of metadata associated with the image and (ii) metadata associated with the screen shot of the image. receive a packet containing
extracting, from a packet containing a screenshot of the image displayed by the client device and metadata related to the screenshot of the image, a string and additional metadata related to the screenshot of the image;
decode an identifier from the string using a portion of additional metadata associated with the screenshot of the image, wherein the identifier includes a portion of metadata associated with the image; And
A watermarking system that tracks delivery of content items associated with images in response to decoded identifiers.
제22항에 있어서,
상기 이미지와 관련된 메타 데이터는 이미지의 타임 스탬프를 포함하고, 상기 추가 메타 데이터는 클라이언트 디바이스에 의한 이미지의 스크린 샷의 타임 스탬프를 포함하는 워터 마킹 시스템.
23. The method of claim 22,
The metadata associated with the image includes a timestamp of the image, and the additional metadata includes a timestamp of a screen shot of the image by a client device.
제22항 또는 제23항에 있어서,
상기 디바이스의 인코더는,
이미지와 관련된 메타 데이터의 사전 결정된 수의 최하위 비트로부터 문자열을 생성하도록 구성되는 워터 마킹 시스템.
24. The method of claim 22 or 23,
The encoder of the device,
A watermarking system configured to generate a string from a predetermined number of least significant bits of metadata associated with an image.
워터 마킹 방법으로서,
디바이스의 인코더에 의해, 이미지 및 이미지와 관련된 메타 데이터를 수신하는 단계;
인코더에 의해, 이미지와 관련된 메타 데이터의 서브 세트로부터 문자열을 생성하는 단계;
인코더에 의해, 문자열로부터 워터 마크를 인코딩하는 단계; 및
인코더에 의해, 이미지에 워터 마크를 임베딩하는 단계를 포함하고;
상기 디바이스 또는 제2 디바이스의 디코더는,
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지와 관련된 메타 데이터의 서브 세트로부터 생성된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷을 수신하고,
클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷 및 이미지의 스크린 샷과 관련된 메타 데이터를 포함하는 패킷으로부터, 문자열 및 이미지의 스크린 샷과 관련된 추가 메타 데이터를 추출하고,
이미지의 스크린 샷과 관련된 추가 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지지와 관련된 메타 데이터의 일부를 포함하고; 그리고
디코딩된 식별자에 응답하여 이미지와 관련된 컨텐츠 아이템의 전달을 추적하는 워터 마킹 방법.
A watermarking method comprising:
receiving, by an encoder of the device, an image and metadata associated with the image;
generating, by the encoder, a string from a subset of metadata associated with the image;
encoding, by the encoder, the watermark from the character string; and
embedding, by the encoder, a watermark in the image;
The device or the decoder of the second device,
From the client device, (i) a screen shot of an image displayed by the client device, wherein the image is watermarked with a string generated from a subset of metadata associated with the image and (ii) metadata associated with the screen shot of the image. receive a packet containing
extracting, from a packet containing a screenshot of the image displayed by the client device and metadata related to the screenshot of the image, a string and additional metadata related to the screenshot of the image;
decode an identifier from the string using a portion of the additional metadata associated with the screenshot of the image, the identifier including a portion of the metadata associated with the image sheet; And
A watermarking method for tracking delivery of content items associated with images in response to decoded identifiers.
제25항에 있어서,
상기 이미지와 관련된 메타 데이터는 이미지의 타임 스탬프를 포함하고, 상기 추가 메타 데이터는 클라이언트 디바이스에 의한 이미지의 스크린 샷의 타임 스탬프를 포함하는 워터 마킹 방법.
26. The method of claim 25,
The metadata associated with the image includes a timestamp of the image, and the additional metadata includes a timestamp of a screen shot of the image by a client device.
제25항 또는 제26항에 있어서,
이미지와 관련된 메타 데이터의 사전 결정된 수의 최하위 비트로부터 문자열을 생성하는 단계를 더 포함하는 워터 마킹 방법.
27. The method of claim 25 or 26,
and generating a string from a predetermined number of least significant bits of metadata associated with the image.
KR1020217016131A 2019-06-19 2020-06-18 Improved image watermarking KR102578027B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/US2019/037959 WO2020256718A1 (en) 2019-06-19 2019-06-19 Improved image watermarking
USPCT/US2019/037959 2019-06-19
PCT/US2020/038489 WO2020257493A1 (en) 2019-06-19 2020-06-18 Improved image watermarking

Publications (2)

Publication Number Publication Date
KR20210079362A true KR20210079362A (en) 2021-06-29
KR102578027B1 KR102578027B1 (en) 2023-09-13

Family

ID=67138214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016131A KR102578027B1 (en) 2019-06-19 2020-06-18 Improved image watermarking

Country Status (4)

Country Link
JP (1) JP7225403B2 (en)
KR (1) KR102578027B1 (en)
DE (1) DE112020000150T5 (en)
WO (2) WO2020256718A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113542767B (en) * 2021-07-14 2022-06-10 广东工业大学 Information hidden image processing model construction method, device, terminal and medium
CN116957893B (en) * 2023-06-26 2024-04-16 海易科技(北京)有限公司 Watermark generation method, watermark generation device, electronic device and computer readable medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003502947A (en) * 1999-06-18 2003-01-21 テレフォンアクチーボラゲット エル エム エリクソン(パブル) Time stamp estimation in real-time packet communication
KR20160075696A (en) * 2013-12-03 2016-06-29 엘지전자 주식회사 Apparatus for transmitting broadcast signals, apparatus for receiving broadcast signals, method for transmitting broadcast signals and method for receiving broadcast signals
KR20180017011A (en) * 2015-06-08 2018-02-20 퀄컴 인코포레이티드 Broadcast content redistribution and ad insertion

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014014252A1 (en) 2012-07-16 2014-01-23 Lg Electronics Inc. Method and apparatus for processing digital service signals
EP3661381B1 (en) 2017-08-04 2023-08-30 NIKE Innovate C.V. Article of footwear having a knitted component with a forefoot portion and a heel portion

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003502947A (en) * 1999-06-18 2003-01-21 テレフォンアクチーボラゲット エル エム エリクソン(パブル) Time stamp estimation in real-time packet communication
KR20160075696A (en) * 2013-12-03 2016-06-29 엘지전자 주식회사 Apparatus for transmitting broadcast signals, apparatus for receiving broadcast signals, method for transmitting broadcast signals and method for receiving broadcast signals
KR20180017011A (en) * 2015-06-08 2018-02-20 퀄컴 인코포레이티드 Broadcast content redistribution and ad insertion

Also Published As

Publication number Publication date
WO2020256718A1 (en) 2020-12-24
DE112020000150T5 (en) 2021-08-26
JP2022532814A (en) 2022-07-20
JP7225403B2 (en) 2023-02-20
CN113168666A (en) 2021-07-23
WO2020257493A1 (en) 2020-12-24
KR102578027B1 (en) 2023-09-13

Similar Documents

Publication Publication Date Title
Shi et al. Reversible data hiding: Advances in the past two decades
US8140848B2 (en) Digital watermark key generation
CN104125467B (en) Embedding and extracting methods for video steganography information
Zhu et al. Robust steganography by modifying sign of DCT coefficients
KR102578027B1 (en) Improved image watermarking
Yin et al. Robust adaptive steganography based on dither modulation and modification with re-compression
US20230111326A1 (en) Image watermarking
US20220092721A1 (en) Improved image watermarking
Alam et al. An investigation into encrypted message hiding through images using LSB
JP2007067629A (en) Information embedding apparatus, printed matter, and information embedding program
CN109785218B (en) QR code-based physical domain image steganography method and device
CN113168666B (en) Improved image watermarking
Hilgert et al. Syntactical carving of PNGs and automated generation of reproducible datasets
JPWO2017130333A1 (en) Image processing apparatus, image processing method, and program
CN116156072A (en) Steganographic image generation method, steganographic information extraction method and related devices
Duda et al. Image-like 2d barcodes using generalizations of the Kuznetsov–Tsybakov problem
Shinde et al. A novel video steganography technique
JP2013058965A (en) Digital data information embedding apparatus and embedded information detection apparatus
Rodrigues et al. Reversible image steganography using cyclic codes and dynamic cover pixel selection
Preetha et al. Adaptive image steganography based on Syndrome-Trellis codes
Hanzlik Steganography in Reed-Solomon Codes
Sur et al. An image steganographic algorithm based on spatial desynchronization
Kireev et al. Transform-Aware Content Adaptive Stegosystem for Social Networks
Kin-Cleaves et al. Reducing coding loss with irregular syndrome trellis codes
Campbell-Moore An error-resistant steganography algorithm for communicating secretly on Facebook

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right