KR102578027B1 - Improved image watermarking - Google Patents

Improved image watermarking Download PDF

Info

Publication number
KR102578027B1
KR102578027B1 KR1020217016131A KR20217016131A KR102578027B1 KR 102578027 B1 KR102578027 B1 KR 102578027B1 KR 1020217016131 A KR1020217016131 A KR 1020217016131A KR 20217016131 A KR20217016131 A KR 20217016131A KR 102578027 B1 KR102578027 B1 KR 102578027B1
Authority
KR
South Korea
Prior art keywords
image
screenshot
string
metadata
timestamp
Prior art date
Application number
KR1020217016131A
Other languages
Korean (ko)
Other versions
KR20210079362A (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

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

Abstract

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

이미지 워터 마킹은 시각적으로 지각할 수 없는 데이터 또는 메시지를 이미지에 임베딩(embed)하는 기술이며, 오리지널 이미지가 워터 마크 추출에 필요한지 여부에 따라 비-블라인트 또는 블라인드로 각각 분류될 수 있다. 블라인드 워터 마킹은 임베딩된 데이터가 미리 임베딩된 오리지널 이미지에 액세스하지 않고도 복구될 수 있다는 점에서 특히 유용하다.Image watermarking is a technology for embedding visually imperceptible data or messages into images, 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 because embedded data can be recovered without access to the original pre-embedded image.

그러나, 현재의 블라인드 이미지 워터 마킹의 구현은 지각성(예컨대, 워터 마킹 메시지 임베딩으로 인한 왜곡이 뷰어(viewer)에 의해 검출될 수 있는지 여부), 견고성(예컨대, 임베딩된 메시지를 디코딩하는 디코더의 성공률) 및 용량(예컨대, 데이터가 이미지에 임베딩될 수 있는 데이터의 양 또는 속도)에 문제가 있을 수 있다. 많은 구현에서, 이 중 하나를 증가시키면 다른 것에서 급격한 성능 저하가 발생할 수 있다.However, current implementations of blind image watermarking are limited in terms of perceptibility (e.g., whether distortions due to the watermarking message embedding can be detected by a viewer), robustness (e.g., the success rate of the decoder in decoding the embedded message), and ) and capacity (e.g., the amount or speed at which data can be embedded in an image) may be an issue. In many implementations, increasing one of these can cause a drastic 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 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 these systems achieve asymptotic lossless data compression by leveraging side chains (or side channels) of additional information that is only available at the decoder and not at the encoder, allowing the same message to be transmitted more robustly or with fewer bits. do.

일 양태에서, 본 개시는 개선된 워터 마킹을 위한 시스템에 관한 것이다. 이 시스템은 디바이스의 디코더를 포함한다. 디코더는 적어도 하나의 임베딩된 워터 마크를 포함하는 이미지의 캡처를 수신하고, 캡처의 타임 스탬프를 결정하고, 임베딩된 워터 마크로부터 이진 문자열을 디코딩하고, 캡처의 타임 스탬프의 일부를 사용하여, 이미지의 타임 스탬프를 포함하는 이진 문자열로부터 식별자를 디코딩하고; 디코딩된 식별자를 출력하도록 구성된다. In one aspect, the present disclosure relates to a system for improved watermarking. This system includes a decoder on the device. The decoder receives a capture of an image that includes 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 to create a time stamp of the image. Decode an identifier from a binary string containing a timestamp; It is configured to output a decoded identifier.

일부 구현에서, 캡처의 타임 스탬프는 캡처의 메타 데이터에서 식별된다. 일부 구현에서, 디코더는 캡처를 포함하는 패킷의 헤더로부터 캡처의 타임 스탬프를 추출하도록 구성된다. 일부 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 서브 세트를 포함한다. 추가 구현에서, 디코더는 캡처의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결함으로써 이진 문자열로부터 식별자를 디코딩하도록 구성된다. 다른 추가 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 큰 다수의 오류 정정 비트를 포함한다.In some implementations, the timestamp of the capture is identified in the capture's metadata. In some implementations, the decoder is configured to extract the timestamp of the capture from the header of the packet containing the capture. In some implementations, the binary string of the embedded watermark contains a subset of the image's timestamp. 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 that are greater than the difference between the length of the image's timestamp and the length of a subset of the image's timestamps.

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

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

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

일부 구현에서, 캡처의 타임 스탬프는 캡처의 메타 데이터에서 식별된다. 일부 구현에서, 방법은 디코더에 의해, 캡처를 포함하는 패킷의 헤더로부터 캡처의 타임 스탬프를 추출하는 단계를 포함한다. 일부 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 서브 세트를 포함한다. 추가 구현에서, 방법은 캡처의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 단계를 포함한다. 다른 추가 구현에서, 임베딩된 워터 마크의 이진 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 큰 다수의 오류 정정 비트를 포함한다. In some implementations, the timestamp of the capture is identified in the capture's metadata. 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 contains a subset of the image's timestamp. In a further implementation, the method includes associating 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 that are greater than the difference between the length of the image's timestamp and the length of a subset of the image's timestamps.

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

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

