KR20120051639A - 화상 처리 장치 및 방법 - Google Patents

화상 처리 장치 및 방법 Download PDF

Info

Publication number
KR20120051639A
KR20120051639A KR1020127000633A KR20127000633A KR20120051639A KR 20120051639 A KR20120051639 A KR 20120051639A KR 1020127000633 A KR1020127000633 A KR 1020127000633A KR 20127000633 A KR20127000633 A KR 20127000633A KR 20120051639 A KR20120051639 A KR 20120051639A
Authority
KR
South Korea
Prior art keywords
prediction mode
information
unit
quantization parameter
mode
Prior art date
Application number
KR1020127000633A
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 소니 주식회사
Publication of KR20120051639A publication Critical patent/KR20120051639A/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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
    • 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/103Selection of coding mode or of prediction mode

Landscapes

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

Abstract

본 발명은, VLC 방식의 부호화에 있어서, 부호화 효율을 개선할 수 있도록 하는 화상 처리 장치 및 방법에 관한 것이다. VLC 테이블 전환부는, 소정의 임계값보다 낮은 양자화 파라미터에 대응하여 k=0인 테이블을 선택하고, 소정의 임계값보다 높은 양자화 파라미터에 대응하여 k=1인 테이블을 선택한다. 코드 번호 할당부는, 소정의 임계값보다 낮은 양자화 파라미터에 대응하여 인터 16×16 모드를 코드 번호 "0"에 할당하고, 소정의 임계값보다 높은 양자화 파라미터에 대응하여 스킵(또는 다이렉트) 모드를 코드 번호 "0"에 할당한다. 본 발명은, 예를 들면 H. 264/AVC 방식으로 부호화하는 화상 부호화 장치에 적용할 수 있다.

Description

