KR101398534B1 - 코딩된 비트스트림의 수정 - Google Patents

코딩된 비트스트림의 수정 Download PDF

Info

Publication number
KR101398534B1
KR101398534B1 KR1020097018442A KR20097018442A KR101398534B1 KR 101398534 B1 KR101398534 B1 KR 101398534B1 KR 1020097018442 A KR1020097018442 A KR 1020097018442A KR 20097018442 A KR20097018442 A KR 20097018442A KR 101398534 B1 KR101398534 B1 KR 101398534B1
Authority
KR
South Korea
Prior art keywords
coded
coded portion
modified
decoding
arithmetically
Prior art date
Application number
KR1020097018442A
Other languages
English (en)
Other versions
KR20100014902A (ko
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 KR20100014902A publication Critical patent/KR20100014902A/ko
Application granted granted Critical
Publication of KR101398534B1 publication Critical patent/KR101398534B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/913Television signal processing therefor for scrambling ; for copy protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • G06T1/0028Adaptive watermarking, e.g. Human Visual System [HVS]-based watermarking
    • G06T1/0035Output size adaptive watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/467Embedding additional information in the video signal during the compression process characterised by the embedded information being invisible, e.g. watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0053Embedding of the watermark in the coding stream, possibly without decoding; Embedding of the watermark in the compressed domain

Abstract

본 발명의 구현예들은 다양한 양상의 코딩된 비트스트림의 수정, 또는 코딩된 비트스트림의 사용에 관한 것이거나, 데이터로부터 워터마킹 정보를 복구하는 것에 관한 것이다. 일 구현예에서, 코딩된 비트스트림은 그 비트스트림에서 임의의 다른 구문 요소들의 코딩을 변경하지 않고, 코딩된 비트스트림에 워터마크를 적용하는 것을 허용하기 위해 수정된다. 이는 계속해서 나오는 코딩된 요소들의 해석을 중단하지 않고 코딩된 구문 요소를 변경하기 위해 필수적인 조건들을 식별함으로써 수행된다. 코딩된 구문 요소는 수정된 값이 발생된 원래의 값과 동일한 디코딩 변수들을 발생시킨다면, 또 다른 코딩된 값으로 대체된다. 특별한 구현예들은, 예컨대 CABAC(Context-based Adaptive Binary Arithmetic Coding)을 포함하는 엔트로피 코딩을 사용하여 코딩된 구문 요소들에 초점을 둔다. 코딩 또는 워터마킹의 타입에 무관하게, 다양한 구현예들은 워터마킹 정보를 복구하기 위해 제공될 수 있다. 특별한 구현예들은 검출 데이터와 특징 정보를 사용하여 워터마킹 정보를 복구한다.

Description

코딩된 비트스트림의 수정{MODIFYING A CODED BITSTREAM}
관련 출원에 대한 상호-참조
본 출원은 (1) "코딩된 비트스트림의 수정"이라는 명칭으로 2007년 3월 23일에 출원된 미국 가 출원 일련 번호 60/919,702호(관리인 번호 PU070063)와, (2) "코딩된 비트스트림의 수정"이라는 명칭으로 2007년 6월 14일에 출원된 미국 가 출원 일련 번호 60/934,634호(관리인 번호 PU070137)의 이익을 청구하며, 이들 우선권 출원 모두 그것들의 전체 내용이 본 명세서에 참고용으로 병합되어 있다.
기술 분야
본 개시물은, 예컨대 코딩에 관련된 구현예를 제공한다.
통상적으로 워터마킹(watermarking)은 워터마크가 나중에 검출될 수 있는 방식으로, 데이터의 한 부분을 수정하는 것을 수반한다. 코딩된 데이터를 포함하여 다양한 상이한 타입의 데이터가 워터마킹될 수 있다. 하지만, 코딩 체계는 진보하고 있고, 코딩된 데이터를 수정하기 위한 기존의 메커니즘들은 그러한 진보하는 코딩 체계들을 위한 원하는 워터마킹 능력을 제공하지 못할 수 있다.
일반적인 일 양상에 따르면, 적어도 제 1 부분과 제 2 부분을 포함하는 인코딩된 데이터가 액세스된다. 제 2 부분은 제 2 부분뿐만 아니라 제 1 부분에 기초하는 결과를 만들어내도록 디코딩 가능하다. 수정된 제 1 부분은, 제 2 부분이 제 2 부분과 수정된 제 1 부분에 기초한 결과를 만들어내기 위해 디코딩 가능하도록 결정된다.
또 다른 일반적인 양상에 따르면, 정보는 데이터의 인코딩된 집합의 제 1 부분에 관한 대체 값을 식별한다. 데이터의 인코딩된 집합은 또한 제 2 부분을 포함하고, 제 2 부분의 디코딩은 제 2 부분과 제 1 부분에 기초한다. 대체 값은 (1) 제 2 부분의 디코딩이 제 1 부분을 포함하는 데이터의 인코딩된 집합에 대해 디코딩이 수행된다면, 특별한 디코딩된 결과를 만들어내고, (2) 제 2 부분의 디코딩이 제 1 부분 대신 대체 값을 포함하는 데이터의 인코딩된 집합에 대해 디코딩이 수행된다면, 특별한 디코딩된 결과를 만들어내게 하는 특성을 가진다.
또 다른 일반적인 양상에 따르면, 적어도 제 1 부분과 제 2 부분을 포함하는 코딩된 비트스트림이 액세스되고, 이 경우 제 2 부분은 그 제 2 부분뿐만 아니라 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하다. 제 1 부분은 대체 값으로 대체되어 수정된 코딩된 비트스트림을 만들어내고, 제 2 부분의 디코딩은 이러한 수정된 코딩된 스트림에 대해 여전히 결과를 만들어낼 것이다.
또 다른 일반적인 양상에 따르면, 인코딩된 데이터는 수정된 제 1 부분과 제 2 부분을 포함하고, 수정된 제 1 부분은 제 1 부분의 대체물이다. 제 2 부분은 그 제 2 부분뿐만 아니라 수정된 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하다. 그 결과는 제 2 부분의 디코딩이 마치 제 2 부분 및 수정된 제 1 부분보다는, 제 2 부분과 제 1 부분에 기초하여 수행된 것과 동일하다.
또 다른 일반적인 양상에 따르면, 수정된 제 1 부분과 제 2 부분을 포함하는 데이터의 수정된 집합이 액세스된다. 수정된 제 1 부분은 제 1 부분의 수정으로부터 생긴다. 제 2 부분은 그 제 2 부분뿐만 아니라 수정된 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하다. 제 2 부분은, 결과를 만들어내기 위해 디코딩되는데, 이러한 결과는 제 2 부분의 디코딩이 마치 제 2 부분 및 수정된 제 1 부분보다는, 제 2 부분과 제 1 부분에 기초하여 수행된 것과 동일하다. 수정된 제 1 부분이 디코딩된다.
하나 이상의 구현예의 세부 사항이 첨부 도면과 아래의 상세한 설명에서 설명된다. 비록 1가지 특별한 방식으로 설명되더라도 구현예들이 다양한 방식으로 구성되거나 구현될 수 있다는 점이 명백하다. 예컨대, 일 구현예가 방법으로서 수행되거나 동작들의 한 집합을 수행하기 위해 구성된 장치로서 구현되거나, 동작들의 한 집합을 수행하기 위한 명령들을 저장하는 장치로서 구현되거나 신호로서 구현될 수 있다. 다른 양상 및 특징은 첨부 도면, 및 청구항과 관련하여 고려된 후속하는 상세한 설명으로부터 분명해진다.
도 1은 엔트로피 코딩된 스트림 워터마킹의 일 구현예의 블록도.
도 2a는 인코딩된 비트스트림을 수정하는데 사용된 동작들의 순서를 도시하는 블록도.
도 2b는 인코딩된 비트스트림을 수정하는데 사용된 동작들의 또 다른 순서를 도시하는 블록도.
도 2c는 인코딩된 비트스트림을 수정하기 위한 방법의 블록도.
도 2d는 인코딩된 비트스트림을 수정하기 위한 또 다른 방법의 블록도.
도 3은 목표 구문 요소를 수정하기 위한 방법의 흐름도.
도 4는 바이패스(bypass) 모드로서 인코딩되는 목표 구문 요소를 수정하기 위한 방법의 흐름도.
도 5는 목표 구문 요소를 수정하기 위한 또 다른 방법의 흐름도.
도 6은 비트들의 코딩된 블록을 대체하기 위한 방법의 흐름도.
도 7은 수정된 비트스트림을 디코딩하기 위한 방법의 흐름도.
도 8은 워터마크 정보를 검출하기 위한 방법의 흐름도.
도 9는 워터마크 정보를 검출하기 위한 또 다른 방법의 흐름도.
적어도 일 구현예가 엔트로피 디코딩 단계 및 재인코딩(re-encoding) 단계들을 직접적으로 요구하지 않고 엔트로피 인코딩된 비트스트림을 수정한다. 또한, 엔트로피 코드가 산술 코드인, 그리고 더 구체적으로는 CABAC(Context-based Adaptive Binary Arithmetic Coding)이라고 알려진 산술 코딩 체계가 사용되는 구 현예들이 제공된다. CABAC은 후속적으로 코딩된 시퀀스들이 이전의 코딩된 시퀀스들에 의존하는 "메모리(memory)"를 구비한 코딩 체계가 그 특징일 수 있다. 그러므로, 주어진 코딩된 시퀀스는, 그 구현예에서 후속적인 코딩된 시퀀스들이 여전히 올바르게 디코딩될 수 있는 방식으로 수정된다. 추가로, 엔트로피 디코딩 단계 및 재인코딩 단계들을 직접적으로 요구하지 않고 엔트로피 인코딩된 비트스트림에 워터마크를 적용하는 구현예들이 제공된다. 적어도 하나의 워터마킹 구현예가 CABAC 인코딩된 비트스트림을 수정한다. CABAC은 H.264/AVC 표준에서 널리 사용된다.
많은 응용예들에서 압축된 비디오 스트림의 워터마킹에 관한 시장 수요가 증가하고 있다. 초기 접근은 스트림을 압축해제하고 픽셀 영역에서의 워터마킹을 적용하고 재압축하는 것이다. 초기 진보 사항은 재압축을 단순화시키기 위해 원래의 압축된 스트림으로부터의 정보를 사용하는 것이었다. 이는 엔트로피 디코딩을 적용하고 코딩된 비트스트림을 분석함으로써 스트림을 부분적으로 압축해제하는 기술을 통해 개선되었다. 엔트로피 디코딩 후, 워터마킹 알고리즘은 계수 및 움직임 벡터와 같은 구문 요소에 직접적으로 작용한다. 스트림이 워터마크 데이터를 나타내기 위해 수정된 후, 엔트로피 코딩이 적용된다. 본 개시물에서는 엔트로피 디코딩 단계 및 재인코딩 단계들을 직접적으로 요구하지 않고 엔트로피 인코딩된 비트스트림에 워터마킹을 적용하는 구현예들을 제안한다.
CABAC 스트림을 워터마킹하는 것은 CABAC 스트림에서 코딩된 구문 요소를 변경하는 것을 수반한다. 하지만, 전술한 바와 같이 임의의 다른 구문 요소들의 코딩을 변경하지 않고 CABAC 비트스트림의 코딩된 구문 요소를 수정함으로써 워터마크 를 적용하는 것이 바람직하다. 이는 CABAC 스트림에서의 각 요소의 값이 후속하는 값들의 해석에 영향을 미치기 때문에 어렵다. 일반적으로, 코딩된 구문 요소를 변경하는 것은, 모든 미래의 코딩된 요소들이 디코더에 의해 잘못 해석되거나 디코딩 가능하지 않도록 야기할 수 있다.
일부 응용예들은 인코딩된 비트스트림에 대해 행해지는 변경이 비트스트림의 길이를 변경할 수 없다는 추가적인 제약을 가진다. 극한 경우에는, 대안 값의 비트 길이가 원래 값의 비트 길이와 같을 경우에만 코딩된 요소가 대안 값으로 대치되는 것이 요구된다.
첫 번째는, 수정이 목표로 정해진 구문 요소에만 영향을 미치고, 임의의 다른 코딩된 구문 요소들의 올바른 해석을 방해하지 않도록, CABAC 인코딩된 H.264/AVC 스트림에서의 비트들의 스트링(string)이 비트들의 상이한 스트링으로 대체될 수 있는 시나리오를 논의한다. 그러한 시나리오에서는, 비트들의 대체 스트링이 비트들의 원래의 스트링과 동일한 길이일 것이 요구되지 않는다. H.264/AVC 비트스트림에서의 구문 요소들 전부가 CABAC 인코딩되는 것은 아니고, 이들 비(non)-CABAC 요소들을 수정하는 것이 가능할 수 있다. 하지만, 본 명세서에서 설명된 적어도 하나의 구현예는 특별히 CABAC으로 인코딩되는 구문 요소들에 집중한다.
두 번째는, 비트들의 대체 스트링이 비트들의 원래 스트링과 동일한 길이일 것을 요구할 때 사용될 수 있는 효율적인 접근을 설명하고 보여준다.
세 번째는, 정보를 비트스트림에 임베딩(embedding)하기 위해 전술한 CABAC 인코딩된 비트스트림에서 구문 요소들을 어떻게 수정하는지를 설명하고 보여준다. 나아가, 이 정보는 수정된 비트스트림을 분석하거나 비트스트림을 픽셀-영역의 이미지들의 시퀀스로 디코딩하고 이들 이미지를 분석함으로써 나중에 복원될 수 있다.
마지막으로, 코딩된 비트스트림에 관한 워터마크 임베딩 프로세스의 효율을 향상시키기 위해 바이패스 모드가 어떻게 이용되는지를 설명하고 보여준다.
다양한 구현예의 이해를 돕기 위해 CABAC, 바이패스 모드, 및 워터마킹의 간단한 논의가 제공된다. 이들 논의는 종종 구체적인 것이다. 하지만, 이들 논의는 완전한 것으로 의도되지는 않고, 또한 이들 논의에서의 모든 세부 사항은 본 출원에서 설명된 모든 구현예에 반드시 적용될 필요는 없다. 추가로, 이들 논의는 당업자에게 알려져 있는 많은 자료를 포함한다. 하지만, 이들 논의는 심지어 그러한 실례가 명확하게 지적되지 않을지라도 새로운 자료 또는 자료의 구성을 항상 포함하게 된다. 이들 논의는 본 출원의 폭을 제한하려고 의도되는 것은 아니다. 오히려, 이들 논의는 이들 논의를 읽는 사람이 본 구현예들을 이해하는데 도움을 주기 위해, 많은 가능한 상황 중 하나 이상의 특정 상황을 제공한다.
CABAC 논의
많은 비디오 압축 방법 중 최종 단계는 압축된 데이터의 무손실 엔트로피 코딩이다. H.264/AVC에서, CABAC은 보통 엔트로피 코딩을 위해 사용된다. CABAC은 각 구문 요소 타입에 관한 개별 상황들을 유지시키고, 각각의 코딩된 요소로 이들 상 황을 적응시킴으로써 향상된 압축 성능을 달성하는 산술 코딩 체계이다. 이는 통상적인 산술 코딩 체계들의 다수의 확장을 나타낸다. 첫 번째 확장은, CABAC은 2진 데이터를 산술적으로 인코딩하기 위해 디자인된다. 다시 말해, 각각의 심벌이 0이거나 1이다. 원래 2진수가 아닌 구문 요소 값들은 먼저 산술 코딩 전에 2진화된다. 이는 0인 확률과 1인 확률만이 존재한다는 것을 의미한다. 2진화의 특정 방법은 계속해서 생기는 산술 코딩의 효율성을 최적화하기 위해 의도된다. 각각의 2진화된 구문 요소를 빈 스트링(bin string)이라고 한다. 두 번째 확장은 코딩이 적응될 수 있는(adaptive) 것이다. 빈 스트링의 각 비트가 처리될 때, 코딩을 제어하는 디코딩 변수들이 바뀌는 것이 허용된다. 마지막으로, 이러한 적응은 상황-기반(context-based)인 것이 허용된다. 다수의 변수로 이루어진 상황이 각 비트와 연관된다. 상황 변수들 중 일부는 다수의 상황들 사이에서 공유되고, 일부는 단일 상황에만 사용된다. 하나의 구문 요소를 코딩하는 것은 연관된 상황이 적응되게 한다. H.264/AVC는 인코딩과 디코딩 동안 유지되는 460개의 별도의 상황들을 정의한다.
위에서 사용된 "디코딩 변수들(Decoding Variables)"라는 용어는 변수들의 2개의 집합을 가리킨다. 첫 번째 집합은 0 또는 1의 확률을 나타내는 2개의 변수를 포함하는 "상황 변수들(Context Variables)"이라고 부른다{이들 심벌 중 어느 것이 가장 낮은 확률(LPS)인지, 그리고 비트스트림에서 다음에 등장하는 이러한 LPS의 확률을 가리키는 확률 표의 확률 상태 지수(I)의 식별로 나타내어짐}. 각각의 상황은 상황 변수들의 집합을 유지하는 상황 지수와 연관된다. 두 번째 집합은 내부 CABAC 범위 값{범위(L)의 바닥과 범위의 폭(R)으로 나타나는}을 정의하기 위해, 2개의 변수로 이루어지는 "상태 변수들(State Variables)"이라고 부른다. L과 R 변수들은 모든 구문 요소들 사이에서 공유되는데 반해, 분리된 LPS와 I 값들은 각각의 상황에 관해 유지된다. "상태 변수들", "상태 값(들)", 및 "상태 변수 값들"이라는 용어들은 본 명세서에서 서로 교환 가능하게 사용된다.
2진화 후, 적절한 디코딩 변수가 검색되고 빈 스트링을 산술적으로 인코딩하기 위해 사용된다. 각 비트가 인코딩(또는 디코딩)된 후, 대응하는 상황이 인코딩된(또는 디코딩된) 비트와 이전의 상황 값에 기초하여 갱신된다.
특별한 구문 요소에 관해, 코딩될 그 다음 심벌은 MPS(most probable symbol)(MPS는 LPS가 아닌 2진 심벌이다)일 것으로 기대된다. 이러한 상황이 일어나면, 다음에 등장하는 LPS의 확률 또는 예상에서의 추가 감소를 반영하기 위해 지수(I)가 변경되게 한다. LPS가 등장하면, 지수가 LPS의 확률에서의 증가를 반영하기 위해 변한다. 이러한 경우 LPS의 확률이 50%를 초과할 수 없다는 것은 그 심벌이 더 이상 가장 적게 일어나지 않음을 의미한다. 이 경우, LPS는 다른 심벌을 변하고 그 지수는 다시 50% 미만의 확률을 나타내게 된다.
L 및 R 값은 모든 산술 인코딩 프로세스들과 동일한 방식으로 갱신된다. 어느 심벌이 인코딩되느냐에 따라, L이 현재 구간의 하한(lower boundary)이 되고, R이 현재 구간의 폭이 된다.
일반적으로, 상태 변수(특히 L과 R)에 동일한 변경을 초래하는 2개의 빈 스트링은 존재하지 않고, 이는 디코더가 모든 다음에 오는 코딩된 요소들을 잘못 해 석하게 하지 않고 산술적으로 인코딩된 비트스트림을 수정하는 것이 가능하지 않다는 것을 암시한다. 하지만, CABAC은 L과 R이 고정된 길이의 2진수들로 나타내어질 것을 요구한다. 이는 재정규화(renormalization)라고 알려진 프로세스를 통해 이루어진다. L과 R의 재정규화의 특정 세부 사항은, 예컨대 H.264 표준에서 찾을 수 있다.
이러한 재정규화 프로세서의 한 가지 결과는, 다수의 상이한 빈 스트링이 L과 R에 대한 동일한 변경을 유도하는 것이 가능해진다는 것이다. 적어도 일 구현예는 CABAC 디코더에서 원래의 L과 R 상태 변수 값들을 유지하면서 상이한 값들로 대체될 수 있는 구문 요소 값들을 식별하기 위해 이러한 사실을 이용한다.
바이패스 모드 논의
2개의 심벌이 같은 확률을 가지는 구문 요소들의 특별한 경우에, LPS와 상태 지수는 코딩 효율 면에서 임의의 이득을 도입하지 않고 일정하게 갱신된다. 지수에 의해 나타내어진 확률은 본질적으로 50%가 되고, 이는 범위(R)가 한 비트에서 그 다음 비트로의 동일한 예측 가능한 변경을 경험하게 됨을 의미한다.
코딩 효율과 타협하지 않고 인코딩/디코딩 프로세스의 속도를 높이기 위해서는, 심벌들이 같은 확률을 가질 것으로 예상되는 구문 요소들이 바이패스 모드라고 부르는 특별한 방식으로 식별되고 다루어진다. 이 경우, 어떠한 상황도 사용되지 않고, 심벌들 모두의 확률은 0.5로 고정된다. 그 결과는 범위(R)가 그것의 값에 관계없이 각각의 디코딩된 빈 후의 값의 절반이 된다는 것이다. 재정규화는 R의 2배 가 되어, R의 최종 고정된-길이의 표현은, 바이패스 모드 디코딩에 의해 변경되지 않을 채로 남아 있는다. 범위(L)의 바닥만이 새로운 심벌들이 코딩될 때 적응한다. 적어도 일 구현예는 CABAC 디코더에서 원래의 상태 변수 값들을 유지하면서, 상이한 값들로 대체될 수 있는 구문 요소 값들을 찾는 것을 간단하게 하기 위해, 바이패스 모드를 이용한다.
H.264 표준은 바이패스 모드 CABAC으로 코딩되어야 하는 3가지 구문 요소들을 명시한다. 이들은 계수들의 부호(sign), 움직임 벡터 차이의 추가물(suffix), 및 계수 데이터의 추가물이다.
워터마킹 논의
이제 워터마킹의 일반적인 분야와, 하나 이상의 설명된 구현예가 적용되는 분야 내의 특정 영역의 짧은 논의를 제시한다. 워터마킹의 당업자라면 본 명세서에 제시된 정보의 많은 부분에 친숙할 것이다.
본 명세서에서 사용된 "디지털 워터마킹"이라는 어구는 통상 아래의 조건들이 만족되도록 일부 페이로드(payload) 데이터에 따라 관련 분야(통상적으로, 이미지, 움직임 이미지 시퀀스, 또는 오디오 클립)의 작업물(work)을 수정하는 방법들을 가리키고, 이러한 조건들은 다음과 같다.
1. 작업물의 수정된 버전이 작업물의 원래의 버전과 지각할 수 있게 분간할 수 없고,
2. 페이로드 데이터는 나중에 작업물의 수정된 버전으로부터 복원될 수 있 다.
"튼튼한(robust) 디지털 워터마킹"이라고 하는 디지털 워터마킹 방법들의 하위부류(subclass)는 제 3 조건을 도입한다.
3. 페이로드 데이터는 작업물의 수정된 버전의 왜곡된 버전으로부터 복원될 수 있고, 이 경우 그러한 왜곡은 일반 신호 처리와, 수정된 작업물이 겪을 수 있거나 또는 왜곡이 페이로드 데이터를 복원할 수 없게 하는 대항(adversary) 시도에 의해 고의로 도입될 수 있는 신호 취급{예컨대, 압축, 잡음 감소 필터링, 컬러 증강(enhancement) 등}에 의해 도입될 수 있다.
다음 내용, 즉
1. 소유자 식별: 워터마크 페이로드는 작업물의 소유자를 식별한다.
2. 복사 제어: 워터마크 페이로드는 작업물과 연관된 저작권을 표시한다는 것을 포함하는, 하지만 이들에 제한되지 않는 튼튼한 디지털 워터마킹의 많은 응용예가 존재한다.
시청하기, 복사하기, 기록하기, 인쇄하기, 배포하기 또는 임의의 다른 행동을 위한 디바이스들은, 페이로드 데이터를 복원할 수 있고, 행동을 저작권에 의해 허용된 것에 국한할 수 있다.
3. 거래 추적( Transation Tracking ): 워터마크 페이로드는 작업물의 복사물이 합법적으로 배포되는 수령인을 식별한다. 이는 합법적인 수령인이 그 작업물을 더 배포할 권리들을 받지 않을 때 유용할 수 있다. 인가되지 않은 작업이 발견되면, 원래의 콘텐츠 소유자가 인가되지 않은 복사물로부터 페이로드를 복원할 수 있 고, 인가되지 않은 사용에 책임이 있는 수령인을 식별할 수 있다.
당업자라면 튼튼한 디지털 워터마킹의 많은 다른 응용예들이 존재함을 알게 된다.
워터마킹은 "기저대역(baseband)" 또는 압축된 작업물들에서 수행될 수 있다. 기저대역 영상(imagery) 또는 움직임 영상 시퀀스들은, 예컨대 픽셀-영역 표현이다. 기저대역 오디오 작업물은, 예컨대 오디오 샘플들이다. 일부 응용예는 압축된 작업물의 워터마킹을 요구한다. 이 경우, 그 출력 또한 압축된 작업물이다. 압축의 마지막 단계는 통상적으로 엔트로피 코딩이고, 압축해제의 첫 번째 단계는 통상적으로, 엔트로피 디코딩이다. 엔트로피 인코딩/디코딩 프로세스는 통상적으로 무손실이다. 압축된 작업물의 워터마킹에 관한 한 가지 접근은, 엔트로피 디코딩을 먼저 적용한 다음, 기저대역 표현을 얻기 위해 압축해제를 적용하는 것이다. 기저대역 표현은 워터마킹되고, 그로 인해 생긴 워터마킹된 작업물이 압축되고 엔트로피 코딩된다. 이러한 접근은 시간을 소모할 수 있고, 재압축으로 인해 지각 품질의 떨어짐을 초래할 수 있다.
지각 품질을 향상시키고, 요구된 계산을 감소시키기 위해, 움직임 벡터, 모드 결정, 품질 인자(factor), 및 다른 정보와 같은 원래의 압축된 작업물로부터의 정보가 압축 해제 동안 저장되고 재압축 동안 사용될 수 있다. 이는 재압축이 임의의 움직임 추정을 수행할 필요가 없고(따라서 계산 및/또는 시간을 절약한다), 원래의 양자화 인자와 모드 결정의 사용은 향상된 지각 품질을 초래할 수 있다.
"압축된 영역 워터마킹"이라고 하는 워터마킹 알고리즘들의 한 부류가 등장 하였다. 이들 방법은 이전에 설명된 "풀 디코드(full decode)"보다 워터마킹 전에 "부분적인 디코드(partial decode)"를 수행하는 것으로 설명될 수 있다. 본 명세서에서 압축된 작업물은 압축된 작업물의 구문 요소들을 노출시키기 위해 먼저 엔트로피 디코딩된다. 이들은 계수들{예컨대, 블록 DCT 또는 잔물결(wavelet) 계수들}, 움직임 벡터들, 화상 타입들, 예측 모드들, 및 많은 다른 구문 요소를 포함할 수 있다. 워터마킹 알고리즘은 이후 이들 구문 요소들 중 일부를 직접 수정한다. 마지막으로, 수정된 구문 요소들은 수정된 압축된 작업물을 얻기 위해 엔트로피 코딩된다.
본 출원에서 설명된 적어도 하나의 구현예는 "엔트로피 코딩된 스트림 워터마킹"이라고 부를 수 있는 워터마킹 알고리즘들의 새로운 부류 내에 있는 것이다. 이들 방법은 도 1에 예시된 엔트로피 코딩된 스트림을 직접 수정한다.
도 1을 참조하면, 원래의 압축된 스트림은 페이로드에 따라 스트림 수정(102)에 의해 직접 수정되고, 그 출력은 그 결과로 표시된 압축된 스트림(103)이다. 페이로드는, 예컨대 플레이어의 일련 번호, 플레이어의 모델, 또는 본질적으로 나중의 식별을 위해 사용되기를 바라는 임의의 다른 정보일 수 있다. 스트림 수정 프로세스는 이루어질 모든 변경의 위치, 전처리(preprocessing) 스테이지(104) 동안 발생될 수 있는 메타데이터에 의해 이루어질 실제 변경에 대한 것을 통보받는다. 메타데이터(105)는 원래의 압축된 스트림을 디코딩(106)하고, 워터마크를 발생시킴(108)으로써 발생된다. 메타데이터는 변경이 이루어질(즉, 워터마크 발생을 위해) 스트림 내의 위치들을 식별하고, 상이한 페이로드 심벌들에 응답하여 어떻게 스트림이 변할지를 표시한다. 도 1은 압축된 작업물의 디코딩된 구문 요소들의 분석에 의해 메타데이터가 발생되는 특별한 경우를 보여준다. 이와 같은 워터마킹 방법의 한 가지 도전적인 양상은 메타데이터의 발생이다. 다음 내용은 하나 이상의 구현예에 관해 이러한 일이 어떻게 행해질 수 있는지를 설명한다.
앞선 문단과 도 1은 전처리 스테이지(104)가 존재할 수 있음을 암시한다. 3가지 중요한 시간이 존재하는 상황을 지적하는 것이 유용하다. 제 1 시간은 일부 메타데이터를 발생시키기 위해 압축된 비트스트림이 분석되는 곳/때이다. 제 2 시간은 비트스트림을 수정하기 위해 페이로드라고 알려진 심벌들의 특정 시퀀스와 함께, 제 1 시간에서 발생된 메타데이터의 일부 또는 전부가 사용되는 곳/때이다. 제 3 시간은 수정된 비트스트림을 압축 해제함으로써 얻어진 움직임 영상 시퀀스의 왜곡된 버전 또는 수정된 비트스트림을 압축 해제함으로써 얻어진 움직임 영상 시퀀스 또는 수정된 비트스트림을 분석하기 위해, 제 1 시간에서 발생된 메타데이터의 일부 또는 전부가 사용되는 곳/때이다. 제 3 시간에서 이러한 분석의 목적은 페이로드는 복원하는 것이다.
상황을 이해하기 위해, 작업물의 배포 전에 일어나는 제 1 시간, 각 복사물에 관해 사용된 페이로드가 독특하게 그 복사물을 식별하는 복제 동안 일어나는 제 2 시간, 및 배포된 복사물 중 어느 것이 인가되지 않은 복사물의 소스인지를 드러내기 위해 페이로드가 복원되는 시간에서 작업물의 인가되지 않은 복사가 발견된 후 일어나는 제 3 시간을 고려한다. 이 예는 단지 예시이고, 이들 개념의 응용예에 대한 임의의 제한을 암시하려고 의도되는 것은 아니다. 또한, 응용예-특정 요구 사 항들이 존재할 수 있는 데 반해, 제 1 시간(전처리)과 제 2 시간(임베딩)이 상이하다는 기술적인 요구 사항은 존재하지 않는다.
추가 예들로서, 도 1을 다시 참조한다. 전처리 스테이지는, 예컨대 전달을 위한 영화를 저작하는 동안 수행될 수 있다. 한 가지 시나리오에서, 프로세스는 받아들일 수 있는 대체가 결정된 코딩된 요소들의 위치들을 식별하기 위해 수행된다. 그러한 프로세스의 결과(예컨대, 그렇게 코딩된 요소들의 위치와 받아들일 수 있는 대체 값들)는 코딩된 영화와 함께 포함되는 메타데이터에 저장된다.
스트림 수정은, 예컨대 플레이어의 일련 번호(예컨대, 소프트웨어 플레이어, 셋톱 박스 플레이어, 또는 DVD 플레이어)가 페이로드로서 사용되는 영화의 재생 동안 수행될 수 있다. 페이로드는, 예컨대 식별된 코딩된 요소들을 대체할지를 결정하기 위해 사용된다. 예컨대, 하나의 받아들일 수 있는 대안이 메타데이터에 제공된다면, 페이로드 시퀀스에서 "0"이 연관된 코딩된 시퀀스에 관한 "대체 없음(no replacement)"을 표시하고, "1"이 "대체 있음(replacement)"을 표시할 수 있다. 또 다른 예로서, 모든 식별된 위치들은 대체될 수 있고, 페이로드가 2개의 제공된 대체 값들(위치에 의해 식별되는 각각의 코딩된 시퀀스에 관해) 중 어느 것이 사용될지를 표시할 수 있다. 예컨대, "0"은 제 1 대체를 사용하는 것을 표시할 수 있고, "1"은 제 2 대체를 사용하기 위해 표시할 수 있다.
페이로드의 복원은 스트림 수정이 일어난 위치들에 관련되지 않은 위치에서 수행될 수 있다. 핵심은 수정된 스트림에 기초한 데이터를 담고 있는 문서로 액세스하는 것이다. 예컨대, 수정된 스트림은 전자식으로 복사될 수 있고, 기록 가능한 DVD에 올려지거나, 수정된 스트림이 나타날 수 있고, 그 다음에는 다시 기록되고 인코딩된 다음 기록 가능한 DVD에 올려진다. 이러한 기록 가능한 DVD가 획득되면, 이 기록 가능한 DVD는 페이로드를 복원하기 위해 분석될 수 있다.
AVC 코딩된 비트스트림들에서의 CABAC 기반의 데이터 임베딩
압축된 스트림을 워터마킹하는 한 가지 방식은, 다음의 요구 사항/조건에 따라 하나 이상의 구문 요소의 값들을 변경하는 것이다.
R1. 수정된 압축된 스트림은 여전히 유효한 스트림이다(특정 압축 표준을 따르는 채로 남아 있음).
R2. 수정된 압축된 스트림을 압축 해제함으로써 얻어진 움직임 영상 시퀀스는, 원래의 압축된 스트림을 압축 해제함으로써 얻어진 움직임 영상 시퀀스와 지각적으로 분간할 수 없다.
R3. 스트림에 대한 수정은 수정된 압축된 스트림을 압축 해제함으로써 얻어진 움직임 영상 시퀀스에서의 측정 가능한 변경을 초래한다.
요구 조건 R1은, 압축 기술이 산술 코드 엔트로피 코딩 기술을 사용할 때 특히 도전적이다. 이는 CABAC을 지닌 H.264/AVC에 관한 경우이다.
요구 조건 R1을 먼저 고려하고, 수정된 압축된 스트림이 여전히 유효한 스트림이 되도록, CABAC 인코딩된 H.264/AVC 스트림에서 비트들의 스트링이 어떻게 비트들의 상이한 스트링으로 대체될 수 있는지를 논의한다. 이는 그러한 수정이 목표로 정해진 구문 요소에만 영향을 미치고, 임의의 다른 코딩된 구문 요소들의 올바 른 해석에 방해하지 않을 것을 요구한다. 이 구현예에서, 비트들의 대체 스트링이 비트들의 원래의 스트링과 동일한 길이가 될 것이 요구되지 않는다(이러한 제약은 나중에 논의된다). 설명을 하기 위해, 후속하는 설명은 "목표 요소(target element)"로 부르는 단일 구문 요소를 수정하는 것을 다룬다. 하지만, 당업자라면 동일한 개념이 2개 이상의 목표 요소를 포함하는 목표 요소들의 집합에 적용될 수 있다는 것을 알 것이다.
목표 요소는 "원래의 빈 스트링(original bin string)"으로 2진화되는 "원래의 값(original value)"을 가진다. 원래의 빈 스트링은 비트들의 "원래의 코딩된 블록"을 만들어내기 위해 다른 구문 요소들과 함께, CABAC 코딩된다. CABAC 코딩 프로세스에서, 원래의 빈 스트링은 상태 변수들과, 그것들의 원래의 값들로부터의 구문과 연관되는 상황들을 그것들의 수정된 값들로 수정한다.
다양한 설명된 구현예에서, 요구 조건 R1을 따르는 CABAC 인코딩된 비트스트림을 수정하기 위한 2가지 단계가 존재하지만, 그 단계들은 어느 순서 대로든 수행될 수 있다. 이들 단계를 논의하는 데 있어서, "단계 1" 및 "단계 2"라는 참조가 이루어지지만, 이들 단계 번호들은 그것을 수행하는데 있어서 임의의 특별한 또는 특정 순서를 암시하거나 요구하도록 의도되지 않는다. 도 2a와 도 2b는 요구 조건 R1을 만족시키기 위한 단계들을 보여주는 블록도이다.
CABAC 인코딩된 H.264/AVC 비트스트림이 주어지면, 단계 1은 목표 요소로부터 원래의 코딩된 블록으로의 맵핑(202)을 확립하는 것이다. 실제적인 일 구현예에서, 이는 비트스트림을 디코딩하고, 어느 비트스트림 비트가 어느 구문 요소들(및 대응하는 상태 변수 값들)을 만들어내는지를 추적함으로써 행해진다. 실제적인 제 2 구현예에서는, CABAC 디코더가 구문 요소들을 노출시키기 위해 압축된 비트스트림에 적용된다. 이들 구문 요소는 이후 장착된 CABAC 인코더에 의해 처리되어 원래의 압축된 비트스트림을 복구한다. 복구된 비트스트림이 본 명세서에서 관심사가 아니라, 유용한 CABAC 인코더의 기기 사용(instrumentation)이다. 장착된 CABAC 인코더는 구문 요소들과 압축된 비트스트림에서의 그 구문 요소들의 최종 위치들 사이의 대응관계를 추적하기 위해 사용될 수 있다.
단계 2는 목표 요소(204)에 관한 하나 이상의 받아들일 수 있는 대안 값들을 찾는 것이다. 받아들일 수 있는 대안 값들을 찾는 한 가지 방법은 모든 가능한 대안 값들을 시험하고 만약 있다면 어느 것이 받아들일 수 있는지를 결정하는 것이다. 각각의 가능한 대안 구문 값이 대안 빈 스트링으로 2진화된다. 대안 빈 스트링은 비트들의 대안 코딩된 블록을 만들어내기 위해 다른 구문 요소들과 함께 CABAC 코딩된다. CABAC 코딩 프로세스에서, 대안 빈 스트링은 상태 변수들과 영향을 받은 상황들을, 그것들의 원래의 값들로부터 그것들의 대안 값들로 수정한다. 모든 대안 상태 변수 값들과 영향을 받은 상황들이 수정된 상태 변수 값들과 영향을 받은 상황들 모두와 동일하다면, 가능한 대안 구문 값이 "받아들일 수 있는 대안 값"이라고 불리게 된다. 다시 말해, 상태 변수들과 영향을 받은 상황들이 변경이 이루어지지 않았다면 가지게 될 동일한 값들을 가진다면 그 변경이 받아들여질 수 있게 된다.
이들 2개의 단계(202,204)의 2개의 상이한 순서가 도 2a와 도 2b에 도시되어 있고, 단계(204)의 세부 사항이 도 3에 예시되어 있다. 단계 1(202)에서의 맵핑 및 할당은 적어도 하나의 대안 구문 값이 단계 2(204)에서 발견된 목표 요소들에 관해서만 오직 요구된다는 점을 주목하라. 도 2b에서의 단계들의 제 2 순서에서는, 단계 1(202)의 맵핑이 식별된 목표 요소들에 관해서만 수행될 필요가 있다.
도 2c는 코딩된 비트스트림을 수정하기 위한 방법(250)의 블록도를 보여준다. 처음에 제 1 부분과 제 2 부분을 가지는 코딩된 비트스트림이 액세스된다(252). 제 1 부분(254)에 관해 대체 값이 결정되고, 이후 제 1 부분은 결정된 대체 값으로 대체된다(256). 일단 대체 값이 제 1 부분을 대체하면, 수정된 코딩된 비트스트림이 보내진다(258). "보내기(sending)"는, 예컨대 전자 송신(electronic trasmission)이나 디스크(disc) 또는 마스터(master) 형태로 보내는 것일 수 있다.
본 명세서에서 제 2 부분이라고 하는 것은 다음의 인접한 구문 요소(및 대응하는 상태 변수 값)이거나, 2개 이상의 구문 요소와 대응하는 상태 변수 값들로 이루어질 수 있는 비트스트림의 나머지 부분일 수 있다. 그러므로, 제 1 부분에 관한 대체 값을 결정할 때, 모든 그 다음 구문 요소들과 그것들 각각의 상태 변수 값들에 관한 고려가 이루어질 수 있다. 제 1 부분에 관한 대안 또는 결정된 대체 값이 제 2 부분에서의 다른 구문 요소들에 관한 상태 변수 값을 변경 또는 바꾸지 않는다면, 제 1 대체 값이 제 2 부분의 바라는 결과 디코딩을 제공하게 된다.
대체 값을 결정하는 동작(254)은 또한 수정된 제 1 부분을 결정하는 것을 그 특징으로 할 수 있다. 논의되는 구현예에서, 제 1 부분의 수정 전에, 제 2 부분이 특별한 결과를 만들어내기 위해, 원래 디코딩될 수 있다(그 디코딩은 수정되지 않 은 제 1 부분에 부분적으로 의존한다). 나아가, 제 1 부분의 수정 후에는, 제 2 부분이 동일한 특별한 결과를 만들어내기 위해 디코딩 가능하다(그 디코딩은 수정된 제 1 부분에 부분적으로 의존한다).
또 다른 구현예는, 방법(250)과 유사하게 2개의 동작을 수반한다. 제 1 동작은 적어도 제 1 부분과 제 2 부분을 포함하는 인코딩된 데이터를 액세스하는 것이다. 제 2 부분은 제 2 부분뿐만 아니라 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하다. 제 2 동작은 그 제 2 부분이 제 2 부분과 수정된 제 1 부분에 기초한 결과를 만들어내기 위해 디코딩 가능하도록, 수정된 제 1 부분을 결정하는 것이다.
코딩된 요소의 위치들과 가능한 대체 값들을 식별하는 데이터 전부 또는 일부는 저장 디바이스에 저장되거나 전자적으로 보내질 수 있다. 일 구현예는 DVD, 하드 디스크, 또는 다른 저장 디바이스와 같은 장치이다. 이 장치는 저장된 정보를 가지는 프로세서-판독 가능한 매체를 포함한다. 저장된 정보는 데이터의 인코딩된 집합의 제 1 부분에 관한 대체 값을 식별한다. 데이터의 인코딩된 집합은 또한 제 2 부분을 포함하고, 제 2 부분의 디코딩은 제 2 부분과 제 1 부분에 기초한다. 대체 값은 (1) 디코딩이 제 1 부분을 포함하는 데이터의 인코딩된 집합에 대해 수행된다면, 제 2 부분의 디코딩이 특별한 디코딩된 결과를 만들어내고, (2) 디코딩이 제 1 부분 대신 대체 값을 포함하는 데이터의 인코딩된 집합에 대해 수행된다면, 제 2 부분의 디코딩이 특별한 디코딩된 상기 결과를 만들어내는 특성을 가진다. 또 다른 구현예는 이 장치의 프로세서-판독 가능한 매체에 저장되는 정보를 포함하도 록 포맷팅된 신호를 제공한다.
도 2d는 코딩된 비트스트림을 수정하기 위한 방법(260)의 또 다른 구현예의 블록도를 보여준다. 처음에, 제 1 부분과 제 2 부분을 가지는 코딩된 비트스트림이 액세스된다(262). 이후 코딩된 비트스트림 내의 제 1 부분의 위치에 대한 정보를 제공하는 메타데이터가 액세스된다(264). 이후 제 1 부분에 관한 대체 값이 액세스되고(266), 제 1 부분은 액세스된 대체 값으로 대체된다(268). 일단 대체 값이 제 1 부분을 대체하였다면, 수정된 코딩된 비트스트림이 보내진다(270). "보내기"는, 예컨대 전자 송신이나 디스크 또는 마스터 형태로 보내는 것일 수 있다.
또 다른 구현예는, 방법(260)과 유사하게 2개의 동작을 수반한다. 제 1 동작은 적어도 2개의 부분을 포함하는 코딩된 비트스트림을 액세스하는 것이다. 제 2 부분은 제 2 부분뿐만 아니라 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하다. 제 2 동작은 그 제 2 부분의 디코딩이 여전히 그 결과를 만들어내는 수정된 코딩된 비트스트림을 만들어내기 위해 제 1 부분을 대체 값으로 대체하는 것이다.
추가적인 구현예들은 방법(260)과 같은 방법들의 결과에 관한 것이다. 예컨대, 수정된 인코딩된 데이터를 포함하는 DVD, 하드 디스크, 또는 다른 저장 디바이스와 같은 장치이고, 또 다른 구현예는 그러한 수정된 인코딩된 데이터를 포함하도록 포맷팅된 신호이다. 더 구체적으로, 일 구현예는 프로세서-판독 가능한 매체를 포함하는 장치로서, 이 프로세서-판독 가능한 매체는 그 내부에 수정된 제 1 부분과 제 2 부분을 포함하는 인코딩된 데이터를 저장한다. 수정된 제 1 부분은 제 1 부분의 대체물로서, 이 경우 (1) 제 2 부분은 그 제 2 부분뿐만 아니라 수정된 제 1 부분에 기초하는 결과를 만들어내기 위해 디코딩 가능하고, (2) 제 2 부분의 디코딩이 마치 제 2 부분 및 수정된 제 1 부분보다는 제 1 부분과 제 2 부분에 기초하여 수행된 것과 그 결과는 동일하다. 또 다른 구현예는 이 장치의 프로세서-판독 가능한 매체에 저장되는 인코딩된 데이터를 포함하기 위해 포맷팅된 신호이다.
도 3은 목표 요소의 모든 받아들일 수 있는 대안 값들을 찾는 단계에 관한 일 구현예를 나타내는 흐름 도면(300)을 보여준다. 처음에, 목표 요소의 모든 잠재적인 대안(대체) 값들의 목록이 제공된다(302). 목록에 남아 있는 임의의 대안(대체) 값들이 존재하는지에 대한 결정이 이루어진다(304). 존재하지 않는다면, 프로세스는 종료된다(316). 목록에 대안(대체) 값이 존재한다면, 그 다음 대안(대체) 가능한 값이 얻어지고, 구문 값이 인코딩된다(306). 상태 변수 값들과 상황들을 포함하는 대안(대체) 디코딩 변수 값들이 수정된 디코딩 변수 값들과 같은지에 대한 결정이 이루어진다(308). 만약 같다면, 대안(대체) 값이 받아들일 수 있는 대안 값들의 목록에 저장되고(312), 이후 테스트된 값이 목록으로부터 제거된다(314). 이후 프로세스는 잠재적인 대안(대체) 값들의 목록이 소모될 때까지 단계(304)에서 다시 시작한다.
이제 제 2 요구 조건 R2를 고려한다. 주어진 목표 요소에 관해, 요구 조건 R1을 만족시키는 각각의 대안 값으로 원래의 값을 대체하는 지각 있는 영향을 평가 또는 예측할 필요가 있다. 이러한 평가 또는 예측은 압축된 스트림의 구문 요소 전부에 충분한 액세스를 가지고, 이들 압축된 스트림의 구문 요소 전부를 사용하여 사람의 시각 시스템 또는 청각 시스템(비디오의 경우, 사람에 시각 시스템에 관련이 있다)의 기초가 되는 상과 감도의 수정에 대한 마스킹(masking) 영향을 예측할 수 있다는 점을 상기하라. 그러한 예측의 세부 사항은 지각 모델링(perceptual modeling) 분야의 당업자에게 공지되어 있다. 지각 모델들은 압축 문헌과 워터마킹 문헌 모두에서 널리 인용된다.
지각력의 압축된 영역 계산상 예측들의 사용 외에, 움직임 영상 시퀀스에 스트림을 완전히 압축 해제할 수 있다. 이는, 예컨대 분석이 전처리로서 수행되는 경우일 수 있다. 이 경우, 계산상 예측은 실제 픽셀 데이터를 검사할 수 있다. 이는 더 정확한 지각력 예측을 가져올 수 있다. 또한, 참조 움직임 영상 시퀀스를 얻기 위해 원래의 스트림을 압축 해제한 다음, 대안물로 구문 요소 값을 대체하고, 제 2 움직임 영상 시퀀스를 얻기 위해 그 결과 스트림을 압축 해제함으로써, 대안 값으로 원래의 구문 요소 값을 대체하는 지각력을 평가할 수 있다. 2개의 움직임 영상 시퀀스들 사이의 차이의 지각력을 평가하기 위해 많은 공지된 기술이 사용될 수 있다.
마지막으로, 주관적인 평가에 충분히 호소할 수 있다. 뷰어가 참조 움직임 영상 시퀀스와 수정된 움직임 영상 시퀀스 사이의 차이의 지각력을 평가할 수 있다. 뷰어가 차이를 지각할 수 없다면, 그 수정은 요구 조건 R2를 만족시킨다.
이들은, 하지만 요구 조건 R1을 만족시키는 모든 변경 중 어느 것이 요구 조건 R2를 만족시키는지를 결정하기 위해 사용될 수 있는 방법들 중 일부이다.
이제, 제 3 요구 조건 R3를 고려한다. 목표 구문 요소에 관한 대안 구문 값 을 사용하는 것은, 수정된 스트림이 나중에 움직임 영상 시퀀스로 압축 해제될 때 일부 측정 가능한 변경을 야기하여야 한다. 야기될 수 있는 2가지 종류의 측정 가능한 변경, 즉 "직접적인(direct) 변경" 및 "간접적인(indirect) 변경"이 존재한다.
"직접적인 변경"의 경우, 구문 요소는 움직임 영상 시퀀스의 측정 가능한 아티팩트(artifact)에 직접적으로 대응한다. 예컨대, 휘도 블록 DC 계수의 수정은 대응하는 압축 해제된 블록의 평균 휘도에 있어서의 측정 가능한 변경을 직접적으로 초래하게 된다. 반면에 "간접적인 변경"의 경우, 영상 시퀀스에서 측정된 아티팩트는 오직 스트림에서의 수정에 간접적으로 관련된다. 예컨대, 움직임 벡터의 수정은 예측으로서 사용되는 잘못된 블록을 초래하게 되고, 따라서 대응하는 압축 해제된 블록에서의 올바르지 않은 픽셀 데이터를 가져오게 된다. 어느 움직임 벡터가 사용되었는지를 결정하는 것을 어려울 수 있지만, 상이한 움직임 벡터를 사용하는 것이 다른 측정 가능한 아티팩트에 영향을 줄 수 있다. 움직임 벡터는 더 높거나 더 낮은 평균 휘도를 지닌 재구성된 블록을 만들어내기 위해 사용될 수 있다.
요구 조건 R3의 측정 가능한 변경은 위치들을 식별하고, 페이로드를 복원하기 위해 무슨 변경이 이루어졌는지를 알아보는데 있어서 도움을 주게 된다. 이는 특히 해적판 복사물이 얻어질 때 유용하다. 이루어진 변경을 "알아봄(seeing)"으로써, 해적판 복사물의 소스가 얻어질 수 있다.
일 구현예에서는, 대안 구문 값들의 사용이 더 높은 평균 휘도를 지닌 재구성된 블록을 만들어내고, 상이한 대안 구문 값을 사용하는 것이 더 낮은 평균 휘도 를 지닌 재구성된 블록을 만들어내도록, 어느 움직임 벡터 구문 요소들이 요구 조건 R1과 요구 조건 R2를 만족시키는 적어도 2개의 대안 구문 값들을 가지는지가 결정된다. CABAC 스트림 내의 비트 위치와 함께, 이들 2개의 대안 값들 각각의 CABAC 코딩에 대응하는 비트들의 코딩된 블록들은 메타데이터로서 임베더(embedder)에 보내진다. 대응하는 페이로드 비트의 값에 기초하여, 임베더는 비트들의 원래의 블록을 비트들의 하나 또는 다른 대안 블록에 대응하는 비트들의 블록으로 대체하게 된다. 예컨대, 임베더는 페이로드 비트가 '0'이라면 대응하는 블록에서의 평균 휘도를 감소시키는 구문 값과 연관된 비트들의 블록을 고르거나 선택하고, 페이로드 비트가 '1'이라면 대응하는 블록에서의 평균 휘도를 증가시키는 구문 값과 연관된 비트들의 블록을 고른다. 분명히, 임베딩될 각각의 페이로드 비트에 관해 요구 조건(R1,R2,R3)을 모두 만족시키는 적어도 하나의 목표 요소가 필요하다.
메타데이터는 또한 휘도에 있어서의 변경이 야기될 압축 해제된 움직임 영상 시퀀스에서 프레임 번호와 블록 번호를 포함해야 한다. 더 튼튼하게 하기 위해, 전처리 스테이지가 또한 메타데이터에서의 블록의 원래의 평균 휘도를 저장할 수 있다. 이 정보는 수정된 블록을 식별하고, 그것의 평균 휘도를 메타데이터에 저장된 원래의 값과 비교하기 위해 복구 시(예컨대, 디코딩) 사용된다. 주어진 예에서, 원래의 값보다 높은 평균 휘도는 대응하는 페이로드 비트가 '1'임을 암시하고, 원래의 값보다 낮은 평균 휘도는 대응하는 페이로드 비트가 '0'임을 암시한다.
비트-길이 제약
비트들의 대안 코딩된 블록이 비트들의 원래의 코딩된 블록과 동일한 길이를 가지는 추가된 제약이 존재할 때에는, 그 제약을 간단히 요구 조건 R1에 추가할 수 있다. 다시 말해, 상태 변수들과 영향을 받은 상황들 전부가 그것들이 이전 상태와 동일하게 남아 있고, 그 결과 코딩된 블록이 원래의 것과 동일한 길이라면, 그러한 변화가 받아들여질 수 있다. 예컨대, 다시 도 3을 참조하면 결정 블록(308)이 디코딩 변수 값들이 동일하게 남아있는지를 결정하는 것뿐만 아니라, 결과 코딩된 블록이 원래의 것과 동일한 길이를 가지는지를 결정하기 위해 수정될 수 있다. 또 다른 예로서, 다시 도 3을 참조하면 블록(302)은 원래의 것과 동일한 길이를 가지는 비트들의 코딩된 블록을 초래하는 목표 요소의 모든 잠재적인 대안 값들의 목록을 제공하기 위해 수정될 수 있다.
비트-길이 제약을 추가하기 위한 앞서 설명된 접근은 하나의 가능한 접근이다. 하지만, 일부 응용예들에서는 대안적인 접근이 적합할 수 있다. 이제, 받아들일 수 있는 대안 값들을 찾는 것을 제한하도록 의도된 상이한 접근을 제시한다. 도 5에 설명된 이 구현예에서는, 제 1 단계가 모든 구문 요소들로부터 그것들의 비트스트림에서의 대응하는 코딩된 비트들로의 맵핑을 확립하는 것이다(502). 제 2 단계에서는, 목록으로부터의 1개의 목표 요소가 식별되고, 그 요소를 나타내는 비트스트림에서의 비트들의 코딩된 블록이 식별된다(504).
CABAC이 구문 요소들을 나타내기 위해 비트들의 단편들을 할당할 수 있기 때문에, 상이한 구문 요소들을 나타내는 비트들의 블록들이 중복될 수 있는 가능성이 존재한다. 제 3 단계는 코딩된 비트스트림에서의 표현이 수정될 요소의 표현과 중 복되는 임의의 다른 구문 요소들의 식별이다(506). 이들은 본 명세서에서 중복되는 구문 요소들이라고 부른다. 동일한 비트 길이를 가지는 모든 대안적인 가능한 비트 조합들에 관한 목록이 결정되고(508), 동일한 비트 길이를 가지는 식별된 대안적인 가능한 비트 조합들 중 어느 것이 사용될지를 결정하기 위한 그 다음 나머지 단계들{즉, 단계(510) 내지 단계(522)}은, 목표 요소의 잠재적인 대안적인 값들 중 어느 것이 사용될지를 결정하기 위해 설명된 단계(304) 내지 단계(316)와 각각 실질적으로 동일하다. 한 가지 차이점은 블록(514)이 대안적인 비트 조합이 임의의 중복되는 구문 요소들의 디코딩된 값들이 변경되지 않은 채로 남아 있다는 조건을 만족하는지를 결정하는 것과 디코딩 변수 값들이 변경되지 않은 채로 남아있는지를 결정하는 것을 포함한다는 점이다.
코딩된 비트들의 블록이 길이(n)를 가진다면, 그것이 나타낼 수 있는 2n개의 상이한 가능한 값들이 존재하게 된다. 다음 2가지 기준을 충족시키는 임의의 그러한 값을 검색한다.
1. 중복되는 구문 요소들의 디코딩된 값들이 변경되지 않을 채로 남아 있는다.
2. 코딩된 비트들의 블록에 의해 변경된 상태 변수들과 상황 변수들 모두 코딩된 비트들의 수정되지 않은 블록을 구비하였을 때와 동일한 값들을 지닌 채로 남아 있다.
본 명세서에서는, 검색을 비트들의 원래의 코딩된 블록과 동일한 크기의 비 트들의 대안적인 코딩된 블록을 초래하는 대안적인 값들에만 제한하였다.
구현예들은 중복되는 구문 요소들과 비트-길이 제약들 모두를 다룰 필요는 없다. 오히려, 일정한 구현예들은 다른 고려 사항을 다루지 않고, 중복되는 구문 요소들이나 비트-길이 제약만을 다룰 수 있다.
나아가, 다양한 구현예들이 다수의 구문 요소들에 함께 작용할 수 있다(예컨대, 데이터 스트림에서 연속적인 구문 요소들). 예컨대, 일 구현예는 단일 그룹으로서 다수의 연속적인 구문 요소들(중복되거나 중복되지 않는)을 취급하고, 그룹의 끝에서(하지만 반드시 그 그룹 내의 구문 요소들 사이일 필요는 없음) 디코딩 변수 값들이 변경되지 않을 채로 남아 있도록, 그 그룹에 관한 대체물을 결정한다. 그러한 일 구현예는 목표 요소로서 2개의 연속적인 구문 요소들을 고려하는데, 이 경우 제 2 구분 요소는 중복되는 구문 요소이고, 2개의 구문 요소 모두가 수정되는 것을 허용한다.
정보 임베딩( Information Embedding )
위 논의는 목표 구문 요소를 분석하고, 만약 있다면 비트들의 대안 블록으로 코딩된 비트스트림에서의 비트들의 블록을 대체함으로써 조직될 수 있는 받아들일 수 있는 대안 값들 전부를 식별하기 위한 방법을 설명한다. H.264/AVC 코딩된 시퀀스에서 모든 구문 요소들을 검사함으로써, 적어도 하나의 받아들일 수 있는 대안 값이 존재하는 것들의 목록을 확립할 수 있다. 이는 "변경 가능한 구문 요소들"의 목록이다. 변경될 수 있는 각각의 구문 요소에 관해, 받아들일 수 있는 대안 값들 이 목록을 확립할 수 있다.
비트스트림에서 정보를 임베딩하기 위해 이러한 방법이 어떻게 사용될 수 있는지의 일 예가 제시된다. 정보 임베딩의 목적은 모든 변경 가능한 구문 요소들의 목록에 대한 구문 요소들의 부분 집합을 수정하여, 페이로드에 따라 구문 요소들의 값을 구문 요소들의 원래의 값들로부터의 값을 열거된 받아들일 수 있는 대안 값들 중 하나로 변경하는 것이다. 실제 일 구현예에서는, 이러한 내용이 도 6에 도시된 바와 같은 3개의 단계로 달성된다.
도 6을 참조하면, 프로세스(600)가 존재한다. 프로세스(600)의 제 1 단계에서는, 변경 가능한 구문 요소들의 부분 집합이 선택된다(602). 이러한 부분 집합 선택은 그러한 변경이 디코딩된 상에 대해 이루어지는 지각 있는 영향의 추정치에 기초할 수 있다. 부분 집합 선택은 그러한 상이 신호 처리 또는 의도적인 변경(tampering)에 의해 수정된 후, 디코딩된 상에서의 변화를 검출하는 어려움의 추정치에 기초할 수 있다. 부분 집합 선택은, 예컨대 변경된 블록에서의 연속 비트들의 개수를 제한하거나 임의의 2개의 변경된 블록 사이에 있어야 하는 변경되지 않은 비트들의 최소 개수를 제한하는 구현 요구 조건들에 의해 영향을 받을 수 있다. 바람직한 구현예에서, 제 1 단계는 전처리 동안 수행된다.
제 2 단계에서는 메타데이터가 나중에 사용하기 위해 저장된다(604). 이 메타데이터는 "임베딩 데이터"와 "검출 데이터"로 이루어진다. 임베딩 데이터는 비트들의 원래의 코딩된 블록이 발견될 수 있는 압축된 비트스트림에서의 위치들이고, 비트들의 2개의 블록 중 하나는 대응하는 페이로드 비트가 '0'인 경우 대체 블록으 로서 사용되는 것이며, 나머지 하나는 대응하는 페이로드 비트가 '1'인 경우 대체 블록으로서 사용되는 것이다. 일 구현예에서, 이들 블록 중 하나는 그 자체로서 비트들의 원래 블록이고, 나머지 블록은 비트들의 대안 블록이다. 이 경우, 변경 가능한 구문 요소들의 목록은 오직 1개의 받아들일 수 있는 대안 값이 존재하는 것들을 포함할 수 있다. 또 다른 구현예에서는, 2개의 블록이 모두 상이한 구문 값들에 대응하는 비트들의 대안 블록들이다. 이 경우, 변경 가능한 구문 요소들의 목록은 적어도 2개의 받아들일 수 있는 대안이 존재하는 것들만을 포함할 수 있다.
검출 데이터는 임베딩을 하기 위해 사용될 변경 가능한 요소들의 집합과 그러한 요소들의 원래 값들을 포함한다. 또한 비트스트림 수정이 검출 가능하게 되는 압축 해제된 움직임 영상 시퀀스에서의 위치를 포함한다. 이는 프레임 번호와 블록 번호 또는 매크로블록 번호 또는 픽셀 위치 또는 복구를 위해 요구된 임의의 다른 로케이터(locator)로서 특정될 수 있다. 검출 데이터는 또한 어떠한 변경도 이루어지지 않았다면 측정되는 검출 측정의 값을 포함할 수 있다. 다시 말해, 이는 검출 측정의 원래의 값을 포함할 수 있다. 앞선 예에서, 검출 측정은 특별한 블록의 평균 휘도이고, 검출 데이터는 그 블록의 원래 평균 휘도를 포함할 수 있다. 일 구현예에서, 이러한 제 2 단계는 전처리 동안 수행된다.
밝기와 콘트라스트(contrast)에 있어서의 전체적인 변경 또는 국부적인 변경에 대한 워터마킹 기술의 튼튼함을 증가시키기 위해, 검출 데이터는 또한 워터마킹 프로세스에 의해 수정될 것으로 예상되지 않는 블록들에 관해 저장될 수 있다. 예컨대, 검출 데이터는 워터마크에 의해 변경되지 않는 블록들의 원래의 평균 휘도를 포함할 수 있다. 이후 검출기는 참조 구역에서의 전체 영상, 또는 적어도 그 영상의 부분이 휘도의 변경을 겪었는지를 결정하기 위해 참조로서 검출 데이터를 사용한다. 검출 데이터에서 기록된 참조 블록들에서의 측정된 휘도가 매칭되지 않는다면, 페이로드의 복구 전에 보상이 이루어질 수 있다.
제 3 단계에서는, 변경 가능한 요소에 대응하는 비트들의 원래의 코딩된 블록이 임베딩 데이터와 페이로드를 사용하는 비트들의 상이한 블록으로 대체된다(606). 2가지 경우를 고려한다. 첫 번째 경우, 비트들의 대체 블록은 나타날 페이로드 비트가 '1'과 같은 하나의 심벌 값을 가진다면, 받아들일 수 있는 대안 값들 중 하나에 대응하는 코딩된 비트들의 블록이다. 나타날 페이로드 비트가 '0'과 같은 다른 심벌 값을 가진다면, 코딩된 비트들의 대체 블록은 코딩된 비트들의 원래 블록이다. 두 번째 경우에서는, 부분집합 선택이 적어도 2개의 받아들일 수 있는 대안 값들이 존재하는 요소들에 국한된다. 이 경우, 코딩된 비트들의 대체 블록은 나타날 비트가 '0'이라면 받아들일 수 있는 대안 값 중 하나에 대응하는 코딩된 비트들의 블록이고, 나타날 비트가 '1'이라면 상이한 받아들일 수 있는 대안 값에 대응하는 코딩된 비트들의 블록이다. 2개의 대안 값들은 그것들이 나타내는 라벨인 '0' 또는 '1'과 함께 검출 데이터에 저장된다. 바람직한 실시예에서, 이러한 세 번째 단계는 임베딩 동안 수행된다.
페이로드는 검출 데이터의 도움으로 H.264/AVC 비트스트림으로부터 복구될 수 있다. 검출 데이터는 숨겨진 페이로드 정보와 이들 요소의 원래의 값들을 나타내는 특정 구문 요소들을 가리킨다. 임베딩 프로세스가 '0'을 나타내기 위해 원래 의 값들을 사용하고, '1'을 나타내기 위해 대안 값을 사용하였다면, 검출기는 검출 데이터에 저장된 원래의 값과 비트스트림에서의 값을 비교할 수 있다. 비교시 2개의 값이 매칭된다면, 검출기는 '0'비트를 보고한다. 비교시 2개의 값이 매칭되지 않는다면, 검출기는 '1'비트를 보고한다. 임베딩 프로세스가 원래의 값을 2개의 대안 값 중 하나로 대체하였다면, 이들 2개의 대안 값과 그것들의 대응하는 라벨들이 검출 데이터로부터 복구된다. 이후 검출기는 비트스트림에서의 값을 2개의 대안 값의 각각의 것과 비교하고, 대응하는 라벨을 보고한다.
숨겨진 데이터는 또한 디코딩된 픽셀-영역 상으로부터 복구될 수 있다. 이 프로세스는 부분집합 선택 프로세스에서 사용된 특별한 측정값에 특정된다. 실제적인 일 구현예에서, 이러한 측정값은 픽셀들의 한 블록의 평균 휘도이다. 각각의 수정된 블록의 원래의 평균 휘도는 검출 데이터로부터 복구된다. 검출기는 디코딩된 영상 시퀀스에서 픽셀들의 특정된 블록의 평균 휘도를 계산하고, 그 값을 검출 데이터에 저장된 원래의 값과 비교한다. 계산된 값이 원래의 값보다 높다면, 검출기는 '1'비트를 보고한다. 계산된 값이 원래의 값보다 낮다면, 검출기는 '0'비트를 보고한다.
이러한 복구 방법은, 디코딩된 상이 디코딩 후 그러나 검출 이전에 휘도에 있어서의 균일한 변경에 의해 수정된다면 문제점들을 가질 수 있다. 이를 다루기 위해, 다수의 참조 블록의 평균 휘도가 검출 데이터에 저장될 수 있다. 이들은 임베딩 프로세스에 의해 변경되지 않는 블록들이다. 검출기는 복구 바로 전에 참조 블록들의 평균 휘도를 계산하고, 숨겨진 데이터에 관련되지 않은 임의의 휘도 변경 을 발견할 수 있다. 이들 휘도 변경은 그에 맞게 원래 값들을 조정함으로써 보상될 수 있다.
정보 임베딩은 다양한 응용예를 포함할 수 있다는 점이 명백해진다. 그러한 일 응용예는 페이로드가 데이터스트림에 임베딩되는 워터마킹이다. 다른 응용예는 통신하기를 바라는 임의의 정보를 가상으로 임베딩하는 것을 포함한다. 추가로, 일부 정보 임베딩 응용예는 상이한 요구 조건을 사용할 수 있다. 예컨대, 사용자가 지각할 수 있는 변경을 초래하는 변경을 데이터스트림에 대해 행하는 것이 바람직할 수 있다.
바이패스 모드의 이용
H.264/AVC는 바이패스 모드에서 코딩되는 3가지 구문 요소를 특정한다. 이들을 위해서는, 인코딩 동안 오직 하나의 변수가 수정된다. 범위의 바닥을 나타내는 L 변수만이 비트들이 코딩될 때 변경된다. 그러므로, 원래의 것과 동일한 디코딩 변수 값들을 만들어내는 대안 구문 값들을 찾을 가능성은 바이패스 모드 구문 요소들을 통해 더 높아진다. 실제적인 일 구현예에서는, 움직임 벡터 차이 구문 요소들의 추가물만이 고려된다. 이들 각각에 관해, 1) 비트들의 코딩된 블록에서 동일한 개수의 비트들을 초래하고, 2) 임의의 다른 구문 요소들의 값들에 영향을 미치지 않으며, 3) 그것의 대응하는 빈 스트링이 처리된 후, CABAC 인코더에서 동일한 L 값을 만들어내는 대안 값들을 검색한다. 이들로부터, 전술한 바와 같은 임베딩을 위해 사용될 부분집합을 선택한다(예컨대, 도 6을 보라). 고정된 대체 길이의 바이 패스-모드에 관한 단계들이 도 4에서 도시된 방법(400)에 의해 보여진다. 본 명세서에서, 단계(402) 내지 단계(416)에서의 프로세스들은, 단계(408)가 대안 값(L)이 대안적인 디코딩 변수 값들 대(vs.) 수정된 디코딩 변수 값들{즉, 단계(308)}의 결정과는 반대로, CABAC 코딩에 관한 수정된 L과 같다는 결정이라는 점을 제외하고는, 도 3의 방법에 각각 도시된 단계(302) 내지 단계(316)에서 앞서 설명된 것과 동일하다.
명백해 지듯이, 목표 구분 요소와, 목표 구문 요소 다음에 오는 하나 이상의 구문 요소들에 관한 값들을 포함하는 원래의 구문 값들을 만들어내기 위해, 수정되지 않은 비트스트림이 디코딩될 수 있다. 전술한 바와 같이, 목표 구문 요소 다음에 오는 하나 이상의 구문 요소의 코딩은, 적어도 부분적으로는 목표 구문 요소의 값에 의존한다. 목표 구문 요소의 값이 수정된 후, 수정된 구문 값과, 이렇게 수정된 구문 목표 구문 요소 다음에 오는 하나 이상의 구문 요소의 값들에 대응하는 결과로서 생기는 수정된 비트스트림이 만들어진다. 이러한 수정된 비트스트림은 또한 디코딩될 수 있다.
도 7을 참조하면, 예컨대 디코더, DVD 플레이어, 또는 수정된 비트스트림을 액세스하고 디코딩하는 또 다른 디바이스에 의해 수행될 수 있는 프로세스(700)가 도시되어 있다. 수정된 비트스트림의 디코딩은 목표 구문 요소의 수정된 값을 만들어내고, 또한 목표 구문 요소 다음에 온 하나 이상의 구문 요소들의 원래의 값들을 만들어낸다.
더 구체적으로, 프로세스(700)를 참조하면, 데이터의 수정된 집합이 액세스 된다(710). 데이터의 수정된 집합은 수정된 부분과, 이 구현예에서는 수정되지 않은 또 다른 부분을 포함한다. 위에서 지적된 바와 같이, 수정되지 않은 부분은 수정된 부분뿐만 아니라 수정되지 않은 부분에 기초하는 결과를 만들어내기 위해 디코딩될 수 있다.
프로세스(700)는 수정된 부분(720)과 수정되지 않은 부분(730)의 디코딩을 포함한다. 수정되지 않은 부분을 디코딩하는 것은, 마치 수정된 부분이 수정되지 않은 것과 동일한 결과를 만들어낸다.
도 8을 참조하면, 페이로드 정보를 복구하기 위해, 또는 더 일반적으로 워터마크를 검출하기 위한 프로세스(800)가 도시되어 있다. 프로세스(800)는 가능한 워터마크(810)를 확인하기 위한 위치를 결정하는 것을 포함한다. 일반적으로 수정된 데이터를 가리키고 그 다음 검출을 허용하기 위해 삽입된 워터마크는 반드시 삽입될 필요는 없다는 점을 주목하라. 프로세스(800)는 결정된 위치로부터 데이터를 액세스(820)하고, 분석(830)하는 것을 포함한다. 프로세스(800)는 또한 만약 워터마크가 존재한다면, 분석에 기초한 워터마크 정보를 식별하는 것을 더 포함한다(840). 식별된 워터마크 정보는, 예컨대 비트 또는 정보의 다른 유닛일 수 있다. 프로세스(800)는 페이로드를 구성하는 하나 이상의 추가 비트를 식별하기 위해, 하나 이상의 다른 위치들에 관해 반복될 수 있다. 그러므로, 전체 페이로드는 프로세스(800)를 사용하여 복구될 수 있다.
프로세스(800)의 구현예는 픽셀-영역 데이터를 분석하는 것과 함께 수정된 비트스트림을 분석하는 것을 포함한다. 예컨대, 비트스트림은 앞서 설명된 구현예 중 하나에 따라, 목표 요소와 관련된 비트들을 수정함으로써 수정될 수 있다. 워터마크는 적절한 비트 위치들을 액세스하고 그러한 위치들의 워터마크(수정)에 대해 테스트함으로써 그러한 비트스트림에서 검출될 수 있다. 메타데이터에서 발견된 것과 같은, 비트 위치들과 수정된 값들(또는 가능하게는 수정된 값들)은 또한 검출 데이터에 포함될 수 있다.
대안적으로, 또한 추가로 그러한 수정된 비트스트림은 디코딩될 수 있고, 가능하게는 재인코딩을 포함하는 다른 처리를 겪을 수 있다. 재인코딩의 경우, 그러한 재인코딩된 비트스트림은 원래의 수정된 비트스트림에서와, 동일한 위치에서, 동일한 수정된 목표 요소를 포함할 것으로 예상되지 않는다. 하지만, 재인코딩된 비트스트림은 원래의 수정의 영향이 여전히 통상적으로 존재하는 픽셀-영역 디지털 표현을 만들어내기 위해 디코딩될 수 있다. 그러므로, 원래의 수정이 영향력을 미치는 프레임 및 블록 번호를 식별하는 검출 데이터가 유용하게 된다. 예컨대, 목표 요소는 원래는 특별한 블록에 관한 움직임 벡터였을 수 있고, 움직임 벡터를 수정하는 영향력은 그러한 특별한 블록의 평균 휘도에 있어서 증가될 수 있다. 평균 휘도에서의 그러한 증가는 통상적으로 원래의 수정된 비트스트림의 처리에도 불구하고 보존된다. 하지만, 움직임 벡터와, 그 움직임 벡터에 대한 원래의 변경은 통상적으로 정확하게 동일하지 않게 된다.
도 9를 참조하면, 프로세스(900)는 픽셀-영역 데이터로부터 워터마크 정보가 검출되는 일 구현예를 설명한다. 프로세스(900)는 가능한 워터마크(910)에 관한 프레임 식별자와 블록 식별자를 결정하는 것과, 결정된 프레임 식별자와 블록 식별자 에 대응하는 픽셀-영역 데이터를 액세스하는 것(920)을 포함한다. 프로세스(900)는 액세스된 데이터에 관한 특징의 값을 결정하는 것과, 결정된 값과 벤치마크(benchmark)를 비교하는 것을 포함한다. 이후 프로세스(900)는 만약 있다면 그 비교에 기초한 워터마크 정보를 식별하는 것을 포함한다(950).
프로세스(800) 또는 프로세스(900)의 다양한 구현예들은 하나 이상의 다양한 데이터를 포함하는 저장된 검출 데이터를 사용한다. 예컨대, 검출 데이터는 가능한 워터마크를 확인하기 위한 위치들을 식별하는 위치 정보를 포함할 수 있다. 그 위치 정보는, 예컨대 프레임 식별자 및/또는 블록 식별자를 포함할 수 있다.
검출 데이터는, 예컨대 1개의 특징에 관한 벤치마크 값을 포함할 수 있다. 그 벤치마크는, 예컨대 위치가 수정되기 전의 특징의 값일 수 있다. 벤치마크는, 예컨대 그러한 변화 표시를 제공하기 위해 액세스된 위치(820)에 관한 특징의 실제 값(새로운 벤치마크)과 비교될 수 있다. 예컨대, 그러한 비교는 그 값(새로운 벤치마크)이 수정의 결과 증가되거나 감소되었는지를 가리킬 수 있다.
검출 데이터는, 예컨대 상이한 {워터마킹되지 않은(non-watermarked)} 위치로부터의 특징에 관한 기본 값을 포함할 수 있다. 그러한 기본 값은, 예컨대 워터마킹되지 않은 위치의 평균 휘도일 수 있다. 기본 값은, 전술한 바와 같이, 워터마킹된 위치보다 더 많이 영향을 받은 데이터에 대한 변경이 존재하였는지를 결정하기 위해 사용될 수 있다. 일정한 환경에서, 전반적인 변경(예컨대, 전체 프레임에 대한 변경)이 있었을 수 있다. 예컨대, 전체 프레임의 평균 휘도는 변경되었을 수 있다. 이후 그 기본 값은 워터마킹되지 않은 위치(새로운 기본 값)에서 특징의 새 로운 값과 비교될 수 있다. 그 차이가 임계값보다 많다면, 전반적인 변경이 일어났다고 결정될 수 있다. 대안적으로, 그 차이는 전반적인 차이로서 간단히 취해질 수 있고, 그 차이는 전반적인 변경의 원인이 되는 (가능한) 워터마킹된 위치에 관해 결정된 값(새로운 벤치마크)에 추가될 수 있다. 이러한 대안예에서, 그 차이는 그 값(새로운 벤치마크) 대신 벤치마크에 (대안적으로) 추가될 수 있음을 주목하라. 나아가, 일정한 구현예들에서, 기본 값과 새로운 기본 값 사이의 비가 결정될 수 있고, 그 비는 벤치마크나 새로운 벤치마크에 곱해질 수 있다.
명백히, 프로세스(800)는 처리 디바이스들을 포함하는 다양한 디바이스에 의해 수행될 수 있다. 그러한 디바이스들은 또한, 예컨대 액세스된 데이터, 벤치마크 값, 기본 값, 및 가능한 워터마크 정보의 위치(들)와 같은 데이터를 저장하기 위한 저장 디바이스를 포함할 수 있다. 나아가, 프로세스(800)는 또한 명령어들의 하나의 집합으로 구현될 수 있다.
명백하게 되듯이, 구문 요소는 하나 이상의 다양한 상이한 타입의 정보를 나타낼 수 있다. 예컨대, 구문 요소는 움직임 벡터, 나머지(residue) DCT(discrete cosine transform) 계수, 매크로블록 타입, 양자화 파라미터, 또는 플래그일 수 있다. 따라서, 구문 요소들은 모두 동일한 길이를 가질 필요는 없고, 다양한 상이한 길이들을 가질 수 있다. 본 출원에 개시된 다양한 구현예들은, 어떠한 타입의 정보가 구문 요소에 의해 나타나는지와, 그 구문 요소의 크기/길이에 무관하게, 임의의 타입의 구문 요소에 작용할 수 있다.
추가로, 앞에서 지적된 바와 같이, 다양한 구현예가 다수의 구문 요소들에 함께 작용할 수 있다(예컨대, 데이터 스트림에서 연속적인 구문 요소들). 예컨대, 일 구현예는 다수의 연속적인 구문 요소들(중복되거나 중복되지 않는)을 단일 그룹으로서 취급하고, 그룹의 끝(하지만 반드시 그 그룹 내의 구문 요소들 사이일 필요는 없음)에서의 디코딩 변수 값들이 변경되지 않은 채로 남아 있도록 그 그룹에 관한 대체물을 결정한다.
본 명세서에서 설명된 구현예들은, 예컨대 방법 또는 프로세스, 장치, 또는 소프트웨어 프로그램으로 구현될 수 있다. 비록 단일 형태의 구현예(예컨대, 방법으로서만 논의된)의 상황에서만 논의되었을지라도, 논의된 특징들의 구현예는 또한 다른 형태들(예컨대, 장치 또는 프로그램)에서 구현될 수 있다. 장치는, 예컨대 적절한 하드웨어, 소프트웨어, 및 펌웨어로 구현될 수 있다. 방법들은, 예컨대 일반적으로 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그래밍 가능한 논리 디바이스를 포함하는 처리 디바이스들을 가리키는 프로세서와 같은 장치에서 구현될 수 있다. 처리 디바이스들은 또한, 예컨대 컴퓨터, 이동 전화기, 휴대 가능한/PDA(personal digital assistant)와 같은 통신 디바이스들과, 엔드-유저(end-user)들 사이의 정보의 교환을 용이하게 하는 다른 디바이스들을 포함한다.
본 명세서에서 설명된 다양한 프로세스와 특징의 구현예들은, 다양한 상이한 장비 또는 응용예들, 특히 예컨대 데이터 인코딩 및 데이터 디코딩과 연관된 장비 또는 응용예들에서 구현될 수 있다. 장비의 예로는, 비디오 코더, 비디오 디코더, 비디오 코덱(codec), 웹 서버, 셋톱 박스, 랩톱(laptop), 개인용 컴퓨터, 이동 전화기, PDA, 및 다른 통신 디바이스가 있다. 명백히 지듯이, 그러한 장비는 이동성 이 있을 수 있고, 심지어는 이동 차량에 설치될 수 있다.
추가로, 이러한 방법들은 프로세서에 의해 수행되는 명령들에 의해 구현될 수 있고, 그러한 명령들은 예컨대 집적 회로, 소프트웨어 운반체(carrier), 또는 하드 디스크, 컴팩트(compact) 디스켓, RAM(random access mamory), 또는 ROM(read-only memory)과 같은 다른 저장 디바이스와 같은 프로세서-판독 가능한 매체에 저장될 수 있다. 그러한 명령들은 프로세서-판독 가능한 매체에 명백히 구현된 응용 프로그램을 형성할 수 있다. 명령들은, 예컨대 하드웨어, 펌웨어, 소프트웨어, 또는 조합일 수 있다. 명령들은, 예컨대 운영 시스템, 별도의 애플리케이션, 또는 이들 2개의 조합에서 발견될 수 있다. 그러므로, 프로세서는, 예컨대 프로세스를 실행하도록 구성된 디바이스와 프로세스를 실행하기 위한 명령들을 가지는 컴퓨터-판독 가능한 매체를 포함하는 디바이스 모두가 그 특징이 될 수 있다.
당업자에게 분명해지듯이, 구현예들은 또한 예컨대 저장되거나 송신될 수 있는 정보를 운반하도록 포맷팅된 신호를 만들 수 있다. 그 정보는, 예컨대 방법을 수행하기 위한 명령들 또는 설명된 구현예들 중 하나에 의해 만들어진 데이터를 포함할 수 있다. 그러한 신호는, 예컨대 전자파{예컨대, 스펙트럼의 무선(radio) 주파수 부분을 사용하는)나 기저대역 신호로서 포맷팅될 수 있다. 그러한 포맷팅은, 예컨대 데이터 스트림을 인코딩하는 것과 인코딩된 데이터 스트림으로 반송파(carrier)를 변조하는 것을 포함할 수 있다. 신호가 운반하는 정보는, 예컨대 아날로그 정보이거나 디지털 정보일 수 있다. 그 신호는 알려져 있는 것처럼, 다양한 상이한 유선 링크 또는 무선 링크를 통해 송신될 수 있다.
다수의 구현예들이 설명되었다. 그렇지만, 다양한 수정예가 만들어질 수 있음이 이해된다. 예컨대, 상이한 구현예들의 요소들이 다른 구현예들을 만들어내기 위해 조합, 보충, 수정 또는 제거될 수 있다. 추가로, 당업자라면 다른 구조와 프로세스가 본 명세서에 개시된 것을 대신할 수 있고, 그 결과로 생긴 구현예들은 적어도 실질적으로 개시된 구현예들과 동일한 결과(들)를 달성하기 위해 적어도 실질적으로 동일한 방식(들)으로 적어도 실질적으로 동일한 기능(들)을 수행하게 된다는 것을 이해하게 된다. 따라서, 이들 및 다른 구현예들이 본 출원에 의해 예측되고, 후속하는 청구항들의 범주 내에 있다.
전술한 바와 같이, 본 발명은 워터마킹에 관련된 코딩이 필요한 분야에 이용 가능하다.

Claims (54)

  1. 수정된 코드 부분을 결정하는 방법으로서,
    산술적으로 인코딩된 데이터를 액세스하는 단계로서, 산술적으로 인코딩된 데이터는 산술 코드로 인코딩된 데이터를 포함하고, 인코딩된 데이터는 적어도 하나의 제 1 코딩된 부분 및 제 2 코딩된 부분을 포함하고, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어서, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 공통 결과를 생성하기 위해 제 2 코딩된 부분이 디코딩가능하도록 수정된 제 1 산술적으로 코딩된 부분을 결정하는 단계를 포함하고,
    결정하는 단계는 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 CABAC(Context-based Adaptive Binary Arithmetic Coding: 콘텍스트-기반의 적응형 2진 산술 코딩) 상태 값을 발생시키는 수정된 제 1 산술적으로 코딩된 부분을 결정하는 단계를 포함하는, 수정된 코드 부분을 결정하는 방법.
  2. 제 1항에 있어서,
    제 1 코딩된 부분을 수정된 제 1 산술적으로 코딩된 부분으로 대체하는 단계를 더 포함하는, 수정된 코드 부분을 결정하는 방법.
  3. 제 1항에 있어서,
    수정된 제 1 산술적으로 코딩된 부분은 제 1 코딩된 부분의 비트 길이와 같은 비트 길이를 갖는, 수정된 코드 부분을 결정하는 방법.
  4. 삭제
  5. 제 1항에 있어서,
    제 1 코딩된 부분의 디코딩은 제 1 영상 결과를 생성하고, 수정된 제 1 산술적으로 코딩된 부분의 디코딩은 제 1 영상 결과와 상이한 수정된 제 1 영상 결과를 생성하는, 수정된 코드 부분을 결정하는 방법.
  6. 제 5항에 있어서,
    수정된 제 1 산술적으로 코딩된 부분을 결정하는 단계는, 수정된 제 1 영상 결과가 (1) 뷰어(viewer)의 관점에서 감지할 수 없고, (2) 처리 디바이스에 의해 검출 가능한 제 1 영상 결과로부터의 차이를 가지는 수정된 제 1 산술적으로 코딩된 부분을 결정하는 단계를 포함하는, 수정된 코드 부분을 결정하는 방법.
  7. 제 1항에 있어서,
    수정된 제 1 산술적으로 코딩된 부분은, 제 1 코딩된 부분을 수정된 제 1 산술적으로 코딩된 부분으로 대체함으로써, 인코딩된 데이터를 워터마킹(watermarking)하기 위함인, 수정된 코드 부분을 결정하는 방법.
  8. 제 1항에 있어서,
    제 1 코딩된 부분의 디코딩으로부터의 출력은 제 1 코딩된 부분의 인코딩으로부터 만들어진 상태를 포함하는, 수정된 코드 부분을 결정하는 방법.
  9. 제 1항에 있어서,
    제 1 코딩된 부분은 CABAC 코딩된 비트스트림에서의 구문 요소를 포함하는, 수정된 코드 부분을 결정하는 방법.
  10. 제 9항에 있어서,
    결정하는 단계는
    구문 요소에 대한 모든 가능한 대안적인 대체 값들을 결정하는 단계와;
    각각의 가능한 대안적인 대체 값에 관해, 대체 값이 구문 요소와 동일한 상태 변수 값을 발생시키는지를 결정하는 단계와;
    구문 요소와 동일한 상태 변수 값을 발생시키는 대안적인 대체 값들의 목록을 저장(save)하는 단계를
    더 포함하는, 수정된 코드 부분을 결정하는 방법.
  11. 제 10항에 있어서,
    대체 값이 동일한 상태 변수를 발생시키는지를 결정하기 전에, 대안적인 대체 값을 인코딩하는 단계를 더 포함하는, 수정된 코드 부분을 결정하는 방법.
  12. 제 1항에 있어서,
    제 1 코딩된 부분은 코딩된 구문 요소들을 포함하고, 수정된 제 1 산술적으로 코딩된 부분은 제 1 코딩된 부분의 비트 길이와 같은 비트 길이를 갖고, 수정된 제 1 산술적으로 코딩된 부분은 제 1 코딩된 부분에 의해 발생되었을 내부 CABAC 범위 값과 동일한 CABAC 인코더에서의 내부 CABAC 범위 값을 발생시키는, 수정된 코드 부분을 결정하는 방법.
  13. 제 1항에 있어서,
    제 2 코딩된 부분은 각각 대응하는 상태 변수 값을 가지는 2개 이상의 코딩된 구문 요소를 포함하고, 수정된 제 1 산술적으로 코딩된 부분은 제 2 코딩된 부분 구문 요소들 전부에 대한 상태 변수 값들을 유지하는, 수정된 코드 부분을 결정하는 방법.
  14. 삭제
  15. 제 1항에 있어서,
    인코딩된 데이터는 엔트로피 인코딩된 데이터를 포함하고,
    제 1 코딩된 부분은 구문 요소를 포함하며,
    수정된 제 1 산술적으로 코딩된 부분은 구문 요소를 수정한 것을 포함하는, 수정된 코드 부분을 결정하는 방법.
  16. 수정된 코드 부분을 결정하는 장치로서,
    적어도 하나의 제 1 코딩된 부분 및 제 2 코딩된 부분을 포함하는 산술적으로 인코딩된 데이터를 액세스하기 위한 액세스 유닛으로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 유닛과;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 공통 결과를 생성하기 위해 제 2 코딩된 부분이 디코딩가능하도록 수정된 제 1 산술적으로 코딩된 부분을 결정하기 위한 수정 유닛을 포함하고,
    수정 유닛은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는 수정된 제 1 산술적으로 코딩된 부분을 결정하는, 수정된 코드 부분을 결정하는 장치.
  17. 수정된 코드 부분을 결정하는 장치로서,
    적어도 하나의 제 1 코딩된 부분 및 제 2 코딩된 부분을 포함하는 산술적으로 인코딩된 데이터를 액세스하기 위한 액세스 수단으로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 수단과;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 공통 결과를 생성하기 위해 제 2 코딩된 부분이 디코딩가능하도록 수정된 제 1 산술적으로 코딩된 부분을 결정하기 위한 결정 수단을 포함하고,
    결정 수단은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는 수정된 제 1 산술적으로 코딩된 부분을 결정하는, 수정된 코드 부분을 결정하는 장치.
  18. 컴퓨터-판독 가능한 매체로서,
    적어도 하나의 제 1 코딩된 부분 및 제 2 코딩된 부분을 포함하는 산술적으로 인코딩된 데이터를 액세스하는 단계로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 공통 결과를 생성하기 위해 제 2 코딩된 부분이 디코딩가능하도록 수정된 제 1 산술적으로 코딩된 부분을 결정하는 단계를
    적어도 수행하기 위해 컴퓨터-판독 가능한 매체 상에 저장된 명령을 포함하고,
    결정 단계는 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는 수정된 제 1 부분을 결정하는 단계를 포함하는, 컴퓨터-판독 가능한 매체.
  19. 데이터의 산술적으로 인코딩된 집합의 제 1 코딩된 부분에 대한 산술적으로 인코딩된 대체 부분을 식별하는 프로세서-판독 가능한 매체에 저장된 정보를 포함하는, 프로세서-판독 가능한 매체로서,
    데이터의 인코딩된 집합은 또한 제 2 코딩된 부분을 포함하고, 제 2 코딩된 부분의 디코딩은 제 2 코딩된 부분과 제 1 코딩된 부분에 기초하며, 산술적으로 인코딩된 대체 부분은
    제 1 코딩된 부분을 포함하는 데이터의 인코딩된 집합에 대해 디코딩이 수행된다면, 제 2 코딩된 부분의 디코딩이 디코딩된 결과를 만들어내고,
    제 1 코딩된 부분 대신 산술적으로 인코딩된 대체 부분을 포함하는 데이터의 인코딩된 집합에 대해 디코딩이 수행된다면, 제 2 코딩된 부분의 디코딩이 디코딩된 결과를 만들어내게 하는
    특성을 가지며,
    산술적으로 인코딩된 대체 부분은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 프로세서-판독 가능한 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 코드 부분을 대체하는 방법으로서,
    적어도 하나의 제 1 코딩된 부분과 제 2 코딩된 부분을 포함하는 산술적으로 코딩된 비트스트림을 액세스하는 단계로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어서, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 대체 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 제 2 코딩된 부분의 디코딩이 공통 결과를 생성하는 수정된 코딩된 비트스트림을 생성하기 위해 제 1 코딩된 부분을 대체 산술적으로 코딩된 부분으로 대체하는 단계로서, 대체 산술적으로 코딩된 부분은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 대체 단계를
    포함하는, 코드 부분을 대체하는 방법.
  24. 제 23항에 있어서,
    제 1 코딩된 부분의 위치 표시기를 액세스하는 단계를
    더 포함하는, 코드 부분을 대체하는 방법.
  25. 제 23항에 있어서,
    하나의 정보를 액세스하는 단계를 더 포함하고,
    제 1 코딩된 부분을 대체하는 단계는 액세스된 정보에 기초하여 제 1 코딩된 부분을 대체하는 단계를 포함하는, 코드 부분을 대체하는 방법.
  26. 제 25항에 있어서,
    제 1 코딩된 부분을 대체하는 단계는 코딩된 비트스트림을 워터마킹하는 것의 부분이고, 액세스된 정보는 페이로드 정보를 포함하는, 코드 부분을 대체하는 방법.
  27. 제 26항에 있어서,
    페이로드 정보의 값은 제 1 코딩된 부분이 대체될지 여부를 지시하는, 코드 부분을 대체하는 방법.
  28. 제 26항에 있어서,
    페이로드 정보의 값은 대체 산술적으로 코딩된 부분을 포함하는 다수의 잠재적인 대체 코딩된 부분들 중 어느 것이 제 1 코딩된 부분을 대체할지를 지시하는, 코드 부분을 대체하는 방법.
  29. 삭제
  30. 삭제
  31. 제 23항에 있어서,
    산술적으로 코딩된 비트스트림은 CABAC 코딩된 비트스트림인, 코드 부분을 대체하는 방법.
  32. 삭제
  33. 제 31항에 있어서,
    액세스된 코딩된 비트스트림은 CABAC 코딩된 비트스트림을 포함하고, 제 1 코딩된 부분은 CABAC 코딩된 비트스트림에서 적어도 하나의 코딩된 구문 요소를 포함하는, 코드 부분을 대체하는 방법.
  34. 제 24항에 있어서,
    액세스된 표시기는 메타데이터(metadata)를 포함하는, 코드 부분을 대체하는 방법.
  35. 제 23항에 있어서,
    제 2 코딩된 부분은 2개 이상의 구문 요소를 포함하고, 2개 이상의 구문 요소 각각은 수정된 코딩된 비트스트림을 디코딩하는 동안 만들어지는 대응하는 상태 변수 값을 가지며,
    제 1 코딩된 부분에 관한 대체 산술적으로 코딩된 부분은, 2개 이상의 구문 요소 각각에 관한 상태 변수 값들을 마치 제 1 코딩된 부분이 수정된 코딩된 비트스트림에서 대체 산술적으로 코딩된 부분 대신 사용된 것과 동일하게 유지하는, 코드 부분을 대체하는 방법.
  36. 컴퓨터-판독 가능한 매체로서,
    적어도 하나의 제 1 코딩된 부분 및 제 2 코딩된 부분을 포함하는 산술적으로 코딩된 비트스트림을 액세스하는 단계로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어서, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 대체 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 제 2 코딩된 부분의 디코딩이 공통 결과를 생성하는 수정된 코딩된 비트스트림을 생성하기 위해 제 1 코딩된 부분을 대체 산술적으로 코딩된 부분으로 대체하는 단계로서, 대체 산술적으로 코딩된 부분은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 대체 단계를
    적어도 수행하기 위해 컴퓨터-판독 가능한 매체 상에 저장된 명령을 포함하는 프로세서-판독 가능한 매체.
  37. 프로세서-판독 가능한 매체로서,
    프로세서-판독 가능한 매체는 수정된 제 1 코딩된 부분과 제 2 코딩된 부분을 포함하는 산술적으로 인코딩된 데이터를 저장하고, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분의 대체물이며,
    수정된 제 1 코딩된 부분 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하고,
    제 2 코딩된 부분의 디코딩은 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 기초하여 공통 결과를 생성하고,
    수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 프로세서-판독 가능한 매체.
  38. 제 37항에 있어서,
    수정된 제 1 코딩된 부분은 인코딩된 데이터에 포함된 워터마크의 적어도 일부분인, 프로세서-판독 가능한 매체.
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 코드 부분을 디코딩하는 방법으로서,
    수정된 제 1 코딩된 부분과 제 2 코딩된 부분을 포함하는 산술적으로 코딩된 데이터의 수정된 집합을 액세스하는 단계로서, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분의 수정으로부터 생긴 것이고, 수정된 제 1 코딩된 부분 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    공통 결과를 생성하기 위해 제 2 코딩된 부분을 디코딩하는 단계로서, 공통 결과는, 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 기초하여 제 2 코딩된 부분의 디코딩이 수행될 지의 여부와 동일한, 제 2 코딩된 부분의 디코딩 단계와;
    수정된 제 1 코딩된 부분을 디코딩하는 단계로서, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 수정된 제 1 코딩된 부분의 디코딩 단계를
    포함하는, 코드 부분을 디코딩하는 방법.
  44. 제 43항에 있어서,
    수정된 제 1 코딩된 부분은 하나의 정보의 값에 기초하여 이루어진 수정을 반영하고,
    상기 방법은 수정된 제 1 코딩된 부분의 디코딩에 기초하여 정보의 값을 결정하는 단계를 더 포함하는, 코드 부분을 디코딩하는 방법.
  45. 제 43항에 있어서,
    수정된 제 1 코딩된 부분은 데이터의 수정된 집합에 포함된 워터마크의 적어도 일부분인, 코드 부분을 디코딩하는 방법.
  46. 제 43항에 있어서,
    데이터의 액세스된 수정된 집합은 CABAC 인코딩된 비트스트림을 포함하고, 제 1 산술적으로 코딩된 부분은 적어도 하나의 코딩된 구문 요소를 포함하는, 코드 부분을 디코딩하는 방법.
  47. 제 46항에 있어서,
    수정된 제 1 코딩된 부분은 수정된 구문 요소를 포함하고, 수정된 구문 요소는 CABAC 인코딩된 비트스트림에 관해, 제 1 산술적으로 코딩된 부분과 동일한 디코딩 변수를 초래하는, 코드 부분을 디코딩하는 방법.
  48. 제 46항에 있어서,
    수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분의 비트 길이와 같은 비트 길이를 가지는 수정된 구문 요소를 포함하고, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분에 의해 발생되었을 내부 CABAC 범위 값과 동일한 CABAC 인코더에서 내부 CABAC 범위 값을 초래하는, 코드 부분을 디코딩하는 방법.
  49. 컴퓨터-판독 가능한 매체로서,
    수정된 제 1 코딩된 부분과 제 2 코딩된 부분을 포함하는 산술적으로 코딩된 데이터의 수정된 집합을 액세스하는 단계로서, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분의 수정으로부터 생긴 것이고, 수정된 제 1 코딩된 부분 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 단계와;
    공통 결과를 생성하기 위해 제 2 코딩된 부분을 디코딩하는 단계로서, 공통 결과는, 제 1 산술적으로 코딩된 부분의 디코딩으로부터의 출력, 또는 수정된 제 1 코딩된 부분의 디코딩으로부터의 출력에 기초하여 제 2 코딩된 부분의 디코딩이 수행될 지의 여부와 동일한, 제 2 코딩된 부분의 디코딩 단계와;
    수정된 제 1 코딩된 부분을 디코딩하는 단계로서, 수정된 제 1 코딩된 부분은 제 1 산술적으로 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 수정된 제 1 코딩된 부분의 디코딩 단계를
    적어도 수행하기 위해 컴퓨터-판독 가능한 매체 상에 저장된 명령을 포함하는. 컴퓨터-판독 가능한 매체.
  50. 제 5항에 있어서, 제 1 영상 결과는 제 1 영상의 부분이고, 수정된 제 1 영상 결과는 수정된 제 1 영상의 부분이고, 상기 방법은,
    하나 이상의 워터마킹 비트를 제 1 영상에 적용하는데 사용하기 위해 수정된 제 1 산술적으로 코딩된 부분을 제공하는 단계와;
    수정된 제 1 영상으로부터 하나 이상의 워터마킹 비트를 복구하는데 사용하기 위해 수정된 제 1 영상 결과의 위치를 식별하는 위치 정보를 제공하는 단계를
    더 포함하는, 수정된 코드 부분을 결정하는 방법.
  51. 제 50항에 있어서, 위치 정보는 프레임 번호 및 블록 번호를 포함하는, 수정된 코드 부분을 결정하는 방법.
  52. 제 16항에 있어서, 제 1 부분의 디코딩은 제 1 영상의 부분인 제 1 결과를 생성하고, 수정된 제 1 산술적으로 코딩된 부분의 디코딩은, 제 1 결과와 다르고 수정된 제 1 영상의 부분인 수정된 제 1 결과를 생성하고, 상기 장치는
    (i) 하나 이상의 워터마킹 비트를 제 1 영상에 적용하는데 사용하기 위해 수정된 제 1 산술적으로 코딩된 부분, 및 (ii) 수정된 제 1 영상으로부터 하나 이상의 워터마킹 비트를 복구하는데 사용하기 위해 수정된 제 1 결과의 위치를 식별하는 위치 정보를 저장하는 메모리를
    더 포함하는, 수정된 코드 부분을 결정하는 장치.
  53. 코드 부분을 대체하는 장치로서,
    적어도 하나의 제 1 코딩된 부분과 제 2 코딩된 부분을 포함하는 산술적으로 코딩된 비트스트림을 액세스하는 액세스 유닛으로서, 제 1 및 제 2 코딩된 부분은 메모리를 갖는 코드로 코딩되어, 제 2 코딩된 부분의 디코딩은 제 1 코딩된 부분의 디코딩으로부터의 출력에 의존하는, 액세스 유닛과;
    제 1 코딩된 부분의 디코딩으로부터의 출력, 또는 대체 산술적으로 코딩된 부분의 디코딩으로부터의 출력에 기초하여 제 2 코딩된 부분의 디코딩이 공통 결과를 생성하는 수정된 코딩된 비트스트림을 생성하기 위해 제 1 코딩된 부분을 대체 산술적으로 코딩된 부분으로 대체하는 대체 유닛으로서, 대체 산술적으로 코딩된 부분은 제 1 코딩된 부분에 대한 적어도 하나의 상태 값과 동일한 적어도 하나의 콘텍스트-기반의 적응형 2진 산술 코딩(CABAC) 상태 값을 발생시키는, 대체 유닛을
    포함하는, 코드 부분을 대체하는 장치.
  54. 제 53항에 있어서, (i) 대체 값과, (ii) 대체 값에 의해 표시된 하나 이상의 워터마킹 비트를 복구하는데 사용하기 위해 디코딩된 영상에서의 위치를 식별하는 위치 정보를 저장하는 메모리를 더 포함하는, 코드 부분을 대체하는 장치.
KR1020097018442A 2007-03-23 2007-11-02 코딩된 비트스트림의 수정 KR101398534B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US91970207P 2007-03-23 2007-03-23
US60/919,702 2007-03-23
US93463407P 2007-06-14 2007-06-14
US60/934,634 2007-06-14
PCT/US2007/023172 WO2008118145A1 (en) 2007-03-23 2007-11-02 Modifying a coded bitstream

Publications (2)

Publication Number Publication Date
KR20100014902A KR20100014902A (ko) 2010-02-11
KR101398534B1 true KR101398534B1 (ko) 2014-05-27

Family

ID=39106118

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097018442A KR101398534B1 (ko) 2007-03-23 2007-11-02 코딩된 비트스트림의 수정

Country Status (9)

Country Link
US (2) US9299120B2 (ko)
EP (1) EP2130173B1 (ko)
JP (1) JP5277180B2 (ko)
KR (1) KR101398534B1 (ko)
CN (1) CN101636761B (ko)
BR (1) BRPI0721427B1 (ko)
CA (1) CA2681402C (ko)
MX (1) MX2009010182A (ko)
WO (2) WO2008118145A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US8942289B2 (en) * 2007-02-21 2015-01-27 Microsoft Corporation Computational complexity and precision control in transform-based digital media codec
EP2130173B1 (en) 2007-03-23 2019-01-02 ContentArmor Modifying a coded bitstream
CA2689634C (en) 2007-06-14 2016-08-23 Thomson Licensing Modifying a coded bitstream
CN102144237B (zh) 2008-07-03 2014-10-22 美国唯美安视国际有限公司 压缩媒体的有效水印方法
EP2318919B1 (en) 2008-08-19 2018-10-24 ContentArmor A propagation map for watermarking
JP5639056B2 (ja) 2008-08-19 2014-12-10 トムソン ライセンシングThomson Licensing 輝度評価
JP5373910B2 (ja) * 2008-08-19 2013-12-18 トムソン ライセンシング Cabacストリームのコンプライアンス
WO2010021682A1 (en) * 2008-08-19 2010-02-25 Thomson Licensing Cabac/avc compliant watermarking of syntax elements in compressed video
CN102132564B (zh) 2008-08-20 2013-09-11 汤姆森特许公司 用于压缩视频的水印制作的水印选取
JP5394212B2 (ja) * 2008-12-19 2014-01-22 トムソン ライセンシング データを挿入する方法、挿入されたデータを読み出す方法
EP2382777A4 (en) * 2009-01-27 2012-08-15 Thomson Licensing METHOD AND DEVICE FOR TRANSFORMATION SELECTION IN VIDEO CODING AND DECODING
EP2257067A1 (en) 2009-05-29 2010-12-01 Thomson Licensing Method for inserting watermark assistance data in a bitstream, method of watermarking said bitstream, device implementing the method of watermarking and bitstream comprising the watermark assistance data
KR101193534B1 (ko) 2009-07-17 2012-10-22 주식회사 케이티 비디오 콘텐츠에 워터마크를 삽입하는 워터마킹 장치 및 방법
WO2011100048A1 (en) 2010-02-09 2011-08-18 Thomson Licensing Watermark detection using a propagation map
CN105187829B (zh) 2010-04-13 2018-10-26 Ge 视频压缩有限责任公司 变换系数块的编码、解码装置及方法
US20110280434A1 (en) * 2010-05-11 2011-11-17 Rajesh Mamidwar Method and system for watermakr insertin using video start codes
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
CA2813124A1 (en) * 2010-09-30 2012-04-05 Annona Corp. Sa System, method, and computer readable medium for distributing targeted data using anonymous profiles
US8886945B2 (en) * 2010-12-17 2014-11-11 Motorola Mobility Llc System and method for conveying session information for use in forensic watermarking
HUE031201T2 (en) 2011-04-15 2017-07-28 Nagravision Sa A method for identifying the origin of a security module in a Pay-TV decoder system
US8805099B2 (en) 2011-06-22 2014-08-12 Panasonic Intellectual Property Corporation Of America Image decoding method and image coding method
EP3522377A1 (en) * 2011-06-24 2019-08-07 Velos Media International Limited Image encoding method, image decoding method, image encoding device, image decoding device, aind image encoding/decoding device
EP2544142A1 (en) 2011-07-08 2013-01-09 Thomson Licensing Method for watermark detection using reference blocks comparison
JP2013085049A (ja) * 2011-10-07 2013-05-09 Nippon Hoso Kyokai <Nhk> 直交変換係数の符号または値を用いて情報伝送を行う符号化装置、復号装置、方法およびプログラム
CN107087188B (zh) * 2011-11-07 2020-03-20 太格文-Ii有限责任公司 图像解码方法及图像解码装置
US9237358B2 (en) 2011-11-08 2016-01-12 Qualcomm Incorporated Context reduction for context adaptive binary arithmetic coding
EP2600531A1 (en) 2011-12-01 2013-06-05 Thomson Licensing Method for determining a modifiable element in a coded bit-stream and associated device
EP2605536A1 (en) * 2011-12-13 2013-06-19 Thomson Licensing Device for generating watermark metadata, associated device for embedding watermark
EP2611064A1 (en) 2011-12-29 2013-07-03 Thomson Licensing Method for selectively scrambling bit-streams
WO2013106987A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of bypass coding and reducing contexts for some syntax elements
CN103931188B (zh) * 2012-01-16 2017-05-10 寰发股份有限公司 语法元素的基于上下文的自适应二进制算术编码装置及方法
CA2927034C (en) 2013-11-04 2022-03-29 Nagravision S.A. Device and method to mark digital audio or audio and/or video content
GB201601793D0 (en) * 2016-02-01 2016-03-16 Nagravision Sa Embedding watermarking data
EP3622426B1 (en) 2017-05-09 2023-01-04 Verimatrix, Inc. Systems and methods of preparing multiple video streams for assembly with digital watermarking
US10560728B2 (en) 2017-05-29 2020-02-11 Triton Us Vp Acquisition Co. Systems and methods for stitching separately encoded NAL units into a stream
US11057685B2 (en) * 2018-03-29 2021-07-06 Ncr Corporation Media content proof of play over optical medium
US20220277491A1 (en) * 2019-05-31 2022-09-01 Electronics And Telecommunications Research Institute Method and device for machine learning-based image compression using global context

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6332194B1 (en) 1998-06-05 2001-12-18 Signafy, Inc. Method for data preparation and watermark insertion
US6411725B1 (en) 1995-07-27 2002-06-25 Digimarc Corporation Watermark enabled video objects
US20030072467A1 (en) 2001-10-16 2003-04-17 Brundage Trent J. Progressive watermark decoding on a distributed computing platform
US6687384B1 (en) 2000-03-27 2004-02-03 Sarnoff Corporation Method and apparatus for embedding data in encoded digital bitstreams

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939515A (en) 1988-09-30 1990-07-03 General Electric Company Digital signal encoding and decoding apparatus
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5721788A (en) 1992-07-31 1998-02-24 Corbis Corporation Method and system for digital image signatures
EP0726013B1 (en) * 1993-10-29 2001-03-07 Time Warner Entertainment Co., L.P. System for controlling play of multiple versions of same motion picture stored on optical disk
US5710834A (en) 1995-05-08 1998-01-20 Digimarc Corporation Method and apparatus responsive to a code signal conveyed through a graphic image
US7113615B2 (en) 1993-11-18 2006-09-26 Digimarc Corporation Watermark embedder and reader
US5636292C1 (en) 1995-05-08 2002-06-18 Digimarc Corp Steganography methods employing embedded calibration data
US5748783A (en) 1995-05-08 1998-05-05 Digimarc Corporation Method and apparatus for robust information coding
US5530751A (en) 1994-06-30 1996-06-25 Hewlett-Packard Company Embedded hidden identification codes in digital objects
US5646997A (en) 1994-12-14 1997-07-08 Barton; James M. Method and apparatus for embedding authentication information within digital data
GB9500285D0 (en) 1995-01-07 1995-03-01 Central Research Lab Ltd A method of labelling an audio signal
US5530759A (en) 1995-02-01 1996-06-25 International Business Machines Corporation Color correct digital watermarking of images
US5613004A (en) 1995-06-07 1997-03-18 The Dice Company Steganographic method and device
US5687191A (en) 1995-12-06 1997-11-11 Solana Technology Development Corporation Post-compression hidden data transport
US5664018A (en) 1996-03-12 1997-09-02 Leighton; Frank Thomson Watermarking process resilient to collusion attacks
WO1997039410A1 (en) 1996-04-02 1997-10-23 The Regents Of The University Of California Data embedding
US7412072B2 (en) 1996-05-16 2008-08-12 Digimarc Corporation Variable message coding protocols for encoding auxiliary data in media signals
US6978370B1 (en) 1996-09-03 2005-12-20 Cryptography Research, Inc. Method and system for copy-prevention of digital copyright works
US5809139A (en) 1996-09-13 1998-09-15 Vivo Software, Inc. Watermarking method and apparatus for compressed digital video
US5734752A (en) 1996-09-24 1998-03-31 Xerox Corporation Digital watermarking using stochastic screen patterns
US5825892A (en) * 1996-10-28 1998-10-20 International Business Machines Corporation Protecting images with an image watermark
US5960081A (en) 1997-06-05 1999-09-28 Cray Research, Inc. Embedding a digital signature in a video sequence
EP0997042B1 (fr) 1997-07-18 2003-04-09 Ecole Polytechnique Federale De Lausanne Procede de marquage d'un signal numerique video compresse
KR100323441B1 (ko) 1997-08-20 2002-06-20 윤종용 엠펙2동화상부호화/복호화시스템
JP4064506B2 (ja) 1997-09-17 2008-03-19 パイオニア株式会社 電子透かし重畳方法及び検出方法並びに装置
US6208745B1 (en) 1997-12-30 2001-03-27 Sarnoff Corporation Method and apparatus for imbedding a watermark into a bitstream representation of a digital image sequence
US6154571A (en) 1998-06-24 2000-11-28 Nec Research Institute, Inc. Robust digital watermarking
JP3480700B2 (ja) 1999-06-25 2003-12-22 日本ビクター株式会社 電子透かし記録方法及び電子透かし記録装置
JP2001242786A (ja) 1999-12-20 2001-09-07 Fuji Photo Film Co Ltd 配信装置、配信方法、及び記録媒体
US6282300B1 (en) 2000-01-21 2001-08-28 Signafy, Inc. Rotation, scale, and translation resilient public watermarking for images using a log-polar fourier transform
JP2001275115A (ja) * 2000-03-23 2001-10-05 Nec Corp 電子すかしデータ挿入装置および検出装置
KR20020088086A (ko) 2001-01-23 2002-11-25 코닌클리케 필립스 일렉트로닉스 엔.브이. 압축된 정보 신호를 워터마킹하는 방법
US7254249B2 (en) * 2001-03-05 2007-08-07 Digimarc Corporation Embedding location data in video
JP3565182B2 (ja) 2001-05-11 2004-09-15 日本電気株式会社 可変長符号の入力が中断されることを防止する方式及びその方法
JP2004536531A (ja) 2001-07-19 2004-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 圧縮メディア信号の処理
US7046818B2 (en) 2001-07-20 2006-05-16 Seiko Epson Corporation Standards compliant watermarking for access management
JP3977216B2 (ja) * 2001-09-27 2007-09-19 キヤノン株式会社 情報処理装置及び方法及び情報処理プログラム及び記憶媒体
AU2003210625A1 (en) * 2002-01-22 2003-09-02 Digimarc Corporation Digital watermarking and fingerprinting including symchronization, layering, version control, and compressed embedding
JP3720791B2 (ja) 2002-04-24 2005-11-30 ソニー株式会社 画像符号化装置及び方法、並びに画像復号装置及び方法
US7277587B2 (en) * 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
KR20050005531A (ko) 2002-06-03 2005-01-13 코닌클리케 필립스 일렉트로닉스 엔.브이. 독립 채널들에서의 워터마크들의 엔코딩 및 디코딩
WO2004003840A2 (en) 2002-06-28 2004-01-08 University Of Rochester System and method for embedding information in digital signals
US20040120404A1 (en) 2002-11-27 2004-06-24 Takayuki Sugahara Variable length data encoding method, variable length data encoding apparatus, variable length encoded data decoding method, and variable length encoded data decoding apparatus
US7636440B2 (en) 2003-01-31 2009-12-22 Hewlett-Packard Development Company, L.P. Digital watermark with variable location
US20050021539A1 (en) 2003-03-07 2005-01-27 Chaticom, Inc. Methods and systems for digital rights management of protected content
DE10321983A1 (de) 2003-05-15 2004-12-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Einbetten einer binären Nutzinformation in ein Trägersignal
US7769088B2 (en) 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
EP1636995B1 (en) 2003-06-25 2010-06-02 Thomson Licensing Encoding method and apparatus for insertion of watermarks in a compressed video bitstream
US20060257000A1 (en) 2003-06-25 2006-11-16 Boyce Jill M Decoding method an apparatus for detection of watermarks in a compressed video bitsream
KR101081729B1 (ko) * 2003-07-07 2011-11-08 로비 솔루션스 코포레이션 저작권 침해를 제어하고 쌍방향 컨텐츠를 인에이블시키기 위한 재프로그램가능한 보안
JP4612797B2 (ja) 2004-03-11 2011-01-12 キヤノン株式会社 符号化装置、符号化方法
US8127137B2 (en) 2004-03-18 2012-02-28 Digimarc Corporation Watermark payload encryption for media including multiple watermarks
WO2005099385A2 (en) 2004-04-07 2005-10-27 Nielsen Media Research, Inc. Data insertion apparatus and methods for use with compressed audio/video data
US7437721B2 (en) 2004-09-29 2008-10-14 Microsoft Corporation Isolating software deployment over a network from external malicious intrusion
JP4435830B2 (ja) 2004-10-15 2010-03-24 パナソニック株式会社 情報検出装置および情報検出方法
GB2419762A (en) 2004-11-01 2006-05-03 Sony Uk Ltd Method of generating protected media signals by replacing data bits with hash values
GB2421134A (en) 2004-12-09 2006-06-14 Sony Uk Ltd Detection of payload data from a watermarked image by calculation of payload probability values
FR2879878B1 (fr) 2004-12-22 2007-05-25 Thales Sa Procede de chiffrement selectif compatible pour flux video
US7672373B2 (en) * 2005-04-11 2010-03-02 Cisco Technology, Inc. Digital watermarking of a media stream using coded macroblock types
KR100878827B1 (ko) * 2005-07-08 2009-01-14 엘지전자 주식회사 영상 신호의 코딩정보를 압축/해제하기 위해 모델링하는방법
CN100466739C (zh) 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
CN101326806B (zh) * 2005-12-05 2011-10-19 汤姆逊许可证公司 用于在编码内容中插入水印的方法和系统
FR2894759A1 (fr) 2005-12-12 2007-06-15 Nextamp Sa Procede et dispositif de tatouage sur flux
DE102005063136B3 (de) * 2005-12-30 2007-07-05 Siemens Ag Verfahren und Vorrichtung zum Generieren eines markierten Datenstroms, Verfahren und Vorrichtung zum Einfügen eines Wasserzeichens in einen markierten Datenstrom und markierter Datenstrom
EP2011075B1 (en) 2006-04-25 2017-03-29 Thomson Licensing Digital watermarking method
US20080097786A1 (en) * 2006-10-18 2008-04-24 Rohit Sachdeva Digital data security in healthcare enterprise
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
EP2130173B1 (en) 2007-03-23 2019-01-02 ContentArmor Modifying a coded bitstream
CA2689634C (en) 2007-06-14 2016-08-23 Thomson Licensing Modifying a coded bitstream
CN101828356B (zh) 2007-06-29 2014-08-20 汤姆逊许可证公司 利用低频率进行卷标记
WO2010021682A1 (en) 2008-08-19 2010-02-25 Thomson Licensing Cabac/avc compliant watermarking of syntax elements in compressed video

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6411725B1 (en) 1995-07-27 2002-06-25 Digimarc Corporation Watermark enabled video objects
US6332194B1 (en) 1998-06-05 2001-12-18 Signafy, Inc. Method for data preparation and watermark insertion
US6687384B1 (en) 2000-03-27 2004-02-03 Sarnoff Corporation Method and apparatus for embedding data in encoded digital bitstreams
US20030072467A1 (en) 2001-10-16 2003-04-17 Brundage Trent J. Progressive watermark decoding on a distributed computing platform

Also Published As

Publication number Publication date
US8358703B2 (en) 2013-01-22
JP2010522470A (ja) 2010-07-01
JP5277180B2 (ja) 2013-08-28
MX2009010182A (es) 2009-10-12
US9299120B2 (en) 2016-03-29
CA2681402C (en) 2016-02-16
EP2130173B1 (en) 2019-01-02
CA2681402A1 (en) 2008-10-02
US20100169349A1 (en) 2010-07-01
WO2008118146A1 (en) 2008-10-02
WO2008118145A1 (en) 2008-10-02
US20100027684A1 (en) 2010-02-04
KR20100014902A (ko) 2010-02-11
EP2130173A1 (en) 2009-12-09
CN101636761B (zh) 2013-07-24
BRPI0721427A2 (pt) 2014-02-25
BRPI0721427B1 (pt) 2019-01-15
CN101636761A (zh) 2010-01-27

Similar Documents

Publication Publication Date Title
KR101398534B1 (ko) 코딩된 비트스트림의 수정
CA2689634C (en) Modifying a coded bitstream
CN101326806B (zh) 用于在编码内容中插入水印的方法和系统
JP5373909B2 (ja) 圧縮ビデオにおける構文要素のcabac/avc準拠の透かし入れ
US20060188129A1 (en) Method of embedding watermark into digital image
KR20110061551A (ko) 상황-기반의 적응형 이진 산술 코딩(cabac)비디오 스트림 준수
US6415042B1 (en) Digital image coding/decoding apparatus and method for evaluating the quality of images transmitted using watermarking
Zou et al. H. 264/AVC stream replacement technique for video watermarking
EP2600531A1 (en) Method for determining a modifiable element in a coded bit-stream and associated device
Chen et al. Robust drift-free bit-rate preserving H. 264 watermarking
JP2002330279A (ja) 画像へのデータ埋め込み方法及び当該データの抽出方法
US11308572B1 (en) Method and system for invisible watermarking of images and video
CN102036072A (zh) 用于水印检测的方法和系统
MX2008006995A (es) Contenido codificado por marca de agua

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170425

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180425

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190425

Year of fee payment: 6