또 다른 양태에서, 본 개시는 워터 마킹 시스템에 관한 것이다. 시스템은 이미지 및 이미지와 관련된 메타 데이터를 수신하고; 이미지와 관련된 메타 데이터의 서브 세트로부터 이진 문자열을 생성하고; 이진 문자열로부터 워터 마크를 인코딩하고, 이미지에 워터 마크를 임베딩하도록 구성된 디바이스의 인코더를 포함한다. 디바이스 및 제2 디바이스의 디코더는 임베딩된 워터 마크에 인코딩된 이미지와 관련된 메타 데이터의 서브 세트 및 제3 디바이스에서 이미지의 디스플레이 캡처와 관련된 추가 메타 데이터로부터 이미지와 관련된 메타 데이터를 복구한다.In another aspect, the present disclosure relates to a watermarking system. The system receives images and metadata associated with the images; generate a binary string from a subset of metadata associated with the image; An encoder on the device configured to encode the watermark from the binary string and embed the watermark in the image. The device and the decoder on the second device recover metadata associated with the image from a subset of metadata associated with the image encoded in the embedded watermark and additional metadata associated with a display capture of the image on 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 display capture of the image on 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 on 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 the watermark from the binary string, by an encoder. The method also includes embedding a watermark in the image, by the encoder. The device or a decoder on the second device recovers metadata associated with the image from a subset of metadata associated with the image encoded in the embedded watermark and additional metadata associated with a display capture of the image on 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 display capture of the image on 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 that, when executed by a computing device, includes instructions that cause the computing device to perform any of the methods disclosed herein. The disclosure also provides a computer-readable medium containing instructions that, when executed by a 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는 일부 구현에 따른 이미지 워터 마킹을 위한 방법의 흐름도이다.
다양한 도면에서 유사한 참조 번호 및 지정은 유사한 요소를 나타낸다.
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.
Figure 1B is an example of a data format for image watermarking according to one implementation.
Figure 1C is an example of a data format for image watermarking according to another implementation. class
Figure 2A is a block diagram of a system for image watermarking according to one implementation.
Figure 2b is a block diagram of a system for image watermarking according to another implementation.
Figure 3 is a block diagram of a system for image watermarking according to some implementations.
4 is a flow diagram of a method for image watermarking according to some implementations.
Like reference numbers and designations in the various drawings identify similar elements.

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

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

임의의 종류의 데이터가 워터 마크(102)내에 인코딩될 수 있다. 도 1b를 간략하게 참조하면, 일 구현에 따른 이미지 워터 마킹을 위한 데이터 포맷(150)이 도시되어 있다. 도시된 데이터 포맷은 64 비트 타임 스탬프(152)(예를 들어, 에포크(epoch) 시간에 기초함), IP 주소(154) 및 프로세스 식별자(156)를 갖는 128 비트를 포함한다. 데이터 포맷(150)의 데이터는 본 명세서에서 쿼리 ID로 지칭될 수 있다. 많은 구현은 또한 워터 마크의 디코딩을 개선하기 위해 오류 정정 비트(미도시)를 포함한다. 예를 들어, 이 코드는 마크 내에 포함된 리드-솔로몬 오류 정정 코드를 사용하여 QR 코드로 인코딩될 수 있다.Any type of data may be encoded within 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 time stamp 152 (e.g., based on epoch time), IP address 154, and 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 can be encoded into a QR code using a Reed-Solomon error correction code embedded 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 IP address of the content server 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 can capture a screenshot of the image and provide the screenshot to the content server or monitoring server. For example, a monitoring process on a client device may not have access to the image itself (e.g., the image may be stored in a memory location on the client device that the monitoring process cannot access), but (e.g., the frame buffer You can capture a screenshot of an image (by reading the image data from or 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 to the original image. This allows the system to automatically identify distortions or image damage caused by the rendering or encoding process for the image, as well as identifying different aspects of the image. In implementations where the content server and the monitoring server are different, this may, among other things, 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, 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 is measured between perceptibility, sometimes referred to as "D" (e.g. whether the distortion introduced by embedding the watermarking message can be detected 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 (e.g., the amount or rate at which data can be embedded in an image), sometimes referred to as "R". In many implementations, it may be desirable to have low perceptivity, high robustness, and high capacity. However, in many implementations, improving one of these can lead to drastic performance degradation in the other implementation. For example, to add more data to a message while maintaining robustness, the size of the watermark must be enlarged so that it can be better perceived. Similarly, mark size can be maintained while adding data by removing error correction bits, but this naturally makes the mark more difficult to decode and more susceptible to corruption.

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

디코더(204)는 워터 마크 이미지(S')로부터 워터 마크를 검출하고 디코딩하여 오리지널 메시지(X)(208')을 복구하고, 필요에 따라 오류 정정을 적용할 수 있다(그리고 잠재적으로 이미지에서 다수의 워터 마크를 캡처하고 각각의 디코딩된 메시지를 비교하여 단일 워터 마크에서 오류 또는 왜곡을 배제함).The decoder 204 can 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 of watermarks and compares each decoded message to rule out errors or distortions in a single watermark.

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

이러한 시스템은 비교적 성공적이지만 오류율이 높다. 임베딩된 마크를 인코딩된 이미지의 스크린 샷으로부터 디코딩하는 실험에서, 디코딩 성공률은 44.03%였다.Although these systems are relatively successful, they have high error rates. In an experiment decoding embedded marks from screenshots of encoded images, 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 (e.g. 128 bits), the factors that affect the decoding success rate are the distortion introduced to the image by the encoder (D e ) and the Distortion between the watermarked images at the output (D c ). In general, the robustness of image watermarking measured from the decoding success rate is controlled by D e , and for the same D c , if D e increases, the decoding success rate can be higher. However, in most cases, the watermark should not be visually perceptible in the watermarked image. This requirement imposes an upper bound on D e . This constraint on D e essentially means an upper bound on the decoding success rate for any given channel. In some extreme cases where 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 inevitably results in a performance loss in at least one of the other quantities. For example, to improve E 0 , D 0 must be sacrificed while maintaining R 0 or R 0 must be reduced while maintaining D 0 . However, in many applications, both D 0 and R 0 currently have strict constraints: D 0 must be upper bounded to avoid negatively impacting the user experience, and R 0 must be upper bounded so that the watermarking message is useful for tracking purposes. It must be specified as the lower limit. In this context, current implementations of watermarking leave little room for improving 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 enable higher message rates at the same distortion level and decoding success rate. Implementations of these systems achieve asymptotic lossless data compression by exploiting an additional chain of additional information that is only available at the decoder and not at the encoder, allowing the same message to be transmitted with fewer bits.

왜곡 제약은 애플리케이션에 의해 주어지기 때문에, 본 명세서에서 논의되는 시스템은 디코딩 성공률과 메시지 속도 사이의 절충(트레이드 오프)에 초점을 맞춘다. 특히, 시스템은 워터 마킹 메시지의 유용성을 손상시키지 않고 위에서 언급한 메시지 속도의 하한을 회피한다. 결과적으로, 이를 통해 이전 구현에서는 불가능했던 견고성과 용량간의 적절한 절충을 찾는데 더 큰 유연성을 제공한다. 특히, 디코더에서만 이용 가능한 부가 정보가 점근 무손실 압축을 달성하는데 사용될 수 있다. Because distortion constraints are given 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 above-mentioned lower limit on message rate without compromising the usefulness of watermarking messages. As a result, this provides greater flexibility in finding the right compromise between robustness and capacity that was not possible with 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)를 사용한다. 이것은 인코더와 디코더 사이의 별도의 통신에 대한 요구를 제거하며, 컨텐츠 서버와 모니터링 서버가 동일한 디바이스가 아닌(동일한 엔티티에 의해 제어되지 않을 수 있는) 구현에서 특히 유리할 수 있다.Figure 2B is a block diagram of a system 200' for image watermarking according to one such implementation. As discussed in relation to FIG. 2A , encoder 202 encodes image 206 with message 208 to generate watermarked image 210 that can be provided to decoder 204 over 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 the same device (and 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 사이의 상관 관계가 강할수록 메시지 속도가 낮아질 수 있다. Between Figures 2a and 2b, the main difference is the introduction of side information (Y) in the decoder of Figure 2b. From the classical source coding theorem, the minimum rate required for lossless recovery of message (X) in the decoder in Figure 2a is given by the marginal entropy of X (X). Correspondingly, from the SlepianWolf coding theorem, the minimum speed required for lossless recovery of message (X) in the decoder in Figure 2b is given by the conditional entropy of Since H(X|Y) ≤ H(X) for any ( 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) at the decoder to improve robustness. In some such implementations, the encoder in 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 to QR codeword.

3. QR 코드워드의 적어도 하나의 사본을 포함하는 워터 마킹 이미지를 생성한다.3. Create a watermarked image containing 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 in Figure 2b decodes the watermarking message (X) from a 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)은 더 나은 성능을 위해 단일 단계로 결합될 수 있다는 점에 유의한다. Note that in many implementations, one or more of the above steps (e.g., steps 6-7) can be combined into a single step for better performance.

QR 코드워드는 2차원(2D) 레이아웃에서 검출용 패턴 및 오류 정정 코드를 포함한다는 점에 유의한다. 일부 실시예에서, 워터 마킹 이미지를 생성할 때 더 나은 성능/유연성을 위해 QR 코드워드 대신에 1차원(1D) 검출용 패턴과 함께 1차원 오류 정정 코드 워드가 사용될 수 있다. 1차원 오류 정정 코드의 예로는 리드-솔로몬 코드, 터보 코드, 저밀도 패리티 검사(LDPC) 코드 및 기타 일반 선형 블록 코드가 있다.Note that the QR codeword includes 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 may be used in conjunction with a pattern for one-dimensional (1D) detection instead of a QR code word for better performance/flexibility when generating watermarking images. 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 encoding process above, to determine K, no knowledge of the realization of Y (i.e. the actual side information sequence) is required, but H(X|Y) must be known in advance. Examples of side information (Y) with prior knowledge of H( and information about the Site, including platform information).

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

위의 도 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), IP address (32 bits), and process id (32 bits) (not including any additional error coding bits). do. In a typical application, the screenshot timestamp (T s ) is strongly correlated with the timestamp of the query ID (T q ) such that T q ≤T s , which has a high probability of being negative such that 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 접미사이다. From this perspective, instead of using 64 bits in this implementation for the timestamp, the encoder in 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 a ceiling function that rounds its argument to the nearest integer. As a result, in one embodiment, a binning technique is used to code Tq , where each bin contains candidate timestamps at least Δ microseconds apart, and the indices of the bins are 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 method is based on the fact that the most significant bits are the same for two timestamps that are close to each other. For example, the timestamp for epoch time 2019-01-01 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 two timestamps are, the more the most significant bits are the same. In a typical implementation, the image timestamp and the screenshot timestamp may be much closer together, typically a day, a week, or a month, so they have more of 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 approximately log2(Δ) of the most significant bits from T q using K = (ceil(64-log2(Δ)) + 64) bits, thereby determining the query ID. can be coded. Figure 1C is an example 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 Figure 1B, but the timestamp is reduced to some of the least significant bit 158, and additional data 160 reduces the size of the data. It can be added without prompting.

디코더 측에서는, 수신된 스크린 샷으로부터 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 screenshot to obtain a binary string of K bits, the timestamp LSB 158 can identify the index of the bin containing the exact timestamp (T q ). . To recover T q , the decoder can obtain T' q by combining the first log2(Δ) bit of T s with the (64-log2(Δ))-bit bin index. If log2(Δ) is not an integer, the smallest integer greater than log2(Δ), i.e. ceil(log2(Δ))), is used instead. In many implementations, with high probability, T s -T q ≤Δ, so in the decoder, with high probability, T' q =T q . In the rare case that T s -T q >Δ and T s -T q ≤mΔ (where m is a positive integer), T q must belong to the following list of size 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 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 (e.g. 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.

비트 수를 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 can use higher Error correction code (ECC) level or smaller QR codes can be used.

향상된 메시지 속도Improved message speed

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

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

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

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

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

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

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

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

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

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

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

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

도 3은 일부 구현에 따른 이미지 워터 마킹을 위한 시스템의 블록도이다. 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨터, 스마트 폰, 임베디드 컴퓨터, 스마트 카, 또는 임의의 다른 유형 및 형태의 컴퓨팅 디바이스를 포함할 수 있는 클라이언트 디바이스(300)는 네트워크(312)를 통해 하나 이상의 서버(314)와 통신할 수 있다.Figure 3 is a block diagram of a system for image watermarking according to 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 to one or more devices via network 312. 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, 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 the processor, cause the processor to perform one or more operations described herein. Processor 302 may include a microprocessor, ASIC, 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, an electronic, optical, magnetic, or any other storage device capable of providing program instructions to the processor. The memory device may include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM, RAM, EEPROM, EPROM, flash memory, optical media, or other suitable memory from which the processor can read instructions. Instructions may contain code in any 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) 네트워크, 위성 네트워크, 또는 이들 또는 기타 네트워크의 조합을 포함할 수 있으며, 하나 이상의 추가 디바이스(예를 들어, 라우터, 스위치, 방화벽, 허브, 네트워크 가속기, 캐시 등)를 포함할 수 있다.Client device 300 may include one or more network interfaces 304. Network interface 304 may be any type and form of interface, including 10 Base T, 100 Base T, or 1000 Base T (“Gigabit”) Ethernet; Various 802.11 wireless 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 a network. In many implementations, client device 300 may include a plurality of network interfaces 304 of different types that allow connectivity to various types of networks 312 . Accordingly, network 312 includes 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 (e.g., router, switch, firewall, hub, network accelerator, cache, etc.).

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

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

메모리(306)는 또한 애플리케이션(308)의 일부(예를 들어, 브라우저의 플러그인 또는 확장) 및/또는 디바이스의 운영 체제의 일부일 수 있는 캡처 엔진(310)을 포함할 수 있다. 캡처 엔진(310)은 워터 마크를 포함하는 렌더링된 이미지의 스크린 샷을 캡처하기 위한 애플리케이션, 서버, 서비스, 데몬, 루틴 또는 다른 실행 가능한 로직을 포함할 수 있다. 캡처 엔진(310)은 모든 이미지 또는 일부 이미지의 스크린 샷을 캡처하도록 구성될 수 있다. 예를 들어, 일부 구현에서, 캡처 엔진(310)은 이미지의 메타 데이터에 응답하거나 애플리케이션(308)에 의해 실행되는 스크립트에 응답하여(예를 들어, 브라우저에 의해 디스플레이되는웹 페이지에 임베딩된 스크립트에 응답하여) 이미지의 스크린 샷을 찍도록 트리거될 수 있다. 캡처 엔진(310)은 일부 구현에서 단지 이미지의 스크린 샷을 찍거나 전체 디스플레이 또는 화면의 스크린 샷을 찍을 수 있다. 추가 구현에서, 캡처 엔진은 캡처된 이미지를 원하는 이미지로 잘라낼 수 있다. 이것은 예를 들어 디스플레이내의 이미지 디스플레이 좌표에 기초하여 수행될 수 있다. 캡처 엔진(310)은 전술한 바와 같이 캡처 시간(예를 들어, 에포크 시간)과 같은 메타 데이터를 스크린 샷에 추가할 수 있다. 캡처 엔진(310)은 또한 네트워크 인터페이스(304)를 통해 스크린 샷을 모니터링 서버로 전송할 수 있다. 일부 구현에서, 캡처 엔진(310)은 웹 페이지에 임베딩되고 웹 페이지를 렌더링하는 동안 애플리케이션(308)에 의해 실행되는 스크립트를 포함할 수 있으며, 이러한 웹 페이지는 또한 캡쳐 엔진이 스크린 샷을 캡쳐할 수 있도록 임베딩된 이미지 또는 이미지 링크를 포함할 수 있다.Memory 306 may also include a capture engine 310, which may be part of an application 308 (e.g., a plug-in or extension of a browser) and/or a part of the device's operating system. Capture engine 310 may include an application, server, service, daemon, routine, or other executable logic for capturing screen shots of rendered images including a watermark. Capture engine 310 may be configured to capture screen shots of all or some images. For example, in some implementations, capture engine 310 may respond to metadata of an image or in response to a script executed by application 308 (e.g., in a script embedded in a web page displayed by a browser). in response) may be triggered to take a screenshot of the image. Capture engine 310 may, in some implementations, take a screenshot of just an image or a screenshot of the entire display or screen. In a further implementation, the capture engine may crop the captured image into a desired image. This can be done for example based on image display coordinates within the display. Capture engine 310 may add metadata, such as capture time (e.g., epoch time) to the screen shot, as described above. Capture engine 310 may also transmit screen shots to a monitoring server via network interface 304. In some implementations, capture engine 310 may include a script that is embedded in a web page and executed by application 308 while rendering the web page, which may also enable the capture engine to capture screenshots. You can include embedded images or image links 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 a monitoring server, which may be the same or a different device. Server(s) 314 may include one or more processors 302, network interface 304, and memory devices 306. Content server 314 may include one or more content items 316 in storage, such as images to be watermarked as well as other content (e.g., web pages, other media, etc.). Content server 314 may also include encoder 202, as discussed above with respect to FIGS. 2A and 2B. Encoder 202 may include software, hardware, or a combination of hardware and software. For example, 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. Decoder 204 may include software, hardware, or a combination of hardware and software. For example, decoder 204 may include an ASIC, FPGA, or other dedicated hardware for identifying and decoding watermarks from images. As discussed above, decoder 204 may receive additional information helpful in decoding the watermark, such as the screen shot time from metadata of the screen shot received from capture engine 310.

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

단계(406)에서, 컨텐츠 서버(314)는 타임 스탬프, 서버의 식별자 또는 서버의 IP 주소, 및/또는 컨텐츠 아이템을 선택하는데 사용되는 프로세스의 프로세스 식별자를 포함하여 하나 이상의 식별자를 포함할 수 있는 워터 마크 식별자를 생성할 수 있다. 일부 구현에서, 워터 마크 식별자는 컨텐츠 아이템의 식별자와 같은 추가 정보를 포함할 수 있다. 단계(408)에서, 컨텐츠 아이템은 워터 마크로 인코딩될 수 있다. 위에서 논의된 바와 같이, 컨텐츠 아이템을 인코딩하는 것은 인코딩된 워터 마크의 변경된 비트(예를 들어, QR 코드 또는 유사 코드)를 나타내는 패턴 또는 디폴트값에서 수정된 픽셀들을 갖는 알파 채널로 오버레이를 생성하는 것을 포함할 수 있다. 워터 마크는 이미지에 걸쳐 사전 결정된 인터벌 또는 간격으로 반복될 수 있다. 그런 다음 오버레이는 이미지와 블렌딩되거나 결합되어 인코딩된 컨텐츠 아이템을 생성할 수 있다. 단계(410)에서, 인코딩된 컨텐츠 아이템은 컨텐츠 서버에 의해 클라이언트 디바이스로 전송될 수 있다. At step 406, the content server 314 generates a water tag that may include one or more identifiers, including a timestamp, an identifier of the server or the IP address of the server, and/or a process identifier of the process used to select the content item. A mark identifier can be created. In some implementations, the watermark identifier may include additional information, such as the identifier of the 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 the default or a pattern representing the changed bits of the encoded watermark (e.g., a QR code or pseudocode). It can be included. The watermark may repeat at predetermined intervals or intervals throughout the image. The overlay can then be blended or combined with the image to create an encoded content item. At 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 generating the watermark identifier and encoding the watermark after receiving the content item request, in some implementations, the content item may be pre-encoded (e.g., prior to step 402), The content server may select pre-encoded content items 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 (e.g., 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 into 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 could be used, significantly reducing the data required.

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

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

단계(420)에서, 디코더는 스크린 샷을 스캔하여 임의의 식별된 워터 마크를 추출할 수 있다. 워터 마크가 스크린 샷에 여러 번 나타나는 일부 구현에서, 디코더는 식별된 워터 마크들을 비교하고 왜곡이 가장 적은 워터 마크(예를 들어, 이미지에서 가장 많은 다른 워터 마크의 매칭하는 워터 마크, 식별된 다른 워터 마크들의 평균인 워터 마크 등)를 선택하거나 생성할 수 있다. 단계(422)에서, 디코더는 워터 마크를 문자열로 변환할 수 있다.At step 420, the decoder may scan the screen shot to extract any identified watermarks. In some implementations, where a watermark appears multiple times in a screenshot, the decoder compares the identified watermarks and determines which watermark has the least distortion (e.g., a watermark that matches most other identified watermarks in the image). You can select or create a watermark that is the average of the marks, etc. At 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 at step 418 (e.g., a predetermined number of least significant bits) and use the generated timestamp (e.g. For example, the decoding of a string can be tested (by applying an error correction algorithm to the decoded string with a generated timestamp). 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 (e.g., identifying the content server via IP address and process identifier, Compare screenshots to original content items to detect rendering distortions or corruption, track delivery of content items, etc.)

문자열이 올바르게 디코딩되지 않는 경우, 디코더는 비닝 방식으로부터의 Δ값에 따라 상기 생성된 타임 스탬프를 진행시킬 수 있고, 단계(424)에서 디코딩을 재테스트할 수 있다. 이것은 디코딩이 성공하거나, 모든 빈 인덱스 값이 테스트될 때까지 반복적으로 반복될 수 있다(워터 마크가 손상되었거나 부적절하게 추출되었거나 전술한 사용 시간 창 이전의 컨텐츠 아이템이 활용되었음을 암시). 모든 빈 인덱스 값이 테스트되고 디코딩이 실패한 경우, 단계(428)에서 디코더는 시스템의 관리자 또는 사용자에게 오류를 보고할 수 있다. If the string is not decoded correctly, the decoder can advance the generated timestamp according to the Δ value from the binning scheme and retest the decoding in step 424. This may be repeated iteratively until decoding is successful, or until all empty index values are tested (suggesting that the watermark has been corrupted, improperly extracted, or a content item prior to the aforementioned usage time window has been utilized). If all empty index values are tested and decoding fails, the decoder may report the error at step 428 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 these systems can achieve asymptotic lossless data compression by exploiting an additional chain of additional information that is only available at the decoder and not at the encoder, allowing the same message to be transmitted with fewer bits.

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

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

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

컴퓨터 프로그램의 실행에 적합한 프로세서들은 예를 들어 범용 및 특수 목적의 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터에 대한 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 모두로부터 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령에 따라 동작을 수행하기 위한 프로세서 및 명령과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광 자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나, 컴퓨터에는 이러한 디바이스가 필요하지 않다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화기, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어, USB 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 예로서 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스); 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크); 광 자기 디스크; 및 CD-ROM과 DVD-ROM 디스크를 포함하는 모든 형태의 비-휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.Processors suitable for executing computer programs include, for example, general-purpose and special-purpose microprocessors, and any one or more processors for any type of digital computer. Typically, a processor receives instructions and data from read-only memory, random access memory, or both. The essential elements of a computer are a processor to perform operations according to instructions and one or more memory devices to store instructions and data. Typically, a computer also includes, or is operably coupled to, one or more mass storage devices for storing data, such as magnetic, magneto-optical disks, or optical disks, transmitting data, or both. However, computers do not need these devices. Additionally, the computer may be embedded in other devices, such as mobile phones, PDAs, mobile audio or video players, gaming consoles, GPS receivers, or portable storage devices (eg, USB flash drives). Devices suitable for storing computer program instructions and data include, for example, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices); Magnetic disks (e.g., 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. Processors and memories can be supplemented or integrated by special-purpose logic circuits.

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

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

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

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

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

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

Claims (27)

워터 마킹 시스템을 위한 디코더로서, 상기 디코더는:
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지와 연관된 이미지 메타 데이터와 관련된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 스크린 샷 메타 데이터를 포함하는 패킷을 수신하고, 상기 스크린 샷 메타 데이터는 이미지의 스크린 샷의 타임 스탬프를 포함하고, 상기 이미지 메타 데이터는 이미지의 타임 스탬프를 포함하고, 그리고 상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하며,
패킷으로부터, 스크린 샷 메타 데이터 및 문자열을 추출하고,
스크린 샷 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지 메타 데이터를 포함하고; 그리고
디코딩된 식별자에 응답하는 이미지와 관련된 컨텐츠 아이템의 전달을 추적하도록 구성되고,
상기 디코더는 이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결(concatenate)함으로써 문자열로부터 식별자를 디코딩하도록 구성되는 워터 마킹 시스템을 위한 디코더.
A decoder for a water marking system, said decoder comprising:
From a client device, (i) a screenshot of an image displayed by the client device, wherein the image is watermarked with a string associated with the image metadata associated with the image, and (ii) includes screenshot metadata associated with the screenshot of the image. Receive a packet wherein the screenshot metadata contains a timestamp of the screenshot of the image, the image metadata contains the timestamp of the image, and the string contains a subset of the timestamp of the image, and ,
Extract screenshot metadata and strings from packets,
Using part of the screenshot metadata, decode an identifier from a string, wherein the identifier includes image metadata; and
configured to track delivery of a content item associated with an image that is responsive to the decoded identifier;
A decoder for a watermarking system, wherein the decoder is configured to decode an identifier from a string by concatenating a portion of a timestamp of a screenshot of the image with a subset of the timestamp of the image.
삭제delete 제1항에 있어서,
상기 디코더는,
이미지의 스크린 샷 및 스크린 샷 메타 데이터를 포함하는 패킷의 헤더로부터 이미지의 스크린 샷의 타임 스탬프를 추출하도록 구성되는 워터 마킹 시스템을 위한 디코더.
According to paragraph 1,
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 containing the screenshot of the image and screenshot metadata.
삭제delete 삭제delete 제1항에 있어서,
상기 문자열은,
이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 더 큰 다수의 오류 정정 비트를 포함하는 워터 마킹 시스템을 위한 디코더.
According to paragraph 1,
The string is,
A decoder for a watermarking system that includes a number of error correction bits greater than the difference between the length of the timestamp of the image and the length of a subset of the timestamps of the image.
제1항에 있어서,
상기 문자열은 오류 정정 비트를 포함하고,
상기 디코더는 스크린 샷 메타 데이터의 일부를 상기 식별자를 성공적으로 디코딩할 때까지 사전 결정된 오프셋의 배수와 반복적으로 결합함으로써 문자열로부터 식별자를 디코딩하도록 구성되고, 상기 식별자를 성공적으로 디코딩하는 것은 오류 정정 비트에 따라 문자열을 올바르게 디코딩하는 것을 포함하는 워터 마킹 시스템을 위한 디코더.
According to paragraph 1,
The string includes error correction bits,
The decoder is configured to decode an identifier from a string by iteratively combining a portion of the screenshot metadata with a multiple of a predetermined offset until successfully decoding the identifier, wherein successfully decoding the identifier results in an error correction bit. A decoder for a watermarking system that includes correctly decoding the string according to the decoder.
제1항에 있어서,
상기 디코더는,
식별자를 성공적으로 디코딩할 때까지 스크린 샷 메타 데이터의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합함으로써 문자열로부터 식별자를 디코딩하도록 구성되는 워터 마킹 시스템을 위한 디코더.
According to paragraph 1,
The decoder is,
A decoder for a watermarking system configured to decode an identifier from a string by repeatedly combining portions of the screenshot metadata with multiples of a predetermined offset until the identifier is successfully decoded.
제1항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 주소를 포함하는 워터 마킹 시스템을 위한 디코더.
According to paragraph 1,
The string is,
A decoder for a watermarking system that contains the address of the content server that created the watermarked image as a string.
제9항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 프로세스 식별자를 포함하는 워터 마킹 시스템을 위한 디코더.
According to clause 9,
The string is,
A decoder for a watermarking system that contains the process identifier of the content server that created the watermarked image as a string.
워터 마킹 방법으로서,
클라이언트 디바이스로부터 디바이스의 디코더에 의해, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지와 연관된 이미지 메타 데이터와 관련된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 스크린 샷 메타 데이터를 포함하는 패킷을 수신하는 단계와, 상기 스크린 샷 메타 데이터는 이미지의 스크린 샷의 타임 스탬프를 포함하고, 상기 이미지 메타 데이터는 이미지의 타임 스탬프를 포함하고, 그리고 상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하며;
디코더에 의해 패킷으로부터, 스크린 샷 메타 데이터 및 문자열을 추출하는 단계와;
디코더에 의해 스크린 샷 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하는 단계와, 상기 식별자는 이미지 메타 데이터를 포함하고; 그리고
디코더에 의해, 디코딩된 식별자에 응답하는 이미지와 관련된 컨텐츠 아이템의 전달을 추적하는 단계를 포함하고,
상기 문자열로부터 식별자를 디코딩하는 단계는 이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 단계를 더 포함하는 워터 마킹 방법.
As a watermarking method,
From a client device, by a decoder on the device, (i) a screenshot of an image displayed by the client device—the image is watermarked with a string associated with image metadata associated with the image; and (ii) a screen shot associated with the image. Receiving a packet containing shot metadata, wherein the screenshot metadata includes a timestamp of a screenshot of an image, the image metadata includes a timestamp of the image, and the string is a time stamp of the image. Contains a subset of stamps;
extracting screenshot metadata and strings from the packet by a decoder;
decoding, by a decoder, an identifier from the string using part of the screenshot metadata, the identifier comprising image metadata; and
tracking, by the decoder, delivery of the content item associated with the image responsive to the decoded identifier;
Decoding the identifier from the string further comprises concatenating a portion of a timestamp of a screenshot of the image with a subset of the timestamp of the image.
삭제delete 제11항에 있어서,
디코더에 의해, 이미지의 스크린 샷을 포함하는 패킷의 헤더로부터 이미지의 스크린 샷의 타임 스탬프를 추출하는 단계를 더 포함하는 워터 마킹 방법.
According to clause 11,
A watermarking method further comprising extracting, by a decoder, a timestamp of a screenshot of an image from a header of a packet containing the screenshot of the image.
삭제delete 삭제delete 제11항에 있어서,
상기 문자열은 이미지의 타임 스탬프의 길이와 이미지의 타임 스탬프의 서브 세트의 길이 사이의 차이보다 더 큰 다수의 오류 정정 비트를 포함하는 워터 마킹 방법.
According to clause 11,
wherein the string contains a number of error correction bits greater than the difference between the length of the timestamp of the image and the length of a subset of the timestamps of the image.
제11항에 있어서,
상기 문자열은 오류 정정 비트를 포함하고,
상기 문자열로부터 식별자를 디코딩하는 단계는,
스크린 샷 메타 데이터의 일부를 상기 식별자를 성공적으로 디코딩할 때까지 사전 결정된 오프셋의 배수와 반복적으로 결합하는 단계를 더 포함하고, 상기 식별자를 성공적으로 디코딩하는 단계는 류 정정 비트에 따라 문자열을 올바르게 디코딩하는 단계를 포함하는 워터 마킹 방법.
According to clause 11,
The string includes error correction bits,
The step of decoding the identifier from the string is,
further comprising repeatedly combining a portion of the screenshot metadata with multiples of a predetermined offset until successfully decoding the identifier, wherein successfully decoding the identifier includes correctly decoding the string according to the flow correction bits. A watermarking method including the steps of:
제11항에 있어서,
상기 문자열로부터 식별자를 디코딩하는 단계는,
식별자를 성공적으로 디코딩할 때까지 스크린 샷 메타 데이터의 일부를 사전 결정된 오프셋의 배수와 반복적으로 결합하는 단계를 더 포함하는 워터 마킹 방법.
According to clause 11,
The step of decoding the identifier from the string is,
A watermarking method further comprising iteratively combining portions of the screenshot metadata with multiples of a predetermined offset until the identifier is successfully decoded.
제11항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 주소를 포함하는 워터 마킹 방법.
According to clause 11,
The string is,
A watermarking method that includes the address of the content server that created the watermarked image as a string.
제19항에 있어서,
상기 문자열은,
문자열로 워터 마킹된 이미지를 생성한 컨텐츠 서버의 프로세스 식별자를 포함하는 워터 마킹 방법.
According to clause 19,
The string is,
A watermarking method that includes the process identifier of the content server that created the watermarked image as a string.
컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스로 하여금 제11항, 제13항 및 제16항 내지 제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, 13, and 16-20. 워터 마킹 시스템으로서,
디바이스의 인코더를 포함고, 상기 디바이스의 인코더는,
이미지 및 이미지와 관련된 이미지 메타 데이터를 수신하고, 상기 이미지 메타 데이터는 이미지의 타임 스탬프를 포함하고,
이미지 메타 데이터의 서브 세트로부터 문자열을 생성하고,
문자열로부터 워터 마크를 인코딩하고, 상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하고, 그리고
워터 마크를 이미지에 임베딩하도록 구성되고;
상기 디바이스 또는 제2 디바이스의 디코더는,
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지 메타 데이터의 서브 세트로부터 생성된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 스크린 샷 메타 데이터를 포함하는 패킷을 수신하고,
클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷 및 상기 스크린 샷 메타 데이터를 포함하는 패킷으로부터, 문자열 및 추가 스크린 샷 메타 데이터를 추출하고, 상기 추가 스크린 샷 메타 데이터는 클라이언트 디바이스에 의한 이미지 스크린 샷의 타임 스탬프를 포함하고,
추가 스크린 샷 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지 메타 데이터의 일부를 포함하고; 그리고
디코딩된 식별자에 응답하는 이미지와 관련된 컨텐츠 아이템의 전달을 추적하고,
상기 문자열로부터 식별자를 디코딩하는 것은 이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 것을 더 포함하는 워터 마킹 시스템.
As a watermarking system,
Includes an encoder of a device, wherein the encoder of the device includes:
Receive an image and image metadata associated with the image, the image metadata including a timestamp of the image, and
generate a string from a subset of image metadata,
Encode a watermark from a string, where the string contains a subset of the timestamp of the image, and
configured to embed a watermark into the image;
The decoder of the device or the second device,
From a client device, (i) a screenshot of an image displayed by the client device—the image is watermarked with a string generated from a subset of the image metadata; and (ii) screenshot metadata associated with the screenshot of the image. receive a packet containing,
From a packet containing a screenshot of an image displayed by a client device and said screenshot metadata, a string and additional screenshot metadata are extracted, wherein said additional screenshot metadata is a timestamp of a screenshot of the image by the client device. Including,
Decode an identifier from a string, using part of the additional screenshot metadata, wherein the identifier includes part of the image metadata; and
Track delivery of content items associated with images that respond to decoded identifiers,
Decoding the identifier from the string further comprises concatenating a portion of a timestamp of a screenshot of the image with a subset of the timestamp of the image.
삭제delete 제22항에 있어서,
상기 디바이스의 인코더는,
이미지 메타 데이터의 사전 결정된 수의 최하위 비트로부터 문자열을 생성하도록 구성되는 워터 마킹 시스템.
According to clause 22,
The encoder of the device is,
A watermarking system configured to generate a string from a predetermined number of least significant bits of image metadata.
워터 마킹 방법으로서,
디바이스의 인코더에 의해, 이미지 및 이미지와 관련된 이미지 메타 데이터를 수신하는 단계와, 상기 이미지 메타 데이터는 이미지의 타임 스탬프를 포함하고;
인코더에 의해, 이미지 메타 데이터의 서브 세트로부터 문자열을 생성하는 단계와, 상기 문자열은 이미지의 타임 스탬프의 서브 세트를 포함하고;
인코더에 의해, 문자열로부터 워터 마크를 인코딩하는 단계와; 그리고
인코더에 의해, 이미지에 워터 마크를 임베딩하는 단계를 포함하고;
상기 디바이스 또는 제2 디바이스의 디코더는,
클라이언트 디바이스로부터, (i) 클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷-상기 이미지는 이미지 메타 데이터의 서브 세트로부터 생성된 문자열로 워터 마킹되고 및 (ii) 이미지의 스크린 샷과 관련된 스크린 샷 메타 데이터를 포함하는 패킷을 수신하고,
클라이언트 디바이스에 의해 디스플레이된 이미지의 스크린 샷 및 상기 스크린 샷 메타 데이터를 포함하는 패킷으로부터, 문자열 및 추가 스크린 샷 메타 데이터를 추출하고, 상기 추가 스크린 샷 메타 데이터는 클라이언트 디바이스에 의한 이미지 스크린 샷의 타임 스탬프를 포함하고,
추가 스크린 샷 메타 데이터의 일부를 사용하여, 문자열로부터 식별자를 디코딩하고, 상기 식별자는 이미지 메타 데이터의 일부를 포함하고; 그리고
디코딩된 식별자에 응답하는 이미지와 관련된 컨텐츠 아이템의 전달을 추적하고,
상기 문자열로부터 식별자를 디코딩하는 것은 이미지의 스크린 샷의 타임 스탬프의 일부를 이미지의 타임 스탬프의 서브 세트와 연결하는 것을 더 포함하는 워터 마킹 방법.
As a watermarking method,
Receiving, by an encoder of the device, an image and image metadata associated with the image, the image metadata including a timestamp of the image;
generating, by the encoder, a string from a subset of the image metadata, the string comprising a subset of the timestamp of the image;
encoding, by an encoder, a watermark from a string; and
Embedding, by the encoder, a watermark in the image;
The decoder of the device or the second device,
From a client device, (i) a screenshot of an image displayed by the client device—the image is watermarked with a string generated from a subset of the image metadata; and (ii) screenshot metadata associated with the screenshot of the image. receive a packet containing,
From a packet containing a screenshot of an image displayed by a client device and said screenshot metadata, a string and additional screenshot metadata are extracted, wherein said additional screenshot metadata is a timestamp of a screenshot of the image by the client device. Including,
Decode an identifier from a string, using part of the additional screenshot metadata, wherein the identifier includes part of the image metadata; and
Track delivery of content items associated with images that respond to decoded identifiers,
Decoding the identifier from the string further comprises concatenating a portion of a timestamp of a screenshot of the image with a subset of the timestamp of the image.
삭제delete 제25항에 있어서,
이미지 메타 데이터의 사전 결정된 수의 최하위 비트로부터 문자열을 생성하는 단계를 더 포함하는 워터 마킹 방법.
According to clause 25,
A watermarking method further comprising generating a string from a predetermined number of least significant bits of image metadata.
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 KR20210079362A (en) 2021-06-29
KR102578027B1 true 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 (5)

Country Link
JP (1) JP7225403B2 (en)
KR (1) KR102578027B1 (en)
CN (1) CN113168666A (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 (1)

* 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

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001237017A1 (en) * 2000-02-17 2001-08-27 Digimarc Corporation Watermark encoder and decoder enabled software and devices
CN100364326C (en) * 2005-12-01 2008-01-23 北京北大方正电子有限公司 Method and apparatus for embedding and detecting digital watermark in text file
CA2734613C (en) * 2008-08-19 2020-06-09 Digimarc Corporation Methods and systems for content processing
JP5710604B2 (en) * 2009-05-21 2015-04-30 ディジマーク コーポレイション Combination of watermarking and fingerprinting
CN104471951B (en) * 2012-07-16 2018-02-23 Lg电子株式会社 Handle the method and device of digital service signal
WO2015084004A1 (en) * 2013-12-03 2015-06-11 Lg Electronics Inc. Apparatus for transmitting broadcast signals, apparatus for receiving broadcast signals, method for transmitting broadcast signals and method for receiving broadcast signals
US9769543B2 (en) * 2014-11-25 2017-09-19 Verance Corporation Enhanced metadata and content delivery using watermarks
US10779057B2 (en) * 2015-06-08 2020-09-15 Qualcomm Incorporated Broadcast content redistribution and ad insertion
US11154110B2 (en) 2017-08-04 2021-10-26 Nike, Inc. Article of footwear having a knitted component with a forefoot portion and a heel portion

Patent Citations (1)

* 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

Also Published As

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

Similar Documents

Publication Publication Date Title
US9083511B2 (en) Message key generation
CN103605950B (en) Method and system for hiding signature in credible two-dimensional code
KR102578027B1 (en) Improved image watermarking
CN104125467B (en) Embedding and extracting methods for video steganography information
Zhu et al. Robust steganography by modifying sign of DCT coefficients
US20230111326A1 (en) Image watermarking
Bao et al. A robust image steganography on resisting JPEG compression with no side information
Fang et al. An optimization model for aesthetic two-dimensional barcodes
US20220092721A1 (en) Improved image watermarking
JPWO2017130333A1 (en) Image processing apparatus, image processing method, and program
Duda et al. Image-like 2d barcodes using generalizations of the Kuznetsov–Tsybakov problem
CN114626968A (en) Watermark embedding method, watermark extracting method and device
Shinde et al. A novel video steganography technique
Rodrigues et al. Reversible image steganography using cyclic codes and dynamic cover pixel selection
Mandal et al. Variant of LSB steganography algorithm for hiding information in RGB images
Preetha et al. Adaptive image steganography based on Syndrome-Trellis codes
Campbell-Moore An error-resistant steganography algorithm for communicating secretly on Facebook
Rossi et al. Peak-shaped-based steganographic technique for JPEG images
Ilchev Accurate data embedding in JPEG images for image authentication
Liu et al. Matrix embedding in multicast steganography: analysis in privacy, security and immediacy
Kireev et al. Transform-Aware Content Adaptive Stegosystem for Social Networks
Li et al. Steganalysis of adaptive steganography under the known cover image
WO2020100199A1 (en) Encoding-decoding system, encoding device, decoding device, and program
Kin-Cleaves On the application of coding to adaptive steganography: robustness, efficiency, and coding loss
Yang et al. Toward Practical Deep Blind Watermarking for Traitor Tracing

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