화상 처리 장치 및 방법{IMAGE PROCESSING APPARATUS AND METHOD}
본 발명은 화상 처리 장치 및 방법에 관한 것으로, 특히 VLC 방식의 부호화에 있어서, 부호화 효율을 개선하도록 한 화상 처리 장치 및 방법에 관한 것이다.
최근, 화상 정보를 디지털로서 취급하고, 그때, 효율이 높은 정보의 전송, 축적을 목적으로서 화상 정보 특유의 용장성을 이용하여 이산 코사인 변환 등의 직교 변환과 움직임 보상에 의해 압축하는 부호화 방식을 채용해서 화상을 압축 부호하는 장치가 보급되고 있다. 상기 부호화 방식에는, 예를 들면 MPEG(Moving Picture Experts Group) 등이 있다.
특히, MPEG2(ISO/IEC 13818-2)는, 범용 화상 부호화 방식으로서 정의되어 있으며, 비월 주사 화상 및 순차 주사 화상의 쌍방, 및 표준 해상도 화상 및 고정밀 화상을 망라하는 표준이다. 예를 들면, MPEG2는, 프로페셔널 용도 및 소비자 용도의 광범위한 어플리케이션에 현재 널리 이용되고 있다. MPEG2 압축 방식을 이용함으로써, 예를 들면 720×480 화소를 갖는 표준 해상도의 비월 주사 화상이면 4 내지 8Mbps의 부호량(비트 레이트)이 할당된다. 또한, MPEG2 압축 방식을 이용함으로써, 예를 들면 1920×1088 화소를 갖는 고해상도의 비월 주사 화상이면 18 내지 22Mbps의 부호량(비트 레이트)이 할당된다. 이에 의해, 높은 압축율과 양호한 화질의 실현이 가능하다.
MPEG2는 주로 방송용에 적합한 고화질 부호화를 대상으로 하고 있었지만, MPEG1보다 낮은 부호량(비트 레이트), 즉 보다 높은 압축율의 부호화 방식에는 대응하지 않았다. 휴대 단말기의 보급에 의해, 금후 그러한 부호화 방식의 수요는 높아질 것으로 생각되며, 이에 대응해서 MPEG4 부호화 방식의 표준화가 행해졌다. 화상 부호화 방식에 관해서는, 1998년 12월에 ISO/IEC 14496-2로서 그 규격이 국제표준으로 승인되었다.
또한 최근, 당초 텔레비전 회의용의 화상 부호화를 목적으로 하여, H.26L(ITU-T Q6/16 VCEG)이라는 표준의 규격화가 진행되고 있다. H.26L은 MPEG2나 MPEG4와 같은 종래의 부호화 방식에 비해 그 부호화, 복호화에 보다 많은 연산량이 요구되지만, 보다 높은 부호화 효율이 실현되는 것으로 알려져 있다. 또한 현재, MPEG4의 활동의 일환으로서, 상기 H.26L을 바탕으로 H.26L에서는 서포트되지 않는 기능도 도입하여, 보다 높은 부호화 효율을 실현하는 표준화가 Joint Model of Enhanced-Compression Video Coding으로서 행해지고 있다. 표준화의 스케줄로는, 2003년 3월에는 H. 264 및 MPEG-4 Part10(Advanced Video Coding, 이하 H. 264/AVC라고 기재함)이라는 국제 표준으로 되어 있다.
또한, 그 확장으로서, RGB나 4:2:2, 4:4:4와 같은 업무용으로 필요한 부호화 툴이나, MPEG-2에서 규정되어 있던 8×8 DCT나 양자화 매트릭스를 포함한 FRExt(Fidelity Range Extension)의 표준화가 2005년 2월에 완료되었다. 이에 의해, H. 264/AVC를 이용하여, 영화에 포함되는 필름 노이즈도 양호하게 표현하는 것이 가능한 부호화 방식이 되어, Blu-Ray Disc(상표) 등의 폭넓은 어플리케이션에 이용되게 되었다.
그러나 최근, 하이비젼 화상의 4배인 4000×2000 화소 정도의 화상을 압축하고자 하는 더 한층의 고압축율 부호화에 대한 수요가 높아지고 있다. 혹은, 인터넷과 같은 한정된 전송 용량의 환경에서 하이비젼 화상을 배신하고자 하는 더 한층의 고압축율 부호화에 대한 수요가 높아지고 있다. 이 때문에, 상술한 ITU-T 산하의 VCEG(=Video Coding Expert Group)에 있어서, 부호화 효율의 개선에 관한 검토가 계속적으로 행해지고 있다.
상기 H. 264/AVC 방식에서는, 비특허 문헌 1에 기재된 바와 같이, 가역 부호화 방식으로서, CAVLC(Context-Adaptive Variable Length Coding)와 CABAC(Context-Adaptive Binary Arithmetic Coding)의 2가지 방식이 규격화되어 있다.
우선, CAVLC 방식에 대해 설명한다. CAVLC에서는, 직교 변환 계수의 부호화에는, 주변 블록에 있어서의 직교 변환 계수의 발생에 따라서 전환된 VLC 테이블이 이용된다. 그 밖의 신택스 요소의 부호화에 관해서는, 도 1에 도시되는 지수 골롬(Exponential Golomb) 부호가 이용된다.
도 1의 지수 골롬 부호에서는, 예를 들면 코드 번호(Code Number) 0과 부호어(Code Words) 1이 대응하고 있고, 코드 번호 1과 부호어 010이 대응하고 있고, 코드 번호 2와 부호어 011이 대응하고 있다. 또한, 코드 번호 3과 부호어 00100이 대응하고 있고, 코드 번호 4와 부호어 00101이 대응하고 있고, 코드 번호 5와 부호어 00110이 대응하고 있고, 코드 번호 6과 부호어 00111이 대응하고 있다.
또한, 움직임 벡터와 같은 신택스 요소에 관해서는, 마이너스의 값이 발생할 가능성이 있다. 따라서, 마이너스의 값이 발생할 가능성이 있는 신택스 요소의 경우, 도 2에 도시되는 대응 관계에 기초하여, 부호가 없는 코드 번호로 치환된 후, 그 부호화에 도 1의 지수 골롬 부호가 이용된다.
도 2에는, 코드 번호와 신택스 요소(v)의 대응 관계가 나타나 있다. 즉, 이 대응 관계에 기초함으로써, 예를 들면 신택스 요소(v)=0이 코드 번호 0으로 치환되고, 신택스 요소(v)=1이 코드 번호 1로 치환되고, 신택스 요소(v)=-1이 코드 번호 2로 치환된다. 또한, 신택스 요소(v)=2가 코드 번호 3으로 치환되고, 신택스 요소(v)=-2가 코드 번호 4로 치환되고, 신택스 요소(v)=3이 코드 번호 5로 치환된다.
다음으로, CABAC 방식에 대해서 설명한다.
도 3은, CABAC 부호화를 행하는 가역 부호화부의 구성예를 도시하고 있다. 도 3의 예에서 가역 부호화부는, 컨텍스트 모델화부(11), 2치화부(12), 및 확률 추정부(21) 및 부호화 엔진(22)으로 이루어지는 적응 2치 산술 부호화부(13)에 의해 구성되어 있다.
컨텍스트 모델화부(11)는, 압축 화상에 있어서의 임의의 신택스 요소에 관한 것으로, 우선, 과거의 이력에 따라서 신택스 요소의 심볼(기호)을 적절한 컨텍스트 모델로 변환한다. CABAC 부호화에서는, 서로 다른 신택스 요소는 서로 다른 컨텍스트에 의해 부호화가 이루어진다. 또한, 동일한 신택스 요소라도 주변 블록 또는 매크로 블록에 있어서의 부호화 정보에 따라서 서로 다른 컨텍스트에 의해 부호화가 이루어진다.
예를 들면, 도 4를 참조하여, 플래그 mb_skip_frag를 예로 들어 설명하지만, 다른 신택스 요소에 대한 처리에 대해서도 마찬가지이다.
도 4의 예에서, 지금부터 부호화되는 대상 매크로 블록 C와, 이미 부호화 완료된 블록이며, 대상 매크로 블록 C에 인접하는 인접 매크로 블록 A 및 B가 나타나 있다. 각각의 매크로 블록 X(X=A, B, C)에 대하여 플래그 mb_skip_frag가 정의되고 있으며, 다음 식 (1)이라고 한다.
Figure pct00001
즉, 매크로 블록 X가, 참조 프레임의 공간적으로 대응하는 위치의 화소를 그대로 이용하는 스킵 매크로 블록인 경우, f(X)는 1이 되고, 그렇지 않은 경우 0이 된다.
이때, 대상 매크로 블록 C에 대한 컨텍스트 Context(C)는, 다음 식 (2)와 같이, 좌측의 인접 매크로 블록 A의 f(A)와 상측의 인접 매크로 블록 B의 f(B)의 합으로서 산출된다.
Context(C) = f(A) + f(B) …… (2)
즉, 대상 매크로 블록 C에 대한 컨텍스트 Context(C)는, 인접 매크로 블록 A, B의 플래그 mb_skip_frag에 따라서, 0, 1, 2 중 어느 하나의 값을 취하게 된다. 즉, 대상 매크로 블록 C에 대한 플래그 mb_skip_frag는, 0, 1, 2 중 어느 하나의 서로 다른 부호화 엔진(22)이 이용되어 부호화되게 된다.
2치화부(12)는, 예를 들면 인트라 예측 모드와 같이, 신택스 상, 비 2치화 데이터인 요소의 심볼을 도 5에 도시되는 테이블에 기초해서 변환한다.
도 5의 테이블에서는, 코드 심볼이 0인 경우 0으로 2치화되고, 코드 심볼이 1인 경우 10으로 2치화되고, 코드 심볼이 2인 경우 110으로 2치화되는 것이 나타나 있다. 또한, 코드 심볼이 3인 경우 1110으로 2치화되고, 코드 심볼이 4인 경우 11110으로 2치화되고, 코드 심볼이 5인 경우 111110으로 2치화되는 것이 나타나 있다.
단, 매크로 블록 타입에 관해서는 상기 테이블이 아니라, I 슬라이스, P 슬라이스, 및 B 슬라이스 각각에 대해서 도 6 내지 도 8에 나타나는 별도 규정된 불규칙한 테이블에 기초해서 2치화 처리가 행해진다.
도 6은, I 및 SI 슬라이스의 경우의 매크로 블록 타입의 2치화 테이블을 나타내고 있다. 도 6의 테이블에서는, 0 내지 25의 매크로 블록 타입의 값[Value(name)of mb_type]과, 그에 대응하는 2치열(Bin string)이 나타나 있다.
도 7은, P, SP 및 B 슬라이스의 경우의 매크로 블록 타입의 2치화 테이블을 나타내고 있다. 도 7의 테이블에서는, P 및 SP 슬라이스의 경우의 0 내지 30의 매크로 블록 타입의 값과, 그에 대응하는 2치화 열이 나타나 있으며, B 슬라이스의 경우의 0 내지 48의 매크로 블록 타입의 값과, 그에 대응하는 2치화 열이 나타나 있다.
도 8은, P, SP 및 B 슬라이스의 경우의 서브 매크로 블록 타입의 2치화 테이블을 나타내고 있다. 도 8의 테이블에서는, P 및 SP 슬라이스의 경우의 0 내지 3의 매크로 블록 타입의 값과, 그에 대응하는 2치화 열이 나타나 있으며, B 슬라이스의 경우의 0 내지 12의 매크로 블록 타입의 값과, 그에 대응하는 2치화 열이 나타나 있다.
이상과 같은 2치화 테이블에 의해 2치화된 신택스 요소는, 후단의 적응 2치 산술 부호화부(13)에 의해 부호화된다.
도 3으로 되돌아가서, 적응 2치 산술 부호화부(13)에서는, 2치화된 심볼에 대하여 확률 추정부(21)에 의해 확률 추정이 이루어지고, 부호화 엔진(22)에 의해 확률 추정에 기초하는 2치 산술 부호화가 실시된다. 그때, "0", "1"의 확률은, 슬라이스 선두에서 초기화되고, 1Bin의 부호화가 행해질 때마다 그 확률 테이블이 갱신된다. 즉, 2치 산술 부호화 처리가 행해진 후, 관련된 모델의 갱신이 행해지기 때문에, 각각의 모델은 실제의 화상 압축 정보의 통계에 따른 부호화 처리를 행하는 것이 가능해진다.
다음으로, 도 9를 참조하여 2치 산술 부호화의 동작에 대해서 설명한다. 이제, '1'의 발생(출현) 확률이 0.2, '0'의 발생 확률이 0.8인 경우에, 입력 신호인 비트열 "010"을 부호화하는 것을 생각한다.
우선, 스텝 S1에서 '0'이 부호화된다. 그 결과, 초기 구간에서의 도면 중 하측 0.8의 부분 (0.0-0.8)이 갱신된 구간이 된다. 스텝 S2에서 '1'이 부호화된다. 그 결과, 현재의 구간 (0.0-0.8)에서의 도면 중 상측 0.2가 새로운 갱신 구간 (0.64-0.8)이 된다.
스텝 S3에서 '0'이 부호화된다. 그 결과, 현재의 구간 (0.64-0.8)에서의 도면 중 하측 0.8이 새로운 갱신 구간 (0.64-0.768)이 된다.
산술 부호의 부호어는 최종 구간을 특정하는 실수 값의 2진 표현이 되고, 이러한 예의 경우에는 0.64-0.768이 최종 구간이 되므로, 그 사이에 들어가는 실수로서 0.75를 취할 수 있다. 실수 0.75의 2진 표현은 0.11이므로, 스텝 S4에서는, 그 2진 표현(0.11)으로부터, 항상 0이 되는 최초의 자릿수를 제외한 후의 "11"이 부호어가 되어, 최종적으로 "11"이라는 신호가 출력된다.
여기서, 도 9에서의 예를 들면 "0.64"와 같은 구간 간격을 유지하는 레지스터의 자릿수는 실제로는 유한하다. 따라서, 적응 2치 산술 부호화부(13)의 처리에는, 도 9의 2치 산술 부호화에, 출력해야 할 구간의 상위 비트가 확정된 단계에서 적시에 확정 비트를 출력하고, 구간의 폭을 넓히는 재정규화(Renormalization)라고 불리는 방법이 가해진다.
다음으로, 도 10을 참조해서 재정규화에 대해 설명한다. 또한, 도 10의 예에서, 도 9와 동일한 스텝 번호는 동일한 스텝을 나타내고 있다.
스텝 S2에서 '1'이 부호화된다. 그 결과, 현재의 구간 (0.0-0.8)에서의 도면 중 상측 0.2가 새로운 갱신 구간(0.64-0.8)이 된다. 스텝 S3에서 구간 (0.64-0.8)이 0.5를 초과했으므로, 그 시점에서 "1"을 출력하고, 0.5에서부터 1.0의 사이를, 0.0에서부터 1.0의 사이로 확대(재정규화)한다. 이에 의해, 정규화된 구간이 (0.28-0.6)이 된다.
스텝 S3'에서 '0'이 부호화된다. 그 결과, 현재의 구간 (0.28-0.6)에서의 도면 중 하측 0.8이 새로운 갱신 구간 (0.28-0.536)이 된다.
상기 예의 경우에는, 0.28-0.536이 최종 구간이 되므로, 그 사이에 들어가는 실수로서 0.5를 취할 수 있다. 실수 0.5의 2진 표현은 0.1이므로, 스텝 S4'에서는, 그 2진 표현(0.1)에서 항상 0이 되는 최초의 자릿수를 제외한 후의 "1"이 부호어가 되어, 최종적으로, "1"이라는 신호가 출력된다.
상기 재정규화에 의해, 레지스터의 정밀도가 유효 이용 가능해진다.
한편, H. 264/AVC 방식에 있어서, 보다 높은 부호화 효율을 달성하기 위해서는 적절한 예측 모드의 선택도 중요하다.
이 예측 모드의 선택 방식의 예로서, 비특허 문헌 2에서 공개되어 있는 JM(Joint Model)이라고 불리는 참조 소프트웨어(reference software)에 실장되어 있는 방법을 들 수 있다.
JM에서는, 다음으로 설명하는 High Complexity 모드 또는 Low Complexity 모드의 2가지의 모드 판정 방법을 선택할 수 있다.
High Complexity 모드에서는, 다음의 식 (3)으로 나타내지는 코스트 함수가 이용되어, 코스트 함수값이 각 예측 모드에 대해 산출된다. 그리고, 산출된 코스트 함수값의 최소값을 부여하는 예측 모드가, 대상 블록 (혹은 매크로 블록)에 대한 최적 예측 모드라고 하여 선택된다.
Cost(Mode ∈ Ω) = D + λ?R …… (3)
여기서 Ω는, 대상 블록 (혹은 매크로 블록)을 부호화하기 위한 후보 모드의 전체 집합이다. D는, 예측 모드(Mode)에서 부호화한 경우의, 원화상과 복호 화상의 차분(왜곡) 에너지다. R은, 직교 변환 계수까지 포함한 예측 모드(Mode)에서 부호화한 경우의 총 부호량이다. λ는, 양자화 파라미터(QP)의 함수로서 주어지는 라그랑쥬 미정 승수다.
즉, High Complexity 모드에서의 모드 판정을 행하기 위해서는, 상술한 파라미터 D 및 R을 산출할 필요가 있기 때문에, 후보가 되는 모든 예측 모드에 대하여 임시로 부호화 처리까지가 행하여지므로, 연산 정밀도는 높지만 보다 높은 연산량이 필요하다.
한편, Low Complexity 모드에서는, 다음의 식 (4)로 나타내지는 코스트 함수가 이용되어, 코스트 함수값이 각 예측 모드에 대하여 산출된다. 그리고, 산출된 코스트 함수값의 최소값을 부여하는 예측 모드가, 대상 블록 (혹은 매크로 블록)에 대한 최적 예측 모드라고 하여 선택된다.
Cost(Mode ∈ Ω) = D + QPtoQuant(QP)?HeaderBit …… (4)
여기서 D는, High Complexity 모드의 경우와 달리, 예측 화상과 입력 화상의 차분(왜곡) 에너지다. HeaderBit는, 직교 변환 계수를 포함하지 않는 움직임 벡터나 예측 모드와 같은 헤더에 속하는 정보에 관한 부호량이다. QPtoQuant는, 양자화 파라미터(QP)의 함수로서 주어지는 함수다.
즉, Low Complexity 모드에서는, 모든 예측 모드에 대하여 예측 화상을 생성할 뿐으로, 복호 화상은 필요 없으며, 부호화 처리 및 복호 처리를 행할 필요가 없다. 이 때문에, High Complexity 모드의 경우보다 연산 정밀도는 낮지만, 낮은 연산량에서의 실현이 가능하다.
그런데, 도 11을 참조해서, 상술한 참조 소프트웨어를 이용하여 임의의 시퀀스를 2종류의 양자화 파라미터를 이용해서 CABAC 및 CAVLC로 각각 부호화했을 때의 예측 모드의 분포에 대해서 설명한다.
도 11의 상측에는, 낮은 양자화 파라미터(QP)=22를 이용하여, CABAC 및 CAVLC로 각각 부호화했을 경우의 예측 모드마다의 출현 빈도의 그래프가 나타나 있다. 또한, 하측에는, 높은 양자화 파라미터(QP)=37을 이용하여, CABAC 및 CAVLC로 각각 부호화했을 경우의 예측 모드마다의 출현 빈도의 그래프가 나타나 있다.
각 그래프의 종축은, 각 예측 모드의 출현 빈도를 나타내고 있고, 횡축은, 모드 0 내지 모드 7의 예측 모드의 종류를 나타내고 있다. 여기서 모드 0(copy)은, 스킵 모드나 다이렉트 모드를 나타내고 있고, 모드 1(16×16)은, 인터 16×16(화소) 모드를 나타내고 있다. 모드 2(16×8)는 인터 16×8(화소) 모드를 나타내고 있고, 모드 3(8×16)은 인터 8×16(화소) 모드를 나타내고 있다. 모드 4(8×8)는, 인터 8×8(화소) 이하의 블록 크기의 모든 모드를 나타내고 있다. 모드 5(intra 4×4)는 인트라 4×4(화소) 모드를 나타내고 있고, 모드 6(intra 8×8)은 인트라 8×8(화소) 모드를 나타내고 있고, 모드 7(intra 16×16)은 인트라 16×16(화소) 모드를 나타내고 있다.
즉, 그래프에서 인터에 관한 모드는, 좌측에서부터 블록 크기가 큰 순서대로 모드 0 내지 모드 4로 되어 있고, 인트라에 관한 모드는, 좌측에서부터 블록 크기가 작은 순서대로 모드 5 내지 7로 되어 있다.
여기서, 양방의 그래프로부터 알 수 있는 바와 같이, 낮은 양자화 파라미터(QP=22)와 높은 양자화 파라미터(QP=37)는, 예측 모드의 분포가 상이하다.
즉, 제1 차이는, 낮은 양자화 파라미터에서는, 모드 4로 나타내는 인터 8×8 이하의 블록 크기의 모든 모드의 출현 빈도가 나름대로 있지만, 높은 양자화 파라미터에서는 거의 출현하지 않는 것이다.
제2 차이는, 낮은 양자화 파라미터에서는, 모드 1로 나타내는 인터 16×16 모드가 가장 출현 빈도가 높지만, 높은 양자화 파라미터에서는, 모드 0으로 나타내는 스킵 모드나 다이렉트 모드의 출현 빈도가 높은 것이다.
이들은, 상술한 High Complexity 모드 또는 Low Complexity 모드에 기초하는 모드 판정에 있어서, 이하의 경향이 있다는 사실에 기초하고 있다. 그 사실이란, 낮은 양자화 파라미터(높은 비트 레이트)에서는, 움직임 벡터 등의 헤더 비트를 증대시켜도 보다 높은 예측 효율을 선택하는 경향이 있는 것이다. 또한, 그에 반해, 높은 양자화 파라미터(낮은 비트 레이트)에서는, 다소 예측 효율을 내려도 헤더 비트가 적은 모드가 우선되는 경향이 있는 것이다.
또한, 상기 설명에서 이용된 도면은, 이하 본 발명을 설명하는 도면으로서도 적절히 이용된다.
비특허 문헌 1 : "7.4.2.2 Picture parameter set RBSP semantics", "ITU-T Recommendation H. 264 Advanced video coding for generic audiovisual", P162-P164 November 2007 비특허 문헌 2 : H. 264/AVC Software Coordination, Institut Nachrichtentechnik Heinrich-Hertz-Institut, [2009년7월10일 검색], 인터넷 <URL:http://iphome.hhi.de/suehring/tml/index.htm>
도 11을 참조해서 상술한 출현 빈도의 차이는, CABAC에서는, 도 3을 참조해서 상술한 컨텍스트 모델에 의한 확률 테이블의 갱신이 대응하게 되어, 각각의 양자화 파라미터에 대응한 부호화 처리가 행해지게 된다.
그러나, CAVLC에서는, 양자화 파라미터에 의한 출현 빈도의 차이가 고려되지 않은 단일한 테이블에 의해 부호화 처리가 행해지고 있어, 개개의 양자화 파라미터에 대응한 높은 부호화 효율의 실현이 어렵게 되어 있다.
본 발명은, 이러한 상황을 감안하여 이루어진 것으로, VLC 방식의 부호화에 있어서 부호화 효율을 개선하는 것이다.
본 발명의 제1 화상 처리 장치는, 복호 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 복호하는 양자화 파라미터 복호 수단과, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 복호 방법을 전환하는 전환 수단과, 상기 전환 수단에 의해 전환된 상기 복호 방법으로, 상기 예측 모드에 관한 정보를 복호하는 예측 모드 복호 수단을 구비한다.
상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 VLC(Variable Length Coding) 테이블을 전환함으로써, 상기 복호 방법을 전환할 수 있다.
상기 예측 모드에 관한 정보는, 매크로 블록 타입의 정보다.
상기 예측 모드에 관한 정보는, 인트라 예측 모드의 정보다.
상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 코드 번호가 작은 사상에 대한 비트 길이가 짧은 테이블로 전환할 수 있다.
상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 코드 번호가 증대해도 비트 길이의 증대가 완만한 테이블로 전환할 수 있다.
상기 부호화 수단은, 상기 VLC 테이블로서 골롬 부호를 이용할 수 있다.
상기 부호화 수단은, 상기 VLC 테이블로서 하프맨 부호를 이용할 수 있다.
상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 코드 번호의 할당을 전환함으로써, 상기 복호 방법을 전환할 수 있다.
상기 예측 모드에 관한 정보는, 인터 매크로 블록 타입의 정보다.
상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 스킵 또는 다이렉트 모드의 할당을 최소의 코드 번호로 전환할 수 있다.
상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 인터 16×16 예측 모드의 할당을 최소의 코드 번호로 전환할 수 있다.
상기 예측 모드에 관한 정보는, 인트라 예측 모드의 정보다.
본 발명의 제1 측면의 화상 처리 방법은, 화상 처리 장치가, 복호 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 복호하고, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 복호 방법을 전환하고, 전환된 상기 복호 방법으로 상기 예측 모드에 관한 정보를 복호하는 스텝을 포함한다.
본 발명의 제2 측면의 화상 처리 장치는, 부호화 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 취득하는 양자화 파라미터 취득 수단과, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 부호화 방법을 전환하는 전환 수단과, 상기 전환 수단에 의해 전환된 상기 부호화 방법으로 상기 예측 모드에 관한 정보를 부호화하는 부호화 수단을 구비한다.
상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 VLC(Variable Length Coding) 테이블을 전환함으로써, 상기 부호화 방법을 전환할 수 있다.
상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 코드 번호가 작은 사상에 대한 비트 길이가 짧은 테이블로 전환할 수 있다.
상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 코드 번호가 증대해도 비트 길이의 증대가 완만한 테이블로 전환할 수 있다.
상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 코드 번호의 할당을 전환함으로써, 상기 부호화 방법을 전환할 수 있다.
본 발명의 제2 측면의 화상 처리 방법은, 화상 처리 장치가, 부호화 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 취득하고, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 부호화 방법을 전환하고, 전환된 상기 부호화 방법으로 상기 예측 모드에 관한 정보를 부호화하는 스텝을 포함한다.
본 발명의 제1 측면에서는, 복호 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터가 복호되고, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 복호 방법을 전환할 수 있다. 그리고, 전환된 상기 복호 방법으로 상기 예측 모드에 관한 정보가 복호된다.
본 발명의 제2 측면에서는, 부호화 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터가 취득되고, 상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 부호화 방법을 전환할 수 있다. 그리고, 전환된 상기 부호화 방법으로 상기 예측 모드에 관한 정보가 부호화된다.
또한, 상술한 화상 처리 장치의 각각은 독립된 장치라도 좋고, 1개의 화상 부호화 장치 또는 화상 복호 장치를 구성하고 있는 내부 블록이어도 된다.
본 발명의 제1 측면에 따르면 화상을 복호할 수 있다. 또한, 본 발명의 제1 측면에 따르면, VLC 방식의 부호화에 있어서의 부호화 효율을 개선할 수 있다.
본 발명의 제2 측면에 따르면 화상을 부호화할 수 있다. 또한, 본 발명의 제2 측면에 따르면, VLC 방식의 부호화에 있어서의 부호화 효율을 개선할 수 있다.
도 1은 지수 골롬 부호를 설명하는 도면이다.
도 2는 신택스 요소와 부호 없는 코드 번호의 대응 관계를 설명하는 도면이다.
도 3은 CABAC 부호화를 행하는 가역 부호화부의 구성예를 나타내는 블록도다.
도 4는 CABAC 부호화를 설명하는 도면이다.
도 5는 2치화 테이블을 나타내는 도면이다.
도 6은 I 및 SI 슬라이스의 경우의 매크로 블록 타입의 2치화 테이블을 나타내는 도면이다.
도 7은 P, SP 및 B 슬라이스의 경우의 매크로 블록 타입의 2치화 테이블을 나타내는 도면이다.
도 8은 P, SP 및 B 슬라이스의 경우의 서브 매크로 블록 타입의 2치화 테이블을 나타내는 도면이다.
도 9는 2치 산술 부호화의 동작에 대해서 설명하는 도면이다.
도 10은 재정규화에 대해서 설명하는 도면이다.
도 11은 서로 다른 양자화 파라미터를 이용하여 CABAC 및 CAVLC로 부호화했을 때의 예측 모드의 분포를 나타내는 도면이다.
도 12는 본 발명을 적용한 화상 부호화 장치의 일 실시 형태의 구성을 도시하는 블록도다.
도 13은 가변 블록 크기 움직임 예측?보상 처리를 설명하는 도면이다.
도 14는 움직임 벡터 정보의 생성 방법의 예를 설명하는 도면이다.
도 15는 시간 다이렉트 모드에 대해서 설명하는 도면이다.
도 16은 모드 테이블 전환부의 구성예를 도시하는 블록도다.
도 17은, 도 16의 VTC 테이블 전환부가 갖는 테이블을 나타내는 도면이다.
도 18은, 도 12의 화상 부호화 장치의 부호화 처리를 설명하는 플로우차트다.
도 19는, 도 18의 스텝 S21의 예측 처리를 설명하는 플로우차트다.
도 20은 16×16 화소의 인트라 예측 모드의 경우의 처리 순서를 설명하는 도면이다.
도 21은 휘도 신호의 4×4 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 22는 휘도 신호의 4×4 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 23은 4×4 화소의 인트라 예측의 방향을 설명하는 도면이다.
도 24는 4×4 화소의 인트라 예측을 설명하는 도면이다.
도 25는 휘도 신호의 8×8 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 26은 휘도 신호의 8×8 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 27은 휘도 신호의 16×16 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 28은 휘도 신호의 16×16 화소의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 29는 16×16 화소의 인트라 예측을 설명하는 도면이다.
도 30은 색차 신호의 인트라 예측 모드의 종류를 나타내는 도면이다.
도 31은, 도 19의 스텝 S31의 인트라 예측 처리를 설명하는 플로우차트다.
도 32는, 도 19의 스텝 S32의 인터 움직임 예측 처리를 설명하는 플로우차트다.
도 33은, 도 18의 스텝 S23의 가역 부호화 처리를 설명하는 플로우차트다.
도 34는 CAVLC에 의한 직교 변환 계수의 부호화 처리에 대해서 설명하는 도면이다.
도 35는 CAVLC의 동작 원리의 구체예에 대해서 설명하는 도면이다.
도 36은, 도 33의 스텝 S83의 매크로 블록 타입의 부호화 처리에 대해서 설명하는 플로우차트다.
도 37은 본 발명을 적용한 화상 복호 장치의 일 실시 형태의 구성을 도시하는 블록도다.
도 38은, 도 37의 가역 복호부 및 모드 테이블 전환부의 구성예를 도시하는 블록도다.
도 39는, 도 37의 화상 복호 장치의 복호 처리를 설명하는 플로우차트다.
도 40은, 도 39의 스텝 S132의 가역 복호 처리를 설명하는 플로우차트다.
도 41은, 도 40의 스텝 S153의 매크로 블록 타입의 복호 처리를 설명하는 플로우차트다.
도 42는, 도 39의 스텝 S138의 예측 처리를 설명하는 플로우차트다.
도 43은, 본 발명을 적용한 학습 장치의 일 실시 형태의 구성을 도시하는 블록도다.
도 44는 하프맨 부호를 설명하는 도면이다.
도 45는, 도 43의 학습 장치의 학습 플로우를 설명하는 플로우차트다.
도 46은 컴퓨터의 하드웨어의 구성예를 도시하는 블록도다.
이하, 도면을 참조하여 본 발명의 실시 형태에 대해서 설명한다.
[화상 부호화 장치의 구성예]
도 12는, 본 발명을 적용한 화상 처리 장치로서의 화상 부호화 장치의 일 실시 형태의 구성을 나타내고 있다.
상기 화상 부호화 장치(51)는, 예를 들면 H. 264 및 MPEG-4 Part10(Advanced Video Coding)(이하, H. 264/AVC라고도 기재함) 방식으로 화상을 압축 부호화한다.
도 12의 예에서, 화상 부호화 장치(51)는, A/D 변환부(61), 화면 재배열 버퍼(62), 연산부(63), 직교 변환부(64), 양자화부(65), 가역 부호화부(66), 축적 버퍼(67), 역 양자화부(68), 역 직교 변환부(69), 연산부(70), 디블록 필터(71), 프레임 메모리(72), 스위치(73), 인트라 예측부(74), 움직임 예측?보상부(75), 예측 화상 선택부(76), 레이트 제어부(77), 및 모드 테이블 전환부(78)에 의해 구성되어 있다.
A/D 변환부(61)는, 입력된 화상을 A/D 변환하고, 화면 재배열 버퍼(62)에 출력하여 기억시킨다. 화면 재배열 버퍼(62)는, 기억한 표시의 순번의 프레임의 화상을, GOP(Group of Picture)에 따라서, 부호화를 위한 프레임의 순서대로 재배열한다.
연산부(63)는, 화면 재배열 버퍼(62)로부터 판독된 화상에서, 예측 화상 선택부(76)에 의해 선택된 인트라 예측부(74)로부터의 예측 화상 또는 움직임 예측?보상부(75)로부터의 예측 화상을 감산하고, 그 차분 정보를 직교 변환부(64)에 출력한다. 직교 변환부(64)는, 연산부(63)로부터의 차분 정보에 대하여, 이산 코사인 변환, 카르넨?레베 변환 등의 직교 변환을 실시하고, 그 변환 계수를 출력한다. 양자화부(65)는 직교 변환부(64)가 출력하는 변환 계수를 양자화한다.
양자화부(65)의 출력이 되는 양자화된 변환 계수는, 가역 부호화부(66)에 입력되고, 여기서 가변 길이 부호화, 산술 부호화 등의 가역 부호화가 실시되어 압축된다. 가역 부호화부(66)에서는, 가역 부호화 방식으로서, H. 264/AVC 방식에서 정해져 있는 CAVLC(Context-Adaptive Variable Length Coding)에 의한 가변 길이 부호화가 행해진다.
가역 부호화부(66)는, 양자화된 변환 계수를 부호화하는 동시에, 신택스 요소도 부호화하여 압축 화상에 있어서의 헤더 정보의 일부로 한다. 이때, 가역 부호화부(66)는, 모드 테이블 전환부(78)에 의해 전환된 부호화 방법으로, 신택스 요소 중의 예측 모드에 관한 정보를 부호화한다. 가역 부호화부(66)는, 부호화한 데이터를 축적 버퍼(67)에 공급해서 축적시킨다.
신택스 요소로는, 인트라 예측부(74) 또는 움직임 예측?보상부(75)로부터 취득되는 예측 모드에 관한 정보, 레이트 제어부(77)로부터 취득되는 양자화 파라미터, 움직임 예측?보상부(75)로부터 취득되는 움직임 벡터 정보나 참조 프레임 정보 등이 있다. 또한, 예측 모드에 관한 정보로는, 예를 들면 매크로 블록 타입의 정보나, 어느 인트라 예측 모드인가에 대한 정보(이하, 인트라 예측 모드의 정보라고 함)가 있다.
매크로 블록 타입의 정보는, 움직임 예측?보상부(75)나 인트라 예측부(74)로부터 취득된다. 인트라 예측 모드의 정보는, 필요에 따라서 인트라 예측부(74)로부터 취득된다.
축적 버퍼(67)는, 가역 부호화부(66)로부터 공급된 데이터를, H. 264/AVC 방식으로 부호화된 압축 화상으로서, 예를 들면 후단의 도시하지 않은 기록 장치나 전송로 등에 출력한다.
또한, 양자화부(65)로부터 출력된 양자화된 변환 계수는, 역 양자화부(68)에도 입력되고, 역 양자화된 후, 또한 역 직교 변환부(69)에서 역 직교 변환된다. 역 직교 변환된 출력은 연산부(70)에 의해 예측 화상 선택부(76)로부터 공급되는 예측 화상과 가산되어, 국부적으로 복호된 화상이 된다. 디블록 필터(71)는, 복호된 화상의 블록 왜곡을 제거한 후, 프레임 메모리(72)에 공급하여 축적시킨다. 프레임 메모리(72)에는, 디블록 필터(71)에 의해 디블록 필터 처리되기 전의 화상도 공급되어 축적된다.
스위치(73)는 프레임 메모리(72)에 축적된 참조 화상을, 움직임 예측?보상부(75) 또는 인트라 예측부(74)에 출력한다.
상기 화상 부호화 장치(51)에서는, 예를 들면, 화면 재배열 버퍼(62)로부터의 I 픽쳐, B 픽쳐 및 P 픽쳐가, 인트라 예측(인트라 처리라고도 함)하는 화상으로서 인트라 예측부(74)에 공급된다. 또한, 화면 재배열 버퍼(62)로부터 판독된 B 픽쳐 및 P 픽쳐가, 인터 예측(인터 처리라고도 함)하는 화상으로서 움직임 예측?보상부(75)에 공급된다.
인트라 예측부(74)는, 화면 재배열 버퍼(62)로부터 판독된 인트라 예측하는 화상과 프레임 메모리(72)로부터 공급된 참조 화상에 기초하여, 후보가 되는 모든 인트라 예측 모드의 인트라 예측 처리를 행하고, 예측 화상을 생성한다. 그때, 인트라 예측부(74)는, 후보가 되는 모든 인트라 예측 모드에 대하여 코스트 함수값을 산출하고, 산출한 코스트 함수값이 최소값을 부여하는 인트라 예측 모드를, 최적 인트라 예측 모드로서 선택한다.
인트라 예측부(74)는, 최적 인트라 예측 모드에서 생성된 예측 화상과 그 코스트 함수값을 예측 화상 선택부(76)에 공급한다. 인트라 예측부(74)는, 예측 화상 선택부(76)에 의해 최적 인트라 예측 모드에서 생성된 예측 화상이 선택된 경우, 최적 인트라 예측 모드의 정보를, 대응하는 매크로 블록 타입의 정보와 함께 가역 부호화부(66)에 공급한다. 가역 부호화부(66)는, 이들 정보를 신택스 요소로서 부호화하여, 압축 화상에서의 헤더 정보의 일부로 한다.
움직임 예측?보상부(75)는, 후보가 되는 모든 인터 예측 모드의 움직임 예측?보상 처리를 행한다. 즉, 움직임 예측?보상부(75)에는, 화면 재배열 버퍼(62)로부터 판독된 인터 처리하는 화상과, 스위치(73)를 통해 프레임 메모리(72)로부터 참조 화상이 공급된다. 움직임 예측?보상부(75)는, 인터 처리하는 화상과 참조 화상에 기초하여, 후보가 되는 모든 인터 예측 모드의 움직임 벡터를 검출하고, 움직임 벡터에 기초해서 참조 화상에 보상 처리를 실시하여 예측 화상을 생성한다.
또한, 움직임 예측?보상부(75)는, 후보가 되는 모든 인터 예측 모드에 대하여 코스트 함수값을 산출한다. 움직임 예측?보상부(75)는, 산출한 코스트 함수값 중, 최소값을 부여하는 예측 모드를 최적 인터 예측 모드로서 결정한다.
움직임 예측?보상부(75)는, 최적 인터 예측 모드에서 생성된 예측 화상 및 그 코스트 함수값을 예측 화상 선택부(76)에 공급한다. 움직임 예측?보상부(75)는, 예측 화상 선택부(76)에 의해 최적 인터 예측 모드에서 생성된 예측 화상이 선택된 경우, 그 최적 인터 예측 모드에 대응하는 매크로 블록 타입의 정보를 가역 부호화부(66)에 출력한다.
이때, 움직임 벡터 정보, 플래그, 참조 프레임 정보 등도 가역 부호화부(66)에 출력된다. 가역 부호화부(66)는, 움직임 예측?보상부(75)로부터의 정보를 신택스 요소로서 가역 부호화 처리하고, 압축 화상의 헤더부에 삽입한다.
예측 화상 선택부(76)는, 인트라 예측부(74) 또는 움직임 예측?보상부(75)로부터 출력된 각 코스트 함수값에 기초하여, 최적 인트라 예측 모드와 최적 인터 예측 모드로부터 최적 예측 모드를 결정한다. 그리고, 예측 화상 선택부(76)는, 결정된 최적 예측 모드의 예측 화상을 선택하여 연산부(63, 70)에 공급한다. 이때, 예측 화상 선택부(76)는, 예측 화상의 선택 정보를, 인트라 예측부(74) 또는 움직임 예측?보상부(75)에 공급한다.
레이트 제어부(77)는, 축적 버퍼(67)에 축적된 압축 화상에 기초하여, 오버플로 혹은 언더플로가 발생하지 않도록, 대응하는 양자화 파라미터에 의해 양자화부(65)의 양자화 동작의 레이트를 제어한다. 양자화부(65)의 레이트의 제어에 이용된 양자화 파라미터는, 모드 테이블 전환부(78) 및 가역 부호화부(66)에 공급된다.
모드 테이블 전환부(78)는, 레이트 제어부(77)로부터의 양자화 파라미터에 따라서, 예측 모드에 관한 정보에 대한 부호화 방법을 전환하고, 전환한 부호화 방법의 정보를 가역 부호화부(66)에 공급한다. 예를 들면, 예측 모드에 관한 정보에 대한 VLC 테이블을 전환할 수 있다.
또한, 본 실시 형태에서는, 이하, 예측 모드에 관한 정보 중 매크로 블록 타입에 따라서 VLC 테이블을 전환할 수 있는 예에 대해 설명된다.
[H. 264/AVC 방식의 설명]
도 13은, H. 264/AVC 방식에서의 움직임 예측?보상의 블록 크기의 예를 도시하는 도면이다. H. 264/AVC 방식에서는, 블록 크기를 가변으로 해서 움직임 예측?보상이 행해진다.
도 13의 상단에는, 좌측에서부터 16×16 화소, 16×8 화소, 8×16 화소 및 8×8 화소의 파티션으로 분할된 16×16 화소로 구성되는 매크로 블록이 순서대로 도시되어 있다. 또한, 도 13의 하단에는, 좌측에서부터 8×8 화소, 8×4 화소, 4×8 화소 및 4×4 화소의 서브 파티션으로 분할된 8×8 화소의 파티션이 순서대로 도시되어 있다.
즉, H. 264/AVC 방식에서는, 1개의 매크로 블록을 16×16 화소, 16×8 화소, 8×16 화소 혹은 8×8 화소 중 어느 하나의 파티션으로 분할하여, 각각 독립된 움직임 벡터 정보를 갖는 것이 가능하다. 또한, 8×8 화소의 파티션에 관해서는, 8×8 화소, 8×4 화소, 4×8 화소 혹은 4×4 화소 중 어느 하나의 서브 파티션으로 분할하여, 각각 독립된 움직임 벡터 정보를 갖는 것이 가능하다.
H. 264/AVC 방식에서는, 도 13을 참조해서 상술한 움직임 예측?보상 처리가 행해짐으로써, 방대한 움직임 벡터 정보가 생성되며, 이것을 그대로 부호화하는 것은, 부호화 효율의 저하를 초래하게 된다. 이에 대해 H. 264/AVC 방식에서는, 도 14에 도시하는 방법에 의해 움직임 벡터의 부호화 정보의 저감이 실현되어 있다.
도 14는, H. 264/AVC 방식에 의한 움직임 벡터 정보의 생성 방법에 대해서 설명하는 도면이다.
도 14의 예에서, 지금부터 부호화되는 대상 블록 E(예를 들면, 16×16 화소)와, 이미 부호화 완료이며 대상 블록 E에 인접하는 블록 A 내지 D가 도시되어 있다.
즉, 블록 D는, 대상 블록 E의 좌측 상부에 인접하고 있고, 블록 B는, 대상 블록 E 위에 인접하고 있어, 블록 C는, 대상 블록 E의 우측 상부에 인접하고 있고, 블록 A는, 대상 블록 E의 좌측에 인접하고 있다. 또한, 블록 A 내지 D가 구획되지 않은 것은, 각각 도 13에서 상술한 16×16 화소 내지 4×4 화소 중 어느 하나의 구성의 블록인 것을 나타내고 있다.
예를 들면, X(= A, B, C, D, E)에 대한 움직임 벡터 정보를 mvX로 나타낸다. 우선, 대상 블록 E에 대한 예측 움직임 벡터 정보(pmvE)는, 블록 A, B, C에 관한 움직임 벡터 정보를 이용하여 메디안 예측에 의해 다음 식 (5)와 같이 생성된다.
pmvE = med(mvA, mvB, mvC) …… (5)
블록 C에 관한 움직임 벡터 정보가, 화소 프레임의 단부이거나 혹은 아직 부호화되지 않았다는 등의 이유로 인해 이용 가능하지 않은(unavailable한) 경우가 있다. 이 경우에는, 블록 C에 관한 움직임 벡터 정보는, 블록 D에 관한 움직임 벡터 정보로 대용된다.
대상 블록 E에 대한 움직임 벡터 정보로서, 압축 화상의 헤더부에 부가되는 데이터(mvdE)는, pmvE를 이용하여 다음 식 (6)과 같이 생성된다.
mvdE = mvE - pmvE …… (6)
또한 실제로는, 움직임 벡터 정보의 수평 방향, 수직 방향의 각각의 성분에 대하여 독립적으로 처리가 행해진다.
이와 같이, 예측 움직임 벡터 정보를 생성하고, 인접하는 블록과의 상관으로 생성된 예측 움직임 벡터 정보와 움직임 벡터 정보의 차분인 데이터(mvd)를, 압축 화상의 헤더부에 부가함으로써 움직임 벡터 정보를 저감할 수 있다.
그런데, B 픽쳐에 대한 움직임 벡터 정보에 있어서의 정보량은 방대하지만, H. 264/AVC 방식에서는, 다이렉트 모드라고 불리는 모드가 준비되어 있다. 다이렉트 모드에서는, 움직임 벡터 정보는 압축 화상 중에는 저장되지 않는다.
즉, 복호측에서는, 대상 블록 주변의 움직임 벡터 정보 또는 참조 픽쳐에 있어서, 대상 블록과 좌표가 동일한 블록인 co-located 블록의 움직임 벡터 정보로부터 대상 블록의 움직임 벡터 정보가 추출된다. 따라서, 움직임 벡터 정보를 복호측에 보낼 필요가 없다.
상기 다이렉트 모드에는, 공간 다이렉트 모드(Spatial Direct Mode)와 시간 다이렉트 모드(Temporal Direct Mode)의 2종류가 존재한다. 공간 다이렉트 모드는, 주로 공간 방향(픽쳐 내의 수평, 수직의 2차원 공간)의 움직임 정보의 상관을 이용하는 모드이며, 일반적으로 동일한 움직임이 포함되는 화상으로, 움직임의 속도가 변화하는 화상에서 효과가 있다. 한편, 시간 다이렉트 모드는, 주로 시간 방향의 움직임 정보의 상관을 이용하는 모드이며, 일반적으로 서로 다른 움직임이 포함되는 화상으로, 움직임의 속도가 일정한 화상에서 효과가 있다.
이들 공간 다이렉트 모드와 시간 다이렉트 모드 중 어느 쪽을 이용할지는, 슬라이스마다 전환할 수 있다.
다시, 도 14를 참조하여 H. 264/AVC 방식에 의한 공간 다이렉트 모드에 대해서 설명한다. 도 14의 예에서는, 상술한 바와 같이, 지금부터 부호화되는 대상 블록 E(예를 들면, 16×16 화소)과, 이미 부호화 완료이며 대상 블록 E에 인접하는 블록 A 내지 D가 도시되어 있다. 그리고, 예를 들면 X(=A, B, C, D, E)에 대한 움직임 벡터 정보는 mvX로 나타내진다.
대상 블록 E에 대한 예측 움직임 벡터 정보(pmvE)는, 블록 A, B, C에 관한 움직임 벡터 정보를 이용하여 메디안 예측에 의해 상술한 식 (5)와 같이 생성된다. 그리고, 공간 다이렉트 모드에 있어서의 대상 블록 E에 대한 움직임 벡터 정보(mvE)는 다음 식 (7)로 나타낸다.
mvE = pmvE …… (7)
즉, 공간 다이렉트 모드에서는, 메디안 예측에 의해 생성된 예측 움직임 벡터 정보가 대상 블록의 움직임 벡터 정보가 된다. 즉, 대상 블록의 움직임 벡터 정보는, 부호화 완료 블록의 움직임 벡터 정보로 생성된다. 따라서, 공간 다이렉트 모드에 의한 움직임 벡터는, 복호측에서도 생성할 수 있으므로, 움직임 벡터 정보를 보낼 필요가 없다.
다음으로, 도 15를 참조하여, H. 264/AVC 방식에 있어서의 시간 다이렉트 모드에 대해서 설명한다.
도 15의 예에서는, 시간 축(t)이 시간의 경과를 나타내고 있고, 좌측에서부터 순서대로 L0(List0) 참조 픽쳐, 지금부터 부호화되는 대상 픽쳐, L1(List1) 참조 픽쳐가 나타나 있다. 또한, L0 참조 픽쳐, 대상 픽쳐, L1 참조 픽쳐의 배열은, H. 264/AVC 방식에서는 이러한 순서에 한하지 않는다.
대상 픽쳐의 대상 블록은, 예를 들면 B 슬라이스에 포함되어 있다. 따라서, 대상 픽쳐의 대상 블록에 대해서는, L0 참조 픽쳐와 L1 참조 픽쳐에 대하여, 시간 다이렉트 모드에 기초하는 L0 움직임 벡터 정보(mvL0)와 L1 움직임 벡터 정보(mvL1)가 산출된다.
또한, L0 참조 픽쳐에 있어서, 지금부터 부호화되는 대상 블록과 동일한 공간 상의 어드레스(좌표)에 있는 블록인 co-located 블록에서의 움직임 벡터 정보(mvcol)는, L0 참조 픽쳐와 L1 참조 픽쳐에 기초해서 산출되어 있다.
여기서, 대상 픽쳐와 L0 참조 픽쳐의 시간축 상의 거리를 TDB라고 하고, L0 참조 픽쳐와 L1 참조 픽쳐의 시간축 상의 거리를 TDD라고 한다. 이 경우, 대상 픽쳐에 있어서의 L0 움직임 벡터 정보(mvL0)와 대상 픽쳐에 있어서의 L1 움직임 벡터 정보(mvL1)는, 다음 식 (8)로 산출할 수 있다.
Figure pct00002
또한, H. 264/AVC 방식에서는, 압축 화상 중에는, 대상 픽쳐에 대한 시간축(t) 상의 거리(TDB, TDD)에 상당하는 정보가 존재하지 않는다. 따라서, 거리(TDB, TDD)의 실제 값으로는, 픽쳐의 출력 순서를 나타내는 정보인 POC(Picture Order Count)가 이용된다.
또한, H. 264/AVC 방식에서는, 마찬가지로 움직임 벡터 정보를 보낼 필요가 없는 모드로서 그 밖에 스킵 모드가 있다. 움직임 벡터에 관한 부호화 데이터가 0인 경우[H. 264/AVC 방식의 경우, 상술한 식 (7)이 성립할 경우]이고, 또한, DCT 계수가 모두 0일 때, 그 대상 블록은 스킵 모드가 된다. 또한, B 픽쳐의 경우에는, 다이렉트 모드이며 또한 DCT 계수가 0일 때, 그 대상 블록은 스킵 모드가 된다.
[모드 테이블 전환부의 구성예]
도 16은, 모드 테이블 전환부의 구성예를 도시하는 블록도다.
도 16의 예에서는, 모드 테이블 전환부(78)는, VLC(Variable Length Coding) 테이블 전환부(81) 및 코드 번호(Code Number) 할당부(82)에 의해 구성된다.
레이트 제어부(77)로부터의 양자화 파라미터는, VLC 테이블 전환부(81) 및 코드 번호 할당부(82)에 공급된다. 상기 양자화 파라미터는, 가역 부호화부(66)에도 공급된다.
VLC 테이블 전환부(81)는, 매크로 블록 타입에 대한, 적어도 2종류의 VLC 테이블을 갖고 있다. VLC 테이블 전환부(81)는, 레이트 제어부(77)로부터의 양자화 파라미터에 따라서, 2종류의 매크로 블록 타입에 대한 VLC 테이블 중 어느 하나를 선택한다. VLC 테이블 전환부(81)는, 선택한 매크로 블록 타입에 대한 VLC 테이블의 정보에, 코드 번호 할당부(82)로부터의 할당 정보를 부가하여 가역 부호화부(66)에 공급한다.
코드 번호 할당부(82)는, 레이트 제어부(77)로부터의 양자화 파라미터에 따라서, 코드 번호 0에 소정의 매크로 블록 타입을 할당하고, 그 할당 정보를 VLC 테이블 전환부(81)에 공급한다.
가역 부호화부(66)는, H. 264/AVC 방식의 규격에 기초하여, 직교 변환 계수나 매크로 블록 타입 이외의 신택스 요소[레이트 제어부(77)로부터의 양자화 파라미터를 포함]를 부호화한다. 이에 대해, 가역 부호화부(66)는, VLC 테이블 전환부(81)에 의해 선택된 VLC 테이블을 이용하여, 매크로 블록 타입에 대한 부호화를 행한다.
[모드 테이블 전환 처리의 설명]
다음으로, 모드 테이블 전환부(78)에 의해 행해지는 모드 테이블 전환 처리에 대해서 설명한다.
도 17의 예에서는, VLC 테이블 전환부(81)가 갖는 테이블로서, 비가역 부호화 처리에 있어서 자주 이용되는 골롬(Golomb) 부호의 k=0인 테이블(좌측)과, k=1인 테이블(우측)이 나타나 있다. 테이블은, 코드 번호(Code Number)와 대응하는 부호어(Code Words)로 구성된다. 또한, k=0인 경우에는, 도 5에 도시한 바로 unary 부호이다.
k=0인 테이블에서는, 예를 들면, 코드 번호 0과 부호어 1이 대응하고 있고, 코드 번호 1과 부호어 01이 대응하고 있고, 코드 번호 2와 부호어 001이 대응하고 있고, 코드 번호 3과 부호어 0001이 대응하고 있다. 또한, 코드 번호 4와 부호어 00001이 대응하고 있고, 코드 번호 5와 부호어 000001이 대응하고 있고, 코드 번호 6과 부호어 0000001이 대응하고 있다.
k=1인 테이블에서는, 예를 들면, 코드 번호 0과 부호어 10이 대응하고 있고, 코드 번호 1과 부호어 11이 대응하고 있고, 코드 번호 2와 부호어 010이 대응하고 있고, 코드 번호 3과 부호어 011이 대응하고 있다. 또한, 코드 번호 4와 부호어 0010이 대응하고 있고, 코드 번호 5와 부호어 0011이 대응하고 있고, 코드 번호 6과 부호어 00010이 대응하고 있다.
이와 같이 도 17의 예에서는, 코드 번호 "0"에 관해서는, k=0인 테이블에서는 1비트로 나타내지는 데 반해, k=1인 테이블에서는 2비트가 필요하다. 그러나, 코드 번호 "6"에 관해서는, k=0인 테이블에서는 7비트로 나타내지는 데 반해, k=1인 테이블에서는 5비트가 필요하다.
즉, k=0인 테이블과 k=1인 테이블을 비교하면, k=0인 테이블에서는, 작은(빠른) 코드 번호에 관해서는 k=1인 테이블보다 부호량이 짧다. 또한 예를 들면, 코드 번호와 부호어의 비트 길이의 함수를 생각했을 때, k=0인 테이블과 k=1인 테이블은 그 함수의 기울기가 상이하다. k=0인 테이블은, k=1인 테이블에 비해 그 함수의 기울기가 크다(급하다). 그렇기 때문에, k=0인 테이블에서는, 작은 코드 번호에 관해서는 k=1인 테이블보다 부호량이 짧지만, 큰 코드 번호에 관해서는 k=1인 테이블보다 부호량이 많아진다.
또한, k≥2인 테이블은, k=1인 테이블보다 더욱 기울기가 작으며(완만하며), k가 커짐에 따라 그 함수의 기울기가 점차로 작아지는 경향을 갖는다. 덧붙여서 말하면, 골롬 부호의 생성측은 다음과 같다.
k를 부호 생성을 위한 파라미터로 하면, k>0일 때, 부호화 대상으로 하는 정수 x(≥0)에 대해서 x를 k로 나눈 몫을 q, 나머지를 m이라고 한다. 몫(q)은, unary 부호로 부호화되고, 나머지(m)는 log2k에 따라서 다음과 같이 부호화된다.
상기 값이 정수값, 즉 k가 2의 누승일 경우, m은 log2k의 바이너리 부호에 의해 부호화된다. 그 외의 경우, b=[log2k]라고 했을 때, m=2b-k-1까지의 수는 b-1비트까지의 바이너리 부호에 의해 부호화되고, 나머지에 대해서는 2b-k를 가한 후에 b비트의 바이너리 부호에 의해 부호화된다.
여기서, 도 11을 참조해서 상술한 바와 같이, QP=22과 같은 예측 모드의 분포의 경우, 모드 2 내지 모드 4의 출현 빈도가 QP=37에 비해 높아진다. 즉, 인터16×16 모드의 블록 크기보다 작은 블록 크기의 모드의 출현 빈도가 QP=37에 비해 높다.
VLC 테이블 전환부(81)는, 이러한 QP=22인 경우에, k=1과 같은 함수의 기울기가 작은 테이블에 의한 부호를 이용한다. 이에 의해, 인터 16×16 모드의 블록 크기보다 작은 블록 크기의 모드에 대한 부호량을 짧게 할 수가 있으며, 그 결과, 평균 부호 길이를 짧게 하는 것이 가능하다.
이에 대해, QP=37과 같은 예측 모드 분포의 경우, 모드 2 내지 모드 4의 출현 빈도가 꽤 낮다. 모드 4에 관해서는 거의 출현하지 않는다. 즉, 인터 16×16 모드의 블록 크기보다 작은 블록 크기의 모드의 출현 빈도가 QP=22에 비해 꽤 낮다.
VLC 테이블 전환부(81)는, 이러한 QP=37의 경우에, k=0과 같은 빠른 코드 번호의 부호 길이가 짧은 테이블에 의한 부호를 이용한다. 이에 의해, 스킵(또는 다이렉트) 모드나 인터 16×16 모드와 같은 보다 큰 블록 크기의 모드에 대한 부호량을 짧게 할 수가 있으며, 그 결과, 평균 부호 길이를 짧게 하는 것이 가능하다.
또한, 종래에 있어서 상술한 도 11에서, QP=22에서는, 가장 출현 확률이 높은 예측 모드는 인터 16×16 모드이지만, QP=37에서는 스킵(또는 다이렉트) 모드다.
따라서, 코드 번호 할당부(82)는, 보다 높은 비트 레이트(즉, 보다 낮은 양자화 파라미터)에서는, 가장 적은 비트 길이로 표현할 수 있는 코드 번호 "0"에 대하여 인터 16×16 모드를 할당한다.
이에 대해, 코드 번호 할당부(82)는, 보다 낮은 비트 레이트(즉, 보다 높은 양자화 파라미터)에서는, 코드 번호 "0"에 대하여 스킵(또는 다이렉트) 모드를 할당한다. 이렇게 함으로써 더욱 평균 부호 길이를 짧게 할 수 있다.
즉, 구체적으로는, 화상 부호화 장치(51)에 있어서, VLC 테이블 전환부(81)는, 예를 들면 상술한 작은(빠른) 코드 번호의 부호 길이 및 기울기 중 적어도 어느 하나가 다른 k=0인 테이블 및 k=1인 테이블을 갖고 있다.
VLC 테이블 전환부(81)는, 소정의 임계값과 양자화 파라미터의 값을 비교하여, 복수의 테이블 중에서 매크로 블록 타입의 부호화에 이용하는 테이블을 양자화 파라미터에 따라서 전환한다. 또한, 코드 번호 할당부(82)는, 코드 번호 "1"의 할당을 양자화 파라미터에 따라서 전환한다. 또한, 상기 소정의 임계값은, 예를 들면 도 43 이후에서 후술되는 VLC 테이블의 학습시에 요구해진다.
이상에 의해, 낮은 비트 레이트나 높은 히트 레이트 모두에 있어서, 출력이 되는 압축 화상에 있어서 매크로 블록 타입에 대한 평균 부호 길이를 짧게 하여, 보다 높은 부호화 효율의 실현을 가능하게 할 수 있다.
또한, 상기 설명에서는, 인터 매크로 블록에 관한 매크로 블록 타입을 예로 들어 설명했지만, 상술한 설명 중 VLC 테이블의 전환에 대해서는, 인트라 매크로 블록에 관해서도 마찬가지이다.
즉, 보다 높은 양자화 파라미터로 부호화되는 경우, k=0과 같은 VLC 테이블에 의한 부호를 이용함으로써, 보다 출현 빈도가 높은 빠른 코드 번호에 대한 인트라 매크로 블록 타입에 대한 부호 길이를 짧게 하는 것이 가능하다. 한편, 보다 낮은 양자화 파라미터로 부호화되는 경우, k=1과 같은 VLC 테이블에 의한 부호를 이용함으로써, 나름대로의 빈도로 출현하는, 코드 번호가 빠르지 않은 인트라 매크로 블록 타입에 대한 부호 길이를 짧게 하는 것이 가능하다.
이에 의해, 인트라 매크로 블록 타입의 경우에도 부호화 효율을 개선할 수 있다.
또한, 상기 설명에서는, QP=37 등의 보다 높은 양자화 파라미터에 대한 VLC 테이블로서, 예를 들면 골롬 부호의 k=0인 테이블을 설명했지만, VLC 테이블은 이것에 한하지 않는다. 즉, 보다 높은 양자화 파라미터에 대한 VLC 테이블로는, 골롬 부호의 k=0인 테이블과 같이 코드 번호가 큰 사상에 대해서는 비교적 긴 비트가 발생한다고 해도, 코드 번호가 작은 사상에 대한 비트 길이가 짧은 테이블이면 좋다.
또한, QP=22 등의 보다 낮은 양자화 파라미터에 대한 VLC 테이블로서, 예를 들면 골롬 부호의 k=1인 테이블을 설명했지만, VLC 테이블은 이것에 한하지 않는다. 즉, 보다 낮은 양자화 파라미터에 대한 VLC 테이블로는, 골롬 부호의 k=1인 테이블과 같이 코드 번호가 작은 사상에 대한 비트 길이는 k=0 만큼 짧지 않다고 해도, 코드 번호가 증대해도 k=0 만큼 비트 길이가 증대하지 않는 테이블이면 좋다.
또한, 상기 설명에서는 골롬 부호를 예로 들어 설명했지만, 하프맨 부호에 기초해서 생성된 VLC 테이블을 이용할 수도 있다. 또한, 이 경우, 트레이닝 신호를 이용하여 학습함으로써, 각 양자화 파라미터에 대하여, 하프맨 부호에 기초해서 생성된 VLC 테이블을 미리 준비해 둘 필요가 있다. 상기 VLC 테이블의 학습에 대해서는 도 43 이후에서 자세하게 설명한다.
또한, 상기 설명에서는, 2종류의 VLC 테이블을 전환하는 예를 설명했지만, VLC 테이블은, 복수이면 되며 2종류에 한하지 않는다.
[화상 부호화 장치의 부호화 처리의 설명]
다음으로, 도 18의 플로우차트를 참조하여 도 12의 화상 부호화 장치(51)의 부호화 처리에 대해서 설명한다.
스텝 S11에서, A/D 변환부(61)는 입력된 화상을 A/D 변환한다. 스텝 S12에서, 화면 재배열 버퍼(62)는, A/D 변환부(61)로부터 공급된 화상을 기억하고, 각 픽쳐가 표시하는 순번에서 부호화하는 순번으로의 재배열을 행한다.
스텝 S13에서, 연산부(63)는, 스텝 S12에서 재배열된 화상과 예측 화상의 차분을 연산한다. 예측 화상은, 인터 예측하는 경우는 움직임 예측?보상부(75)로부터, 인트라 예측하는 경우는 인트라 예측부(74)로부터 각각 예측 화상 선택부(76)를 통해 연산부(63)에 공급된다.
차분 데이터는 원래의 화상 데이터에 비해 데이터량이 작다. 따라서, 화상을 그대로 부호화하는 경우에 비해 데이터량을 압축할 수 있다.
스텝 S14에서, 직교 변환부(64)는 연산부(63)로부터 공급된 차분 정보를 직교 변환한다. 구체적으로는, 이산 코사인 변환, 카르넨?레베 변환 등의 직교 변환이 행해지고, 변환 계수가 출력된다. 스텝 S15에서, 양자화부(65)는 변환 계수를 양자화한다. 상기 양자화시에, 후술하는 스텝 S25의 처리에서 설명되는 바와 같이 레이트가 제어된다.
이상과 같이 해서 양자화된 차분 정보는, 다음과 같이 해서 국부적으로 복호된다. 즉, 스텝 S16에서, 역 양자화부(68)는 양자화부(65)에 의해 양자화된 변환 계수를 양자화부(65)의 특성에 대응하는 특성으로 역 양자화한다. 스텝 S17에서, 역 직교 변환부(69)는 역 양자화부(68)에 의해 역 양자화된 변환 계수를 직교 변환부(64)의 특성에 대응하는 특성으로 역 직교 변환한다.
스텝 S18에서, 연산부(70)는, 예측 화상 선택부(76)를 통해 입력되는 예측 화상을 국부적으로 복호된 차분 정보에 가산하여, 국부적으로 복호된 화상[연산부(63)에 대한 입력에 대응하는 화상]을 생성한다. 스텝 S19에서 디블록 필터(71)는, 연산부(70)로부터 출력된 화상을 필터링한다. 이에 의해 블록 왜곡이 제거된다. 스텝 S20에서 프레임 메모리(72)는, 필터링된 화상을 기억한다. 또한, 프레임 메모리(72)에는 디블록 필터(71)에 의해 필터 처리되지 않은 화상도 연산부(70)로부터 공급되어 기억된다.
스텝 S21에서, 인트라 예측부(74) 및 움직임 예측?보상부(75)는, 각각 화상의 예측 처리를 행한다. 즉, 스텝 S21에서, 인트라 예측부(74)는, 인트라 예측 모드의 인트라 예측 처리를 행한다. 움직임 예측?보상부(75)는, 인터 예측 모드의 움직임 예측?보상 처리를 행한다.
스텝 S21에서의 예측 처리의 상세 내용은 도 19를 참조해서 후술하지만, 이 처리에 의해, 후보가 되는 모든 인트라 예측 모드에서의 예측 처리가 각각 행해져, 후보가 되는 모든 인트라 예측 모드에서의 코스트 함수값이 각각 산출된다. 그리고, 산출된 코스트 함수값에 기초하여 최적 인트라 예측 모드가 선택되고, 최적 인트라 예측 모드의 인트라 예측에 의해 생성된 예측 화상과 그 코스트 함수값이 예측 화상 선택부(76)에 공급된다.
또한, 이 처리에 의해, 후보가 되는 모든 인터 예측 모드에서의 예측 처리가 각각 행해져, 후보가 되는 모든 인터 예측 모드에서의 코스트 함수값이 각각 산출된다. 산출된 코스트 함수값에 기초하여, 인터 예측 모드 중에서 최적 인터 예측 모드가 결정되고, 최적 인터 예측 모드에서 생성된 예측 화상과 그 코스트 함수값이 예측 화상 선택부(76)에 공급된다.
스텝 S22에서, 예측 화상 선택부(76)는, 인트라 예측부(74) 및 움직임 예측?보상부(75)로부터 출력된 각 코스트 함수값에 기초하여, 최적 인트라 예측 모드와 최적 인터 예측 모드 중 어느 하나를 최적 예측 모드로 결정한다. 그리고, 예측 화상 선택부(76)는, 결정한 최적 예측 모드의 예측 화상을 선택하여 연산부(63, 70)에 공급한다. 상기 예측 화상이, 상술한 바와 같이 스텝 S13, S18의 연산에 이용된다.
또한, 상기 예측 화상의 선택 정보는, 인트라 예측부(74) 또는 움직임 예측?보상부(75)에 공급된다. 최적 인트라 예측 모드의 예측 화상이 선택된 경우, 인트라 예측부(74)는, 최적 인트라 예측 모드의 정보를, 대응하는 매크로 블록 타입의 정보와 함께 가역 부호화부(66)에 공급한다.
최적 인터 예측 모드의 예측 화상이 선택된 경우, 움직임 예측?보상부(75)는, 최적 인터 예측 모드에 대응하는 매크로 블록 타입의 정보와, 필요에 따라서 최적 인터 예측 모드에 따른 정보를 가역 부호화부(66)에 출력한다. 최적 인터 예측 모드에 따른 정보로는, 움직임 벡터 정보나 플래그, 참조 프레임 정보 등을 들 수 있다.
스텝 S23에서, 가역 부호화부(66)는 가역 부호화 처리를 행한다. 상기 가역 부호화 처리에 대해서는 도 33을 참조해서 후술된다.
스텝 S23의 처리에 의해, 양자화부(65)로부터 출력된 양자화된 변환 계수가 가역 부호화되어 압축된다. 이때, 상술한 스텝 S22에서 가역 부호화부(66)에 입력된, 매크로 블록 타입이나 움직임 벡터 정보 등의 신택스 요소, 및 스텝 S25의 제어에 이용된 양자화 파라미터의 신택스 요소도 부호화되어 헤더 정보에 부가된다. 또한, 신택스 요소 중 매크로 블록 타입에 대해서는, 그 양자화 파라미터에 따라서 선택된 VLC 테이블에 의해 부호화되어 헤더 정보에 부가된다.
스텝 S24에서 축적 버퍼(67)는 차분 화상을 압축 화상으로서 축적한다. 축적 버퍼(67)에 축적된 압축 화상이 적절히 판독되어, 전송로를 통해 복호측에 전송된다.
스텝 S25에서 레이트 제어부(77)는, 축적 버퍼(67)에 축적된 압축 화상에 기초하여, 오버플로 혹은 언더플로가 발생하지 않도록, 대응하는 양자화 파라미터에 의해 양자화부(65)의 양자화 동작의 레이트를 제어한다. 양자화부(65)의 레이트의 제어에 이용된 양자화 파라미터는, 모드 테이블 전환부(78)에 공급되어, 스텝 S23의 가역 부호화 처리에 이용된다. 또한, 상기 양자화 파라미터는, 스텝 S23에서 부호화되어 헤더에 부가된다.
[예측 처리의 설명]
다음으로, 도 19의 플로우차트를 참조하여, 도 18의 스텝 S21에서의 예측 처리를 설명한다.
화면 재배열 버퍼(62)로부터 공급되는 처리 대상의 화상이 인트라 처리되는 블록의 화상인 경우, 참조되는 복호 완료된 화상이 프레임 메모리(72)로부터 판독되어, 스위치(73)를 통해 인트라 예측부(74)에 공급된다. 이들 화상에 기초하여, 스텝 S31에서, 인트라 예측부(74)는 처리 대상인 블록의 화소를, 후보가 되는 모든 인트라 예측 모드에서 인트라 예측한다. 또한, 참조되는 복호 완료된 화소로는, 디블록 필터(71)에 의해 디블록 필터링되지 않은 화소가 이용된다.
스텝 S31에서의 인트라 예측 처리의 상세 내용은, 도 31을 참조해서 후술하지만, 이 처리에 의해, 후보가 되는 모든 인트라 예측 모드에서 인트라 예측이 행해져, 후보가 되는 모든 인트라 예측 모드에 대하여 코스트 함수값이 산출된다. 그리고, 산출된 코스트 함수값에 기초하여 최적 인트라 예측 모드가 선택되고, 최적 인트라 예측 모드의 인트라 예측에 의해 생성된 예측 화상과 그 코스트 함수값이 예측 화상 선택부(76)에 공급된다.
화면 재배열 버퍼(62)로부터 공급되는 처리 대상의 화상이 인터 처리되는 화상인 경우, 참조되는 화상이 프레임 메모리(72)로부터 판독되어, 스위치(73)를 통해 움직임 예측?보상부(75)에 공급된다. 이들 화상에 기초하여, 스텝 S32에서, 움직임 예측?보상부(75)는 인터 움직임 예측 처리를 행한다. 즉, 움직임 예측?보상부(75)는, 프레임 메모리(72)로부터 공급되는 화상을 참조하여, 후보가 되는 모든 인터 예측 모드의 움직임 예측 처리를 행한다.
스텝 S32에서의 인터 움직임 예측 처리의 상세 내용은, 도 32를 참조해서 후술한다. 이 처리에 의해, 후보가 되는 모든 인터 예측 모드에서 움직임 예측 처리가 행해져, 후보가 되는 모든 인터 예측 모드에 대하여 코스트 함수값이 산출된다.
스텝 S33에서, 움직임 예측?보상부(75)는, 스텝 S32에서 산출된 인터 예측 모드에 대한 코스트 함수값을 비교한다. 움직임 예측?보상부(75)는, 그 코스트 함수값이, 최소값을 부여하는 예측 모드를 최적 인터 예측 모드로서 결정하고, 최적 인터 예측 모드에서 생성된 예측 화상과 그 코스트 함수값을 예측 화상 선택부(76)에 공급한다.
[H. 264/AVC 방식에서의 인트라 예측 처리의 설명]
다음으로, H. 264/AVC 방식으로 정해져 있는 인트라 예측의 각 모드에 대해서 설명한다.
우선, 휘도 신호에 대한 인트라 예측 모드에 대해서 설명한다. 휘도 신호의 인트라 예측 모드에는, 인트라 4×4 예측 모드, 인트라 8×8 예측 모드 및 인트라 16×16 예측 모드의 3가지의 방식이 정해져 있다. 이것은, 블록 단위를 정하는 모드이며, 매크로 블록마다 설정된다. 또한, 색차 신호에 대해서는, 매크로 블록마다 휘도 신호와는 독립된 인트라 예측 모드를 설정하는 것이 가능하다.
또한, 인트라 4×4 예측 모드인 경우, 4×4 화소의 대상 블록마다, 9종류의 예측 모드로부터 1개의 예측 모드를 설정할 수 있다. 인트라 8×8 예측 모드인 경우, 8×8 화소의 대상 블록마다, 9종류의 예측 모드로부터 1개의 예측 모드를 설정할 수 있다. 또한, 인트라 16×16 예측 모드인 경우, 16×16 화소의 대상 매크로 블록에 대하여, 4종류의 예측 모드로부터 1개의 예측 모드를 설정할 수 있다.
또한, 이하, 인트라 4×4 예측 모드, 인트라 8×8 예측 모드 및 인트라 16×16 예측 모드는, 각각 4×4 화소의 인트라 예측 모드, 8×8 화소의 인트라 예측 모드 및 16×16 화소의 인트라 예측 모드라고도 적절히 칭한다.
도 20의 예에서, 각 블록에 붙어 있는 숫자 -1 내지 25는, 그 각 블록의 비트스트림순(복호측에서의 처리순)을 나타내고 있다. 또한, 휘도 신호에 대해서는, 매크로 블록이 4×4 화소로 분할되어 4×4 화소의 DCT가 행해진다. 그리고, 인트라 16×16 예측 모드의 경우에만, -1의 블록에 나타내어진 바와 같이, 각 블록의 직류 성분을 모아 4×4 행렬이 생성되고, 이에 대해 직교 변환이 더 실시된다.
한편, 색차 신호에 대해서는, 매크로 블록이 4×4 화소로 분할되어 4×4 화소의 DCT가 행해진 후에, 16 및 17의 각 블록에 나타내어진 바와 같이, 각 블록의 직류 성분을 모아 2×2 행렬이 생성되고, 이에 대해 직교 변환이 더 실시된다.
또한 이것은, 인트라 8×8 예측 모드에 관해서는, 하이 프로파일 또는 그 이상의 프로파일에서, 대상 매크로 블록에 8×8 직교 변환이 실시되는 경우에 대해서만 적용가능하다.
도 21 및 도 22는, 9종류의 휘도 신호의 4×4 화소의 인트라 예측 모드(Intra_4×4_pred_mode)를 나타내는 도면이다. 평균값(DC) 예측을 나타내는 모드 2 이외의 8종류의 각 모드는, 각각 도 23의 번호 0, 1, 3 내지 8로 나타내지는 방향에 대응하고 있다.
9종류의 Intra_4×4_pred_mode에 대해서 도 24를 참조하여 설명한다. 도 24의 예에서, 화소 a 내지 p는, 인트라 처리되는 대상 블록의 화소를 나타내고, 화소값 A 내지 M은, 인접 블록에 속하는 화소의 화소값을 나타내고 있다. 즉, 화소 a 내지 p는, 화면 재배열 버퍼(62)로부터 판독된 처리 대상의 화상이며, 화소값 A 내지 M은, 프레임 메모리(72)로부터 판독되어, 참조되는 복호 완료된 화상의 화소값이다.
도 21 및 도 22에 나타내는 각 인트라 예측 모드의 경우, 화소 a 내지 p의 예측 화소값은, 인접 블록에 속하는 화소의 화소값 A 내지 M을 이용하여 아래와 같이 생성된다. 또한, 화소값이 "available"이라는 것은, 화소 프레임의 단부이거나 혹은 아직 부호화되지 않았다는 등의 이유가 없어, 이용 가능한 것을 나타낸다. 이에 반해, 화소값이 "unavailable"이라는 것은, 화소 프레임의 단부이거나 혹은 아직 부호화되지 않았다는 등의 이유로 인해 이용 가능하지 않은 것을 나타낸다.
모드 0은 Vertical Prediction mode이며, 화소값 A 내지 D가 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (9)와 같이 생성된다.
화소 a, e, i, m의 예측 화소값 = A
화소 b, f, j, n의 예측 화소값 = B
화소 c, g, k, o의 예측 화소값 = C
화소 d, h, l, p의 예측 화소값 = D …… (9)
모드 1은 Horizontal Prediction mode이며, 화소값 I 내지 L이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (10)과 같이 생성된다.
화소 a, b, c, d의 예측 화소값 = I
화소 e, f, g, h의 예측 화소값 = J
화소 i, j, k, l의 예측 화소값 = K
화소 m, n, o, p의 예측 화소값 = L …… (10)
모드 2는 DC Prediction mode이며, 화소값 A, B, C, D, I, J, K, L이 모두 "available"일 때, 예측 화소값은 식(11)과 같이 생성된다.
(A + B + C + D + I + J + K + L + 4) ? 3 …… (11)
또한, 화소값 A, B, C, D가 모두 "unavailable"일 때, 예측 화소값은 식 (12)와 같이 생성된다.
(I + J + K + L + 2) ? 2 …… (12)
또한, 화소값 I, J, K, L이 모두 "unavailable"일 때, 예측 화소값은 식 (13)과 같이 생성된다.
(A + B + C + D + 2) ? 2 …… (13)
또한, 화소값 A, B, C, D, I, J, K, L이 모두 "unavailable"일 때, 128을 예측 화소값으로서 이용한다.
모드 3은 Diagonal_Down_Left Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (14)와 같이 생성된다.
화소 a의 예측 화소값 = (A + 2B + C + 2) ? 2
화소 b, e의 예측 화소값 = (B + 2C + D + 2) ? 2
화소 c, f, i의 예측 화소값 = (C + 2D + E + 2) ? 2
화소 d, g, j, m의 예측 화소값 = (D + 2E + F + 2) ? 2
화소 h, k, n의 예측 화소값 = (E + 2F + G + 2) ? 2
화소 l, o의 예측 화소값 = (F + 2G + H + 2) ? 2
화소 p의 예측 화소값 = (G + 3H + 2) ? 2 …… (14)
모드 4는 Diagonal_Down_Right Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (15)와 같이 생성된다.
화소 m의 예측 화소값 = (J + 2K + L + 2) ? 2
화소 i, n의 예측 화소값 = (I + 2J + K + 2) ? 2
화소 e, j, o의 예측 화소값 = (M + 2I + J + 2) ? 2
화소 a, f, k, p의 예측 화소값 = (A + 2M + I + 2) ? 2
화소 b, g, l의 예측 화소값 = (M + 2A + B + 2) ? 2
화소 c, h의 예측 화소값 = (A + 2B + C + 2) ? 2
화소 d의 예측 화소값 = (B + 2C + D + 2) ? 2 …… (15)
모드 5는 Diagonal_Vertical_Right Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (16)과 같이 생성된다.
화소 a, j의 예측 화소값 = (M + A + 1) ? 1
화소 b, k의 예측 화소값 = (A + B + 1) ? 1
화소 c, l의 예측 화소값 = (B + C + 1) ? 1
화소 d의 예측 화소값 = (C + D + 1) ? 1
화소 e, n의 예측 화소값 = (I + 2M + A + 2) ? 2
화소 f,o의 예측 화소값 = (M + 2A + B + 2) ? 2
화소 g, p의 예측 화소값 = (A + 2B + C + 2) ? 2
화소 h의 예측 화소값 = (B + 2C + D + 2) ? 2
화소 i의 예측 화소값 = (M + 2I + J + 2) ? 2
화소 m의 예측 화소값 = (I + 2J + K + 2) ? 2 …… (16)
모드 6은, Horizontal_Down Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (17)과 같이 생성된다.
화소 a, g의 예측 화소값 = (M + I + 1) ? 1
화소 b, h의 예측 화소값 = (I + 2M + A + 2) ? 2
화소 c의 예측 화소값 = (M + 2A + B + 2) ? 2
화소 d의 예측 화소값 = (A + 2B + C + 2) ? 2
화소 e, k의 예측 화소값 = (I + J + 1) ? 1
화소 f, l의 예측 화소값 = (M + 2I + J + 2) ? 2
화소 i, o의 예측 화소값 = (J + K + 1) ? 1
화소 j, p의 예측 화소값 = (I + 2J + K + 2) ? 2
화소 m의 예측 화소값 = (K + L + 1) ? 1
화소 n의 예측 화소값 = (J + 2K + L + 2) ? 2 …… (17)
모드 7은, Vertical_Left Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (18)과 같이 생성된다.
화소 a의 예측 화소값 = (A + B + 1) ? 1
화소 b, i의 예측 화소값 = (B + C + 1) ? 1
화소 c, j의 예측 화소값 = (C + D + 1) ? 1
화소 d, k의 예측 화소값 = (D + E + 1) ? 1
화소 l의 예측 화소값 = (E + F + 1) ? 1
화소 e의 예측 화소값 = (A + 2B + C + 2) ? 2
화소 f, m의 예측 화소값 = (B + 2C + D + 2) ? 2
화소 g, n의 예측 화소값 = (C + 2D + E + 2) ? 2
화소 h, o의 예측 화소값 = (D + 2E + F + 2) ? 2
화소 p의 예측 화소값 = (E + 2F + G + 2) ? 2 …… (18)
모드 8은, Horizontal_Up Prediction mode이며, 화소값 A, B, C, D, I, J, K, L, M이 "available"인 경우에만 적용된다. 이 경우, 화소 a 내지 p의 예측 화소값은 다음 식 (19)와 같이 생성된다.
화소 a의 예측 화소값 = (I + J + 1) ? 1
화소 b의 예측 화소값 = (I + 2J + K + 2) ? 2
화소 c, e의 예측 화소값 = (J + K + 1) ? 1
화소 d, f의 예측 화소값 = (J + 2K + L + 2) ? 2
화소 g, i의 예측 화소값 = (K + L + 1) ? 1
화소 h, j의 예측 화소값 = (K + 3L + 2) ? 2
화소 k, l, m, n, o, p의 예측 화소값 = L …… (19)
다음으로, 다시 도 4를 참조하여, 휘도 신호의 4×4 화소의 인트라 예측 모드(Intra_4×4_pred_mode)의 부호화 방식에 대해서 설명한다. 도 4의 예에서, 4×4 화소로 이루어지고, 부호화 대상이 되는 대상 블록 C가 나타나 있고, 대상 블록 C에 인접하는 4×4 화소로 이루어지는 블록 A 및 블록 B가 나타나 있다.
이 경우, 대상 블록 C에서의 Intra_4×4_pred_mode와, 블록 A 및 블록 B에서의 Intra_4×4_pred_mode는 높은 상관이 있는 것으로 생각된다. 이 상관성을 이용하여 다음과 같이 부호화 처리를 행함으로써, 보다 높은 부호화 효율을 실현할 수 있다.
즉, 도 4의 예에서, 블록 A 및 블록 B에서의 Intra_4×4_pred_mode를, 각각 Intra_4×4_pred_mode A 및 Intra_4×4_pred_mode B로 하여, MostProbableMode를 다음 식 (20)이라고 정의한다.
MostProbableMode = Min(Intra_4×4_pred_mode A, Intra_4×4_pred_mode B) …… (20)
즉, 블록 A 및 블록 B 중 보다 작은 mode_number가 할당되어 있는 쪽을 MostProbableMode라고 한다.
비트스트림 중에는, 대상 블록 C에 대한 파라미터로서 prev_intra 4×4_pred_mode_flag[luma 4×4 BlkIdx] 및 rem_intra 4×4_pred_mode[luma 4×4BlkIdx]라는 2개의 값이 정의되어 있으며, 다음 식 (21)에 나타내지는 의사 코드에 기초한 처리에 의해 복호 처리가 행해져, 대상 블록 C에 대한 Intra_4×4_pred_mode, Intra 4×4 PredMode[luma 4×4 BlkIdx]의 값을 얻을 수 있다.
if(prev_intra 4×4_pred_mode_flag[luma 4×4 BlkIdx])
Intra 4×4 PredMode[luma 4×4 BlkIdx] = MostProbableMode
else
if(rem_intra 4×4_pred_mode[luma 4×4 BlkIdx] < MostProbableMode)
Intra 4×4 PredMode[luma 4×4 BlkIdx] = rem_intra 4×4_pred_mode[luma 4×4 BlkIdx]
else
Intra 4×4 PredMode[luma 4×4 BlkIdx] = rem_intra 4×4_pred_mode[luma 4×4 BlkIdx] + 1 …… (21)
다음으로, 8×8 화소의 인트라 예측 모드에 대해서 설명한다. 도 25 및 도 26은, 9종류의 휘도 신호의 8×8 화소의 인트라 예측 모드(Intra_8×8_pred_mode)를 나타내는 도면이다.
대상인 8×8 블록에서의 화소값을, p[x, y](0≤x≤7;0≤y≤7)로 하고, 인접 블록의 화소값을 p[-1, -1], …, p[-1, 15], p[-1, 0], …, p[-1, 7]과 같이 나타내는 것으로 한다.
8×8 화소의 인트라 예측 모드에 대해서는, 예측값을 생성하는데 앞서 인접 화소에 로우패스 필터링 처리가 실시된다. 여기서, 로우패스 필터링 처리 전의 화소값을 p[-1, -1], …, p[-1, 15], p[-1, 0], … p[-1, 7], 처리 후의 화소값을 p'[-1, -1], …, p'[-1, 15], p'[-1, 0], … p'[-1, 7]로 나타내는 것으로 한다.
우선, p'[0, -1]은, p[-1, -1]이 "available"인 경우에는, 다음 식 (22)와 같이 산출되고, "not available"인 경우에는 다음 식 (23)과 같이 산출된다.
p'[0, -1] = (p[-1, -1] + 2*p[0, -1] + p[1, -1] + 2) ? 2 …… (22)
p'[0, -1] = (3*p[0, -1] + p[1, -1] + 2) ? 2 …… (23)
p'[x, -1](x=0, …, 7)은, 다음 식 (24)와 같이 산출된다.
p'[x, -1] = (p[x-1, -1] + 2*p[x, -1] + p[x+1, -1] + 2) ? 2 …… (24)
p'[x, -1](x=8, …, 15)은, p[x, -1](x=8, …, 15)이 "available"인 경우에는 다음 식 (25)와 같이 산출된다.
p'[x, -1] = (p[x-1, -1] + 2*p[x, -1] + p[x+1, -1] + 2) ? 2
p'[15, -1] = (p[14, -1] + 3*p[15, -1] + 2) ? 2 …… (25)
p'[-1, -1]은, p[-1, -1]이 "available"인 경우에는 아래와 같이 산출된다. 즉, p'[-1, -1]은, p[0, -1] 및 p[-1, 0] 모두가 available인 경우에는 식 (26)과 같이 산출되고, p[-1, 0]이 "unavailable"인 경우에는 식 (27)과 같이 산출된다. 또한, p'[-1, -1]은, p[0, -1]이 "unavailable"인 경우에는 식 (28)과 같이 산출된다.
p'[-1, -1] = (p[0, -1] + 2*p[-1, -1] + p[-1, 0] + 2) ? 2 …… (26)
p'[-1, -1] = (3*p[-1, -1] + p[0, -1] + 2) ? 2 …… (27)
p'[-1, -1] = (3*p[-1, -1] + p[-1, 0] + 2) ? 2 ……(28)
p'[-1, y](y= 0, …, 7)는, p[-1, y](y=0, …, 7)가 "available"일 때, 아래와 같이 산출된다. 즉, 우선, p'[-1, 0]은, p[-1, -1]이 "available"인 경우에는 다음 식 (29)와 같이 산출되고, "unavailable"인 경우에는 식 (30)과 같이 산출된다.
p'[-1, 0] = (p[-1, -1] + 2*p[-1, 0] + p[-1, 1] + 2) ? 2 …… (29)
p'[-1, 0] = (3*p[-1, 0] + p[-1, 1] + 2) ? 2 …… (30)
또한, p'[-1, y](y=1, …, 6)은 다음 식 (31)과 같이 산출되고, p'[-1, 7] 은 식 (32)와 같이 산출된다.
p[-1, y] = (p[-1, y-1] + 2*p[-1, y] + p[-1, y+1] + 2) ? 2 …… (31)
p'[-1, 7] = (p[-1, 6] + 3*p[-1, 7] + 2) ? 2 …… (32)
이와 같이 산출된 p'를 이용하여, 도 25 및 도 26에 나타내지는 각 인트라 예측 모드에 있어서의 예측값은 아래와 같이 생성된다.
모드 0은 Vertical Prediction mode이며, p[x, -1](x=0, …, 7)이 "available"일 때에만 적용된다. 예측값 pred 8×8L[x, y]는, 다음 식 (33)과 같이 생성된다.
pred 8×8L[x, y] = p'[x, -1] x, y=0, ..., 7 …… (33)
모드 1은 Horizontal Prediction mode이며, p[-1, y](y=0, …, 7)가 "available"일 때에만 적용된다. 예측값 pred 8×8L[x, y]는, 다음 식 (34)와 같이 생성된다.
pred 8×8L[x, y] = p'[-1, y] x, y=0, ..., 7 …… (34)
모드 2는 DC Prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, p[x, -1](x=0, …, 7) 및 p[-1, y](y=0, …, 7) 모두가 "available"인 경우에는, 예측값 pred 8×8L[x, y]는 다음 식 (35)와 같이 생성된다.
Figure pct00003
p[x, -1](x=0, …, 7)은 "available"인데 p[-1, y](y=0, …, 7)가 "unavailable"인 경우에는, 예측값 pred 8×8L[x, y]는 다음 식 (36)과 같이 생성된다.
Figure pct00004
p[x, -1](x=0, …, 7)은 "unavailable"인데 p[-1, y](y=0, …, 7)가 "available"인 경우에는, 예측값 pred 8×8L[x, y]는 다음 식 (37)과 같이 생성된다.
Figure pct00005
p[x, -1](x=0, …, 7) 및 p[-1, y](y=0, …, 7) 모두가 "unavailable"인 경우에는, 예측값 pred 8×8L[x, y]는 다음 식 (38)과 같이 생성된다.
pred 8×8L[x, y] = 128 …… (38)
단, 식 (38)은 8비트 입력의 경우를 나타내고 있다.
모드 3은 Diagonal_Down_Left_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Diagonal_Down_Left_prediction mode는, p[x, -1], x=0, …, 15가 "available"일 때에만 적용되며, x=7이면서 y=7인 예측 화소값은, 다음 식 (39)와 같이 생성되고, 그 밖의 예측 화소값은, 다음 식 (40)과 같이 생성된다.
pred 8×8L[x, y] = (p'[14, -1] + 3*p[15, -1] + 2) ? 2 …… (39)
pred 8×8L[x, y] = (p'[x+y, -1] + 2*p'[x+y+1, -1] + p'[x+y+2, -1] + 2) ? 2 …… (40)
모드 4는 Diagonal_Down_Right_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Diagonal_Down_Right_prediction mode는, p[x, -1], x=0, …, 7 및 p[-1, y], y=0, …, 7이 "available"일 때에만 적용되고, x>y인 예측 화소값은 다음 식 (41)과 같이 생성되고, x<y인 예측 화소값은 다음 식 (42)와 같이 생성된다. 또한, x=y인 예측 화소값은, 다음 식 (43)과 같이 생성된다.
pred 8×8L[x, y] = (p'[x-y-2, -1] + 2*p'[x-y-1, -1] + p'[x-y, -1] + 2) ? 2 …… (41)
pred 8×8L[x, y] = (p'[-1, y-x-2] + 2*p'[-1, y-x-1] + p'[-1, y-x] + 2) ? 2 …… (42)
pred 8×8L[x, y] = (p'[0, -1] + 2*p'[-1, -1] + p'[-1, 0] + 2) ? 2 …… (43)
모드 5는 Vertical_Right_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Vertical_Right_prediction mode는, p[x, -1], x=0, …, 7 및 p[-1, y], y=-1, …, 7이 "available"일 때에만 적용된다. 이제, zVR을 다음 식 (44)와 같이 정의한다.
zVR = 2*x - y …… (44)
이때, zVR이 0, 2, 4, 6, 8, 10, 12, 14인 경우에는, 화소 예측값은 다음 식 (45)와 같이 생성되고, zVR이 1, 3, 5, 7, 9, 11, 13인 경우에는, 화소 예측값은 다음 식 (46)과 같이 생성된다.
pred 8×8L[x, y] = (p'[x-(y?1)-1, -1] + p'[x-(y?1), -1] + 1) ? 1 …… (45)
pred 8×8L[x, y] = (p'[x-(y?1)-2, -1] + 2*p'[x-(y?1)-1, -1] + p'[x-(y?1), -1] + 2) ? 2 ……(46)
또한, zVR이 -1인 경우에는, 화소 예측값은 다음 식 (47)과 같이 생성되고, 그 외의 경우, 즉 zVR이 -2, -3, -4, -5, -6, -7인 경우에는, 화소 예측값은 다음 식 (48)과 같이 생성된다.
pred 8×8L[x, y] = (p'[-1, 0] + 2*p'[-1, -1] + p'[0, -1] + 2) ? 2 …… (47)
pred 8×8L[x, y] = (p'[-1, y-2*x-1] + 2*p'[-1, y-2*x-2] + p'[-1, y-2*x-3] + 2) ? 2 ……(48)
모드 6은 Horizontal_Down_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Horizontal_Down_prediction mode는, p[x, -1], x=0, …, 7 및 p[-1, y], y=-1, …, 7이 "available"일 때에만 적용된다. 이제, zVR을 다음 식 (49)와 같이 정의하는 것으로 한다.
zHD = 2*y - x …… (49)
이때, zHD가 0, 2, 4, 6, 8, 10, 12, 14인 경우에는, 예측 화소값은 다음 식 (50)과 같이 생성되고, zHD가 1, 3, 5, 7, 9, 11, 13인 경우에는, 예측 화소값은 다음 식 (51)과 같이 생성된다.
pred 8×8L[x, y] = (p'[-1, y-(x?1)-1] + p'[-1, y-(x?1)+1] ? 1 …… (50)
pred 8×8L[x, y] = (p'[-1, y-(x?1)-2] + 2*p'[-1, y-(x?1)-1] + p'[-1, y-(x?1)] + 2) ? 2 …… (51)
또한, zHD가 -1인 경우에는, 예측 화소값은 다음 식 (52)와 같이 생성되고, zHD가 그 외의 값인 경우, 즉 -2, -3, -4, -5, -6, -7인 경우에는, 예측 화소값은 다음 식 (53)과 같이 생성된다.
pred 8×8L[x, y] = (p'[-1, 0] + 2*p[-1, -1] + p'[0, -1] + 2) ? 2 …… (52)
pred 8×8L[x, y] = (p'[x-2*y-1, -1] + 2*p'[x-2*y-2, -1] + p'[x-2*y-3, -1] + 2) ? 2 …… (53)
모드 7은 Vertical_Left_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Vertical_Left_prediction mode는, p[x, -1], x=0, …, 15가 "available"일 때에만 적용되고, y=0, 2, 4, 6인 경우, 예측 화소값은 다음 식 (54)와 같이 생성되고, 그 외의 경우, 즉 y=1, 3, 5, 7인 경우, 예측 화소값은 다음 식 (55)와 같이 생성된다.
pred 8×8L[x, y] = (p'[x+(y?1), -1] + p'[x+(y?1)+1, -1] + 1) ? 1 …… (54)
pred 8×8L[x, y] = (p'[x+(y?1), -1] + 2*p'[x+(y?1)+1, -1] + p'[x+(y?1)+2, -1] + 2) ? 2 …… (55)
모드 8은 Horizontal_Up_prediction mode이며, 예측값 pred 8×8L[x, y]는 아래와 같이 생성된다. 즉, Horizontal_Up_prediction mode는, p[-1, y], y=0, …, 7이 "available"일 때에만 적용된다. 이하에서는, zHU를 다음 식 (56)과 같이 정의한다.
zHU = x + 2*y …… (56)
zHU의 값이 0, 2, 4, 6, 8, 10, 12인 경우, 예측 화소값은 다음 식 (57)과 같이 생성되고, zHU의 값이 1, 3, 5, 7, 9, 11인 경우, 예측 화소값은 다음 식 (58)과 같이 생성된다.
pred 8×8L[x, y] = (p'[-1, y+(x?1)] + p'[-1, y+(x?1)+1] + 1) ? 1 …… (57)
pred 8×8L[x, y] = (p'[-1, y+(x?1)] …… (58)
또한, zHU의 값이 13인 경우, 예측 화소값은 다음 식 (59)와 같이 생성되고, 그 외의 경우, 즉 zHU의 값이 13보다 큰 경우, 예측 화소값은 다음 식 (60)과 같이 생성된다.
pred 8×8L[x, y] = (p'[-1, 6] + 3*p'[-1,7] + 2) ? 2 …… (59)
pred 8×8L[x, y] = p'[-1, 7] …… (60)
다음으로, 16×16 화소의 인트라 예측 모드에 대해서 설명한다. 도 27 및 도 28은, 4종류의 휘도 신호의 16×16 화소의 인트라 예측 모드(Intra_16×16_pred_mode)를 나타내는 도면이다.
4종류의 인트라 예측 모드에 대해서 도 29를 참조하여 설명한다. 도 29의 예에서, 인트라 처리되는 대상 매크로 블록 A가 나타나 있고, P(x, y);x, y = -1, 0, …, 15는, 대상 매크로 블록 A에 인접하는 화소의 화소값을 나타내고 있다.
모드 0은, Vertical Prediction mode이며, P(x, -1);x, y = -1, 0, …, 15가 "available"일 때에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (61)과 같이 생성된다.
Pred(x, y) = P(x, -1);x, y = 0, …, 15 …… (61)
모드 1은 Horizontal Prediction mode이며, P(-1, y);x, y = -1, 0, …, 15가 "available"일 때에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (62)와 같이 생성된다.
Pred(x, y) = P(-1, y);x, y = 0, …, 15 …… (62)
모드 2는 DC Prediction mode이며, P(x, -1) 및 P(-1, y);x, y = -1, 0, …, 15가 모두 "available"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (63)과 같이 생성된다.
Figure pct00006
또한, P(x, -1);x, y = -1, 0, …, 15가 "unavailable"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (64)와 같이 생성된다.
Figure pct00007
P(-1, y);x, y = -1, 0, …, 15가 "unavailable"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (65)와 같이 생성된다.
Figure pct00008
P(x, -1) 및 P(-1, y);x, y = -1, 0, …, 15가 모두 "unavailable"인 경우에는, 예측 화소값으로서 128을 이용한다.
모드 3은 Plane Prediction mode이며, P(x, -1) 및 P(-1, y);x, y = -1, 0, …, 15가 모두 "available"인 경우에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (66)과 같이 생성된다.
Figure pct00009
다음으로, 색차 신호에 대한 인트라 예측 모드에 대해서 설명한다. 도 23은, 4종류의 색차 신호의 인트라 예측 모드(Intra_chroma_pred_mode)를 나타내는 도면이다. 색차 신호의 인트라 예측 모드는, 휘도 신호의 인트라 예측 모드와 독립적으로 설정이 가능하다. 색차 신호에 대한 인트라 예측 모드는, 상술한 휘도 신호의 16×16 화소의 인트라 예측 모드에 준한다.
단, 휘도 신호의 16×16 화소의 인트라 예측 모드가, 16×16 화소의 블록을 대상으로 하고 있는 것에 반해, 색차 신호에 대한 인트라 예측 모드는, 8×8 화소의 블록을 대상으로 하고 있다. 또한, 상술한 도 27과 도 30에 도시된 바와 같이, 양자에 있어서 모드 번호는 대응하지 않는다.
여기서, 도 29를 참조해서 상술한 휘도 신호의 16×16 화소의 인트라 예측 모드의 대상 매크로 블록 A의 화소값 및 인접하는 화소값의 정의에 준한다. 예를 들면, 인트라 처리되는 대상 매크로 블록 A(색차 신호의 경우에는, 8×8 화소)에 인접하는 화소의 화소값을 P(x, y);x, y = -1, 0, …, 7로 한다.
모드 0은 DC Prediction mode이며, P(x, -1) 및 P(-1, y);x, y = -1, 0, …, 7이 모두 "available"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (67)과 같이 생성된다.
Figure pct00010
또한, P(-1, y);x, y = -1, 0, …, 7이 "unavailable"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (68)과 같이 생성된다.
Figure pct00011
또한, P(x, -1);x, y = -1, 0, …, 7이 "unavailable"인 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (69)와 같이 생성된다.
Figure pct00012
모드 1은 Horizontal Prediction mode이며, P(-1, y);x, y = -1, 0, …, 7이 "available"인 경우에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (70)과 같이 생성된다.
Pred(x, y) = P(-1, y);x, y = 0, …, 7 …… (70)
모드 2는 Vertical Prediction mode이며, P(x, -1);x, y = -1, 0, …, 7이 "available"인 경우에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (71)과 같이 생성된다.
Pred(x, y) = P(x, -1);x, y = 0, …, 7 …… (71)
모드 3은 Plane Prediction mode이며, P(x, -1) 및 P(-1, y);x, y = -1, 0, …, 7이 "available"인 경우에만 적용된다. 이 경우, 대상 매크로 블록 A의 각 화소의 예측 화소값 Pred(x, y)는, 다음 식 (72)와 같이 생성된다.
Figure pct00013
이상과 같이, 휘도 신호의 인트라 예측 모드에는, 9종류의 4×4 화소 및 8×8 화소의 블록 단위, 및 4종류의 16×16 화소의 매크로 블록 단위의 예측 모드가 있다. 상기 블록 단위의 모드는, 매크로 블록 단위마다 설정된다. 색차 신호의 인트라 예측 모드에는, 4종류의 8×8 화소의 블록 단위의 예측 모드가 있다. 상기 색차 신호의 인트라 예측 모드는, 휘도 신호의 인트라 예측 모드와 독립적으로 설정이 가능하다.
또한, 휘도 신호의 4×4 화소의 인트라 예측 모드(인트라 4×4 예측 모드) 및 8×8 화소의 인트라 예측 모드(인트라 8×8 예측 모드)에 대해서는, 4×4 화소 및 8×8 화소의 휘도 신호의 블록마다 1개의 인트라 예측 모드가 설정된다. 휘도 신호의 16×16 화소의 인트라 예측 모드(인트라 16×16 예측 모드)와 색차 신호의 인트라 예측 모드에 대해서는, 1개의 매크로 블록에 대하여 1개의 예측 모드가 설정된다.
또한, 예측 모드의 종류는, 상술한 도 23의 번호 0, 1, 3 내지 8로 나타내지는 방향에 대응하고 있다. 예측 모드 2는 평균값 예측이다.
[인트라 예측 처리의 설명]
다음으로, 도 31의 플로우차트를 참조하여, 이들 예측 모드에 대하여 행해지는 처리인, 도 19의 스텝 S31에서의 인트라 예측 처리를 설명한다. 또한, 도 31의 예에서는, 휘도 신호의 경우를 예로서 설명한다.
인트라 예측부(74)는, 스텝 S41에서, 4×4 화소, 8×8 화소 및 16×16 화소의 각 인트라 예측 모드에 대하여 인트라 예측을 행한다.
구체적으로는, 인트라 예측부(74)는, 처리 대상인 블록의 화소를 프레임 메모리(72)로부터 판독하여, 스위치(73)를 통해 공급되는 복호 완료된 화상을 참조해서 인트라 예측한다. 상기 인트라 예측 처리가 각 인트라 예측 모드에서 행해짐으로써, 각 인트라 예측 모드에서의 예측 화상이 생성된다. 또한, 참조되는 복호 완료된 화소로는, 디블록 필터(71)에 의해 디블록 필터링되지 않은 화소가 이용된다.
인트라 예측부(74)는, 스텝 S42에서, 상술한 수학식 3 또는 식 (4)로 나타내지는 코스트 함수값을 이용하여, 4×4 화소, 8×8 화소 및 16×16 화소의 각 인트라 예측 모드에 대한 코스트 함수값을 산출한다.
인트라 예측부(74)는, 스텝 S43에서, 4×4 화소, 8×8 화소 및 16×16 화소의 각 인트라 예측 모드에 대하여 각각 최적 모드를 결정한다. 즉, 상술한 바와 같이, 인트라 4×4 예측 모드 및 인트라 8×8 예측 모드의 경우에는, 예측 모드의 종류가 9종류 있고, 인트라 16×16 예측 모드의 경우에는, 예측 모드의 종류가 4종류 있다. 따라서, 인트라 예측부(74)는, 스텝 S42에서 산출된 코스트 함수값에 기초하여, 이들 중에서 최적 인트라 4×4 예측 모드, 최적 인트라 8×8 예측 모드, 최적 인트라 16×16 예측 모드를 결정한다.
인트라 예측부(74)는, 스텝 S44에서, 4×4 화소, 8×8 화소 및 16×16 화소의 각 인트라 예측 모드에 대하여 결정된 각 최적 모드 중에서, 스텝 S42에서 산출된 코스트 함수값에 기초하여 최적 인트라 예측 모드를 선택한다. 즉, 4×4 화소, 8×8 화소 및 16×16 화소에 대하여 결정된 각 최적 모드 중에서, 코스트 함수값이 최소값인 모드를 최적 인트라 예측 모드로서 선택한다. 그리고, 인트라 예측부(74)는, 최적 인트라 예측 모드에서 생성된 예측 화상과 그 코스트 함수값을 예측 화상 선택부(76)에 공급한다.
[인터 움직임 예측 처리의 설명]
다음으로, 도 32의 플로우차트를 참조하여, 도 19의 스텝 S32의 인터 움직임 예측 처리에 대해서 설명한다.
움직임 예측?보상부(75)는, 스텝 S61에서, 도 13을 참조해서 상술한 16×16 화소 내지 4×4 화소로 이루어지는 8종류의 각 인터 예측 모드에 대하여 움직임 벡터와 참조 화상을 각각 결정한다. 즉, 각 인터 예측 모드의 처리 대상인 블록에 대해서 움직임 벡터와 참조 화상이 각각 결정된다.
움직임 예측?보상부(75)는, 스텝 S62에서, 16×16 화소 내지 4×4 화소로 이루어지는 8종류의 각 인터 예측 모드에 대해서, 스텝 S61에서 결정된 움직임 벡터에 기초하여 참조 화상에 움직임 예측과 보상 처리를 행한다. 상기 움직임 예측과 보상 처리에 의해, 각 인터 예측 모드에서의 예측 화상이 생성된다.
움직임 예측?보상부(75)는, 스텝 S63에서, 16×16 화소 내지 4×4 화소로 이루어지는 8종류의 각 인터 예측 모드에 대하여 결정된 움직임 벡터에 대해서, 압축 화상에 부가하기 위한 움직임 벡터 정보를 생성한다. 이때, 도 14를 참조해서 상술한 움직임 벡터의 생성 방법이 이용된다.
생성된 움직임 벡터 정보는, 다음 스텝 S64에서의 코스트 함수값 산출시에도 이용되며, 최종적으로 예측 화상 선택부(76)에 의해 대응하는 예측 화상이 선택된 경우에는, 예측 모드 정보 및 참조 프레임 정보와 함께 가역 부호화부(66)에 출력된다.
움직임 예측?보상부(75)는, 스텝 S64에서, 상술한 수학식 3 또는 식 (4)로 나타내지는 코스트 함수를 이용하여, 16×16 화소 내지 4×4 화소로 이루어지는 8종류의 각 인터 예측 모드에 대하여 코스트 함수값을 산출한다. 여기서 산출된 코스트 함수값은, 상술한 도 19의 스텝 S33에서 최적 인터 예측 모드를 결정할 때에 이용된다.
[가역 부호화 처리의 설명]
다음으로, 도 33의 플로우차트를 참조하여, 도 18의 스텝 S23의 가역 부호화 처리에 대해 설명한다.
가역 부호화부(66)에는, 도 18의 스텝 S15에서 양자화된 직교 변환 계수가 공급된다. 가역 부호화부(66)는, 스텝 S81에서, H. 264/AVC 방식에서 정해져 있는 CAVLC의 테이블을 이용하여, 양자화부(65)에 의해 양자화된 직교 변환 계수를 부호화한다. 상기 직교 변환 계수의 부호화 처리의 상세 내용은, 도 34 및 도 35를 참조해서 후술한다.
스텝 S82에서, 가역 부호화부(66)는, H. 264/AVC 방식에서 정해져 있는 CAVLC의 테이블을 이용하여, 매크로 블록 타입 이외의 그 밖의 신택스 요소를 부호화한다. 스텝 S82에서는, 레이트 제어부(25)로부터의 양자화 파라미터 등의 신택스 요소도 부호화된다. 특히, 인터 예측이 행해진 경우에는, 움직임 벡터 정보나 참조 프레임 정보, 플래그 등의 신택스 요소가 부호화된다.
즉, 여기서는, 상술한 도 1의 지수 골롬 부호가 이용되어 각 신택스 요소가 부호화된다. 또한, 마이너스의 값이 발생할 가능성이 있는 움직임 벡터 등의 신택스 요소에 대해서는, 도 2에 나타내지는 대응 관계에 기초하여, 부호가 없는 코드 번호로 치환된 후에, 도 1의 지수 골롬 부호가 적용되어 부호화된다.
가역 부호화부(66)는, 스텝 S83에서, 매크로 블록 타입의 부호화 처리를 행한다. 상기 매크로 블록 타입의 부호화 처리에 대해서는, 도 36을 참조해서 후술한다.
스텝 S83의 처리에 의해, 레이트 제어부(25)로부터의 양자화 파라미터에 따라서 선택된 VLC 테이블이 이용되어, 매크로 블록 타입의 정보가 부호화된다.
그리고, 가역 부호화부(66)는, 스텝 S84에서, 스텝 S82 및 S83에서 부호화된 신택스 요소를, 스텝 S81에서 부호화된 압축 화상의 헤더에 부가한다. 신택스 요소가 헤더에 부가된 압축 화상은, 도 18의 스텝 S24에서 축적 버퍼(67)에 축적된다.
다음으로, 도 34를 참조하여, 도 33의 스텝 S81에서의 CAVLC에 의한 직교 변환 계수의 부호화 처리에 대해 설명한다. 또한, 도 34의 예에서는, 4×4 화소 블록의 예가 나타나 있으며, 각 화소에 붙어 있는 숫자는, 스캔 순을 나타내고 있다.
H .264/AVC 방식에서는, 4×4블록은, 직교 변환에 의해 각 주파수 성분에 상당하는 4×4의 2차원 데이터로 변환된다. 상기 2차원 데이터는 또한, 부호화 처리의 대상이 되는 대상 블록이 프레임 부호화된 것인지, 필드 부호화된 것인지에 따른 방식으로 1차원 데이터로 변환된다.
즉, 대상 블록이 프레임 부호화된 것일 경우, 4×4의 2차원 데이터는, 도 34의 A에 도시되는 지그재그 스캔 방식에 의해 1차원 데이터에 변환된다. 이에 대해, 대상 블록이 필드 부호화된 것일 경우, 4×4의 2차원 데이터는 도 34의 B에 도시되는 필드 스캔 방식에 의해 1차원 데이터로 변환된다.
첫째, 가역 부호화부(66)는, 상술한 바와 같이 1차원화된 직교 변환 계수를, 고역에서 저역을 향해 역 스캔을 행한다. 둘째, 가역 부호화부(66)는, NumCoef(0이 아닌 계수의 개수)와, T1s(고역에서 저역으로 스캔했을 때의 ±1의 계수의 개수, 최대 3)의 부호화를 행한다.
예를 들면, 다시 도 4를 참조함에 있어서, 도 4의 예에서는, 부호화 처리의 대상 블록 C와, 이미 부호화 완료된 블록이며 대상 블록 C에 인접하는 인접 블록 A 및 B가 나타나 있다.
이때, 가역 부호화부(66)는, 인접 블록 A 및 B에서의 NumCoef에 따라서 VLC 테이블을 전환한다.
셋째, 가역 부호화부(66)는, Level(DCT 계수값)의 부호화를 행한다. 예를 들면, T1s에 관해서는, 플러스/마이너스만이 부호화된다. 그 밖의 계수에 관해서는, 코드 번호(Code Number)가 할당되어 부호화된다. 이때, 가역 부호화부(66)는, 인트라/인터, 양자화 파라미터(QP), 및 마지막으로 부호화한 Level에 따라서 VLC 테이블을 전환한다.
넷째, 가역 부호화부(66)는 Run의 부호화를 행한다. 이때, 가역 부호화부(66)는, TotalZero의 부호화에 있어서, NumCoef에 따라서 VLC 테이블의 전환을 행한다. 또한, 가역 부호화부(66)는, Run_before(비 0 계수 앞에 계속되는 0의 수)의 부호화에 있어서, ZerosLeft(나머지 비 0 계수의 수)에 따라서 VLC 테이블의 전환을 행한다. 그리고, ZerosLeft=0에서 부호화 처리는 종료가 된다.
다음으로, 도 35를 참조하여, CAVLC의 동작 원리의 구체예에 대해서 설명한다. 도 35의 예에서는, 역 스캔한 후, 다음에 나타내는 순서대로 부호화 처리가 행해진다.
TotalCoef(비 0 계수의 개수) = 7
TrailingOnes(마지막으로 연속되는 절대값 1의 계수의 개수) = 2
Trailing_ones_sign_flag(마지막으로 연속되는 절대값 1의 계수의 부호) = -
Trailing_ones_sign_flag(마지막으로 연속되는 절대값 1의 계수의 부호) = +
Level(DCT 계수) = -3
Level = +8
Level = +11
Level = -4
Level = +23
TotalZeros(최후의 비 0 계수 전의 0 계수의 개수) = 5(ZerosLeft = 6)
run_before(계수값 전의 0의 연속 개수) = 1(ZerosLeft = 5)
run_before = 2(ZerosLeft = 4)
run_before = 0(ZerosLeft = 3)
run_before = 2(ZerosLeft = 2)
run_before = 0(ZerosLeft = 1)
run_before = 0(ZerosLeft = 0)
또한, 이들 수치는, 상술한 바와 같이 주변 블록 등의 부호화 상황 등에 따라서 전환된 테이블에 의해 VLC 부호화된다.
[매크로 블록 타입의 부호화 처리의 설명]
다음으로, 도 36의 플로우차트를 참조하여, 도 33의 스텝 S83의 매크로 블록 타입의 부호화 처리에 대해서 설명한다.
레이트 제어부(77)로부터, 양자화 파라미터(QP)가 VLC 테이블 전환부(81) 및 코드 번호 할당부(82)에 공급된다(도 18의 스텝 S25).
VLC 테이블 전환부(81) 및 코드 번호 할당부(82)는, 스텝 S91에서 레이트 제어부(77)로부터의 양자화 파라미터(QP)를 취득한다.
스텝 S92에서, VLC 테이블 전환부(81)는, 레이트 제어부(77)로부터의 양자화 파라미터에 따라서, 예를 들면 2종류의 테이블 중 어느 한쪽을 매크로 블록 타입에 대한 VLC 테이블로서 선택한다. 예를 들면, VLC 테이블 전환부(81)는, 소정의 임계값보다 낮은 양자화 파라미터(예를 들면, QP=22)에 대응하여, 도 17의 k=0인 테이블을 선택하고, 소정의 임계값보다 높은 양자화 파라미터(예를 들면, QP=37)에 대응하여, k=1인 테이블을 선택한다.
스텝 S93에서, 코드 번호 할당부(82)는, 레이트 제어부(77)로부터의 양자화 파라미터에 따라서 코드 번호 "0"을 할당한다. 즉, 코드 번호 할당부(82)는, 소정의 임계값보다 낮은 양자화 파라미터에 대응하여, 인터 16×16 모드를 코드 번호 "0"에 할당한다. 또한, 코드 번호 할당부(82)는, 소정의 임계값보다 높은 양자화 파라미터에 대응하여, 스킵(또는 다이렉트) 모드를 코드 번호 "0"에 할당한다.
상기 할당 정보는, VLC 테이블 전환부(81)에 공급되어, 매크로 블록 타입에 대한 VLC 테이블 정보와 함께 가역 부호화부(66)에 공급된다.
스텝 S94에서, 가역 부호화부(66)는, VLC 테이블 전환부(81)에 의해 선택된 VLC 테이블로 매크로 블록 타입을 부호화한다.
부호화된 매크로 블록 타입은, 도 33의 스텝 S82에서 부호화된 다른 신택스 요소와 함께, 스텝 S84에서, 스텝 S81에서 부호화된 압축 화상의 헤더에 부가된다.
이상과 같이 해서 부호화된 압축 화상은, 소정의 전송로를 통해 전송되어 화상 복호 장치에 의해 복호된다.
[화상 복호 장치의 구성예]
도 37은, 본 발명을 적용한 화상 처리 장치로서의 화상 복호 장치의 일 실시 형태의 구성을 나타내고 있다.
화상 복호 장치(101)는, 축적 버퍼(111), 가역 복호부(112), 역 양자화부(113), 역 직교 변환부(114), 연산부(115), 디블록 필터(116), 화면 재배열 버퍼(117), D/A 변환부(118), 프레임 메모리(119), 스위치(120), 인트라 예측부(121), 움직임 예측?보상부(122), 스위치(123) 및 모드 테이블 전환부(124)에 의해 구성되어 있다.
축적 버퍼(111)는 전송되어 온 압축 화상을 축적한다. 가역 복호부(112)는, 축적 버퍼(111)로부터 공급된, 도 12의 가역 부호화부(66)에 의해 부호화된 정보를 가역 부호화부(66)의 부호화 방식에 대응하는 방식으로 복호한다.
즉, 가역 복호부(112)는, 도 12의 가역 부호화부(66)에 의해 부호화된 화상을 복호하고, 양자화 파라미터 등의 신택스 요소도 복호한다. 복호된 화상 및 양자화 파라미터는, 역 양자화부(113)에 공급된다. 또한, 양자화 파라미터는, 모드 테이블 전환부(124)에도 공급된다.
또한, 가역 복호부(112)는, 상기 양자화 파라미터에 대응해서 모드 테이블 전환부(124)에 의해 선택된 복호 방법(구체적으로는, VLC 테이블 정보)으로 매크로 블록 타입도 복호한다. 복호된 매크로 블록 타입은, 대응하는 움직임 예측?보상부(122) 또는 인트라 예측부(121)에 공급된다.
역 양자화부(113)는 가역 복호부(112)에 의해 복호된 화상을, 가역 복호부(112)에 의해 복호된 양자화 파라미터를 참조하여, 도 12의 양자화부(65)의 양자화 방식에 대응하는 방식으로 역 양자화한다. 역 직교 변환부(114)는, 도 12의 직교 변환부(64)의 직교 변환 방식에 대응하는 방식으로 역 양자화부(113)의 출력을 역 직교 변환한다.
역 직교 변환된 출력은 연산부(115)에 의해 스위치(123)로부터 공급되는 예측 화상과 가산되어 복호된다. 디블록 필터(116)는, 복호된 화상의 블록 왜곡을 제거한 후, 프레임 메모리(119)에 공급하고 축적시키는 동시에, 화면 재배열 버퍼(117)에 출력한다.
화면 재배열 버퍼(117)는 화상의 재배열을 행한다. 즉, 도 12의 화면 재배열 버퍼(62)에 의해 부호화의 순번을 위해 재배열된 프레임의 순번이, 원래의 표시의 순서대로 재배열된다. D/A 변환부(118)는, 화면 재배열 버퍼(117)로부터 공급된 화상을 D/A 변환하고, 도시하지 않는 디스플레이에 출력하여 표시시킨다.
스위치(120)은, 인터 처리되는 화상과 참조되는 화상을 프레임 메모리(119)로부터 판독하여, 움직임 예측?보상부(122)에 출력하는 동시에, 인트라 예측에 이용되는 화상을 프레임 메모리(119)로부터 판독하여 인트라 예측부(121)에 공급한다.
인트라 예측부(121)에는, 헤더 정보를 복호해서 얻어진 매크로 블록 타입 정보, 및 인트라 예측 모드를 나타내는 정보가 가역 복호부(112)로부터 공급된다. 인트라 예측부(121)는, 상기 정보에 기초하여 예측 화상을 생성하고, 생성한 예측 화상을 스위치(123)에 출력한다.
움직임 예측?보상부(122)에는, 헤더 정보를 복호해서 얻어진 정보 중, 매크로 블록 타입 정보, 움직임 벡터 정보, 참조 프레임 정보 등이 가역 복호부(112)로부터 공급된다. 움직임 예측?보상부(122)는, 움직임 벡터 정보와 참조 프레임 정보에 기초해서 화상에 움직임 예측과 보상 처리를 실시하여, 예측 화상을 생성한다. 즉, 대상 블록의 예측 화상은, 참조 프레임에 있어서, 대상 블록에 움직임 벡터로 대응지어진 참조 블록의 화소값이 이용되어 생성된다. 그리고, 움직임 예측?보상부(122)는, 생성된 예측 화상을 스위치(123)에 출력한다.
스위치(123)는, 움직임 예측?보상부(122) 또는 인트라 예측부(121)에 의해 생성된 예측 화상을 선택하여, 연산부(115)에 공급한다.
모드 테이블 전환부(124)는, 가역 복호부(112)에 의해 복호된 양자화 파라미터에 따라서, 매크로 블록 타입에 대한 복호 방법(즉, VLC 테이블)을 전환하고, 전환한 VLC 테이블의 정보를 가역 복호부(112)에 공급한다.
즉, 모드 테이블 전환부(124)는, 양자화 파라미터를 레이트 제어부(77)로부터 취득하는 것에 반해, 가역 복호부(112)로부터 취득한다는 점이 서로 다를 뿐이며, 그 밖에는, 도 12의 모드 테이블 전환부(78)와 기본적으로 마찬가지의 처리를 행한다.
[가역 복호부 및 모드 테이블 전환부의 구성예]
도 38은, 가역 복호부 및 모드 테이블 전환부의 상세한 구성예를 도시하는 블록도다.
도 38의 예에서는, 가역 복호부(112)는, 양자화 파라미터 복호부(131) 및 매크로 블록 타입 복호부(132)를 포함하도록 구성된다. 즉, 가역 복호부(112)에는, 실제로는 화상 부호화 장치(51)로부터의 압축 화상이나, 양자화 파라미터 및 매크로 블록 타입 이외의 움직임 벡터 정보 등의 다른 신택스 요소를 복호하는 부도 구성되지만, 도 38의 예에서는, 그 도시가 생략되어 있다.
모드 테이블 전환부(124)는, VLC 테이블 전환부(141) 및 코드 번호 할당부(142)에 의해 구성된다.
양자화 파라미터 복호부(131)는, 압축 화상의 헤더에 부가되어 있던 양자화 파라미터를 복호하고, 복호한 양자화 파라미터를, 역 양자화부(113), VLC 테이블 전환부(141) 및 코드 번호 할당부(142)에 공급한다.
매크로 블록 타입 복호부(132)는, VLC 테이블 전환부(141)에 의해 선택된 VLC 테이블을 이용하여 매크로 블록 타입을 복호하고, 복호한 매크로 블록 타입을 움직임 예측?보상부(122)에 공급한다. 또한, 매크로 블록 타입이 인터에 관한 것으로, 그 매크로 블록 타입이 스킵이나 다이렉트 모드가 아닌 경우, 움직임 벡터 정보나 참조 프레임 정보 등도, 가역 복호부(112)에 있어서 별도 복호되어 움직임 예측?보상부(122)에 공급된다.
또한, 그 도시는 생략되어 있지만, 매크로 블록 타입이 인트라에 관한 것인 경우, 그 매크로 블록 타입은 인트라 예측부(121)에 공급된다. 이 경우, 인트라 예측 모드의 정보도, 가역 복호부(112)에서 별도 복호되어 인트라 예측부(121)에 공급된다.
VLC 테이블 전환부(141)는, 매크로 블록 타입에 대한 적어도 2종류의 VLC 테이블을 갖고 있다. VLC 테이블 전환부(141)는, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터에 따라서, 2종류의 매크로 블록 타입에 대한 VLC 테이블 중의 어느 하나를 선택한다. VLC 테이블 전환부(141)는, 선택한 매크로 블록 타입에 대한 VLC 테이블의 정보에, 코드 번호 할당부(142)로부터의 할당 정보를 부가하여, 매크로 블록 타입 복호부(132)에 공급한다.
코드 번호 할당부(142)는, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터에 따라서, 코드 번호 0에 소정의 매크로 블록 타입을 할당하고, 그 할당 정보를 VLC 테이블 전환부(141)에 공급한다.
[화상 복호 장치의 복호 처리의 설명]
다음으로, 도 39의 플로우차트를 참조하여, 화상 복호 장치(101)가 실행하는 복호 처리에 대해서 설명한다.
스텝 S131에서, 축적 버퍼(111)는 전송되어 온 화상을 축적한다. 스텝 S132에서, 가역 복호부(112)는, 축적 버퍼(111)로부터 공급되는 압축 화상을 복호하는 가역 복호 처리를 행한다. 상기 가역 복호 처리의 상세 내용은, 도 40을 참조해서 후술된다.
스텝 S132의 처리에 의해, 도 12의 가역 부호화부(66)에 의해 부호화된 I 픽쳐, P 픽쳐 및 B 픽쳐가 복호된다. 또한, 양자화 파라미터, 매크로 블록 타입, 그리고, 이때 부호화되어 있으면, 움직임 벡터 정보, 참조 프레임 정보, 인트라 예측 모드를 나타내는 정보 등도 복호된다.
스텝 S133에서, 역 양자화부(113)는 가역 복호부(112)에 의해 복호된 변환 계수를, 도 12의 양자화부(65)의 특성에 대응하는 특성으로 역 양자화한다. 스텝 S134에서 역 직교 변환부(114)는 역 양자화부(113)에 의해 역 양자화된 변환 계수를, 도 12의 직교 변환부(64)의 특성에 대응하는 특성으로 역 직교 변환한다. 이에 의해 도 12의 직교 변환부(64)의 입력[연산부(63)의 출력]에 대응하는 차분 정보가 복호된 것이 된다.
스텝 S135에서, 연산부(115)는, 후술하는 스텝 S141의 처리에서 선택되어, 스위치(123)를 통해 입력되는 예측 화상을 차분 정보와 가산한다. 이에 의해 원래 화상이 복호된다. 스텝 S136에서 디블록 필터(116)는, 연산부(115)로부터 출력된 화상을 필터링한다. 이에 의해 블록 왜곡이 제거된다. 스텝 S137에서 프레임 메모리(119)는, 필터링된 화상을 기억한다.
스텝 S138에서, 인트라 예측부(121) 또는 움직임 예측?보상부(122)는, 가역 복호부(112)로부터 공급되는 예측 모드 정보에 대응하여, 각각 화상의 예측 처리를 행한다.
즉, 매크로 블록 타입이 인트라에 관한 것일 경우, 매크로 블록 타입과 인트라 예측 모드를 나타내는 정보 등이 인트라 예측부(121)에 공급된다. 가역 복호부(112)로부터 매크로 블록 타입과 인트라 예측 모드가 공급된 경우, 인트라 예측부(121)는, 인트라 예측 모드의 인트라 예측 처리를 행한다.
매크로 블록 타입이 인터에 관한 것일 경우, 매크로 블록 타입과, 필요에 따라서 움직임 벡터 정보 및 참조 프레임 정보 등이 움직임 예측?보상부(122)에 공급된다. 가역 복호부(112)로부터 매크로 블록 타입 등이 공급된 경우, 움직임 예측?보상부(122)는, 매크로 블록 타입에 기초하여 인터 예측 모드의 움직임 예측?보상 처리를 행한다.
스텝 S138에서의 예측 처리의 상세 내용은, 도 42를 참조해서 후술한다. 이 처리에 의해, 인트라 예측부(121)에 의해 생성된 예측 화상 또는 움직임 예측?보상부(122)에 의해 생성된 예측 화상이 스위치(123)에 공급된다.
스텝 S139에서, 스위치(123)는 예측 화상을 선택한다. 즉, 인트라 예측부(121)에 의해 생성된 예측 화상, 또는 움직임 예측?보상부(122)에 의해 생성된 예측 화상이 공급된다. 따라서, 공급된 예측 화상이 선택되어 연산부(115)에 공급되고, 상술한 바와 같이, 스텝 S134에서 역 직교 변환부(114)의 출력과 가산된다.
스텝 S140에서, 화면 재배열 버퍼(117)는 재배열을 행한다. 즉 화상 부호화 장치(51)의 화면 재배열 버퍼(62)에 의해 부호화를 위해 재배열된 프레임의 순서가, 원래의 표시의 순서대로 재배열된다.
스텝 S141에서, D/A 변환부(118)는, 화면 재배열 버퍼(117)로부터의 화상을 D/A 변환한다. 이 화상이 도시하지 않는 디스플레이에 출력되어 화상이 표시된다.
[가역 복호 처리의 설명]
다음으로, 도 40의 플로우차트를 참조하여, 도 39의 스텝 S132의 가역 복호 처리를 설명한다.
축적 버퍼(111)에는 전송되어 온 화상을 축적된다. 가역 복호부(112)는, 스텝 S151에서, 축적 버퍼(111)로부터 공급되는 압축 화상을, 도 33의 스텝 S81의 부호화 방법에 대응하는 복호 방법으로 복호하고, 복호한 화상을 역 양자화부(113)에 공급한다.
가역 복호부(112)는, 스텝 S112에서, 매크로 블록 타입 이외의 다른 신택스 요소를, 도 33의 스텝 S82의 부호화 방법에 대응하는 복호 방법으로 복호한다. 특히, 양자화 파라미터는, 양자화 파라미터 복호부(131)에 의해 복호되어, 역 양자화부(113), VLC 테이블 전환부(141) 및 코드 번호 할당부(142)에 공급된다.
매크로 블록 타입 복호부(132)는, 스텝 S153에서 매크로 블록 타입의 복호 처리를 행한다. 상기 매크로 블록 타입의 복호 처리의 상세 내용은, 도 41을 참조해서 후술된다.
스텝 S153의 처리에 의해, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터에 따라서 선택된 VLC 테이블이 이용되어, 매크로 블록 타입의 정보가 복호된다.
[매크로 블록 타입의 복호 처리의 설명]
다음으로, 도 41의 플로우차트를 참조하여, 도 40의 스텝 S153의 매크로 블록 타입의 복호 처리에 대해서 설명한다.
양자화 파라미터 복호부(131)로부터, 양자화 파라미터(QP)가, VLC 테이블 전환부(141) 및 코드 번호 할당부(142)에 공급된다(도 40의 스텝 S152).
VLC 테이블 전환부(141) 및 코드 번호 할당부(142)는, 스텝 S161에서, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터(QP)를 취득한다.
스텝 S162에서, VLC 테이블 전환부(141)는, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터에 따라서, 예를 들면, 2종류의 테이블 중 어느 하나를, 매크로 블록 타입에 대한 VLC 테이블로서 선택한다. 즉, VLC 테이블 전환부(141)는, 소정의 임계값보다 낮은 양자화 파라미터(예를 들면, QP=22)에 대응하여, 도 17의 k=0인 테이블을 선택하고, 소정의 임계값보다 높은 양자화 파라미터(예를 들면, QP=37)에 대응하여, k=1인 테이블을 선택한다.
또한, 상기 소정의 임계값은, VLC 테이블 전환부(81)에 설정되는 것과 동일하며, 예를 들면, 도 43 이후에서 후술되는 VLC 테이블의 학습시에 구해진다.
스텝 S163에서, 코드 번호 할당부(142)는, 양자화 파라미터 복호부(131)로부터의 양자화 파라미터에 따라서, 코드 번호 "0"을 할당한다. 즉, 코드 번호 할당부(142)는, 소정의 임계값보다 낮은 양자화 파라미터에 대응하여, 인터 16×16 모드를 코드 번호 "0"에 할당한다. 또한, 코드 번호 할당부(142)는, 소정의 임계값보다 높은 양자화 파라미터에 대응하여, 스킵(또는 다이렉트) 모드를 코드 번호 "0"에 할당한다.
상기 할당 정보는, VLC 테이블 전환부(141)에 공급되어, 매크로 블록 타입 에 대한 VLC 테이블 정보와 함께 매크로 블록 타입 복호부(132)에 공급된다.
스텝 S164에서, 매크로 블록 타입 복호부(132)는, VLC 테이블 전환부(141)에 의해 선택된 VLC 테이블로 매크로 블록 타입을 복호한다.
복호된 매크로 블록 타입은, 도 40의 스텝 S152에서 부호화된 다른 신택스 요소와 함께, 도 39의 스텝 S138의 예측 처리에 이용된다.
[예측 처리의 설명]
다음으로, 도 42의 플로우차트를 참조하여, 도 39의 스텝 S138의 예측 처리를 설명한다.
가역 복호부(112)는, 스텝 S171에서, 도 41의 스텝 S164에서 복호된 매크로 블록 타입을 참조하여, 대상 블록이 인트라 부호화되어 있는지의 여부를 판정한다.
스텝 S171에서 대상 블록이 인트라 부호화되어 있다고 판정된 경우, 가역 복호부(112)는, 그 매크로 블록 타입과 함께, 도 40의 스텝 S152에서 복호된 인트라 예측 모드의 정보를 인트라 예측부(121)에 공급한다.
이에 대응하여, 인트라 예측부(121)는, 스텝 S172에서, 매크로 블록 타입 및 인트라 예측 모드의 정보를 취득하고, 스텝 S173에서 인트라 예측을 행한다.
즉, 처리 대상의 화상이 인트라 처리되는 화상인 경우, 필요한 화상이 프레임 메모리(119)로부터 판독되어, 스위치(120)를 통해 인트라 예측부(121)에 공급된다. 스텝 S173에서, 인트라 예측부(121)는, 스텝 S172에서 취득한 매크로 블록 타입으로, 인트라 예측 모드 정보에 따라서 인트라 예측하고, 예측 화상을 생성한다. 생성한 예측 화상은 스위치(123)에 출력된다.
한편, 스텝 S171에서, 인트라 부호화되지 않았다고 판정된 경우, 가역 복호부(112)는, 그 매크로 블록 타입을 움직임 예측?보상부(122)에 공급한다. 이때, 매크로 블록 타입이 나타내는 모드가 스킵(다이렉트) 모드가 아닌 한, 참조 프레임 정보 및 움직임 벡터 정보 등도 도 40의 스텝 S152에서 복호되므로, 움직임 예측?보상부(122)에 공급된다.
스텝 S175에서, 움직임 예측?보상부(122)는 통상적인 인터 예측을 행한다. 즉, 처리 대상의 화상이 인터 예측 처리되는 화상인 경우, 필요한 화상이 프레임 메모리(169)로부터 판독되어, 스위치(170)를 통해 움직임 예측?보상부(173)에 공급된다. 스텝 S175에서 움직임 예측?보상부(173)는, 스텝 S174에서 취득한 매크로 블록 타입에서의 인터 예측 모드의 움직임 예측을 하고, 예측 화상을 생성한다. 생성한 예측 화상은 스위치(123)에 출력된다.
이상과 같이, 화상 부호화 장치(51) 및 화상 복호 장치(101)에 있어서, 양자화 파라미터에 따라서 매크로 블록 타입의 VLC 테이블을 전환하도록 했기 때문에, 매크로 블록 타입에 대한 부호 길이를 짧게 할 수 있다. 따라서, 평균 부호 길이를 짧게 할 수 있다.
도 43은, 본 발명을 적용한 학습 장치의 일 실시 형태의 구성을 나타내고 있다. 상기 학습 장치(201)는, 트레이닝 화상 신호를 이용하여, 하프맨 부호에 기초해서 VLC 테이블을 생성하기 위한 학습 장치다.
또한, 트레이닝 화상 신호란, 필터 계수를 구하기 위한 테스트 화상이며, 예를 들면 www.vqeg.org에서 취득 가능한 화상 압축 부호화의 표준화에서 사용되는 표준 시퀀스를 이용해도 된다. 혹은, 또한, 각 어플리케이션에 따른 입력 화상을 이용해도 된다. 예를 들면, 입력이 카메라 신호인 경우에는, CCD나 CMOS 센서를 이용해서 촬영된 베이스밴드 신호를 이용해서 학습을 행해도 된다.
도 43의 학습 장치(201)는, A/D 변환부(61), 화면 재배열 버퍼(62), 연산부(63), 직교 변환부(64), 양자화부(65), 가역 부호화부(66), 축적 버퍼(67), 역 양자화부(68), 역 직교 변환부(69), 연산부(70), 디블록 필터(71), 프레임 메모리(72), 스위치(73), 인트라 예측부(74), 움직임 예측?보상부(75), 예측 화상 선택부(76) 및 레이트 제어부(77)를 구비하고 있는 점이, 도 12의 화상 부호화 장치(51)와 공통된다.
또한, 학습 장치(201)는, 이용되는 신호로서, 트레이닝용 화상 신호가 이용되는 점, 및 모드 테이블 전환부(78) 대신에 모드 테이블 산출부(211)를 구비하고 있는 점이 도 12의 화상 부호화 장치(51)와 상이하다.
즉, 학습 장치(201)에서는, 모드 테이블 산출부(211)의 제어하에, 레이트 제어부(77)에 의해 고정된 양자화 파라미터가 이용되어, 트레이닝 화상 신호가 부호화된다. 또한, 학습 장치(201)는, 도 12의 화상 부호화 장치(51)에 있어서, 매크로 블록 타입에 대한 부호화도, H. 264/AVC 방식의 규격에 기초해서 행해지는 것 외에, 기본적으로 동일한 부호화 처리를 행한다.
가역 부호화부(66)에는, 예측 화상 선택부(76)에 의한 예측 화상의 선택에 대응하여, 인트라 예측부(74) 또는 움직임 예측?보상부(75)로부터의 매크로 블록 타입의 정보가 공급되므로, 그 정보를 모드 테이블 산출부(211)에 공급한다.
모드 테이블 산출부(211)는, 레이트 제어부(77)를 제어하고, 고정된 양자화 파라미터로 양자화부(65)의 레이트를 제어시킨다. 모드 테이블 산출부(211)는, 양자화 파라미터의 정보와 가역 부호화부(66)로부터의 매크로 블록 타입의 정보를 이용하여, 양자화 파라미터마다 매크로 블록 타입의 출현 확률을 산출한다.
모드 테이블 산출부(211)는, 산출한 출현 확률에 따라서 하프맨 부호에 의해 각 양자화 파라미터에 대응한 VLC 테이블을 결정한다. 또한, 이때, 양자화 파라미터에 대한 임계값도 구해진다.
여기서, 하프맨 부호에 대해서 설명한다. 하프맨 부호는, 미리 사상의 확률을 알고 있을 때, 평균 부호 길이가 최소가 되도록 사상에 대한 비트 레이트의 할당 방법으로서 이용된다.
하프맨 부호에 의한 부호 구성법을 설명하면, 제1 스텝에서는, 각 정보원 기호에 대한 리프가 만들어진다. 각각의 리프에는, 정보원 부호의 발생 확률이 기록된다. 이하, 이것을 그 리프의 확률이라고 한다.
제2 스텝에서는, 확률이 가장 작은 2장의 리프에 대하여 1개의 절점이 만들어지고, 그 절점과 2장의 리프가 브랜치로 연결된다. 상기 2개의 브랜치의 한쪽에는 0, 다른 쪽에는 1이 할당된다. 또한, 2장의 리프의 확률의 합이 기록되고, 그 절점이 새롭게 리프라고 생각할 수 있다. 즉, 상기 절점에서 나오는 브랜치가 제거된 것으로 생각할 수 있다.
제3 스텝에서는, 리프가 1장밖에 남아 있지 않으면, 그것으로 부호 구성법이 종료가 된다. 그렇지 않으면, 처리는 제2 스텝으로 되돌아간다.
상기 구성법에 의해, 모든 정보원 기호에 대응한 리프를 갖는 부호의 나무를 만들 수 있다. 그 구체예에 대해서 도 44를 참조하여 설명한다.
도 44의 예에서는, 사상 A, B, C, D의 발생 확률이, 각각 0.6, 0.25, 0.1, 0.05인 경우의 하프맨 부호의 구성이 나타나 있다. 우선, 제1 스텝으로서, A, B, C, D에 대응하는 리프가 만들어진다. 도 44의 예에서, ( )로 나타내져 있는 것은 각 사상의 확률이다.
가장 확률이 작은 2장의 리프는 C와 D이므로, 제2 스텝으로서 절점 E가 만들어져, C 및 D가 절점 E에 연결된다. 이때 E의 확률은 0.1+0.05=0.15이다.
다음으로, 절점 E도 리프라고 생각하여, A, B, E에 대해 마찬가지의 처리를 행한다. 즉, 가장 작은 2장의 리프는 B와 E이므로, 이들의 절점 F가 만들어져 B 및 E가 절점 F에 연결된다. 이때 F의 확률은 0.25+0.15=0.4이다.
또한, 절점 F도 리프라고 생각하여, 남은 2장의 리프 A, F에 대해 마찬가지의 처리를 행한다. 즉, A와 F의 절점 G가 만들어져 A 및 F가 절점 G에 연결된다. 이때 G의 확률은 0.6+0.4=1.0이다. 여기서, 절점 G도 리프라고 생각했을 때에, 리프는 1개밖에 남아 있지 않으므로, 부호의 트리가 완성된다.
그리고, 이 부호의 트리로부터 얻어지는 부호어는, 사상 A, B, C, D의 각각에 대하여 0, 10, 110, 111이 되고, 평균 부호 길이는, 다음 식 (73)으로부터 1.55(비트)가 된다.
0.6*1 + 0.25*2 + 0.1*3 + 0.05*3 …… (73)
다음으로, 도 45의 플로우차트를 참조하여, 도 43의 학습 장치(201)의 학습 처리를 설명한다.
모드 테이블 산출부(211)는, 레이트 제어부(77)를 제어하고, 양자화 파라미터를 고정시킨다. 이에 대응하여 스텝 S201에서, 화상 부호화 장치(201)는, 트레이닝 화상 신호의 부호화를 행한다. 또한, 상기 부호화 처리는, 매크로 블록 타입에 대한 부호화도 H. 264/AVC 방식의 규격에 기초해서 행해지는 것, 및, 고정된 양자화 파라미터로 레이트 제어되는 것 외에, 도 18을 참조해서 상술한 부호화 처리와 기본적으로 동일한 처리다. 따라서, 상기 부호화 처리의 설명은 생략된다.
상기 부호화 처리에 의해, 가역 부호화부(66)에는, 예측 화상 선택부(76)에 의한 예측 화상의 선택에 대응하여, 인트라 예측부(74) 또는 움직임 예측?보상부(75)로부터의 매크로 블록 타입의 정보가 공급된다. 가역 부호화부(66)는, 그 정보를 모드 테이블 산출부(211)에 공급한다.
이 스텝 S201의 처리는, 다양한 각 양자화 파라미터에 대해 행해진다.
스텝 S202에서, 모드 테이블 산출부(211)는, 양자화 파라미터의 정보와 가역 부호화부(66)로부터의 매크로 블록 타입의 정보를 이용하여, 양자화 파라미터마다 매크로 블록 타입의 출현 확률을 산출한다.
스텝 S203에서, 모드 테이블 산출부(211)는, 산출한 출현 확률에 따라서, 도 44에서 상술한 하프맨 부호에 의해 각 양자화 파라미터에 대응한 VLC 테이블을 결정한다.
또한, 도 43에서는, 화상 부호화 장치와 일체화된 학습 장치(201)의 예를 나타냈지만, 적어도 모드 테이블 산출부(211)를 포함하는 컴퓨터로 학습 장치를 구성하여, 도 12의 화상 부호화 장치(51)에, 고정된 양자화 파라미터로 부호화 처리를 행하게 한다. 그리고, 학습 장치에 있어서, 화상 부호화 장치(51)로부터 온라인 또는 오프라인에서 취득된, 부호화 처리의 결과 얻어지는 매크로 블록 타입의 정보가 이용되어, 각 양자화 파라미터에 대응한 VLC 테이블이 결정되도록 할 수도 있다.
이상과 같이 해서 결정됨으로써 생성된 VLC 테이블이, 화상 부호화 장치(51)의 VLC 테이블 전환부(81)나, 화상 복호 장치(101)의 VLC 테이블 전환부(141)의 메모리 등에 기억되어 상술한 부호화에 이용된다.
또한, 상기 설명에서는, 예측 모드에 관한 정보 중 매크로 블록 타입을 이용하여 설명해 왔는데, 도 11에서 상술한 매크로 블록 타입에 대한 양자화 파라미터와 예측 모드 분포에 대한 경향은, 인트라 4×4 예측 모드에도 적합하다.
즉, 도 21을 참조해서 상술한 9개의 인트라 예측 모드에 대해서, 모드 0 내지 8 중 어느 하나의 정보를, 압축 화상의 헤더에 부가해서 블록마다 전송할 때, 보다 큰 번호의 모드를 보내면 모드 비트가 보다 커진다.
이 때문에, 보다 낮은 양자화 파라미터, 즉 보다 높은 비트 레이트에서는, 다소 모드 비트가 증대해도 예측 효율을 높이도록, 보다 큰 번호의 모드도 선택된다. 이에 대해 보다 높은 양자 파라미터, 즉 보다 낮은 비트 레이트에서는, 모드 비트를 증대시키지 않도록 보다 작은 번호의 모드가 선택되기 쉽다는 경향을 볼 수 있다.
즉, 높은 양자화 파라미터로 부호화 처리를 행하면, 보다 빠른 코드 번호가 할당되어 있는 Vertical, Horizontal, DC와 같은 인트라 예측 모드의 출현 확률이 높고, 그 외의 예측 모드의 출현 확률은 낮아지는 경향이 있다.
한편, 낮은 양자화 파라미터에 의해 부호화 처리를 행하면, 빠른 코드 번호에 대한 예측 모드의 출현 확률은 내려가고, 그 외의 출현 확률이 상승하는 경향으로 된다.
따라서, 인트라 예측 모드의 경우에 대해서도, 보다 높은 양자화 파라미터로 부호화되는 경우, k=0과 같은 VLC 테이블에 의한 부호가 이용된다. 이에 의해, 보다 출현 빈도가 높은 빠른 코드 번호에 대한 인트라 예측 모드에 대한 부호 길이를 짧게 하는 것이 가능하다. 한편, 보다 낮은 양자화 파라미터로 부호화되는 경우, k=1과 같은 VLC 테이블에 의한 부호가 이용된다. 이에 의해, 나름대로의 빈도로 출현하는, 코드 번호가 빠르지 않은 인트라 예측 모드에 대한 부호 길이를 짧게 하는 것이 가능하다.
또한, 인트라 예측 모드의 경우에 대해서도, 코드 번호 "1"의 할당을 양자화 파라미터에 따라서 전환하도록 해도 좋다.
이상과 같이, 본 발명은, 매크로 블록 타입의 부호화에 한하지 않고, 인트라 예측 모드의 부호화에도 적용할 수 있다. 물론, 인트라 4×4 예측 모드에 한하지 않고, 본 발명은 인트라 8×8 예측 모드, 인트라 16×16 예측 모드, 색차 신호의 인트라 예측 모드에도 적용할 수 있다.
또한, 상기 설명에서는, H. 264/AVC 방식을 기초로 설명해 왔지만, 본 발명은 이에 한하지 않고, 복수의 매크로 블록 타입 또는 인트라 예측 모드를 VLC에 의해 부호화하는 모든 부호화 장치 및 복호 장치에 대해서 적용 가능하다.
또한, 본 발명은, 예를 들면 MPEG, H. 26x 등과 같이 이산 코사인 변환 등의 직교 변환과 움직임 보상에 의해 압축된 화상 정보(비트스트림)를, 위성방송, 케이블 텔레비전, 인터넷 또는 휴대 전화기 등의 네트워크 미디어를 통해 수신할 때에 이용되는 화상 부호화 장치 및 화상 복호 장치에 적용할 수 있다. 또한, 본 발명은, 광, 자기 디스크 및 플래시 메모리와 같은 기억 미디어 상에서 처리할 때에 이용되는 화상 부호화 장치 및 화상 복호 장치에 적용할 수 있다. 또한, 본 발명은, 그들 화상 부호화 장치 및 화상 복호 장치 등에 포함되는 움직임 예측 보상 장치에도 적용할 수 있다.
상술한 일련의 처리는, 하드웨어에 의해 실행할 수도 있고, 소프트웨어에 의해 실행할 수도 있다. 일련의 처리를 소프트웨어에 의해 실행하는 경우에는, 그 소프트웨어를 구성하는 프로그램이 컴퓨터에 인스톨된다. 여기서, 컴퓨터에는, 전용 하드웨어에 내장되어 있는 컴퓨터나, 각종 프로그램을 인스톨함으로써 각종 기능을 실행하는 것이 가능한 범용의 퍼스널 컴퓨터 등이 포함된다.
도 46은, 상술한 일련의 처리를 프로그램에 의해 실행하는 컴퓨터의 하드웨어의 구성예를 도시하는 블록도다.
컴퓨터에 있어서, CPU(Central Processing Unit)(301), ROM(Read Only Memory)(302), RAM(Random Access Memory)(303)은, 버스(304)에 의해 서로 접속되어 있다.
버스(304)에는 또한, 입출력 인터페이스(305)가 접속되어 있다. 입출력 인터페이스(305)에는, 입력부(306), 출력부(307), 기억부(308), 통신부(309), 및 드라이브(310)가 접속되어 있다.
입력부(306)는, 키보드, 마우스, 마이크로폰 등으로 이루어진다. 출력부(307)는, 디스플레이, 스피커 등으로 이루어진다. 기억부(308)는, 하드디스크나 불휘발성의 메모리 등으로 이루어진다. 통신부(309)는, 네트워크 인터페이스 등으로 이루어진다. 드라이브(310)는, 자기 디스크, 광 디스크, 광 자기 디스크, 또는 반도체 메모리 등의 리무버블 미디어(311)를 구동한다.
이상과 같이 구성되는 컴퓨터에서는, CPU(301)가, 예를 들면 기억부(308)에 기억되어 있는 프로그램을 입출력 인터페이스(305) 및 버스(304)를 통해 RAM(303)에 로드해서 실행함으로써, 상술한 일련의 처리가 행해진다.
컴퓨터[CPU(301)]가 실행하는 프로그램은, 예를 들면 패키지 미디어 등으로서의 리무버블 미디어(311)에 기록해서 제공할 수 있다. 또한, 프로그램은, 로컬 에리어 네트워크, 인터넷, 디지털 방송과 같은 유선 또는 무선의 전송 매체를 통해 제공할 수 있다.
컴퓨터에서는, 프로그램은 리무버블 미디어(311)를 드라이브(310)에 장착함으로써, 입출력 인터페이스(305)를 통해 기억부(308)에 인스톨할 수 있다. 또한, 프로그램은, 유선 또는 무선의 전송 매체를 통해 통신부(309)에서 수신하여, 기억부(308)에 인스톨할 수 있다. 그 밖의 프로그램은, ROM(302)이나 기억부(308)에 미리 인스톨해 둘 수 있다.
또한, 컴퓨터가 실행하는 프로그램은, 본 명세서에서 설명하는 순서에 따라 시계열로 처리가 행해지는 프로그램이어도 좋고, 병렬로 혹은 호출이 행해졌을 때 등의 필요한 타이밍에서 처리가 행해지는 프로그램이어도 좋다.
본 발명의 실시 형태는, 상술한 실시 형태에 한정되는 것은 아니며, 본 발명의 요지를 일탈하지 않는 범위에서 다양한 변경이 가능하다.
51 : 화상 부호화 장치 66 : 가역 부호화부
74 : 인트라 예측부 75 : 움직임 예측?보상부
77 : 레이트 제어부 78 : 모드 테이블 전환부
81 : VLC 테이블 전환부 82 : 코드 번호 할당부
101 : 화상 복호 장치 112 : 가역 복호부
121 : 인트라 예측부 122 : 움직임 예측?보상부
124 : 모드 테이블 전환부 131 : 양자화 파라미터 복호부
132 : 매크로 블록 타입 복호부 141 : VLC 테이블 전환부
142 : 코드 번호 할당부 201 : 학습 장치
211 : 모드 테이블 산출부

Claims (20)

  1. 화상 처리 장치로서,
    복호 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 복호하는 양자화 파라미터 복호 수단과,
    상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 복호 방법을 전환하는 전환 수단과,
    상기 전환 수단에 의해 전환된 상기 복호 방법으로, 상기 예측 모드에 관한 정보를 복호하는 예측 모드 복호 수단
    을 포함하는, 화상 처리 장치.
  2. 제1항에 있어서,
    상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 VLC(Variable Length Coding) 테이블을 전환함으로써 상기 복호 방법을 전환하는, 화상 처리 장치.
  3. 제2항에 있어서,
    상기 예측 모드에 관한 정보는, 매크로 블록 타입의 정보인, 화상 처리 장치.
  4. 제2항에 있어서,
    상기 예측 모드에 관한 정보는, 인트라 예측 모드의 정보인, 화상 처리 장치.
  5. 제2항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 코드 번호가 작은 사상(事象)에 대한 비트 길이가 짧은 테이블로 전환하는, 화상 처리 장치.
  6. 제2항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 코드 번호가 증대해도 비트 길이의 증대가 완만한 테이블로 전환하는, 화상 처리 장치.
  7. 제2항에 있어서,
    상기 부호화 수단은, 상기 VLC 테이블로서 골롬 부호를 이용하는, 화상 처리 장치.
  8. 제2항에 있어서,
    상기 부호화 수단은, 상기 VLC 테이블로서 하프맨 부호를 이용하는, 화상 처리 장치.
  9. 제1항에 있어서,
    상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 코드 번호의 할당을 전환함으로써 상기 복호 방법을 전환하는, 화상 처리 장치.
  10. 제9항에 있어서,
    상기 예측 모드에 관한 정보는, 인터 매크로 블록 타입의 정보인, 화상 처리 장치.
  11. 제10항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 스킵 또는 다이렉트 모드의 할당을 최소의 코드 번호로 전환하는, 화상 처리 장치.
  12. 제10항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 인터 16×16 예측 모드의 할당을 최소의 코드 번호로 전환하는, 화상 처리 장치.
  13. 제9항에 있어서,
    상기 예측 모드에 관한 정보는, 인트라 예측 모드의 정보인, 화상 처리 장치.
  14. 화상 처리 방법으로서,
    화상 처리 장치가,
    복호 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 복호하고,
    상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 복호 방법을 전환하고,
    전환된 상기 복호 방법으로 상기 예측 모드에 관한 정보를 복호하는 스텝
    을 포함하는, 화상 처리 방법.
  15. 화상 처리 장치로서,
    부호화 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 취득하는 양자화 파라미터 취득 수단과,
    상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 부호화 방법을 전환하는 전환 수단과,
    상기 전환 수단에 의해 전환된 상기 부호화 방법으로 상기 예측 모드에 관한 정보를 부호화하는 부호화 수단
    을 포함하는, 화상 처리 장치.
  16. 제15항에 있어서,
    상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 VLC(Variable Length Coding) 테이블을 전환함으로써 상기 부호화 방법을 전환하는, 화상 처리 장치.
  17. 제16항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 큰 양자화 파라미터의 경우, 코드 번호가 작은 사상에 대한 비트 길이가 짧은 테이블로 전환하는, 화상 처리 장치.
  18. 제16항에 있어서,
    상기 전환 수단은, 소정의 임계값보다 값이 작은 양자화 파라미터의 경우, 코드 번호가 증대해도 비트 길이의 증대가 완만한 테이블로 전환하는, 화상 처리 장치.
  19. 제15항에 있어서,
    상기 전환 수단은, 상기 양자화 파라미터에 따라서, 상기 예측 모드에 관한 정보에 대한 코드 번호의 할당을 전환함으로써 상기 부호화 방법을 전환하는, 화상 처리 장치.
  20. 화상 처리 방법으로서,
    화상 처리 장치가,
    부호화 처리의 대상이 되는 대상 블록에 있어서의 양자화 파라미터를 취득하고,
    상기 양자화 파라미터에 따라서, 상기 대상 블록에 대한 예측 모드에 관한 정보의 부호화 방법을 전환하고,
    전환된 상기 부호화 방법으로 상기 예측 모드에 관한 정보를 부호화하는 스텝
    을 포함하는, 화상 처리 방법.
KR1020127000633A 2009-07-17 2010-07-09 화상 처리 장치 및 방법 KR20120051639A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009168499A JP2011024066A (ja) 2009-07-17 2009-07-17 画像処理装置および方法
JPJP-P-2009-168499 2009-07-17

Publications (1)

Publication Number Publication Date
KR20120051639A true KR20120051639A (ko) 2012-05-22

Family

ID=43449328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000633A KR20120051639A (ko) 2009-07-17 2010-07-09 화상 처리 장치 및 방법

Country Status (8)

Country Link
US (1) US20120128064A1 (ko)
EP (1) EP2456205A1 (ko)
JP (1) JP2011024066A (ko)
KR (1) KR20120051639A (ko)
CN (1) CN102474618A (ko)
BR (1) BR112012000618A2 (ko)
RU (1) RU2012100264A (ko)
WO (1) WO2011007719A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101824241B1 (ko) * 2011-01-11 2018-03-14 에스케이 텔레콤주식회사 인트라 부가정보 부호화/복호화 장치 및 방법
US20140185948A1 (en) * 2011-05-31 2014-07-03 Humax Co., Ltd. Method for storing motion prediction-related information in inter prediction method, and method for obtaining motion prediction-related information in inter prediction method
JP5389298B2 (ja) * 2011-06-30 2014-01-15 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
JP5768565B2 (ja) * 2011-07-28 2015-08-26 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム
US20130188691A1 (en) 2012-01-20 2013-07-25 Sony Corporation Quantization matrix design for hevc standard
US11039138B1 (en) * 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
WO2013162283A1 (ko) * 2012-04-24 2013-10-31 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US20150326859A1 (en) * 2012-06-28 2015-11-12 Nec Corporation Video quantization-parameter encoding method, video quantization-parameter decoding method, device, and program
US10904551B2 (en) * 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
CN105684409B (zh) 2013-10-25 2019-08-13 微软技术许可有限责任公司 在视频和图像编码和解码中使用散列值来表示各块
CN105393537B (zh) 2014-03-04 2019-08-27 微软技术许可有限责任公司 用于基于散列的块匹配的散列表构建和可用性检查
US10681372B2 (en) * 2014-06-23 2020-06-09 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
MX2017004210A (es) 2014-09-30 2017-11-15 Microsoft Technology Licensing Llc Decisiones de codificador basadas en hash para codificar video.
GB2533155B (en) * 2014-12-12 2021-09-15 Advanced Risc Mach Ltd Video data processing system
KR20170007665A (ko) * 2015-07-10 2017-01-19 삼성전자주식회사 스킵 모드 정보를 이용한 레이트 조절 인코딩 방법 및 그에 따른 인코딩 장치
JP6727011B2 (ja) * 2016-04-14 2020-07-22 キヤノン株式会社 画像符号化装置及びその制御方法
WO2018030293A1 (ja) * 2016-08-10 2018-02-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
CN106341689B (zh) * 2016-09-07 2019-04-23 中山大学 一种avs2量化模块和反量化模块的优化方法及系统
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
US10506258B2 (en) * 2017-07-13 2019-12-10 Google Llc Coding video syntax elements using a context tree
US10848775B2 (en) 2018-11-02 2020-11-24 Fungible, Inc. Memory layout for JPEG accelerator
US10827192B2 (en) * 2018-11-02 2020-11-03 Fungible, Inc. Work allocation for JPEG accelerator
US10827191B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Parallel coding of syntax elements for JPEG accelerator
US10931958B2 (en) 2018-11-02 2021-02-23 Fungible, Inc. JPEG accelerator using last-non-zero (LNZ) syntax element
WO2021032113A1 (en) 2019-08-19 2021-02-25 Beijing Bytedance Network Technology Co., Ltd. Updating for counter-based intra prediction mode
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
US12020461B2 (en) * 2021-03-10 2024-06-25 Tencent America LLC Method and apparatus for Haar-based point cloud coding

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2794951B2 (ja) * 1990-12-17 1998-09-10 村田機械株式会社 Mr符号の復号化方法
US5995148A (en) * 1997-02-14 1999-11-30 At&T Corp Video coder having scalar dependent variable length coder
SE522261C2 (sv) * 2000-05-10 2004-01-27 Global Ip Sound Ab Kodning och avkodning av en digital signal
US6633242B2 (en) * 2001-02-08 2003-10-14 Sun Microsystems, Inc. Entropy coding using adaptable prefix codes
JP4492777B2 (ja) * 2001-08-28 2010-06-30 日本電気株式会社 動画像符号化装置
JP4163618B2 (ja) * 2001-08-28 2008-10-08 株式会社エヌ・ティ・ティ・ドコモ 動画像符号化伝送システム、動画像符号化伝送方法、これらに用いて好適な符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
CN101064843B (zh) * 2001-11-22 2010-08-18 松下电器产业株式会社 可变长度编码方法
JP4100552B2 (ja) * 2001-11-22 2008-06-11 松下電器産業株式会社 復号化方法
CN1620816A (zh) * 2002-01-22 2005-05-25 诺基亚有限公司 图像/视频编码器和/或解码器中的编码变换系数
JP2004007563A (ja) * 2002-04-19 2004-01-08 Matsushita Electric Ind Co Ltd 動画像符号化方法および動画像復号化方法
EP1478190B1 (en) * 2002-04-26 2013-01-02 NTT DoCoMo, Inc. Image encoding device, image encoding method, and image encoding program
US7170937B2 (en) * 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
JP2004135252A (ja) * 2002-10-09 2004-04-30 Sony Corp 符号化処理方法、符号化装置及び復号化装置
US20090198500A1 (en) * 2007-08-24 2009-08-06 Qualcomm Incorporated Temporal masking in audio coding based on spectral dynamics in frequency sub-bands

Also Published As

Publication number Publication date
RU2012100264A (ru) 2013-07-20
JP2011024066A (ja) 2011-02-03
CN102474618A (zh) 2012-05-23
WO2011007719A1 (ja) 2011-01-20
EP2456205A1 (en) 2012-05-23
US20120128064A1 (en) 2012-05-24
BR112012000618A2 (pt) 2019-09-24

Similar Documents

Publication Publication Date Title
JP7171646B2 (ja) ビデオ符号化での分割ブロック符号化方法、ビデオ復号化での分割ブロック復号化方法及びこれを実現する記録媒体
KR20120051639A (ko) 화상 처리 장치 및 방법
KR102292788B1 (ko) 비디오 코딩을 위한 다중-유형-트리 프레임워크
US20200396463A1 (en) Intra prediction in video coding
US9838718B2 (en) Secondary boundary filtering for video coding
CA2812307C (en) Intra smoothing filter for video coding
CN109547790B (zh) 用于在高效率视频编解码中处理分区模式的设备和方法
US11831896B2 (en) Image coding device, image decoding device, image coding method, and image decoding method
EP2755388B1 (en) Method, device, and program for encoding and decoding image
US7711196B2 (en) Apparatus and method for generating coded block pattern for alpha channel image and alpha channel image encoding/decoding apparatus and method using the same
WO2017059044A1 (en) Delta qp for quantization of rectangular transform units, short distance intra prediction (sdip) based video coding
WO2010131601A1 (ja) 画像処理装置および方法、並びにプログラム
JP2010035137A (ja) 画像処理装置および方法、並びにプログラム
EP2767086A1 (en) Most probable transform for intra prediction coding
KR102575827B1 (ko) 비디오 코딩에서 분할 블록의 부호화 방법
WO2010123055A1 (ja) 画像処理装置および方法
WO2010123057A1 (ja) 画像処理装置および方法
WO2016194380A1 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体
JP7396883B2 (ja) 符号化装置、復号装置、及びプログラム
KR20200008537A (ko) 비디오 복호화에서의 분할 블록 복호화 방법 및 이를 구현하는 기록매체
Mundgemane Nagaraj MULTI-STAGE PREDICTION SCHEME FOR SCREEN CONTENT BASED ON HEVC

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid