KR101145110B1 - 연성 워터마크 삽입/추출 장치 및 방법 - Google Patents

연성 워터마크 삽입/추출 장치 및 방법 Download PDF

Info

Publication number
KR101145110B1
KR101145110B1 KR1020110037407A KR20110037407A KR101145110B1 KR 101145110 B1 KR101145110 B1 KR 101145110B1 KR 1020110037407 A KR1020110037407 A KR 1020110037407A KR 20110037407 A KR20110037407 A KR 20110037407A KR 101145110 B1 KR101145110 B1 KR 101145110B1
Authority
KR
South Korea
Prior art keywords
watermark
block
bit
data
dct coefficient
Prior art date
Application number
KR1020110037407A
Other languages
English (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 아스텔 주식회사
Priority to KR1020110037407A priority Critical patent/KR101145110B1/ko
Application granted granted Critical
Publication of KR101145110B1 publication Critical patent/KR101145110B1/ko

Links

Images

Classifications

    • 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/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/124Quantisation
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 비디오 데이터에 대해 영상 화질의 손상 없이 디지털 워터마크를 생성하고 추출하는 연성 워터마크 삽입/추출 장치 및 그 방법에 관한 것으로, H.264/AVC 압축스트림을 주고받는 송신측과 수신측 사이에서의 연성 워터마크 삽입/추출 장치에 있어서, 워터마크 비트 삽입을 위해 선택된 영상 블록에 대해 주기성 및 은닉성을 확보하고, 상기 선택된 영상 블록에 대해 양자화 DCT 계수 분포를 분석하여 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입 가능한지 판단하여 삽입할 것인가 다음 블록으로 미룰 것인가를 결정하며, 사용자 은닉 데이터와, 상기 사용자 은닉 데이터를 난수화하는 랜덤데이터의 조합으로 워터마크 비트를 생성하고, 상기 선택된 영상 블록에 대해 상기 생성된 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입하여 발생하는 DCT계수 구문세트에 변동 사항에 수정을 가하여 상기 워터마크가 삽입된 압축스트림 생성하는 부호화부(100) 및 상기 부호화부(100)로부터의 압축 스트림에 대해 별도의 보안장치를 통해 상기 부호화부의 은닉 데이터 난수화 방식, 블록 선정 및 삽입 여부 판별 방식과 관련한 변수들을 제공받아, 상기 워터마크가 삽입된 압축스트림으로부터 워터마크 비트를 추출하여 이를 제거한 영상으로 복원하고, 상기 워터마크 비트는 난수화를 풀어 송신측의 은닉 데이터로 복원하는 복호화부(200);를 포함하여 구성된다.

Description

연성 워터마크 삽입/추출 장치 및 방법{METHOD AND APPARATUS OF INSERTING/EXTRACTING FRAGILE DIGITAL WATERMARKS AND APPARATUS FOR USING THEREOF}
본 발명은 비디오 데이터에 대해 영상 화질의 손상 없이 디지털 워터마크를 생성하고 추출하는 연성 워터마크 삽입/추출 장치 및 방법에 관한 것이다.
컴퓨터와 인터넷을 통한 멀티미디어 응용의 확산으로 비디오 컨텐츠 또한 디지털로 압축한 형태로 제공되어 지는 것이 일반화되어 있다.
광대역 인터넷과 멀티미디어 저작도구의 범용화로 비디오 컨텐츠의 복사, 편집 및 유통이 쉽게 이루어질 수 있게 됨에 따라, 컨텐츠 제작자나 공급자는 불법 복사나 유통을 방지하기 위한 보호 장치와 함께, 자신의 컨텐츠임을 입증할 내용인증 절차를 마련할 필요성이 대두 되었다.
저작권 보호를 위한 여러 가지 암호화 방식이 존재하는데, 콘텐츠에 일정한 암호나 특정 코드 등의 정보를 숨겨 놓는 디지털 워터마킹을 활용하는 것도 한 가지 방법이다.
삽입된 워터마크 정보가 시각적으로 판별 가능한가 여부에 따라 가시성 워터마크, 비가시성 혹은 투명 워터마크로 나눌 수 있는데, 정보보호 측면에는 비가시적인 투명 워터마크를 더 선호하고 있다.
투명 워터마크를 더 세분화해 보면, 삽입된 컨텐츠를 고의로 변형하였을 시에도 추출 가능한가의 정도에 따라 강성(robust)과 연성(fragile)방식으로 나눌 수 있다.
여기서, 강성방식은 각종 내용 변형시도에도 워터마크 형태로 삽입된 소유권 정보 등을 추출할 수 있어 저작권 보호 응용에 적합하고, 연성방식은 이와는 반대로 조그마한 내용 변형시도에도 워터마크 정보가 소실되게 함으로써 컨텐츠의 무결성을 입증하는 내용인증 용도에 적합하다.
이러한, 비디오 워터마크는 기존 사진영상에 적용되었던 공간영역 워터마킹 기법들이 그대로 적용된 경성 워터마크 방식을 위주로 발전이 이루어져 왔으나, 최근에는 비디오가 취재 영상으로, 혹은 방범 등 공공 감시 목적으로 활용이 빈번해 짐에 따라, 컨텐츠 자체가 편집, 훼손 및 변조된 흔적이 없다는 증빙 목적으로 연성 워터마크를 활용할 수 있어 관심을 갖게 되었다.
일반적으로 무결성 인증에 사용되는 암호화 해쉬(Hash) 기능은 방대한 데이터 량의 비디오에는 처리 속도나 복잡도 면에서 적합지 않아, 그 대안으로 연성 워터마크를 활용하면 위변조 판별이 가능하여 비교적 간단한 방법으로 법적 신뢰성을 확보할 수 있어 이에 기반한 여러 워터마크 방식들이 제시되고 있다.
비디오 컨텐츠 원본이 점차 디지털 압축과정을 거친 형태로 되어가는 추세여서, 워터마크 정보도 공간 영역에 삽입하기보다는 압축 스트림 영역에 삽입하여 복호화 없이 직접 추출되거나, 가변길이부호(VLC) 등 디코딩 일부분만 수행하여서 추출할 수 있는 알고리즘이 요구되고 있다.
비디오 압축 방식에 있어 현재는 압축표준인 MPEG/JPEG을 이용한 비디오 응용이 일반화되어 있으나, 압축률과 성능을 개선한 표준인 H.264/AVC이 점차 확산되어 갈 전망인데, H.264의 압축 방식이 4x4 이산여현변환(DCT)을 기반으로 하고 있어, 기존 8x8 DCT 기반의 MPEG/JPEG과 DCT 계수 처리 방식 및 압축 스트림 구성면에 상이한 점이 많아 이를 이용한 워터마크 기법들이 새로 고안되어 지고 있다.
이러한, H.264에 워터마크를 내장하는 방식은 크게 특정 DCT계수의 나열 순서에 따른 특정 계수 값의 부호 혹은 최하위 비트(LSB)를 워터마크 정보로 대치, 변경하는 방식(Ali and Edirisinghe, "A Semi-fragile Watermarking Technique of H.264/AVC Using CAVLC", International Journal of Signal and Image Processing, Vol.1, pp.151-159, 2010.)[1]과, 움직임 예측에 결과인 특정 벡터값에 대해 최하위 비트(LSB)를 워터마크 정보로 대치, 변경하는 방식(Saadi et al., "Combined Fragile Watermark and Digital Signature for H.264/AVC Video Authentication", EUSIPCO 2009, pp.1799-1803, August, 2009.)[2] 및 워터마크 정보에 따라 움직임 예측 모드를 지정하는 방식(Spyridon et. al., "Data Hiding in H.264 Encoded Video Sequences", IEEE 9th Workshop on Multimedia Signal, Processing, MMSP 2007. pp.373-376, October 2007.)[3] 등이 제안되었다.
우선, [1]번 방식의 경우는 워터마크 정보를 삽입하기 위해 DCT계수 값의 절대치가 1인 경우는 그 부호를, 1보다 큰 경우는 LSB 값을, 워터마크 비트로 대치하는 방식을 취하기 때문에 DCT 계수값을 변경되기 전 원래 값으로 복원할 방법이 없어 원본 영상의 화질이 다소 떨어짐을 감수하여야 한다.
또한, 워터마크 삽입에 의해 부호가 바뀔 경우는 원 영상에 비해 +/- 2의 계수 차이가 나므로 비가시 워터마크 특성을 손상시킬 우려가 있다. 이미 압축된 스트림에 대해 이 워터마크 기법을 적용할 경우는 가변길이부호(VLC)레벨에서 변경 가능하므로 가변길이부호(VLC) 디코딩만 수행하면 쉽게 워터마크가 삽입될 수는 장점이 있는 반면에, 원본 DCT계수 값이 훼손되는 것을 피할 수 없으며, 훼손된 정보가 그 이후 블록들과 프레임으로 계속 전파되게 되어 원본 영상의 열화가 불가피하다는 문제가 있었다.
그리고, [2],[3]방식의 경우는 압축 엔코딩 초기단계에서 워터마크 삽입을 전제로 하는 방식으로 최적의 예측 값이나 모드 대신에 워터마크 정보에 의해 근사치로 변경되므로, 예측 에러가 높아짐에 따라 압축 효율이 떨어지게 진다. 이미 압축된 스트림에 대해 이 워터마크 기법을 적용할 경우는 디코딩 전과정을 거쳐 화소 레벨에서 재 엔코딩을 하여야만 워터마크 삽입이 가능하므로 처리 속도나 복잡도 측면에서 부적합하다는 문제가 있었다.
따라서, 본 발명은 상기와 같은 종래 기술의 제반 단점과 문제점을 해결하기 위한 것으로, 본 발명은 H.264의 압축 스트림 생성/재생 과정 중 DCT 계수의 가변길이 부호/복호화에 국한하여 독립적으로 적용되어 원본 DCT 계수의 유실 없이 워터마크 삽입/추출이 가능하도록 한 워터마크 삽입/추출 장치 및 방법을 제공함에 그 목적이 있다.
상기한 목적을 달성하기 위한 본 발명 연성 워터마크 삽입/추출 장치는, H.264/AVC 압축스트림을 주고받는 송신측과 수신측 사이에서의 연성 워터마크 삽입/추출 장치에 있어서, 워터마크 비트 삽입을 위해 선택된 영상 블록에 대해 주기성 및 은닉성을 확보하고, 선택된 영상 블록에 대해 양자화 DCT 계수 분포를 분석하여 DCT 계수열 꼬리 부분에 추가로 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입 가능한지 판단하여 삽입할 것인가 다음 블록으로 미룰 것인가를 결정하며, 비디오 컨텐츠의 인증 등을 위해 입력되는 사용자 은닉 데이터와, 사용자 은닉 데이터를 난수화하는 랜덤데이터와의 조합으로 워터마크 비트를 생성하고, 선택된 영상 블록에 대해 생성된 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입하여 발생하는 DCT계수 구문세트의 변동 사항에 대한 수정을 가하여 워터마크가 삽입된 압축스트림을 생성하는 부호화부 및 부호화부로부터의 압축 스트림에 대해 별도의 보안장치를 통해 부호화부의 은닉 데이터 난수화 방식, 블록 선정 및 삽입 여부 판별 방식과 관련한 변수들을 제공받아, 워터마크가 삽입된 압축스트림으로부터 워터마크 비트를 추출하여 이를 제거한 영상으로 복원하고, 워터마크 비트는 난수화를 풀어 송신측의 은닉 데이터로 복원하는 복호화부를 포함하여 구성된다.
여기서, 부호화부는, 사용자 은닉 데이터를 생성하는 은닉 데이터 생성부와, 사용자 은닉 데이터를 난수화하기 위한 랜덤 데이터를 생성하는 암호키 방식의 랜덤 데이터 생성부와, 은닉 데이터 생성부로부터의 은닉 데이터와, 랜덤 데이터 생성부로부터의 랜덤 데이터와의 조합으로 생성된 워터마크 비트를 주기적으로 선택된 영상 블록의 DCT계수 구문세트에 대해 추가로 트레일링 원스(Trailing Ones) 형태로 삽입하고 이의 변동 사항에 따라 DCT계수 구문세트를 수정하는 DCT계수 구성 및 워터마크 삽입부와, DCT계수 구성 및 워터마크 삽입부에서 워터마크가 삽입되어 수정된 DCT계수 구문세트를 엔트로피 부호화하여 압축스트림을 생성하는 DCT 계수 엔트로피 부호화부를 포함하여 구성됨이 바람직하다.
그리고, 복호화부는, 부호화부의 엔트로피 부호화부로부터의 압축스트림을 수신하여 DCT 계수 구문세트로 복호화하는 DCT 계수 엔트로피 복호화부와, 부호화부에서 전송된 워터마크 제어 파라미터에 따라 복호화된 DCT 계수 구문세트로부터 워터마크 비트를 추출하고 DCT계수를 구성하는 워터마크 추출 및 DCT 계수 구성부와, 암호키의 교환으로 부호화부의 랜덤 데이터 생성부와 동일한 랜덤 데이터를 생성하는 랜덤 데이터 생성부 및 랜덤 데이터 생성부의 랜덤 데이터와, 워터마크 추출 및 DCT 계수 구성부로부터의 워터마크 비트와의 조합으로 사용자 은닉 데이터를 복원하는 은닉 데이터 생성부를 포함하여 구성됨이 바람직하다.
또한, 이미 H.264/AVC로 부호화되어 저장되거나 송신된 일반 압축 스트림에 대해 은닉 데이터를 추가하기 위해, 본 실시 예에 따른 연성 워터마크를 삽입/추출을 하고자 할 때, 기 생성된 H.264/AVC 압축스트림 데이터에서 DCT 계수 구성세트를 복호화하는 DCT 계수 엔트로피 복호화부와, DCT 계수 엔트로피 복호화부에서 생성된 DCT 계수 구문세트에 대해 연성 워터마크 삽입 장치를 구성하여 워터마크를 삽입하여 압축 스트림을 재생성하고, 연성 워터마크 추출 장치를 구성하여 압축스트림에서 워터마크를 추출함이 바람직하다.
한편, 기 생성된 H.264/AVC 압축스트림 데이터는 워터마크가 없는 압축 스트림인 것이 바람직하나, 워터마크가 있는 압축스트림에도 적용 가능하며, 더 나아가 워터마크 삽입을 계층적으로 수차 반복 적용하고 각 계층마다 적용된 워터마크 제어 정보를 모두 알 수 있다면 원본 압축 스트림의 복원도 가능하여, 계층별 은닉 데이터 수준을 차별화하는 응용에 적용하는 것을 포함할 수도 있다.
또한, 상기한 목적을 달성하기 위한 본 발명 연성 워터마크 삽입/추출 방법은 H.264/AVC 압축스트림을 주고받는 송신측과 수신측 사이에서의 연성 워터마크 삽입/추출 방법에 있어서, 부호화부에서 워터마크 비트 삽입을 위한 선택된 영상 블록에 대해 주기성 및 은닉성을 확보하고, 선택된 영상 블록에 대해 양자화 DCT 계수 분포를 분석하여 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입 가능한지 판단하여 삽입할 것인가 다음 블록으로 미룰 것인가를 결정하며, 사용자 은닉 데이터와, 사용자 은닉 데이터를 난수화하는 랜덤데이터와의 조합으로 생성된 워터마크 비트를 수신하여 선택된 영상 블록에 대해 생성된 워터마크 비트를 삽입하여 DCT계수 구문세트에 변동 사항에 수정을 가하여 워터마크가 삽입된 압축스트림을 생성하는 단계; 및 부호화부로부터의 압축 스트림을 수신한 복호화부에서 별도의 보안장치를 통해 부호화부의 은닉 데이터 난수화 방식, 블록 선정 및 삽입 여부 판별 방식과 관련한 변수들을 제공받아, 워터마크가 삽입된 압축스트림으로부터 워터마크 비트를 추출하여 이를 제거한 영상으로 복원하고, 워터마크 비트는 난수화를 풀어 부호화부의 은닉 데이터로 복원하는 단계; 를 포함하여 구성됨을 특징으로 한다.
여기서, 워터마크가 삽입된 압축 스트림을 생성하는 단계는, 이산여현변환(DCT) 및 양자화(Q)된 영상 블록에 대해 DCT계수 구문세트를 구성하는 단계와, 부호화부 내에서 설정된 빈도 수에 따라 워터마크를 삽입할 블록을 선택하는 단계와, 선택된 블록이 DCT계수 구문세트 분석과정을 통해 선택된 블록이 워터마크 삽입 가능한 블록이면, 은닉할 데이터 비트열과 난수 비트열에서 한 비트씩 받아 워터마크 비트를 생성하는 단계와, 생성한 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 선택블록의 DCT계수 구문세트에 추가 및 수정하는 단계와, 워터마크 삽입된 선택블록을 복호화부로 전송하는 단계로 구성됨이 바람직하다.
그리고 워터마크 비트를 생성하는 단계는, 프레임 시작 시 해당 프레임에 실릴 은닉 데이터 N-비트를 받아 비트열로 저장하고, 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화하는 단계와, 선택된 블록이 워터마크 비트를 삽입할 수 있다면, i 번째로 생성된 난수비트 r(i)와, i 번째 은닉 데이터비트 h(i)를 취하는 단계 및 난수비트 r(i)와, i 번째 은닉 데이터비트 h(i)로 배타적 논리합(Exclusive OR)을 취하여 워터마크 비트 wm(i)를 생성하는 단계를 포함하여 이루어지는 것이 바람직하나, 은닉 데이터의 난수화에 있어 암호키 방식의 어떠한 암호화 기술도 적용가능하다.
그리고, 프레임 내에서 은닉할 데이터 량 N-비트보다 워터마크 비트를 삽일 할 곳이 더 많다면, 잉여 비트(i>N 보다 큰 위치)에 대하여 i에 대한 모듈로 N 연산으로 i%N이 가리키는 은닉 데이터h(i%N)를 택하여 은닉데이터가 소진시 반복적으로 재삽입하되, 프레임내의 워터마크 삽입주기를 정할 때 4x4블록 총개수 Bmax와 은닉 데이터 량 N과 연관하여 블록 개수 Bmax/N을 기본으로 하여, 매 주기마다 한번 선택된 블록에 1비트씩 삽입하는 것을 특징으로 은닉 데이터 분포를 균일하게 하는 것이 바람직하다.
한편, 워터마크 비트를 추출하여 원본 영상 및 은닉 데이터를 복원하는 단계는, 부호화부에서 전송된 압축 스트림에서 블록별로 DCT 계수 구문세트를 복원하는 단계와, 복원된 구문세트로 부터 트레일링 원스(Trailing Ones) 형태로 워터마크가 삽입되었는지 판별하여 워터마크 비트를 추출하고, 암호키로부터 생성된 난수비트에 따라 은닉 데이터 비트를 복원하는 단계와, 워터마크 비트가 삽입된 블록의 구문세트에서 해당 트레일링 원스(Trailing Ones)를 제거하고 수정하여 워터마크 삽입 전 DCT 구문 계수로 복원하는 단계와, 워터마크 제거된 구문세트로 부터 이산여현변환 및 양자화된 원본 DCT 계수 블록을 구성하는 단계를 포함하여 이루어지는 것이 바람직하다.
여기서, 워터마크 비트를 추출하는 단계는 프레임 시작 시 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화하는 단계와, 수신된 블록에 i번째 워터마크 비트가 삽입되어 있다면, 삽입된 워터마크 비트 wm(i)를 추출하는 단계와, 추출된 워터마크 비트 wm(i)와 i 번째로 생성된 난수비트 r(i)에 대해 배타적 논리합을 취하여 i 번째 은닉 데이터비트 h(i)비트를 추출하는 단계를 포함하여 이루어지는 것이 바람직하다.
그리고, 은닉 데이터 분포를 균일하게 하는 것은, 워터마크 삽입 제어와 관련된 변수들로서, 삽입 주기마다 한 번씩 선택된 블록에 대해 1비트 워터마크를 삽입하는 삽입주기 변수 B와, 0으로 초기화하며 프레임이 끝날 때까지 4x4블록을 처리할 때마다 1씩 증가시켜 부호화할 블록의 프레임 내 위치를 지정하는 변수 Bcnt와, Binit으로 초기화하며 매 삽입 주기마다 프레임 내의 워터마크를 삽입할 블록의 위치를 지정하는 변수 Bwm을 매 프레임 시작시 초기화하는 단계와, Bcnt값이 0인 첫 4x4블록부터 부호화를 진행하면서, 매 블록 부호화 시작시, 현 부호화 블록의 Bcnt가 삽입이 예정된 블록인 Bwm과 일치하면, 그 블록을 선택하여 워터마크를 삽입을 시도하여, 그 블록의 DCT 계수 분포가 워터마크 삽입이 가능하면 삽입하고, 삽입이 불가한 블록으로 판별되면 워터마크 삽입을 다음 블록으로 미루는 방식으로, Bcnt가 Bwm보다 크거나 같은 상태에서는 워터마크 삽입이 이루어질 때까지 삽입을 계속 시도하는 단계와, 워터마크 삽입이 이루어진 후에는 다음 삽입 예정 블록 위치를 Bwm = Bwm+B로 지정하여 Bcnt ~ Bwm+B 내에 위치한 블록에 대해서는 워터마크 삽입을 차단함으로 해서, 프레임 내의 워터마크 삽입 블록 간격을 B로 하는 주기성을 확보하는 것이 바람직하다.
한편, 부득이한 경우로, 워터마크 삽입이 계속 미루어져 Bcnt가 Bwm+B보다 클 경우 연속적으로 워터마크를 삽입하여 삽입 빈도수는 유지하는 것이 바람직하다.
또한, 삽입 주기 B는 언급한 은닉데이터 N-비트와 프레임내의 4x4블록 총개수 Bmax의 함수로서 B는 Bmax/N을 기본 값으로 하고 이보다 작은 값을 택하면 은닉 데이터가 반복 삽입되어 압축효율이 떨어지게 되며, B를 상수로 하여 삽입 주기가 고정되어 워터마크 패턴이 드러날 우려가 있다면, avgB를 평균값으로 하고 분산치를 두어 그 삽입 주기를 난수화하기 위하여, 미리 설정된 암호키와 분산 변수 D로 매 워터마크 비트 삽입이 이루어질 때마다 -B/D ~ +B/D 범위의 난수 값 dB를 생성하고, 이를 평균값 avgB에 더한 값 B(= avgB + dB)를 다음 워터마크 삽입 블록을 지정하는데 적용하여 평균 주기로 워터마크 빈도수를 보장하면서 임의의 블록 위치에 삽입하는 것이 바람직하다.
여기서, 선택된 블록에 대한 워터마크 삽입 가능성을 판단하는 단계는, 관련 변수들을 미리 규약하여 부호화부와 복호화부에서 동일하게 적용될 수 있도록 1보다 큰 값의 최소치(LevelMin), 0 아닌 계수의 개수(Tcoeff), 지그재그 배열에서 워터마크 비트가 놓일 위치(Tcoeff + Tzeros) 각각의 변수에 대한 임계치를 두어 각 변수값이 이 임계치 미만이면 해당 블록의 워터마크 삽입을 배제(WM Disable)하고, 4x4 DCT의 지그재그 배열(zz0, zz1 ~ zz14, zz15)에 있어 워터마크 삽입을 위해 추가할 트레일링 원스(Trailing Ones)(T1's)의 위치가 zz14 이하이면 무조건 삽입하고, 그 위치가 zz15(4x4 DCT 블록의 최우측 최하단)인 경우에 지그재그 배열 제일 끝 부분의 두 계수(Coeff@zz14, Coeff@zz15)에 대한 절대값(Z14, Z15)을 바탕으로 삽입 가능성을 판단하여 Z14는 1이고, Z15는 0 또는 1인 경우에만 삽입하는 것이 바람직하다.
그리고, 복호화된 선택 블록에서 워터마크 비트를 추출 판단은, LevelMin(최소값)이 THLevel(임계값)보다 크거나 같고, Tcoeff(계수 총개수)는 TCnum(임계값)보다 크며, Tcoeff+Tzeros(워터마크 위치)는 TCZnum(임계값)보다 큰 경우에 국한하여, 트레일링 원스(Trailing Ones)(T1's)가 존재하고 마지막 T1's 위치가 zz14 이하이면 그 T1을 무조건 워터마크 비트로 추출하고, 마지막 T1's의 위치가 zz15일 때에는 바로 전 zz14위치의 계수 절대치가 1인 경우에만 zz15의 T1을 워터마크 비트로 간주하여 추출하는 것이 바람직하다.
또한, 프레임시작 시 현재 부호화할 블록(Bcnt)이 '0'이고, Bwm은 Binit로 초기화되어 삽입할 워터마크 블록을 지정하는 단계와, 4x4블록에 대하여 블록선택을 시작하여, 현 부호화 블록 위치 Bcnt가 지정된 삽입 위치 Bwm보다 크거나 같고, 16x16마크로블록 내의 4x4블록 위치가 삽입/추출 제어 관리의 편의상 하측 경계면에 위치하지 않고, 우측에 위치하지 않는 블록으로 선택된 4x4블록에 대하여 워터마크를 삽입을 시도하는 단계와, 계수 분포가 워터마크 삽입이 가능하다 판별되면 워터마크 삽입을 수행하는 단계를 포함하는 것이 바람직하다.
본 발명은 다음과 같은 효과가 있다.
첫째, H.264 부호화 과정에 사용자 은닉 정보를 워터마크 형태로 삽입하는 데는 DCT계수의 가변길이 부호화 과정에 국한되며, 이 과정에서 추가로 생성되는 스트림양은 은닉 데이터의 약 2배 정도에 불과하고 압축 영상 화질의 훼손 없이 이루어질 수 있는 효과가 있다.
둘째, 이미 부호화된 압축 스트림에 은닉 정보를 후 첨가할 때에는 H.264 복호화와 부호화 전 과정을 수행하는 대신 그 중 일부인 가변길이 부호화/복호화 과정만 수행하고, 수행 중 워터마크 삽입에 의해 영향을 받는 스트림은 DCT 계수의 복호화/부호화 부분으로 국한되어 진다. 이 경우 확률적으로 극히 낮지만 DCT 계수의 손실이 발생하면 압축 영상의 화질 훼손 및 열화가 나타날 수 있으나, 워터마크 후 첨가를 고려하여 부호화 단계에서부터 이런 확률을 인위적으로 없앨 수 있어 워터마크 삽입에 의한 열화 문제를 원천적으로 방지할 수 있는 효과가 있다.
셋째, 사용자 은닉 정보는 프레임 단위로 혹은 주기적으로 생성 삽입이 가능하여, 부호화가 진행됨에 따라 정보 은닉 량도 증가하여 다양한 정보를 H.264 스트림 내에 저장할 수 있으며, 제3자가 조그마한 내용 변형시도에도 은닉 정보가 소실되게 되는 연성 워터마크 특성을 나타내어 컨텐츠의 무결성을 입증하는 내용인증 용도에 우수한 효과가 있다.
도 1은 일반적인 H.264/AVC 부호화기의 구조를 설명하기 위한 블록 구성도,
도 2는 워터마크가 적용되는 4x4 화소 단위로 수행되는 이산여현변환양자화기(DCTQ)의 기능을 설명하기 위한 도면,
도 3은 엔트로피 부호화를 위한 DCT 계수 구문 세트 구성도 및 실시 예를 설명하기 위한 도면,
도 4는 본 발명에 따른 연성 워터마크 방식의 DCT 계수열 내 은닉 비트 삽입도 및 실시 예를 설명하기 위한 도면,
도 5는 본 발명에 따른 H.264/AVC 부호/복호화부내의 워터마크 삽입/추출 기능 블록도,
도 6a 및 도 6b는 본 발명에 따른 워터마크 삽입 방법과 워터마크 추출 방법을 각각 설명하기 위한 흐름도,
도 7a 및 도 7b는 도 6a 및 도 6b의 워터마크 비트 생성 방법과 워터마크 비트 추출방법을 각각 설명하기 위한 흐름도,
도 8은 도 7의 산발적/주기적 은닉정보 분포를 위한 워터마크 블록 선정을 설명하기 위한 흐름도,
도 9는 도 6의 부호화부의 DCT 계수 분포에 따른 워터마크 삽입 가능 여부 판별을 설명하기 위한 흐름도,
도 10은 도 6의 복호화부의 DCT 계수 분포에 따른 워터마크 추출 가능 여부 판별을 설명하기 위한 흐름도,
도 11은 본 발명의 실시 예에 따른 기 생성된 H.264/AVC 스트림에 워터마크 삽입 기능도,
도 12는 주변 블록의 계수 총 개수에 의한 현 블록의 예측치 nC에 따른 Coeff_Token 코드표,
도 13은 복호 후 부호화 시 워터마크 삽입에 의한 예측치 nC의 복호/부호화 과정 파급 예,
도 14는 복호화 후 부호화 시 nC 변화에 따른 복잡도 최소화를 위한 본 발명의 실시 예이다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명하기로 한다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 함을 밝혀두고자 한다. 또한, 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고, 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
도 1은 일반적인 H.264/AVC 부호화기의 구조를 설명하기 위한 블록구성도로서 두 종류의 데이터 흐름을 포함하고 있다.
도 1에 나타낸 일반적인 H.264/AVC 부호화기에서 한 종류의 데이터 흐름은 도 1의 오른쪽 진행 화살표 방향(정방향 통로)으로 압축에 필요한 화소 처리를 수행하고, 다른 한 종류의 데이터 흐름은 왼쪽 진행 화살표 방향(역방향 통로)으로 이를 복원하는 기능을 수행한다. 여기서, 왼쪽 진행 화살표 방향은 복호화기에도 동일한 기능으로 포함되어 있다.
우선, 오른쪽 진행 화살표 방향에서의 입력영상 Fn은 압축이 진행되는 현재 프레임을 나타내며, 이 프레임은 16x16 화소로 나누어진 매크로블록(이하, MB라 함) 단위로 처리된다.
각 매크로 블록은 인트라모드 혹은 인터모드로 부호화되는데, 각 경우 현 매크로블록 C의 예측치 P가 구성되어 복원될 프레임의 기준 값이 형성된다.
먼저, 인트라 모드 경우 인트라 예측부(80)에서 현 프레임에서 이미 압축되고 복원되어진 화소 R(필터를 거치기 전) 중 현 매크로블록의 주변에 있는 화소 값으로부터 구해진다.
인터 모드의 경우 인터 예측부(90)에서 이미 압축 복원된 과거 프레임에서 움직임 보정 예측치가 현 매크로블록에 제일 근접한 값으로 P가 결정되며, 과거 프레임은 하나 혹은 두 개 이상의 프레임으로 구성 되어 질 수 있다.
현 매크로블록 C의 화소들을 예측치 P로 뺄셈한 나머지 값으로 차분치 매크로블록 D를 구한 후 이를 4x4 단위로 쪼개어 이산여현변환(DCT)부(이하, DCT부)(10) 및 양자화(Q)부(20)를 거쳐 양자화 변환계수 X를 구성한다.
이 계수들은 DCT계수를 재구성하는 DCT계수 구성부(30)에서 압축효율을 위해 재배열되고, 예측모드, 양자화 크기, 움직임 벡터 등의 보조 정보와 함께 각 데이터요소별로 엔트로피 코딩부(40)에서 엔트로피 코딩되어 압축 스트림을 형성한 후, 최종적으로 NAL(Network Adaptation Layer)과정을 거쳐 통신을 통해 출력영상으로 출력되거나 저장 용도로 이용된다.
그리고, 왼쪽 진행 화살표 방향에서는 다음에 부호화할 매크로블록을 위해 양자화 계수열 X가 복호화된다.
계수열 X는 역양자화(IQ)부(50)와 역이산여현변환(IDCT)부(60)에서 역양자화 및 역이산여현변환과정을 거쳐 차분치 D'를 얻게 되는데, 양자화 과정에서의 정보 손실로 차분치 입력 D와는 다른 값을 가질 수 있다. 그리고, 부호화시의 예측값 P는 복호화 차분치 D'와 합하여져 부호화 전 매크로블록 C의 근사치 C'로 복원되어 진다.
복원된 매크로블록 C'는 인위적 블록 경계 현상을 완화하기 위한 디블록필터(Deblocking Filter)부(70)를 거쳐 복원 영상 Fn'를 구성하게 되며, 이는 추후 다음 영상에 대한 움직임 예측 참조 영상으로 활용되어 진다.
한편, 복호화기는 NAL로부터 전송된 압축 스트림을 받아 데이터요소별로 엔트로피 복호화를 진행한 이후에는, 부호화기의 역방향 통로와 동일한 방식으로 복호화가 진행되므로, 부호화기의 매크로블록 예측치 P와 차분치 D'와 동일한 값을 얻도록 하여 부호화기의 복원 영상 Fn'와 동일한 영상을 구성하여 최종 복호화 영상을 복원한다.
도 2는 워터마크가 적용되는 4x4 화소 단위로 수행되는 이산여현변환양자화기(DCTQ)의 기능을 설명하기 위한 도면이다.
도 2는 일반적인 H.264/AVC 기능 중에서 워터마크 삽입과 연관된 부분만을 따로 도시한 것으로, 4x4 화소 단위의 정방향/역방향의 블록 변환 및 양자화 과정(DCT&Q/IQ&IDCT), 그리고 양자화 계수열을 H.264 엔트로피 부호화 방식인 구문 적응형 가변길이 부호화(CAVLC :Context Adaptive Variable Length Coding)에 적합하도록 재배열하는 DCT 계수 구문 구성 및 이의 엔트로피 부호화 기능을 나타내고 있다.
우선, 16x16 매크로블록을 DCTQ 수행단위인 4x4 블록으로 쪼개는 데 있어, 도시한 예는 4:2:0의 칼라 영상에 대한 경우로, 4x4 블록 B0~B23은 MB 내의 해당 위치를 뜻하며, 밝기정보에 해당하는 휘도(Luma) 블록 Y 16개(B0 ~ B15)와, 색상 정보에 해당하는 색차(Chroma)블록 Cb 4개(B16~B20), Cr 4개(B21~ B23) 등으로 구성되어 있다.
각 블록 Bx(B0 내지 B23)는 해당 인트라 혹은 인터 예측치로 빼져서 차분치 블록 D를 형성하여 4x4 DCT의 입력으로 작용하며, 그 구성요소인 차분치 값 d0~d15는 4x4 블록 내의 해당 위치를 나타낸다.
한편, DCT부(10)와 양자화부(20)에서 변환 및 양자화를 거친 계수 블록 X의 계수값 x0 내지 x15는 지그재그(ZigZag) 배열을 통해 확률적으로 앞 순서에는 큰 계수 값, 뒤로 갈수록 작은 값 혹은‘0’값을 갖도록 배열되며, 이러한 원리를 이용하여 엔트로피 부호화를 위한 계수 구문 세트로 재배열하는 데, 이를 양자화 DCT계수 구문을 구성하는 DCT계수 구성부(30)에서 처리한다.
그리고, 구문 구성에서는 지그재그 계수열로부터{TotalCoeff, T1, T1_sign, Levels, Total_Zeros, Zeros_Left, Run_before}등 7 종류의 요소를 구하여 이를 기반으로 엔트로피 부호화 계수 세트를 구성하게 된다. 이상의 구문 요소가 매 4x4화소 블록마다 형성된다.
한편, 도 2에는 생략되어 있으나, 표준에서는 Chroma 성분 Cr, Cb 그리고 16x16 인트라 모드에서 LUMA 성분의 경우에는 4x4 DCT 후 첫 번째 계수인 DC 계수는 양자화 과정에서 빠지고, 이를 따로 모아 하다마드(Hadamard) 변환 및 양자화 과정을 거친 후 별도 구문 구성을 하게 된다(이 경우를 DC 블록이라 칭하며 LUMA의 경우 4x4, Chroma의 경우 Cr,Cb 각 2x2의 크기를 갖는다).
여기서, DC계수가 빠진 형태의 블록을 AC블록이라 하며, 이 경우 15개 계수만 가지고 구문 구성을 하게 되는데, 지그재그 배열에서 계수가 하나 빠진 것 외에는 구성형식이 동일하다. 참고로, 본 발명에서는 DC 블록은 설명의 편의상 워터마크 삽입과정에서 제외하였으나, 포함하여도 무방하다.
도 3은 엔트로피 부호화를 위한 DCT 계수 구문 세트 구성도 및 실시예를 설명하기 위한 도면이다.
도 3은 4x4 양자화 DCT 계수를 z0,z1,z2,...z14,z15 순으로 지그재그 배열을 하였을 때, 그 배열 예 {23,-4,11,0,0,8,-3,0,0,1,0,-1,0,0,0,0}를 통해 계수 구문 구성 및 부호화 세트 구성에 대한 내용을 도시한 것이다.
우선, 구문 구성은 지그재그 배열에서‘0’아닌 마지막 계수(LastCoeff)부터 역순으로 스캔하여 계수 열을 구성하는 것으로 시작되는데, 도 3의 경우 LastCoeff는 z11위치의 -1 계수로부터 시작하여 {-1, 0, 1, 0, 0, -3, 8, 0, 0, 11, -4, 23} 배열이 얻어진다.
여기서, Tcoeff(TotalCoeff)는 4x4 양자화 계수열에서 '0'이 아닌 계수의 총 개수로 {-1, 1, -3, 8, 11, -4, 23} 등 총 7개이다.
T1은 지그재그 배열에서 뒤 꼬리 부분(Trailing)에서 중간의‘0’을 무시하고 연속으로 나타나는 절대치‘1’인 계수(Trailing Ones : 트레일링 원스)의 개수로서, 역순으로 보면 처음 연달아 나타나는‘1’값으로 {-1,1} 등 2개이며, T1_Sign은 T1에 해당하는 계수의 양음부호로‘+’인 경우 0, ‘-’인 경우 1로 표시되며, 도 3에서는 T1 값이 {-1,1}이므로 T1_sign은 {1,0}이다.
그리고, Levels는 T1을 제외한 '0'이 아닌 계수 값들인데, 여기서 T1은 3개까지만 세며, 3개보다 많으면 나머지는 Levels로 간주한다. 도 3의 경우 T1은 2개로서, 나머지 5개의 {-3, 8, 11, -4, 23}가 Level 값을 구성한다.
Tzeros(Total_Zeros)는 T1이나 Level 값 사이사이에 나타나는‘0'의 총 개수로 도 3에서는 5개이다.
Rbefore(Run_before)는 지그재그 배열에서의 T1이나 Level값 등‘0'이 아닌 계수 위치에서 그 이전에(역순에서는 그 이후에) 연달아 있는‘0'의 개수를 의미하고, Zleft(Zeros_Left)는 Run_before를 구하기 전 남아있는 '0'의 개수를 뜻하는 것으로, 이 두 요소를 쌍으로 지그재그배열내의‘0’아닌 계수들의 위치를 특정한다.
Zeros_Left와 Run_before 쌍도 지그재그 역순으로 나열되는 데, 도 3의 예에서는 (ZLeft, Rbefore)쌍을 지그재그 역순으로 구해보면 첫 번째 T1인 -1 계수에서는 뒤에‘0’이 하나 따르므로 (5,1)이고, 두 번째 T1인 +1 계수에는 남아있는‘0’의 개수는 4개이고 뒤에‘0’이 두 개 따르므로 (4,2)이며, Level 값 계수 -3 에는 남은‘0’이 두 개이고 뒤에‘0’이 없으므로 (2,0)이고, 계수 8에서는 남은‘0’이 두개이고 뒤에‘0’이 2개 따르므로 (2,2)이며, 이후 남은 ‘0’이 없으므로 멈추게 된다.
이와 같이 구해진 구문 요소로부터 엔트로피 부호화 입력인 계수 구문 세트를 구성하게 되는데, 첫 번째로 (Tcoeff,T1)을 쌍으로 하는 Coeff_Token이 입력되며, 도 3의 예에서는 (7,2)이다.
그리고, 두 번째는 T1_sign 열로 본 예에서는 {1,0}이다.
또한, 세 번째로는 Level열로 {-3,8,11,-4,23}이다.
한편, 네 번째는 (Tcoeff, Tzeros) 쌍으로 (7,5)이다.
마지막으로, (ZLeft, Rbefore)열로 도 3의 예에서는 {(5,0),(5,1),(4,2),(2,2)}이다. T1_sign을 제외하고는 각 구문 세트별로 그 확률 분포에 최적화된 코드 테이블에 따라 엔트로피 부호화가 이루어진다.
도 4는 본 발명에 따른 연성 워터마크 방식의 DCT 계수열 내 은닉 비트 삽입도 및 실시예를 설명하기 위한 도면이다.
이러한 도 4는 워터마크 삽입 조건이 만족 되었을 경우, 일반적인 도 3에서 보여진 DCT 계수 구문 구성 세트에 은닉 정보비트가 삽입되는 과정을 설명한 것이다.
여기서, 은닉 정보를 난수화한 워터마크 비트 WM은 지그재그배열의 LastCoeff 바로 뒤에 WM이 ‘0’일때 +1로,‘1’일때 -1의 계수값으로 삽입되어 Trailing One 형태로 새로운 LastCoeff가 형성되며, T1_sign과 동일하게 취급되어 이로부터 관련 구문 세트수정이 이루어진다.
즉, WM 비트가 추가됨으로 해서 Tcoeff는 하나 더 늘며, T1의 경우 삽입 전 3 미만이었다면 하나 더 증가되고, 3이었다면 대신 Level 개수가 하나 증가하게 된다.
Tzeros는 변함이 없으나, (Zleft,Rbefore)쌍의 경우 WM 비트에 해당하는 Zleft는 Tzeros 값을 갖고 Rbefore가 ‘0’인 (Tzeros,0)쌍이 추가된다.
도 4의 예에서는 워터마크 삽입으로 구문세트중 (Tcoeff,T1)쌍은 (7,2)에서 (8,3)으로, T1_sign열은 {1,0}에서 {wm,1,0}로, (Tcoeff, Tzeros)쌍은 (7,5)에서 (8,5)로 변경되며, (Zleft,Before)쌍 배열에는 (5,0)가 앞에 추가됨을 알 수 있다.
여기서, LastCoeff가 지그재그배열 맨 끝인 z15위치에 있고 부득이 워터마크를 삽입해야 한다면, 추가 삽입이 불가능하므로 그 계수값 대신 워터마크 정보로 대체할 수밖에 없는데, 이 경우 DCT 계수 정보의 손실을 피할 수 없다.
이로 인한 정보 손실을 최소화하려면 그 발생할 확률이 무시할 수 있을 정도로 작아야 하는데, 본 발명에서는 과제해결 수단내의 표에서 제시한 바와 같이 z15 위치에 LasteCoeff가 존재할 경우 z14와 z15위치의 계수값의 절대치가 모두 1인 극히 예외적인 경우에만 워터마크를 삽입하는 방식을 제안하였다.
z15위치에 +/-1 값의 LastCoeff가 있고, 워터마크 WM으로 이를 대체하였다면 첫 번째 T1_sign을 LastCoeff의 sign 값 대신 WM으로 대체하는 것 외에는 구문 계수 변동 사항은 없게 된다.
도 5는 본 발명에 따른 H.264/AVC 부호/복호화부내의 워터마크 삽입/추출 기능 블록도이다.
본 발명에 따른 H.264/AVC 부호/복호화부내의 워터마크 삽입/추출 기능 블록은 도 5에 나타낸 바와 같이, 부호화부(100)와 복호화부(200)로 구성된다.
여기서, 부호화부(100)는 DCT부(110), 양자화부(120), DCT계수 구성 및 워터마크 삽입부(130), 부호화측 역양자화부(140), 부호화측 IDCT부(150), 부호화측 은닉 데이터 생성부(160), 부호화측 랜덤 데이터 생성부(170) 및 DCT 계수 엔트로피 부호화부(180)로 구성된다.
이때, DCT부(110), 양자화부(120), 부호화측 역양자화부(140) 및 부호화측 IDCT부(150)의 구성은 일반적인 구성과 동일하므로 상세한 설명은 생략한다.
우선, DCT계수 구성 및 워터마크 삽입부(130)는 H.264/AVC 부호화부 내에서 DCT계수에 대한 구문 구성과 연동하여 은닉할 외부정보를 부호화측 랜덤 데이터 생성부(170)로부터 암호키 방식의 랜덤 데이터에 의해 생성된 워터마크 비트를 주기적으로 선택된 영상 블록의 DCT계수 구문세트에 대해 추가로 트레일링 원스(Trailing Ones) 형태로 삽입하고 이의 변동 사항에 따라 DCT계수 구문세트를 수정한다.
그러면, DCT 계수 엔트로피 부호화부(180)는 DCT계수 구성 및 워터마크 삽입부(130)에서 워터마크가 삽입되어 수정된 DCT계수 구문세트를 엔트로피 부호화하여 압축스트림을 생성하여 복호화부(200)의 DCT 계수 엔트로피 복호화부(210)로 전송한다.
한편, 복호화부(200)는 DCT 계수 엔트로피 복호화부(210), 워터마크 추출 및 DCT 계수 구성부(220), 복호화측 역양자화부(230), 복호화측 IDCT부(240), 복호화측 랜덤 데이터 생성부(250) 및 복호화측 은닉 데이터 생성부(260)로 구성된다.
여기서, 복호화측 역양자화부(230) 및 복호화측 IDCT부(240)의 구성은 일반적인 구성과 동일하므로 상세한 설명은 생략한다.
복호화부(200)의 DCT 계수 엔트로피 복호화부(210)는 DCT 계수 엔트로피 부호화부(180)로부터의 압축스트림을 수신하여 DCT 계수 구문세트로 복호화한다.
복호화된 DCT 계수 구문세트는 워터마크 추출 및 DCT 계수 구성부(220)로 전송된다.
랜덤 데이터 생성부(250)는 암호키의 교환으로 부호화부(100)의 랜덤 데이터와 동일한 데이터를 생성한다.
워터마크 추출 및 DCT 계수 구성부(220)는 복호화된 DCT 계수 구문세트로부터 부호화부(100)에서 전송된 워터마크 제어 파라미터에 따라 복호화된 DCT 계수 구문세트로부터 워터마크 비트를 추출하고 DCT 계수를 구성한다.
그러면, 은닉 데이터 생성부(260)는 랜덤 데이터 생성부(250)로부터의 랜덤 데이터와 워터마크 추출 및 DCT 계수 구성부(220)로부터의 워터마크 비트와의 조합으로 사용자 은닉 데이터를 복원한다.
이러한, 본 발명에 따른 H.264/AVC 스트림내의 워터마크 삽입/추출에 필요한 부가 기능 블록도는, H.264/AVC 부호화부 내에서 DCT계수에 대한 구문 구성과 연동하여 은닉할 외부정보를 받아 워터마크를 생성 및 삽입하는 기능과, 이에 부합하여 복호화부 내의 DCT계수에 대한 구문 복원 기능과 연동하는 워터마크 추출 및 은닉정보 복원 기능을 도시한 것이다.
워터마크의 입력인 은닉할 데이터는 삽입 전에 난수화 과정을 통한 암호 형태로 삽입하는 것이 일반적인데, 본 발명에 따른 실시 예에서는 암호키 방식의 난수 생성 비트열 r(i)로 은닉 데이터 비트열 h(i)를 비트단위로 배타적논리합(Exclusive OR)을 취한 워터마크 비트열 wm(i)을 생성하는 간단한 암호 형태를 도시하였으나, 암호키 방식의 어떠한 암호화 기술도 적용가능하다.
워터마크가 삽입된 스트림을 이의 추출과정 없이 복원한 영상에서는 그 흔적이 식별 불가능하여야만 은닉성이 보장되므로, 그 흔적이 영상 내에 골고루 분포해야 하고, 두드러질 가능성이 있는 모노톤 부분에는 삽입을 피하는 등 입력 영상 특성에 맞게 워터마크 삽입을 제어하여 워터마크 기능 향상을 도모하는 것이 필요하다.
본 실시 예에서는 이를 위해 주기적 워터마크 비트 생성 빈도수, 모노톤 판별과 관련한 매개변수, 암호화 방식 및 암호키 등을 미리 규약하고, 이들 정보를 별도의 보안 채널을 통해 복호화부에 전달하는 것으로 특정하였으나, 암호키만 공개키, 비빌키 등의 방식으로 별도 교환을 하고, 나머지 정보 등은 H.264/AVC의 NAL을 통해 사용자 보조 정보(unregistered user data SEI) 등의 형태로 전송하여도 무방하다.
복호화부에서는 이 매개변수를 갖고 워터마크가 실린 4x4블록의 위치를 찾아내 워터마크를 추출한 후 전송된 암호키로 부호화부의 난수 비트열을 재현하여 워터마크비트와 배타적 논리합을 취하여 은닉된 정보를 얻어내게 된다.
도 6a 및 도 6b는 본 발명에 따른 워터마크 삽입 방법과 워터마크 추출 방법을 각각 설명하기 위한 흐름도이다.
본 발명에 따른 워터마크 삽입/추출 방법은 도 5에 나타낸 본 발명 H.264/AVC 부호/복호화부에서의 워터마크 삽입/추출과 관련하여 매번 4x4 DCT 계수블록이 생성될 때마다 워터마크 삽입/추출 부가 기능이 어떻게 동작하는 지에 대한 개략적인 흐름을 설명한다.
우선, 워터마크 삽입 방법은 도 6a에 나타낸 바와 같이 이산여현변환 및 양자화된 영상 블록에 대해 DCT계수 구문세트를 구성한다(S110).
그 다음, 부호화부 내에서는 주어진 빈도 수(즉, 몇 블록마다 한번 워터마크 비트를 삽입할지)에 따라 워터마크를 삽입할 블록을 선택한다(S120). 이때, 선택이 안 된 블록에 대해서는 기존 DCT계수 구문세트를 유지한다(S130).
이어, DCT계수 구문세트 분석과정을 통해 선택된 블록이 워터마크 삽입 가능한 블록인지 판단한다(S140). 이때, 워터마크 삽입이 가능한 블록인지 판단하는 단계는, 해당 블록이 모노톤 형태라 삽입 시 워터마크가 식별될 우려가 있는지, 계수 분포상 삽입이 불가능한지 판별한다.
판단결과(S140) 선택은 되었지만 삽입이 불가능한 블록에 대해서는 바로 다음에 올 블록을 선택 블록으로 지정되게 한 후 기존 DCT계수 구문세트를 유지한다(S130).
한편, 판단결과(S140) 워터마크 삽입이 가능하다면 은닉할 데이터 비트열과 난수 비트열에서 한 비트씩 받아 워터마크 비트를 생성한다(S150).
이어서, 생성한 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 선택블록의 DCT 계수 구문세트에 추가 및 수정한다(S160).
그리고, 워터마크 삽입된 선택 블록의 수정된 DCT계수 구문세트와 비선택 블록이거나 선택은 되었으나 워터마크가 삽입이 불가한 블록의 DCT계수 구문세트 모두 엔트로피 부호화부를 거쳐 복호화부로 전송된다.
이어서, 워터마크 비트를 추출하여 원본 영상 및 은닉 데이터를 복원하는 방법은 도 6b에 나타낸 바와 같이, 부호화부에서 전송된 압축 스트림에서 블록별로 DCT 계수 구문세트를 복원한다(S210).
그 다음, 부호화부에서 전송된 매개 변수에 의해 설정된 빈도수에 따라 워터마크 삽입가능 블록을 선택한다(S220). 이때, 선택이 안 된 블록에 대해서는 복원된 DCT계수 구문세트를 유지하여(S230), 이로부터 이산여현변환 및 양자화 DCT 계수 블록을 구성한다(S270).
그리고, 선택된 블록에 대해서는 복원된 구문세트로부터 트레일링 원스(Trailing Ones) 형태로 워터마크가 삽입되었는지 판단한다(S240). 이러한 판단은 가변장 복호화부(VLD)에 의해 구해진 계수 구문세트로부터 부호화부와 동일한 기준으로 워터마크가 삽입되었는 지를 판별하는 것이다.
판단결과(S240), 워터마크가 삽입되지 않다면, 비선택블록과 동일한 경로로(S230) DCT계수 구문세트로 부터 이산여현변환 및 양자화 DCT 계수 블록을 구성한다(S270).
그러나, 판단결과(S240) 워터마크가 삽입되었다면 워터마크 비트를 추출하고, 암호키로부터 생성된 난수비트에 따라 은닉 데이터 비트를 복원한다(S250).
이때, 워터마크 비트는 암호키로부터 생성된 난수 비트와 배타적논리합(Exclusive OR)을 취해 구한다. 여기서, 은닉 데이터의 난수화에 있어서는 부호화부와 동일한 난수화 방식으로서 암호키 방식의 어떠한 암호화 기술도 적용가능하다.
그리고, 워터마크 비트가 삽입된 블록의 구문세트에서 해당 트레일링 원스(Trailing Ones)를 제거하고 수정하여 워터마크 삽입 전 DCT 구문 계수로 복원한다(S260).
그 다음 워터마크 제거된 구문세트로부터 이산여현변환 및 양자화된 원본 DCT 계수 블록을 구성한다(S270).
그리고, 워터마크 삽입된 선택 블록, 비선택 블록이거나 선택은 되었으나 워터마크 삽입이 불가한 블록 모두 DCT계수 블록이 구성(S270) 된 후 역양자화부 및 역이산여현변환부로 출력한다.
도 7a 및 도 7b는 도 6a 및 도 6b의 워터마크 비트 생성 방법과 워터마크 비트 추출방법을 각각 설명하기 위한 흐름도이다.
우선, 도 7a는 도 5와 도 6a에서 설명한 본 발명에 따른 워터마크 비트 생성과정으로서, 매 프레임마다 은닉할 데이터를 받아 워터마크 비트를 생성하는 과정에 대한 흐름도를 나타낸 것이다.
우선, 프레임 시작 시 해당 프레임에 실릴 은닉 데이터 N-비트를 받아 비트열로 저장하고, 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화한다(S310).
워터마크 시작(S320)은 선택된 블록이 워터마크 비트를 삽입할 수 있는지를 판단한다(S330).
판단결과(S330) 워터마크 비트를 삽입할 수 있다면 i 번째로 생성된 난수비트 r(i)와, i 번째 은닉 데이터비트 h(i)를 취한다(S340).
그리고, 난수화 조합의 일례로 이 두 비트 쌍의 배타적 논리합으로 워터마크 비트를 생성한다(S350).
이어 워터마크 카운터를 1 증가시킨다(S360).
여기서, 한 프레임 내에서 은닉할 데이터 량 N-비트보다 워터마크를 삽일 할 곳이 더 많다면, 이 잉여 비트(즉, i>N 보다 큰 위치)에 대한 처리 기준을 마련할 필요가 있는데, 본 발명에서는 i에 대한 모듈로 N 연산으로 i%N이 가리키는 은닉 데이터h(i%N)를 택하는 형태로, 은닉데이터가 소진시 반복적으로 재삽입한다.
그러나, i>N인 위치에서는 워터마크 삽입을 하지 않을 수도 있다. 이때, 은닉 데이터가 N-비트이고 한 프레임 내의 워터마크 삽입주기를 정할 때 4x4블록 총개수 Bmax와 은닉 데이터 량 N과 연관하여 블록 개수 Bmax/N을 기본으로 하며, 매 주기마다 한 번 선택된 블록에 1비트씩 삽입함으로써 은닉 데이터 분포를 균일하게 한다.
도 7b는 도 5와 도 6b에서 설명한 본 발명에 따른 워터마크 비트 추출과정으로서, 매 프레임마다 수신한 데이터를 받아 워터마크 비트를 추출하는 과정에 대한 흐름도를 나타낸 것이다.
우선, 프레임 시작 시 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화한다(S410).
워터마크 시작(S420)은 수신된 블록에서 i번째 워터마크 비트가 삽입되었는가를 판단한다(S430).
판단결과(S430) i번째 워터마크 비트가 삽입되었다면, 삽입된 워터마크 비트wm(i)와 i번째로 생성된 난수비트 r(i)를 추출한다(S440).
그리고, 추출된 워터마크 비트wm(i)와 i번째로 생성된 난수비트 r(i)에 eoo 배타적 논리합을 취하여 i 번째 은닉 데이터비트 h(i)비트를 추출한다(S450).
이어 워터마크 카운터를 1 증가시킨다(S460).
도 8은 도 6의 산발적/주기적 은닉정보 분포를 균일하게 하기 위한 워터마크 블록 선정을 설명하기 위한 흐름도이다.
도 8은 도 7에서 언급한 주기적 워터마크 삽입/추출에 대한 제어 흐름도를 나타낸 것으로, 주어진 주기에 따라 워터마크 삽입/추출이 일어날 블록을 선택하는데 필요한 절차를 표시한다.
우선, 프레임 시작시 워터마크 삽입 제어와 관련된 변수를 초기화한다(S510). 이때, 관련된 변수로는 B, Bcnt, Bwm 등이 있다. 여기서, B는 삽입 주기마다 한번씩 선택된 블록에 대해 1비트 워터마크를 삽입하는 삽입주기 변수이다. 그리고, Bcnt는 0으로 초기화하며 프레임이 끝날 때까지 4x4블록을 처리할 때마다 1씩 증가시켜 현재 부호화할 블록의 프레임 내 위치를 지정하는 변수이다. 마지막으로 Bwm은 Binit으로 초기화하여 매 삽입주기마다 프레임 내의 워터마크를 삽입하도록 선택된 블록의 위치를 지정하는 변수이다.
그리고, Bcnt값이 0인 첫 4x4블록부터 부호화를 진행하면서(S520), 매 블록 부호화 시작시 현재 부호화할 블록의 Bcnt가 삽입이 예정된 블록인 Bwm과 일치하는가를 판단한다(S530).
판단결과(S530) 일치하면 해당 블록을 선택하여 DCT 구문세트 구성이 완성된 후(S540), 워터마크 삽입을 시도하고(S550), 그 계수분포가 삽입이 불가한 블록으로 판별되면 Bcnt를 1 증가시켜 삽입을 다음 블록으로 미룬다(S580). 이때, 삽입이 가능한 블록을 만날 때까지 부호화 블록 위치를 증가시키게 된다.
즉, 현 블록 Bcnt가 Bwm보다 크거나 같고(S530), 그 계수 분포가 워터마크 삽입이 가능하다 판별될 때까지(S560), 삽입을 시도하게 된다.
삽입 후에는 다음 삽입 위치를 Bwm+B로 새로 지정하여(S570) Bcnt ~ Bwm+B 내에 위치한 블록에 대해서는 워터마크 삽입을 차단(S530)하는 방법으로, 프레임내의 워터마크 삽입 블록 간격에 대해 B의 주기성을 확보하도록 하는 것을 기본으로 한다.
물론, 극히 예외적으로 워터마크 삽입이 계속 미루어져 삽입이 일어난 시점의 Bcnt가 새로 지정한 Bwm+B보다 클 경우가 발생하는 데, 이 경우 차단 대신 연속적으로 워터마크가 삽입이 되어 국부적으로 주기성은 훼손되지만 삽입 빈도수는 유지할 수가 있다.
참고로, Bcnt가 현 매크로 블록 내에 어떤 위치에 있는가는, 도 8 우측의 4:2:0 입력 영상 기준의 매크로블록 구성도를 참조하면, 16x16매크로블록 내에는 4x4블록이 총 24개(휘도 16, 색상 8)로 구성되므로, Bcnt를 모듈로 24 연산(Bcnt%24)을 취하면 매크로 블록 내 위치 Bcur가 얻어진다.
삽입 주기 B는 언급한 은닉데이터 N-비트와 프레임내의 4x4블록 총개수 Bmax의 함수로서 B는 Bmax/N을 기본 값으로 하고 이보다 작은 값을 택하면 은닉 데이터가 반복 삽입되어 압축효율이 떨어지게 된다. 이때, B를 상수로 하여 삽입 주기가 고정되어 워터마크 패턴이 드러날 우려가 있다면, Bmax/N 값에 따라 B를 일정한 상수로 고정하는 방법도 있으나, 이대신 상수 avgB를 평균값으로 하고 약간의 분산치를 두어 매번 삽입이 일어날 때마다 그 주기를 난수화하는 방법이 워터마크 측면에서 보다 효과적일 수 있다.
이를 위해 미리 규약된 암호키와 분산 변수 D로 매 워터마크 비트 삽입이 이루어질 때마다 -B/D ~ +B/D 범위의 난수 값 dB를 생성하고 이를 평균값 avgB에 더한 값 B(= avgB + dB)를 다음 워터마크 삽입 블록을 지정하는데 적용하면, 평균 주기로 워터마크 빈도수를 보장하면서 임의의 블록 위치에 삽입하는 형태를 취할 수 있게 된다.
도 9는 도 6의 부호화부의 DCT 계수 분포에 따른 워터마크 삽입 가능 여부 판별을 설명하기 위한 흐름도이다.
도 9는 도 8과 연관하여 워터마크 삽입 위치로 지정된 블록에 대해 그 DCT계수 분포가 워터마크 삽입이 가능한지를 판별하는 기능과 그 삽입 여부에 따른 엔트로피 부호화 (VLC) 입력 및 역양자화(IQ)입력의 변동 사항에 대해 도시한 흐름도이다.
선택된 블록에 대한 워터마크 삽입 가능성 판별은 블록 내 화소 들 간에 차이가 없는 모노톤 블록 등 삽입 시 워터마크가 두드러져 보일 가능성이 있는 블록을 배제하는 주관적 판별(흐름도 우측)과, DCT계수 분포상 워터마크 삽입이 불가능한 블록을 배제하는 객관적 판별(흐름도 좌측) 등으로 나눌 수 있다.
우선, 주관적 판별의 경우 관련 변수들을 미리 규약하여 부호화부와 복호화부에서 동일하게 적용될 수 있도록 하여야 하는데, 본 발명에서는 1보다 큰 값의 최소치(LevelMin)(S610), 0 아닌 계수의 개수(Tcoeff)(S620), 지그재그 배열에서 워터마크 비트가 놓일 위치(Tcoeff + Tzeros)(S630) 각각의 변수에 대한 임계치를 두어 이 임계치를 넘지 못하면 그 블록을 배제(WM Disable)하는 방식을 취하였다. 물론, 이 이외에도 주관적 판별에 효과적인 변수들을 추가할 수도 있다.
우선, 워터마크 삽입은 앞에서도 설명한 바와 같이 16x16 화소 매크로 블록 내에 존재하는 4x4블록 단위의 DCT 계수 시퀀스에 대한 H.264 부호화 특징을 적용하게 되는데, 4x4블록 내의 DCT계수에 대한 부호화 방식은 주변상황에 따른 구문 적응형 가변길이 부호화로 H.264 표준에서 새로이 선보이는 방식이며, 양자화 후 zig-zag 순으로 나열된 4x4 블록 내의 DCT 계수를 부호화하는 데 이를 적용한다.
4x4 DCT계수는 Zig-Zag순으로 배열 후 7 구문 요소인 {TotalCoeff, T1, T1_sign, Levels, Total_Zeros, Zeros_Left, Run_before}로 변환하여 부호화한다.
여기서, TotalCoeff는 4x4블록 내의 '0'이 아닌 DCT계수의 총 개수이며, T1은 zig-zag 배열에서 꼬리 부분(Trailing)의 1 값 계수(Trailing Ones : 트레일링 원스)의 개수, T1_Sign은 T1에 해당하는 계수의 양음부호, Levels는 T1을 제외한 '0'이 아닌 계수 값들인데, 여기서 T1은 3개까지만 세며, 3개보다 많으면 나머지는 Levels로 간주한다. Total_Zeros는 zig-zag 배열에서 마지막에 있는‘0'아닌 계수 이전에 나타나는‘0'의 총 개수, Zeros_Left와 Run_before는 Zig-zag 배열에서의 ‘0'이 아닌 계수들 사이에 있는‘0'의 개수로 ‘0'아닌 계수들의 위치를 특정한다.
부호화 과정은 (TotalCoeff, T1), (TotalCoeff, Total_Zeros), (Zeros_Left, Run_before)를 쌍으로 하여 해당 테이블에 따라 가변길이 부호화하고, T1 계수 값은 그 양/음 부호만 알면 되므로 1 비트 Sign(양=0, 음=1)으로 표현되며, Levels은 블록내 계수 분포 상황에 맞게, 이전 계수 값의 변화 추이에 최적화 되도록 적응형 부호화를 한다.
(TotalCoeff, T1) 부호화는 특히 coeff_token이라 별칭하고, 인접 블록(상측 및 좌측)의 계수 평균 개수 정보(Nc)를 바탕으로 4그룹의 코드 테이블로 나누어, 현재에 coeff_token 부호화에 반영한다. 그 외의 요소들은 인접 블록과 무관하게 블록 내 계수 분포에 국한되어 독립적으로 부호화 된다.
이상의 H.264 DCT 계수 부호화 특징을 기반으로 본 발명의 구조적 워터마크 생성장치에서는 비디오 컨텐츠의 인증을 위해 입력되는 사용자 은닉 정보 및 고유 패턴을 난수화하고(워터마크 비트 생성), 양자화 과정을 거친 4x4 블록의 DCT 계수 시퀀스를 {TotalCoeff, T1, T1_sign, Levels, Total_Zeros, Zeros_Left, Run_before}등 7 구문요소로 구분하여 H.264 스트림 부호화를 위해 제공하며(VLC 입력 정보 생성), 생성된 워터마크 비트와 VLC 입력정보를 모니터링하여 워터마크 삽입 조건과 시점을 만족하는가를 판별하고 워터마크 제어에 따라 7요소에 워터마크 비트 정보를 추가하여 VLC 입력 정보를 재구성한다.
여기서, 워터마크 삽입은 워터마크 비트 정보에 따라 DCT계수 값 1 혹은 -1을 추가하는 형태로 7구문 요소를 재구성함에 있어, Total_Zeros는 변함이 없고 TotaCoeff와 T1을 1씩 증가 시키고 추가된 T1_sign에 워터마크 비트 정보를 실어 VLC입력 정보로 하는 것으로, 복호화 시 추가된 T1_sign정보를 제거하고 TotaCoeff 와 T1을 1씩 감소시키면 원영상의 7 구문 요소가 복원되는 것을 특징으로 한다.
한편, 워터마크 제어는 매 4x4블록 혹은 n-블록에 한번 등 정해진 주기마다 워터마크 비트를 삽입할 수 있도록 제어하는데 특징이 있는 것으로, 워터마크 삽입 시점이 되면, 그 시점의 4x4 DCT계수로부터 얻어진 7구문 요소를 분석하여 T1을 하나 더 추가할 수 있는지 여부를 판단하고, 추가가 가능하면 한 비트 정보를 출력하게 하고, 이를 7구문 요소에 추가할 T1_sign 비트로 하여 VLC 입력 정보를 재구성한다. 그러나, 추가가 불가능한 경우 삽입이 가능한 블록이 나올 때까지 매 블록마다 7구문 요소를 분석한다.
여기서 워터마크 삽입 가능한 7구문 요소는 T1을 추가함에 따른 (TotalCoeff + Total_Zeros + 1)의 값이 부호화할 4x4 DCT계수 총 개수를 넘어서는 안되고, 은닉을 위한 비가시성 워터마크가 될 수 있도록 TotalCoeff 개수가 충분히 크면서 추가할 T1의 위치가 Zig-Zag배열의 앞 부분에 위치하는 것을 피하며, 복호화부 입장에서는 오차 없이 삽입된 T1 워터마크 비트를 추출하여 삽입 전 7구문 요소를 구성하는 원본 DCT계수 들을 복원할 수 있는 조건을 만족하여야 한다.
비가시성 워터마크 조건인 (TotalCoeff + Total_Zeros +1) 및 TotalCoeff 개수의 최소값 등 임계값은 미리 규약되어 진다 가정한다면, 규약된 임계값을 만족하고, (TotalCoeff + Total_Zeros + 1)이 4x4 DCT계수 총개수(AC 블록일 경우 15, 그외엔 16)를 넘지 않으면 삽입 명령을 내릴 수 있다.
그런데, 4x4 DCT의 Zig-Zag배열(zz0, zz1 ~ zz14, zz15)에 있어 워터마크 삽입을 위해 추가할 T1의 위치가 zz14 이하인 경우는 문제가 없으나, 추가할 T1의 위치가 zz15(4x4 DCT 블록의 최우측 최하단)인 경우에는 복호화부에서 워터마크 추출시 부호화부측에서 그 삽입 여부가 불분명한 경우가 발생할 수 있다.
아래의 표 1은 규약된 임계값을 만족하여도 워터마크 삽입 여부가 불분명해 질 수 있는 위치 zz14, zz15의 DCT 계수 값에 대하여 본 발명에서 부호화부와 복호화부에서 적용되는 워터마크 삽입과 추출 실시예를 나타내었다.
4x4 블록 부호화부 4x4 블록 복호화부
분류 원본 DCT계수 절대값 워터마크가능 여부 워터마크 후 입력 DCT계수
절대값
워터마크추출 여부 워터마크
추출 후
원본 훼손 여부
DCTzz14 DCTzz15 DCTzz14 DCTzz15 DCTzz14 DCTzz15 DCTzz14 DCTzz15
1 0 0 o v* 0 v* 0 o 0 0
2 0 1 0 1 0 1 0 1
3 x >1 x >1 x >1 x >1
4 >1 x >1 x >1 x >1 x
5 1 0 o 1 1 1 1 o 1 0
6 1 1 o 1 1 1 1 o 1 0 o
여기서, 추가할 T1위치가 ZZ14인 경우 v=‘1', 아니면 v=‘0'이고, x= Don't care이다.
이러한 표1에서 분류 1의 경우는 워터마크정보 T1의 위치가 zz14 이하에 존재하므로 오류 없이 삽입 추출을 할 수 있는 경우를 나타낸다.
분류 2와 3은 zz15위치에‘1'보다 큰 계수인 경우거나, zz15위치에‘1'이면서 zz14위치에‘0'인 경우로 복호화기 측에서 zz15위치의 계수가 워터마크 정보 T1이 아닌 것으로 판별되므로 워터마크 삽입이 불가능하다.
분류 4는 zz14의 계수 절대치가 1보다 큰 경우로 이 경우는 zz15위치의 계수 값과 무관하게 워터마크 삽입이 불가능한 것으로 규약하여 복호화기 측에서는 이 경우 워터마크가 없는 블록으로 간주하도록 한다.
분류 5와 6은 zz14는‘1', zz15는‘0' 혹은‘1'인 경우로, zz15 위치에 항상 워터마크 삽입이 이루어지는 것으로 규약하며, 분류6의 경우에는 zz15위치에 원 계수 대신 워터마크 T1 정보로 대치함으로써 복호화기 측에서는 혼돈 없이 항상 zz15위치에 있는 T1 정보로 워터마크를 추출하는 것을 보장한다.
여기서, 분류 6의 경우는 zz15에 실린 원영상 계수 대신에 워터마크 T1 정보로 대치하는 결과가 되어 본 발명에서 극복하고자하는 원 영상정보 훼손 방지나 +/- 2의 계수 오차에 따른 워터마크의 비가시 특성 확보에는 위배되나 zz14와 zz15가 모두‘1'인 블록은 확률적으로 그 빈도가 낮은데다, 매우 복잡한 영상 형태를 나타낼 가능성이 높아 눈으로 보아서는 원영상과 구별하기가 불가능할 정도라 보아 그 훼손 정도는 상대적으로 무시할 수 있다 본다.
그리고, 분류 6의 경우 워터마크 삽입시 zz15의 영상 정보는 잃게 되는 경우이므로 부호화기측에서는 재귀루프(역양자화 및 역이산여현 변환)통한 참조영상 복원과정에서 역양자화 입력시에 ZZ15위치에 원래 값‘1'대신에‘0'인 값을 주면 이웃 블록이나 프레임들에 오류 전파에 따른 영상의 누적 훼손을 미연에 방지할 수가 있다. 하지만, 이미 엔코딩된 스트림에는 이 논리가 적용 안 되므로 미미하나마 참조영상의 훼손은 감내해야 한다.
근원적 해결 방법으로는 엔코딩시 블록내 계수 분포가 규약된 임계값을 만족하며 zz14와 zz15위치에 동시에‘1'인 경우에 추후 워터마크 생성을 고려하여 zz15를 강제로‘0'으로 대치함으로서, 워터마크 생성 전 압축 스트림내에는 zz14와 zz15가 동시에‘1'인 경우가 없도록 배제하는 것도 한 방법이다.
이러한, 본 발명에서 워터마크 삽입에 따른 압축 스트림 크기 증가는 원 블록의 부호화 조합 [TotalCoeff, T1], [TotalCoeff, Total_Zeros]가 워터마크 삽입 후 [TotalCoeff+1, T1+1], [TotalCoeff+1, Total_Zeros]로 변경됨에 따른 가변길이 부호화 크기 변화이다. 이때, 일반적으로 [TotalCoeff, T1]와 [TotalCoeff+1, T1+1], 그리고 [TotalCoeff, Total_Zeros]와 [TotalCoeff+1, Total_Zeros]의 가변길이 부호 크기 차이는 1비트 이하여서 워터마크 비트 하나당 2비트 이하의 스트림 증가가 일어나므로, 프레임 당 워터마크 정보 N 비트 삽입에는 2N 비트 이하의 압축 스트림 증가 요인이 발생한다. 따라서 이 2N이 압축 프레임 크기에 비하여 충분히 작다면 워터마크 삽입에 따른 압축 효율 감소는 무시 할 수 있는 것이다.
본 발명에서 Coeff_Token인 [TotalCoeff, T1]의 부호화를 하는 데 있어, 현 블록의 상측과 좌측 블록의 TotalCoeff 값인 TCoeffleft 와 TCoeffupper의 평균값 nC에 적응하여 최적화할 수 있도록 H.264 표준에서는 nC=0,1 nC=2,3 nC=4,5,6,7 nC>=8 등에 대한 4개의 별도 부호화 테이블을 유지한다.
엔코딩 과정에서 워터마크 삽입이 이루어진다면 삽입된 블록의 TotalCoeff를 [TotalCoeff+1]로 바꾸기만 하면 DCT계수에 대한 일반 부호화 과정과 동일하게 취급될 수 있으나, 이미 엔코드 된 압축 스트림에 대해 복호화/재부호화 과정에 의해 워터마크를 삽입할 때에는 TotalCoeff의 변경 사항이 발생하면 이후 나타날 인접 블록(워터마크가 삽입된 블록의 우측, 하측블록)에 대한 디코드 과정에서 nC의 계산에 영향을 미칠 수가 있어 변경 전후 사항을 저장하고 있어야 한다.
일례로 현재 어떤 블록에 대해 복호화를 행할 때 그 인접 블록이 재부호화 과정에서 워터마크가 삽입되어 TotalCoeff가 증가되었다면 변경 전 TotalCoeff로 계산된 nC에 해당하는 테이블로 현 블록을 복호화하여야만 정확한 DCT 계수들을 얻을 수 있으며, 재부호화 할 때는 인접 블록들의 변경 후 TotalCoeff로 계산된 nC에 해당하는 테이블로 현 블록을 재부호화 하여야만 일관성을 유지할 수 있게 된다.
그리고, 현 블록의 재 부호화 과정에서 워터마크가 삽입되어 졌다면 워터마크 삽입 전후의 TotalCoeff 변동사항을 기억하여야 추후 우측 및 하측에 있는 블록에 대한 복호화/재부호화를 오류 없이 진행할 수 있다. 그러나 워터마크 삽입 전후의 TotalCoeff 변동사항을 저장함에 있어 추후 코딩될 인접 블록이 같은 매크로블록 내에 있는 경우라면 임시 저장 공간을 활용해도 무방하나, 인접 블록이 매크로블록 경계 특히 하측부 매크로블록에 존재할 경우, 즉 현 매크로블록의 최하측 단과 하측 매크로블록의 최상측 단이 인접 블록인 경우라면, 화면 내의 매크로블록 한열을 다 코딩할 때까지 변경사항을 저장하여야 하므로, 화면 크기가 커질수록 저장 공간이 커져야 하며 제어도 복잡하여질 수가 있다.
이러한, 본 발명의 실시 예는 매크로블록의 최우측 및 최하측 블록의 경우는 워터마크 삽입을 할 수 없도록 배제하여, 워터마크 삽입으로 인한 TotalCoeff 변경이 미칠 nC의 변화가 한 매크로 블록 내에서만 영향을 받도록 함으로서 워터마크 생성/재생에 의한 부가 저장 공간 및 제어를 최소화할 수 있다.
그러므로, 앞에서 설명한 바와 같이 지그재그 배열 제일 끝 부분의 두 계수(Coeff@zz14, Coeff@zz15)에 대한 절대값(Z14, Z15)을 바탕으로 삽입 가능성을 판단하는 데, 둘 중 하나라도 1보다 큰 경우거나, Z15의 값이 1이고 Z14는 0인 경우에는 삽입이 불가하며 그 외의 경우는 모두 삽입 가능하다(S650)(S660)(S670)(S680).
삽입 가능한 경우는 두 종류로 분류되는데, 첫째 경우는 Z14는 0 또는 1이고 Z15는 0인 때, 둘째 경우는 두 계수 모두 1인 때이다.
첫째 경우(CASE1)(S690)는 워터마크 비트에 해당하는 T1_sign이 추가되므로, 이에 따른 계수 구문 수정 사항을 살펴보면, T1 과 TCoeff가 각 1씩 증가하며, (Zleft, Rbefore)쌍 집합에 (Tzeros,0)항이 하나 추가된다.
둘째의 경우(CASE2)(S700)는 Z15 위치의 계수에 해당하는 첫 번째 T1_sign 값을 워터마크 비트로 대치하므로, 계수 구문 수정 사항은 첫 번째 T1_sign을 변경하는 것 외에는 달라지는 것이 없다.
부호화부 내의 역방향 흐름에 적용되는 IQ입력은 CASE2(S700)를 제외하고는 워터마크 비트 삽입 전후의 변동 사항 없이 원본 DCT계수가 적용되며, CASE2(S700)의 경우 ZZ15 위치의 계수 값을 0으로 대치하여 그 원본 값을 잃게 된다.
도 10은 도 6의 복호화부의 DCT 계수 분포에 따른 워터마크 추출 가능 여부를 판별하는 방법을 설명하기 위한 흐름도이다.
도 10은 도 9의 부호화부 내의 워터마크 삽입 판별도에 부합하는 복호화부 내의 워터마크 추출 여부 판별 흐름도로서, 도 8의 절차를 통해 지정된 블록에 대해 워터마크가 삽입되었는지 여부를 판별하여 삽입이 확인되면 워터마크 비트를 추출하고, 이를 제외한 계수열로 IQ입력을 구성하는 것을 나타낸다.
계수 분포에 따른 주관적 평가에서 부호화부와 동일한 결과를 얻으려면 워터마크 삽입시 워터마크 삽입시 Tcoeff가 1 증가됨을 고려하여, LevelMin(최소값)이 THLevel(임계값) 보다 크거나 같고, Tcoeff는 TCnum(TotalCoeff 개수 : 임계값)보다 크며, Tcoeff+Tzeros는 TCZnum(개수)보다 큰 경우(S810)(S820)(S830) 워터마크 비트를 추출할 수 있으며, 객관적 평가(S850)(S860)에서 워터마크 비트가 발견되면 이를 제외한 계수열로 역양자화 및 역이산여현변환 입력을 구성한다(S870).
객관적 평가에 대해서는 부호화부에서 Z14위치의 계수의 절대치가 0 또는 1 이어야만 워터마크가 삽입되므로, T1이 존재하고 Z14위치의 계수 절대치가 1 이하인 블록이면 조건이 만족된다(S850)(S860).
이때, 삽입이 안되면 VLD 출력구문을 유지하며, 해당 구문 요소로 역양자화 및 역이산여현변환 입력을 구성한다(S840).
그리고 삽입이 확인되면 워터마크 비트를 추출하고, 이를 제외한 계수열로 역양자화 및 역이산여현변환 입력을 구성한다(S870).
이러한 도 4 내지 도 10에서 보여진 과정은 H.264/AVC 부호화부 내에 워터마크 생성기를 부착하여 부호화와 동시에 워터마크를 삽입하는 방법을 설명하였다.
한편, 도 11은 이미 압축된 스트림에 대해 본 실시 예에 따라 추가로 워터마크를 삽입하는 데 있어, 복호화 전 과정을 거치지 않고 엔트로피 복호화 단계에서 개입하여 워터마크 삽입 후 재 부호화과정을 통하여 기존 압축스트림에 워터마크를 추가 삽입하는 방식을 제안하는 것이다. 이때, 워터마크가 없는 압축 스트림을 가정하고 이를 복호화하여 DCT 계수 구문 세트를 복원하는 것을 시작으로 한다.
도 11은 본 발명에 따른 기 생성된 H.264/AVC 스트림에 워터마크를 삽입 기능블록도이고, 도 12는 주변 블록의 계수 총 개수에 의한 현 블록의 예측치 nC에 따른 Coeff_Token 코드표이며, 도 13은 복호 후 부호화시 워터마크 삽입에 의한 예측치 nC의 복호/부호화 과정 파급 예를 설명하기 위한 도면이다.
우선, 본 발명에 따른 기 생성된 H.264/AVC 스트림에 워터마크를 삽입 기능 블록은 도 5에서 보여진 부호화부에서 DCT 계수 구문세트로부터 워터마크 삽입하는 기능과 같고, 그 절차는 도 6 내지 도 10에서 설명한 방법과 동일하다.
본 발명에 따른 기 생성된 H.264/AVC 스트림 데이터에 워터마크를 삽입 기능블록도은 도 11에 나타낸 바와 같이, 엔트로피 복호화부(310), DCT계수 세트 복원부(320), 은닉 데이터 생성부(330), 랜덤 데이터 생성부(340), DCT계수 세트 재구성 및 워터마크 삽입부(350) 및 엔트로피 부호화부(360)로 구성된다.
여기서, 기 생성된 H.264/AVC 스트림 데이터는 워터마크가 없는 압축 스트림과 워터마크가 있는 압축 스트림 중 하나 이상에 적용가능하며, 워터마크 삽입을 계층적으로 수차 반복 적용하고 각 계층마다 적용된 워터마크 제어 정보를 모두 알 수 있는 경우 원본 압축 스트립의 복원이 가능하여 계층별 은닉 데이터 수준을 차별화하는 응용에 적용하게 된다.
우선, 엔트로피 복호화부(310)는 기 생성된 H.264/AVC 스트림의 데이터를 복호화하여 워터마크를 삽입하고자 하는 블록을 DCT계수 세트 복원부(320)로 전송한다. 그 외의 나머지 데이터들은 엔트로피 부호화부(360)로 바로 전송한다.
DCT계수 세트 복원부(320)는 DCT 계수를 복원하여 DCT 계수 세트 재구성 및 워터마크 삽입부(350)로 전송하면 DCT 계수 세트 재구성 및 워터마크 삽입부(350)는 랜덤 데이터 생성부(340)로부터의 암호키 방식의 난수 생성 비트열 r(i)과, 은닉 데이터 생성부(350)로부터의 은닉 데이터 비트열 h(i)를 비트단위로 배타적논리합(Exclusive OR)을 취한 워터마크 비트열 wm(i)을 받아 워터 마크를 삽입하고, DCT 계수 세트를 재구성하여 엔트로피 부호화부(360)로 전송한다.
엔트로피 부호화부(360)는 다른 데이터와 워터마크가 삽입되어 DCT 계수 세트가 재구성된 데이터와 나머지 복호화 데이터를 부호화한다.
그런데, 부호화와 동시에 워터마크 삽입할 때와 다른 환경에 기인한 문제점이 크게 보아 두 가지 존재할 수 있다.
그 하나는 도 9에서 보여진 DCT계수 분포에 따른 워터마크 삽입 조건 중 Z14와 Z15 위치의 계수 절대치가 모두 1인 경우(CASE 2)에 워터마크 삽입으로 Z15의 정보를 잃게 되는데 이에 따른 화질 열화 등 파급 효과이다.
또 다른 문제는, DCT 구문 세트 구성에 따른 엔트로피 부호화에 있어, Coeff_Token (TCoeff,T1)의 부호화에는 인접 블록들(좌측 및 상측)의 계수 총개수 평균 값을 예측 변수로 하여 코드 테이블이 구성되는데 워터마크 삽입으로 계수 총개수가 1 증가하므로, 추후 이를 인접 블록으로 하는 경우 그 평균값이 변경될 수 있어, 그 변경 전후 값을 저장하고 있어야 복호화 및 재부호화가 가능하다.
이상의 두 가지 문제점에 대한 해결방안을 설명하기로 한다.
첫 번째 경우의 문제점을 자세히 알아보고 그 대처방안을 살펴보면 Z14와 Z15의 계수가 모두 크기가 1인 CASE 2의 경우, 본 실시 예에서는 부호화와 동시에 워터마크 삽입을 할 때는 Z15위치에 있는 계수 대신 워터마크 비트로 대치하고, 재귀루프에 따른 역방향 흐름을 위한 IQ 입력은 무손실 삽입 조건을 포기하는 대신 Z15의 값을 강제로‘0’으로 놓아 부호화부와 복호화부에 동일한 복원영상이 재생되도록 하는 것을 특징으로 한다. 이는 이미 압축된 스트림의 경우에는 만족할 수 없다.
즉 기 압축된 스트림에서는 Z14와 Z15의 원 계수 값이 IQ입력으로 작용하여 복원 영상을 구성하고 이를 바탕으로 다음 영상(프레임)들의 부호화가 이미 이루어졌기 때문에, 워터마크 삽입 후 강제로 Z15를 0’으로 하면 복원 영상과 관련한 불일치가 이후 프레임 복호화에 영향을 미치며, 그 확률이 높지 않더라도 이것이 반복 진행됨에 따른 영상 화질 열화가 발생할 소지가 있다.
본 발명에서는 이의 방지를 위해 압축 후 워터마크가 추가로 삽입될 수 있다는 전제하에, 부호화 단계에서 DCT 계수 분포가 Z14와 Z15위치의 계수 절대치가 모두 1인 경우, Z15는 강제로 ‘0’으로 놓고 이를 엔트로피 부호화 및 IQ입력에 적용함으로써, 추후 워터마크 삽입시 CASE 2의 계수분포가 존재할 수 없도록 미연에 방지하는 것을 제안한다.
다만, 제안된 방식에서는 원 영상에서 Z15의 정보 손실로 화질 손상이 발생할 수도 있지만, Z14와 Z15의 절대치가 동시에 1일 확률은 극히 작으며, 그래도 발생했을 경우 Z15의 위치가 고주파 성분의 잡음특성을 띄우므로 강제로‘0'으로 놓더라도 육안으로 그 화질 손상을 구별할 수 없다 보아도 무방하다.
두 번째 경우의 문제점을 자세히 알아보고 그 대처방안을 살펴보면 다음과 같다. 우선, 주변 블록의 계수 총 개수에 의한 현 블록의 예측치 nC에 따른 Coeff_Token 코드표인 도 12를 보면 현재 부호화할 블록 Bcur(Bcur=Bcnt%24)에 대해, 그 좌측 블록 Bleft와 상측 블록 Bup의 DCT계수 총개수(Tcoeff)가 각각 nA, nB일때 Bcur의 총개수 예측치 nC는 Bleft와 Bup의 Tcoeff 평균치로서 두 블록이 다 존재하는 경우는 (nA+nB+1)/2이고, 일부만 존재하는 경우는 Bleft만 존재시 nA, Bup만 존재시 nB이며, 둘 다 존재하지 않는 경우는 0의 값을 갖게 된다.
이 예측값 nC에 따라 (Tcoeff,T1)쌍인 Coeff_Token (도 12의 표에는 TotalCoeff, Trailing Ones)의 코드 테이블이 달라지는데, nC는 0혹은 1인 경우, nC는 2,3인 경우, nC는 4,5,6,7인 경우, nC는 8이상인 경우 등 4 종류의 테이블이 존재하여 nC에따라 Coeff_Token쌍의 코드가 달라질 수 있다.
이미 압축된 스트림에 워터마크를 추가할 경우에 있어, 압축된 스트림내의 Coeff_Token에 대응하는 nC값은 결정된 상태인데, 어떤 블록에 대해 워터마크 비트의 추가로 총 개수가 하나 증가한다면 이를 인접 블록으로 하는 Bcur에 대해 복호화 시에는 증가하기 Tcoeff로 nC를 계산하여 Coeff_token을 구하고, 재부호화 시에는 증가한 후의 Tcoeff로 nC를 계산하여 Coeff_token을 구하여야 하는 문제가 발생하게 된다.
도 13은 복호 후 부호화시 워터마크 삽입에 의한 예측치 nC의 복호/부호화 과정 파급 예를 설명하기 위한 도면으로, 주변 블록은 워터마크가 추가 삽입이 안 되어있다 가정하고 블록 Bc1에 워터마크가 삽입되었을 때, 인접 블록 Bc2의 복호후 재부호화 진행시 적용되어야할 nC값의 변화를 나타낸 것으로 좌측 및 가운데 도면은 블록 Bc1에 대한 워터마크 삽입 전 후의 Tcoeff 분포이며, 우측도면은 Bc2에 대해 복호화시 적용되는 nC와 부호화시 적용되는 nC 계산이 다르고, 그 값이 1 차이가 날 수 있음을 나타낸다.
그런데, 그 값 차이가 1이 되어 복호화->부호화에 적용될 nC가 각각 1->2, 3->4, 7->8로 변한다면, 도 12의 표에서 본 바와 같이, 적용될 Coeff_Token 코드 테이블도 달라지는 것을 알 수 있다.
따라서, 복호화 후 재 부호화가 정상적으로 동작하기 위해서, 각 블록마다 복호화시 적용된 Tcoeff 값을 저장함은 물론 워터마크가 삽입되었는지 여부를 나타내는 1비트 정보를 별도 저장하고 있어야, 이를 인접 블록으로 하는 블록에 대해 복호화와 부호화를 진행할 때 정확한 Tcoeff를 적용할 수가 있다.
따라서, 인접 블록의 복호화가 진행되기 전 까지는 Tcoeff와 워터마크 유무 정보를 저장하고 있어야 하는데, 그것이 매크로블록(MB)내에 있다면 저장 및 관리 부담이 크지 않으나, 매크로블록(MB) 경계면에 위치해 있는 인접 블록은 타 매크로블록이므로 이에 대해서는 매크로블록이 끝나더라도 그 값을 저장관리할 필요가 있다.
특히, 매크로블록(MB) 하측 경계면에 위치한 블록의 경우에는 해당 매크로블록이 올 때까지 기다리려면 화면의 가로폭에 해당하는 매크로블록 수만큼이 흘러야 하므로 그만큼의 저장 공간이 필요하다.
일반적으로 nC계산을 위한 Tcoeff 유지 관리는 엔트로피 부호/복호화 기능 내에 존재하며, 이에 워터마크 여부 정보 비트를 추가하여 관리하려면 엔트로피 부호/복호화 기능 및 데이터 구조에 대한 수정 변경이 불가피하다.
본 발명의 실시 예에서는 H.264/AVC에 최소한의 변경만으로 워터마크 삽입/추출 기능을 부가하도록 하기 위해, 엔트로피 부호/복호화 기능의 입출력 단계에서 만 수정을 가할 뿐, 그 내부는 일체의 수정 없이도 동작할 수 있도록 하였는 데, 압축스트림에 워터마크를 추가하는 기능에서도 이 형태를 계속 유지하는 것이 바람직할 수 있다.
도 14는 복호화 후 부호화 시 nC 변화에 따른 복잡도 최소화를 위한 본 발명의 실시 예이다.
우선, 프레임시작 시 현재부호화블록(Bcnt)이 '0'이고, Bwm은 Binit로 초기화되어 삽입할 워터마크 블록을 지정한다(S910).
그 다음 4x4블록에 대하여 블록선택을 시작하여(S920), 현 부호화 블록 위치 Bcnt가 지정된 삽입 위치 Bwm보다 작거나(S930), 16x16 마크로블록 내의 4x4 블록 위치 Bcur(=Bcnt%24)가 삽입/추출 제어 관리의 편의상 하측 경계면에 위치하거나(S940), 마크로블록 우측에 위치하는가(S950)를 판단하여, 해당되는 블록들에 대해서는 워터마크 삽입을 규제하여(WM Disable), 이를 인접블록으로 하는 블록(타 매크로블록에 위치함)의 nC값은 변동이 없도록 하였다. 이때, 계수분포가 삽입이 불가한 블록으로 판별되면 삽입을 다음 블록으로 미룬다(S1000). 이때, 삽입이 가능한 블록을 만날 때까지 부호화 블록 위치 Bcnt는 계속 1씩 증가시킨다.
그리고, 선택된 4x4블록에 대하여 DCT 구문세트가 구성되면(S960), 워터마크를 삽입을 시도(S970)한다.
우선, 계수 분포가 워터마크 삽입이 가능하다 판별되면(S980), 삽입이 이루어진다. 그렇지 않은 경우에는 삽입을 다음 블록으로 미룬다(S1000).
삽입 후에는 다음 삽입 위치를 Bwm+B로 지정하여(S990) Bcnt ~ Bwm+B 내에 위치한 블록에 대해서는 워터마크 삽입을 차단하는 방법으로, B의 주기성을 확보하도록 하는 것을 기본으로 한다.
이러한 도 14는 복호화 후 부호화 시 nC 변화에 따른 복잡도 최소화를 위한 본 발명의 실시 예로서 도 8의 산발적/주기적 워터마크 블록 선정흐름도에 추가로 적용하여 블록 선택에 제한을 가하는 형태로 동작한다. 즉, 압축 스트림에서 워터마크 추가시에, 마크로블록 우측, 하측 경계면에 위치하는 블록들에 대해서는 워터마크 삽입을 규제하여 이를 인접블록으로 하는 블록(타 매크로블록에 위치함)의 nC값은 변동이 없도록 하였다.
삽입 전후의 nC 변화는 매크로블록 내부에서만 일어나므로, 워터마크 여부 정보 비트의 저장 범위는 매크로블록내부에 국한하여 관리가 필요할 뿐, 매크로블록간의 별도의 워터마크 관련 정보 비트 유지관리는 필요로 하지 않게 된다.
또 다른 장점은 워터마크 삽입 여부와 관련하여 그 예측치 nC의 변화가 타 매크로블록 복호/부호화에 영향을 미치지 않음으로 해서, 매크로블록 별로 독립적으로 복호화 재부호화가 가능하다는 점이다.
즉 매크로블록단위로 압축스트림내의 가변길이부호(VLC)를 분류하고, 워터마크 삽입 블록에 대해서는 DCT계수 구문세트 중 워터마크 비트 추가에 의한 T1_sign, Tcoeff 변화와 관련된 가변장 부호를 대치하면 되고, 인접블록에 대해서는 예측값 nC의 변동시 관련 Coeff_Token 가변장 부호만 대치하면 된다.
이 경우 정상적인 엔트로피 복호화기와 DCT 계수 세트 중 Coeff_Token(Tcoeff,T1), Level, (Tcoeff,Tzeros) 코드테이블만 필요로 하는 엔트로피 부호화기만 있으면 압축 스트림에 워터마크를 추가삽입하는 기능을 구현할 수 있다.
이상과 같은 예로 본 발명을 설명하였으나, 본 발명은 반드시 이러한 예들에 국한되는 것이 아니고, 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형 실시될 수 있다. 따라서 본 발명에 개시된 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 예들에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 한다.
100 : 부호화부 110 : DCT부
120 : 양자화부
130 :DCT계수 구성 및 워터마크 삽입부
140 : 부호화측 역양자화부 150 : 부호화측 IDCT부
160 : 부호화측 은닉 데이터 생성부 170 : 부호화측 랜덤 데이터 생성부
180 : DCT 계수 엔트로피 부호화부 200 : 복호화부
210 : DCT 계수 엔트로피 복호화부
220 : 워터마크 추출 및 DCT 계수 구성부
230 : 복호화측 역양자화부 240 : 복호화측 IDCT부
250 : 복호화측 랜덤 데이터 생성부
260 : 복호화측 은닉 데이터 생성부
310 : 엔트로피 복호화부 320 : DCT계수 세트 복원부
330 : 은닉 데이터 생성부 340 : 랜덤 데이터 생성부
350 : DCT계수 세트 재구성 및 워터마크 삽입부
360 : 엔트로피 부호화부

Claims (17)

  1. H.264/AVC 압축스트림을 주고받는 송신측과 수신측 사이에서의 연성 워터마크 삽입/추출 장치에 있어서,
    워터마크 비트 삽입을 위한 선택된 영상 블록에 대해 주기성 및 은닉성을 확보하고, 상기 선택된 영상 블록에 대해 양자화 DCT 계수 분포를 분석하여 DCT 계수열 꼬리 부분에 추가로 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입 가능한지 판단하여 삽입할 것인가 다음 블록으로 미룰 것인가를 결정하며, 비디오 컨텐츠의 인증을 위해 입력되는 사용자 은닉 데이터와, 상기 사용자 은닉 데이터를 난수화하는 랜덤데이터와의 조합으로 워터마크 비트를 생성하고, 상기 선택된 영상 블록에 대해 상기 생성된 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입하여 발생하는 DCT계수 구문세트에 변동 사항에 대한 수정을 가하여 상기 워터마크가 삽입된 압축스트림을 생성하는 부호화부(100) 및
    상기 부호화부(100)로부터의 압축 스트림에 대해 별도의 보안장치를 통해 상기 부호화부의 은닉 데이터 난수화 방식, 블록 선정 및 삽입 여부 판별 방식과 관련한 변수들을 제공받아, 상기 워터마크가 삽입된 압축 경향으로부터 워터마크 비트를 추출하여 이를 제거한 영상으로 복원하고, 상기 워터마크 비트는 난수화를 풀어 송신측의 은닉 데이터로 복원하는 복호화부(200);를 포함하여 구성됨을 특징으로 하는 연성 워터마크 삽입/추출 장치.
  2. 제1항에 있어서,
    상기 부호화부(100)는,
    상기 사용자 은닉 데이터를 생성하는 은닉 데이터 생성부(160)와,
    상기 사용자 은닉 데이터를 난수화하기 위한 랜덤 데이터를 생성하는 랜덤 데이터 생성부(170)와,
    상기 은닉 데이터 생성부(160)로부터의 은닉 데이터와, 암호키 방식의 랜덤 데이터 생성부(170)로부터의 암호키 방식의 랜덤 데이터와의 조합에 의해 생성된 워터마크 비트를 주기적으로 선택된 영상 블록의 DCT계수 구문세트에 대해 추가로 트레일링 원스(Trailing Ones) 형태로 삽입하고 이의 변동 사항에 따라 DCT계수 구문세트를 수정하는 DCT계수 구성 및 워터마크 삽입부(130)와,
    상기 DCT계수 구성 및 워터마크 삽입부(130)에서 워터마크가 삽입되어 수정된 DCT계수 구문세트를 엔트로피 부호화하여 압축스트림을 생성하는 DCT 계수 엔트로피 부호화부(180)를 포함하여 구성됨을 특징으로 하는 연성 워터마크 삽입/추출 장치.
  3. 제1항에 있어서,
    상기 복호화부(200)는,
    상기 부호화부(100)의 DCT 계수 엔트로피 부호화부(180)로부터의 압축스트림을 수신하여 상기 DCT 계수 구문세트를 복호화하는 DCT 계수 엔트로피 복호화부(210)와,
    상기 부호화부(100)에서 전송된 워터마크 제어 파라미터에 따라 상기 압축스트림에서 복호화된 상기 DCT 계수 구문세트로부터 압축스트림에서 워터마크 비트를 추출하고 상기 DCT계수를 구성하는 워터마크 추출 및 DCT 계수 구성부(220)와,
    암호키의 교환으로 상기 부호화부(100)의 랜덤 데이터 생성부(170)와 동일한 랜덤 데이터를 생성하는 랜덤 데이터 생성부(250) 및
    상기 랜덤 데이터 생성부(250)의 랜덤 데이터와, 상기 워터마크 추출 및 DCT 계수 구성부(220)로부터의 상기 워터마크 비트와의 조합으로 상기 사용자 은닉 데이터를 생성하는 은닉 데이터 생성부(260)를 포함하여 구성됨을 특징으로 하는 연성 워터마크 삽입/추출 장치.
  4. 제1항에 있어서,
    상기 H.264/AVC 압축스트림 중 미리 H.264/AVC로 부호화되어 저장되거나 송신된 일반 압축 스트림에 대해서 은닉 데이터를 추가하고자 하는 경우에는,
    상기 생성된 H.264/AVC 압축 스트림 데이터에서 DCT 계수 구성세트를 복호화하고, 상기 생성된 DCT 계수 구문세트에 대해 상기 연성 워터마크 삽입/추출 장치에서 상기 워터마크를 삽입하여 압축 스트림을 재생성하고, 상기 연성 워터마크 삽입/추출 장치에서 상기 재생성된 압축스트림에서 워터마크를 추출함을 특징으로 하는 연성 워터마크 삽입/추출 장치.
  5. 제4항에 있어서,
    상기 생성된 H.264/AVC 압축 스트림 데이터는 워터마크가 없는 압축 스트림과 상기 워터마크가 있는 압축 스트림 중 하나 이상에 적용가능하며, 상기 워터마크 삽입을 계층적으로 수차 반복 적용하고 각 계층마다 적용된 워터마크 제어 정보를 모두 알 수 있는 경우 원본 압축 스트립의 복원이 가능하여 계층별 은닉 데이터 수준을 차별화하는 응용에 적용하는 것을 특징으로 하는 연성 워터마크 삽입/추출 장치.
  6. H.264/AVC 압축스트림을 주고받는 송신측과 수신측 사이에서의 연성 워터마크 삽입/추출 방법에 있어서,
    부호화부(100)에서 워터마크 비트 삽입을 위한 선택된 영상 블록에 대해 주기성 및 은닉성을 확보하고, 상기 선택된 영상 블록에 대해 양자화 DCT 계수 분포를 분석하여 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 삽입 가능한지 판단하여 삽입할 것인가 다음 블록으로 미룰 것인가를 결정하며, 사용자 은닉 데이터와, 상기 사용자 은닉 데이터를 난수화하는 랜덤데이터와의 조합으로 생성된 워터마크 비트를 수신하여 상기 선택된 영상 블록에 대해 상기 생성된 워터마크 비트를 삽입하여 DCT계수 구문세트에 변동 사항에 수정을 가하여 상기 워터마크가 삽입된 압축스트림을 생성하는 단계(S100); 및
    상기 부호화부(100)로부터의 압축 스트림을 수신한 복호화부(200)에서 별도의 보안장치를 통해 상기 부호화부(100)의 은닉 데이터 난수화 방식, 블록 선정 및 삽입 여부 판별 방식과 관련한 변수들을 제공받아, 상기 워터마크가 삽입된 압축스트림으로부터 상기 워터마크 비트를 추출하여 이를 제거한 원본영상으로 복원하고, 상기 워터마크 비트는 난수화를 풀어 상기 부호화부(100)의 은닉 데이터로 복원하는 단계(S200);를 포함하여 구성됨을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  7. 제6항에 있어서,
    상기 워터마크가 삽입된 압축 스트림을 생성하는 단계(100)는,
    이산여현변환(DCT) 및 양자화(Q)된 영상 블록에 대해 DCT계수 구문세트를 구성하는 단계(S110)와,
    상기 부호화부 내에서 설정된 빈도 수에 따라 워터마크를 삽입할 블록을 선택하는 단계(S120)와,
    DCT계수 구문세트 분석과정을 통해 상기 선택된 블록이 워터마크 삽입 가능한 블록이면(S140), 은닉할 데이터 비트열과 난수비트열에서 한 비트씩 받아 워터마크 비트를 생성하는 단계(S150)와,
    상기 생성한 워터마크 비트를 트레일링 원스(Trailing Ones) 형태로 상기 선택된 블록의 DCT계수 구문세트에 추가 및 수정하는 단계(S160) 및
    상기 워터마크 삽입된 상기 선택된 블록을 상기 복호화부(200)로 전송하는 단계(S170)로 구성됨을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  8. 제7항에 있어서,
    상기 워터마크 비트를 생성하는 단계(S150)는,
    프레임 시작 시 해당 프레임에 실릴 은닉 데이터 N-비트를 받아 비트열로 저장하고, 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화하는 단계(S310)와,
    선택된 블록이 워터마크 비트를 삽입할 수 있다면(S330), i 번째로 생성된 난수비트 r(i)와, i 번째 은닉 데이터비트 h(i)를 취하는 단계(S340) 및
    상기 난수비트 r(i)와, i 번째 은닉 데이터비트 h(i)와의 난수화 조합의 일예인 배타적 논리합(Exclusive OR)을 취하여 상기 워터마크 비트 wm(i)를 생성하는 단계(S350)를 포함하여 이루어지되,
    상기 은닉 데이터의 난수화에 있어 상기 암호키 방식의 어떠한 암호화 기술도 적용가능한 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  9. 제8항에 있어서,
    상기 프레임 내에서 은닉할 데이터 량 N-비트보다 상기 워터마크 비트를 삽일 할 곳이 더 많다면, 잉여 비트(i>N 보다 큰 위치)에 대하여 i에 대한 모듈로 N 연산으로 i%N이 가리키는 은닉 데이터h(i%N)를 택하여 상기 은닉데이터가 소진시 반복적으로 재삽입하되, 프레임내의 워터마크 삽입주기를 정할 때 4x4블록 총개수 Bmax와 은닉 데이터 량 N과 연관하여 블록 개수의 Bmax/N을 기본으로 하여 매주기마다 한번 선택된 블록에 1비트씩 삽입하여 상기 은닉 데이터 분포를 균일하게 하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  10. 제6항에 있어서,
    상기 워터마크 비트를 추출하여 상기 원본 영상 및 상기 은닉 데이터로 복원하는 단계(S200)는,
    상기 부호화부(100)에서 전송된 압축스트림에서 블록별로 DCT계수 구문세트를 복원하는 단계(S210)와,
    상기 복원된 DCT계수 구문세트로부터 트레일링 원스(Trailing Ones) 형태로 워터마크가 삽입되었는지 판별하여 상기 워터마크 비트를 추출하고, 암호키로부터 생성된 난수비트에 따라 은닉 데이터를 복원하는 단계(S250)와,
    상기 워터마크 비트에 따라 블록의 구문세트에서 해당 트레일링 원스(Trailing Ones)를 제거하고 수정하여 워터마크 삽입 전 DCT 구문 계수로 복원하는 단계(S260)와,
    상기 워터마크 제거된 구문세트로부터 이산여현변환 및 양자화된 원본 DCT 계수 블록을 구성하는 단계(S270)를 포함하여 이루어지는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  11. 제10항에 있어서,
    상기 워터마크 비트를 추출하여 은닉 데이터를 복원하는 단계(S250)는,
    프레임 시작 시 워터마크 비트카운트 i는 0으로 초기화하며, 암호키로부터 난수 비트열을 초기화하는 단계(S410)와,
    수신된 블록에서 i번째 워터마크 비트가 삽입되어 있다면(S430), 삽입된 워터마크 비트 wm(i)을 추출하고 난수 비트 r(i)를 생성하는 단계(S440) 및
    상기 추출된 워터마크 비트 wm(i)와 i 번째로 생성된 난수비트 r(i)에 대해 배타적 논리합을 취하여 i번째 은닉 데이터비트 h(i)비트 추출하는 단계(S450)를 포함하여 이루어지는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  12. 제9항에 있어서,
    상기 은닉 데이터 분포를 균일하게 하는 것은,
    상기 워터마크 삽입 제어와 관련된 변수들로서,
    상기 삽입 주기마다 한 번씩 선택된 블록에 대해 1비트 워터마크를 삽입하는 삽입주기 변수 B와, 0으로 초기화하며 프레임이 끝날 때까지 4x4블록을 처리할 때마다 1씩 증가시켜 부호화할 블록의 프레임 내 위치를 지정하는 변수 Bcnt와 Binit으로 초기화하여 매 삽입 주기마다 프레임내의 워터마크를 삽입할 블록의 위치를 지정하는 변수 Bwm으로 구성되는 제어변수들을 매 프레임 시작시 초기화하는 단계(S510)와,
    상기 Bcnt값이 0인 첫 4x4블록부터 부호화를 진행하면서, 매 블록 부호화 시작시, 현재 부호화할 블록의 Bcnt가 삽입이 예정된 블록인 Bwm과 일치하게 되면(S530), 그 블록을 선택하여 워터마크 삽입을 시도하여, 그 블록의 DCT계수 분포가 워터마크 삽입이 가능하면 삽입하고, 삽입이 불가한 블록으로 판별되면(S530) 워터마크 삽입을 다음 블록으로 미루는 방식(S560)으로, Bcnt가 Bwm보다 크거나 같은 상태에서는 워터마크 삽입이 이루어질 때까지 삽입을 계속 시도하는 단계와,
    상기 워터마크 삽입이 이루어진 후에는 다음 삽입 예정 블록 위치를 Bwm+B로 새로 지정하여(S570) Bcnt ~ Bwm+B 내에 위치한 블록에 대해서는 워터마크 삽입을 차단함으로 해서, 프레임 내의 워터마크 삽입 블록 간격을 B로 하는 주기성을 확보하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  13. 제12항에 있어서,
    상기 워터마크 삽입이 계속 미루어져 삽입이 일어난 시점의 상기 Bcnt가 새로 저장한 상기 Bwm+B보다 클 경우 연속적으로 워터마크를 삽입하도록 되어 있어 삽입 빈도수는 유지하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  14. 제12항에 있어서,
    상기 삽입 주기 B는 상기 언급한 은닉데이터 N-비트와 프레임내의 4x4블록 총개수 Bmax의 함수로서 B는 Bmax/N을 기본 값으로 하고 이보다 작은 값을 택하면 상기 은닉 데이터가 반복 삽입되어 압축효율이 떨어지며, 상기 B를 상수로 하여 삽입 주기가 고정되므로 해서 워터마크 패턴이 드러날 우려가 있다면, avgB를 평균값으로 하고 분산치를 두어 매번 삽입이 일어날 때마다 그 주기를 난수화하기 위하여,
    미리 설정된 암호키와 분산 변수 D로 매 워터마크 비트 삽입이 이루어질 때마다 -B/D ~ +B/D 범위의 난수 값 dB를 생성하고, 이를 평균값 avgB에 더한 값 B(= avgB + dB)를 다음 워터마크 삽입 블록을 지정하는데 적용하여 평균 주기로 워터마크 빈도수를 보장하면서 임의의 블록 위치에 삽입하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  15. 제12항에 있어서,
    상기 선택된 블록에 대한 워터마크 삽입 가능성을 판단하는 단계(S560)는,
    관련 변수들을 미리 규약하여 부호화부와 복호화부에서 동일하게 적용될 수 있도록 1보다 큰 값의 최소치(LevelMin)(S610), 0아닌 계수의 개수(Tcoeff)(S620), 지그재그 배열에서 워터마크 비트가 놓일 위치(Tcoeff + Tzeros)(S630) 각각의 변수에 대한 임계치를 두어 각 변수값이 이 임계치 미만이면 해당 블록의 워터마크 삽입을 배제(WM Disable)하고,
    워터마크 비트가 트레일링 원스(Trailing Ones) 형태로 삽입가능한지 판단하는 객관적 판단 단계에서는 4x4 DCT의 지그재그 배열(zz0, zz1 ~ zz14, zz15)에 있어 워터마크 삽입을 위해 추가할 트레일링 원스(Trailing Ones)(T1's)의 위치가 zz14 이하이면 무조건 삽입하고, 그 위치가 zz15(4x4 DCT 블록의 최우측 최하단)인 경우에 상기 지그재그 배열 제일 끝 부분의 두 계수(Coeff@zz14, Coeff@zz15)에 대한 절대값(Z14,Z15)을 바탕으로 삽입가능성을 판단(S650)(S660)(S670)(S680)하여 Z14는 1이고, Z15는 0 또는 1인 경우에만 삽입하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  16. 제11항에 있어서,
    상기 수신된 블록에서 상기 워터마크 비트 추출(S430) 판단은,
    LevelMin(최소값)이 THLevel(임계값) 보다 크거나 같고, Tcoeff는 TCnum(임계값)보다 크며, Tcoeff+Tzeros(워터마크 위치)는 TCZnum(임계값)보다 큰 경우(S810)(S820)(S830)에 국한하여, 상기 트레일링 원스(Trailing Ones)(T1's)가 존재하고, 마지막 T1's 위치가 zz14 이하이면 그 T1을 무조건 워터마크 비트로 간주하고, 마지막 T1's의 위치가 zz15일 때에는 바로 전 zz14위치의 계수 절대치가 1인 경우에만 zz15의 T1을 워터마크 비트로 간주하여 상기 워터마크 비트를 추출하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
  17. 제11항에 있어서,
    프레임시작 시 현재 부호화할 블록(Bcnt)이 '0'이고, Bwm은 Binit로 초기화되어 삽입할 워터마크 블록을 지정하는 단계(S910)와,
    4x4블록에 대하여 블록선택을 시작하여(S920),
    현 부호화 블록 위치 Bcnt가 지정된 삽입 위치 Bwm보다 크거나 같고(S930), 16x16마크로블록 내의 4x4 블록 위치가 삽입/추출 제어 관리의 편의상 하측 경계면에 위치하지 않고(S940), 우측 경계면에 위치하지 않는(S950) 블록으로 선택된 4x4 DCT 계수블록(S960)에 대해 워터마크를 삽입을 시도(S970)하는 단계와,
    계수 분포가 워터마크 삽입이 가능하다 판별되면 워터마크 삽입을 수행(S980)하는 단계를 포함하는 것을 특징으로 하는 연성 워터마크 삽입/추출 방법.
KR1020110037407A 2011-04-21 2011-04-21 연성 워터마크 삽입/추출 장치 및 방법 KR101145110B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110037407A KR101145110B1 (ko) 2011-04-21 2011-04-21 연성 워터마크 삽입/추출 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110037407A KR101145110B1 (ko) 2011-04-21 2011-04-21 연성 워터마크 삽입/추출 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101145110B1 true KR101145110B1 (ko) 2012-05-15

Family

ID=46271932

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110037407A KR101145110B1 (ko) 2011-04-21 2011-04-21 연성 워터마크 삽입/추출 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101145110B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160129485A (ko) * 2015-04-30 2016-11-09 광운대학교 산학협력단 Hevc기반의 디지털 워터마킹을 위한 인트라 예측의 분석 방법
KR101819700B1 (ko) * 2013-12-16 2018-01-17 라이트론 인터내셔날 가부시키가이샤 암호 통신용 화상 압축 신장 방법 및 장치, 프로그램과 기억 매체
KR20200082755A (ko) * 2018-12-31 2020-07-08 재단법인 경주스마트미디어센터 Drm 콘텐츠 패키징 장치 및 이를 포함하는 drm 콘텐츠 패키징 시스템 및 drm 콘텐츠 패키징 방법
KR102481024B1 (ko) * 2021-07-22 2022-12-23 주식회사 티엔젠 데이터 암호화를 위해 수행되는 데이터 처리 방법, 장치, 시스템 및 컴퓨터 프로그램
US11645406B2 (en) 2020-07-16 2023-05-09 Humanscape Inc. System for verifying data access and method thereof
US11836274B2 (en) 2020-07-16 2023-12-05 Humanscape Inc. System for embedding digital verification fingerprint and method thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060027814A (ko) * 2003-06-25 2006-03-28 톰슨 라이센싱 압축된 비디오 비트스트림에 워터마크를 삽입하기 위한인코딩 방법 및 장치
KR20060081180A (ko) * 2005-01-07 2006-07-12 주식회사 마크애니 Jpeg 압축 데이터에 워터마크를 삽입 및 추출하는방법 및 장치
KR20080105184A (ko) * 2007-05-30 2008-12-04 주식회사 엠엠칩스 H.264/avc 표준용 워터마크 삽입 방법 및 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060027814A (ko) * 2003-06-25 2006-03-28 톰슨 라이센싱 압축된 비디오 비트스트림에 워터마크를 삽입하기 위한인코딩 방법 및 장치
KR20060081180A (ko) * 2005-01-07 2006-07-12 주식회사 마크애니 Jpeg 압축 데이터에 워터마크를 삽입 및 추출하는방법 및 장치
KR20080105184A (ko) * 2007-05-30 2008-12-04 주식회사 엠엠칩스 H.264/avc 표준용 워터마크 삽입 방법 및 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문 : WCNIS 2010 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101819700B1 (ko) * 2013-12-16 2018-01-17 라이트론 인터내셔날 가부시키가이샤 암호 통신용 화상 압축 신장 방법 및 장치, 프로그램과 기억 매체
US9883215B2 (en) 2013-12-16 2018-01-30 Lightron International Co., Ltd. Method and device for compressing and expanding image intended for encrypted communication, program, and storage medium
KR20160129485A (ko) * 2015-04-30 2016-11-09 광운대학교 산학협력단 Hevc기반의 디지털 워터마킹을 위한 인트라 예측의 분석 방법
KR102320368B1 (ko) 2015-04-30 2021-11-03 광운대학교 산학협력단 Hevc기반의 디지털 워터마킹을 위한 인트라 예측의 분석 방법
KR20200082755A (ko) * 2018-12-31 2020-07-08 재단법인 경주스마트미디어센터 Drm 콘텐츠 패키징 장치 및 이를 포함하는 drm 콘텐츠 패키징 시스템 및 drm 콘텐츠 패키징 방법
WO2020141823A1 (ko) * 2018-12-31 2020-07-09 재단법인 경주스마트미디어센터 Drm 콘텐츠 패키징 장치 및 이를 포함하는 drm 콘텐츠 패키징 시스템 및 drm 콘텐츠 패키징 방법
KR102186480B1 (ko) * 2018-12-31 2020-12-03 재단법인 경주스마트미디어센터 Drm 콘텐츠 패키징 장치 및 이를 포함하는 drm 콘텐츠 패키징 시스템 및 drm 콘텐츠 패키징 방법
JP2021522759A (ja) * 2018-12-31 2021-08-30 ギョンジュ スマート メディア センター Drmコンテンツパッケージング装置及びそれを含むdrmコンテンツパッケージングシステム及びdrmコンテンツパッケージング方法
US11645406B2 (en) 2020-07-16 2023-05-09 Humanscape Inc. System for verifying data access and method thereof
US11836274B2 (en) 2020-07-16 2023-12-05 Humanscape Inc. System for embedding digital verification fingerprint and method thereof
KR102481024B1 (ko) * 2021-07-22 2022-12-23 주식회사 티엔젠 데이터 암호화를 위해 수행되는 데이터 처리 방법, 장치, 시스템 및 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
KR101145110B1 (ko) 연성 워터마크 삽입/추출 장치 및 방법
EP2465267B1 (en) Method and apparatus for encoding and decoding image based on skip mode
KR101273473B1 (ko) 인코딩된 콘텐츠의 워터마킹
Noorkami et al. Compressed-domain video watermarking for H. 264
JP5284920B2 (ja) 人間の視覚特性を考慮した映像の符号化装置、復号化装置、符号化方法、及び、復号化方法
JP4564753B2 (ja) ビットストリームの変更方法及び装置
KR101538837B1 (ko) 변환 유닛 내의 다수 부호 비트 은폐
EP0928110B1 (en) Image signal processing for electronic watermarking
Pröfrock et al. H. 264/AVC video authentication using skipped macroblocks for an erasable watermark
JPH11136647A (ja) Mpeg2動画像符号化/復号化システム
CN110677694B (zh) 一种用于抵抗轮廓攻击的视频加密方法
KR19980071868A (ko) 영상데이터 인코더 및 영상데이터 인코드 프로그램이 기록된 기록 매체
Xue et al. An adaptive steganographic scheme for H. 264/AVC video with distortion optimization
TW201320757A (zh) 位元串流型式之畫像的解碼方法
Su et al. A privacy protection scheme in H. 264/AVC by data hiding
KR20100122386A (ko) 영상 시퀀스에 인위적으로 삽입된 적어도 하나의 영상 프레임을 부호화/복호화하는 방법 및 장치
JP4919213B2 (ja) 電子透かし挿入方式および検出方式
JP2010193399A (ja) 画像符号化装置及び画像符号化方法
KR100990210B1 (ko) H.264 비디오 콘텐츠의 무결성 인증 및 저작권 보호 방법
KR101710622B1 (ko) 스킵 모드에 따라 영상을 부호화, 복호화하는 방법 및 장치
JP2008042660A (ja) 映像信号再符号化装置及び映像信号再符号化方法
Farfoura et al. A Fragile Watermarking Method for Content-Authentication of H. 264-AVC Video.
US20240203457A1 (en) Editable signed video data
JP4018305B2 (ja) 画像処理方法及びその装置と記憶媒体
JP4020302B2 (ja) 情報埋め込み装置および情報抽出装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20150504

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160504

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170426

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180504

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190425

Year of fee payment: 8