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

화상 처리 장치 및 방법 Download PDF

Info

Publication number
KR20190008203A
KR20190008203A KR1020187031808A KR20187031808A KR20190008203A KR 20190008203 A KR20190008203 A KR 20190008203A KR 1020187031808 A KR1020187031808 A KR 1020187031808A KR 20187031808 A KR20187031808 A KR 20187031808A KR 20190008203 A KR20190008203 A KR 20190008203A
Authority
KR
South Korea
Prior art keywords
matrix
unit
conversion
inverse
image
Prior art date
Application number
KR1020187031808A
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 KR1020227013436A priority Critical patent/KR20220053702A/ko
Publication of KR20190008203A publication Critical patent/KR20190008203A/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/18Methods 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 a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/547Motion estimation performed in a transform domain
    • 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

Abstract

본 개시는, 부호화·복호의 부하 증대를 억제할 수 있도록 하는 화상 처리 장치 및 방법에 관한 것이다. 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립한다. 또는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립한다. 본 개시는, 예를 들어 화상 처리 장치, 화상 부호화 장치 또는 화상 복호 장치 등에 적용할 수 있다.

Description

화상 처리 장치 및 방법
본 개시는, 화상 처리 장치 및 방법에 관한 것으로, 특히, 부호화·복호의 부하 증대를 억제할 수 있도록 한 화상 처리 장치 및 방법에 관한 것이다.
종래, 화상 부호화에 있어서, 화상과 그 예측 화상의 차분인 예측 잔차에 대해서 프라이머리 변환을 행한 후에, 또한 에너지 컴팩션을 높이기(저역으로 변환 계수를 집중시키기) 위해서, 변환 블록 내의 4×4 서브블록마다 세컨더리 변환을 적용하는 것이 개시되어 있다(예를 들어, 비특허문헌 1 참조). 그 비특허문헌 1에는, 어느 세컨더리 변환을 적용할지를 나타내는 세컨더리 변환 식별자를 CU 단위에서 시그널하는 것도 개시되어 있다.
또한, 인코더에 있어서, RDO(Rate-Distortion Optimization)에 기초하여, 비특허문헌 1에 기재된 CU 단위에 대하여 어느 세컨더리 변환을 적용할지 결정하는 것은, 계산 복잡도가 커서, 변환 블록 단위에서의 세컨더리 변환을 적용할지 여부를 나타내는 세컨더리 변환 플래그를 시그널하는 것이 개시되어 있다(예를 들어, 비특허문헌 2 참조). 그 비특허문헌 2에는, 어느 세컨더리 변환을 적용할지를 나타내는 세컨더리 변환 식별자를, 프라이머리 변환 식별자 및 인트라 예측 모드에 기초하여 도출하는 것도 개시되어 있다.
Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer Ohm, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 2", JVET-B1001_ v3, Joint Video Exploration Team(JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016 X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, R.Joshi, "TU-level non-separable secondary transform", JVET-B0059, Joint Video Exploration Team (JVET) of ITU-T SG16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016
비특허문헌 1 및 비특허문헌 2 중 어느 하나에 기재된 방법에 있어서도, 세컨더리 변환의 각 행렬의 요소의 정밀도는, 9비트(bit) 정밀도에 근사하고 있다. 그러나, 이 정밀도로 세컨더리 변환이나 역 세컨더리 변환을 실행하면, 세컨더리 변환이나 역 세컨더리 변환 후의 각 신호의 다이내믹 레인지가 16비트를 초과할 가능성이 있고, 세컨더리 변환이나 역 세컨더리 변환 후의 연산 결과를 일시적으로 저장하는 중간 버퍼로서 필요한 용량이 증대될 우려가 있었다.
본 개시는, 이와 같은 상황을 감안하여 이루어진 것으로, 부호화·복호의 부하 증대를 억제할 수 있도록 하는 것이다.
본 기술의 제1 측면의 화상 처리 장치는, 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는 화상 처리 장치이다.
상기 예측 잔차에 대한 변환 처리인 프라이머리 변환을 행하는 프라이머리 변환부와, 상기 프라이머리 변환부에 의해 상기 예측 잔차가 상기 프라이머리 변환되어 얻어지는 프라이머리 변환 계수에 대한 변환 처리인 세컨더리 변환을 행하는 세컨더리 변환부를 더 구비하고, 상기 클립 처리부는, 상기 세컨더리 변환부에 의해 상기 프라이머리 변환 계수가 상기 세컨더리 변환되어 얻어지는 세컨더리 변환 계수를 클립하도록 구성되도록 할 수 있다.
상기 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와, 상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와, 상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하는 스케일링부와, 스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부를 더 구비하며, 상기 클립 처리부는, 상기 스케일링부에 의해 스케일링된 상기 1차원의 벡터를 클립하도록 구성되고, 상기 행렬화부는, 상기 클립 처리부에 의해 클립된 상기 1차원의 벡터를 행렬화하게 구성되도록 할 수 있다.
본 기술의 제1 측면의 화상 처리 방법은, 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 화상 처리 방법이다.
본 기술의 제2 측면의 화상 처리 장치는, 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는 화상 처리 장치이다.
본 기술의 제2 측면의 화상 처리 방법은, 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 화상 처리 방법이다.
본 기술의 제3 측면의 화상 처리 장치는, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는 변환부를 구비하는 화상 처리 장치이다.
상기 직교 행렬 Ti는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi·Pi)으로 이루어지도록 할 수 있다.
상기 변환부는, 상기 제i 직교 행렬 Ti와 제i-1(i>0)의 행 벡터 Xi -1의 전치 행렬 Xi-1 T와의 행렬 곱 Xi를 도출할 수 있다.
상기 직교 행렬 Fi는, 대각 성분으로 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소(疎)행렬이도록 할 수 있다.
상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스가 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬이도록 할 수 있다.
상기 N은 4 또는 6이도록 할 수 있다.
본 기술의 제3 측면의 화상 처리 방법은, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는 화상 처리 방법이다.
본 기술의 제4 측면의 화상 처리 장치는, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는 역변환부를 구비하는 화상 처리 장치이다.
상기 직교 행렬 IR은, 상기 직교 행렬 Ti의 전치 행렬 Ti T에 의해 구성되고, 상기 직교 행렬 Ti T는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi의 전치 행렬 Fi T와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi T·Pi)으로 이루어지도록 할 수 있다.
상기 역변환부는, 상기 제i 직교 행렬 Ti의 전치 행렬 Ti T와 제i-1(i>0)의 행 벡터 Xi -1의 전치 행렬 Xi -1 T의 행렬 곱 Xi를 도출할 수 있다.
상기 직교 행렬 Fi는, 대각 성분으로 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬이도록 할 수 있다.
상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스가 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬이도록 할 수 있다.
상기 N은 4 또는 6이도록 할 수 있다.
본 기술의 제4 측면의 화상 처리 방법은, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는 화상 처리 방법이다.
본 기술의 제1 측면의 화상 처리 장치 및 방법에 있어서는, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수가, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립된다.
본 기술의 제2 측면의 화상 처리 장치 및 방법에 있어서는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수가, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립된다.
본 기술의 제3 측면의 화상 처리 장치 및 방법에 있어서는, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱이 도출됨으로써, 상기 행 벡터 X0이 요소 수 2N점의 행 벡터 Xn으로 변환된다.
본 기술의 제4 측면의 화상 처리 장치 및 방법에 있어서는, 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱이 도출됨으로써, 상기 행 벡터 X0이 요소 수 2N점의 행 벡터 Xn으로 역변환된다.
본 개시에 의하면, 화상을 처리할 수 있다. 특히, 부호화·복호의 부하의 증대를 억제할 수 있다.
도 1은, CU에 대한 재귀적인 블록 분할의 개요를 설명하기 위한 설명도이다.
도 2는, 도 1에 도시한 CU로의 PU의 설정에 대하여 설명하기 위한 설명도이다.
도 3은, 도 1에 도시한 CU로의 TU의 설정에 대하여 설명하기 위한 설명도이다.
도 4는, CU/PU의 주사순에 대하여 설명하기 위한 설명도이다.
도 5는, 세컨더리 변환의 행렬의 예를 나타내는 도면이다.
도 6은, 세컨더리 변환에서의 다이내믹 레인지의 예를 나타내는 도면이다.
도 7은, 화상 부호화 장치의 주된 구성예를 나타내는 블록도이다.
도 8은, 변환부의 주된 구성예를 나타내는 블록도이다.
도 9는, 화상 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 10은, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 11은, 화상 복호 장치의 주된 구성예를 나타내는 블록도이다.
도 12는, 역변환부의 주된 구성예를 나타내는 블록도이다.
도 13은, 화상 복호 처리의 흐름의 예를 설명하는 흐름도이다.
도 14는, 역변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 15는, 변환부의 주된 구성예를 나타내는 블록도이다.
도 16은, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 17은, 역변환부의 주된 구성예를 나타내는 블록도이다.
도 18은, 역변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 19는, 하이퍼큐브 기븐스 변환의 모습의 예를 나타내는 도면이다.
도 20은, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 21은, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 22는, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 23은, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 24는, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 25는, 세컨더리 변환에서의 다이내믹 레인지의 예를 나타내는 도면이다.
도 26은, 변환부의 주된 구성예를 나타내는 블록도이다.
도 27은, 행렬 연산부의 주된 구성예를 나타내는 블록도이다.
도 28은, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 29는, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 30은, 역변환부의 주된 구성예를 나타내는 블록도이다.
도 31은, 행렬 연산부의 주된 구성예를 나타내는 블록도이다.
도 32는, 역변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 33은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 34는, 하이퍼큐브 기븐스 변환의 행렬 분해에 대하여 설명하는 도면이다.
도 35는, 행렬 연산부의 주된 구성예를 나타내는 블록도이다.
도 36은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 37은, 행렬 연산부의 주된 구성예를 나타내는 블록도이다.
도 38은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 39는, 치환 δi 의사 코드의 예를 나타내는 도면이다.
도 40은, 32점 HyGT의 경우의 치환 δi의 예를 나타내는 도면이다.
도 41은, 32점 HyGT의 경우의 치환 δi의 모습의 예를 설명하는 도면이다.
도 42는, 32점 HyGT의 경우의 치환 δi의 모습의 예를 설명하는 도면이다.
도 43은, 64점 HyGT의 경우의 치환 δi의 예를 나타내는 도면이다.
도 44는, 2N점 HyGT부의 주된 구성예를 나타내는 블록도이다.
도 45는, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 46은, 2N점 역 HyGT부의 주된 구성예를 나타내는 블록도이다.
도 47은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 48은, 세퍼러블 64점 HyGT와 비 세퍼러블 64점 HyGT의 비교 결과를 설명하는 도면이다.
도 49는, 블록 분할의 모습의 예를 설명하는 도면이다.
도 50은, 세컨더리 변환부의 주된 구성예를 나타내는 블록도이다.
도 51은, 64점 HyGT부의 주된 구성예를 나타내는 블록도이다.
도 52는, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 53은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 54는, 역 세컨더리 변환부의 주된 구성예를 나타내는 블록도이다.
도 55는, 64점 역 HyGT부의 주된 구성예를 나타내는 블록도이다.
도 56은, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 57은, 행렬 연산 처리의 흐름의 예를 설명하는 흐름도이다.
도 58은, 세컨더리 변환의 실행 모습의 예를 설명하는 도면이다.
도 59는, 세컨더리 변환의 실행 모습의 예를 설명하는 도면이다.
도 60은, 세컨더리 변환의 실행 모습의 예를 설명하는 도면이다.
도 61은, 세컨더리 변환의 실행 모습의 예를 설명하는 도면이다.
도 62는, 세컨더리 변환의 실행 모습의 예를 설명하는 도면이다.
도 63은, 시퀀스 파라미터 세트의 신택스의 예를 나타내는 도면이다.
도 64는, Residual Coding의 신택스의 예를 나타내는 도면이다.
도 65는, 시퀀스 파라미터 세트의 신택스의 예를 나타내는 도면이다.
도 66은, Residual Coding의 신택스의 예를 나타내는 도면이다.
도 67은, 변환부의 주된 구성예를 나타내는 블록도이다.
도 68은, SDT부의 주된 구성예를 나타내는 블록도이다.
도 69는, 템플릿 매칭의 모습의 예를 설명하는 도면이다.
도 70은, 템플릿 매칭의 모습의 예를 설명하는 도면이다.
도 71은, 변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 72는, SDT 처리의 흐름의 예를 설명하는 흐름도이다.
도 73은, 학습 샘플 도출 처리의 흐름의 예를 설명하는 흐름도이다.
도 74는, 학습 샘플 도출 처리의 흐름의 예를 설명하는, 도 73에 이어지는 흐름도이다.
도 75는, 변환 행렬 R 도출 처리의 흐름의 예를 설명하는 흐름도이다.
도 76은, 역변환부의 주된 구성예를 나타내는 블록도이다.
도 77은, 역 SDT부의 주된 구성예를 나타내는 블록도이다.
도 78은, 역변환 처리의 흐름의 예를 설명하는 흐름도이다.
도 79는, 역 SDT 처리의 흐름의 예를 설명하는 흐름도이다.
도 80은, 변환 행렬 IR 도출 처리의 흐름의 예를 설명하는 흐름도이다.
도 81은, 역 SDT부의 주된 구성예를 나타내는 블록도이다.
도 82는, 역 SDT 처리의 흐름의 예를 설명하는 흐름도이다.
도 83은, 컴퓨터의 주된 구성예를 나타내는 블록도이다.
도 84는, 텔레비전 장치의 개략적인 구성의 일례를 나타내는 블록도이다.
도 85는, 휴대 전화기의 개략적인 구성의 일례를 나타내는 블록도이다.
도 86은, 기록 재생 장치의 개략적인 구성의 일례를 나타내는 블록도이다.
도 87은, 촬상 장치의 개략적인 구성의 일례를 나타내는 블록도이다.
도 88은, 비디오 세트의 개략적인 구성의 일례를 나타내는 블록도이다.
도 89는, 비디오 프로세서의 개략적인 구성의 일례를 나타내는 블록도이다.
도 90은, 비디오 프로세서의 개략적인 구성의 다른 예를 나타내는 블록도이다.
도 91은, 네트워크 시스템의 개략적인 구성의 일례를 나타내는 블록도이다.
이하, 본 개시를 실시하기 위한 형태(이하 '실시 형태'라 함)에 대하여 설명한다. 또한, 설명은 이하의 순서로 행한다.
1. 제1 실시 형태(변환 계수의 클립)
2. 제2 실시 형태(놈 정규화 시의 비트 시프트량 제어)
3. 제3 실시 형태(행렬 연산의 분해)
4. 제4 실시 형태(16점 HyGT의 다른 표현)
5. 제5 실시 형태(2N점 HyGT)
6. 제6 실시 형태(64점 HyGT)
7. 제7 실시 형태(블록 분할)
8. 제8 실시 형태(서브블록의 선택)
9. 제9 실시 형태(SDT로의 적용)
10. 제10 실시 형태(기타)
<1. 제1 실시 형태>
<블록 분할>
MPEG2(Moving Picture Experts Group 2(ISO/IEC13818-2))나 MPEG-4 Part10(Advanced Video Coding, 이하 'AVC'라 기재함) 등의 종래의 화상 부호화 방식에서는, 부호화 처리는, 매크로 블록이라 불리는 처리 단위로 실행된다. 매크로 블록은, 16x16 화소의 균일한 사이즈를 갖는 블록이다. 이에 반하여, HEVC(High Efficiency Video Coding)에서는, 부호화 처리는, CU(Coding Unit)라 불리는 처리 단위(부호화 단위)로 실행된다. CU는, 최대 부호화 단위인 LCU(Largest Coding Unit)를 재귀적으로 분할함으로써 형성되는, 가변적인 사이즈를 갖는 블록이다. 선택 가능한 CU의 최대 사이즈는 64x64 화소이다. 선택 가능한 CU의 최소 사이즈는 8x8 화소이다. 최소 사이즈의 CU는, SCU(Smallest Coding Unit)라고 불린다. 또한, CU의 최대 사이즈는 64x64 화소로 한정되지 않고, 더 큰 128x128 화소, 256x256 화소 등의 블록 사이즈로 해도 된다.
이와 같이, 가변적인 사이즈를 갖는 CU가 채용되는 결과, HEVC에서는, 화상의 내용에 따라 화질 및 부호화 효율을 적응적으로 조정하는 것이 가능하다. 예측 부호화를 위한 예측 처리는, PU(Prediction Unit)라 불리는 처리 단위(예측 단위)로 실행된다. PU는, CU를 몇 가지의 분할 패턴 중 1개로 분할함으로써 형성된다. 또한, PU는, 휘도(Y) 및 색차(Cb, Cr)마다의 PB(Prediction Block)라 불리는 처리 단위(예측 블록)로 구성된다. 또한, 직교 변환 처리는, TU(Transform Unit)라 불리는 처리 단위(변환 단위)로 실행된다. TU는, CU 또는 PU를 어느 깊이까지 분할함으로써 형성된다. 또한, TU는, 휘도(Y) 및 색차(Cb, Cr)마다의 TB(Transform Block)라 불리는 처리 단위(변환 블록)로 구성된다.
<재귀적인 블록의 분할>
도 1은, HEVC에 있어서의 CU에 대한 재귀적인 블록 분할의 개요를 설명하기 위한 설명도이다. CU의 블록 분할은, 하나의 블록의 4(=2x2)개의 서브블록으로의 분할을 재귀적으로 반복함으로써 행해지고, 결과적으로 4분목(Quad-Tree) 형상의 트리구조가 형성된다. 하나의 4분목의 전체를 CTB(Coding Tree Block)라 하며, CTB에 대응하는 논리적인 단위를 CTU(Coding Tree Unit)라 한다.
도 1의 상부에는, 일례로서, 64x64 화소의 사이즈를 갖는 CU인 C01이 도시되어 있다. C01의 분할의 깊이는, 제로와 동등하다. 이것은, C01이 CTU의 루트이며 LCU에 상당함을 의미한다. LCU 사이즈는, SPS(Sequence Parameter Set) 또는 PPS(Picture Parameter Set)에 있어서 부호화되는 파라미터에 의해 지정될 수 있다. CU인 C02는, C01로부터 분할되는 4개의 CU 중 1개이며, 32x32 화소의 사이즈를 갖는다. C02의 분할의 깊이는 1과 동등하다. CU인 C03은, C02로부터 분할되는 4개의 CU 중 1개이며, 16x16 화소의 사이즈를 갖는다. C03의 분할의 깊이는 2와 동등하다. CU인 C04는, C03으로부터 분할되는 4개의 CU 중 1개이며, 8x8 화소의 사이즈를 갖는다. C04의 분할의 깊이는 3과 동등하다. 이와 같이, CU는, 부호화되는 화상을 재귀적으로 분할함으로써 형성된다. 분할의 깊이는 가변적이다. 예를 들어, 푸른 하늘과 같은 평탄한 화상 영역에는, 보다 큰 사이즈의(즉, 깊이가 작다) CU가 설정될 수 있다. 한편, 많은 에지를 포함하는 급준한 화상 영역에는, 더 작은 사이즈의(즉, 깊이가 큰) CU가 설정될 수 있다. 그리고, 설정된 CU의 각각이, 부호화 처리의 처리 단위로 된다.
<CU로의 PU의 설정>
PU는, 인트라 예측 및 인터 예측을 포함하는 예측 처리의 처리 단위이다. PU는, CU를 몇 가지의 분할 패턴 중 1개로 분할함으로써 형성된다. 도 2는, 도 1에 도시한 CU로의 PU의 설정에 대하여 설명하기 위한 설명도이다. 도 2의 우측에는, 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, 2NxnD, nLx2N 및 nRx2N이라는, 8종류의 분할 패턴이 도시되어 있다. 이들 분할 패턴 중, 인트라 예측에서는, 2Nx2N 및 NxN의 2종류가 선택 가능하다(NxN은 SCU에서만 선택 가능). 이에 반하여 인터 예측에서는, 비대칭 움직임 분할이 유효화되어 있는 경우에, 8종류의 분할 패턴의 전부가 선택 가능하다.
<CU로의 TU의 설정>
TU는, 직교 변환 처리의 처리 단위이다. TU는, CU(인트라 CU에 대해서는, CU 내의 각 PU)를 어느 깊이까지 분할함으로써 형성된다. 도 3은, 도 2에 도시한 CU로의 TU의 설정에 대하여 설명하기 위한 설명도이다. 도 3의 우측에는, C02로 설정될 수 있는 1개 이상의 TU가 도시되어 있다. 예를 들어, TU인 T01은, 32x32 화소의 사이즈를 갖고, 그 TU 분할의 깊이는 제로와 동등하다. TU인 T02는, 16x16 화소의 사이즈를 갖고, 그 TU 분할의 깊이는 1과 동등하다. TU인 T03은, 8x8 화소의 사이즈를 갖고, 그 TU 분할의 깊이는 2와 동등하다.
상술한 CU, PU 및 TU 등의 블록을 화상으로 설정하기 위해서 어떤 블록 분할을 행할지는, 전형적으로는, 부호화 효율을 좌우하는 비용의 비교에 기초하여 결정된다. 인코더는, 예를 들어 1개의 2Mx2M 화소의 CU와, 4개의 MxM 화소의 CU와의 사이에서 비용을 비교하고, 4개의 MxM 화소의 CU를 설정한 쪽이 부호화 효율이 높으면, 2Mx2M 화소의 CU를 4개의 MxM 화소의 CU로 분할함을 결정한다.
<CU와 PU의 주사순>
화상을 부호화할 때, 화상(또는 슬라이스, 타일) 내에 격자 형상으로 설정되는 CTB(또는 LCU)가, 래스터 스캔 순으로 주사된다. 1개의 CTB 중에서는, CU는, 4분목을 좌측부터 우측, 상측부터 하측으로 찾아가도록 주사된다. 커런트 블록을 처리할 때, 상측 및 좌측의 인접 블록의 정보가 입력 정보로서 이용된다. 도 4는, CU와 PU의 주사순에 대하여 설명하기 위한 설명도이다. 도 4의 좌측 상단에는, 1개의 CTB에 포함될 수 있는 4개의 CU인, C10, C11, C12 및 C13이 도시되어 있다. 각 CU의 프레임 내의 숫자는, 처리의 순서를 표현하고 있다. 부호화 처리는, 좌측 상단의 CU인 C10, 우측 상단의 CU인 C11, 좌측 하단의 CU인 C12, 우측 하단의 CU인 C13의 순서로 실행된다. 도 4의 우측에는, CU인 C11로 설정될 수 있는 인터 예측을 위한 1개 이상의 PU가 도시되어 있다. 도 4의 하단에는, CU인 C12로 설정될 수 있는 인트라 예측을 위한 1개 이상의 PU가 도시되어 있다. 이들 PU의 프레임 내 숫자로 도시한 바와 같이, PU도 또한, 좌측부터 우측, 상측부터 하측으로 찾아가도록 주사된다.
이하에 있어서는, 화상(픽처)의 부분 영역이나 처리 단위로서 「블록」을 사용하여 설명하는 경우가 있다(처리부의 블록은 아님). 이 경우의 「블록」은, 픽처 내의 임의의 부분 영역을 나타내고, 그의 크기, 형상, 및 특성 등은 한정되지 않는다. 즉, 이 경우의 「블록」에는, 예를 들어 TU, TB, PU, PB, SCU, CU, LCU(CTB), 서브블록, 매크로 블록, 타일 또는 슬라이스 등, 임의의 부분 영역(처리 단위)이 포함되는 것으로 한다.
<변환 계수의 다이내믹 레인지>
비특허문헌 1에는, 화상 부호화에 있어서, 화상과 그 예측 화상의 차분인 예측 잔차에 대해서 프라이머리 변환을 행한 후에, 또한 에너지 컴팩션을 높이기(저역으로 변환 계수를 집중시키기) 위해서, 변환 블록 내의 서브블록마다 세컨더리 변환을 적용하는 것이 개시되어 있다. 또한, 그 비특허문헌 1에는, 어느 세컨더리 변환을 적용할지를 나타내는 세컨더리 변환 식별자를 CU 단위로 시그널하는 것도 개시되어 있다.
비특허문헌 2에는, 인코더에 있어서, RDO(Rate-Distortion Optimization)에 기초하여, 비특허문헌 1에 기재된 CU 단위로 어느 세컨더리 변환을 적용할지 결정하는 것은, 계산 복잡도가 커서, 변환 블록 단위에서의 세컨더리 변환을 적용할지 여부를 나타내는 세컨더리 변환 플래그를 시그널하는 것이 개시되어 있다. 또한, 그 비특허문헌 2에는, 어느 세컨더리 변환을 적용할지를 나타내는 세컨더리 변환 식별자를, 프라이머리 변환 식별자 및 인트라 예측 모드에 기초하여 도출하는 것도 개시되어 있다.
그러나, 비특허문헌 1 및 비특허문헌 2 중 어느 것에 기재된 방법에 있어서도, 세컨더리 변환의 각 행렬의 요소 정밀도는, 9비트(bit) 정밀도에 근사하고 있다. 이 정밀도로 세컨더리 변환이나 역 세컨더리 변환을 실행하면, 세컨더리 변환이나 역 세컨더리 변환 후의 각 신호의 다이내믹 레인지가 16비트를 초과할 가능성이 있었다. 그 때문에, 세컨더리 변환이나 역 세컨더리 변환 후의 연산 결과를 일시적으로 저장하는 중간 버퍼에 필요한 용량이 증대되는 등, 부호화·복호의 부하가 증대될 우려가 있었다.
예를 들어, 세컨더리 변환은, 이하의 식 (1)과 같이 표시할 수 있다.
Figure pct00001
식 (1)에 있어서, T는 16×16의 행렬이며, X는 1×16의 1차원의 벡터이다. X의 각 요소의 값의 치역은, [-A, A-1]이다.
이 경우, 식 (1)에 있어서 Y의 각 요소의 다이내믹 레인지의 상한값 MaxVal은, 이하의 식 (2)와 같이 표시된다.
Figure pct00002
식 (2)에 있어서, r은 행 벡터를 나타내고, i는 행 벡터 r의 i번째의 요소를 나타낸다. 즉, 행렬 T가 어느 행 벡터 r에 착안한 경우, 행 벡터의 전체 요소의 절댓값 합과 X의 치역의 상한값이 최대로 되는 행 벡터 r이, 식 (1)의 다이내믹 레인지의 상한값으로 된다. 마찬가지로, 하한값은 -MaxVal로 된다.
예를 들어, 세컨더리 변환에 있어서 행해지는 행렬 연산에, 도 5에 도시된 바와 같은 행렬 R이 사용된다고 하자. 이 경우 R의 행 벡터 r의 전체 요소의 절댓값 합이 최대로 되는 것은, r=3일 때이다(도면 중 사각으로 둘러싸인 행 벡터). 이때, 절댓값 합은, 이하의 식 (3)으로 나타낸 바와 같이, 627이다.
Figure pct00003
비특허문헌 1에 기재된 방법에 있어서의 세컨더리 변환에서의 다이내믹 레인지는 도 6에 도시된 표와 같아진다. 이 표에 나타낸 바와 같이, Coeff>>8이나, Coeff_P>>8의 조작(놈 정규화)의 후의 계수가 215를 초과할 가능성이 있었다.
이와 같이 다이내믹 레인지가 16비트를 초과하면, 중간 버퍼 사이즈는, 16비트로는 부족하므로, 32비트로 하지 않으면 안 되어, 비용이 증대될 우려가 있다. 이와 같이, 비특허문헌 1이나 비특허문헌 2에 기재된 방법에서는, 부호화·복호의 부하가 증대될 우려가 있었다.
<변환 계수의 클립>
그래서, 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하도록 한다. 이와 같이 함으로써, 변환 계수의 다이내믹 레인지 폭의 증대를 억제할 수 있으므로, 부호화·복호의 부하 증대를 억제할 수 있다.
<화상 부호화 장치>
도 7은, 본 기술을 적용한 화상 처리 장치의 일 형태인 화상 부호화 장치의 구성의 일례를 나타내는 블록도이다. 도 7에 도시한 화상 부호화 장치(100)는, AVC나 HEVC와 같이, 화상과 그 예측 화상과의 예측 잔차를 부호화하는 장치이다. 예를 들어, 화상 부호화 장치(100)는, HEVC에서 제안된 기술이나, JVET(Joint Video Exploration Team)에서 제안된 기술을 실장하고 있다.
또한, 도 7에 있어서는, 처리부나 데이터의 흐름 등의 주된 것을 나타내고 있으며, 도 7에 도시된 것이 전부라고는 할 수 없다. 즉, 화상 부호화 장치(100)에 있어서, 도 7에 있어서 블록으로 도시되지 않은 처리부가 존재하거나, 도 7에 있어서 화살표 등으로 도시되지 않은 처리나 데이터의 흐름이 존재하기도 해도 된다.
도 7에 도시된 바와 같이 화상 부호화 장치(100)는, 제어부(101), 연산부(111), 변환부(112), 양자화부(113), 부호화부(114), 역양자화부(115), 역변환부(116), 연산부(117), 프레임 메모리(118), 및 예측부(119)를 갖는다.
제어부(101)는, 외부 또는 미리 지정된 처리 단위의 블록 사이즈에 기초하여, 화상 부호화 장치(100)에 입력되는 동화상을 처리 단위의 블록(CU, PU, 변환 블록(TB) 등)으로 분할하고, 분할된 블록에 대응하는 화상 I를 연산부(111)에 공급시킨다. 또한, 제어부(101)는, 각 블록으로 공급하는 부호화 파라미터(헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo 등)를, 예를 들어 RDO(Rate-Distortion Optimization)에 기초하여 결정한다. 결정된 부호화 파라미터는, 각 블록으로 공급된다.
헤더 정보 Hinfo는, 예를 들어 비디오 파라미터 세트(VPS(Video Parameter Set)), 시퀀스 파라미터 세트(SPS(Sequence Parameter Set)), 픽처 파라미터 세트(PPS(Picture Parameter Set)), 슬라이스 헤더(SH) 등의 정보를 포함한다. 예를 들어, 헤더 정보 Hinfo에는, 화상 사이즈(횡폭 PicWidth, 종폭 PicHeight), 비트 심도(휘도 bitDepthY, 색차 bitDepthC), CU 사이즈의 최댓값 MaxCUSize/최솟값 MinCUSize, 변환 블록 사이즈의 최댓값 MaxTBSize/최솟값 MinTBSize, 변환 스킵 블록의 최댓값 MaxTSSize(최대 변환 스킵 블록 사이즈라고도 칭함), 각 부호화 툴의 온/오프 플래그(유효 플래그라고도 칭함) 등을 규정하는 정보가 포함된다. 물론, 헤더 정보 Hinfo의 내용은 임의이며, 상술한 예 이외의 어떤 정보가 이 헤더 정보 Hinfo에 포함되도록 해도 된다.
예측 모드 정보 Pinfo에는, 예를 들어 처리 대상 PU의 PU 사이즈(예측 블록 사이즈)를 나타내는 정보인 PU 사이즈 PUSize, 처리 대상의 블록의 인트라 예측 모드에 관한 정보인 인트라 예측 모드 정보 IPinfo(예를 들어, JCTVC-W1005, 7.3.8.5 Coding Unit syntax 중의 prev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode 등), 처리 대상의 블록의 움직임 예측에 관한 정보인 움직임 예측 정보 MVinfo(예를 들어, JCTVC-W1005, 7.3.8.6 Prediction Unit Syntax 중의 merge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0, 1}, mvd 등) 등이 포함된다. 물론, 예측 모드 정보 Pinfo의 내용은 임의이며, 상술한 예 이외의 어떤 정보가 이 예측 모드 정보 Pinfo에 포함되도록 해도 된다.
변환 정보 Tinfo에는, 예를 들어 이하와 같은 정보가 포함된다.
블록 사이즈 TBSize(혹은, 2를 밑으로 하는 TBSize의 대수값 log2TBSize, 변환 블록 사이즈라고도 칭함)는, 처리 대상 변환 블록의 블록 사이즈를 나타내는 정보이다.
세컨더리 변환 식별자(st_idx)는, 대상으로 하는 데이터 단위에 있어서, 어느 세컨더리 변환 또는 역 세컨더리 변환((역) 세컨더리 변환이라고도 칭함)을 적용할지를 나타내는 식별자이다(예를 들어, JVET-B1001, 2.5.2 Secondary Transforms를 참조. JEM2에서는, nsst_idx, rot_idx라고도 칭함). 환언하면, 이 세컨더리 변환 식별자는, 대상으로 하는 데이터 단위에 있어서의 (역) 세컨더리 변환의 내용에 관한 정보이다.
예를 들어, 세컨더리 변환 식별자 st_idx는, 그 값이 0보다 큰 경우, (역) 세컨더리 변환의 행렬을 지정하는 식별자이다. 환언하면, 이 경우, 세컨더리 변환 식별자 st_idx는, (역) 세컨더리 변환의 실행을 나타낸다. 또한, 예를 들어 세컨더리 변환 식별자 st_idx는, 그 값이 0인 경우, (역) 세컨더리 변환의 스킵을 나타낸다.
스캔 식별자(scanIdx)는, 스캔 방법에 관한 정보이다. 양자화 파라미터(qp)는, 대상으로 하는 데이터 단위에 있어서, (역) 양자화에 사용되는 양자화 파라미터를 나타내는 정보이다. 양자화 매트릭스(scaling_matrix)는, 대상으로 하는 데이터 단위에 있어서, (역) 양자화에 사용되는 양자화 매트릭스를 나타내는 정보이다(예를 들어, JCTVC-W1005, 7.3.4 Scaling list data syntax).
물론, 변환 정보 Tinfo의 내용은 임의이며, 상술한 예 이외의 어떤 정보가 이 변환 정보 Tinfo에 포함되도록 해도 된다.
헤더 정보 Hinfo는, 예를 들어 각 블록에 공급된다. 예측 모드 정보 Pinfo는, 예를 들어 부호화부(114) 및 예측부(119)에 공급된다. 변환 정보 Tinfo는, 예를 들어 변환부(112), 양자화부(113), 부호화부(114), 역양자화부(115) 및 역변환부(116)에 공급된다.
연산부(111)는, 입력된 처리 단위의 블록에 대응하는 화상 I로부터, 예측부(119)로부터 공급된 예측 화상 P를, 식 (4)에 표시한 바와 같이 감산하여 예측 잔차 D를 구하고, 그것을 변환부(112)에 공급한다.
Figure pct00004
변환부(112)는, 제어부(101)로부터 공급되는 변환 정보 Tinfo에 기초하여, 연산부(111)로부터 공급되는 예측 잔차 D에 대해서 변환 처리를 행하고, 변환 계수 Coeff를 도출한다. 변환부(112)는, 그 변환 계수 Coeff를 양자화부(113)에 공급한다.
양자화부(113)는, 제어부(101)로부터 공급되는 변환 정보 Tinfo에 기초하여, 변환부(112)로부터 공급되는 변환 계수 Coeff를 스케일링(양자화)한다. 즉, 양자화부(113)는, 변환 처리가 행해진 변환 계수 Coeff의 양자화를 행한다. 양자화부(113)는, 그 양자화에 의해 얻어진 양자화 후의 변환 계수, 즉 양자화 변환 계수 레벨 level을 부호화부(114) 및 역양자화부(115)에 공급한다.
부호화부(114)는, 양자화부(113)로부터 공급되는 양자화 변환 계수 레벨 level 등을 소정의 방법으로 부호화한다. 예를 들어, 부호화부(114)는, 신택스 테이블의 정의에 따라서, 제어부(101)로부터 공급되는 부호화 파라미터(헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo 등)나, 양자화부(113)로부터 공급되는 양자화 변환 계수 레벨 level을, 각 신택스 요소의 신택스 값으로 변환하고, 각 신택스 값을 부호화(예를 들어, 산술 부호화)하고, 비트 열(부호화 데이터)을 생성한다.
또한, 부호화부(114)는, 양자화 변환 계수 레벨 level로부터 잔차 정보 RInfo를 도출하고, 잔차 정보 RInfo를 부호화하여, 비트 열(부호화 데이터)을 생성한다.
잔차 정보 RInfo에는, 예를 들어 라스트 비 제로 계수 X 좌표(last_sig_coeff_x_pos), 라스트 비 제로 계수 Y 좌표(last_sig_coeff_y_pos), 서브블록 비 제로 계수 유무 플래그(coded_sub_block_flag), 비 제로 계수 유무 플래그(sig_coeff_flag), 비 제로 계수의 레벨이 1보다 큰지를 나타내는 플래그 정보인 GR1 플래그(gr1_flag), 비 제로 계수의 레벨이 2보다 큰지를 나타내는 플래그 정보인 GR2 플래그(gr2_flag), 비 제로 계수의 정부를 나타내는 부호인 사인 부호(sign_flag), 비 제로 계수의 잔여 레벨을 나타내는 정보인 비 제로 계수 잔여 레벨(coeff_abs_level_remaining) 등이 포함된다(예를 들어, JCTVC-W1005의 7.3.8.11 Residual Coding syntax를 참조). 물론, 잔차 정보 RInfo의 내용은 임의이며, 상술한 예 이외의 어떤 정보가 이 잔차 정보 RInfo에 포함되도록 해도 된다.
부호화부(114)는, 예를 들어 부호화된 각 신택스 요소의 비트 열(부호화 데이터)을 다중화하고, 비트 스트림으로서 출력한다.
역양자화부(115)는, 제어부(101)로부터 공급되는 변환 정보 Tinfo에 기초하여, 양자화부(113)로부터 공급되는 양자화 변환 계수 레벨 level의 값을 스케일링(역양자화)하고, 역양자화 후의 변환 계수 Coeff_IQ를 도출한다. 역양자화부(115)는, 그 변환 계수 Coeff_IQ를 역변환부(116)에 공급한다. 이 역양자화부(115)에 의해 행해지는 역양자화는, 양자화부(113)에 의해 행해지는 양자화의 역처리이며, 후술하는 화상 복호 장치에 있어서 행해지는 역양자화와 마찬가지의 처리이다. 따라서, 이 역양자화에 대해서는, 화상 복호 장치에 관한 설명에 있어서 후술한다.
역변환부(116)는, 제어부(101)로부터 공급되는 변환 정보 Tinfo에 기초하여, 역양자화부(115)로부터 공급되는 변환 계수 Coeff_IQ에 대해서 역변환을 행하고, 예측 잔차 D'를 도출한다. 역변환부(116)는, 그 예측 잔차 D'를 연산부(117)에 공급한다. 이 역변환부(116)에 의해 행해지는 역변환은, 변환부(112)에 의해 행해지는 변환의 역처리이며, 후술하는 화상 복호 장치에 있어서 행해지는 역변환과 마찬가지의 처리이다. 따라서, 이 역변환에 대해서는, 화상 복호 장치에 관한 설명에 있어서 후술한다.
연산부(117)는, 역변환부(116)로부터 공급되는 예측 잔차 D'와, 예측부(119)로부터 공급되는, 그 예측 잔차 D'에 대응하는 예측 화상 P(예측 신호)를, 이하의 식 (5)와 같이 가산하여 국소 복호 화상 Rec를 도출한다. 연산부(117)는, 그 국소 복호 화상 Rec를 프레임 메모리(118)에 공급한다.
Figure pct00005
프레임 메모리(118)는, 연산부(117)로부터 공급되는 국소 복호 화상 Rec를 사용하여 픽처 단위마다의 복호 화상을 재구축하고, 프레임 메모리(118) 내의 버퍼에 저장한다. 프레임 메모리(118)는, 예측부(119)에 의해 지정되는 복호 화상을 참조 화상으로서 버퍼로부터 판독하고, 예측부(119)에 공급한다. 또한, 프레임 메모리(118)는, 복호 화상의 생성에 따른 헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo 등을, 프레임 메모리(118) 내의 버퍼에 저장하도록 해도 된다.
예측부(119)는, 예측 모드 정보 PInfo에 의해 지정되는, 프레임 메모리(118)에 저장된 복호 화상을 참조 화상으로서 취득하고, 그 참조 화상을 사용하여, 예측 모드 정보 Pinfo에 의해 지정되는 예측 방법에 의해 예측 화상 P를 생성한다. 예측부(119)는, 생성한 예측 화상 P를 연산부(111)나 연산부(117)에 공급한다.
이와 같은 화상 부호화 장치(100)에 있어서, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하도록 한다. 즉, 변환부(112)가, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하도록 한다.
<변환부>
도 8은, 변환부(112)의 주된 구성예를 나타내는 블록도이다. 도 8에 있어서, 변환부(112)는, 프라이머리 변환부(131) 및 세컨더리 변환부(132)를 갖는다.
프라이머리 변환부(131)는, 연산부(111)로부터 공급되는 예측 잔차 D에 대해서, 예를 들어 직교 변환 등의 프라이머리 변환을 실행하고, 그 예측 잔차 D에 대응하는 프라이머리 변환 후의 변환 계수 Coeff_P(프라이머리 변환 계수라고도 칭함)를 도출한다. 즉, 프라이머리 변환부(131)는, 예측 잔차 D를 프라이머리 변환 계수 Coeff_P로 변환한다. 프라이머리 변환부(131)는, 도출한 프라이머리 변환 계수 Coeff_P를 세컨더리 변환부(132)에 공급한다.
세컨더리 변환부(132)는, 프라이머리 변환부(131)로부터 공급되는 프라이머리 변환 계수 Coeff_P를 1차원의 벡터로 변환하여, 그 1차원의 벡터에 대한 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터의 스케일링을 행하고, 그 스케일링된 상기 1차원의 벡터를 행렬화하는 변환 처리인 세컨더리 변환을 행한다.
세컨더리 변환부(132)는, 세컨더리 변환의 내용에 관한 정보인 세컨더리 변환 식별자 st_idx와, 변환 계수의 스캔 방법에 관한 정보인 스캔 식별자 scanIdx에 기초하여, 프라이머리 변환 계수 Coeff_P에 대해서 세컨더리 변환을 행하고, 세컨더리 변환 후의 변환 계수 Coeff(세컨더리 변환 계수라고도 칭함)를 도출한다. 즉, 세컨더리 변환부(132)는, 프라이머리 변환 계수 Coeff_P를 세컨더리 변환 계수 Coeff로 변환한다.
도 8에 도시된 바와 같이, 세컨더리 변환부(132)는, 래스터라이즈부(141), 행렬 연산부(142), 스케일링부(143), 행렬화부(144), 클립 처리부(145), 및 세컨더리 변환 선택부(146)를 갖는다.
래스터라이즈부(141)는, 스캔 식별자 scanIdx에 의해 지정되는 변환 계수의 스캔 방법에 기초하여, 서브블록 단위(4x4 서브블록)마다, 프라이머리 변환부(131)로부터 공급되는 프라이머리 변환 계수 Coeff_P를 1×16차원의 벡터 X1d로 변환한다. 래스터라이즈부(141)는, 얻어진 벡터 X1d를 행렬 연산부(142)에 공급한다.
세컨더리 변환 선택부(146)는, 세컨더리 변환 식별자 st_idx로 지정되는 세컨더리 변환의 행렬 R을, 세컨더리 변환 선택부(146)의 내부 메모리(도시생략)로부터 판독하고, 행렬 연산부(142)에 공급한다. 예를 들어, 세컨더리 변환 선택부(146)는, 어떤 세컨더리 변환 식별자 st_idx의 값일 때, 세컨더리 변환으로서, 도 5에 도시된 16×16의 행렬 R을 판독하고, 행렬 연산부(142)에 공급한다.
또한, 세컨더리 변환 선택부(146)가, 세컨더리 변환 식별자 st_idx 및 인트라 예측 모드 정보 IPinfo(예를 들어, 예측 모드 번호)에 따라서, 세컨더리 변환 R을 선택하도록 해도 된다. 또한, 세컨더리 변환 선택부(146)가, 인트라 예측 모드 정보 IPinfo 대신에, 움직임 예측 정보 MVinfo 및 세컨더리 변환 식별자 st_idx에 따라서, 변환 R을 선택하도록 해도 된다.
행렬 연산부(142)는, 1차원 벡터 X1d 및 세컨더리 변환 R의 행렬을 사용하여, 이하의 식 (6)에 나타낸 바와 같은 행렬 연산을 행하고, 그 결과 Y1d를 스케일링부(143)에 공급한다. 여기서, 연산자 "T"는 전치 행렬의 조작을 나타낸다.
Figure pct00006
스케일링부(143)는, 행렬 연산부(142)로부터 공급되는 신호 Y1d의 놈을 정규화하기 위해서, 이하의 식 (7)에 나타낸 바와 같은 N(N은 자연수) 비트의 비트 시프트 연산을 행하고, 비트 시프트후의 신호 Z1d를 구한다.
Figure pct00007
또한, 이하의 식 (8)과 같이 N 비트의 시프트 연산 전에, 오프셋으로서, 1<<(N-1)의 값을, 신호 Z1d의 각 요소에 가산하도록 해도 된다.
Figure pct00008
또한, 식 (8)에 있어서, E는, 모든 요소의 값이 1인 1×16차원의 벡터이다. 예를 들어, 도 5에 도시된 세컨더리 변환 R의 행렬은, 8비트 스케일링된 행렬이기 때문에, 스케일링부(143)에 있어서, 놈의 정규화에 사용하는 N의 값은 8이다. 일반적으로, 세컨더리 변환의 행렬 R이, N 비트 스케일링되어 있는 경우, 놈 정규화의 비트 시프트량은 N 비트이다. 스케일링부(143)는, 이상과 같이 얻어진 신호 Z1d를 행렬화부(144)에 공급한다.
행렬화부(144)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 놈 정규화 후의 1×16차원의 벡터 Z1d를 4×4 행렬로 변환한다. 행렬화부(144)는, 얻어진 변환 계수 Coeff를 클립 처리부(145)에 공급한다.
클립 처리부(145)는, 4x4 행렬의 변환 계수 Coeff, 변환 계수의 최댓값 CoeffMax, 및 최솟값 CoeffMin을 입력으로 한다. 클립 처리부(145)는, 행렬화부(144)로부터 공급되는 4x4 행렬의 변환 계수 Coeff의 각 요소 Coeff(i, j)(i=0…3, j=0…3)에 대해서, 이하에 나타내는 식 (9)와 같이, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin에 의해 클립 처리를 행한다.
Figure pct00009
여기서, 연산자 Clip3(Xmin, Xmax, X)은, 입력값 X가, Xmin보다 작은 경우, Xmin의 값을 되돌리고, 입력값 X가 Xmax보다 큰 경우, Xmax를 되돌리고, 그 이외의 경우는, 입력값 X를 되돌리는 클립 처리이다. Clip3은, Min(x, y), Max(x, y)를 사용하여, 이하의 식 (10)과 같이 표현할 수도 있다.
Figure pct00010
또한, 변환 계수의 최댓값 CoeffMax, 최솟값 CoeffMin은, 16bit 정밀도이면, 이하의 값인 것이 바람직하다.
Figure pct00011
또한, 변환 계수의 최댓값 CoeffMax, 최솟값 CoeffMin의 정밀도는, 16bit 정밀도로 한정되지 않고, 일반적으로, 8bit의 정수배(M배(M>=1)) 정밀도인 것으로 해도 된다. 이 경우, 이하와 같이, 변환 계수의 최댓값 CoeffMax는 8*M-1의 값으로 설정하고, 최솟값 CoeffMin은 -8*M으로 설정한다.
Figure pct00012
또한, 변환 계수의 최댓값 CoeffMax, 및 최솟값 CoeffMin은, 입력 신호의 비트 심도 BitDepth와, 파라미터 세트(SPS/PPS 등)에 있어서 통지되는 확장 연산 정밀도 플래그 extended_precision_processing_flag에 기초하여, 이하의 식 (11) 내지 식 (13)에 의해 도출해도 된다.
Figure pct00013
여기서, 확장 연산 정밀도 플래그는, 플래그의 값이 1인 경우에는, 변환 계수의 정밀도를 확장함을 나타내고, 플래그의 값이 0인 경우에는, 변환 계수의 정밀도를 확장하지 않음을 나타낸다. 식 (11)에 있어서, 확장 연산 정밀도 플래그의 값이 1인 경우에는, 입력 신호의 비트 심도 BitDepth와 6의 합의 값과, 15를 비교해서 큰 쪽의 값이, 변수 MaxLog2TrDynamicRange로 설정된다.
예를 들어, 입력 신호의 비트 심도 BitDepth=10인 경우, 변수MaxLog2TrDynamicRange의 값은 16으로 된다. 이 예의 경우, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin은, 식 (12) 및 식 (13)에 따라서, 이하의 값으로 된다. 이 경우, 변환 계수의 정밀도는 17bit이다.
Figure pct00014
마찬가지로 하여, 입력 신호의 비트 심도 BitDepth=12인 경우, 변수MaxLog2TrDynamicRange의 값은 22로 된다. 이 예의 경우, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin은, 식 (12) 및 식 (13)에 따라서, 이하의 값으로 된다. 이 경우, 변환 계수의 정밀도는 23bit이다.
Figure pct00015
식 (11)에 있어서, 확장 연산 정밀도 플래그의 값이 0인 경우, 변수MaxLog2TrDynamicRange의 값은 15로 설정된다. 이 경우, 변환 계수의 최댓값 CoeffMax, 최솟값 CoeffMin은, 식 (12) 및 식 (13)에 따라서, 이하의 값으로 된다.
Figure pct00016
이상, 식 (11) 내지 식 (13)에 의하면, 입력 신호의 비트 심도, 및 확장 연산 정밀도 플래그에 기초하여, 변환 계수의 최댓값 CoeffMax, 최댓값 CoeffMin을 결정할 수 있다. 특히, 입력 신호의 비트 심도가 큰 경우(예, 16bit)에는, 변환 계수의 정밀도가 16bit에서는 연산 정밀도가 부족하여, 부호화 효율이 저하된다. 따라서, 상기한 바와 같이 입력 신호의 비트 심도에 따라서, 변환 계수의 연산 정밀도를 제어할 수 있도록 해 두는 것이 바람직하다.
클립 처리부(145)는, 클립 처리를 행한 변환 계수 Coeff를 세컨더리 변환 계수로서 양자화부(113)에 공급한다.
즉, 클립 처리부(145)에 의해 세컨더리 변환 계수 Coeff가 클립 처리되고, 그 값이 소정의 최댓값 내지 최솟값의 범위 내로 제한된다. 따라서, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있으므로, 부호화의 부하 증대를 억제할 수 있다. 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다.
<화상 부호화 처리의 흐름>
다음으로, 화상 부호화 장치(100)에 의해 실행되는 각 처리의 흐름의 예를 설명한다. 처음에, 화상 부호화 처리의 흐름의 예를, 도 9의 흐름도를 참조하여 설명한다.
화상 부호화 처리가 개시되면, 스텝 S101에 있어서, 제어부(101)는, 부호화 제어 처리를 행하고, 블록 분할이나 부호화 파라미터의 설정 등을 행한다.
스텝 S102에 있어서, 예측부(119)는, 예측 처리를 행하고, 최적의 예측 모드의 예측 화상 등을 생성한다. 예를 들어, 이 예측 처리에 있어서, 예측부(119)는, 인트라 예측을 행하여 최적의 인트라 예측 모드의 예측 화상 등을 생성하고, 인터 예측을 행하여 최적의 인터 예측 모드의 예측 화상 등을 생성하고, 그들 중에서 비용 함수값 등에 기초하여 최적의 예측 모드를 선택한다.
스텝 S103에 있어서, 연산부(111)는, 입력 화상과, 스텝 S102의 예측 처리에 의해 선택된 최적의 모드의 예측 화상과의 차분을 연산한다. 즉, 연산부(111)는, 입력 화상과 예측 화상과의 예측 잔차 D를 생성한다. 이와 같이 하여 구해진 예측 잔차 D는, 원래의 화상 데이터에 비하여 데이터양이 저감된다. 따라서, 화상을 그대로 부호화하는 경우에 비하여, 데이터양을 압축할 수 있다.
스텝 S104에 있어서, 변환부(112)는, 스텝 S103의 처리에 의해 생성된 예측 잔차 D에 대하여 변환 처리를 행하고, 변환 계수 Coeff를 도출한다. 스텝 S104의 처리 상세에 대해서는 후술한다.
스텝 S105에 있어서, 양자화부(113)는, 제어부(101)에 의해 산출된 양자화 파라미터를 사용하거나 하여, 스텝 S104의 처리에 의해 얻어진 변환 계수 Coeff를 양자화하고, 양자화 변환 계수 레벨 level을 도출한다.
스텝 S106에 있어서, 역양자화부(115)는, 스텝 S105의 처리에 의해 생성된 양자화 변환 계수 레벨 level을, 그 스텝 S105의 양자화 특성에 대응하는 특성으로 역양자화하고, 변환 계수 Coeff_IQ를 도출한다.
스텝 S107에 있어서, 역변환부(116)는, 스텝 S106의 처리에 의해 얻어진 변환 계수 Coeff_IQ를, 스텝 S104의 변환 처리에 대응하는 방법으로 역변환하고, 예측 잔차 D'를 도출한다. 또한, 이 역변환 처리는, 스텝 S104의 변환 처리의 역처리이며, 후술하는 화상 복호 처리에 있어서 실행되는 역변환 처리와 마찬가지로 실행된다. 그 때문에, 이 역변환 처리의 설명은, 복호측의 설명에 있어서 행한다.
스텝 S108에 있어서, 연산부(117)는, 스텝 S107의 처리에 의해 도출된 예측 잔차 D'에, 스텝 S102의 예측 처리에 의해 얻어진 예측 화상을 가산함으로써, 국소적으로 복호된 복호 화상을 생성한다.
스텝 S109에 있어서, 프레임 메모리(118)는, 스텝 S108의 처리에 의해 얻어진, 국소적으로 복호된 복호 화상을 기억한다.
스텝 S110에 있어서, 부호화부(114)는, 스텝 S105의 처리에 의해 얻어진 양자화 변환 계수 레벨 level을 부호화한다. 예를 들어, 부호화부(114)는, 화상에 관한 정보인 양자화 변환 계수 레벨 level을, 산술 부호화 등에 의해 부호화하고, 부호화 데이터를 생성한다. 또한, 이때, 부호화부(114)는, 각종 부호화 파라미터(헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo)를 부호화한다. 또한, 부호화부(114)는, 양자화 변환 계수 레벨 level로부터 잔차 정보 RInfo를 도출하고, 그 잔차 정보 RInfo를 부호화한다. 부호화부(114)는, 이와 같이 생성한 각종 정보의 부호화 데이터를 통합하고, 비트 스트림으로서 화상 부호화 장치(100)의 외부로 출력한다. 이 비트 스트림은, 예를 들어 전송로나 기록 매체를 통해 복호측으로 전송된다.
스텝 S110의 처리가 종료되면, 화상 부호화 처리가 종료된다.
또한, 이들 각 처리의 처리 단위는 임의이며, 서로 동일하지 않아도 된다. 따라서, 각 스텝의 처리는, 적절히, 다른 스텝의 처리 등과 병행하여, 또는 처리순을 바꿔 실행할 수도 있다.
<변환 처리의 흐름>
다음으로, 도 9의 스텝 S104에 있어서 실행되는 변환 처리의 흐름의 예를, 도 10의 흐름도를 참조하여 설명한다.
변환 처리가 개시되면, 스텝 S121에 있어서, 프라이머리 변환부(131)는, 프라이머리 변환 식별자 pt_idx에 기초하여, 예측 잔차 D에 대한 프라이머리 변환을 행하고, 프라이머리 변환 계수 Coeff_P를 도출한다.
스텝 S122에 있어서, 세컨더리 변환부(132)는, 세컨더리 변환 식별자 st_idx가 세컨더리 변환을 적용할지 여부(st_idx>0)를 판정한다. 세컨더리 변환 식별자 st_idx가 0이라(세컨더리 변환 식별자 st_idx가 세컨더리 변환의 스킵을 나타낸다)고 판정된 경우, 세컨더리 변환(스텝 S123 내지 스텝 S130의 처리)이 스킵되어, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다. 즉, 세컨더리 변환부(132)는, 프라이머리 변환 계수 Coeff_P를 변환 계수 Coeff로서 양자화부(113)에 공급한다.
또한, 스텝 S122에 있어서, 세컨더리 변환 식별자 st_idx가 0보다 크다(세컨더리 변환 식별자 st_idx가 세컨더리 변환의 실행을 나타낸다)고 판정된 경우, 처리는 스텝 S123으로 진행한다. 스텝 S123 내지 스텝 S130의 처리에 의해 세컨더리 변환이 실행된다.
스텝 S123에 있어서, 세컨더리 변환 선택부(146)는, 세컨더리 변환 식별자 st_idx에 의해 지정되는 세컨더리 변환 R을 선택한다.
스텝 S124에 있어서, 세컨더리 변환부(132)는, 처리 대상의 변환 블록을 서브 블록으로 분할하고, 미처리의 서브블록을 선택한다.
스텝 S125에 있어서, 래스터라이즈부(141)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 프라이머리 변환 계수 Coeff_P를 1×16차원의 벡터 X1d로 변환한다.
스텝 S126에 있어서, 행렬 연산부(142)는, 벡터 X1d와 세컨더리 변환 R의 행렬 곱을 연산하고, 벡터 Y1d를 구한다.
스텝 S127에 있어서, 스케일링부(143)는, 벡터 Y1d의 놈을 정규화하고, 벡터 Z1d를 구한다.
스텝 S128에 있어서, 행렬화부(144)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 벡터 Z1d를 4×4의 행렬로 변환하고, 처리 대상의 서브블록 세컨더리 변환 계수 Coeff를 구한다.
스텝 S129에 있어서, 클립 처리부(145)는, 입력된, 처리 대상의 서브블록 세컨더리 변환 계수 Coeff의 각 요소에 대해서, 최댓값 CoeffMax 및 최솟값 CoeffMin에 의한 클립 처리를 행한다. 이 세컨더리 변환 계수 Coeff가 양자화부(113)에 공급된다.
스텝 S130에 있어서, 세컨더리 변환부(132)는, 처리 대상의 변환 블록의 모든 서브블록을 처리하였는지 여부를 판정한다. 미처리의 서브블록이 존재한다고 판정된 경우, 처리는 스텝 S124로 되돌아가고, 그것 이후의 처리를 반복한다. 즉, 처리 대상의 변환 블록의 각 서브블록에 대하여, 스텝 S124 내지 스텝 S130의 각 처리(세컨더리 변환)가 실행된다. 스텝 S130에 있어서, 모든 서브블록을 처리하였다(모든 서브블록의 세컨더리 변환을 행하였다)고 판정된 경우, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다.
또한, 변환 처리는, 실시 가능한 범위에서, 각 스텝의 처리순의 변경이나, 처리의 내용을 변경해도 된다. 예를 들어, 스텝 S123에 있어서 세컨더리 변환 식별자 st_idx=0이라고 판정된 경우, 16×16의 단위 행렬이 세컨더리 변환 R로서 선택되고, 스텝 S124 내지 스텝 S130의 각 처리가 실행되도록 해도 된다. 또한, 스텝 S127에서 도출되는 벡터 Y1d의 놈 정규화 후의 벡터 Z1d에 대해서, 스텝 S129의 클립 처리를 실행하고, 그 후, 스텝 S128의 행렬화의 처리를 행해도 된다.
이상과 같이 각 처리를 실행함으로써, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다. 또한, 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈의 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다.
<화상 복호 장치>
다음으로 이상과 같이 부호화된 부호화 데이터의 복호에 대하여 설명한다. 도 11은, 본 기술을 적용한 화상 처리 장치의 일 형태인 화상 복호 장치의 구성의 일례를 나타내는 블록도이다. 도 11에 도시된 화상 복호 장치(200)는, 도 7의 화상 부호화 장치(100)에 대응하는 화상 복호 장치이며, 화상 부호화 장치(100)가 생성한 부호화 데이터(비트 스트림)를, 화상 부호화 장치(100)에 의한 부호화 방법에 대응하는 복호 방법으로 복호한다. 예를 들어, 화상 복호 장치(200)는, HEVC에 제안된 기술이나, JVET에서 제안된 기술을 실장하고 있다.
또한, 도 11에 있어서는, 처리부나 데이터의 흐름 등의 주된 것을 나타내고 있어, 도 11에 도시된 것이 전부라고는 할 수 없다. 즉, 화상 복호 장치(200)에 있어서, 도 11에 있어서 블록으로서 도시되지 않은 처리부가 존재하거나, 도 11에 있어서 화살표 등으로 도시되지 않은 처리나 데이터의 흐름이 존재하기도 해도 된다.
도 11에 도시된 바와 같이 화상 복호 장치(200)는, 복호부(211), 역양자화부(212), 역변환부(213), 연산부(214), 프레임 메모리(215), 및 예측부(216)를 갖는다. 화상 복호 장치(200)에는, 예를 들어 전송 매체나 기록 매체 등을 통하여, 화상 부호화 장치(100) 등이 생성된 부호화 데이터가 예를 들어 비트 스트림 등으로서 공급된다.
복호부(211)는, 공급되는 부호화 데이터를, 그 부호화 방법에 대응하는 소정의 복호 방법으로 복호한다. 예를 들어, 복호부(211)는, 신택스 테이블의 정의를 따라서, 공급된 부호화 데이터(비트 스트림)의 비트 열로부터, 각 신택스 요소의 신택스 값을 복호한다. 신택스 요소에는, 예를 들어 헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo, 잔차 정보 Rinfo 등의 정보가 포함된다.
복호부(211)는, 잔차 정보 Rinfo를 참조하여, 각 변환 블록 내의 각 계수 위치의 양자화 변환 계수 레벨 level을 도출한다. 복호부(211)는, 복호하여 얻은 예측 모드 정보 Pinfo, 양자화 변환 계수 레벨 level, 변환 정보 Tinfo를 각 블록으로 공급한다. 예를 들어, 복호부(211)는, 예측 모드 정보 Pinfo를 예측부(216)에 공급하고, 양자화 변환 계수 레벨 level을 역양자화부(212)에 공급하고, 변환 정보 Tinfo를 역양자화부(212) 및 역변환부(213)에 공급한다.
역양자화부(212)는, 복호부(211)로부터 공급되는 변환 정보 Tinfo에 기초하여, 복호부(211)로부터 공급되는 양자화 변환 계수 레벨 level의 값을 스케일링(역양자화)하고, 역양자화 후의 변환 계수 Coeff_IQ를 도출한다. 이 역양자화는, 화상 부호화 장치(100)의 양자화부(113)(도 7)에 의해 행해지는 양자화의 역처리이다. 또한, 역양자화부(115)(도 7)는, 이 역양자화부(212)와 마찬가지의 역양자화를 행한다. 역양자화부(212)는, 얻어진 변환 계수 Coeff_IQ를 역변환부(213)에 공급한다.
역변환부(213)는, 복호부(211)로부터 공급되는 변환 정보 Tinfo에 기초하여, 역양자화부(212)로부터 공급되는 변환 계수 Coeff_IQ를 역변환하고, 예측 잔차 D'를 도출한다. 이 역변환은, 화상 부호화 장치(100)의 변환부(112)(도 7)에 의해 행해지는 변환 처리의 역처리이다. 또한, 역변환부(116)는, 이 역변환부(213)와 마찬가지의 역변환을 행한다. 이 역변환의 상세에 대해서는, 후술한다. 역변환부(213)는, 얻어진 예측 잔차 D'를 연산부(214)에 공급한다.
연산부(214)는, 이하의 식 (14)에 나타낸 바와 같이, 역변환부(213)로부터 공급되는 예측 잔차 D'와 그 예측 잔차 D'에 대응하는 예측 화상 P(예측 신호)를 가산하고, 국소적인 복호 화상 Rec를 도출한다. 연산부(214)는, 얻어진 국소적인 복호 화상 Rec를 사용하여 픽처 단위마다의 복호 화상을 재구축하고, 얻어진 복호 화상을 화상 복호 장치(200)의 외부로 출력한다. 또한, 연산부(214)는, 그 국소적인 복호 화상 Rec를 프레임 메모리(215)에도 공급한다.
Figure pct00017
프레임 메모리(215)는, 연산부(214)로부터 공급되는 국소적인 복호 화상 Rec를 사용하여 픽처 단위마다의 복호 화상을 재구축하고, 프레임 메모리(215) 내의 버퍼에 저장한다. 프레임 메모리(215)는, 예측부(216)의 예측 모드 정보 Pinfo에 의해 지정되는 복호 화상을 참조 화상으로서 버퍼로부터 판독하고, 예측부(216)에 공급한다. 또한, 프레임 메모리(215)는, 그 복호 화상의 생성에 따른 헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo 등을 프레임 메모리(215) 내의 버퍼에 저장하도록 해도 된다.
예측부(216)는, 복호부(211)로부터 공급되는 예측 모드 정보 PInfo에 의해 지정되는, 프레임 메모리(215)에 저장된 복호 화상을 참조 화상으로서 취득하고, 그 참조 화상을 사용하여, 그 예측 모드 정보 Pinfo에 의해 지정되는 예측 방법에 의해 예측 화상 P를 생성한다. 예측부(216)는, 생성된 예측 화상 P를, 연산부(214)에 공급한다.
이와 같은 화상 복호 장치(200)에 있어서, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하도록 한다. 즉, 역변환부(213)가, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하도록 한다.
<역변환부>
도 12는, 도 11의 역변환부(213)의 주된 구성예를 나타내는 블록도이다. 도 12에 도시된 바와 같이, 역변환부(213)는, 역 세컨더리 변환부(231) 및 역 프라이머리 변환부(232)를 갖는다.
역 세컨더리 변환부(231)는, 역양자화부(212)로부터 공급되는 변환 계수 Coeff_IQ, 즉, 부호화 데이터가 복호되고, 역양자화되어 얻어지는 변환 계수 Coeff_IQ(세컨더리 변환 계수라고도 칭함)를 1차원의 벡터로 변환하고, 그 1차원의 벡터에 대한 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터의 스케일링을 행하고, 그 스케일링된 1차원의 벡터를 행렬화하는 변환 처리인 역 세컨더리 변환을 행한다.
역 세컨더리 변환부(231)는, 세컨더리 변환의 내용에 관한 정보인 세컨더리 변환 식별자 st_idx와, 변환 계수의 스캔 방법에 관한 정보인 스캔 식별자 scanIdx에 기초하여, 세컨더리 변환 계수 Coeff_IQ에 대해서 역 세컨더리 변환을 행하고, 역 세컨더리 변환 후의 변환 계수 Coeff_IS(프라이머리 변환 계수라고도 칭함)를 도출한다. 즉, 역 세컨더리 변환부(231)는, 세컨더리 변환 계수 Coeff_IQ를 프라이머리 변환 계수 Coeff_IS로 변환한다. 역 세컨더리 변환부(231)는, 그 프라이머리 변환 계수 Coeff_IS를, 역 프라이머리 변환부(232)에 공급한다. 또한, 역 세컨더리 변환부(231)의 상세에 대해서는 후술한다.
역 프라이머리 변환부(232)는, 역 세컨더리 변환부(231)로부터 공급되는 프라이머리 변환 계수 Coeff_IS에 대해서, 예를 들어 역직교 변환 등의 역 프라이머리 변환을 실행하고, 예측 잔차 D'를 도출한다. 즉, 역 프라이머리 변환부(232)는, 프라이머리 변환 계수 Coeff_IS를 예측 잔차 D'로 변환한다. 역 프라이머리 변환부(232)는, 도출한 예측 잔차 D'를 연산부(214)에 공급한다.
다음으로, 역 세컨더리 변환부(231)에 대하여 설명한다. 도 12에 도시된 바와 같이, 역 세컨더리 변환부(231)는, 래스터라이즈부(241), 행렬 연산부(242), 스케일링부(243), 행렬화부(244), 클립 처리부(245), 및 역 세컨더리 변환 선택부(246)를 갖는다.
래스터라이즈부(241)는, 복호부(211)로부터 공급되는 스캔 식별자 scanIdx에 의해 지정되는 변환 계수의 스캔 방법에 기초하여, 서브블록(4×4 서브블록)마다, 역양자화부(212)로부터 공급되는 변환 계수 Coeff_IQ를 1×16차원의 벡터 X1d로 변환한다. 래스터라이즈부(241)는, 얻어진 벡터 X1d를 행렬 연산부(242)에 공급한다.
역 세컨더리 변환 선택부(246)는, 복호부(211)로부터 공급되는, 세컨더리 변환의 내용에 관한 정보인 세컨더리 변환 식별자 st_idx에 의해 지정되는 역 세컨더리 변환의 행렬 IR(=RT)을, 역 세컨더리 변환 선택부(246)의 내부 메모리(도시생략)로부터 판독하고, 행렬 연산부(242)에 공급한다. 예를 들어, 역 세컨더리 변환 선택부(246)는, 어떤 세컨더리 변환 식별자 st_idx의 값일 때, 역 세컨더리 변환의 행렬 IR로서, 도 5에 도시된 16×16의 행렬 R의 전치 행렬 RT를 판독하고, 그것을 행렬 연산부(242)에 공급한다.
또한, 역 세컨더리 변환 선택부(246)가, 예를 들어 복호부(211)로부터 공급되는 세컨더리 변환 식별자 st_idx나 인트라 예측 모드 정보 IPinfo(예를 들어, 인트라 예측 모드 번호)에 따라서, 역 세컨더리 변환 IR(=RT)을 선택하도록 해도 된다. 또한, 인트라 예측 모드 정보 IPinfo 대신에, 움직임 예측 정보 MVinfo와 세컨더리 변환 식별자 st_idx에 따라서, 역변환 IR이 선택되도록 해도 된다.
행렬 연산부(242)는, 서브블록(4×4 서브블록)마다, 1×16차원의 벡터 X1d 및 역 세컨더리 변환 IR(=RT)의 행렬을 사용하여, 이하의 식 (15)에 나타낸 바와 같은 행렬 연산을 행하고, 그 결과로서 벡터 Y1d를 도출한다. 여기서, 연산자 "T"는, 전치 행렬의 조작을 나타낸다.
Figure pct00018
스케일링부(243)는, 서브블록(4×4 서브블록)마다, 행렬 연산부(242)로부터 공급되는 신호 Y1d의 놈을 정규화하기 위해서, 이하의 식 (16)에 나타낸 N(N은 자연수) 비트의 비트 시프트 연산을 신호 Y1d의 모든 요소에 대해서 행하고, 비트 시프트후의 신호 Z1d를 구한다.
Figure pct00019
또한, 이하의 식 (17)에 나타낸 바와 같이, N 비트의 시프트 연산 전에, 오프셋으로서, 1<<(N-1)의 값이, 신호 Z1d의 각 요소에 가산되도록 해도 된다. 또한, 식 (17)에 있어서, 벡터 E는, 모든 요소의 값이 1인 1×16차원의 벡터이다.
Figure pct00020
예를 들어, 역 세컨더리 변환 IR(=RT)의 행렬은, 도 5에 도시된 세컨더리 변환 R의 행렬의 전치 행렬이며, 8비트 스케일링된 행렬이기 때문에, 스케일링부(243)에 있어서, 놈의 정규화에 사용되는 N의 값은 8이다. 일반적으로, 역 세컨더리 변환의 행렬 IR(=RT)가, N 비트 스케일링되어 있는 경우, 놈 정규화의 비트 시프트량은 N 비트이다.
행렬화부(244)는, 서브블록(4×4 서브블록)마다, 놈 정규화 후의 신호 Z1d 및 스캔 식별자 scanIdx를 입력으로 하고, 복호부(211)로부터 공급되는 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 스케일링부(243)로부터 공급되는 1×16차원의 벡터 Z1d를 4×4 행렬의 변환 계수 Coeff_IS로 변환한다. 행렬화부(244)는, 얻어진 변환 계수 Coeff_IS를 클립 처리부(245)에 공급한다.
클립 처리부(245)는, 4×4 행렬의 변환 계수 Coeff_IS, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin을 입력으로 한다. 클립 처리부(245)는, 행렬화부(244)로부터 공급되는 변환 계수 Coeff_IS의 각 요소 Coeff(i, j)(i=0…3, j=0…3)에 대해서, 이하에 나타내는 식 (18)과 같이, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin에 의해 클립 처리를 행한다.
Figure pct00021
여기서, 연산자 Clip3(Xmin, Xmax, X)은, 입력값 X가, Xmin보다 작은 경우, Xmin의 값을 되돌리고, 입력값 X가 Xmax보다 큰 경우, Xmax를 되돌리고, 그 이외의 경우, 입력값 X를 되돌리는 클립 처리이다. Clip3은, Min(x, y), Max(x, y)를 사용하고, 이하의 식 (19)와 같이 표현할 수도 있다.
Figure pct00022
또한, 변환 계수의 최댓값 CoeffMax, 최솟값 CoeffMin은, 16bit 정밀도라고 하면, 이하의 값인 것이 바람직하다.
Figure pct00023
또한, 변환 계수의 최댓값 CoeffMax, 최솟값 CoeffMin의 정밀도는, 16bit 정밀도로 한정되지 않고, 일반적으로, 8bit의 정수배(M배(M>=1)) 정밀도인 것으로 해도 된다. 이 경우, 변환 계수의 최댓값 CoeffMax는, 8*M-1의 값으로 설정하고, 최솟값 CoeffMin은, -8*M으로 설정한다.
Figure pct00024
또한, 변환 계수의 최댓값 CoeffMax 및 최솟값 CoeffMin은, 입력 신호의 비트 심도 BitDepth와, 파라미터 세트(SPS/PPS 등)에 있어서 통지되는 확장 연산 정밀도 플래그 extended_precision_processing_flag에 기초하여, 상술한 식 (11) 내지 식 (13)에 의해 도출해도 된다.
식 (11) 내지 식 (13)에 의하면, 입력 신호의 비트 심도, 및 확장 연산 정밀도 플래그에 기초하여, 변환 계수의 최댓값 CoeffMax, 최댓값 CoeffMin을 결정할 수 있다. 특히, 입력 신호의 비트 심도가 큰 경우(예, 16bit)에는, 변환 계수의 정밀도가 16bit에서는 연산 정밀도가 부족하고, 부호화 효율이 저하된다. 따라서, 상기한 바와 같이 입력 신호의 비트 심도에 따라서, 변환 계수의 연산 정밀도를 제어할 수 있도록 해 두는 것이 바람직하다.
클립 처리부(245)는, 클립 처리를 행한 변환 계수 Coeff를 프라이머리 변환 계수로서 역 프라이머리 변환부(232)에 공급한다.
즉, 클립 처리부(245)에 의해 프라이머리 변환 계수 Coeff_IS가 클립 처리되고, 그 값이 소정의 최댓값 내지 최솟값의 범위 내로 제한된다. 따라서, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있으므로, 복호의 부하 증대를 억제할 수 있다. 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다.
<화상 복호 처리의 흐름>
다음으로, 이상과 같은 화상 복호 장치(200)에 의해 실행되는 각 처리의 흐름에 대하여 설명한다. 처음에, 도 13의 흐름도를 참조하여, 화상 복호 처리의 흐름의 예를 설명한다.
화상 복호 처리가 개시되면, 스텝 S201에 있어서, 복호부(211)는, 화상 복호 장치(200)에 공급되는 비트 스트림(부호화 데이터)을 복호하고, 헤더 정보 Hinfo, 예측 모드 정보 Pinfo, 변환 정보 Tinfo, 잔차 정보 Rinfo, 양자화 변환 계수 레벨 level 등의 정보를 얻는다.
스텝 S202에 있어서, 역양자화부(212)는, 스텝 S201의 처리에 의해 얻어진 양자화 변환 계수 레벨 level을 역양자화하여 변환 계수 Coeff_IQ를 도출한다. 이 역양자화는, 화상 부호화 처리의 스텝 S105(도 9)에 있어서 행해지는 양자화의 역처리이며, 화상 부호화 처리의 스텝 S106(도 9)에 있어서 행해지는 역양자화와 마찬가지의 처리이다.
스텝 S203에 있어서, 역변환부(213)는, 스텝 S202의 처리에 의해 얻어진 변환 계수 Coeff_IQ를 역변환하고, 예측 잔차 D'를 도출한다. 이 역변환은, 화상 부호화 처리의 스텝 S104(도 9)에 있어서 행해지는 변환 처리의 역처리이며, 화상 부호화 처리의 스텝 S107(도 9)에 있어서 행해지는 역변환과 마찬가지의 처리이다.
스텝 S204에 있어서, 예측부(216)는, 예측 모드 정보 PInfo에 기초하여, 부호화 시의 예측과 동일한 예측 모드에서 예측을 행하고, 예측 화상 생성한다.
스텝 S205에 있어서, 연산부(214)는, 스텝 S203의 처리에 의해 얻어진 예측 잔차 D'에, 스텝 S204의 처리에 의해 얻어진 예측 화상을 가산하고, 복호 화상을 얻는다.
스텝 S205의 처리가 종료되면, 화상 복호 처리가 종료된다.
<역변환 처리의 흐름>
다음으로 도 13의 스텝 S203에 있어서 실행되는 역변환 처리의 흐름의 예를, 도 14의 흐름도를 참조하여 설명한다.
역변환 처리가 개시되면, 스텝 S221에 있어서, 역 세컨더리 변환부(231)는, 세컨더리 변환 식별자 st_idx가 역 세컨더리 변환을 적용할지 여부(st_idx>0)를 판정한다. 세컨더리 변환 식별자 st_idx가 0이라(세컨더리 변환 식별자 st_idx가 역 세컨더리 변환의 스킵을 나타낸다)고 판정된 경우, 역 세컨더리 변환(스텝 S222 내지 스텝 S229의 처리)이 스킵되고, 처리는 스텝 S230으로 진행된다. 즉, 역 세컨더리 변환부(231)는, 변환 계수 Coeff_IQ를 프라이머리 변환 계수 Coeff_IS로서, 역 프라이머리 변환부(232)에 공급한다.
또한, 스텝 S221에 있어서, 세컨더리 변환 식별자 st_idx가 0보다 크다(세컨더리 변환 식별자 st_idx가 역 세컨더리 변환의 실행을 나타낸다)고 판정된 경우, 처리는 스텝 S222로 진행한다. 스텝 S222 내지 스텝 S229의 처리에 의해 역 세컨더리 변환이 실행된다.
스텝 S222에 있어서, 역 세컨더리 변환 선택부(246)는, 세컨더리 변환 식별자 st_idx에 의해 지정되는 역 세컨더리 변환 IR을 선택한다.
스텝 S223에 있어서, 역 세컨더리 변환부(231)는, 처리 대상의 변환 블록에 포함되는 미처리의 서브블록을 선택한다.
스텝 S224에 있어서, 래스터라이즈부(241)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 변환 계수 Coeff_IQ를 1×16차원의 벡터 X1d로 변환한다.
스텝 S225에 있어서, 행렬 연산부(242)는, 벡터 X1d와 역 세컨더리 변환 IR의 행렬 곱을 연산하고, 벡터 Y1d를 구한다.
스텝 S226에 있어서, 스케일링부(243)는, 벡터 Y1d의 놈을 정규화하고, 벡터 Z1d를 구한다.
스텝 S227에 있어서, 행렬화부(244)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 벡터 Z1d를 4×4의 행렬로 변환하고, 처리 대상의 서브블록 프라이머리 변환 계수 Coeff_IS를 구한다.
스텝 S228에 있어서, 클립 처리부(245)는, 그 처리 대상의 서브블록 프라이머리 변환 계수 Coeff_IS의 각 요소에 대해서, 최댓값 CoeffMax 및 최솟값 CoeffMin에 의한 클립 처리를 행한다. 이 클립 처리된 프라이머리 변환 계수 Coeff_IS가 역 프라이머리 변환부(232)에 공급된다.
스텝 S229에 있어서, 역 세컨더리 변환부(231)는, 처리 대상의 변환 블록의 모든 서브블록을 처리하였는지 여부를 판정한다. 미처리의 서브블록이 존재한다고 판정된 경우, 처리는 스텝 S223으로 되돌아가고, 그 이후의 처리를 반복한다. 즉, 처리 대상의 변환 블록의 각 서브블록에 대하여, 스텝 S223 내지 스텝 S229의 각 처리(역 세컨더리 변환)가 실행된다. 스텝 S229에 있어서, 모든 서브블록을 처리하였다(모든 서브블록의 역 세컨더리 변환을 행하였다)고 판정된 경우, 처리는 스텝 S230으로 진행한다.
스텝 S230에 있어서, 역 프라이머리 변환부(232)는, 프라이머리 변환 식별자pt_idx에 기초하여, 프라이머리 변환 계수 Coeff_IS에 대한 역 프라이머리 변환을 행하고, 예측 잔차 D'를 도출한다. 이 예측 잔차 D'는, 연산부(214)에 공급된다.
스텝 S230의 처리가 종료되면, 역변환 처리가 종료되고, 처리는 도 13으로 되돌아간다.
또한, 이상의 역변환 처리는, 실시 가능한 범위에서, 각 스텝의 처리순의 변경이나, 처리의 내용을 변경해도 된다. 예를 들어, 스텝 S221에 있어서 세컨더리 변환 식별자 st_idx가 0이라고 판정된 경우, 16×16의 단위 행렬이 역 세컨더리 변환 IR로서 선택되고, 스텝 S222 내지 스텝 S229의 각 처리가 실행되도록 해도 된다. 또한, 스텝 S226에서 도출되는 벡터 Y1d의 놈 정규화 후의 벡터 Z1d에 대해서, 스텝 S228의 클립 처리를 실행하고, 그 후, 스텝 S227의 행렬화의 처리를 행해도 된다.
이상과 같이 각 처리를 실행함으로써, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다. 또한, 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다.
또한, 이상에 있어서는 상한값 및 하한값을 이용하여 변환 계수를 클립하도록 설명하였지만, 상한값 또는 하한값의 어느 한쪽만을 사용하여 변환 계수를 클립하도록 해도 된다.
<2. 제2 실시 형태>
<놈 정규화 시의 비트 시프트량 제어>
또한, 세컨더리 변환이나 역 세컨더리 변환에 있어서, 변환 계수를 클립 처리하는 대신에, 1차원의 벡터의 시프트량을 도출하고, 행렬 연산이 행해진 1차원의 벡터에 대해서, 그 도출한 시프트량에 따른 스케일링을 행하도록 해도 된다.
이와 같이 하여도, 제1 실시 형태의 경우와 마찬가지로, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제하여, 부호화·복호의 부하 증대를 억제할 수 있다. 또한, 이 경우, 클립 처리를 행하지 않고, 부호화·복호의 부하 증대를 억제할 수 있다.
<변환부>
이 경우도 화상 부호화 장치(100)는, 제1 실시 형태의 경우와 기본적으로 마찬가지의 구성을 갖는다. 단, 이 경우의 화상 부호화 장치(100)는, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와, 그 1차원의 벡터의 시프트량을 도출하는 시프트량 도출부와, 그 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와, 그 행렬 연산이 행해진 1차원의 벡터에 대해서, 시프트량 도출부에 의해 도출되는 시프트량에 따른 스케일링을 행하는 스케일링부와, 스케일링된 1차원의 벡터를 행렬화하는 행렬화부를 구비한다. 즉, 이 경우의 변환부(112)는, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터의 시프트량을 도출하여, 그 1차원의 벡터에 대한 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터에 대해서, 도출되는 시프트량에 따른 스케일링을 행하고, 그 스케일링된 1차원의 벡터를 행렬화한다.
도 15는, 이 경우의 변환부(112)의 주된 구성예를 나타내는 블록도이다. 도 15에 도시된 바와 같이, 이 경우도 변환부(112)는, 기본적으로 제1 실시 형태의 경우(도 8)와 마찬가지의 구성을 갖는다. 단, 이 경우의 세컨더리 변환부(132)는, 스케일링부(143) 및 클립 처리부(145) 대신에 시프트량 도출부(301) 및 스케일링부(302)를 갖는다.
시프트량 도출부(301)는, 비트 심도의 최댓값(최대 비트 심도) bitDepthMax, 중간 버퍼의 비트 심도의 최댓값(중간 버퍼 최대 비트 심도) bitDepthMaxBuffer 및 세컨더리 행렬 R을 입력으로 한다. 시프트량 도출부(301)는, 상술한 식 (2)와 같이 세컨더리 변환 후의 변환 계수 Coeff의 다이내믹 레인지의 상한값 MaxVal을 추정한다. 여기서, A에는, 1<<(bitDepthMax-1)의 값이 설정된다. 또한, T는, 세컨더리 변환 R이 설정된다.
다음으로, 세컨더리 변환 R의 다이내믹 레인지의 상한값 MaxVal과, 중간 버퍼의 상한값 MaxValBuffer(=1<<(bitDepthMaxBuffer-1)=215-1=32767)과의 차 DiffMaxVal을 이하의 식 (20)에 의해 도출한다. 여기에서는, bitDepthMaxBuffer의 값을 16으로 하고 있다.
Figure pct00025
계속해서, 차 DiffMaxVal의 2를 밑으로 하는 대수값 log2DiffMaxVal을 이하의 식 (21)에 의해 도출한다. 또한, 식 (21)에서는, 차 DiffMaxVal은 0 이상의 정수라고 가정하고 있다. 또한, 2를 밑으로 하는 대수 log2(·)에 입력하는 값은, 차 DiffMaxVal의 절댓값 |DiffMaxVal|이어도 된다.
Figure pct00026
도출한 대수값 log2DiffMaxVal에 대해서, 천장 함수 Ceil(·)을 적용하고, 스케일링부(302)에 있어서, 세컨더리 변환 후의 변환 계수 Coeff에 대해서, 우측 비트 시프트 하는 시프트량 S를 이하의 식 (22)에 나타낸 바와 같이 도출한다. 또한, 천장 함수 Ceil(·) 대신에, 바닥 함수 Floor(·)을 사용하여, 시프트량 S를, 이하의 식 (23)에 나타낸 바와 같이 도출해도 된다.
Figure pct00027
시프트량 도출부(301)는, 이상과 같이 구한 시프트량 S를 스케일링부(302)에 공급한다. 또한, 시프트량 도출부(301)는, 식 (2), 식 (20), 식 (21), 식 (22), 및 식 (23)을 통해서 시프트량 S를 도출하지만 이것으로 한정되지 않는다. 예를 들어, 시프트량 도출부(301)는, 각 세컨더리 변환 R마다 대응하는 시프트량 S를 미리 도출해 두고, 룩업 테이블에 저장하여, 세컨더리 변환 식별자 st_idx에 의해 지정되는 세컨더리 변환 R에 해당하는 시프트량 S를 룩업 테이블로부터 판독하고, 스케일링부(302)에 공급하도록 해도 된다. 이 경우, 시프트량 S를 도출하는 처리량을 저감할 수 있다.
스케일링부(302)는, 행렬 연산부(142)로부터 입력된 신호 Y1d 및 시프트량 S를 입력으로 한다. 스케일링부(302)는, 서브블록 단위(4×4 서브블록)마다, 행렬 연산부(142)로부터 입력된 신호 Y1d의 놈의 정규화 및 다이내믹 레인지를 중간 버퍼의 다이내믹 레인지 bitDepthMaxBuffer로 억제하기 위해서, 이하의 식 (24)에 나타낸 바와 같이, (N+S) 비트의 비트 시프트 연산을 신호 Y1d의 모든 요소에 대해서 행한다.
Figure pct00028
또한, 이하의 식 (25)에 나타낸 바와 같이, (N+S) 비트의 시프트 연산 전에, 오프셋으로서, 1<<(N-1)의 값을, 신호 Z1d의 각 요소로 가산해도 된다. 또한, 식 (25)에 있어서, 벡터 E는, 모든 요소의 값이 1인 1×16차원의 벡터이다.
Figure pct00029
예를 들어, 도 5에 도시한 세컨더리 변환 R의 행렬은, 8비트 스케일링된 행렬이기 때문에, 스케일링부(302)에 있어서, 놈의 정규화에 사용하는 N의 값은 8이다. 일반적으로, 세컨더리 변환의 행렬 R이, N 비트 스케일링되어 있는 경우, 놈 정규화의 비트 시프트량은, N 비트이다.
즉, 시프트량 도출부(301)가, 세컨더리 변환 후의 변환 계수 Coeff가 중간 버퍼의 다이내믹 레인지 내에 수렴되도록 다이내믹 레인지를 보정하기 위한 시프트량 S를 도출한다. 그리고, 스케일링부(302)가, 그 도출된 시프트량 S와 놈 정규화의 시프트량 N에 기초하여, 행렬 연산이 행해진 1차원의 벡터 Y1d에 대해서, (N+S)의 우측 비트 시프트를 행하고, 중간 버퍼의 다이내믹 레인지 내에 수렴되도록 보정한다. 따라서, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있으므로, 부호화의 부하 증대를 억제할 수 있다. 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다. 이 경우, 클립 처리를 생략할 수 있다.
<변환 처리의 흐름>
다음으로 화상 부호화 장치(100)에 의해 실행되는 각 처리의 흐름의 예를 설명한다. 이 경우 화상 부호화 장치(100)는, 화상 부호화 처리를, 제1 실시 형태의 경우(도 9)와 기본적으로 마찬가지로 행한다. 이 경우의 변환 처리의 흐름의 예를, 도 16의 흐름도를 참조하여 설명한다.
변환 처리가 개시되면, 스텝 S301 내지 스텝 S303의 각 처리는, 도 10의 스텝 S121 내지 스텝 S123의 각 처리와 마찬가지로 실행된다.
스텝 S304에 있어서, 시프트량 도출부(301)는, 비트 심도의 최댓값(최대 비트 심도) bitDepthMax, 중간 버퍼의 비트 심도의 최댓값(중간 버퍼 최대 비트 심도) bitDepthMaxBuffer, 및 세컨더리 변환 행렬 R에 기초하여, 시프트량 S를 도출한다.
스텝 S305 내지 스텝 S307의 각 처리는, 도 10의 스텝 S124 내지 스텝 S126의 각 처리와 기본적으로 마찬가지로 실행된다.
스텝 S308에 있어서, 스케일링부(302)는, 시프트량 N 및 시프트량 S를 사용하여 벡터 Y1d의 놈을 정규화하고, 벡터 Z1d를 구한다.
스텝 S309 및 스텝 S310의 각 처리는, 도 10의 스텝 S129 및 스텝 S130의 각 처리와 마찬가지로 실행된다.
스텝 S310에 있어서, 모든 서브블록을 처리하였다(모든 서브블록의 세컨더리 변환을 행하였다)고 판정된 경우, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다. 또한, 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다. 또한, 클립 처리를 생략할 수 있다.
<역변환부>
다음으로 화상 복호 장치(200)에 대하여 설명한다. 이 경우도 화상 복호 장치(200)는, 제1 실시 형태의 경우와 기본적으로 마찬가지의 구성을 갖는다. 단, 이 경우의 화상 복호 장치(200)는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와, 그 1차원의 벡터의 시프트량을 도출하는 시프트량 도출부와, 그 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와, 그 행렬 연산이 행해진 1차원의 벡터에 대해서, 시프트량 도출부에 의해 도출되는 시프트량에 따른 스케일링을 행하는 스케일링부와, 그 스케일링된 1차원의 벡터를 행렬화하는 행렬화부를 구비한다. 즉, 역변환부(213)는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터의 시프트량을 도출하여, 그 1차원의 벡터에 대한 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터에 대해서, 도출되는 시프트량에 따른 스케일링을 행하고, 그 스케일링된 1차원의 벡터를 행렬화한다.
도 17은, 이 경우의 역변환부(213)의 주된 구성예를 나타내는 블록도이다. 도 17에 도시된 바와 같이, 이 경우도 역변환부(213)는, 기본적으로 제1 실시 형태의 경우(도 12)와 마찬가지의 구성을 갖는다. 단, 이 경우의 역 세컨더리 변환부(231)는, 스케일링부(243) 및 클립 처리부(245) 대신에 시프트량 도출부(311) 및 스케일링부(312)를 갖는다.
시프트량 도출부(311)는, 비트 심도의 최댓값(최대 비트 심도) bitDepthMax, 중간 버퍼의 비트 심도의 최댓값(중간 버퍼 최대 비트 심도) bitDepthMaxBuffer, 및 역 세컨더리 행렬 IR을 입력으로 한다. 시프트량 도출부(311)는, 상술한 식 (2)와 같이 역 세컨더리 변환 후의 프라이머리 변환 계수 Coeff_IS의 다이내믹 레인지의 상한값 MaxVal을 추정한다. 여기서, A에는, 1<<(bitDepthMax-1)의 값이 설정된다. 또한, T는 역 세컨더리 변환 IR이 설정된다.
다음으로, 역 세컨더리 변환 IR의 다이내믹 레인지의 상한값 MaxVal과, 중간 버퍼의 상한값 MaxValBuffer(=1<<(bitDepthMaxBuffer-1)=215-1=32767)과의 차 DiffMaxVal을 이하의 식 (26)에 의해 도출한다. 여기에서는, bitDepthMaxBuffer의 값을 16이라고 하고 있다.
Figure pct00030
계속해서, 차 DiffMaxVal의 2를 밑으로 하는 대수값 log2DiffMaxVal을 이하의 식 (27)에 의해 도출한다. 또한, 이 식 (27)에서는, 차 DiffMaxVal은 0 이상의 정수라고 가정하고 있다. 또한, 2를 밑으로 하는 대수 log2(·)에 입력하는 값은, 차 DiffMaxVal의 절댓값 |DiffMaxVal|이어도 된다.
Figure pct00031
도출한 대수값 log2DiffMaxVal에 대해서, 천장 함수 Ceil(·)을 적용하고, 스케일링부(312)에 있어서, 역 세컨더리 변환 후의 변환 계수 Coeff_IS에 대해서, 우측 비트 시프트 하는 시프트량 S를 이하의 식 (28)에 나타낸 바와 같이 도출한다. 또한, 천장 함수 Ceil(·) 대신에 바닥 함수 Floor(·)을 사용하여, 시프트량 S를, 이하의 식 (29)에 나타낸 바와 같이 도출해도 된다.
Figure pct00032
Figure pct00033
Figure pct00034
시프트량 도출부(311)는, 이상과 같이 구한 시프트량 S를 스케일링부(312)에 공급한다. 또한, 시프트량 도출부(311)는, 식 (2), 식 (26), 식 (27), 식 (28), 및 식 (29)를 통하여 시프트량 S를 도출하지만 이것으로 한정되지 않는다. 예를 들어, 시프트량 도출부(311)는, 각 역 세컨더리 변환 IR마다 대응하는 시프트량 S를 미리 도출해 두고, 룩업 테이블에 저장하고, 세컨더리 변환 식별자 st_idx에 의해 지정되는 역 세컨더리 변환 IR에 해당하는 시프트량 S를 룩업 테이블로부터 판독하고, 스케일링부(312)에 공급하도록 해도 된다. 이 경우, 시프트량 S를 도출하는 처리량을 저감할 수 있다.
스케일링부(312)은, 행렬 연산부(242)로부터 입력되는 신호 Y1d 및 시프트량 도출부(311)로부터 공급되는 시프트량 S를 입력으로 한다. 스케일링부(312)는, 서브블록 단위(4×4 서브블록)마다, 행렬 연산부(242)로부터 입력된 신호 Y1d의 놈의 정규화 및 다이내믹 레인지를 중간 버퍼의 다이내믹 레인지 bitDepthMaxBuffer로 억제하기 위해서, 이하의 식 (30)에 나타낸 바와 같이, (N+S) 비트의 비트 시프트 연산을 신호 Y1d의 모든 요소에 대해서 행한다.
Figure pct00035
또한, 이하의 식 (31)에 나타낸 바와 같이, (N+S) 비트의 시프트 연산 전에, 오프셋으로서, 1<<(N-1)의 값을, 신호 Z1d의 각 요소에 가산해도 된다. 또한, 식 (31)에 있어서, 벡터 E는, 모든 요소의 값이 1인 1×16차원의 벡터이다.
Figure pct00036
예를 들어, 도 5에 도시된 세컨더리 변환 R의 전치 행렬인 역 세컨더리 변환 IR(=RT)의 행렬은, 8비트 스케일링된 행렬이기 때문에, 스케일링부(312)에 있어서, 놈의 정규화에 사용하는 N의 값은 8이다. 일반적으로, 역 세컨더리 변환의 행렬 IR(=RT)가, N 비트 스케일링되어 있는 경우, 놈 정규화의 비트 시프트량은, N 비트이다.
즉, 시프트량 도출부(311)가, 역 세컨더리 변환 후의 프라이머리 변환 계수 Coeff_IS가 중간 버퍼의 다이내믹 레인지 내에 수렴되도록 다이내믹 레인지를 보정하기 위한 시프트량 S를 도출한다. 그리고, 스케일링부(312)가, 그 도출된 시프트량 S와 놈 정규화의 시프트량 N에 기초하여, 행렬 연산이 행해진 1차원의 벡터 Y1d에 대해서, (N+S)의 우측 비트 시프트를 행하고, 중간 버퍼의 다이내믹 레인지 내에 수렴되도록 보정한다. 따라서, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있으므로, 복호의 부하 증대를 억제할 수 있다. 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다. 이 경우, 클립 처리를 생략할 수 있다.
<역변환 처리의 흐름>
다음으로 화상 복호 장치(200)에 의해 실행되는 각 처리의 흐름의 예를 설명한다. 이 경우 화상 복호 장치(200)는, 화상 복호 처리를, 제1 실시 형태의 경우(도 13)와 기본적으로 마찬가지로 행한다. 이 경우의 역변환 처리의 흐름의 예를, 도 18의 흐름도를 참조하여 설명한다.
변환 처리가 개시되면, 스텝 S321 및 스텝 S322의 각 처리는, 도 14의 스텝 S221 및 스텝 S222의 각 처리와 마찬가지로 실행된다.
스텝 S323에 있어서, 시프트량 도출부(311)는, 비트 심도의 최댓값(최대 비트 심도) bitDepthMax, 중간 버퍼의 비트 심도의 최댓값(중간 버퍼 최대 비트 심도) bitDepthMaxBuffer, 및 역 세컨더리 변환 행렬 IR에 기초하여, 시프트량 S를 도출한다.
스텝 S324 내지 스텝 S326의 각 처리는, 도 14의 스텝 S223 내지 스텝 S225의 각 처리와 기본적으로 마찬가지로 실행된다.
스텝 S327에 있어서, 스케일링부(312)는, 시프트량 N 및 시프트량 S를 사용하여 벡터 Y1d의 놈을 정규화하고, 벡터 Z1d를 구한다.
스텝 S328 내지 스텝 S330의 각 처리는, 도 14의 스텝 S227, 스텝 S229, 및 스텝 S230의 각 처리와 마찬가지로 실행된다.
스텝 S330의 처리가 종료되면, 역변환 처리가 종료되고, 처리는 도 13으로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 변환 계수의 다이내믹 레인지 폭을 소정의 범위 내(예를 들어 16비트)로 억제할 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다. 또한, 이에 의해, 변환 계수를 저장하는 중간 버퍼의 사이즈 증대를 억제할 수 있어, 비용의 증대를 억제할 수 있다. 또한, 클립 처리를 생략할 수 있다.
<3. 제3 실시 형태>
<행렬 연산>
비특허문헌 1에는, 프라이머리 변환(기존의 DCT/DST 등에 의한 직교 변환)을 행한 후에, 또한 에너지 컴팩션을 높이기(저역으로 변환 계수를 집중시키기) 위해서, 4×4 서브블록 단위로, 비 세퍼러블 세컨더리 변환을 적용하는 것이 개시되어 있다. 또한, 비특허문헌 2에는, 마찬가지로, 하이퍼큐브 기븐스 변환(Hypercube-Givens Transform)(HyGT라고도 칭함) 베이스의 비 세퍼러블 세컨더리 변환을 4×4 서브블록 단위로 적용하는 것이 개시되어 있다. 또한, 요소 수 16에 관한 HyGT를 16점 HyGT(또는 16-points HyGT)라고도 칭한다. 또한, 요소 수 2N에 관한 HyGT를 2N점 HyGT(또는 2N-points HyGT)라고도 칭한다.
그러나, 비특허문헌 1에 기재된 방법 및 비특허문헌 2에 기재된 방법의 어느 것에서도, 세컨더리 변환은, 비 세퍼러블이기 때문에, 연산량이 많았다. 또한, 인트라 예측 모드의 클래스 수와 각 클래스에 대응하는 세컨더리 변환의 수만큼, 세컨더리 변환의 행렬을 갖고 있으며, 세컨더리 변환의 행렬을 유지하는 메모리 사이즈가 증대될 우려가 있었다. 즉, 부호화·복호의 부하가 증대될 우려가 있었다.
예를 들어, 비특허문헌 1에 기재된 방법의 경우, 인트라 예측 모드의 클래스 수=12이며, 각 클래스에 대한 세컨더리 변환의 수=3이며, 12*3=36의 행렬이 존재한다. 비특허문헌 2에 기재된 방법의 경우, 인트라 예측 모드의 클래스 수=35이며, 각 클래스에 대한 세컨더리 변환의 수=5이며, 35*5=175의 행렬이 존재한다.
예를 들어, 각 행렬의 요소를 9bit 정밀도로 유지하는 것으로 한다. 비특허문헌 1에 기재된 방법에 있어서, 전체 세컨더리 변환의 행렬을 유지하는 데 요하는 메모리 사이즈는, 9bit*16*16*36=829944bits=10368bytes=10.125KB이다. 또한, 비특허문헌 2에 기재된 방법에 있어서, 전체 세컨더리 변환의 행렬을 유지하는 데 요하는 메모리 사이즈는, 9bit*16*16*175=403200bits=50400bytes=49.21875KB이다.
<행렬 연산의 분해>
그래서, 세컨더리 변환이나 역 세컨더리 변환에 있어서, 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하도록 한다.
예를 들어, 비특허문헌 2에 기재된 16점 HyGT를 4개의 직교 행렬과 3개의 치환 행렬로 분해하고, 세퍼러블 직교 변환으로 하고, 이러한 세퍼러블 직교 변환을 이용하여 세컨더리 변환이나 역 세컨더리 변환을 행하도록 한다.
비특허문헌 2에 기재된 16점 HyGT의 모습의 예를 도 19의 A에 나타낸다. 이 16점 HyGT의 사각(401)은, 도 19의 B에 나타낸 바와 같은 회전 행렬(기븐스 변환(Givens Transform))이다. 즉, HyGT는, 이러한 복수의 회전 행렬에 의해 구성된다.
그래서, 도 20에 도시된 바와 같이, 사각(402)으로 나타낸 바와 같은 16점 HyGT의 i단째의 변환(또는 조작이라고도 칭함)을 변환(조작) Ti로 하고, 점선(403)로 둘러싸이는, 그 변환(조작) Ti의 j번째의 회전 행렬을 회전 행렬 Gi,j로 한다.
<1단째의 조작>
우선, 16점 HyGT의 1단째의 조작(도 21의 A에 있어서 프레임(411)으로 둘러싸인 부분)에 대하여 설명한다. 도 21의 B는, 이 1단째의 조작 T1을 확대해서 모식화한 것이다. 도 21의 B에 도시된 바와 같이, 이 1단째의 조작 T1은, G1,1 내지 G1,8의 8개의 회전 행렬로 이루어지는 직교 변환으로 이루어진다.
즉, 이 1단째의 조작 T1은, 이하의 식 (32)와 같이, 회전 행렬 G1,j를 대각 성분으로 갖고, 그 이외의 요소가 0인 성긴 직교 행렬 F1로서 표현할 수 있다. 또한, 각 회전 행렬 Gi,j는, 식 (33)과 같이 표시할 수 있다.
Figure pct00037
Figure pct00038
<2단째의 조작>
다음으로 HyGT의 2단째의 조작(도 22의 A에 있어서 프레임(412)으로 둘러싸인 부분)에 대하여 설명한다. 도 22의 B는, 이 2단째의 조작 T2를 확대해서 모식화한 것이다. 도 22의 B에 도시된 바와 같이, 이 2단째의 조작 T2는, 치환 δ1, G2,1 내지 G2,8의 회전 행렬로 이루어지는 직교 변환 및 역치환 δ1T로 이루어진다. 치환 δ1은, 이하의 식 (34)와 같이 표시할 수 있다.
Figure pct00039
또한, 이 치환 δ1은, 이하의 식 (35)에 나타낸 바와 같이, 행렬 P를 사용하여 치환 행렬 P1로서 나타낼 수도 있다. 이 행렬 P는, 식 (36)과 같이 표시할 수 있다.
Figure pct00040
Figure pct00041
또한, 역치환 δ1T는, 치환 행렬 P1의 전치 행렬 P1 T로서 표시할 수 있다. 또한, 2단째의 직교 변환은, 식 (37)과 같이, 회전 행렬 G2,j를 대각 성분으로 갖고, 그 이외의 요소가 0인 성긴 직교 행렬 F2로서 표현할 수 있다.
Figure pct00042
즉, 2단째의 조작 T2는, 이하의 식 (38)과 같이, 행렬 분해하여 표현할 수 있다.
Figure pct00043
<3단째의 조작>
다음으로 HyGT의 3단째의 조작(도 23의 A에 있어서 프레임(413)으로 둘러싸인 부분)에 대하여 설명한다. 도 23의 B는, 이 3단째의 조작 T3을 확대해서 모식화한 것이다. 도 23의 B에 도시된 바와 같이, 이 3단째의 조작 T3은, 치환 δ2, G3,1 내지 G3,8의 회전 행렬로 이루어지는 직교 변환 및 역치환 δ2T로 이루어진다. 치환 δ2는, 이하의 식 (39)와 같이 표시할 수 있다.
Figure pct00044
또한, 이 치환 δ2는, 이하의 식 (40)에 나타낸 바와 같이, 행렬 P를 사용하여 치환 행렬 P2로서 표시할 수도 있다. 이 행렬 P는, 식 (41)과 같이 표시할 수 있다.
Figure pct00045
Figure pct00046
또한, 역치환 δ2T는, 치환 행렬 P2의 전치 행렬 P2 T로서 표시할 수 있다. 또한, 3단째의 직교 변환은, 식 (42)와 같이, 회전 행렬 G3,j를 대각 성분으로 갖고, 그 이외의 요소가 0인 성긴 직교 행렬 F3으로서 표현할 수 있다.
Figure pct00047
즉, 3단째의 조작 T3은, 이하의 식 (43)과 같이, 행렬 분해하여 표현할 수 있다.
Figure pct00048
<4단째의 조작>
다음으로 HyGT의 4단째의 조작(도 24의 A에 있어서 프레임(414)으로 둘러싸인 부분)에 대하여 설명한다. 도 24의 B는, 이 4단째의 조작 T4를 확대해서 모식화한 것이다. 도 24의 B에 도시된 바와 같이, 이 4단째의 조작 T4는, 치환 δ3, G4,1 내지 G4,8의 회전 행렬로 이루어지는 직교 변환 및 역치환 δ3T로 이루어진다. 치환 δ3은, 이하의 식 (44)와 같이 표시할 수 있다.
Figure pct00049
또한, 이 치환 δ3은, 이하의 식 (45)에 나타낸 바와 같이, 치환 행렬 P3으로서 표시할 수도 있다.
Figure pct00050
또한, 역치환 δ3T는, 치환 행렬 P3의 전치 행렬 P3 T로서 나타낼 수 있다. 또한, 4단째의 직교 변환은, 식 (46)과 같이, 회전 행렬 G4,j를 대각 성분으로 갖고, 그 이외의 요소가 0인 성긴 직교 행렬 F4로서 표현할 수 있다.
Figure pct00051
즉, 4단째의 조작 T4는, 이하의 식 (47)과 같이, 행렬 분해하여 표현할 수 있다.
Figure pct00052
이상으로부터, 16점 HyGT(세컨더리 변환의 행렬 R)는, 이하의 식 (48)과 같이 행렬 분해하여 표현할 수 있다. 마찬가지로, inverse HyGT(역 세컨더리 변환의 행렬 IR(=R-1))은, 이하의 식 (49)와 같이 행렬 분해하여 표현할 수 있다.
Figure pct00053
Figure pct00054
비특허문헌 2에 기재된 비 세퍼러블 세컨더리 변환의 경우와, 이상과 같이 행렬 분해한 세퍼러블 세컨더리 변환의 경우에서, 승산과 가산의 처리 수를 비교한 결과를 도 25의 A의 표에 나타낸다. 도 25의 A의 표에 나타낸 바와 같이, 행렬 분해함으로써, 승산이나 가산의 처리 수를 저감할 수 있다.
또한, 비특허문헌 2에 기재된 비 세퍼러블 세컨더리 변환의 경우와, 이상과 같이 행렬 분해한 세퍼러블 세컨더리 변환의 경우에서, 세컨더리 변환의 행렬 정보량(1 변환당)과, 그 행렬을 유지하는 데 필요한 메모리 사이즈를 비교한 결과를 도 25의 B의 표에 나타낸다. 행렬 분해함으로써, 행렬 분해한 각 직교 변환의 소행렬의 성질 및 계수의 대칭성을 이용하여, 세컨더리 변환으로서 유지하는 계수의 수를 저감할 수 있다. 따라서, 도 25의 B의 표에 나타낸 바와 같이, 세컨더리 변환의 행렬 정보량을 저감할 수 있어, 필요한 메모리 사이즈의 증대를 억제할 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
<변환부>
이 경우도 화상 부호화 장치(100)는, 제1 실시 형태의 경우와 기본적으로 마찬가지의 구성을 갖는다. 단, 이 경우의 화상 부호화 장치(100)는, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하는 행렬 연산부와, 그 행렬 연산이 행해진 1차원의 벡터에 대해서 스케일링을 행하는 스케일링부와, 그 스케일링된 1차원의 벡터를 행렬화하는 행렬화부를 구비한다. 즉, 이 경우의 변환부(112)는, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터에 대해서 스케일링을 행하고, 그 스케일링된 1차원의 벡터를 행렬화한다.
도 26은, 이 경우의 변환부(112)의 주된 구성예를 나타내는 블록도이다. 도 26에 도시된 바와 같이, 이 경우도 변환부(112)는, 기본적으로 제1 실시 형태의 경우(도 8)와 마찬가지의 구성을 갖는다. 단, 이 경우의 세컨더리 변환부(132)는, 행렬 연산부(142) 대신에 행렬 연산부(421)를 갖는다. 또한, 이 경우, 클립 처리부(145)는 생략할 수 있다. 또한, 행렬 연산부(421)에서는, N 비트 스케일링된 복수의 직교 행렬을 사용하여, 복수회(M회)의 행렬 곱으로 이루어지는 행렬 연산을 행하기 때문에, 다이내믹 레인지는, M*N 비트로 된다. 따라서, 스케일링부(143)는, 벡터 Y1d의 놈을 정규화하기 위해서 사용하는 시프트량은, (M*N)이다.
행렬 연산부(421)는, 래스터라이즈부(141)로부터 공급되는 1차원의 벡터에 대해서, 세컨더리 변환 R의 행렬을 행렬 분해한 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행한다.
<행렬 연산부(16점 HyGT부)>
도 27은, 행렬 연산부(421)의 주된 구성예를 나타내는 블록도이다. 도 27에 도시된 바와 같이, 행렬 연산부(421)는, 회전 조작부(431), 치환 조작부(432), 회전 조작부(433), 치환 조작부(434), 회전 조작부(435), 치환 조작부(436), 회전 조작부(437) 및 치환 조작부(438)를 갖는다. 또한, 행렬 연산부(421)는, 16점 HyGT부(421)라고도 칭한다.
회전 조작부(431)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 F1과, 래스터라이즈부(141)로부터 공급되는 행 벡터 X1d와의 행렬 곱 A1d를 구한다. 회전 조작부(431)는, 그 행렬 곱 A1d를 치환 조작부(432)에 공급한다.
치환 조작부(432)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P1과, 회전 조작부(431)로부터 공급되는 행렬 곱 A1d와의 행렬 곱 B1d를 구한다. 치환 조작부(432)는, 그 행렬 곱 B1d를 회전 조작부(433)에 공급한다.
회전 조작부(433)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 F2와, 치환 조작부(432)로부터 공급되는 행렬 곱 B1d와의 행렬 곱 C1d를 구한다. 회전 조작부(433)는, 그 행렬 곱 C1d를 치환 조작부(434)에 공급한다.
치환 조작부(434)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P2와, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P1의 전치 행렬 P1 T와, 회전 조작부(433)로부터 공급되는 행렬 곱 C1d와의 행렬 곱 D1d를 구한다. 치환 조작부(434)는, 그 행렬 곱 D1d를 회전 조작부(435)에 공급한다.
회전 조작부(435)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 F3과, 치환 조작부(434)로부터 공급되는 행렬 곱 D1d와의 행렬 곱 E1d를 구한다. 회전 조작부(435)는, 그 행렬 곱 E1d를 치환 조작부(436)에 공급한다.
치환 조작부(436)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P3과, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P2의 전치 행렬 P2 T와, 회전 조작부(435)로부터 공급되는 행렬 곱 E1d와의 행렬 곱 G1d를 구한다. 치환 조작부(436)는, 그 행렬 곱 G1d를 회전 조작부(437)에 공급한다.
회전 조작부(437)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 F4와, 치환 조작부(436)로부터 공급되는 행렬 곱 G1d와의 행렬 곱 H1d를 구한다. 회전 조작부(437)는, 그 행렬 곱 H1d를 치환 조작부(438)에 공급한다.
치환 조작부(438)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 치환 행렬 P3의 전치 행렬 P3 T와, 회전 조작부(437)로부터 공급되는 행렬 곱 H1d와의 행렬 곱 Y1d를 구한다. 치환 조작부(436)는, 그 행렬 곱 Y1d를 스케일링부(143)에 공급한다.
이상과 같이, 행렬 연산부(421)는, 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
<변환 처리의 흐름>
다음으로, 화상 부호화 장치(100)에 의해 실행되는 각 처리의 흐름의 예를 설명한다. 이 경우 화상 부호화 장치(100)는, 화상 부호화 처리를, 제1 실시 형태의 경우(도 9)와 기본적으로 마찬가지로 행한다. 이 경우의 변환 처리의 흐름의 예를, 도 28의 흐름도를 참조하여 설명한다.
변환 처리가 개시되면, 스텝 S401 내지 스텝 S409의 각 처리는, 도 10의 스텝 S121 내지 스텝 S128, 및 스텝 S130의 각 처리와 기본적으로 마찬가지로 실행된다.
단, 이 경우, 스텝 S406의 처리에 있어서, 행렬 연산은, 세컨더리 변환의 행렬 R을 상술한 바와 같이 행렬 분해하여 행해진다.
<행렬 연산 처리의 흐름>
도 29의 흐름도를 참조하여, 도 28의 스텝 S406에 있어서 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S421에 있어서, 회전 조작부(431)는, 직교 행렬 F1행 벡터 X1d와의 행렬 곱 A1d를 구한다.
스텝 S422에 있어서, 치환 조작부(432)는, 치환 행렬 P1과 행렬 곱 A1d와의 행렬 곱 B1d를 구한다.
스텝 S423에 있어서, 회전 조작부(433)는, 직교 행렬 F2와 행렬 곱 B1d와의 행렬 곱 C1d를 구한다.
스텝 S424에 있어서, 치환 조작부(434)는, 치환 행렬 P2와 치환 행렬 P1의 전치 행렬 P1 T와 행렬 곱 C1d와의 행렬 곱 D1d를 구한다.
스텝 S425에 있어서, 회전 조작부(435)는, 직교 행렬 F3과 행렬 곱 D1d와의 행렬 곱 E1d를 구한다.
스텝 S426에 있어서, 치환 조작부(436)는, 치환 행렬 P3과 치환 행렬 P2의 전치 행렬 P2 T와 행렬 곱 E1d와의 행렬 곱 G1d를 구한다.
스텝 S427에 있어서, 회전 조작부(437)는, 직교 행렬 F4와 행렬 곱 G1d와의 행렬 곱 H1d를 구한다.
스텝 S428에 있어서, 치환 조작부(438)는, 치환 행렬 P3의 전치 행렬 P3 T와 행렬 곱 H1d와의 행렬 곱 Y1d를 구한다.
스텝 S428의 처리가 종료되면, 처리는 도 28로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
또한, 본 실시 형태에서는, 행렬 연산부(421)에 있어서, N 비트 스케일링된 복수의 직교 행렬을 사용하여, 복수회(M회)의 행렬 곱으로 이루어지는 행렬 연산을 행하기 때문에, 다이내믹 레인지는, M*N 비트가 된다. 따라서, 스케일링부(143)는, 벡터 Y1d의 놈을 정규화하기 위해서 사용하는 시프트량은, (M*N)하고 있지만 이것으로 한정되지 않는다. 예를 들어, 도 27의 행렬 연산부(421)에 있어서, 회전 조작부(437)를 제외하고, 각 회전 조작부(회전 조작부(431), 회전 조작부(433), 회전 조작부(435))의 후에, 각 회전 조작부에서 얻어지는 행렬 곱의 놈을 정규화하기 위한 스케일링부를 각각 배치해도 된다. 이 경우, 각 스케일링부(스케일링부(143)를 포함함)에 있어서의 놈을 정규화하기 위한 시프트량은, N이다.
또한, 각 회전 조작부의 후에, 스케일링부를 배치하는 대신, 복수의 회전 조작후의 행렬 곱에 대하여, 놈을 정규화하게 스케일링부를 배치해도 된다. 예를 들어, 회전 조작부(431), 치환 조작부(432) 및 회전 조작부(433)를 통해서 얻어지는 행렬 곱을 정규화하기 위한 스케일링부를, 회전 조작부(433)의 후에 배치하고, 행렬 곱의 놈 정규화를 행한다. 마찬가지로, 치환 조작부(434), 회전 조작부(435), 치환 조작부(436) 및 회전 조작부(437)를 통해서 얻어지는 행렬 곱을 스케일링부(143)에 있어서, 놈의 정규화를 행해도 된다. 이 경우, 각 스케일링부에 있어서의 놈을 정규화하기 위한 시프트량은, 2N이다.
<역변환부>
다음으로 화상 복호 장치(200)에 대하여 설명한다. 이 경우도 화상 복호 장치(200)는, 제1 실시 형태의 경우와 기본적으로 마찬가지의 구성을 갖는다. 단, 이 경우의 화상 복호 장치(200)는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하는 행렬 연산부와, 그 행렬 연산이 행해진 1차원의 벡터에 대해서 스케일링을 행하는 스케일링부와, 그 스케일링된 1차원의 벡터를 행렬화하는 행렬화부를 구비한다. 즉, 역변환부(213)는, 역변환 처리함으로써 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하고, 그 행렬 연산이 행해진 1차원의 벡터에 대해서 스케일링을 행하고, 그 스케일링된 1차원의 벡터를 행렬화한다.
도 30은, 이 경우의 역변환부(213)의 주된 구성예를 나타내는 블록도이다. 도 30에 도시된 바와 같이, 이 경우도 역변환부(213)는, 기본적으로 제1 실시 형태의 경우(도 12)와 마찬가지의 구성을 갖는다. 단, 이 경우의 역 세컨더리 변환부(231)는, 행렬 연산부(242) 대신에 행렬 연산부(451)를 갖는다. 또한, 이 경우, 클립 처리부(245)는 생략할 수 있다. 또한, 행렬 연산부(451)에서는, N 비트 스케일링된 복수의 직교 행렬을 사용하여, 복수회(M회)의 행렬 곱으로 이루어지는 행렬 연산을 행하기 때문에, 다이내믹 레인지는, M*N 비트로 된다. 따라서, 스케일링부(243)는, 벡터 Y1d의 놈을 정규화하기 위해서 사용하는 시프트량은, (M*N)이다.
행렬 연산부(451)는, 래스터라이즈부(241)로부터 공급되는 1차원의 벡터에 대해서, 역 세컨더리 변환 IR의 행렬을 행렬 분해한 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행한다.
<행렬 연산부(16점 역 HyGT부)>
도 31은, 행렬 연산부(451)의 주된 구성예를 나타내는 블록도이다. 도 31에 도시된 바와 같이, 행렬 연산부(451)는, 치환 조작부(461), 회전 조작부(462), 치환 조작부(463), 회전 조작부(464), 치환 조작부(465), 회전 조작부(466), 치환 조작부(467), 및 회전 조작부(468)를 갖는다. 또한, 행렬 연산부(451)는, 16점 역 HyGT부(451)라고도 칭한다.
치환 조작부(461)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P3과, 래스터라이즈부(241)로부터 공급되는 행 벡터 X1d와의 행렬 곱 A1d를 구한다. 치환 조작부(461)는, 그 행렬 곱 A1d를 회전 조작부(462)에 공급한다.
회전 조작부(462)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 F4의 전치 행렬 F4 T와, 치환 조작부(461)로부터 공급되는 행렬 곱 A1d와의 행렬 곱 B1d를 구한다. 회전 조작부(462)는, 그 행렬 곱 B1d를 치환 조작부(463)에 공급한다.
치환 조작부(463)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P2와, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P3의 치환 행렬 P3 T와, 회전 조작부(462)로부터 공급되는 행렬 곱 B1d와의 행렬 곱 C1d를 구한다. 치환 조작부(463)는, 그 행렬 곱 C1d를 회전 조작부(464)에 공급한다.
회전 조작부(464)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 F3의 전치 행렬 F3 T와, 치환 조작부(462)로부터 공급되는 행렬 곱 C1d와의 행렬 곱 D1d를 구한다. 회전 조작부(464)는, 그 행렬 곱 D1d를 치환 조작부(465)에 공급한다.
치환 조작부(465)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P1과, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P2의 전치 행렬 P2 T와, 회전 조작부(464)로부터 공급되는 행렬 곱 D1d와의 행렬 곱 E1d를 구한다. 치환 조작부(465)는, 그 행렬 곱 E1d를 회전 조작부(466)에 공급한다.
회전 조작부(466)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 F2의 전치 행렬 F2 T와, 치환 조작부(465)로부터 공급되는 행렬 곱 E1d와의 행렬 곱 G1d를 구한다. 회전 조작부(466)는, 그 행렬 곱 G1d를 치환 조작부(467)에 공급한다.
치환 조작부(467)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 치환 행렬 P1의 전치 행렬 P1 T와, 회전 조작부(466)로부터 공급되는 행렬 곱 G1d와의 행렬 곱 H1d를 구한다. 치환 조작부(467)는, 그 행렬 곱 H1d를 회전 조작부(468)에 공급한다.
회전 조작부(468)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 F1의 전치 행렬 F1 T와, 치환 조작부(467)로부터 공급되는 행렬 곱 H1d와의 행렬 곱 Y1d를 구한다. 회전 조작부(468)는, 그 행렬 곱 Y1d를 스케일링부(243)에 공급한다.
이상과 같이, 행렬 연산부(451)는, 역 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 역 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다.
<역변환 처리의 흐름>
다음으로, 화상 복호 장치(200)에 의해 실행되는 각 처리의 흐름의 예를 설명한다. 이 경우 화상 복호 장치(200)는, 화상 복호 처리를, 제1 실시 형태의 경우(도 13)와 기본적으로 마찬가지로 행한다. 이 경우의 역변환 처리의 흐름의 예를, 도 32의 흐름도를 참조하여 설명한다.
역변환 처리가 개시되면, 스텝 S441 내지 스텝 S449의 각 처리는, 도 14의 스텝 S221 내지 스텝 S227, 및 스텝 S229 및 스텝 S230의 각 처리와 기본적으로 마찬가지로 실행된다.
단, 이 경우, 스텝 S445의 처리에 있어서, 행렬 연산은, 역 세컨더리 변환의 행렬 IR을 상술한 바와 같이 행렬 분해하여 행해진다.
<행렬 연산 처리의 흐름>
도 33의 흐름도를 참조하여, 도 32의 스텝 S445에 있어서 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S461에 있어서, 치환 조작부(461)는, 치환 행렬 P3과 행 벡터 X1d와의 행렬 곱 A1d를 구한다.
스텝 S462에 있어서, 회전 조작부(462)는, 직교 행렬 F4의 전치 행렬 F4 T와 행렬 곱 A1d와의 행렬 곱 B1d를 구한다.
스텝 S463에 있어서, 치환 조작부(463)는, 치환 행렬 P2와 치환 행렬 P3의 전치 행렬 P3 T와 행렬 곱 B1d와의 행렬 곱 C1d를 구한다.
스텝 S464에 있어서, 회전 조작부(464)는, 직교 행렬 F3의 전치 행렬 F3 T와 행렬 곱 C1d와의 행렬 곱 D1d를 구한다.
스텝 S465에 있어서, 치환 조작부(465)는, 치환 행렬 P1과 치환 행렬 P2의 전치 행렬 P2 T와 행렬 곱 D1d와의 행렬 곱 E1d를 구한다.
스텝 S466에 있어서, 회전 조작부(466)는, 직교 행렬 F2의 전치 행렬 F2 T와 행렬 곱 E1d와의 행렬 곱 G1d를 구한다.
스텝 S467에 있어서, 치환 조작부(467)는, 치환 행렬 P1의 전치 행렬 P1 T와 행렬 곱 G1d와의 행렬 곱 H1d를 구한다.
스텝 S468에 있어서, 회전 조작부(468)는, 직교 행렬 F1의 전치 행렬 F1 T와 행렬 곱 H1d와의 행렬 곱 Y1d를 구한다.
스텝 S468의 처리가 종료되면, 처리는 도 32로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다.
또한, 본 실시 형태에서는, 행렬 연산부(451)에 있어서, N 비트 스케일링된 복수의 직교 행렬을 사용하여, 복수회(M회)의 행렬 곱으로 이루어지는 행렬 연산을 행하기 때문에, 다이내믹 레인지는, M*N 비트로 된다. 따라서, 스케일링부(243)는, 벡터 Y1d의 놈을 정규화하기 위해서 사용하는 시프트량은, (M*N)하고 있지만 이것으로 한정되지 않는다. 예를 들어, 도 31의 행렬 연산부(451)에 있어서, 회전 조작부(468)를 제외하고, 각 회전 조작부(회전 조작부(462), 회전 조작부(464), 회전 조작부(466))의 후에, 각 회전 조작부에서 얻어지는 행렬 곱의 놈을 정규화하기 위한 스케일링부를 각각 배치해도 된다. 이 경우, 각 스케일링부(스케일링부(243)를 포함함)에 있어서의 놈을 정규화하기 위한 시프트량은, N이다.
또한, 각 회전 조작부의 후에, 스케일링부를 배치하는 대신에, 복수의 회전 조작후의 행렬 곱에 대하여, 놈을 정규화하도록 스케일링부를 배치해도 된다. 예를 들어, 치환 조작부(461), 회전 조작부(462), 치환 조작부(463) 및 회전 조작부(464)를 통해서 얻어지는 행렬 곱을 정규화하기 위한 스케일링부를, 회전 조작부(464)의 후에 배치하고, 행렬 곱의 놈 정규화를 행한다. 마찬가지로, 치환 조작부(465), 회전 조작부(466), 치환 조작부(467), 및 회전 조작부(468)를 통해서 얻어지는 행렬 곱을 스케일링부(243)에 있어서, 놈의 정규화를 행한다. 이 경우, 각 스케일링부에 있어서의 놈을 정규화하기 위한 시프트량은, 2N이다.
<4. 제4 실시 형태>
<16점 HyGT의 다른 표현>
제3 실시 형태에서는, 16점 HyGT의 1단째의 조작 T1(도 21의 A에 있어서 프레임(411)으로 둘러싸인 부분)에 대해서는, 치환 조작의 표현을 사용하지 않고, G1,1 내지 G1,8의 8개의 회전 행렬로 이루어지는 직교 변환 F1로 이루어졌다고 표현하였지만, 입력 신호의 치환을 행하지 않는 것을 나타내는 특수한 치환을 수반하는 표현으로 나타내는 것이 가능하다.
편의상, 제3 실시 형태에 있어서, 조작 T1에 있어서의 치환 조작을 치환 δ0이라 정의하고, 도 21의 B의 모식도를, 도 34로 치환할 수 있다. 치환 δ0은, 이하의 식 (50)으로 표시된다. 치환 δ0은, 입력 신호의 치환을 행하지 않음을 나타내는 치환 조작이다. 즉, 식 (50)에 있어서, i번째(i=0, …, 15)의 입력 신호는, 그대로 i번째의 출력 신호로서 출력된다.
Figure pct00055
즉, 1단째의 조작 T1은, 이하의 식 (51)과 같이, 치환 δ0, 직교 변환 F1, 역치환 δ0T에 의해 표현할 수 있다. 여기서, 식 (51)에 있어서 치환 δ0에 대응하는 행렬은, P0이며, 16×16의 단위 행렬에 대응한다.
Figure pct00056
이 식 (51)의 결과로부터, 제3 실시 형태에 있어서 설명한 16점 HyGT(세컨더리 변환 R), 및 16점 inverseHyGT(역 세컨더리 변환)를 나타내는 각각의 식 (48)은 이하의 식 (52)으로, 식 (49)는, 식 (53)으로 치환 δ0을 도입하여 다시 표현할 수 있다. 여기서, 치환 δ0, δ1, δ2, δ3, 및 대응하는 치환 행렬 P0, P1, P2, P3의 아래첨자 문자의 인덱스 개시 번호를 0부터 1로 치환하고, 치환 δ1, δ2, δ3, δ4, 및 대응하는 치환 행렬 P1, P2, P3, P4라 다시 정의하면, 식 (52)는 이하의 식 (54)에 의해, 식 (53)은 이하의 식 (55)에 의해 표현할 수 있다.
Figure pct00057
Figure pct00058
Figure pct00059
Figure pct00060
<행렬 연산부(16점 HyGT부)>
이상의 식 52(식 54)의 결과에 기초하여, 제3 실시 형태에 있어서 설명한 세컨더리 변환부(132)의 행렬 연산부(421)는, 도 27에 도시된 구성 대신에 도 35에 도시된 구성에 의해도 실현할 수 있다. 도 35의 경우, 행렬 연산부(421)는, 도 27의 경우와 기능은 동일하지만, 16점 HyGT를 4개의 직교 행렬로 분해하고, 세퍼러블 직교 변환으로 하고 있다. 따라서, 도 35의 경우의 행렬 연산부(421)는, 도 27의 경우와 비교하여, 구성 블록의 개수를 삭감할 수 있다. 즉, 회로 규모를 삭감할 수 있다.
도 35는, 행렬 연산부(421)의 주된 구성예를 나타내는 블록도이다. 도 35의 경우, 행렬 연산부(421)는, 회전 조작부(501-1), 회전 조작부(501-2), 회전 조작부(501-3) 및 회전 조작부(501-4)를 갖는다.
회전 조작부(501-1)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 T1(=P1 T·F1·P1=F1)과, 래스터라이즈부(141)로부터 공급되는 행 벡터 X1d와의 행렬 곱 A1d를 구한다. 회전 조작부(501-1)는, 그 행렬 곱 A1d를 치환 조작부(501-2)에 공급한다.
회전 조작부(501-2)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 T2(=P2 T·F2·P2)와, 회전 조작부(501-1)로부터 공급되는 행렬 곱 A1d와의 행렬 곱 B1d를 구한다. 회전 조작부(501-2)는, 그 행렬 곱 B1d를 회전 조작부(501-3)에 공급한다.
회전 조작부(501-3)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 T3(=P3 T·F3·P3)과, 회전 조작부(501-2)로부터 공급되는 행렬 곱 B1d와의 행렬 곱 C1d를 구한다. 회전 조작부(501-3)는, 그 행렬 곱 C1d를 회전 조작부(501-4)에 공급한다.
회전 조작부(501-4)는, 세컨더리 변환 선택부(146)로부터 공급되는 세컨더리 변환의 행렬 R을 행렬 분해하여 얻어지는 직교 행렬 T4(=P4 T·F4·P4)와, 회전 조작부(501-3)로부터 공급되는 행렬 곱 C1d와의 행렬 곱 D1d를 구한다. 회전 조작부(501-4)는, 그 행렬 곱 Y1d를 스케일링부(143)에 공급한다.
즉, 회전 조작부(501-1) 내지 회전 조작부(501-4)는, 각각, 행렬 곱을 구하는 처리부이며, 서로 동일한 처리를 행한다. 이하에 있어서, 회전 조작부(501-1) 내지 회전 조작부(501-4)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(501)라고 칭한다. 즉, 이 경우, 행렬 연산부(421)는, 4개의 회전 조작부(501)에 의해 구성된다.
이상과 같이, 행렬 연산부(421)는, 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
<행렬 연산 처리의 흐름>
도 36의 흐름도를 참조하여, 도 28의 스텝 S406에 있어서 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S501-1에 있어서, 회전 조작부(501-1)는, 직교 행렬 T1(=P1 T·F1·P1=F1)과 행 벡터 X1d와의 행렬 곱 A1d를 구한다.
스텝 S501-2에 있어서, 회전 조작부(501-2)는, 직교 행렬 T2(=P2 T·F2·P2)와 행렬 곱 A1d와의 행렬 곱 B1d를 구한다.
스텝 S501-3에 있어서, 회전 조작부(501-3)는, 직교 행렬 T3(=P3 T·F3·P3)과 행렬 곱 B1d와의 행렬 곱 C1d를 구한다.
스텝 S501-4에 있어서, 회전 조작부(501-4)는, 직교 행렬 T4(=P4 T·F4·P4)와 행렬 곱 C1d와의 행렬 곱 Y1d를 구한다.
스텝 S501-4의 처리가 종료되면, 처리는 도 28로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
<행렬 연산부(16점 역 HyGT부)>
마찬가지로 하여, 식 (53)(식 (54))의 결과에 기초하여, 제3 실시 형태에 있어서 설명한 역 세컨더리 변환부(231)의 행렬 연산부(451)는, 도 31에 도시된 구성 대신에 도 37에 도시한 바와 같은 구성에 의해서도 실현할 수 있다. 도 37의 경우, 행렬 연산부(451)는, 도 31의 경우와 기능은 동일하지만, 16점 역 HyGT를 4개의 직교 행렬로 분해하고, 세퍼러블 직교 변환으로 하고 있다. 따라서, 도 37의 경우의 행렬 연산부(451)는, 도 31의 경우와 비교하여, 구성 블록의 개수를 삭감할 수 있다. 즉, 회로 규모를 삭감할 수 있다.
도 37은, 행렬 연산부(451)의 주된 구성예를 나타내는 블록도이다. 도 37의 경우, 행렬 연산부(451)는, 회전 조작부(511-1), 회전 조작부(511-2), 회전 조작부(511-3) 및 회전 조작부(511-4)를 갖는다.
회전 조작부(511-1)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 T4(=P4 T·F4·P4)의 전치 행렬 T4 T(=P4 T·F4 T·P4)와, 래스터라이즈부(241)로부터 공급되는 행 벡터 X1d와의 행렬 곱 A1d를 구한다. 회전 조작부(511-1)는, 그 행렬 곱 A1d를 회전 조작부(511-2)에 공급한다.
회전 조작부(511-2)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 T3(=P3 T·F3·P3)의 전치 행렬 T3 T(=P3 T·F3 T·P3)과, 회전 조작부(511-1)로부터 공급되는 행렬 곱 A1d와의 행렬 곱 B1d를 구한다. 회전 조작부(511-2)는, 그 행렬 곱 B1d를 회전 조작부(511-3)에 공급한다.
회전 조작부(511-3)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 T2(=P2 T·F2·P2)의 전치 행렬 T2 T(=P2 T·F2 T·P2)와, 회전 조작부(511-4)로부터 공급되는 행렬 곱 B1d와의 행렬 곱 C1d를 구한다. 회전 조작부(511-3)는, 그 행렬 곱 C1d를 회전 조작부(511-4)에 공급한다.
회전 조작부(511-4)는, 역 세컨더리 변환 선택부(246)로부터 공급되는 역 세컨더리 변환의 행렬 IR을 행렬 분해하여 얻어지는 직교 행렬 T1(=P1 T·F1·P1=F1)의 전치 행렬 T1 T(=P1 T·F1 T·P1=F1 T)와, 회전 조작부(511-3)로부터 공급되는 행렬 곱 C1d와의 행렬 곱 Y1d를 구한다. 회전 조작부(511-4)는, 그 행렬 곱 Y1d를 스케일링부(243)에 공급한다.
즉, 회전 조작부(511-1) 내지 회전 조작부(511-4)는, 각각, 행렬 곱을 구하는 처리부이며, 서로 동일한 처리를 행한다. 이하에 있어서, 회전 조작부(511-1) 내지 회전 조작부(511-4)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(511)라고 칭한다. 즉, 이 경우, 행렬 연산부(451)는, 4개의 회전 조작부(511)에 의해 구성된다.
이상과 같이, 행렬 연산부(451)는, 역 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 역 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다.
<행렬 연산 처리의 흐름>
도 38의 흐름도를 참조하여, 도 32의 스텝 S445에 있어서 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S511-1에 있어서, 회전 조작부(511-1)는, 직교 행렬 T4(=P4 T·F4·P4)의 전치 행렬 T4 T(=P4 T·F4 T·P4)와 행 벡터 X1d와의 행렬 곱 A1d를 구한다.
스텝 S511-2에 있어서, 회전 조작부(511-2)는, 직교 행렬 T3(=P3 T·F3·P3)의 전치 행렬 T3 T(=P3 T·F3 T·P3)과 행렬 곱 A1d와의 행렬 곱 B1d를 구한다.
스텝 S511-3에 있어서, 회전 조작부(511-3)는, 직교 행렬 T2(=P2 T·F2·P2)의 전치 행렬 T2 T(=P2 T·F2 T·P2)와 행렬 곱 B1d와의 행렬 곱 C1d를 구한다.
스텝 S511-4에 있어서, 회전 조작부(511-4)는, 직교 행렬 T1(=P1 T·F1·P1=F1)의 전치 행렬 T1 T(=P1 T·F1 T·P1=F1 T)와 행렬 곱 C1d와의 행렬 곱 Y1d를 구한다.
스텝 S511-4의 처리가 종료되면, 처리는 도 32로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다. 즉, 복호의 부하 증대를 억제할 수 있다.
<5. 제5 실시 형태>
<2N점 HyGT 및 2N점 역 HyGT에 대하여>
HyGT에 대해서 일반화하면, 2N점 HyGT에 있어서, i번째의 조작 Ti는, 2N점의 치환 δi(혹은 대응하는 2N×2N의 치환 행렬 Pi), 및 2N×2N의 직교 행렬 Fi(i=1, …, N)으로 하면, Ti=Pi T·Fi·Pi)로 표현된다. 따라서, 2N점 HyGT는, 이하의 식 (56)과 같이, N개의 변환 Ti의 행렬 곱에 의해 표시된다.
Figure pct00061
또한, 마찬가지로 하여, 2N점 HyGT의 역변환, 즉, 2N점 역 HyGT(2N점inverseHyGT)는, 이하의 식 (57)에 의해 표현된다.
Figure pct00062
여기서, 2N점 HyGT의 i번째의 변환 Ti에 있어서의 직교 행렬 Fi는, 이하의 식 (58)에 나타낸 바와 같이, 식 (33)에 나타낸 회전 행렬 Gi,j(j=1, …, 2N-1)을 대각 성분으로 갖고, 그 이외의 요소가 0인 성긴 직교 행렬이다.
Figure pct00063
또한, 2N점 HyGT의 i번째의 변환 Ti에 있어서의 치환 δi는, 도 39에 도시된 의사 코드(521)에 의해 도출된다. 또한, 이 의사 코드(521)에 있어서, 배열permList[i]가 치환 δi에 대응하고, permList[i][j]는, 치환 δi에 있어서, j번째의 요소와 교체하는 요소 번호에 대응한다.
예를 들어, 32점 HyGT(N=5)에 있어서의 i번째의 변환 Ti에 있어서의 치환 δi는, 도 40에 도시된 바와 같아진다. 즉, 2N점 HyGT의 i번째(i=1, …, N)의 변환 Ti에 있어서의 치환 δi는, 0, …, 2**N-1까지의 요소를, 순방향으로, 2i개(i=1, …, N)의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j(j=0, …, N-i)에 있어서, 각각 2i-1개로 이루어지는 좌측 절반의 요소군{j*2i-1, …, (j+1)*2i-1/2-1}(제1 클래스)과 우측 절반의 요소군{(j+1)*2i-1/2…, (j+1)*2i-1-1}(제2 클래스)에 있어서, 제1 클래스의 홀수 번째의 요소 k를, 상기 제2 클래스가 대응하는 홀수 번째 l(=j+2i-1)의 요소의 우측으로 되는 짝수 번째의 요소 m(=j+2i-1+1)으로 교체함으로써 도출된다.
예를 들어, 도 40에 도시된 32점 HyGT(N=5)의 경우, 도 41의 상단에 도시된 바와 같이, 1번째의 변환 δ1의 요소는, 2개의 요소로 이루어지는 서브셋(522)으로 분할된다. 도 40에 있어서는, 좌측 단부의 서브셋에만 부호를 붙이고 있지만, 4 각 프레임으로 나타내어지는 각각이 모두 서브셋(522)이다. 또한, 각 서브셋(522)에 있어서, 좌측 1개의 요소가 제1 클래스(523)로서 설정되고, 우측 1개의 요소가 제2 클래스(524)로서 설정된다. 그리고 변환 δ1에 있어서는, 요소의 교체는 행해지지 않는다.
2번째의 변환 δ2의 요소는, 도 41의 중단에 도시된 바와 같이, 4개의 요소로 이루어지는 서브셋(522)으로 분할된다. 각 서브셋(522)의 좌측 2개의 요소가 제1 클래스(523)로서 설정되고, 우측 2개의 요소가 제2 클래스(524)로서 설정된다. 그리고, 예를 들어 좌측 단부의 서브셋(522)에 있어서는, 제1 클래스(523)의 요소 「1」과, 제2 클래스(524)의 요소 「3」이 교체된다. 다른 서브셋(522)에 있어서도 마찬가지의 위치 관계에서 요소가 교체된다.
3번째의 변환 δ3의 요소는, 도 41의 하단에 도시된 바와 같이, 8개의 요소로 이루어지는 서브셋(522)으로 분할된다. 각 서브셋(522)의 좌측 4개의 요소가 제1 클래스(523)로서 설정되고, 우측 4개의 요소가 제2 클래스(524)로서 설정된다. 그리고, 예를 들어 좌측 단부의 서브셋(522)에 있어서는, 제1 클래스(523)의 요소 「1」과 제2 클래스(524)의 요소 「4」가 교체되고, 제1 클래스(523)의 요소 「3」과 제2 클래스(524)의 요소 「6」이 교체된다. 다른 서브셋(522)에 있어서도 마찬가지의 위치 관계에서 요소가 교체된다.
4번째의 변환 δ4의 요소는, 도 42의 상단에 도시된 바와 같이, 16개의 요소로 이루어지는 서브셋(522)으로 분할된다. 각 서브셋(522)의 좌측 8개의 요소가 제1 클래스(523)로서 설정되고, 우측 8개의 요소가 제2 클래스(524)로서 설정된다. 그리고, 예를 들어 좌측 단부의 서브셋(522)에 있어서는, 제1 클래스(523)의 요소 「1」과 제2 클래스(524)의 요소 「8」이 교체되고, 제1 클래스(523)의 요소 「3」과 제2 클래스(524)의 요소 「10」이 교체되고, 제1 클래스(523)의 요소 「5」와 제2 클래스(524)의 요소 「12」가 교체되고, 제1 클래스(523)의 요소 「7」과 제2 클래스(524)의 요소 「14」가 교체된다. 다른 서브셋(522)에 있어서도 마찬가지의 위치 관계에서 요소가 교체된다.
5번째의 변환 δ5의 요소는, 도 42의 하단에 도시된 바와 같이, 32개의 요소로 이루어지는 서브셋(522)으로 분할된다. 즉, 이 경우, δ5 전체가 1개의 서브셋(522)으로 설정된다. 그리고 그 서브셋(522)의 좌측 16개의 요소가 제1 클래스(523)로서 설정되고, 우측 16개의 요소가 제2 클래스(524)로서 설정된다. 그리고, 제1 클래스(523)의 요소 「1」과 제2 클래스(524)의 요소 「16」이 교체되고, 제1 클래스(523)의 요소 「3」과 제2 클래스(524)의 요소 「18」이 교체되고, 제1 클래스(523)의 요소 「5」와 제2 클래스(524)의 요소 「20」이 교체되고, 제1 클래스(523)의 요소 「7」과 제2 클래스(524)의 요소 「22」가 교체되고, 제1 클래스(523)의 요소 「9」와 제2 클래스(524)의 요소 「24」가 교체되고, 제1 클래스(523)의 요소 「11」과 제2 클래스(524)의 요소 「26」이 교체되고, 제1 클래스(523)의 요소 「13」과 제2 클래스(524)의 요소 「28」이 교체되고, 제1 클래스(523)의 요소 「15」와 제2 클래스(524)의 요소 「30」이 교체된다.
또한, 64점 HyGT(N=6)에 있어서의 i번째의 변환 Ti에 있어서의 치환 δi는, 도 43에 도시된 바와 같아진다. 또한, 치환 δi에 대응하는 치환 행렬 Pi는, 치환 δi로부터 자명하기 때문에, 설명을 생략한다.
이와 같이, 도 39에 도시된 의사 코드(521)에 의해, 2N점 HyGT의 i번째의 변환 Ti에 있어서의 치환 δi를 도출할 수 있다.
<2N점 HyGT부>
다음으로 이상과 같이 일반화된 HyGT의 구성에 대하여 설명한다. 도 44는, 이러한 2N점의 HyGT를 행하는 2N점 HyGT부(530)의 주된 구성예를 나타내는 블록도이다. 도 44에 도시된 바와 같이, 2N점 HyGT부(530)는, N개의 회전 조작부(회전 조작부(531-1), 회전 조작부(531-2), …, 회전 조작부(531-N)를 갖는다. 또한, N은 1 이상의 임의의 정수를 취할 수 있다. 또한, 이하에 있어서 회전 조작부(531-1), 회전 조작부(531-2), …, 회전 조작부(531-N)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(531)라고 칭한다.
회전 조작부(531-1)는, 이하의 식 (59)에 나타낸 바와 같이, 2N점 HyGT부(530)의 외부로부터 공급되는 2N점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 1번째의 조작에 대응하는 직교 행렬 T1과, 2N점 HyGT부(530)의 외부로부터 공급되는 1×2N행 벡터 X0(=X1d)의 전치 행렬과의 행렬 곱 X1(1×2N의 행 벡터)을 구한다. 회전 조작부(531-1)는, 그 행렬 곱 X1을 회전 조작부(531-2)에 공급한다.
Figure pct00064
회전 조작부(531-2)는, 이하의 식 (60)에 나타낸 바와 같이, 2N점 HyGT부(530)의 외부로부터 공급되는 2N점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 2번째의 조작에 대응하는 직교 행렬 T2와, 회전 조작부(531-1)로부터 공급되는 1×2N행 벡터 X1의 전치 행렬과의 행렬 곱 X2(1×2N의 행 벡터)를 구한다. 회전 조작부(531-2)는, 그 행렬 곱 X2를 다음 회전 조작부(531)에 공급한다.
Figure pct00065
이하, 각 회전 조작부(531)에 있어서 마찬가지의 처리가 행해진다. 즉, i번째의 회전 조작부(531-i)는, 2N점 HyGT부(530)의 외부로부터 공급되는 2N점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 i번째의 조작에 대응하는 직교 행렬 Ti와, 1개 앞의 회전 조작부(531)-(i-1)로부터 공급되는 1×2N행 벡터 Xi -1의 전치 행렬과의 행렬 곱 Xi(1×2N의 행 벡터)를 구한다. 회전 조작부(531-i)는, 그 행렬 곱 Xi를 다음 회전 조작부(531)-(i+1)에 공급한다.
그리고, 회전 조작부(531-N)는, 이하의 식 (61)에 나타낸 바와 같이, 2N점 HyGT부(530)의 외부로부터 공급되는 2N점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 N번째의 조작에 대응하는 직교 행렬 TN과, 1개 앞의 회전 조작부(531)로부터 공급되는 1×2N행 벡터 XN -1의 전치 행렬과의 행렬 곱 XN(1×2N의 행 벡터)을 구한다. 회전 조작부(531-N)는, 그 행렬 곱 XN(=Y1d)을 2N점 HyGT부(530)의 외부로 출력한다.
Figure pct00066
또한, N=2의 경우는, 회전 조작부(531-2)가 구한 행렬 곱 X2를 행렬 곱 Y1d로서 2N점 HyGT부(530)의 외부로 출력한다. 또한, N=1의 경우는, 회전 조작부(531-1)가 구한 행렬 곱 X1을 행렬 곱 Y1d로서 2N점 HyGT부(530)의 외부로 출력한다.
이상과 같이, N개의 회전 조작부(531)는, 서로 마찬가지의 변환 처리를 행한다. 즉, 2N점 HyGT부(530)는, 2N점 HyGT의 행렬 R을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환할 수 있다. 따라서, 2N점 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 이에 의해, 2N점 HyGT의 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 2N점 HyGT의 행렬 R을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
또한, 각 회전 조작부(531)의 후단에, 놈 정규를 위한 스케일링을 행하는 스케일링부를 설치하도록 해도 된다.
<행렬 연산 처리의 흐름>
도 45의 흐름도를 참조하여, 2N점 HyGT부(530)에 의해 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S521-1에 있어서, 회전 조작부(531-1)는, 직교 행렬 T1(=P1 T·F1·P1=F1)과 행 벡터 X0과의 행렬 곱 X1을 구한다.
스텝 S521-2에 있어서, 회전 조작부(531-2)는, 직교 행렬 T2(=P2 T·F2·P2)와 행렬 곱 X1과의 행렬 곱 X2를 구한다.
마찬가지로, i번째의 회전 조작부(531-i)는, 스텝 S521-i에 있어서, 직교 행렬 Ti(=Pi T·Fi·Pi)와 행렬 곱 Xi-1과의 행렬 곱 Xi를 구한다.
그리고, 스텝 S521-N에 있어서, 회전 조작부(531-N)는, 직교 행렬 TN(=PN T·FN·PN)과 행렬 곱 XN -1과의 행렬 곱 XN(=Y1d)을 구한다. 스텝 S521-N의 처리가 종료되면, 행렬 연산 처리가 종료된다.
이상과 같이 각 처리를 실행함으로써, 2N점 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다.
또한, N=2의 경우, 스텝 S521-2의 처리가 종료되면 행렬 연산 처리가 종료된다. 또한, N=1의 경우, 스텝 S521-1의 처리가 종료되면 행렬 연산 처리가 종료된다.
<제3 실시 형태에 대한 적용>
이와 같은, 2N점 HyGT부(530)는, 예를 들어 제3 실시 형태에 있어서 상술한 행렬 연산부(421)로서 적용할 수 있다. 제3 실시 형태의 행렬 연산부(421)는, 16점 HyGT를 행하므로, N=4이다. 즉, 제4 실시 형태에 있어서 설명한 구성(도 35)으로 된다. 즉, 각 회전 조작부(531)는, 도 35의 각 회전 조작부(501)와 마찬가지의 처리를 행한다. 따라서, 이 경우의 행렬 연산 처리는, 도 36의 흐름도를 참조하여 설명한 경우와 마찬가지의 흐름으로 된다.
<2N점 역 HyGT부)>
다음으로 이와 같은 2N점 HyGT부(530)에 대응하는(2N점 HyGT부(530)가 행하는 행렬 연산의 역처리를 행하는) 2N점 역 HyGT부에 대하여 설명한다. 도 46은, 그와 같은 2N점 역 HyGT부의 주된 구성예를 나타내는 블록도이다. 도 46에 도시된 바와 같이, 2N점 역 HyGT부(540)는, N개의 회전 조작부(회전 조작부(541-1), 회전 조작부(541-2), …, 회전 조작부(541-N))를 갖는다. 또한, N은 1 이상의 임의의 정수를 취할 수 있다. 또한, 이하에 있어서 회전 조작부(541-1), 회전 조작부(541-2), …, 회전 조작부(541-N)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(541)라고 칭한다.
회전 조작부(541-1)는, 이하의 식 (62)에 나타낸 바와 같이, 2N점 역 HyGT부(540)의 외부로부터 공급되는 2N점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 1번째의 조작에 대응하는 직교 행렬 TN T와, 2N점 역 HyGT부(540)의 외부로부터 공급되는 1×2N행 벡터 X0(=X1d)의 전치 행렬과의 행렬 곱 X1(1×2N의 행 벡터)을 구한다. 회전 조작부(541-1)는, 그 행렬 곱 X1을 회전 조작부(541-2)에 공급한다.
Figure pct00067
회전 조작부(541-2)는, 이하의 식 (63)에 나타낸 바와 같이, 2N점 역 HyGT부(540)의 외부로부터 공급되는 2N점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 2번째의 조작에 대응하는 직교 행렬 TN-1 T와, 회전 조작부(541-1)로부터 공급되는 1×2N행 벡터 X1의 전치 행렬과의 행렬 곱 X2(1×2N의 행 벡터)를 구한다. 회전 조작부(541-2)는, 그 행렬 곱 X2를 다음 회전 조작부(541)에 공급한다.
Figure pct00068
이하, 각 회전 조작부(541)에 있어서 마찬가지의 처리가 행해진다. 즉, i번째의 회전 조작부(541-i)는, 2N점 역 HyGT부(540)의 외부로부터 공급되는 2N점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 i번째의 조작에 대응하는 직교 행렬 TN-i+1과, 1개 앞의 회전 조작부(541)-(i-1)로부터 공급되는 1×2N 행 벡터 Xi -1의 전치 행렬과의 행렬 곱 Xi(1×2N의 행 벡터)를 구한다. 회전 조작부(541-i)는, 그 행렬 곱 Xi를 다음의 회전 조작부(541)-(i+1)에 공급한다.
그리고, 회전 조작부(541-N)는, 이하의 식 (64)에 나타낸 바와 같이, 2N점 역 HyGT부(540)의 외부로부터 공급되는 2N점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 N번째의 조작에 대응하는 직교 행렬 T1 T와, 1개 앞의 회전 조작부(541)-(N-1)로부터 공급되는 1×2N행 벡터 Xi -1의 전치 행렬과의 행렬 곱 XN(1×2N의 행 벡터)을 구한다. 회전 조작부(541-N)는, 그 행렬 곱 XN(=Y1d)을 2N점 역 HyGT부(540)의 외부로 출력한다.
Figure pct00069
또한, N=2의 경우는, 회전 조작부(541-2)가 구한 행렬 곱 X2를 행렬 곱 Y1d로서 2N점 역 HyGT부(540)의 외부로 출력한다. 또한, N=1의 경우는, 회전 조작부(541-1)가 구한 행렬 곱 X1을 행렬 곱 Y1d로서 2N점 역 HyGT부(540)의 외부로 출력한다.
이상과 같이, 2N점 역 HyGT부(540)는, 2N점 역 HyGT의 행렬 IR을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 2N점 역 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 2N점 역 HyGT의 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 2N점 역 HyGT의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
또한, 각 회전 조작부(541)의 후단에, 놈 정규를 위한 스케일링을 행하는 스케일링부를 설치하도록 해도 된다.
<행렬 연산 처리의 흐름>
도 47의 흐름도를 참조하여, 2N점 역 HyGT부(540)에 있어서 실행되는 행렬 연산 처리의 흐름의 예를 설명한다.
행렬 연산 처리가 개시되면, 스텝 S531-1에 있어서, 회전 조작부(541-1)는, 직교 행렬 TN T(=PN T·FN T·PN)과 행 벡터 X0과의 행렬 곱 X1을 구한다.
스텝 S531-2에 있어서, 회전 조작부(541-2)는, 직교 행렬 TN-1 T(=PN -1 T·FN -1 T·PN-1)과 행렬 곱 X1과의 행렬 곱 X2를 구한다.
마찬가지로, i번째의 회전 조작부(541-i)는, 스텝 S531-i에 있어서, 직교 행렬 TN-i+1 T(=PN -i+1 T·FN -i+1·PN -i+1i)와 행렬 곱 Xi -1과의 행렬 곱 Xi를 구한다.
그리고, 스텝 S531-N에 있어서, 회전 조작부(541-N)는, 직교 행렬 T1 T(=P1 T·F1 T·P1=F1 T)와 행렬 곱 XN -i과의 행렬 곱 XN(=Y1d)를 구한다. 스텝 S531-N의 처리가 종료되면, 행렬 연산 처리가 종료된다.
이상과 같이 각 처리를 실행함으로써, 2N점 역 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다.
또한, N=2의 경우, 스텝 S531-2의 처리가 종료되면 행렬 연산 처리가 종료된다. 또한, N=1의 경우, 스텝 S531-1의 처리가 종료되면 행렬 연산 처리가 종료된다.
<제3 실시 형태에 대한 적용>
이와 같은, 2N점 역 HyGT부(540)는, 예를 들어 제3 실시 형태에 있어서 상술한 행렬 연산부(451)로서 적용할 수 있다. 제3 실시 형태의 행렬 연산부(451)는, 16점 HyGT를 행하므로, N=4이다. 즉, 제4 실시 형태에 있어서 설명한 구성(도 37)이 된다. 즉, 각 회전 조작부(541)는, 도 37의 각 회전 조작부(511)과 마찬가지의 처리를 행한다. 따라서, 이 경우의 행렬 연산 처리는, 도 38의 흐름도를 참조하여 설명한 경우와 마찬가지의 흐름으로 된다.
<6. 제6 실시 형태>
<64점 HyGT의 경우>
제3 실시 형태에서는, 4×4 서브블록마다 HyGT 베이스의 세컨더리 변환을 적용하는 경우에 있어서, 행렬 분해에 의한 고속 연산이 가능한 세컨더리 변환 및 역 세컨더리 변환에 대하여 설명하였다. 또한, 제6 실시 형태의 변형예 6에서는, HyGT를 일반화한 2N점 HyGT 및 2N 역점 HyGT에 대하여 설명하였다. 그런데, X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, "EE 2.7 related Improved non-seperable secondary secondary transform", JVET-C0063, Joint Video Exploration Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC 29/WG 11 3rd Meeting: Geneva, CH, from 2016-05-26 to 2016-06-012016(이하, 비특허문헌 3이라고도 칭함)에는, 세컨더리 변환의 에너지 컴팩션의 성능을 향상시키기 위해서, 변환 블록 사이즈가 8×8 이상인 경우에, 8×8 서브블록 단위에, 64점 HyGT 베이스의 세컨더리 변환을 적용하는 것이 개시되어 있다.
그러나, 비특허문헌 3에 기재된 방법의 64점 HyGT 베이스의 세컨더리 변환은, 비 세퍼러블이기 때문에, 연산량이 많았다. 또한, 인트라 예측 모드의 클래스 수와 각 클래스에 대응하는 세컨더리 변환의 수만큼, 4×4 및 8×8 세컨더리 변환의 행렬을 갖고 있으며, 세컨더리 변환의 행렬을 유지하는 메모리 사이즈가 비특허문헌 2에 기재된 방법에 비하여 더욱 증대될 우려가 있었다. 즉, 부호화·복호의 부하가 증대될 우려가 있었다.
예를 들어, 비특허문헌 3에 기재된 방법의 경우, 인트라 예측 모드의 클래스 수=35이며, 각 클래스에 대한 세컨더리 변환의 수=5이며, 35*5=175의 행렬이 4×4 및 8×8 세컨더리 변환마다 존재한다. 따라서, 각 행렬의 요소를 9bit 정밀도로 유지한다고 하면, 전체 세컨더리 변환의 행렬을 유지하는 데 요하는 메모리 사이즈는, 9bit*16*16*175+9bit*64*64*175=6854400bits=856800byte=836.71875KB이다.
<행렬 연산의 분해>
그래서, 제3 실시 형태에 있어서 설명한 16점 HyGT와 마찬가지로, 8×8 서브블록 단위의 세컨더리 변환이나 역 세컨더리 변환에 있어서, 화상과 그 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고, 그 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하도록 한다.
예를 들어, 비특허문헌 3에 기재된 64점 HyGT와 그 역변환인 64점 역 HyGT에, 제5 실시 형태에 있어서 설명한 2N점 HyGT 및 2N점 역 HyGT를 적용함으로써(N=6), 6개의 직교 행렬로 분해된 세퍼러블 직교 변환을 이용해서 그 세컨더리 변환이나 역 세컨더리 변환을 행할 수 있다.
이 경우에 64점 HyGT 및 64점 역 HyGT를 나타내는 행렬 표현은, 상술한 식 (56) 및 식 (57)에 있어서, N=6으로 하면 된다. 즉, 이들 행렬 표현은, 이하의 식 (65) 및 식 (66)과 같이 표시할 수 있다. 또한, 식 (56) 및 식 (57)에 있어서의 직교 행렬 Fi(i=1, …, 6)는, 식 (33)에 나타낸 회전 행렬 Gi,j(j=1, …, 16)의 대각 성분을 갖고, 그 이외의 요소가 0인 성긴 64×64의 행렬이며, 치환 행렬 Pi(i=1, …, 6)는, 도 39에 도시한 의사 코드(521)에 있어서 N=6으로서 실행함으로써 얻어지는 치환 δi(i=1, …, 6)에 대응하는 64×64의 행렬이다.
Figure pct00070
비특허문헌 3에 기재된 비 세퍼러블 64점 HyGT 베이스 세컨더리 변환의 경우와, 이상과 같이 행렬 분해한 세퍼러블 64점 HyGT 베이스의 세컨더리 변환의 경우에서, 승산과 가산의 처리 수를 비교한 결과를 도 48의 A의 표에 나타낸다. 도 48의 A의 표에 나타낸 바와 같이, 행렬 분해함으로써, 명백하게 승산이나 가산의 처리 수를 저감할 수 있다.
또한, 비특허문헌 3에 기재된 비 세퍼러블 64HyGT 베이스의 세컨더리 변환의 경우와, 이상과 같이 행렬 분해한 세퍼러블 64점 HyGT 베이스의 세컨더리 변환의 경우에서, 세컨더리 변환의 행렬 정보량(1 변환당)과, 그 행렬을 유지하는 데 필요한 메모리 사이즈를 비교한 결과를 도 48의 B의 표에 나타낸다. 행렬 분해함으로써, 행렬 분해한 각 직교 변환의 소행렬의 성질 및 계수의 대칭성을 이용하여, 세컨더리 변환으로서 유지하는 계수의 수를 저감할 수 있다. 따라서, 도 48의 B의 표에 나타낸 바와 같이, 명백하게 세컨더리 변환의 행렬 정보량을 대폭으로 저감할 수 있어, 필요한 메모리 사이즈의 증대를 억제할 수 있다. 즉, 부호화의 부하 증대를 억제할 수 있다.
<7. 제7 실시 형태>
<CU, PU, 및 TU의 형상>
도 49는, CU, PU, 및 TU의 형상에 대하여 설명하는 도면이다. 본 기술을 적용하는 경우의 CU, PU, 및 TU로서, H. Huang, K. Zhang, Y.-W. Huang, S. Lei, "EE 2.1: Quadtree plus binary tree structure integration with JEM tools", JVET-C0024, Joint Video Exploration Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC 29/WG 11 3rd Meeting: Geneva, CH, from 2016-05-26 to 2016-06-012016(이하, 비특허문헌 4라고도 칭함)에 기재되어 있는 QTBT(Quad tree plus binary tree)의 CU, PU, 및 TU를 적용할 수 있다.
즉, CU의 블록 분할에 있어서, 도 49에 도시된 예와 같이, 1개의 블록을 4(=2x2)개뿐만 아니라, 2(=1x2, 2x1)개의 서브블록으로도 분할할 수 있다. 즉, 이 경우, CU의 블록 분할은, 1개의 블록을 4개 또는 2개의 서브블록으로의 분할을 재귀적으로 반복함으로써 행하고, 결과로서 4분목(Quad-Tree) 형상 또는 수평 방향 혹은 수직 방향으로 2분목(Binary-Tree) 형상의 트리구조가 형성된다. 도 49에 있어서, LCU(550) 중 백지의 사각으로 나타내어지는 CU(551)가, 4분목 형상으로 분할된 CU이며, 사선 모양의 사각으로 나타내어지는 CU(552)가, 2분목 형상으로 분할된 CU이다.
그 결과, CU의 형상은, 정사각형뿐만 아니라, 직사각형일 가능성이 있다. 예를 들어, LCU 사이즈가 128x128인 경우, CU의 사이즈(수평 방향의 사이즈 w×수직 방향의 사이즈 h)는, 도 49에 도시한 바와 같이, 128x128, 64x64, 32x32, 16x16, 8x8, 4x4와 같은 정사각형의 사이즈뿐만 아니라, 128x64, 128x32, 128x16, 128x8, 128x4, 64x128, 32x128, 16x128, 8x128, 4x128, 64x32, 64x16, 64x8, 64x4, 32x64, 16x64, 8x64, 4x64, 32x16, 32x8, 32x4, 16x32, 8x32, 4x32, 16x8, 16x4, 8x16, 4x16, 8x4, 4x8과 같은 직사각형의 사이즈일 가능성이 있다. 또한 이 경우, PU와 TU는, CU와 동일하다. 즉, 변환 블록의 형상은, CU 마찬가지로, 정사각형뿐만 아니라, 직사각형으로 될 수 있다.
<세컨더리 변환부>
이와 같은 블록(CU, PU 및 TU)을 적용하는 경우도, 화상 부호화 장치(100)는, 제3 실시 형태의 경우와 기본적으로 마찬가지의 구성을 가질 수 있다. 즉, 화상 부호화 장치(100)는, 예를 들어 도 7에 도시된 바와 같은 구성을 갖고, 변환부(112)는, 예를 들어 도 26에 도시된 바와 같은 구성을 갖는다. 단, 이 경우, 세컨더리 변환부(132)는, 예를 들어 도 50에 도시된 바와 같은 구성을 갖는다.
즉, 이 경우, 세컨더리 변환부(132)는, 도 26의 래스터라이즈부(141), 스케일링부(143), 및 행렬화부(144)를 갖지만, 도 26의 세컨더리 변환 선택부(146) 대신 도 50의 세컨더리 변환 선택부(561)를 갖고, 도 26의 행렬 연산부(421) 대신에 도 50의 행렬 연산부(562)를 갖는다. 또한, 이 경우, 도 26의 경우와 마찬가지로 클립 처리부(145)는 생략해도 된다.
래스터라이즈부(141)는, 스캔 식별자 scanIdx에 의해 지정되는 변환 계수의 스캔 방법에 기초하여, N개의 요소로 이루어지는 서브그룹 단위마다, 프라이머리 변환부(131)로부터 공급되는 프라이머리 변환 계수 Coeff_P를 1×N차원의 벡터 X1d로 변환한다. 또한, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize의 어느 한쪽이 4인 경우, 4×4 서브블록을 서브그룹이라 한다. 이 경우, N=16이다. 이에 반하여, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize가 모두 8 이상인 경우, 8×8 서브블록을 서브그룹이라 한다. 이 경우, N=64이다. 래스터라이즈부(141)는, 얻어진 벡터 X1d를 행렬 연산부(562)에 공급한다. 또한, 서브그룹의 사이즈(요소 수)를 나타내는 N은, 예를 들어 이하의 식 (67)에 따라서 결정된다. 또한, 식 (67) 대신에 각 사이즈의 대수값을 이용해서 이하의 식 (68)에 따라서 결정하도록 해도 된다.
Figure pct00071
세컨더리 변환 선택부(561)는, 세컨더리 변환 식별자 st_idx와, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize에서 도출되는 서브그룹의 사이즈 N에 의해 지정되는 세컨더리 변환의 행렬 R을, 세컨더리 변환 선택부(146)의 내부 메모리(도시생략)로부터 판독하고, 행렬 연산부(562)에 공급한다. 예를 들어, 서브그룹의 사이즈 N이 N=16(4×4 서브블록)인 경우, 세컨더리 변환 식별자 st_idx에 대응하는 행렬 분해된 16점 HyGT의 변환 행렬 R이 선택된다. 또한, 서브그룹의 사이즈 N이 N=64(8×8 서브블록)인 경우, 세컨더리 변환 식별자 st_idx에 대응하는 행렬 분해된 64점 HyGT의 변환 행렬 R이 선택된다.
또한, 세컨더리 변환 선택부(561)가, 세컨더리 변환 식별자 st_idx 및 인트라 예측 모드 정보 IPinfo(예를 들어, 예측 모드 번호)에 따라서, 서브그룹의 사이즈별로 세컨더리 변환 R을 선택하도록 해도 된다. 또한, 세컨더리 변환 선택부(561)가, 인트라 예측 모드 정보 IPinfo 대신에 움직임 예측 정보 MVinfo 및 세컨더리 변환 식별자 st_idx에 따라서, 변환 R을 선택하도록 해도 된다.
행렬 연산부(562)는, 16점 HyGT부(421) 및 64점 HyGT부(563)를 갖는다. 행렬 연산부(562)는, 서브그룹마다, 1×N차원 벡터 X1d(=X0) 및 세컨더리 변환 R의 행렬을, 16점 HyGT부(421) 또는 64점 HyGT부(563)에 공급한다. 보다 구체적으로는, 서브그룹의 사이즈 N이 16인 경우(세컨더리 변환의 처리 단위가 4×4 서브블록), 행렬 연산부(562)는, 1×16차원 벡터 X1d(=X0) 및 16점 HyGT의 변환 행렬 R을 16점 HyGT부(421)에 공급한다. 또한, 서브그룹의 사이즈 N이 64인 경우(세컨더리 변환의 처리 단위가 8×8 서브블록), 행렬 연산부(562)는, 1×64차원 벡터 X1d(=X0) 및 64점 HyGT의 변환 행렬 R을 64점 HyGT부(563)에 공급한다.
1×16차원 벡터 X1d(=X0) 및 16점 HyGT의 변환 행렬 R이 공급된 경우, 16점 HyGT부(421)는, 변환 행렬 R과 1×16차원 벡터 X1d와의 행렬 곱 Y1d를 도출하고, 스케일링부(143)에 공급한다. 또한, 1×64차원 벡터 X1d(=X0) 및 64점 HyGT의 변환 행렬 R이 공급된 경우, 64점 HyGT부(563)는, 변환 행렬 R과 1×64차원 벡터 X1d와의 행렬 곱 Y1d를 도출하고, 스케일링부(143)에 공급한다.
스케일링부(143)는, 행렬 연산부(562)로부터 공급되는 신호 Y1d의 놈을 정규화하고, 정규화 후의 신호 Z1d를 구한다. 스케일링부(143)는, 얻어진 신호 Z1d를 행렬화부(144)에 공급한다. 행렬화부(144)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 놈 정규화 후의 1×N차원의 벡터 Z1d를, 서브그룹의 사이즈 N에 대응하는 M×M 서브블록(M×M 정사각 행렬)으로 변환한다. 예를 들어, 서브그룹의 사이즈 N=16의 경우, 1×16차원의 벡터 Z1d를 4×4 서브블록(4×4 정사각 행렬)으로 변환한다. 또한, 예를 들어 서브그룹의 사이즈 N=64인 경우, 1×64차원의 벡터 Z1d를 8×8 서브블록(8×8 정사각 행렬)으로 변환한다. 행렬화부(144)는, 이와 같이 하여 얻어진 변환 계수 Coeff를 외부로 출력한다.
이상과 같이, 행렬 연산부(562)는, 16점 HyGT 또는 64점 HyGT 베이스의 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<64점 HyGT부>
도 51은, 64점 HyGT부(563)의 주된 구성예를 나타내는 블록도이다. 도 51에 도시된 바와 같이, 64점 HyGT부(563)는, 회전 조작부(564-1), 회전 조작부(564-2), 회전 조작부(564-3), 회전 조작부(564-4), 회전 조작부(564-5) 및 회전 조작부(564-6)를 갖는다. 또한, 이하에 있어서 회전 조작부(564-1) 내지 회전 조작부(564-6)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(564)라고 칭한다.
회전 조작부(564-1)는, 이하의 식 (69)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 1번째의 조작에 대응하는 직교 행렬 T1과, 64점 HyGT부(563)의 외부(래스터라이즈부(141)(도 50))로부터 공급되는 1×64행 벡터 X0(=X1d)의 전치 행렬과의 행렬 곱 X1(1×64의 행 벡터)을 구한다. 회전 조작부(564-1)는, 그 행렬 곱 X1을 회전 조작부(564-2)에 공급한다.
Figure pct00072
회전 조작부(564-2)는, 이하의 식 (70)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 2번째의 조작에 대응하는 직교 행렬 T2와, 회전 조작부(564-1)로부터 공급되는 1×64행 벡터 X1의 전치 행렬과의 행렬 곱 X2(1×64의 행 벡터)를 구한다. 회전 조작부(564-2)는, 그 행렬 곱 X2를 회전 조작부(564-3)에 공급한다.
Figure pct00073
회전 조작부(564-3)는, 이하의 식 (71)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 3번째의 조작에 대응하는 직교 행렬 T3과, 외부로부터 공급되는 1×64행 벡터 X2의 전치 행렬과의 행렬 곱 X3(1×64의 행 벡터)을 구한다. 회전 조작부(564-3)는, 그 행렬 곱 X3을 회전 조작부(564-4)에 공급한다.
Figure pct00074
회전 조작부(564-4)는, 이하의 식 (72)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 4번째의 조작에 대응하는 직교 행렬 T4와, 외부로부터 공급되는 1×64행 벡터 X3의 전치 행렬과의 행렬 곱 X4(1×64의 행 벡터)를 구한다. 회전 조작부(564-4)는, 그 행렬 곱 X4를 회전 조작부(564-5)에 공급한다.
Figure pct00075
회전 조작부(564-5)는, 이하의 식 (73)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 5번째의 조작에 대응하는 직교 행렬 T5와, 외부로부터 공급되는 1×64행 벡터 X4의 전치 행렬과의 행렬 곱 X5(1×64의 행 벡터)를 구한다. 회전 조작부(564-5)는, 그 행렬 곱 X5를 회전 조작부(564-6)에 공급한다.
Figure pct00076
회전 조작부(564-6)는, 이하의 식 (74)에 나타낸 바와 같이, 64점 HyGT부(563)의 외부(세컨더리 변환 선택부(561)(도 50))로부터 공급되는 64점 HyGT의 행렬 R을 행렬 분해하여 얻어지는 6번째의 조작에 대응하는 직교 행렬 T6과, 외부로부터 공급되는 1×64행 벡터 X5의 전치 행렬과의 행렬 곱 X6(1×64의 행 벡터)을 구한다. 회전 조작부(564-6)는, 그 행렬 곱 X6(=Y1d)을 64점 HyGT부(563)의 외부(스케일링부(143)(도 50))에 공급한다.
Figure pct00077
이상과 같이, 6개의 회전 조작부(564)는, 서로 마찬가지의 변환 처리를 행한다. 즉, 64점 HyGT부(563)는, 64점 HyGT의 행렬 R을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 64점 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 64점 HyGT의 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 64점 HyGT의 행렬 R을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<변환 처리의 흐름>
다음으로 도 9의 스텝 S104에 있어서 실행되는 변환 처리의 흐름의 예를, 도 52의 흐름도를 참조하여 설명한다.
이 경우도 변환 처리는, 도 28의 흐름도를 참조하여 설명한 경우와 기본적으로 마찬가지의 흐름으로 행해진다. 즉, 변환 처리가 개시되면, 스텝 S541 내지 스텝 S549의 각 처리는, 도 28의 스텝 S401 내지 스텝 S409의 각 처리와 기본적으로 마찬가지로 실행된다.
또한, 스텝 S543의 처리에 있어서, 세컨더리 변환의 행렬 R은, 세컨더리 변환 식별자 st_idx와, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize에서 도출되는 서브그룹의 사이즈 N에 의해 선택된다. 또한, 스텝 S544의 처리에 있어서, 스텝 S404에 있어서의 서브블록을, 서브그룹으로 대체하여 실행된다. 또한, 스텝 S545의 처리에 있어서, 스텝 S405에 있어서의 1×16차원의 벡터 X1d를, 1×N차원의 벡터 X1d(N=16, 64)로 대체하여 실행된다. 또한, 스텝 S546의 처리에 있어서, 행렬 연산은, 세컨더리 변환의 행렬 R을 상술한 바와 같이 행렬 분해하여 행해진다. 또한, 스텝 S549의 처리에 있어서, 스텝 S409에 있어서의 서브블록을 서브그룹으로 대체하여 실행된다.
또한, 변환 처리는, 실시 가능한 범위에서, 각 스텝의 처리순의 변경이나, 처리의 내용을 변경해도 된다. 예를 들어, 스텝 S542에 있어서 세컨더리 변환 식별자 st_idx=0이라고 판정된 경우, 서브그룹의 사이즈 N에 대응하는 N×N의 단위 행렬이 세컨더리 변환 R로서 선택되고, 스텝 S544 내지 스텝 S549의 각 처리가 실행되도록 해도 된다.
이상과 같이 각 처리를 실행함으로써, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<행렬 연산 처리의 흐름>
다음으로 도 53의 흐름도를 참조하여, 도 52의 스텝 S546에 있어서 실행되는, 64점 HyGT의 행렬 연산 처리의 흐름의 예를 설명한다.
64점 HyGT의 행렬 연산 처리가 개시되면, 스텝 S561에 있어서, 회전 조작부(564-1)는, 직교 행렬 T1(=P1 T·F1·P1=F1)과 행 벡터 X0과의 행렬 곱 X1을 구한다.
스텝 S562에 있어서, 회전 조작부(564-2)는, 직교 행렬 T2(=P2 T·F2·P2)와 행렬 곱 X1과의 행렬 곱 X2를 구한다.
스텝 S563에 있어서, 회전 조작부(564-3)는, 직교 행렬 T3(=P3 T·F3·P3)과 행렬 곱 X2와의 행렬 곱 X3을 구한다.
스텝 S564에 있어서, 회전 조작부(564-4)는, 직교 행렬 T4(=P4 T·F4·P4)와 행렬 곱 X3과의 행렬 곱 X4를 구한다.
스텝 S565에 있어서, 회전 조작부(564-5)는, 직교 행렬 T5(=P5 T·F5·P5)와 행렬 곱 X4와의 행렬 곱 X5를 구한다.
스텝 S566에 있어서, 회전 조작부(564-6)는, 직교 행렬 T6(=P6 T·F6·P6)과 행렬 곱 X5와의 행렬 곱 X6(=Y1d)을 구한다. 스텝 S566의 처리가 종료되면, 처리는 도 52로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 64점 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 그리고, 이상과 같이 각 처리를 실행함으로써, 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<역 세컨더리 변환부>
다음으로 화상 부호화 장치(100)에 대응하는 화상 복호 장치(200)에 대하여 설명한다. 화상 복호 장치(200)는, 도 49의 예와 같은, 4분목(Quad-Tree) 형상 또는 수평 방향 혹은 수직 방향으로 2분목(Binary-Tree) 형상의 트리구조 블록(CU, PU 및 TU)을 적용하는 경우도, 제3 실시 형태의 경우와 기본적으로 마찬가지의 구성을 가질 수 있다. 즉, 화상 복호 장치(200)는, 예를 들어 도 11에 도시된 바와 같은 구성을 갖고, 역변환부(213)는, 예를 들어 도 30에 도시된 바와 같은 구성을 갖는다. 단, 이 경우, 역 세컨더리 변환부(231)는, 예를 들어 도 54에 도시된 바와 같은 구성을 갖는다.
즉, 이 경우, 역 세컨더리 변환부(231)는, 도 30의 래스터라이즈부(241), 스케일링부(243) 및 행렬화부(244)를 갖지만, 도 30의 역 세컨더리 변환 선택부(246) 대신에 도 54의 역 세컨더리 변환 선택부(571)를 갖고, 도 30의 행렬 연산부(451) 대신에 도 54의 행렬 연산부(572)를 갖는다. 또한, 이 경우, 도 30의 경우와 마찬가지로 클립 처리부(145)는 생략해도 된다.
래스터라이즈부(241)는, 외부로부터 공급되는 스캔 식별자 scanIdx에 의해 지정되는 변환 계수의 스캔 방법에 기초하여, N개의 요소로 이루어지는 서브그룹 단위마다, 역양자화부(212)(도 11)로부터 공급되는 변환 계수 Coeff_IQ를 1×N차원의 벡터 X1d로 변환한다. 래스터라이즈부(241)는, 얻어진 벡터 X1d를 행렬 연산부(572)에 공급한다. 또한, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize의 어느 한쪽이 4인 경우, 4×4 서브블록을 서브그룹으로 한다. 이 경우, N=16이다. 이에 반하여, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize가 모두 8 이상인 경우에는, 8×8 서브블록을 서브그룹으로 한다. 이 경우, N=64이다. 래스터라이즈부(241)는, 얻어진 벡터 X1d를 행렬 연산부(572)에 공급한다. 서브그룹의 사이즈(요소 수)를 나타내는 N은, 예를 들어 상술한 식 (67)에 의해 결정된다. 또한, 식 (67) 대신에 각 사이즈의 대수값을 이용하여 상술한 식 (68)에 따라서 결정하도록 해도 된다.
역 세컨더리 변환 선택부(571)는, 복호부(211)(도 11)로부터 공급되는, 세컨더리 변환의 내용에 관한 정보인 세컨더리 변환 식별자 st_idx와, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize에서 도출되는 서브그룹의 사이즈 N에 의해 지정되는 역 세컨더리 변환의 행렬 IR(=RT)를, 역 세컨더리 변환 선택부(571)의 내부 메모리(도시생략)로부터 판독하고, 행렬 연산부(572)에 공급한다. 예를 들어, 서브그룹의 사이즈 N이 N=16(4×4 서브블록)인 경우, 세컨더리 변환 식별자 st_idx에 대응하는 행렬 분해된 16점 역 HyGT의 변환 행렬 IR이 선택된다. 또한, 서브그룹의 사이즈 N이 N=64(8×8 서브블록)인 경우, 세컨더리 변환 식별자 st_idx에 대응하는 행렬 분해된 64점 역 HyGT의 변환 행렬 IR이 선택된다.
또한, 역 세컨더리 변환 선택부(571)가, 예를 들어 복호부(211)로부터 공급되는 세컨더리 변환 식별자 st_idx나 인트라 예측 모드 정보 IPinfo(예를 들어, 인트라 예측 모드 번호)에 따라서, 서브그룹의 사이즈별로 역 세컨더리 변환 IR(=RT)를 선택하도록 해도 된다. 또한, 인트라 예측 모드 정보 IPinfo 대신에 움직임 예측 정보 MVinfo와 세컨더리 변환 식별자 st_idx에 따라서, 역변환 IR이 선택되도록 해도 된다.
행렬 연산부(572)는, 16점 역 HyGT부(451) 및 64점 역 HyGT부(573)을 갖는다. 행렬 연산부(572)는, 서브그룹마다, 1×N차원의 벡터 X1d(=X0) 및 역 세컨더리 변환 IR(=RT)의 행렬을, 16점 역 HyGT부(451) 또는 64점 역 HyGT부(573)에 공급한다. 보다 구체적으로는, 서브그룹의 사이즈 N이 16인 경우(역 세컨더리 변환의 처리 단위가 4×4 서브블록), 행렬 연산부(572)는, 1×16차원 벡터 X1d(=X0) 및 16점 역 HyGT의 변환 행렬 IR을 16점 역 HyGT부(451)에 공급한다. 또한, 서브그룹의 사이즈 N이 64인 경우(역 세컨더리 변환의 처리 단위가 8×8 서브블록), 행렬 연산부(572)는, 1×64차원 벡터 X1d(=X0) 및 64점 역 HyGT의 변환 행렬 IR을 64점 역 HyGT부(573)에 공급한다.
1×16차원 벡터 X1d(=X0) 및 16점 역 HyGT의 변환 행렬 IR이 공급된 경우, 16점 역 HyGT부(451)는, 변환 행렬 IR과 1×16차원 벡터 X1d와의 행렬 곱 Y1d를 도출하고, 스케일링부(243)에 공급한다. 또한, 1×64차원 벡터 X1d(=X0) 및 64점 역 HyGT의 변환 행렬 IR이 공급된 경우, 64점 역 HyGT부(573)는, 변환 행렬 IR과 1×64차원 벡터 X1d와의 행렬 곱 Y1d를 도출하고, 스케일링부(243)에 공급한다.
스케일링부(243)는, 행렬 연산부(572)로부터 공급되는 신호 Y1d의 놈을 정규화하고, 정규화 후의 신호 Z1d를 구한다. 스케일링부(243)는, 얻어진 신호 Z1d를 행렬화부(244)에 공급한다. 행렬화부(244)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 놈 정규화 후의 1×N차원의 벡터 Z1d를, 서브그룹의 사이즈 N에 대응하는 M×M 서브블록(M×M 정사각 행렬)으로 변환한다. 예를 들어, 서브그룹의 사이즈 N=16의 경우, 1×16차원의 벡터 Z1d를 4×4 서브블록(4×4 정사각 행렬)으로 변환한다. 또한, 서브그룹의 사이즈 N=64의 경우, 1×64차원의 벡터 Z1d를 8×8 서브블록(8×8 정사각 행렬)으로 변환한다. 행렬화부(244)는, 얻어진 변환 계수 Coeff를 외부로 출력한다.
이상과 같이, 행렬 연산부(572)는, 16점 역 HyGT 또는 64점 역 HyGT 베이스의 역 세컨더리 변환의 행렬을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 역 세컨더리 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<64점 역 HyGT부>
도 55는, 64점 역 HyGT부(573)의 주된 구성예를 나타내는 블록도이다. 도 55에 도시된 바와 같이, 64점 역 HyGT부(573)는, 회전 조작부(574-1), 회전 조작부(574-2), 회전 조작부(574-3), 회전 조작부(574-4), 회전 조작부(574-5) 및 회전 조작부(574-6)를 갖는다. 또한, 이하에 있어서 회전 조작부(574-1) 내지 회전 조작부(574-6)를 서로 구별하여 설명할 필요가 없는 경우, 회전 조작부(574)라고 칭한다.
회전 조작부(574-1)는, 이하의 식 (75)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 1번째의 조작에 대응하는 직교 행렬 T6 T와, 64점 역 HyGT부(573)의 외부(래스터라이즈부(241)(도 54))로부터 공급되는 1×64행 벡터 X0(=X1d)의 전치 행렬과의 행렬 곱 X1(1×64의 행 벡터)을 구한다. 회전 조작부(574-1)는, 그 행렬 곱 X1을 회전 조작부(574-2)에 공급한다.
Figure pct00078
회전 조작부(574-2)는, 이하의 식 (76)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 2번째의 조작에 대응하는 직교 행렬 T5 T와, 회전 조작부(574-1)로부터 공급되는 1×64행 벡터 X1의 전치 행렬과의 행렬 곱 X2(1×64의 행 벡터)을 구한다. 회전 조작부(574-2)는, 그 행렬 곱 X2를 회전 조작부(574-3)에 공급한다.
Figure pct00079
회전 조작부(574-3)는, 이하의 식 (77)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 3번째의 조작에 대응하는 직교 행렬 T4 T와, 회전 조작부(574-2)로부터 공급되는 1×64행 벡터 X2의 전치 행렬과의 행렬 곱 X3(1×64의 행 벡터)을 구한다. 회전 조작부(574-3)는, 그 행렬 곱 X3을 회전 조작부(574-4)에 공급한다.
Figure pct00080
회전 조작부(574-4)는, 이하의 식 (78)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 4번째의 조작에 대응하는 직교 행렬 T3 T와, 회전 조작부(574-3)로부터 공급되는 1×64행 벡터 X3의 전치 행렬과의 행렬 곱 X4(1×64의 행 벡터)를 구한다. 회전 조작부(574-4)는, 그 행렬 곱 X4를 회전 조작부(574-5)에 공급한다.
Figure pct00081
회전 조작부(574-5)는, 이하의 식 (79)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 5번째의 조작에 대응하는 직교 행렬 T2 T와, 회전 조작부(574-4)로부터 공급되는 1×64행 벡터 X4의 전치 행렬과의 행렬 곱 X5(1×64의 행 벡터)를 구한다. 회전 조작부(574-5)는, 그 행렬 곱 X5를 회전 조작부(574-6)에 공급한다.
Figure pct00082
회전 조작부(574-6)는, 이하의 식 (80)에 나타낸 바와 같이, 64점 역 HyGT부(573)의 외부(역 세컨더리 변환 선택부(571)(도 54))로부터 공급되는 64점 역 HyGT의 행렬 IR을 행렬 분해하여 얻어지는 6번째의 조작에 대응하는 직교 행렬 T1 T와, 회전 조작부(574-5)로부터 공급되는 1×64행 벡터 X5의 전치 행렬과의 행렬 곱 X6(1×16의 행 벡터)을 구한다. 회전 조작부(574-6)는, 그 행렬 곱 X6(=Y1d)을 64점 역 HyGT부(573)의 외부(스케일링부(243)(도 54))에 공급한다.
Figure pct00083
이상과 같이, 6개의 회전 조작부(574)는, 서로 마찬가지의 변환 처리를 행한다. 즉, 64점 역 HyGT부(573)는, 64점 역 HyGT의 행렬 IR을 행렬 분해하여 행렬 연산을 행하고, 행 벡터 X1d를 행 벡터 Y1d로 변환하므로, 64점 역 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 또한, 64점 역 HyGT의 변환으로서 유지하는 계수의 수를 저감시킬 수 있어, 64점 역 HyGT의 행렬 IR을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<역변환 처리의 흐름>
다음으로 도 13의 스텝 S203에 있어서 실행되는 역변환 처리의 흐름의 예를, 도 56의 흐름도를 참조하여 설명한다.
이 경우도 역변환 처리는, 도 32의 흐름도를 참조하여 설명한 경우와 기본적으로 마찬가지의 흐름으로 행해진다. 즉, 역변환 처리가 개시되면, 스텝 S581 내지 스텝 S589의 각 처리는, 도 32의 스텝 S441 내지 스텝 S449의 각 처리와 기본적으로 마찬가지로 실행된다.
또한, 스텝 S582의 처리에 있어서, 역 세컨더리 변환의 행렬 IR은, 세컨더리 변환 식별자 st_idx와, 변환 블록의 세로 사이즈 TBHSize 및 가로 사이즈 TBWSize에서 도출되는 서브그룹의 사이즈 N에 의해 선택된다. 또한, 스텝 S583의 처리에 있어서, 스텝 S443에 있어서의 서브블록을, 서브그룹으로 대체하여 실행된다. 또한, 스텝 S584의 처리에 있어서, 스텝 S444에 있어서의 1×16차원의 벡터 X1d를, 1×N차원의 벡터 X1d(N=16, 64)으로 대체하여 실행된다. 또한, 스텝 S585의 처리에 있어서, 행렬 연산은, 역 세컨더리 변환의 행렬 IR을 상술한 바와 같이 행렬 분해하여 행해진다. 또한, 스텝 S588의 처리에 있어서, 스텝 S448에 있어서의 서브블록을 서브그룹으로 대체하여 실행된다.
또한, 역변환 처리는, 실시 가능한 범위에서, 각 스텝의 처리순의 변경이나, 처리의 내용을 변경해도 된다. 예를 들어, 스텝 S581에 있어서 세컨더리 변환 식별자 st_idx=0이라고 판정된 경우, 서브그룹의 사이즈 N에 대응하는 N×N의 단위 행렬이 역 세컨더리 변환 IR로서 선택되어, 스텝 S582 내지 스텝 S589의 각 처리가 실행되도록 해도 된다.
이상과 같이 각 처리를 실행함으로써, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<행렬 연산 처리의 흐름>
다음으로 도 57의 흐름도를 참조하여, 도 56의 스텝 S585에 있어서 실행되는 64점 역 HyGT의 행렬 연산 처리의 흐름의 예를 설명한다.
64점 역 HyGT의 행렬 연산 처리가 개시되면, 스텝 S601에 있어서, 회전 조작부(574-1)는, 직교 행렬 T6 T(=P6 T·F6 T·P6)와 행 벡터 X0과의 행렬 곱 X1을 구한다.
스텝 S602에 있어서, 회전 조작부(574-2)는, 직교 행렬 T5 T(=P5 T·F5 T·P5)와 행렬 곱 X1과의 행렬 곱 X2를 구한다.
스텝 S603에 있어서, 회전 조작부(574-3)는, 직교 행렬 T4 T(=P4 T·F4 T·P4)와 행렬 곱 X2와의 행렬 곱 X3을 구한다.
스텝 S604에 있어서, 회전 조작부(574-4)는, 직교 행렬 T3 T(=P3 T·F3 T·P3)과 행렬 곱 X3과의 행렬 곱 X4를 구한다.
스텝 S605에 있어서, 회전 조작부(574-5)는, 직교 행렬 T2 T(=P2 T·F2 T·P2)와 행렬 곱 X4와의 행렬 곱 X5를 구한다.
스텝 S606에 있어서, 회전 조작부(574-6)는, 직교 행렬 T1 T(=P1 T·F1 T·P1=F1 T)와 행렬 곱 X5와의 행렬 곱 X6(=Y1d)을 구한다. 스텝 S606의 처리가 종료되면, 처리는 도 56으로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 64점 역 HyGT에 의한 변환의 연산량(승산·가산)을 저감할 수 있다. 그리고, 이상과 같이 각 처리를 실행함으로써, 역 세컨더리 변환의 연산량(승산·가산)을 저감할 수 있어, 역 세컨더리 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<8. 제8 실시 형태>
<세컨더리 변환의 실행>
세컨더리 변환은, 도 58에 도시된 바와 같이, 4×4 서브블록 단위 또는 서브그룹(8×8 서브블록) 단위로 실행된다. 도 58의 A는 변환 블록이 정사각형인 경우의 예를 나타내고, 도 58의 B는 변환 블록이 직사각형(TBHSize<TBWSize)인 경우의 예를 나타내며, 도 58의 C는 변환 블록이 직사각형(TBHSize>TBWSize)인 경우의 예를 나타내고 있다. 도 58에 있어서, 실선의 사각이 서브그룹(8×8 서브블록)을 나타내고, 점선으로 구획된 영역이 4×4 서브블록을 나타내고 있다. 그리고 사선 모양으로 나타내어지는 영역이 세컨더리 변환이 행해지는 영역을 나타내고 있다.
세컨더리 변환은, 도 58의 예와 같이, 변환 블록 전체에 대해서 행할 수도 있지만, 도 59의 예와 같이, 저주파 성분에 대해서만 행할 수도 있다. 도 58의 경우와 마찬가지로, 도 59의 A는 변환 블록이 정사각형인 경우의 예를 나타내고, 도 59의 B는 변환 블록이 직사각형(TBHSize<TBWSize)인 경우의 예를 나타내며, 도 59의 C는 변환 블록이 직사각형(TBHSize>TBWSize)인 경우의 예를 나타내고 있다. 도 59에 있어서, 실선의 사각이 서브그룹(8×8 서브블록)을 나타내고, 점선으로 구획된 영역이 4×4 서브블록을 나타내고 있다. 그리고 사선 모양으로 나타내어지는 영역이 세컨더리 변환이 행해지는 영역을 나타내고 있다.
종래, 저주파 성분에 대해서만 행하는 경우, 세컨더리 변환은, 도 59에 도시된 바와 같이, 변환 블록의 좌측 상단, 세로 2개×가로 2개의 4개의 4×4 서브블록에 대하여 행해지고 있었다(도 59의 사선 부분). 이것은, 변환 블록이 정사각형인 경우(도 59의 A)도, 직사각형(TBHSize<TBWSize)인 경우(도 59의 B)도, 직사각형(TBHSize>TBWSize)인 경우(도 59의 C)도 마찬가지이다.
그러나, 이 경우의 세컨더리 변환을 행하는 영역(사선 부분)은, 복호 처리순과 일치하지 않으므로, 이 영역 내의 모든 서브블록이 복호될 때까지 세컨더리 변환을 행할 수 없었다. 즉, 불필요한 대기 시간이 발생하여, 그만큼, 처리 시간이 증대될 우려가 있었다.
그래서, 저주파 성분에 대해서만 세컨더리 변환을 행할 때, 그 세컨더리 변환을 행하는 서브블록을 스캔순에 따라서 설정하도록 해도 된다. 예를 들어, 도 59에 도시된 바와 같이 4개의 4×4 서브블록에 대해서 세컨더리 변환을 행하는 경우, scanIdx로 나타내어지는 스캔순에 따라서 처음에 복호되는 4개의 4×4 서브블록에 대해서 세컨더리 변환을 행하도록 해도 된다.
예를 들어, scanIdx로 나타내어지는 스캔순이 도 60과 같은 경사 방향의 경우, 세컨더리 변환을, 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록에 대해서, 이 순서대로 행하도록 해도 된다. 도 58의 경우와 마찬가지로, 도 60의 A는 변환 블록이 정사각형인 경우의 예를 나타내고, 도 60의 B는 변환 블록이 직사각형(TBHSize<TBWSize)인 경우의 예를 나타내며, 도 60의 C는 변환 블록이 직사각형(TBHSize>TBWSize)인 경우의 예를 나타내고 있다. 도 60에 있어서, 실선의 사각이 서브그룹(8×8 서브블록)을 나타내고, 점선으로 구획된 영역이 4×4 서브블록을 나타내고 있다. 또한, 화살표는, scanIdx에 의해 지정되는 스캔순을 나타내고 있다. 그리고 사선 모양으로 나타내어지는 영역이 세컨더리 변환이 행해지는 영역을 나타내고 있다. 도 60의 A의 경우도, 도 60의 B의 경우도, 도 60의 C의 경우도, 세컨더리 변환은, 상술한 4개의 4×4 서브블록(변환 블록 내에서 처음에 복호되는 4개의 4×4 서브블록)에 대해서 행해진다.
예를 들어, scanIdx로 나타내어지는 스캔순이 도 61과 같은 수평 방향의 경우, 세컨더리 변환을, 변환 블록의 좌측 상단부 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 최상단의 좌측부터 3번째의 4×4 서브블록, 최상단의 좌측부터 4번째의 4×4 서브블록에 대해서, 이 순서대로 행하도록 해도 된다. 도 58의 경우와 마찬가지로, 도 61의 A는 변환 블록이 정사각형인 경우의 예를 나타내고, 도 61의 B는 변환 블록이 직사각형(TBHSize<TBWSize)인 경우의 예를 나타내며, 도 61의 C는 변환 블록이 직사각형(TBHSize>TBWSize)의 경우의 예를 나타내고 있다. 도 61에 있어서, 실선의 사각이 서브그룹(8×8 서브블록)을 나타내고, 점선으로 구획된 영역이 4×4 서브블록을 나타내고 있다. 또한, 화살표는, scanIdx에 의해 지정되는 스캔순을 나타내고 있다. 그리고 사선 모양으로 나타내어지는 영역이 세컨더리 변환이 행해지는 영역을 나타내고 있다. 도 61의 A의 경우도, 도 61의 B의 경우도, 도 61의 C의 경우도, 세컨더리 변환은, 상술한 4개의 4×4 서브블록(변환 블록 내에서 처음에 복호되는 4개의 4×4 서브블록)에 대해서 행해진다.
예를 들어, scanIdx로 나타내어지는 스캔순이 도 62와 같은 수직 방향의 경우, 세컨더리 변환을, 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록, 위에서 4단째의 좌측 단부의 4×4 서브블록에 대해서, 이 순서대로 행하도록 해도 된다. 도 58의 경우와 마찬가지로, 도 62의 A는 변환 블록이 정사각형의 경우의 예를 나타내고, 도 62의 B는 변환 블록이 직사각형(TBHSize<TBWSize)인 경우의 예를 나타내고, 도 62의 C는 변환 블록이 직사각형(TBHSize>TBWSize)인 경우의 예를 나타내고 있다. 도 62에 있어서, 실선의 사각이 서브그룹(8×8 서브블록)을 나타내고, 점선으로 구획된 영역이 4×4 서브블록을 나타내고 있다. 또한, 화살표는, scanIdx에 의해 지정되는 스캔순을 나타내고 있다. 그리고 사선 모양으로 나타내어지는 영역이 세컨더리 변환이 행해지는 영역을 나타내고 있다. 도 62의 A의 경우도, 도 62의 B의 경우도, 도 62의 C의 경우도, 세컨더리 변환은, 상술한 4개의 4×4 서브블록(변환 블록 내로 처음에 복호되는 4개의 4×4 서브블록)에 대해서 행해진다.
도 60 내지 도 62의 예와 같이 스캔순에 따른 4×4 서브블록을 세컨더리 변환함으로써, 복호된 4×4 서브블록을 순차 세컨더리 변환할 수 있어, 처리 시간의 증대를 억제할 수 있다. 또한, 이러한 처리순은, 임의의 방법의 세컨더리 변환에 적용할 수 있다. 예를 들어, 종래와 같이 비 세퍼러블 HyGT를 사용한 세컨더리 변환에도, 상술한 바와 같은 세퍼러블 HyGT를 사용한 세컨더리 변환에도 적용할 수 있다.
<9. 제9 실시 형태>
<SDT>
비특허문헌 1에는, 프라이머리 변환(기존의 DCT(Discrete Cosine Transform)이나 DST(Discrete Sine Transform) 등에 의한 직교 변환)을 행한 후에, 또한 에너지 컴팩션을 높이기(저역에서 변환 계수를 집중시키기) 위해서, 4×4 서브블록 단위로, 16점 KLT(Karhunen-Loeve transform) 베이스의 비 세퍼러블 세컨더리 변환을 적용하는 것이 개시되어 있다. 또한, 비특허문헌 1에는, 주목하는 부호화 대상 블록의 주변의 국소 복호 화상과 유사한 복수의 패치를, 현 프레임의 복호 완료 화소 영역을 탐색해서 알아내고, 그 패치군으로부터 KLT 베이스의 직교 변환을 도출하고, 그 KLT 베이스의 직교 변환을 부호화 대상 블록에 대해서 적용하는 SDT(Signal Dependent Transform)라는 부호화 모드가 개시되어 있다.
비특허문헌 2에는, 16점 HyGT 베이스의 비 세퍼러블 세컨더리 변환을 적용하는 것이 개시되어 있다. 비특허문헌 3에는, 비특허문헌 2에 기재된 4×4 서브블록 단위로 행하는 16점 HyGT 베이스의 비 세퍼러블 세컨더리 변환 외에도, 8×8 서브블록 단위로 행하는 64점 HyGT 베이스의 비 세퍼러블 세컨더리 변환을 적용하는 것이 개시되어 있다.
그러나, 비특허문헌 3에 기재된 64점 HyGT 베이스의 세컨더리 변환은, 비 분해(비 세퍼러블)이기 때문에, 연산량이 많았다. 또한, 인트라 예측 모드의 클래스 수와 각 클래스에 대응하는 세컨더리 변환의 수만큼, 세컨더리 변환의 행렬을 갖고 있으며, 세컨더리 변환의 행렬을 유지하는 메모리 사이즈가 거대하였다. 비특허문헌 3에서는, 인트라 예측 모드의 클래스 수=35이며, 변환 블록의 사이즈수=2이며, 각 클래스에 대한 세컨더리 변환의 수=5이며, 35*5=175의 행렬이 각 변환 블록 사이즈마다 존재한다. 예를 들어, 각 행렬의 요소를 9bit 정밀도로 유지하는 경우, 전체 16점 HyGT 베이스의 세컨더리 변환의 행렬을 유지하는 데 요하는 메모리 사이즈와 전체 64점 HyGT 베이스의 세컨더리 변환의 행렬을 유지하는 데 요하는 메모리 사이즈는 각각 이하의 식 (81) 및 식 (82)와 같아진다.
Figure pct00084
Figure pct00085
즉 합계 836.71875KB의 용량이 필요하였다.
또한, KLT 베이스에서 직교 변환을 구하는 경우, 매우 연산 복잡도가 높아, 처리의 부하가 증대될 우려가 있다. 그 때문에, 회로 규모나 비용이 증대될 우려가 있다. 예를 들어, N점의 KLT를 구할 때, 행렬 분해(Matrix Decomposition)를 푸는데도 필요한 연산 복잡도의 오더는 O(N^3)이다. 예를 들어, N=16으로 하면, O(16**3)=O(4096)으로 된다.
그래서, 2**N점 HyGT 베이스의 직교 변환을 N개의 직교 행렬과 N-1개의 치환 행렬로 분해하는 세퍼러블 HyGT 베이스의 직교 변환을, KLT 베이스의 세컨더리 변환/역 세컨더리 변환(64점) 및 SDT에 있어서의 직교 변환/역직교 변환(2**N점)으로서 적용한다. 이와 같이 함으로써, 행렬 분해한 각 직교 변환의 소행렬의 성질 및 계수의 대칭성을 이용하고, 직교 변환으로서의 연산량을 저감할 수 있으므로, KLT 베이스의 직교 변환과 비교하여, 직교 변환/역직교 변환에 필요한 연산량(승산, 가산)을 저감시킬 수 있다.
또한, 2**N점 HyGT의 변환 기저의 도출은, 2점 HyGT로의 문제를 세분화할 수 있고, 행렬 분해의 연산 복잡도를 저감시킬 수 있다. 따라서, KLT의 변환 기저 도출 방법에 비하여 대폭 연산량을 저감시킬 수 있다. 예를 들어, 16점 HyGT 베이스의 직교 변환 경우, 행렬 분해에 필요한 연산 복잡도의 오더는 O(2**3)*8*4=O(8)*32=O(256)으로 된다. 따라서, 16점 KLT 베이스의 직교 변환 경우의 행렬 분해에 걸리는 연산 복잡도 O(4096)과 비교하여, 동등한 에너지 컴팩션을 유지하면서, 적응 직교 변환의 변환 기저를 도출하는 데 필요한 연산 복잡도를 O(256)으로 억제할 수 있다.
일반적으로, 2**N점의 KLT 베이스의 직교 변환 도출에는, O((2**N)**3)의 연산 복잡도가 필요한 것에 비하여, 2**N점의 HyGT 베이스의 직교 변환 도출에는, O(2**3)*(2**N/2)*N=O(4*N*2**N)으로 되어, 극적으로 연산량을 저감시킬 수 있다.
<신택스>
우선, 신택스에 있어서 SDT를 선택할 수 있도록 한다. 예를 들어, 시퀀스 파라미터 세트(sequence parameter set)에 있어서, 도 63에 도시된 사선 모양의 행과 같이, SDT용으로, sdt_enabled_flag를 세트할 수 있도록 한다. sdt_enabled_flag는, SDT를 선택 가능한지 여부를 나타내는 플래그이다. sdt_enabled_flag가 참(예를 들어 「1」)인 경우, 그 시퀀스 내에 있어서, SDT의 선택이 가능하다. 또한, sdt_enabled_flag가 거짓(예를 들어 「0」)인 경우, SDT를 선택할 수 없다.
그리고, Residual Coding에 있어서, 도 64에 도시된 사선 모양의 행과 같이, 그 sdt_enabled_flag의 값에 따라서, SDTAvailableFlag를 세트할 수 있도록 한다. 또한, 그 SDTAvailableFlag의 값에 따라서 sdt_flag를 세트할 수 있도록 한다.
SDTAvailableFlag는, sdt_flag를 복호할지 여부를 나타내는 플래그이다. SDTAvailableFlag가 참(예를 들어 「1」)인 경우, sdt_flag의 복호가 행해진다. 즉, 이 경우, sdt_flag가 존재한다(세트되어 있다). 또한, SDTAvailableFlag가 거짓(예를 들어 「0」)인 경우, sdt_flag의 복호가 생략된다. 즉, 그 경우, sdt_flag는 존재하지 않는다(세트되어 있지 않다). 예를 들어, 도 64의 경우, sdt_enabled_flag가 참일 때, SDTAvailableFlag가 세트된다. 그 때, SDTAvailableFlag는, 인터 예측이며, 휘도 신호이며, 블록이 소정의 상한 사이즈보다 작은 정사각형이며, 변환(역변환)을 스킵할지 여부를 나타내는 transform_skip_flag가 거짓이며, 또한, 변환(역변환) 및 양자화(역양자화)를 스킵할지 여부를 나타내는 cu_transquant_bypass_flag가 거짓인 경우, 참(예를 들어 「1」)으로 세트되고, 그 이외의 경우, 거짓(예를 들어 「0」)으로 세트된다.
sdt_flag는, 세컨더리 변환으로서 SDT를 선택할지 여부를 나타내는 플래그이다. sdt_flag가 참(예를 들어 「1」)인 경우, SDT가 선택된다. 반대로, sdt_flag가 거짓(예를 들어 「0」)인 경우, SDT가 선택되지 않는다. 예를 들어, 도 64의 경우, SDTAvailableFlag가 참일 때, sdt_flag가 세트된다.
또한, SDT는, 인트라 예측에 있어서도 선택할 수 있도록 해도 된다. 예를 들어, 시퀀스 파라미터 세트(sequence parameter set)에 있어서, 도 65에 도시된 사선 모양의 행과 같이, SDT용으로, intra_sdt_enabled_flag와 inter_sdt_enabled_flag를 세트할 수 있도록 한다. intra_sdt_enabled_flag는, 인트라 예측 시에 SDT를 선택 가능한지 여부를 나타내는 플래그이다. intra_sdt_enabled_flag가 참(예를 들어 「1」)인 경우, 그 시퀀스 내의 인트라 예측이 행해지는 블록에 있어서 SDT의 선택이 가능하다. 또한, intra_sdt_enabled_flag가 거짓(예를 들어 「0」)인 경우, 그 시퀀스 내의 인트라 예측이 행해지는 블록에 있어서 SDT를 선택할 수 없다.
또한, inter_sdt_enabled_flag는, 인터 예측 시에 SDT를 선택 가능한지 여부를 나타내는 플래그이다. inter_sdt_enabled_flag가 참(예를 들어 「1」)인 경우, 그 시퀀스 내의 인터 예측이 행해지는 블록에 있어서 SDT의 선택이 가능하다. 또한, inter_sdt_enabled_flag가 거짓(예를 들어 「0」)인 경우, 그 시퀀스 내의 인터 예측이 행해지는 블록에 있어서 SDT를 선택할 수 없다.
그리고, 이 경우, Residual Coding에 있어서, 도 66에 도시된 사선 모양의 행과 같이, intra_sdt_enabled_flag나 inter_sdt_enabled_flag의 값에 따라서, SDTAvailableFlag를 세트할 수 있도록 한다. 또한, 그 SDTAvailableFlag의 값에 따라서 sdt_flag를 세트할 수 있도록 한다.
예를 들어, 도 66의 경우, intra_sdt_enabled_flag 또는 inter_sdt_enabled_flag가 참일 때, SDTAvailableFlag가 세트된다. 예를 들어, 휘도 신호이며, 블록이 소정의 상한 사이즈보다 작고 소정의 하한 사이즈보다 큰 정사각형이며, transform_skip_flag 및 cu_transquant_bypass_flag가 거짓이며, 또한, 인트라 예측이 행해져서, intra_sdt_enabled_flag가 참이고 inter_sdt_enabled_flag가 거짓이거나, 또는 인터 예측이 행해져서, intra_sdt_enabled_flag가 거짓이고 inter_sdt_enabled_flag가 참인 경우, SDTAvalableFlag는 참(예를 들어 「1」)으로 세트되고, 그 이외의 경우, SDTAvalableFlag는 거짓(예를 들어 「0」)으로 세트된다.
그리고, 예를 들어 도 66의 경우, SDTAvalableFlag가 참일 때, sdt_flag가 세트된다.
<변환부>
이 경우도 화상 부호화 장치(100)는, 제3 실시 형태의 경우와 기본적으로 마찬가지의 구성을 가질 수 있다. 즉, 화상 부호화 장치(100)는, 예를 들어 도 7에 나타낸 바와 같은 구성을 갖는다. 단, 이 경우, 변환부(112)는, 예를 들어 도 67에 나타낸 바와 같은 구성을 갖는다. 즉, 이 경우, 변환부(112)는, 도 67에 도시된 바와 같이, 스위치(601), 스위치(602), 프라이머리 변환부(131), 세컨더리 변환부(132) 및 SDT부(603)를 갖는다.
스위치(601)는, 프라이머리 변환 및 세컨더리 변환의 실행을 제어하는 제어부의 일 실시 형태이다. 예를 들어, 스위치(601)는, 프라이머리 변환을 스킵시킬 경우, 세컨더리 변환도 스킵시키도록 제어한다. 예를 들어, 스위치(601)는, 변환 정보 Tinfo에 포함되는 프라이머리 변환의 스킵에 관한 변환 skip flagts_flag의 값이나, 변환 정보 Tinfo에 포함되는 변환 양자화 바이패스 플래그transquant_bypass_flag의 값에 따라서, 연산부(111)로부터 공급되는 예측 잔차 D의 공급처를 제어한다.
예를 들어, 변환 skip flagts_flag의 값이 1, 또는 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 1인 경우, 스위치(601)는, 프라이머리 변환 및 세컨더리 변환을 스킵시킨다. 즉, 이 경우, 스위치(601)는, 예측 잔차 D를 변환 계수 Coeff로서 양자화부(113)에 공급한다.
또한, 변환 skip flagts_flag의 값이 0이며, 또한, 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 0인 경우, 스위치(601)는, 예측 잔차 D를 스위치(602)에 공급한다.
스위치(602)는, SDT의 선택(실행)을 제어하는 제어부의 일 실시 형태이다. 예를 들어, 스위치(602)는, sdt_flag의 값에 따라서, 스위치(601)로부터 공급되는 예측 잔차 D의 공급처를 제어한다. 예를 들어, sdt_flag의 값이 1인 경우, 스위치(602)는, SDT를 선택한다. 즉, 이 경우, 스위치(602)는, 예측 잔차 D를 SDT부(603)에 공급한다. 또한, 스위치(602)는, sdt_flag의 값이 0인 경우, SDT를 선택하지 않고, 예측 잔차 D를 프라이머리 변환부(131)에 공급한다.
SDT부(603)는, 예측 화상 P, 국소 복호 화상 curPic, 참조 화상 refPic 등에 기초하여, 스위치(602)로부터 공급되는 예측 잔차 D에 대한 SDT에 관한 처리를 행한다. SDT부(603)는, SDT를 행하여 얻어진 변환 계수 Coeff를 양자화부(113)에 공급한다. 또한, 예측 잔차 D는, 2K×2L의 블록 사이즈이며, 요소 수는, 2N(=2(K+L), N=K+L)인 것으로 한다. K, L은 모두 1 이상의 정수로 한다.
<SDT부>
도 68에 SDT부(603)의 주된 구성예를 나타낸다. 도 68에 도시된 바와 같이, SDT부(603)는, 예를 들어 학습 샘플 도출부(611), 2N점 HyGT 도출부(612), 래스터라이즈부(613), 2N점 HyGT부(614), 스케일링부(615), 및 행렬화부(616)를 갖는다.
학습 샘플 도출부(611)는, 예측 화상 P, 국소 복호 화상 curPic 및 참조 화상 refPic[n]을 사용하여, 학습 샘플 Xtrain을 도출한다. 학습 샘플의 도출 상세에 대해서는 후술한다. 학습 샘플 도출부(611)는, 도출한 학습 샘플 Xtrain을 2N점 HyGT 도출부(612)에 공급한다.
2N점 HyGT 도출부(612)는, 학습 샘플 도출부(611)로부터 공급되는 학습 샘플 Xtrain을 사용해서 2N점 HyGT의 행렬 R을 도출한다. 2N점 HyGT 도출부(612)는, 도출한 2N점 HyGT의 행렬 R을 2N점 HyGT부(614)에 공급한다.
래스터라이즈부(613)는, 래스터라이즈부(141)와 기본적으로 마찬가지의 처리를 행한다. 즉, 래스터라이즈부(613)는, 스위치(602)로부터 공급되는 예측 잔차 D를 1×2N차원의 벡터 X1d로 변환한다. 래스터라이즈부(613)는, 얻어진 벡터 X1d를 2N점 HyGT부(614)에 공급한다.
2N점 HyGT부(614)는, 행렬 연산부(421)와 기본적으로 마찬가지의 처리를 행한다. 즉, 2N점 HyGT부(614)는, 2N점 HyGT 도출부(612)로부터 공급되는 2N점 HyGT의 행렬 R과, 래스터라이즈부(613)로부터 공급되는 벡터 X1d와의 행렬 곱 Y1d를 도출한다. 2N점 HyGT부(614)는, 도출한 행렬 곱 Y1d를 스케일링부(615)에 공급한다.
스케일링부(615)는, 스케일링부(143)와 기본적으로 마찬가지의 처리를 행한다. 즉, 스케일링부(615)는, 2N점 HyGT부(614)로부터 공급되는 신호 Y1d의 놈을 정규화하고, 정규화 후의 신호 Z1d를 구한다. 스케일링부(615)는, 얻어진 신호 Z1d를 행렬화부(616)에 공급한다.
행렬화부(616)는, 행렬화부(144)와 기본적으로 마찬가지의 처리를 행한다. 즉, 행렬화부(616)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 놈 정규화 후의 1×2N차원의 벡터 Z1d를, 예측 잔차 D와 동일한 블록 사이즈인 2K×2L의 블록(2K×2L 행렬)으로 변환한다. 행렬화부(616)는, 얻어진 변환 계수 Coeff를 변환부(112)의 외부(양자화부(113))에 공급한다.
<학습 샘플의 도출>
2N점 HyGT 도출부(612)는, 처리 대상인 커런트 블록과 닮은 주변의 화상을 사용해서 행렬 R을 도출한다. 보다 구체적으로는, 학습 샘플 도출부(611)가, 처리 대상인 커런트 블록과 닮은 주변의 화상을 사용해서 학습 샘플 Xtrain을 도출하고, 2N점 HyGT 도출부(612)는, 그 학습 샘플 Xtrain을 사용해서 행렬 R을 도출한다.
상술한 바와 같이, 학습 샘플 도출부(611)는, 예측 화상 P, 국소 복호 화상 curPic 및 참조 화상 refPic[n]을 사용하여, 학습 샘플 Xtrain을 도출한다. 도 68에 도시된 바와 같이, 학습 샘플 도출부(611)는, 템플릿 매칭부(621) 및 잔차 도출부(622)를 갖는다.
템플릿 매칭부(621)는, 템플릿의 매칭에 관한 처리를 행하고, 예측 화상 P, 국소 복호 화상 curPic, 및 참조 화상 refPic[n]을 사용하여, 패치군 BList를 도출한다. 템플릿 매칭부(621)는, 도출한 패치군 BList를 잔차 도출부(622)에 공급한다.
잔차 도출부(622)는, 예측 화상 P와, 템플릿 매칭부(621)로부터 공급된 패치군 BList를 사용하여 잔차 Di를 도출하고, 학습 샘플 Xtrain을 도출한다. 잔차 도출부(622)는, 도출한 학습 샘플 Xtrain을 2N점 HyGT 도출부(612)에 공급한다.
<템플릿 매칭>
다음으로 이 학습 샘플의 도출에 있어서의 템플릿 매칭에 대하여 설명한다. 템플릿 매칭부(621)는, 커런트 블록과 닮은 주변 화상의 검색을 행한다. 커런트 블록과 닮은 주변 화상은, 도 69에 도시된 바와 같이, 처리 대상의 커런트 프레임(Current coding frame) 이외의 참조 프레임(Reference frame n(n은 임의의 자연수)) 중에서 검색된다. 이 검색의 대상으로 하는 참조 프레임의 수는 임의이며, 도 69에 도시된 바와 같이 복수여도 된다.
예를 들어, 도 70에 있어서, 커런트 픽처 curPic의 Bcur이 커런트 블록이다. 이 커런트 블록 Bcur의 세로 사이즈를 HTB라 하고, 가로 사이즈를 WTB라 한다. 또한, 커런트 픽처 curPic의 P는, 커런트 블록 Bcur에 대응하는 예측 화상이다. 또한, 커런트 픽처 curPic의 Lcur은, 이 커런트 블록 Bcur에 인접하는 국소 복호 화소군으로 이루어지는 L자의 패치이다. 이 패치 Lcur의 폭을 WL이라 한다. 커런트 픽처 curPic의 TMcur은, 커런트 블록 Bcur과 패치 Lcur로 이루어지는 커런트 템플릿이다. 이와 같이, 변환 블록과 패치에 의해 구성되는 영역을 템플릿 TM이라고 칭한다.
여기서 유사 화상의 검색은, 이 템플릿 TM이라고 칭하는 변환 블록보다도 큰 소정의 크기의 영역을 단위로 하여 행한다. 템플릿 TM의 사이즈는, 세로가 (HTB+WL)이며, 가로가 (WTB+WL)이다.
템플릿 매칭부(621)는, 예측 화상 P와 국소 복호 화상 curPic를 사용하여 커런트 템플릿 TMcur을 설정하고, 각 참조 화상 refPic[n]에 블록 Bj나 그 블록 Bj를 포함하는 템플릿 TMj를 설정한다. 그리고, 템플릿 매칭부(621)는, 커런트 템플릿 TMcur과 주변의 각 템플릿 TMj 사이에서 차분(오차 Ej)을 도출하고, 그 오차 Ej가 소정의 역치(ThE)보다 작은 템플릿 TMj를 검색한다. 그리고, 템플릿 매칭부(621)는, 검출한 오차 Ej가 작은 템플릿 TMj의 블록 Bj를 패치군 리스트 BList에 포함한다(추가함).
이와 같이 하여, 템플릿 매칭부(621)는, 패치군 리스트 BList(BList={B1, B2, …, BM}(M은 패치의 수))를 도출하고, 그것을 잔차 도출부(622)에 공급한다.
<잔차의 도출>
다음으로 학습 샘플의 도출에 있어서의 잔차의 도출에 대하여 설명한다. 잔차 도출부(622)는, 템플릿 매칭부(621)로부터 공급되는 패치군 리스트BList(BList={B1, B2, …, BM})의 요소인 패치 Bi와 예측 화상 P와의 차분(Bi-P)을 도출한다. 이 패치 Bi와 예측 화상 P와의 차분(Bi-P)을 잔차 Di라고 칭한다. 잔차 도출부(622)는, 각 패치 Bi에 대하여, 이 잔차 Di를 도출하고, 도출한 M개의 잔차 Di를 학습 샘플 Xtrain으로 한다.
잔차 도출부(622)는, 이상과 같이 도출한 학습 샘플 Xtrain(Xtrain={D1, D2, …, DM})을 2N점 HyGT 도출부(612)에 공급한다.
이상과 같이, SDT에 있어서의 행렬 연산에 본 기술을 적용한 세퍼러블 2N점 HyGT를 적용함으로써, 각 실시 형태에 있어서 설명한 바와 같이, 직교 변환에 필요한 연산량을 저감시킬 수 있다. 또한, 직교 변환 시에 유지하는 계수의 수를 저감시킬 수 있어, 직교 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
또한, 이상과 같이, 2N점 HyGT를 사용하여 2N점 HyGT의 행렬 R을 도출함으로써, 연산 복잡도의 증대를 억제할 수 있어, 연산량을 저감시킬 수 있다.
<변환 처리의 흐름>
다음으로 도 9의 스텝 S104에 있어서 실행되는 이 경우의 변환 처리의 흐름의 예를, 도 71의 흐름도를 참조하여 설명한다.
이 경우, 스위치(601)는, 스텝 S621에 있어서, 변환 skip flagts_flag가 1인지, 또는 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 1인지 여부를 판정한다. 변환 skip flagts_flag와 변환 양자화 바이패스 플래그transquant_bypass_flag 중, 적어도 한쪽의 값이 1이라고 판정된 경우, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다. 또한, 스텝 S621에 있어서, 변환 skip flagts_flag와 변환 양자화 바이패스 플래그 transquant_bypass_flag의 양쪽 모두 값이 0이라고 판정된 경우, 처리는 스텝 S622로 진행한다.
스텝 S622에 있어서, 스위치(602)는, sdt_flag의 값이 1인지 여부를 판정한다. sdt_flag의 값이 0이라고 판정된 경우, 처리는 스텝 S623으로 진행된다. 스텝 S623에 있어서, 프라이머리 변환부(131)는 프라이머리 변환을 행하고, 세컨더리 변환부(132)는, 세컨더리 변환을 행한다. 스텝 S623의 처리가 종료되면, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다.
또한, 스텝 S622에 있어서, sdt_flag의 값이 1이라고 판정된 경우, 처리는 스텝 S624로 진행한다. 스텝 S624에 있어서, SDT부(603)는, SDT 처리를 실행한다. 스텝 S624의 처리가 종료되면, 변환 처리가 종료되고, 처리는 도 9로 되돌아간다.
<SDT 처리의 흐름>
다음으로 도 71의 스텝 S624에 있어서 실행되는 SDT 처리의 흐름의 예를, 도 72의 흐름도를 참조하여 설명한다.
SDT 처리가 개시되면, SDT부(603)의 학습 샘플 도출부(611)는, 스텝 S631에 있어서, 학습 샘플 Xtrain의 도출을 행한다. 스텝 S632에 있어서, 2N점 HyGT 도출부(612)는, 변환 행렬 R의 도출을 행한다. 이들 처리의 상세에 대해서는 후술한다.
스텝 S633에 있어서, 래스터라이즈부(613) 내지 행렬화부(616)는, 스텝 S632에 있어서 도출된 변환 행렬 R(2N점 HyGT의 행렬 R)에 의한 직교 변환을 행한다. 이 처리는, 각 실시 형태에 있어서 상술한 처리(예를 들어 도 52의 스텝 S543 내지 스텝 S549 등)와 마찬가지이므로, 그 설명을 생략한다.
스텝 S633의 처리가 종료되면, SDT 처리가 종료되고, 처리는 도 71로 되돌아간다.
<학습 샘플 도출 처리>
다음으로 도 72의 스텝 S631에 있어서 실행되는 학습 샘플 도출 처리의 흐름의 예를, 도 73 및 도 74의 흐름도를 참조하여 설명한다.
학습 샘플 도출 처리가 개시되면, 템플릿 매칭부(621)는, 스텝 S641에 있어서, 템플릿 TMcur을 설정한다. 스텝 S642에 있어서, 템플릿 매칭부(621)는, 미처리의 참조 화상을 선택한다. 스텝 S643에 있어서, 템플릿 매칭부(621)는, 스텝 S642에 있어서 선택한 참조 화상 refPic[n]을 읽어들인다. 스텝 S644에 있어서, 템플릿 매칭부(621)는, 커런트 블록에 유사한 블록을 탐색하는 탐색 범위 Sh×Sw를 설정한다.
스텝 S645에 있어서, 템플릿 매칭부(621)는, 검출한 패치 수 M이 패치수의 최댓값 maxPatchNum보다 적은지 여부를 판정한다. 패치 수 M이 maxPatchNum보다 적다고 판정된 경우, 처리는 스텝 S646으로 진행한다.
스텝 S646에 있어서, 템플릿 매칭부(621)는, 참조 화상 refPic[n] 상의 블록 Bj 및 템플릿 TMj를 설정한다. 스텝 S646의 처리가 종료되면 처리는 도 74의 스텝 S651로 진행한다.
도 74의 스텝 S651에 있어서, 템플릿 매칭부(621)는, 오차 Ej(Ej=|TMj-TMcur|)을 구한다. 스텝 S652에 있어서, 템플릿 매칭부(621)는, 스텝 S651에 있어서 구한 오차 Ej가 소정의 역치 ThE보다 작은지 여부를 판정한다. 작다고 판정된 경우, 처리는 스텝 S653으로 진행한다.
스텝 S653에 있어서, 템플릿 매칭부(621)는, 템플릿 Tj에 대응하는 블록 Bj를 패치군 BList에 추가한다. 스텝 S653의 처리가 종료되면, 처리는 스텝 S654로 진행한다. 또한, 스텝 S652에 있어서, 오차 Ej가 소정의 역치 ThE 이상이라고 판정된 경우, 스텝 S653의 처리가 생략되고, 처리는 스텝 S654로 진행한다.
스텝 S654에 있어서, 템플릿 매칭부(621)는, 참조 화상 refPic[n] 상의 모든 블록 Bj 및 템플릿 TMj를 처리하였는지 여부를 판정한다. 미처리의 템플릿 TMj가 존재한다고 판정된 경우, 처리는 도 73의 스텝 S645로 되돌아가고, 그 이후의 처리가 반복된다. 즉, 참조 화상 refPic[n] 상의 모든 블록 Bj 및 템플릿 TMj에 대하여 스텝 S645 내지 스텝 S654의 처리가 실행된다. 그리고, 스텝 S654에 있어서 모두 처리하였다고 판정된 경우, 처리는 스텝 S655로 진행한다.
스텝 S655에 있어서, 템플릿 매칭부(621)는, 모든 참조 화상에 대하여 처리 하였는지 여부를 판정한다. 미처리의 참조 화상이 존재한다고 판정된 경우, 처리는 도 73의 스텝 S642로 되돌아가고, 그것 이후의 처리가 반복된다. 즉, 각 참조 화상의 모든 블록 Bj 및 템플릿 TMj에 대해서 스텝 S642 내지 스텝 S655의 처리가 실행된다. 그리고, 스텝 S655에 있어서 모두 처리하였다고 판정된 경우, 처리는 스텝 S656으로 진행한다.
스텝 S656에 있어서, 잔차 도출부(622)는, 이상의 처리에 의해 도출된 패치군 BList 내의 각 블록 Bi와 예측 화상 P와의 차분인 잔차 Di를 도출하고, 학습 샘플 Xtrain={D0, …, DM}을 생성한다. 스텝 S656의 처리가 종료되면, 학습 샘플 도출 처리가 종료되고, 처리는 도 72로 되돌아간다.
<변환 행렬 R 도출 처리의 흐름>
다음으로 도 72의 스텝 S632에 있어서 실행되는 변환 행렬 R 도출 처리의 흐름의 예를, 도 75의 흐름도를 참조하여 설명한다.
변환 행렬 도출 처리가 개시되면, 2N점 HyGT 도출부(612)는, 스텝 S661에 있어서, 전체 단에 대하여 차분 Di를 사용하여 학습 샘플 Xs를 설정한다. 스텝 S662에 있어서, 2N점 HyGT 도출부(612)는, 변수 s를 초기화한다.
스텝 S663에 있어서, 2N점 HyGT 도출부(612)는, 변수 s를 인크리먼트(+1)한다. 스텝 S664에 있어서, 2N점 HyGT 도출부(612)는, 행렬 곱 Ps·Xs를 사용하여 학습 샘플 Xs를 재정의한다. 스텝 S665에 있어서, 2N점 HyGT 도출부(612)는, s단째의 갱신된 학습 샘플 Xs를 2N-1개의 M×2 행렬 Us,k(k=1, …, 2N-1)로 분할한다.
스텝 S666에 있어서, 2N점 HyGT 도출부(612)는, 회전 행렬 Gs,k를 도출하고, 직교 행렬 Fs를 구한다. 스텝 S667에 있어서, 2N점 HyGT 도출부(612)는, 행렬 곱 Fs·Xs를 사용하여 학습 샘플 Xs를 갱신한다. 스텝 S668에 있어서, 2N점 HyGT 도출부(612)는, 행렬 곱 Ps T·Xs를 사용하여 학습 샘플 Xs +1을 구한다.
스텝 S669에 있어서, 2N점 HyGT 도출부(612)는, N단 처리하였는지 여부를 판정한다. N단 처리하지 않았다고 판정된 경우, 처리는 스텝 S663으로 되돌아가고, 그 이후의 처리를 반복한다. 스텝 S663 내지 스텝 S669의 각 처리를, 각 단에 대해서 행하고, 스텝 S669에 있어서, N단 처리되었다고 판정된 경우, 변환 행렬 R이 도출되었으므로, 변환 행렬 R 도출 처리가 종료되고, 처리를 도 72로 되돌린다.
이상과 같이 각 처리를 실행함으로써, SDT의 연산량(승산·가산)을 저감할 수 있어, SDT의 직교 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<역변환부>
다음으로 이상과 같은 변환부(112)에 대응하는 역변환부(213)에 대하여 설명한다. 이 경우도 화상 부호화 장치(100)에 대응하는 화상 복호 장치(200)는, 제3 실시 형태의 경우와 기본적으로 마찬가지의 구성을 가질 수 있다. 즉, 화상 복호 장치(200)는, 예를 들어 도 11에 도시된 바와 같은 구성을 갖는다. 단, 이 경우, 역변환부(213)는, 예를 들어 도 76에 도시된 바와 같은 구성을 갖는다. 즉, 이 경우, 역변환부(213)는, 도 76에 도시된 바와 같이, 스위치(651), 스위치(652), 역 세컨더리 변환부(231), 역 프라이머리 변환부(232) 및 역 SDT부(653)을 갖는다.
스위치(651)는, 역 세컨더리 변환 및 역 프라이머리 변환의 실행을 제어하는 제어부의 일 실시 형태이다. 예를 들어, 스위치(651)는, 역 세컨더리 변환을 스킵시킬 경우, 역 프라이머리 변환도 스킵시키도록 제어한다. 예를 들어, 스위치(651)는, 변환 정보 Tinfo에 포함되는 프라이머리 변환의 스킵에 관한 변환 skip flagts_flag의 값이나, 변환 정보 Tinfo에 포함되는 변환 양자화 바이패스 플래그transquant_bypass_flag의 값에 따라서, 역양자화부(212)로부터 공급되는 변환 계수 Coeff_IQ의 공급처를 제어한다.
예를 들어, 변환 skip flagts_flag의 값이 1, 또는 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 1인 경우, 스위치(651)는, 역 세컨더리 변환 및 역 프라이머리 변환을 스킵시킨다. 즉, 이 경우, 스위치(651)는, 변환 계수 Coeff_IQ를 예측 잔차 D'로서 연산부(214)에 공급한다.
또한, 변환 skip flagts_flag의 값이 0이며, 또한, 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 0인 경우, 스위치(651)는, 변환 계수 Coeff_IQ를 스위치(652)에 공급한다.
스위치(652)는, SDT의 역처리인 역 SDT의 선택(실행)을 제어하는 제어부의 일 실시 형태이다. 예를 들어, 스위치(652)는, sdt_flag의 값에 따라서, 스위치(651)로부터 공급되는 변환 계수 Coeff_IQ의 공급처를 제어한다. 예를 들어, sdt_flag의 값이 1인 경우, 스위치(652)는, 역 SDT를 선택한다. 즉, 이 경우, 스위치(652)는, 변환 계수 Coeff_IQ를 역 SDT부(653)에 공급한다. 또한, 스위치(652)는, sdt_flag의 값이 0인 경우, 역 SDT를 선택하지 않고, 변환 계수 Coeff_IQ를 역 세컨더리 변환부(231)에 공급한다.
역 SDT부(653)는, 예측 화상 P, 국소 복호 화상 curPic, 참조 화상 refPic 등에 기초하여, 스위치(652)로부터 공급되는 변환 계수 Coeff_IQ에 대한 역 SDT에 관한 처리를 행한다. 역 SDT부(653)는, 역 SDT를 행하여 얻어진 예측 잔차 D'를 연산부(214)에 공급한다. 또한, 예측 잔차 D', 2K×2L의 블록 사이즈이며, 요소 수는, 2N(=2(K+L), N=K+L)인 것으로 한다. K, L은 모두 1 이상의 정수로 한다.
<역 SDT부>
도 77에 역 SDT부(653)의 주된 구성예를 나타낸다. 도 77에 도시된 바와 같이, 역 SDT부(653)는, 예를 들어 학습 샘플 도출부(661), 2N점 역 HyGT 도출부(662), 래스터라이즈부(663), 2N점 역 HyGT부(664), 스케일링부(665) 및 행렬화부(666)를 갖는다.
학습 샘플 도출부(661)는, 학습 샘플 도출부(661)와 마찬가지의 처리를 행하고, 예측 화상 P, 국소 복호 화상 curPic 및 참조 화상 refPic[n]을 사용하여, 학습 샘플 Xtrain을 도출한다. 학습 샘플 도출부(661)는, 템플릿 매칭부(671) 및 잔차 도출부(672)를 갖는다. 템플릿 매칭부(671)는, 템플릿 매칭부(621)과 마찬가지의 처리를 행하고, 예측 화상 P, 국소 복호 화상 curPic, 및 참조 화상 refPic[n]을 사용하여, 패치군 BList를 도출한다. 잔차 도출부(672)는, 잔차 도출부(622)와 마찬가지의 처리를 행하고, 예측 화상 P와, 템플릿 매칭부(671)로부터 공급된 패치군 BList를 사용하여 잔차 Di를 도출하고, 학습 샘플 Xtrain을 도출한다. 학습 샘플 도출부(661)(잔차 도출부(622)))는, 도출한 학습 샘플 Xtrain을 2N점 역 HyGT 도출부(662)에 공급한다.
2N점 역 HyGT 도출부(662)는, 학습 샘플 도출부(661)로부터 공급되는 학습 샘플 Xtrain을 사용해서 2N점 역 HyGT의 행렬 IR을 도출한다. 2N점 역 HyGT 도출부(662)는, 도출한 2N점 역 HyGT의 행렬 IR을 2N점 역 HyGT부(664)에 공급한다.
래스터라이즈부(663)는, 래스터라이즈부(241)와 기본적으로 마찬가지의 처리를 행한다. 즉, 래스터라이즈부(663)는, 스위치(652)로부터 공급되는 변환 계수 Coeff_IQ를 1×2N 차원의 벡터 X1d로 변환한다. 래스터라이즈부(663)는, 얻어진 벡터 X1d를 2N점 역 HyGT부(664)에 공급한다.
2N점 역 HyGT부(664)는, 행렬 연산부(451)와 기본적으로 마찬가지의 처리를 행한다. 즉, 2N점 역 HyGT부(664)는, 2N점 역 HyGT 도출부(662)로부터 공급되는 2N점 역 HyGT의 행렬 IR과, 래스터라이즈부(663)로부터 공급되는 벡터 X1d와의 행렬 곱 Y1d를 도출한다. 2N점 역 HyGT부(664)는, 도출한 행렬 곱 Y1d를 스케일링부(665)에 공급한다.
스케일링부(665)는, 스케일링부(243)와 기본적으로 마찬가지의 처리를 행한다. 즉, 스케일링부(665)는, 2N점 역 HyGT부(664)로부터 공급되는 신호 Y1d의 놈을 정규화하고, 정규화 후의 신호 Z1d를 구한다. 스케일링부(665)는, 얻어진 신호 Z1d를 행렬화부(666)에 공급한다.
행렬화부(666)는, 행렬화부(244)와 기본적으로 마찬가지의 처리를 행한다. 즉, 행렬화부(666)는, 스캔 식별자 scanIdx에 의해 지정되는 스캔 방법에 기초하여, 놈 정규화 후의 1×2N차원의 벡터 Z1d를, 예측 잔차 D'와 동일한 블록 사이즈인 2K×2L의 블록(2K×2L 행렬)으로 변환한다. 행렬화부(666)는, 얻어진 예측 잔차 D'를 역변환부(213)의 외부(연산부(214))에 공급한다.
이상과 같이, 역 SDT에 있어서의 행렬 연산에도, SDT의 경우와 마찬가지로, 본 기술을 적용한 세퍼러블 2N점 역 HyGT를 적용할 수 있다. 이에 의해, 각 실시 형태에 있어서 설명한 바와 같이, 역직교 변환에 필요한 연산량을 저감시킬 수 있다. 또한, 역직교 변환 시에 유지하는 계수의 수를 저감시킬 수 있어, 역직교 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
또한, 이상과 같이, 2N점 역 HyGT를 사용하여 2N점 역 HyGT의 행렬 IR을 도출함으로써, 연산 복잡도의 증대를 억제할 수 있어, 연산량을 저감시킬 수 있다.
<역변환 처리의 흐름>
다음으로 도 13의 스텝 S203에 있어서 실행되는 역변환 처리의 이 경우 흐름 예를, 도 78의 흐름도를 참조하여 설명한다.
이 경우, 스위치(651)는, 스텝 S681에 있어서, 변환 skip flagts_flag가 1인지, 또는 변환 양자화 바이패스 플래그 transquant_bypass_flag의 값이 1인지 여부를 판정한다. 변환 skip flagts_flag와 변환 양자화 바이패스 플래그transquant_bypass_flag 중, 적어도 한쪽의 값이 1이라고 판정된 경우, 역변환 처리가 종료되고, 처리는 도 13으로 되돌아간다. 또한, 스텝 S681에 있어서, 변환 skip flagts_flag와 변환 양자화 바이패스 플래그 transquant_bypass_flag의 양쪽 모두 값이 0이라고 판정된 경우, 처리는 스텝 S682로 진행한다.
스텝 S682에 있어서, 스위치(652)는, sdt_flag의 값이 1인지 여부를 판정한다. sdt_flag의 값이 0이라고 판정된 경우, 처리는 스텝 S683으로 진행한다. 스텝 S683에 있어서, 역 세컨더리 변환부(231)는 역 세컨더리 변환을 행하고, 역 프라이머리 변환부(232)는, 역 프라이머리 변환을 행한다. 스텝 S683의 처리가 종료되면, 역변환 처리가 종료되고, 처리는 도 13으로 되돌아간다.
또한, 스텝 S682에 있어서, sdt_flag의 값이 1이라고 판정된 경우, 처리는 스텝 S684로 진행한다. 스텝 S684에 있어서, 역 SDT부(653)는, 역 SDT 처리를 실행한다. 스텝 S684의 처리가 종료되면, 역변환 처리가 종료되고, 처리는 도 13으로 되돌아간다.
<SDT 처리의 흐름>
다음으로 도 78의 스텝 S684에 있어서 실행되는 역 SDT 처리의 흐름의 예를, 도 79의 흐름도를 참조하여 설명한다.
역 SDT 처리가 개시되면, 역 SDT부(653)의 학습 샘플 도출부(661)는, 스텝 S691에 있어서, 학습 샘플 Xtrain의 도출을 행한다. 이 경우의 학습 샘플 도출 처리는, 상술한 SDT 처리에 있어서 행해지는 경우(도 73 및 도 74)와 마찬가지이므로, 그 설명을 생략한다.
스텝 S692에 있어서, 2N점 역 HyGT 도출부(662)는, 변환 행렬 IR(=RT)의 도출을 행한다. 이 처리의 상세에 대해서는 후술한다.
스텝 S693에 있어서, 래스터라이즈부(663) 내지 행렬화부(666)는, 스텝 S692에 있어서 도출된 변환 행렬 IR(2N점 역 HyGT의 행렬 IR)에 의한 역직교 변환을 행한다. 이 처리는, 각 실시 형태에 있어서 상술한 처리(예를 들어 도 56의 스텝 S582 내지 스텝 S588 등)와 마찬가지이므로, 그 설명을 생략한다.
스텝 S693의 처리가 종료되면, 역 SDT 처리가 종료되고, 처리는 도 78로 되돌아간다.
<변환 행렬 IR 도출 처리의 흐름>
다음으로 도 79의 스텝 S692에 있어서 실행되는 변환 행렬 IR 도출 처리의 흐름의 예를, 도 80의 흐름도를 참조하여 설명한다.
변환 행렬 IR 도출 처리가 개시되면, 2N점 역 HyGT 도출부(662)는, 스텝 S701에 있어서, 전체 단에 대하여 차분 Di를 사용하여 학습 샘플 Xs를 설정한다. 스텝 S702에 있어서, 2N점 역 HyGT 도출부(662)는, 변수 s를 초기화한다.
스텝 S703에 있어서, 2N점 역 HyGT 도출부(662)는, 변수 s를 인크리먼트(+1) 한다. 스텝 S704에 있어서, 2N점 역 HyGT 도출부(662)는, 행렬 곱 Ps·Xs를 사용하여 학습 샘플 Xs를 재정의한다. 스텝 S705에 있어서, 2N점 역 HyGT 도출부(662)는, s단째의 갱신된 학습 샘플 Xs를 2N-1개의 M×2 행렬 Us,k(k=1, …, 2N-1)로 분할한다.
스텝 S706에 있어서, 2N점 역 HyGT 도출부(662)는, 회전 행렬 Gs,k를 도출하고, 직교 행렬 Fs를 구한다. 스텝 S707에 있어서, 2N점 역 HyGT 도출부(662)는, 행렬 곱 Fs·Xs를 사용하여 학습 샘플 Xs를 갱신한다. 스텝 S708에 있어서, 2N점 역 HyGT 도출부(662)는, 행렬 곱 Ps T·Xs를 사용하여 학습 샘플 Xs+1을 구한다.
스텝 S709에 있어서, 2N점 역 HyGT 도출부(662)는, N단 처리하였는지 여부를 판정한다. N단 처리하지 않았다고 판정된 경우, 처리는 스텝 S703으로 되돌아가고, 그 이후의 처리를 반복한다. 스텝 S703 내지 스텝 S709의 각 처리를, 각 단에 대하여 행하고, 스텝 S709에 있어서, N단 처리되었다고 판정된 경우, 처리는 스텝 S710으로 진행한다. 스텝 S710에 있어서, 2N점 역 HyGT 도출부(662)는, 스텝 S709까지의 처리에 의해 얻어진 변환 행렬 R의 전치 행렬 RT(=IR)을 구한다. 이와 같이 하여 변환 행렬 IR이 얻어지면 변환 행렬 IR 도출 처리가 종료되고, 처리를 도 79로 되돌린다.
이상과 같이 각 처리를 실행함으로써, 역 SDT의 연산량(승산·가산)을 저감할 수 있어, 역 SDT의 역직교 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<화상 부호화 장치의 역변환부>
이상에 있어서는, 각 실시 형태에 있어서 화상 복호 장치(200)의 역변환부(213)에 대하여 설명하였지만, 화상 부호화 장치(100)의 역변환부(116)에 대해서도 마찬가지로 본 기술을 적용할 수 있다. 즉, 상술한 역변환부(213)에 관한 설명은, 역변환부(116)에 대해서도 적용할 수 있다.
단, 역변환부(116)는, 변환부(112)에 있어서 사용된 변환 행렬 R(변환부(112)에 있어서 도출된 것도 포함함)을 사용하여 변환 행렬 IR을 구하도록 해도 된다. 예를 들어, 역변환부(116)의 역 SDT부(653)(도 76, 도 77)가, SDT부(603)(도 67, 도 68)의 2N점 HyGT 도출부(612)에 의해 도출된 2N점 HyGT의 행렬 R로부터, 2N점 역 HyGT의 행렬 IR을 구하도록 해도 된다.
그 경우의 역 SDT부(653)의 주된 구성예를 도 81에 나타낸다. 도 81에 도시된 바와 같이, 이 경우, 역 SDT부(653)는, 도 77의 경우와 기본적으로 마찬가지의 구성을 갖지만, 학습 샘플 도출부(661) 및 2N점 역 HyGT 도출부(662) 대신에 2N점 역 HyGT 도출부(681)을 갖는다.
2N점 역 HyGT 도출부(681)는, SDT부(603)(2N점 HyGT 도출부(612))(도 68)로부터 2N점 HyGT의 행렬 R을 취득한다. 2N점 역 HyGT 도출부(681)는, 그 2N점 HyGT의 행렬 R로부터 2N점 역 HyGT의 행렬 IR을 도출한다. 2N점 역 HyGT 도출부(681)는, 2N점 HyGT의 행렬 R의 전치 행렬을 구함으로써, 2N점 역 HyGT의 행렬 IR을 도출한다. 2N점 역 HyGT 도출부(681)는, 도출한 2N점 역 HyGT의 행렬 IR을 2N점 역 HyGT부(664)에 공급한다. 2N점 역 HyGT부(664)는, 그 2N점 역 HyGT의 행렬 IR과, 래스터라이즈부(663)로부터 공급되는 벡터 X1d와의 행렬 곱 Y1d를 도출한다.
이상과 같이 함으로써, 역 SDT부(653)는, 학습 샘플을 도출하는 경우보다도 용이하게 2N점 역 HyGT의 행렬 IR을 도출할 수 있다.
<역 SDT 처리의 흐름>
이 경우의, 역 SDT 처리의 흐름의 예를, 도 82의 흐름도를 참조하여 설명한다. 이 경우, 역 SDT 처리가 개시되면, 2N점 역 HyGT 도출부(681)는, 스텝 S731에 있어서, 변환 행렬 R을 사용해서 변환 행렬 IR(=RT)을 도출한다.
스텝 S732에 있어서, 래스터라이즈부(663) 내지 행렬화부(666)는, 스텝 S731에 있어서 도출된 변환 행렬 IR(2N점 역 HyGT의 행렬 IR)에 의한 역직교 변환을 행한다. 이 처리는, 각 실시 형태에 있어서 상술한 처리(예를 들어 도 56의 스텝 S582 내지 스텝 S588 등)와 마찬가지이므로, 그 설명을 생략한다.
이상과 같이 각 처리를 실행함으로써, 역 SDT의 연산량(승산·가산)을 저감할 수 있어, 역 SDT의 역직교 변환의 행렬을 유지하는 데 필요한 메모리 사이즈를 저감시킬 수 있다.
<10. 제10 실시 형태>
<정보의 데이터 단위>
이상에 있어서 설명한 화상에 관한 정보나 화상의 부호화·복호에 관한 정보가 설정되는(또는 대상으로 하는 데이터의) 데이터 단위는, 각각 임의이며, 상술한 예로 한정되지 않는다. 예를 들어, 이들 정보가, 각각, TU, PU, CU, LCU, 서브블록, 블록, 타일, 슬라이스, 픽처, 시퀀스, 또는 컴포넌트마다 설정되도록 해도 되고, 그들 데이터 단위의 데이터를 대상으로 하도록 해도 된다. 물론, 이 데이터 단위는 정보마다 설정된다. 즉, 모든 정보가 동일한 데이터 단위마다 설정되도록(또는 대상으로 하도록) 하지 않아도 된다. 또한, 이들 정보의 저장 장소는 임의이며, 상술한 데이터 단위의 헤더나 파라미터 세트 등에 저장되도록 해도 된다. 또한, 복수 개소에 저장되도록 해도 된다.
<제어 정보>
이상의 각 실시 형태에 있어서 설명한 본 기술에 관한 제어 정보를 부호화측부터 복호측으로 전송하도록 해도 된다. 예를 들어, 상술한 본 기술을 적용하는 것을 허가(또는 금지)할지 여부를 제어하는 제어 정보(예를 들어 enabled_flag)를 전송하도록 해도 된다. 또한, 예를 들어 상술한 본 기술을 적용하는 것을 허가 (또는 금지)하는 블록 사이즈의 상한 혹은 하한, 또는 그 양쪽을 지정하는 제어 정보를 전송하도록 해도 된다.
<부호화·복호>
본 기술은, 프라이머리 변환 및 세컨더리 변환(역 세컨더리 변환 및 역 프라이머리 변환)을 행하는 임의의 화상 부호화·복호에 적용할 수 있다. 즉, 변환(역변환), 양자화(역양자화), 부호화(복호), 예측 등의 사양은 임의이며, 상술한 예에 한정되지 않는다. 예를 들어, 변환(역변환)에 있어서, (역) 프라이머리 변환 및 (역) 세컨더리 변환 이외의 (역)변환(즉 3 이상의 (역)변환)이 행해지도록 해도 된다. 또한, 부호화(복호)는, 가역의 방식이어도 되고, 비가역의 방식이어도 된다. 또한, 양자화(역양자화)나 예측 등은 생략하도록 해도 된다. 또한, 필터 처리 등의 상술되지 않은 처리가 행해지도록 해도 된다.
<본 기술의 적용 분야>
본 기술을 적용한 시스템, 장치, 처리부 등은, 예를 들어 교통, 의료, 방범, 농업, 축산업, 광업, 미용, 공장, 가전, 기상, 자연 감시 등, 임의의 분야에 이용할 수 있다.
예를 들어, 본 기술은, 감상용으로 제공되는 화상을 전송하는 시스템이나 디바이스에도 적용할 수 있다. 또한, 예를 들어 본 기술은, 교통용으로 제공되는 시스템이나 디바이스에도 적용할 수 있다. 또한, 예를 들어 본 기술은, 시큐리티용으로 제공되는 시스템이나 디바이스에도 적용할 수 있다. 또한, 예를 들어 본 기술은, 스포츠용으로 제공되는 시스템이나 디바이스에도 적용할 수 있다. 또한, 예를 들어 본 기술은, 농업용으로 제공되는 시스템이나 디바이스에도 적용할 수 있다. 또한, 예를 들어 본 기술은, 축산업용으로 제공되는 시스템이나 디바이스에도 적용할 수 있다. 또한, 본 기술은, 예를 들어 화산, 삼림, 해양 등의 자연 상태를 감시하는 시스템이나 디바이스에도 적용할 수 있다. 또한, 본 기술은, 예를 들어 날씨, 기온, 습도, 풍속, 일조 시간 등을 관측하는 기상 관측 시스템이나 기상 관측 장치에 적용할 수 있다. 또한, 본 기술은, 예를 들어 조류, 어류, 파충류, 양서류, 포유류, 곤충, 식물 등의 야생 생물의 생태를 관측하는 시스템이나 디바이스 등에도 적용할 수 있다.
<다시점 화상 부호화·복호 시스템에 대한 적용>
상술한 일련의 처리는, 복수의 시점(뷰(view))의 화상을 포함하는 다시점 화상의 부호화·복호를 행하는 다시점 화상 부호화·복호 시스템에 적용할 수 있다. 그 경우, 각 시점(뷰(view))의 부호화·복호에 있어서, 본 기술을 적용하게 하면 된다.
<계층 화상 부호화·복호 시스템에 대한 적용>
또한, 상술한 일련의 처리는, 소정의 파라미터에 대하여 스케일러빌리티(scalability) 기능을 갖도록 복수 레이어화(계층화)된 계층 화상의 부호화·복호를 행하는 계층 화상 부호화(스케일러블 부호화)·복호 시스템에 적용할 수 있다. 그 경우, 각 계층(레이어)의 부호화·복호에 있어서, 본 기술을 적용하도록 하면 된다.
<컴퓨터>
상술한 일련의 처리는, 하드웨어에 의해 실행시킬 수도 있고, 소프트웨어에 의해 실행시킬 수도 있다. 일련의 처리를 소프트웨어에 의해 실행하는 경우에는, 그 소프트웨어를 구성하는 프로그램이, 컴퓨터에 인스톨된다. 여기서 컴퓨터에는, 전용의 하드웨어에 내장되어 있는 컴퓨터나, 각종 프로그램을 인스톨함으로써, 각종 기능을 실행하는 것이 가능한, 예를 들어 범용의 퍼스널 컴퓨터 등이 포함된다.
도 83은, 상술한 일련의 처리를 프로그램에 의해 실행하는 컴퓨터의 하드웨어 구성예를 나타내는 블록도이다.
도 83에 도시한 컴퓨터(800)에 있어서, CPU(Central Processing Unit)(801), ROM(Read Only Memory)(802), RAM(Random Access Memory)(803)은, 버스(804)를 통해 서로 접속되어 있다.
버스(804)에는 또한, 입출력 인터페이스(810)도 접속되어 있다. 입출력 인터페이스(810)에는, 입력부(811), 출력부(812), 기억부(813), 통신부(814) 및 드라이브(815)가 접속되어 있다.
입력부(811)는, 예를 들어 키보드, 마우스, 마이크로폰, 터치 패널, 입력 단자 등을 포함한다. 출력부(812)는, 예를 들어 디스플레이, 스피커, 출력 단자 등을 포함한다. 기억부(813)는, 예를 들어 하드디스크, RAM 디스크, 불휘발성 메모리 등으로 이루어진다. 통신부(814)는, 예를 들어 네트워크 인터페이스를 포함한다. 드라이브(815)는, 자기디스크, 광디스크, 광자기디스크 또는 반도체 메모리 등의 리무버블 미디어(821)를 구동한다.
이상과 같이 구성되는 컴퓨터에서는, CPU(801)가, 예를 들어 기억부(813)에 기억되어 있는 프로그램을, 입출력 인터페이스(810), 및 버스(804)를 통하여, RAM(803)에 로드하여 실행함으로써, 상술한 일련의 처리가 행해진다. RAM(803)에는 또한, CPU(801)가 각종 처리를 실행하는 데 있어서 필요한 데이터 등도 적절히 기억된다.
컴퓨터(CPU(801))가 실행하는 프로그램은, 예를 들어 패키지 미디어 등으로서의 리무버블 미디어(821)에 기록하여 적용할 수 있다. 그 경우, 프로그램은, 리무버블 미디어(821)를 드라이브(815)에 장착함으로써, 입출력 인터페이스(810)를 통하여, 기억부(813)에 인스톨할 수 있다.
또한, 이 프로그램은, 로컬 에어리어 네트워크, 인터넷, 디지털 위성 방송과 같은, 유선 또는 무선의 전송 매체를 통해 제공할 수도 있다. 그 경우, 프로그램은, 통신부(814)로 수신하고, 기억부(813)에 인스톨할 수 있다.
그 밖에, 이 프로그램은, ROM(802)이나 기억부(813)에, 미리 인스톨해 둘 수도 있다.
<본 기술의 응용>
상술한 실시 형태에 따른 화상 부호화 장치(100)나 화상 복호 장치(200)는, 예를 들어 위성 방송, 케이블 TV 등의 유선 방송, 인터넷상에서의 배신 및 셀룰러 통신에 의한 단말기로의 배신 등에 있어서의 송신기나 수신기, 또는 광 디스크, 자기디스크 및 플래시 메모리 등의 매체에 화상을 기록하는 기록 장치나, 이들 기억 매체로부터 화상을 재생하는 재생 장치 등의, 다양한 전자 기기에 응용될 수 있다.
<제1 응용예: 텔레비전 수상기>
도 84는, 상술한 실시 형태를 적용한 텔레비전 장치의 개략적인 구성의 일례를 나타내고 있다. 텔레비전 장치(900)는, 안테나(901), 튜너(902), 디멀티플렉서(903), 디코더(904), 영상 신호 처리부(905), 표시부(906), 음성 신호 처리부(907), 스피커(908), 외부 인터페이스(I/F)부(909), 제어부(910), 유저 인터페이스(I/F)부(911), 및 버스(912)를 구비한다.
튜너(902)는, 안테나(901)를 통해 수신되는 방송 신호로부터 원하는 채널의 신호를 추출하고, 추출한 신호를 복조한다. 그리고, 튜너(902)는, 복조에 의해 얻어진 부호화 비트 스트림을 디멀티플렉서(903)로 출력한다. 즉, 튜너(902)는, 화상이 부호화되고 있는 부호화 스트림을 수신하는, 텔레비전 장치(900)에 있어서의 전송부로서의 역할을 갖는다.
디멀티플렉서(903)는, 부호화 비트 스트림으로부터 시청 대상의 프로그램 영상 스트림 및 음성 스트림을 분리하고, 분리된 각 스트림을 디코더(904)로 출력한다. 또한, 디멀티플렉서(903)는, 부호화 비트 스트림으로부터 EPG(Electronic Program Guide) 등의 보조적인 데이터를 추출하고, 추출한 데이터를 제어부(910)에 공급한다. 또한, 디멀티플렉서(903)는, 부호화 비트 스트림이 스크램블되어 있는 경우에는, 디스크램블을 행해도 된다.
디코더(904)는, 디멀티플렉서(903)로부터 입력되는 영상 스트림 및 음성 스트림을 복호한다. 그리고, 디코더(904)는, 복호 처리에 의해 생성되는 영상 데이터를 영상 신호 처리부(905)로 출력한다. 또한, 디코더(904)는, 복호 처리에 의해 생성되는 음성 데이터를 음성 신호 처리부(907)로 출력한다.
영상 신호 처리부(905)는, 디코더(904)로부터 입력되는 영상 데이터를 재생하고, 표시부(906)에 영상을 표시시킨다. 또한, 영상 신호 처리부(905)는, 네트워크를 통해서 공급되는 어플리케이션 화면을 표시부(906)에 표시시켜도 된다. 또한, 영상 신호 처리부(905)는, 영상 데이터에 대해서, 설정에 따라서, 예를 들어 노이즈 제거 등의 추가적인 처리를 행해도 된다. 또한, 영상 신호 처리부(905)는, 예를 들어 메뉴, 버튼 또는 커서 등의 GUI(Graphical User Interface)의 화상을 생성하고, 생성된 화상을 출력 화상에 중첩해도 된다.
표시부(906)는, 영상 신호 처리부(905)로부터 공급되는 구동 신호에 의해 구동되어, 표시 디바이스(예를 들어, 액정 디스플레이, 플라즈마 디스플레이 또는 OELD(Organic ElectroLuminescence Display)(유기 EL 디스플레이) 등)의 영상면 상에 영상 또는 화상을 표시한다.
음성 신호 처리부(907)는, 디코더(904)로부터 입력되는 음성 데이터에 대해서 D/A 변환 및 증폭 등의 재생 처리를 행하고, 스피커(908)로부터 음성을 출력시킨다. 또한, 음성 신호 처리부(907)는, 음성 데이터에 대하여 노이즈 제거 등의 추가적인 처리를 행해도 된다.
외부 인터페이스부(909)는, 텔레비전 장치(900)와 외부 기기 또는 네트워크를 접속하기 위한 인터페이스이다. 예를 들어, 외부 인터페이스부(909)를 통해 수신되는 영상 스트림 또는 음성 스트림이, 디코더(904)에 의해 복호되어도 된다. 즉, 외부 인터페이스부(909)도 또한, 화상이 부호화되고 있는 부호화 스트림을 수신하는, 텔레비전 장치(900)에 있어서의 전송부로서의 역할을 갖는다.
제어부(910)는, CPU 등의 프로세서, 및 RAM 및 ROM 등의 메모리를 갖는다. 메모리는, CPU에 의해 실행되는 프로그램, 프로그램 데이터, EPG 데이터, 및 네트워크를 통해서 취득되는 데이터 등을 기억한다. 메모리에 의해 기억되는 프로그램은, 예를 들어 텔레비전 장치(900)의 기동 시에 CPU에 의해 읽어들여져 실행된다. CPU는, 프로그램을 실행함으로써, 예를 들어 유저 인터페이스부(911)로부터 입력되는 조작 신호에 따라서, 텔레비전 장치(900)의 동작을 제어한다.
유저 인터페이스부(911)는, 제어부(910)와 접속된다. 유저 인터페이스부(911)는, 예를 들어 유저가 텔레비전 장치(900)를 조작하기 위한 버튼 및 스위치, 및 원격 제어 신호의 수신부 등을 갖는다. 유저 인터페이스부(911)는, 이들 구성 요소를 통해 유저에 의한 조작을 검출해서 조작 신호를 생성하고, 생성된 조작 신호를 제어부(910)로 출력한다.
버스(912)는, 튜너(902), 디멀티플렉서(903), 디코더(904), 영상 신호 처리부(905), 음성 신호 처리부(907), 외부 인터페이스부(909) 및 제어부(910)를 서로 접속한다.
이와 같이 구성된 텔레비전 장치(900)에 있어서, 디코더(904)가, 상술한 화상 복호 장치(200)의 기능을 갖도록 해도 된다. 즉, 디코더(904)가, 부호화 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 복호하도록 해도 된다. 이와 같이 함으로써, 텔레비전 장치(900)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 이와 같이 구성된 텔레비전 장치(900)에 있어서, 영상 신호 처리부(905)가, 예를 들어 디코더(904)로부터 공급되는 화상 데이터를 부호화하고, 얻어진 부호화 데이터를, 외부 인터페이스부(909)를 통해 텔레비전 장치(900)의 외부로 출력시킬 수 있도록 해도 된다. 그리고, 그 영상 신호 처리부(905)가, 상술한 화상 부호화 장치(100)의 기능을 갖도록 해도 된다. 즉, 영상 신호 처리부(905)가, 디코더(904)로부터 공급되는 화상 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 부호화하도록 해도 된다. 이와 같이 함으로써, 텔레비전 장치(900)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<제2 응용예: 휴대 전화기>
도 85는, 상술한 실시 형태를 적용한 휴대 전화기의 개략적인 구성의 일례를 나타내고 있다. 휴대 전화기(920)는, 안테나(921), 통신부(922), 음성 코덱(923), 스피커(924), 마이크로폰(925), 카메라부(926), 화상 처리부(927), 다중 분리부(928), 기록 재생부(929), 표시부(930), 제어부(931), 조작부(932) 및 버스(933) 를 구비한다.
안테나(921)는, 통신부(922)에 접속된다. 스피커(924) 및 마이크로폰(925)은, 음성 코덱(923)에 접속된다. 조작부(932)는, 제어부(931)에 접속된다. 버스(933)는, 통신부(922), 음성 코덱(923), 카메라부(926), 화상 처리부(927), 다중 분리부(928), 기록 재생부(929), 표시부(930) 및 제어부(931)를 서로 접속한다.
휴대 전화기(920)는, 음성 통화 모드, 데이터 통신 모드, 촬영 모드 및 텔레비전 전화 모드를 포함하는 다양한 동작 모드에서, 음성 신호의 송수신, 전자 메일 또는 화상 데이터의 송수신, 화상의 촬상 및 데이터의 기록 등의 동작을 행한다.
음성 통화 모드에서, 마이크로폰(925)에 의해 생성되는 아날로그 음성 신호는, 음성 코덱(923)에 공급된다. 음성 코덱(923)은, 아날로그 음성 신호를 음성 데이터로 변환하고, 변환된 음성 데이터를 A/D 변환하여 압축한다. 그리고, 음성 코덱(923)은, 압축 후의 음성 데이터를 통신부(922)로 출력한다. 통신부(922)는, 음성 데이터를 부호화 및 변조하고, 송신 신호를 생성한다. 그리고, 통신부(922)는, 생성한 송신 신호를, 안테나(921)를 통해 기지국(도시생략)에 송신한다. 또한, 통신부(922)는, 안테나(921)를 통해 수신되는 무선 신호를 증폭 및 주파수 변환하고, 수신 신호를 취득한다. 그리고, 통신부(922)는, 수신 신호를 복조 및 복호해서 음성 데이터를 생성하고, 생성된 음성 데이터를 음성 코덱(923)으로 출력한다. 음성 코덱(923)은, 음성 데이터를 신장 및 D/A 변환하고, 아날로그 음성 신호를 생성한다. 그리고, 음성 코덱(923)은, 생성된 음성 신호를 스피커(924)에 공급해서 음성을 출력시킨다.
또한, 데이터 통신 모드에서, 예를 들어 제어부(931)는, 조작부(932)를 통하는 유저에 의한 조작에 따라서, 전자 메일을 구성하는 문자 데이터를 생성한다. 또한, 제어부(931)는, 문자를 표시부(930)에 표시시킨다. 또한, 제어부(931)는, 조작부(932)를 통하는 유저로부터의 송신 지시에 따라서 전자 메일 데이터를 생성하고, 생성된 전자 메일 데이터를 통신부(922)로 출력한다. 통신부(922)는, 전자 메일 데이터를 부호화 및 변조하고, 송신 신호를 생성한다. 그리고, 통신부(922)는, 생성한 송신 신호를, 안테나(921)를 통해 기지국(도시생략)에 송신한다. 또한, 통신부(922)는, 안테나(921)를 통해 수신되는 무선 신호를 증폭 및 주파수 변환하고, 수신 신호를 취득한다. 그리고, 통신부(922)는, 수신 신호를 복조 및 복호하여 전자 메일 데이터를 복원하고, 복원된 전자 메일 데이터를 제어부(931)로 출력한다. 제어부(931)는, 표시부(930)에 전자 메일의 내용을 표시시킴과 함께, 전자 메일 데이터를 기록 재생부(929)에 공급하고, 그 기억 매체에 기입시킨다.
기록 재생부(929)는, 판독 기입 가능한 임의의 기억 매체를 갖는다. 예를 들어, 기억 매체는, RAM 또는 플래시 메모리 등의 내장형의 기억 매체여도 되며, 하드디스크, 자기디스크, 광자기디스크, 광디스크, USB(Universal Serial Bus) 메모리, 또는 메모리 카드 등의 외부 장착형의 기억 매체여도 된다.
또한, 촬영 모드에서, 예를 들어 카메라부(926)는, 피사체를 촬상해서 화상 데이터를 생성하고, 생성된 화상 데이터를 화상 처리부(927)로 출력한다. 화상 처리부(927)는, 카메라부(926)로부터 입력되는 화상 데이터를 부호화하고, 부호화 스트림을 기록 재생부(929)에 공급하고, 그 기억 매체에 기입시킨다.
또한, 화상 표시 모드에서, 기록 재생부(929)는, 기억 매체에 기록되어 있는 부호화 스트림을 판독하여 화상 처리부(927)로 출력한다. 화상 처리부(927)는, 기록 재생부(929)로부터 입력되는 부호화 스트림을 복호하고, 화상 데이터를 표시부(930)에 공급하고, 그 화상을 표시시킨다.
또한, 텔레비전 전화 모드에서, 예를 들어 다중 분리부(928)는, 화상 처리부(927)에 의해 부호화된 영상 스트림과, 음성 코덱(923)으로부터 입력되는 음성 스트림을 다중화하고, 다중화한 스트림을 통신부(922)로 출력한다. 통신부(922)는, 스트림을 부호화 및 변조하고, 송신 신호를 생성한다. 그리고, 통신부(922)는, 생성한 송신 신호를, 안테나(921)를 통해 기지국(도시생략)으로 송신한다. 또한, 통신부(922)는, 안테나(921)를 통해 수신되는 무선 신호를 증폭 및 주파수 변환하고, 수신 신호를 취득한다. 이들 송신 신호 및 수신 신호에는, 부호화 비트 스트림이 포함될 수 있다. 그리고, 통신부(922)는, 수신 신호를 복조 및 복호하여 스트림을 복원하고, 복원한 스트림을 다중 분리부(928)로 출력한다. 다중 분리부(928)는, 입력되는 스트림으로부터 영상 스트림 및 음성 스트림을 분리하고, 영상 스트림을 화상 처리부(927), 음성 스트림을 음성 코덱(923)으로 출력한다. 화상 처리부(927)는, 영상 스트림을 복호하고, 영상 데이터를 생성한다. 영상 데이터는, 표시부(930)에 공급되고, 표시부(930)에 의해 일련의 화상이 표시된다. 음성 코덱(923)은, 음성 스트림을 신장 및 D/A 변환하고, 아날로그 음성 신호를 생성한다. 그리고, 음성 코덱(923)은, 생성한 음성 신호를 스피커(924)에 공급해서 음성을 출력시킨다.
이와 같이 구성된 휴대 전화기(920)에 있어서, 예를 들어 화상 처리부(927)가, 상술한 화상 부호화 장치(100)의 기능을 갖도록 해도 된다. 즉, 화상 처리부(927)가, 화상 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 부호화하도록 해도 된다. 이와 같이 함으로써, 휴대 전화기(920)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 이와 같이 구성된 휴대 전화기(920)에 있어서, 예를 들어 화상 처리부(927)가, 상술한 화상 복호 장치(200)의 기능을 갖도록 해도 된다. 즉, 화상 처리부(927)가, 부호화 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 복호하도록 해도 된다. 이와 같이 함으로써, 휴대 전화기(920)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<제3 응용예: 기록 재생 장치>
도 86은, 상술한 실시 형태를 적용한 기록 재생 장치의 개략적인 구성의 일례를 나타내고 있다. 기록 재생 장치(940)는, 예를 들어 수신한 방송 프로그램의 음성 데이터 및 영상 데이터를 부호화해서 기록 매체에 기록한다. 또한, 기록 재생 장치(940)는, 예를 들어 다른 장치로부터 취득되는 음성 데이터 및 영상 데이터를 부호화해서 기록 매체에 기록해도 된다. 또한, 기록 재생 장치(940)는, 예를 들어 유저의 지시에 따라서, 기록 매체에 기록되어 있는 데이터를 모니터 및 스피커상에서 재생한다. 이때, 기록 재생 장치(940)는, 음성 데이터 및 영상 데이터를 복호한다.
기록 재생 장치(940)는, 튜너(941), 외부 인터페이스(I/F)부(942), 인코더(943), HDD(Hard Disk Drive)부(944), 디스크 드라이브(945), 셀렉터(946), 디코더(947), OSD(On-Screen Display)부(948), 제어부(949) 및 유저 인터페이스(I/F)부(950)를 구비한다.
튜너(941)는, 안테나(도시생략)를 통해 수신되는 방송 신호로부터 원하는 채널의 신호를 추출하고, 추출한 신호를 복조한다. 그리고, 튜너(941)는, 복조에 의해 얻어진 부호화 비트 스트림을 셀렉터(946)로 출력한다. 즉, 튜너(941)는, 기록 재생 장치(940)에 있어서의 전송부로서의 역할을 갖는다.
외부 인터페이스부(942)는, 기록 재생 장치(940)와 외부 기기 또는 네트워크를 접속하기 위한 인터페이스이다. 외부 인터페이스부(942)는, 예를 들어IEEE(Institute of Electrical and Electronic Engineers) 1394 인터페이스, 네트워크 인터페이스, USB 인터페이스, 또는 플래시 메모리 인터페이스 등이어도 된다. 예를 들어, 외부 인터페이스부(942)를 통해 수신되는 영상 데이터 및 음성 데이터는, 인코더(943)에 입력된다. 즉, 외부 인터페이스부(942)는, 기록 재생 장치(940)에 있어서의 전송부로서의 역할을 갖는다.
인코더(943)는, 외부 인터페이스부(942)로부터 입력되는 영상 데이터 및 음성 데이터가 부호화되지 않는 경우에, 영상 데이터 및 음성 데이터를 부호화한다. 그리고, 인코더(943)는, 부호화 비트 스트림을 셀렉터(946)로 출력한다.
HDD부(944)는, 영상 및 음성 등의 콘텐츠 데이터가 압축된 부호화 비트 스트림, 각종 프로그램 및 그 밖의 데이터를 내부의 하드디스크에 기록한다. 또한, HDD부(944)는, 영상 및 음성의 재생 시에, 이들 데이터를 하드디스크로부터 판독한다.
디스크 드라이브(945)는, 장착되어 있는 기록 매체로의 데이터의 기록 및 판독을 행한다. 디스크 드라이브(945)에 장착되는 기록 매체는, 예를 들어 DVD(Digital Versatile Disc) 디스크(DVD-Video, DVD-RAM(DVD - Random Access Memory), DVD-R(DVD - Recordable), DVD-RW(DVD - Rewritable), DVD+R(DVD + Recordable), DVD+RW(DVD + Rewritable) 등) 또는 Blu-ray(등록상표) 디스크 등이어도 된다.
셀렉터(946)는, 영상 및 음성의 기록 시에는, 튜너(941) 또는 인코더(943)로부터 입력되는 부호화 비트 스트림을 선택하고, 선택한 부호화 비트 스트림을 HDD(944) 또는 디스크 드라이브(945)로 출력한다. 또한, 셀렉터(946)는, 영상 및 음성의 재생 시에는, HDD(944) 또는 디스크 드라이브(945)로부터 입력되는 부호화 비트 스트림을 디코더(947)로 출력한다.
디코더(947)는, 부호화 비트 스트림을 복호하고, 영상 데이터 및 음성 데이터를 생성한다. 그리고, 디코더(947)는, 생성한 영상 데이터를 OSD부(948)로 출력한다. 또한, 디코더(947)는, 생성한 음성 데이터를 외부의 스피커로 출력한다.
OSD부(948)는, 디코더(947)로부터 입력되는 영상 데이터를 재생하고, 영상을 표시한다. 또한, OSD부(948)는, 표시하는 영상에, 예를 들어 메뉴, 버튼 또는 커서 등의 GUI의 화상을 중첩해도 된다.
제어부(949)는, CPU 등의 프로세서, 및 RAM 및 ROM 등의 메모리를 갖는다. 메모리는, CPU에 의해 실행되는 프로그램 및 프로그램 데이터 등을 기억한다. 메모리에 의해 기억되는 프로그램은, 예를 들어 기록 재생 장치(940)의 기동 시에 CPU에 의해 읽어들여져, 실행된다. CPU는, 프로그램을 실행함으로써, 예를 들어 유저 인터페이스부(950)로부터 입력되는 조작 신호에 따라서, 기록 재생 장치(940)의 동작을 제어한다.
유저 인터페이스부(950)는, 제어부(949)와 접속된다. 유저 인터페이스부(950)는, 예를 들어 유저가 기록 재생 장치(940)를 조작하기 위한 버튼 및 스위치, 및 원격 제어 신호의 수신부 등을 갖는다. 유저 인터페이스부(950)는, 이들 구성 요소를 통해 유저에 의한 조작을 검출하여 조작 신호를 생성하고, 생성된 조작 신호를 제어부(949)로 출력한다.
이와 같이 구성된 기록 재생 장치(940)에 있어서, 예를 들어 인코더(943)가, 상술한 화상 부호화 장치(100)의 기능을 갖도록 해도 된다. 즉, 인코더(943)가, 화상 데이터를, 이상의 각 실시 형태에서 설명한 방법으로 부호화하도록 해도 된다. 이와 같이 함으로써, 기록 재생 장치(940)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 이와 같이 구성된 기록 재생 장치(940)에 있어서, 예를 들어 디코더(947)가, 상술한 화상 복호 장치(200)의 기능을 갖도록 해도 된다. 즉, 디코더(947)가, 부호화 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 복호하도록 해도 된다. 이와 같이 함으로써, 기록 재생 장치(940)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<제4 응용예: 촬상 장치>
도 87은, 상술한 실시 형태를 적용한 촬상 장치의 개략적인 구성의 일례를 나타내고 있다. 촬상 장치(960)는, 피사체를 촬상해서 화상을 생성하고, 화상 데이터를 부호화해서 기록 매체에 기록한다.
촬상 장치(960)는, 광학 블록(961), 촬상부(962), 신호 처리부(963), 화상 처리부(964), 표시부(965), 외부 인터페이스(I/F)부(966), 메모리부(967), 미디어 드라이브(968), OSD부(969), 제어부(970), 유저 인터페이스(I/F)부(971), 및 버스(972)를 구비한다.
광학 블록(961)은, 촬상부(962)에 접속된다. 촬상부(962)는, 신호 처리부(963)에 접속된다. 표시부(965)는, 화상 처리부(964)에 접속된다. 유저 인터페이스부(971)는, 제어부(970)에 접속된다. 버스(972)는, 화상 처리부(964), 외부 인터페이스부(966), 메모리부(967), 미디어 드라이브(968), OSD부(969), 및 제어부(970)를 서로 접속한다.
광학 블록(961)은, 포커스 렌즈 및 교축 기구 등을 갖는다. 광학 블록(961)은, 피사체의 광학 상을 촬상부(962)의 촬상면에 결상시킨다. 촬상부(962)는, CCD(Charge Coupled Device) 또는 CMOS(Complementary Metal Oxide Semiconductor) 등의 이미지 센서를 갖고, 촬상면에 결상한 광학 상을 광전 변환에 의해 전기 신호로서의 화상 신호로 변환한다. 그리고, 촬상부(962)는, 화상 신호를 신호 처리부(963)로 출력한다.
신호 처리부(963)는, 촬상부(962)로부터 입력되는 화상 신호에 대해서 니 보정, 감마 보정, 색 보정 등의 다양한 카메라 신호 처리를 행한다. 신호 처리부(963)는, 카메라 신호 처리 후의 화상 데이터를 화상 처리부(964)로 출력한다.
화상 처리부(964)는, 신호 처리부(963)로부터 입력되는 화상 데이터를 부호화하고, 부호화 데이터를 생성한다. 그리고, 화상 처리부(964)는, 생성한 부호화 데이터를 외부 인터페이스부(966) 또는 미디어 드라이브(968)로 출력한다. 또한, 화상 처리부(964)는, 외부 인터페이스부(966) 또는 미디어 드라이브(968)로부터 입력되는 부호화 데이터를 복호하고, 화상 데이터를 생성한다. 그리고, 화상 처리부(964)는, 생성한 화상 데이터를 표시부(965)로 출력한다. 또한, 화상 처리부(964)는, 신호 처리부(963)로부터 입력되는 화상 데이터를 표시부(965)로 출력해서 화상을 표시시켜도 된다. 또한, 화상 처리부(964)는, OSD부(969)로부터 취득되는 표시용 데이터를, 표시부(965)로 출력하는 화상에 중첩해도 된다.
OSD부(969)는, 예를 들어 메뉴, 버튼 또는 커서 등의 GUI의 화상을 생성하고, 생성된 화상을 화상 처리부(964)로 출력한다.
외부 인터페이스부(966)는, 예를 들어 USB 입출력 단자로서 구성된다. 외부 인터페이스부(966)는, 예를 들어 화상의 인쇄 시에, 촬상 장치(960)와 프린터를 접속한다. 또한, 외부 인터페이스부(966)에는, 필요에 따라 드라이브가 접속된다. 드라이브에는, 예를 들어 자기디스크 또는 광디스크 등의 리무버블 미디어가 장착되고, 리무버블 미디어로부터 판독되는 프로그램이, 촬상 장치(960)에 인스톨될 수 있다. 또한, 외부 인터페이스부(966)는, LAN 또는 인터넷 등의 네트워크에 접속되는 네트워크 인터페이스로서 구성되어도 된다. 즉, 외부 인터페이스부(966)는, 촬상 장치(960)에 있어서의 전송부로서의 역할을 갖는다.
미디어 드라이브(968)에 장착되는 기록 매체는, 예를 들어 자기디스크, 광자기디스크, 광디스크, 또는 반도체 메모리 등의, 판독 기입 가능한 임의의 리무버블 미디어이어도 된다. 또한, 미디어 드라이브(968)에 기록 매체가 고정적으로 장착되어, 예를 들어 내장형 하드디스크 드라이브 또는 SSD(Solid State Drive)와 같은 비가반성의 기억부가 구성되어도 된다.
제어부(970)는, CPU 등의 프로세서, 및 RAM 및 ROM 등의 메모리를 갖는다. 메모리는, CPU에 의해 실행되는 프로그램 및 프로그램 데이터 등을 기억한다. 메모리에 의해 기억되는 프로그램은, 예를 들어 촬상 장치(960)의 기동 시에 CPU에 의해 읽어들여져, 실행된다. CPU는, 프로그램을 실행함으로써, 예를 들어 유저 인터페이스부(971)로부터 입력되는 조작 신호에 따라서, 촬상 장치(960)의 동작을 제어한다.
유저 인터페이스부(971)는, 제어부(970)와 접속된다. 유저 인터페이스부(971)는, 예를 들어 유저가 촬상 장치(960)를 조작하기 위한 버튼 및 스위치 등을 갖는다. 유저 인터페이스부(971)는, 이들 구성 요소를 통해 유저에 의한 조작을 검출하여 조작 신호를 생성하고, 생성된 조작 신호를 제어부(970)로 출력한다.
이와 같이 구성된 촬상 장치(960)에 있어서, 예를 들어 화상 처리부(964)가, 상술한 화상 부호화 장치(100)의 기능을 갖도록 해도 된다. 즉, 화상 처리부(964)가, 화상 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 부호화하도록 해도 된다. 이와 같이 함으로써, 촬상 장치(960)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 이와 같이 구성된 촬상 장치(960)에 있어서, 예를 들어 화상 처리부(964)가, 상술한 화상 복호 장치(200)의 기능을 갖도록 해도 된다. 즉, 화상 처리부(964)가, 부호화 데이터를, 이상의 각 실시 형태에 있어서 설명한 방법으로 복호하도록 해도 된다. 이와 같이 함으로써, 촬상 장치(960)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<제5 응용예: 비디오 세트>
또한, 본 기술은, 임의의 장치 또는 시스템을 구성하는 장치에 탑재하는 모든 구성, 예를 들어 시스템 LSI(Large Scale Integration) 등으로서의 프로세서, 복수의 프로세서 등을 사용하는 모듈, 복수의 모듈 등을 사용하는 유닛, 유닛에 또한 그 밖의 기능을 부가한 세트 등(즉, 장치의 일부 구성)으로서 실시할 수도 있다. 도 88은, 본 기술을 적용한 비디오 세트의 개략적인 구성의 일례를 나타내고 있다.
근년, 전자 기기의 다기능화가 진행되고 있으며, 그 개발이나 제조에 있어서, 그 일부의 구성을 판매나 제공 등으로서 실시하는 경우, 1 기능을 갖는 구성으로서 실시를 행하는 경우뿐만 아니라, 관련된 기능을 갖는 복수의 구성을 조합하고, 복수의 기능을 갖는 1 세트로서 실시를 행하는 경우도 많이 볼 수 있게 되었다.
도 88에 도시된 비디오 세트(1300)는, 이러한 다기능화된 구성이며, 화상의 부호화나 복호(어느 한쪽이어도 되고, 양쪽이어도 됨)에 관한 기능을 갖는 디바이스에, 그 기능에 관련된 그 밖의 기능을 갖는 디바이스를 조합한 것이다.
도 88에 도시된 바와 같이, 비디오 세트(1300)는, 비디오 모듈(1311), 외부 메모리(1312), 파워 매니지먼트 모듈(1313) 및 프론트엔드 모듈(1314) 등의 모듈 군과, 커넥티비티(1321), 카메라(1322) 및 센서(1323) 등이 관련된 기능을 갖는 디바이스를 갖는다.
모듈은, 서로 관련된 몇 가지 부품적 기능을 통합하고, 통합한 어떤 기능을 갖는 부품으로 한 것이다. 구체적인 물리적 구성은 임의이지만, 예를 들어 각각 기능을 갖는 복수의 프로세서, 저항이나 콘덴서 등의 전자 회로 소자, 그 밖의 디바이스 등을 배선 기판 등에 배치하여 일체화한 것이 생각된다. 또한, 모듈에 다른 모듈이나 프로세서 등을 조합하여 새로운 모듈로 하는 것도 생각된다.
도 88의 예의 경우, 비디오 모듈(1311)은, 화상 처리에 관한 기능을 갖는 구성을 조합한 것이며, 애플리케이션 프로세서, 비디오 프로세서, 브로드밴드 모뎀(1333) 및 RF 모듈(1334)을 갖는다.
프로세서는, 소정의 기능을 갖는 구성을 SoC(System On a Chip)에 의해 반도체 칩으로 집적한 것이며, 예를 들어 시스템 LSI(Large Scale Integration) 등으로 칭해지는 것도 있다. 이 소정의 기능을 갖는 구성은, 논리 회로(하드웨어 구성)여도 되고, CPU, ROM, RAM 등과, 그들을 사용하여 실행되는 프로그램(소프트웨어 구성)이어도 되며, 그 양쪽을 조합한 것이어도 된다. 예를 들어, 프로세서가, 논리 회로와 CPU, ROM, RAM 등을 갖고, 기능의 일부를 논리 회로(하드웨어 구성)에 의해 실현하고, 그 밖의 기능을 CPU에 있어서 실행되는 프로그램(소프트웨어 구성)에 의해 실현하도록 해도 된다.
도 88의 애플리케이션 프로세서(1331)는, 화상 처리에 관한 어플리케이션을 실행하는 프로세서이다. 이 애플리케이션 프로세서(1331)에 있어서 실행되는 어플리케이션은, 소정의 기능을 실현하기 위해서, 연산 처리를 행할뿐만 아니라, 예를 들어 비디오 프로세서(1332) 등, 비디오 모듈(1311) 내외의 구성을 필요에 따라서 제어할 수도 있다.
비디오 프로세서(1332)는, 화상의 부호화·복호(그 한쪽 또는 양쪽)에 관한 기능을 갖는 프로세서이다.
브로드밴드 모뎀(1333)은, 인터넷이나 공중전화 회선망 등의 광대역의 회선을 통해 행해지는 유선 혹은 무선(또는 그 양쪽)의 광대역 통신에 의해 송신하는 데이터(디지털 신호)를 디지털 변조하거나 하여 아날로그 신호로 변환하거나, 그 광대역 통신에 의해 수신한 아날로그 신호를 복조하여 데이터(디지털 신호)로 변환하거나 한다. 브로드밴드 모뎀(1333)은, 예를 들어 비디오 프로세서(1332)가 처리하는 화상 데이터, 화상 데이터가 부호화된 스트림, 애플리케이션 프로그램, 설정 데이터 등, 임의의 정보를 처리한다.
RF 모듈(1334)은, 안테나를 통해 송수신되는 RF(Radio Frequency) 신호에 대해서, 주파수 변환, 변복조, 증폭, 필터 처리 등을 행하는 모듈이다. 예를 들어, RF 모듈(1334)은, 브로드밴드 모뎀(1333)에 의해 생성된 기저 대역 신호에 대해서 주파수 변환 등을 행해서 RF 신호를 생성한다. 또한, 예를 들어 RF 모듈(1334)은, 프론트엔드 모듈(1314)을 통해 수신된 RF 신호에 대해서 주파수 변환 등을 행하여 기저 대역 신호를 생성한다.
또한, 도 88에 있어서 점선(1341)으로 도시된 바와 같이, 애플리케이션 프로세서(1331)와 비디오 프로세서(1332)를, 일체화하고, 1개의 프로세서로서 구성되도록 해도 된다.
외부 메모리(1312)는, 비디오 모듈(1311)의 외부에 설치된, 비디오 모듈(1311)에 의해 이용되는 기억 디바이스를 갖는 모듈이다. 이 외부 메모리(1312)의 기억 디바이스는, 어떤 물리 구성에 의해 실현하도록 해도 되지만, 일반적으로 프레임 단위의 화상 데이터와 같은 대용량의 데이터 저장에 이용되는 경우가 많으므로, 예를 들어 DRAM(Dynamic Random Access Memory)과 같은 비교적 저렴하여 대용량의 반도체 메모리에 의해 실현하는 것이 바람직하다.
파워 매니지먼트 모듈(1313)은, 비디오 모듈(1311)(비디오 모듈(1311) 내의 각 구성)로의 전력 공급을 관리하고, 제어한다.
프론트엔드 모듈(1314)은, RF 모듈(1334)에 대해서 프론트엔드 기능(안테나측의 송수신 단의 회로)을 제공하는 모듈이다. 도 88에 도시된 바와 같이, 프론트엔드 모듈(1314)은, 예를 들어 안테나부(1351), 필터(1352) 및 증폭부(1353)를 갖는다.
안테나부(1351)는, 무선 신호를 송수신하는 안테나 및 그 주변의 구성을 갖는다. 안테나부(1351)는, 증폭부(1353)로부터 공급되는 신호를 무선 신호로서 송신하고, 수신한 무선 신호를 전기 신호(RF 신호)로서 필터(1352)에 공급한다. 필터(1352)는, 안테나부(1351)를 통해 수신된 RF 신호에 대하여 필터 처리 등을 행하고, 처리 후의 RF 신호를 RF 모듈(1334)에 공급한다. 증폭부(1353)는, RF 모듈(1334)로부터 공급되는 RF 신호를 증폭하고, 안테나부(1351)에 공급한다.
커넥티비티(1321)는, 외부와의 접속에 관한 기능을 갖는 모듈이다. 커넥티비티(1321)의 물리 구성은, 임의이다. 예를 들어, 커넥티비티(1321)는, 브로드밴드 모뎀(1333)이 대응하는 통신 규격 이외의 통신 기능을 갖는 구성이나, 외부 입출력 단자 등을 갖는다.
예를 들어, 커넥티비티(1321)가, Bluetooth(등록상표), IEEE 802.11(예를 들어 Wi-Fi(Wireless Fidelity, 등록상표)), NFC(Near Field Communication), IrDA(InfraRed Data Association) 등의 무선 통신 규격에 준거하는 통신 기능을 갖는 모듈이나, 그 규격에 준거한 신호를 송수신하는 안테나 등을 갖도록 해도 된다. 또한, 예를 들어 커넥티비티(1321)가, USB(Universal Serial Bus), HDMI(등록상표)(High-Definition Multimedia Interface) 등의 유선 통신 규격에 준거하는 통신 기능을 갖는 모듈이나, 그 규격에 준거한 단자를 갖도록 해도 된다. 또한, 예를 들어 커넥티비티(1321)가, 아날로그 입출력 단자 등의 그 밖의 데이터(신호) 전송 기능 등을 갖도록 해도 된다.
또한, 커넥티비티(1321)가, 데이터(신호)의 전송처의 디바이스를 포함하도록 해도 된다. 예를 들어, 커넥티비티(1321)가, 자기디스크, 광디스크, 광자기디스크 또는 반도체 메모리 등의 기록 매체에 대하여 데이터의 판독이나 기입을 행하는 드라이브(리무버블 미디어의 드라이브뿐만 아니라, 하드디스크, SSD(Solid State Drive), NAS(Network Attached Storage) 등도 포함함)를 갖도록 해도 된다. 또한, 커넥티비티(1321)가, 화상이나 음성의 출력 디바이스(모니터나 스피커 등)를 갖도록 해도 된다.
카메라(1322)는, 피사체를 촬상하고, 피사체의 화상 데이터를 얻는 기능을 갖는 모듈이다. 카메라(1322)의 촬상에 의해 얻어진 화상 데이터는, 예를 들어 비디오 프로세서(1332)에 공급되어 부호화된다.
센서(1323)는, 예를 들어 음성 센서, 초음파 센서, 광 센서, 조도 센서, 적외선 센서, 이미지 센서, 회전 센서, 각도 센서, 각속도 센서, 속도 센서, 가속도 센서, 경사 센서, 자기 식별 센서, 충격 센서, 온도 센서 등, 임의의 센서 기능을 갖는 모듈이다. 센서(1323)에 의해 검출된 데이터는, 예를 들어 애플리케이션 프로세서(1331)에 공급되어 어플리케이션 등에 의해 이용된다.
이상에 있어서 모듈로서 설명한 구성을 프로세서로서 실현하도록 해도 되고, 반대로 프로세서로서 설명한 구성을 모듈로서 실현하도록 해도 된다.
이상과 같은 구성의 비디오 세트(1300)에 있어서, 후술하는 바와 같이 비디오 프로세서(1332)에 본 기술을 적용할 수 있다. 따라서, 비디오 세트(1300)는, 본 기술을 적용한 세트로서 실시할 수 있다.
<비디오 프로세서의 구성예>
도 89는, 본 기술을 적용한 비디오 프로세서(1332)(도 88)의 개략적인 구성의 일례를 나타내고 있다.
도 89의 예의 경우, 비디오 프로세서(1332)는, 비디오 신호 및 오디오 신호의 입력을 받아서 이들을 소정의 방식으로 부호화하는 기능과, 부호화된 비디오 데이터 및 오디오 데이터를 복호하고, 비디오 신호 및 오디오 신호를 재생 출력하는 기능을 갖는다.
도 89에 도시된 바와 같이, 비디오 프로세서(1332)는, 비디오 입력 처리부(1401), 제1 화상 확대 축소부(1402), 제2 화상 확대 축소부(1403), 비디오 출력 처리부(1404), 프레임 메모리(1405) 및 메모리 제어부(1406)를 갖는다. 또한, 비디오 프로세서(1332)는, 인코드·디코드 엔진(1407), 비디오 ES(Elementary Stream) 버퍼(1408A 및 1408B), 및 오디오 ES 버퍼(1409A 및 1409B)를 갖는다. 또한, 비디오 프로세서(1332)는, 오디오 인코더(1410), 오디오 디코더(1411), 다중화부(MUX(Multiplexer))(1412), 역다중화부(DMUX(Demultiplexer))(1413) 및 스트림 버퍼(1414)를 갖는다.
비디오 입력 처리부(1401)는, 예를 들어 커넥티비티(1321)(도 88) 등으로부터 입력된 비디오 신호를 취득하고, 디지털 화상 데이터로 변환한다. 제1 화상 확대 축소부(1402)는, 화상 데이터에 대하여 포맷 변환이나 화상의 확대 축소 처리 등을 행한다. 제2 화상 확대 축소부(1403)는, 화상 데이터에 대해서, 비디오 출력 처리부(1404)를 통해 출력하는 곳에서의 포맷에 따라서 화상의 확대 축소 처리를 행하거나, 제1 화상 확대 축소부(1402)와 마찬가지의 포맷 변환이나 화상의 확대 축소 처리 등을 행하거나 한다. 비디오 출력 처리부(1404)는, 화상 데이터에 대해서, 포맷 변환이나 아날로그 신호로의 변환 등을 행하고, 재생된 비디오 신호로서 예를 들어 커넥티비티(1321) 등으로 출력한다.
프레임 메모리(1405)는, 비디오 입력 처리부(1401), 제1 화상 확대 축소부(1402), 제2 화상 확대 축소부(1403), 비디오 출력 처리부(1404) 및 인코드·디코드 엔진(1407)에 의해 공용되는 화상 데이터용 메모리이다. 프레임 메모리(1405)는, 예를 들어 DRAM 등의 반도체 메모리로서 실현된다.
메모리 제어부(1406)는, 인코드·디코드 엔진(1407)으로부터의 동기 신호를 받고, 액세스 관리 테이블(1406A)에 기입된 프레임 메모리(1405)에의 액세스 스케줄을 따라서 프레임 메모리(1405)에 대한 기입·판독의 액세스를 제어한다. 액세스 관리 테이블(1406A)은, 인코드·디코드 엔진(1407), 제1 화상 확대 축소부(1402), 제2 화상 확대 축소부(1403) 등으로 실행되는 처리에 따라서, 메모리 제어부(1406)에 의해 갱신된다.
인코드·디코드 엔진(1407)은, 화상 데이터의 인코드 처리, 및 화상 데이터가 부호화된 데이터인 비디오 스트림의 디코드 처리를 행한다. 예를 들어, 인코드·디코드 엔진(1407)은, 프레임 메모리(1405)로부터 판독한 화상 데이터를 부호화하고, 비디오 스트림으로서 비디오 ES 버퍼(1408A)에 순차 기입한다. 또한, 예를 들어 비디오 ES 버퍼(1408B)로부터 비디오 스트림을 순차 판독하여 복호하고, 화상 데이터로서 프레임 메모리(1405)에 순차 기입한다. 인코드·디코드 엔진(1407)은, 이들 부호화나 복호에 있어서, 프레임 메모리(1405)를 작업 영역으로서 사용한다. 또한, 인코드·디코드 엔진(1407)은, 예를 들어 매크로 블록마다의 처리를 개시하는 타이밍에, 메모리 제어부(1406)에 대하여 동기 신호를 출력한다.
비디오 ES 버퍼(1408A)는, 인코드·디코드 엔진(1407)에 의해 생성된 비디오 스트림을 버퍼링하고, 다중화부(MUX)(1412)에 공급한다. 비디오 ES 버퍼(1408B)는, 역다중화부(DMUX)(1413)로부터 공급된 비디오 스트림을 버퍼링하고, 인코드·디코드 엔진(1407)에 공급한다.
오디오 ES 버퍼(1409A)는, 오디오 인코더(1410)에 의해 생성된 오디오 스트림을 버퍼링하고, 다중화부(MUX)(1412)에 공급한다. 오디오 ES 버퍼(1409B)는, 역다중화부(DMUX)(1413)로부터 공급된 오디오 스트림을 버퍼링하고, 오디오 디코더(1411)에 공급한다.
오디오 인코더(1410)는, 예를 들어 커넥티비티(1321) 등으로부터 입력된 오디오 신호를 예를 들어 디지털 변환하고, 예를 들어 MPEG 오디오 방식이나 AC3(AudioCode number 3) 방식 등의 소정의 방식으로 부호화한다. 오디오 인코더(1410)는, 오디오 신호가 부호화된 데이터인 오디오 스트림을 오디오 ES 버퍼(1409A)에 순차 기입한다. 오디오 디코더(1411)는, 오디오 ES 버퍼(1409B)로부터 공급된 오디오 스트림을 복호하고, 예를 들어 아날로그 신호로의 변환 등을 행하여, 재생된 오디오 신호로서 예를 들어 커넥티비티(1321) 등에 공급한다.
다중화부(MUX)(1412)는, 비디오 스트림과 오디오 스트림을 다중화한다. 이 다중화의 방법(즉, 다중화에 의해 생성되는 비트 스트림의 포맷)은 임의이다. 또한, 이 다중화 시에, 다중화부(MUX)(1412)는, 소정의 헤더 정보 등을 비트 스트림에 부가할 수도 있다. 즉, 다중화부(MUX)(1412)는, 다중화에 의해 스트림의 포맷을 변환할 수 있다. 예를 들어, 다중화부(MUX)(1412)는, 비디오 스트림과 오디오 스트림을 다중화함으로써, 전송용 포맷의 비트 스트림인 트랜스포트 스트림으로 변환한다. 또한, 예를 들어 다중화부(MUX)(1412)는, 비디오 스트림과 오디오 스트림을 다중화함으로써, 기록용 파일 포맷의 데이터(파일 데이터)로 변환한다.
역다중화부(DMUX)(1413)는, 다중화부(MUX)(1412)에 의한 다중화에 대응하는 방법에 의해, 비디오 스트림과 오디오 스트림이 다중화된 비트 스트림을 역다중화한다. 즉, 역다중화부(DMUX)(1413)는, 스트림 버퍼(1414)로부터 판독된 비트 스트림으로부터 비디오 스트림과 오디오 스트림을 추출한다(비디오 스트림과 오디오 스트림을 분리함). 즉, 역다중화부(DMUX)(1413)는, 역다중화에 의해 스트림의 포맷을 변환(다중화부(MUX)(1412)에 의한 변환의 역변환)할 수 있다. 예를 들어, 역다중화부(DMUX)(1413)는, 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등으로부터 공급된 트랜스포트 스트림을, 스트림 버퍼(1414)를 통해 취득하고, 역다중화함으로써, 비디오 스트림과 오디오 스트림으로 변환할 수 있다. 또한, 예를 들어 역다중화부(DMUX)(1413)는, 예를 들어 커넥티비티(1321)에 의해 각종 기록 매체로부터 판독된 파일 데이터를, 스트림 버퍼(1414)를 통해 취득하고, 역다중화함으로써, 비디오 스트림과 오디오 스트림으로 변환할 수 있다.
스트림 버퍼(1414)는, 비트 스트림을 버퍼링한다. 예를 들어, 스트림 버퍼(1414)는, 다중화부(MUX)(1412)로부터 공급된 트랜스포트 스트림을 버퍼링하고, 소정의 타이밍에 있어서, 또는 외부로부터의 요구 등에 기초하여, 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등에 공급한다.
또한, 예를 들어 스트림 버퍼(1414)는, 다중화부(MUX)(1412)로부터 공급된 파일 데이터를 버퍼링하고, 소정의 타이밍에 있어서, 또는 외부로부터의 요구 등에 기초하여, 예를 들어 커넥티비티(1321) 등에 공급하고, 각종 기록 매체에 기록시킨다.
또한, 스트림 버퍼(1414)는, 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등을 통해 취득한 트랜스포트 스트림을 버퍼링하고, 소정의 타이밍에 있어서, 또는 외부로부터의 요구 등에 기초하여, 역다중화부(DMUX)(1413)에 공급한다.
또한, 스트림 버퍼(1414)는, 예를 들어 커넥티비티(1321) 등에 있어서 각종 기록 매체로부터 판독된 파일 데이터를 버퍼링하고, 소정의 타이밍에 있어서 또는 외부로부터의 요구 등에 기초하여, 역다중화부(DMUX)(1413)에 공급한다.
다음으로, 이와 같은 구성의 비디오 프로세서(1332)의 동작의 예에 대하여 설명한다. 예를 들어, 커넥티비티(1321) 등으로부터 비디오 프로세서(1332)에 입력된 비디오 신호는, 비디오 입력 처리부(1401)에 있어서 4:2:2Y/Cb/Cr 방식 등의 소정의 방식의 디지털 화상 데이터로 변환되고, 프레임 메모리(1405)에 순차 기입된다. 이 디지털 화상 데이터는, 제1 화상 확대 축소부(1402) 또는 제2 화상 확대 축소부(1403)에 의해 판독되어, 4:2:0Y/Cb/Cr 방식 등의 소정의 방식으로의 포맷 변환 및 확대 축소 처리가 행해지고, 다시 프레임 메모리(1405)에 기입된다. 이 화상 데이터는, 인코드·디코드 엔진(1407)에 의해 부호화되고, 비디오 스트림으로서 비디오 ES 버퍼(1408A)에 기입된다.
또한, 커넥티비티(1321) 등으로부터 비디오 프로세서(1332)에 입력된 오디오 신호는, 오디오 인코더(1410)에 의해 부호화되고, 오디오 스트림으로서, 오디오 ES 버퍼(1409A)에 기입된다.
비디오 ES 버퍼(1408A)의 비디오 스트림과, 오디오 ES 버퍼(1409A)의 오디오 스트림은, 다중화부(MUX)(1412)에 의해 판독되어 다중화되고, 트랜스포트 스트림 또는 파일 데이터 등으로 변환된다. 다중화부(MUX)(1412)에 의해 생성된 트랜스포트 스트림은, 스트림 버퍼(1414)에 의해 버퍼된 후, 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등을 통해 외부 네트워크로 출력된다. 또한, 다중화부(MUX)(1412)에 의해 생성된 파일 데이터는, 스트림 버퍼(1414)에 의해 버퍼된 후, 예를 들어 커넥티비티(1321) 등으로 출력되고, 각종 기록 매체에 기록된다.
또한, 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등을 통해 외부 네트워크로부터 비디오 프로세서(1332)에 입력된 트랜스포트 스트림은, 스트림 버퍼(1414)에 의해 버퍼된 후, 역다중화부(DMUX)(1413)에 의해 역다중화된다. 또한, 예를 들어 커넥티비티(1321) 등에 있어서 각종 기록 매체로부터 판독되고, 비디오 프로세서(1332)에 입력된 파일 데이터는, 스트림 버퍼(1414)에 의해 버퍼된 후, 역다중화부(DMUX)(1413)에 의해 역다중화된다. 즉, 비디오 프로세서(1332)에 입력된 트랜스포트 스트림 또는 파일 데이터는, 역다중화부(DMUX)(1413)에 의해 비디오 스트림과 오디오 스트림으로 분리된다.
오디오 스트림은, 오디오 ES 버퍼(1409B)를 통해 오디오 디코더(1411)에 공급되어, 복호되어 오디오 신호가 재생된다. 또한, 비디오 스트림은, 비디오 ES 버퍼(1408B)에 기입된 후, 인코드·디코드 엔진(1407)에 의해 순차 판독되어서 복호되어 프레임 메모리(1405)에 기입된다. 복호된 화상 데이터는, 제2 화상 확대 축소부(1403)에 의해 확대 축소 처리되어, 프레임 메모리(1405)에 기입된다. 그리고, 복호된 화상 데이터는, 비디오 출력 처리부(1404)에 의해 판독되어, 4:2:2Y/Cb/Cr 방식 등의 소정의 방식으로 포맷 변환되고, 또한 아날로그 신호로 변환되어, 비디오 신호가 재생 출력된다.
이와 같이 구성되는 비디오 프로세서(1332)에 본 기술을 적용하는 경우, 인코드·디코드 엔진(1407)에, 상술한 각 실시 형태에 관한 본 기술을 적용하면 된다. 즉, 예를 들어 인코드·디코드 엔진(1407)이, 상술한 화상 부호화 장치(100)의 기능 혹은 화상 복호 장치(200)의 기능 또는 그 양쪽을 갖도록 해도 된다. 이와 같이 함으로써, 비디오 프로세서(1332)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 인코드·디코드 엔진(1407)에 있어서, 본 기술(즉, 화상 부호화 장치(100)의 기능 혹은 화상 복호 장치(200)의 기능 또는 그 양쪽)은, 논리 회로 등의 하드웨어에 의해 실현하게 해도 되고, 내장 프로그램 등의 소프트웨어에 의해 실현하도록 해도 되고, 그들의 양쪽에 의해 실현하도록 해도 된다.
<비디오 프로세서의 다른 구성예>
도 90은, 본 기술을 적용한 비디오 프로세서(1332)의 개략적인 구성의 다른 예를 나타내고 있다. 도 90의 예의 경우, 비디오 프로세서(1332)는, 비디오 데이터를 소정의 방식으로 부호화·복호하는 기능을 갖는다.
보다 구체적으로는, 도 90에 도시된 바와 같이, 비디오 프로세서(1332)는, 제어부(1511), 디스플레이 인터페이스(1512), 디스플레이 엔진(1513), 화상 처리 엔진(1514) 및 내부 메모리(1515)를 갖는다. 또한, 비디오 프로세서(1332)는, 코덱 엔진(1516), 메모리 인터페이스(1517), 다중화·역다중화부(MUX DMUX)(1518), 네트워크 인터페이스(1519) 및 비디오 인터페이스(1520)를 갖는다.
제어부(1511)는, 디스플레이 인터페이스(1512), 디스플레이 엔진(1513), 화상 처리 엔진(1514) 및 코덱 엔진(1516) 등, 비디오 프로세서(1332) 내의 각 처리부의 동작을 제어한다.
도 90에 도시된 바와 같이, 제어부(1511)는, 예를 들어 메인 CPU(1531), 서브 CPU(1532) 및 시스템 컨트롤러(1533)를 갖는다. 메인 CPU(1531)는, 비디오 프로세서(1332) 내의 각 처리부의 동작을 제어하기 위한 프로그램 등을 실행한다. 메인 CPU(1531)는, 그 프로그램 등을 따라서 제어 신호를 생성하고, 각 처리부에 공급한다(즉, 각 처리부의 동작을 제어함). 서브 CPU(1532)는, 메인 CPU(1531)의 보조적인 역할을 한다. 예를 들어, 서브 CPU(1532)는, 메인 CPU(1531)가 실행하는 프로그램 등의 자 프로세스나 서브루틴 등을 실행한다. 시스템 컨트롤러(1533)는, 메인 CPU(1531) 및 서브 CPU(1532)가 실행하는 프로그램을 지정하는 등, 메인 CPU(1531) 및 서브 CPU(1532)의 동작을 제어한다.
디스플레이 인터페이스(1512)는, 제어부(1511)의 제어하에 화상 데이터를 예를 들어 커넥티비티(1321) 등으로 출력한다. 예를 들어, 디스플레이 인터페이스(1512)는, 디지털 데이터의 화상 데이터를 아날로그 신호로 변환하고, 재생된 비디오 신호로서, 또는 디지털 데이터의 화상 데이터 그대로, 커넥티비티(1321)의 모니터 장치 등으로 출력한다.
디스플레이 엔진(1513)은, 제어부(1511)의 제어하에 화상 데이터에 대해서, 그 화상을 표시시키는 모니터 장치 등의 하드웨어 스펙에 맞추도록, 포맷 변환, 사이즈 변환, 색 영역 변환 등의 각종 변환 처리를 행한다.
화상 처리 엔진(1514)은, 제어부(1511)의 제어하에 화상 데이터에 대해서, 예를 들어 화질 개선을 위한 필터 처리 등, 소정의 화상 처리를 실시한다.
내부 메모리(1515)는, 디스플레이 엔진(1513), 화상 처리 엔진(1514) 및 코덱 엔진(1516)에 의해 공용되는, 비디오 프로세서(1332)의 내부에 설치된 메모리다. 내부 메모리(1515)는, 예를 들어 디스플레이 엔진(1513), 화상 처리 엔진(1514) 및 코덱 엔진(1516)의 사이에서 행해지는 데이터의 수수에 이용된다. 예를 들어, 내부 메모리(1515)는, 디스플레이 엔진(1513), 화상 처리 엔진(1514) 또는 코덱 엔진(1516)으로부터 공급되는 데이터를 저장하고, 필요에 따라서(예를 들어, 요구에 따라서), 그 데이터를, 디스플레이 엔진(1513), 화상 처리 엔진(1514) 또는 코덱 엔진(1516)에 공급한다. 이 내부 메모리(1515)는, 어떤 기억 디바이스에 의해 실현하도록 해도 되지만, 일반적으로 블록 단위의 화상 데이터나 파라미터 등과 같은 소용량의 데이터 저장에 이용하는 경우가 많으므로, 예를 들어 SRAM(Static Random Access Memory)과 같은 비교적(예를 들어 외부 메모리(1312)와 비교하여) 소용량이지만 응답 속도가 고속의 반도체 메모리에 의해 실현하는 것이 바람직하다.
코덱 엔진(1516)은, 화상 데이터의 부호화나 복호에 관한 처리를 행한다. 이 코덱 엔진(1516)이 대응하는 부호화·복호의 방식은 임의이며, 그 수는 1개여도 되고, 복수여도 된다. 예를 들어, 코덱 엔진(1516)은, 복수의 부호화·복호 방식의 코덱 기능을 구비하고, 그 중에서 선택된 것으로 화상 데이터의 부호화 또는 부호화 데이터의 복호를 행하도록 해도 된다.
도 90에 도시된 예에 있어서, 코덱 엔진(1516)은, 코덱에 관한 처리의 기능 블록으로서, 예를 들어 MPEG-2 Video(1541), AVC/H.264(1542), HEVC/H.265(1543), HEVC/H.265(Scalable)(1544), HEVC/H.265(Multi-view)(1545) 및 MPEG-DASH(1551)를 갖는다.
MPEG-2 Video(1541)는, 화상 데이터를 MPEG-2 방식으로 부호화하거나 복호하는 기능 블록이다. AVC/H.264(1542)는, 화상 데이터를 AVC 방식으로 부호화하거나 복호하는 기능 블록이다. HEVC/H.265(1543)는, 화상 데이터를 HEVC 방식으로 부호화하거나 복호하는 기능 블록이다. HEVC/H.265(Scalable)(1544)는, 화상 데이터를 HEVC 방식으로 스케일러블 부호화하거나 스케일러블 복호하는 기능 블록이다. HEVC/H.265(Multi-view)(1545)는, 화상 데이터를 HEVC 방식으로 다시점 부호화하거나 다시점 복호하는 기능 블록이다.
MPEG-DASH(1551)는, 화상 데이터를 MPEG-DASH(MPEG-Dynamic Adaptive Streaming over HTTP) 방식으로 송수신하는 기능 블록이다. MPEG-DASH는, HTTP(HyperText Transfer Protocol)를 사용하여 비디오의 스트리밍을 행하는 기술이며, 미리 준비된 해상도 등이 서로 다른 복수의 부호화 데이터 중에서 적절한 것을 세그먼트 단위로 선택하여 전송하는 것을 특징의 하나로 한다. MPEG-DASH(1551)는, 규격에 준거하는 스트림의 생성이나 그 스트림의 전송 제어 등을 행하고, 화상 데이터의 부호화·복호에 대해서는, 상술한 MPEG-2 Video(1541) 내지HEVC/H. 265(Multi-view)(1545)를 이용한다.
메모리 인터페이스(1517)는, 외부 메모리(1312)용 인터페이스이다. 화상 처리 엔진(1514)이나 코덱 엔진(1516)으로부터 공급되는 데이터는, 메모리 인터페이스(1517)를 통해 외부 메모리(1312)에 공급된다. 또한, 외부 메모리(1312)로부터 판독된 데이터는, 메모리 인터페이스(1517)를 통해 비디오 프로세서(1332)(화상 처리 엔진(1514) 또는 코덱 엔진(1516))에 공급된다.
다중화·역다중화부(MUX DMUX)(1518)는, 부호화 데이터의 비트 스트림, 화상 데이터, 비디오 신호 등, 화상에 관한 각종 데이터의 다중화나 역다중화를 행한다. 이 다중화·역다중화의 방법은 임의이다. 예를 들어, 다중화 시에, 다중화·역다중화부(MUX DMUX)(1518)는, 복수의 데이터를 하나로 통합할 뿐만 아니라, 소정의 헤더 정보 등을 그 데이터에 부가할 수도 있다. 또한, 역다중화 시에, 다중화·역다중화부(MUX DMUX)(1518)는, 1개의 데이터를 복수로 분할할 뿐만 아니라, 분할한 각 데이터에 소정의 헤더 정보 등을 부가할 수도 있다. 즉, 다중화·역다중화부(MUX DMUX)(1518)는, 다중화·역다중화에 의해 데이터의 포맷을 변환할 수 있다. 예를 들어, 다중화·역다중화부(MUX DMUX)(1518)는, 비트 스트림을 다중화함으로써, 전송용 포맷의 비트 스트림인 트랜스포트 스트림이나, 기록용 파일 포맷의 데이터(파일 데이터)로 변환할 수 있다. 물론, 역다중화에 의해 그 역변환도 가능하다.
네트워크 인터페이스(1519)는, 예를 들어 브로드밴드 모뎀(1333)이나 커넥티비티(1321) 등에 적합한 인터페이스이다. 비디오 인터페이스(1520)는, 예를 들어 커넥티비티(1321)이나 카메라(1322) 등에 적합한 인터페이스이다.
다음으로, 이와 같은 비디오 프로세서(1332)의 동작의 예에 대하여 설명한다. 예를 들어, 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등을 통해 외부 네트워크로부터 트랜스포트 스트림을 수신하면, 그 트랜스포트 스트림은, 네트워크 인터페이스(1519)를 통해 다중화·역다중화부(MUX DMUX)(1518)에 공급되어 역다중화되고, 코덱 엔진(1516)에 의해 복호된다. 코덱 엔진(1516)의 복호에 의해 얻어진 화상 데이터는, 예를 들어 화상 처리 엔진(1514)에 의해 소정의 화상 처리가 실시되고, 디스플레이 엔진(1513)에 의해 소정의 변환이 행해져서, 디스플레이 인터페이스(1512)를 통해 예를 들어 커넥티비티(1321) 등에 공급되고, 그 화상이 모니터에 표시된다. 또한, 예를 들어 코덱 엔진(1516)의 복호에 의해 얻어진 화상 데이터는, 코덱 엔진(1516)에 의해 재부호화되고, 다중화·역다중화부(MUX DMUX)(1518)에 의해 다중화되어 파일 데이터로 변환되고, 비디오 인터페이스(1520)를 통해 예를 들어 커넥티비티(1321) 등으로 출력되고, 각종 기록 매체에 기록된다.
또한, 예를 들어 커넥티비티(1321) 등에 의해 도시되지 않은 기록 매체로부터 판독된, 화상 데이터가 부호화된 부호화 데이터의 파일 데이터는, 비디오 인터페이스(1520)를 통해 다중화·역다중화부(MUX DMUX)(1518)에 공급되어 역다중화되고, 코덱 엔진(1516)에 의해 복호된다. 코덱 엔진(1516)의 복호에 의해 얻어진 화상 데이터는, 화상 처리 엔진(1514)에 의해 소정의 화상 처리가 실시되고, 디스플레이 엔진(1513)에 의해 소정의 변환이 행해지고, 디스플레이 인터페이스(1512)를 통해 예를 들어 커넥티비티(1321) 등에 공급되어, 그 화상이 모니터에 표시된다. 또한, 예를 들어 코덱 엔진(1516)의 복호에 의해 얻어진 화상 데이터는, 코덱 엔진(1516)에 의해 재부호화되어, 다중화·역다중화부(MUX DMUX)(1518)에 의해 다중화되어서 트랜스포트 스트림으로 변환되고, 네트워크 인터페이스(1519)를 통해 예를 들어 커넥티비티(1321)나 브로드밴드 모뎀(1333) 등에 공급되어 도시하지 않은 다른 장치에 전송된다.
또한, 비디오 프로세서(1332) 내의 각 처리부 사이에서의 화상 데이터나 그 밖의 데이터의 수수는, 예를 들어 내부 메모리(1515)나 외부 메모리(1312)를 이용하여 행해진다. 또한, 파워 매니지먼트 모듈(1313)은, 예를 들어 제어부(1511)로의 전력 공급을 제어한다.
이와 같이 구성되는 비디오 프로세서(1332)에 본 기술을 적용하는 경우, 코덱 엔진(1516)에, 상술한 각 실시 형태에 관한 본 기술을 적용하면 된다. 즉, 예를 들어 코덱 엔진(1516)이, 상술한 화상 부호화 장치(100)의 기능 혹은 화상 복호 장치(200)의 기능 또는 그 양쪽을 갖게 하면 된다. 이와 같이 함으로써, 비디오 프로세서(1332)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 코덱 엔진(1516)에 있어서, 본 기술(즉, 화상 부호화 장치(100)의 기능)은, 논리 회로 등의 하드웨어에 의해 실현하도록 해도 되고, 내장 프로그램 등의 소프트웨어에 의해 실현하도록 해도 되며, 그들의 양쪽에 의해 실현하도록 해도 된다.
이상으로 비디오 프로세서(1332)의 구성을 2개 예시하였지만, 비디오 프로세서(1332)의 구성은 임의이며, 상술한 2개의 예 이외의 것이어도 된다. 또한, 이 비디오 프로세서(1332)는, 1개의 반도체 칩으로서 구성되도록 해도 되지만, 복수의 반도체 칩으로서 구성되도록 해도 된다. 예를 들어, 복수의 반도체를 적층하는 3차원 적층 LSI로 해도 된다. 또한, 복수의 LSI에 의해 실현되도록 해도 된다.
<장치로의 적용예>
비디오 세트(1300)는, 화상 데이터를 처리하는 각종 장치에 내장할 수 있다. 예를 들어, 비디오 세트(1300)는, 텔레비전 장치(900)(도 84), 휴대 전화기(920)(도 85), 기록 재생 장치(940)(도 86), 촬상 장치(960)(도 87) 등에 내장할 수 있다. 비디오 세트(1300)를 내장함으로써, 그 장치는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
또한, 상술한 비디오 세트(1300)의 각 구성의 일부여도, 비디오 프로세서(1332)를 포함하는 것이라면, 본 기술을 적용한 구성으로서 실시할 수 있다. 예를 들어, 비디오 프로세서(1332)만을 본 기술을 적용한 비디오 프로세서로서 실시할 수 있다. 또한, 예를 들어 상술한 바와 같이 점선(1341)에 의해 나타내어지는 프로세서나 비디오 모듈(1311) 등을, 본 기술을 적용한 프로세서나 모듈 등으로서 실시할 수 있다. 또한, 예를 들어 비디오 모듈(1311), 외부 메모리(1312), 파워 매니지먼트 모듈(1313) 및 프론트엔드 모듈(1314)을 조합하고, 본 기술을 적용한 비디오 유닛(1361)으로서 실시할 수도 있다. 어느 쪽의 구성의 경우라도, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
즉, 비디오 프로세서(1332)를 포함하는 것이면 어떤 구성이어도, 비디오 세트(1300)의 경우와 마찬가지로, 화상 데이터를 처리하는 각종 장치에 내장할 수 있다. 예를 들어, 비디오 프로세서(1332), 점선(1341)에 의해 나타내어지는 프로세서, 비디오 모듈(1311), 또는 비디오 유닛(1361)을, 텔레비전 장치(900)(도 84), 휴대 전화기(920)(도 85), 기록 재생 장치(940)(도 86), 촬상 장치(960)(도 87) 등에 내장할 수 있다. 그리고, 본 기술을 적용한 어느 것의 구성을 내장함으로써, 그 장치는, 비디오 세트(1300)의 경우와 마찬가지로, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<제6 응용예: 네트워크 시스템>
또한, 본 기술은, 복수의 장치에 의해 구성되는 네트워크 시스템에도 적용할 수도 있다. 도 91은, 본 기술을 적용한 네트워크 시스템의 개략적인 구성의 일례를 나타내고 있다.
도 91에 도시된 네트워크 시스템(1600)은, 기기끼리가, 네트워크를 통해서 화상(동화상)에 관한 정보를 수수하는 시스템이다. 이 네트워크 시스템(1600)의 클라우드 서비스(1601)는, 자신에게 통신 가능하게 접속되는 컴퓨터(1611), AV(Audio Visual) 기기(1612), 휴대형 정보 처리 단말기(1613), IoT(Internet of Things) 디바이스(1614) 등의 단말기에 대해서, 화상(동화상)에 관한 서비스를 제공하는 시스템이다. 예를 들어, 클라우드 서비스(1601)는, 소위 동화상 배신(온 디맨드나 라이브 배신)과 같은, 화상(동화상)의 콘텐츠의 공급 서비스를 단말기에 제공한다. 또한, 예를 들어 클라우드 서비스(1601)는, 단말기로부터 화상(동화상)의 콘텐츠를 수취하여 보관하는 백업 서비스를 제공한다. 또한, 예를 들어 클라우드 서비스(1601)는, 단말기끼리의 화상(동화상)의 콘텐츠의 수수를 중개하는 서비스를 제공한다.
클라우드 서비스(1601)의 물리 구성은 임의이다. 예를 들어, 클라우드 서비스(1601)는, 동화상을 보존하고, 관리하는 서버, 동화상을 단말기에 배신하는 서버, 동화상을 단말기로부터 취득하는 서버, 유저(단말기)나 과금을 관리하는 서버 등의 각종 서버나, 인터넷이나 LAN 등의 임의의 네트워크를 갖도록 해도 된다.
컴퓨터(1611)는, 예를 들어 퍼스널 컴퓨터, 서버, 워크스테이션 등과 같은 정보 처리 장치에 의해 구성된다. AV 기기(1612)는, 예를 들어 텔레비전 수상기, 하드디스크 리코더, 게임기기, 카메라 등과 같은 화상 처리 장치에 의해 구성된다. 휴대형 정보 처리 단말기(1613)는, 예를 들어 노트북형 퍼스널 컴퓨터, 태블릿 단말기, 휴대 전화기, 스마트폰 등과 같은 휴대형의 정보 처리 장치에 의해 구성된다. IoT 디바이스(1614)는, 예를 들어 기계, 가전, 가구, 그 밖의 물건, IC 태그, 카드형 디바이스 등, 화상에 관한 처리를 행하는 임의의 물체에 의해 구성된다. 이들 단말기는, 모두 통신 기능을 갖고, 클라우드 서비스(1601)에 접속하고(세션을 확립하고), 클라우드 서비스(1601)와 정보의 수수를 행할(즉 통신을 행할) 수 있다. 또한, 각 단말기는, 다른 단말기와 통신을 행할 수도 있다. 단말기 간의 통신은, 클라우드 서비스(1601)를 통해 행하도록 해도 되고, 클라우드 서비스(1601)를 통하지 않고 행하도록 해도 된다.
이상과 같은 네트워크 시스템(1600)에 본 기술을 적용하고, 단말기 사이나, 단말기와 클라우드 서비스(1601)의 사이에서 화상(동화상)의 데이터가 수수될 때, 그 화상 데이터를 각 실시 형태에 있어서 상술한 바와 같이 부호화·복호하도록 해도 된다. 즉, 단말기(컴퓨터(1611) 내지 IoT 디바이스(1614))나 클라우드 서비스(1601)가, 각각, 상술한 화상 부호화 장치(100)이나 화상 복호 장치(200)의 기능을 갖도록 해도 된다. 이와 같이 함으로써, 화상 데이터를 수수하는 단말기(컴퓨터(1611) 내지 IoT 디바이스(1614))나 클라우드 서비스(1601)는, 도 1 내지 도 82를 참조하여 상술한 각 실시 형태와 마찬가지의 효과를 얻을 수 있다.
<기타>
또한, 부호화 데이터(비트 스트림)에 관한 각종 정보는, 부호화 데이터에 다중화되어 전송되거나 또는 기록되도록 해도 되고, 부호화 데이터에 다중화되지 않고, 부호화 데이터와 관련지어진 별개의 데이터로서 전송되거나 또는 기록되도록 해도 된다. 여기서, 「관련짓는다」라는 용어는, 예를 들어 한쪽의 데이터를 처리할 때 다른 쪽의 데이터를 이용할 수 있도록(링크시킬 수 있도록) 함을 의미한다. 즉, 서로 관련지어진 데이터는, 1개의 데이터로서 통합되어도 되고, 각각 개별의 데이터로 해도 된다. 예를 들어, 부호화 데이터(화상)에 관련지어진 정보는, 그 부호화 데이터(화상)와는 다른 전송로상에서 전송되도록 해도 된다. 또한, 예를 들어 부호화 데이터(화상)에 관련지어진 정보는, 그 부호화 데이터(화상)와는 다른 기록 매체(또는 동일한 기록 매체의 다른 기록 에어리어)에 기록되도록 해도 된다. 또한, 이 「관련지음」은, 데이터 전체가 아니라, 데이터의 일부여도 된다. 예를 들어, 화상과 그 화상에 대응하는 정보가, 복수 프레임, 1 프레임, 또는 프레임 내의 일부분 등의 임의의 단위로 서로 관련지어지도록 해도 된다.
또한, 상술한 바와 같이, 본 명세서에 있어서, 「합성하다」, 「다중화하다」, 「부가하다」, 「일체화하다」, 「포함하다」, 「저장하다」, 「집어넣다」, 「꽂아넣다」, 「삽입하다」 등의 용어는, 예를 들어 부호화 데이터와 메타데이터를 1개의 데이터로 통합한다와 같은, 복수의 것을 하나로 통합하는 것을 의미하며, 상술한 「관련짓는다」의 하나의 방법을 의미한다.
또한, 본 기술의 실시 형태는, 상술한 실시 형태로 한정되는 것이 아니라, 본 기술의 요지를 일탈하지 않는 범위에 있어서 다양한 변경이 가능하다.
예를 들어, 본 명세서에 있어서, 시스템이란, 복수의 구성 요소(장치, 모듈(부품) 등)의 집합을 의미하고, 모든 구성 요소가 동일 하우징 중에 있는지 여부는 불문한다. 따라서, 별개의 하우징에 수납되고, 네트워크를 통해 접속되어 있는 복수의 장치 및 1개의 하우징 중에 복수의 모듈이 수납되어 있는 1개의 장치는, 모두 시스템이다.
또한, 예를 들어 1개의 장치(또는 처리부)로서 설명한 구성을 분할하고, 복수의 장치(또는 처리부)로서 구성하도록 해도 된다. 반대로, 이상에 있어서 복수의 장치(또는 처리부)로서 설명한 구성을 통합하여 1개의 장치(또는 처리부)로서 구성되도록 해도 된다. 또한, 각 장치(또는 각 처리부)의 구성에 상술한 이외의 구성을 부가하도록 해도 물론 된다. 또한, 시스템 전체로서의 구성이나 동작이 실질적으로 동일하면, 어떤 장치(또는 처리부)의 구성의 일부를 다른 장치(또는 다른 처리부)의 구성에 포함하도록 해도 된다.
또한, 예를 들어 본 기술은, 1개의 기능을, 네트워크를 통해서 복수의 장치로 분담, 공동하여 처리하는 클라우드 컴퓨팅의 구성을 취할 수 있다.
또한, 예를 들어 상술한 프로그램은, 임의의 장치에 있어서 실행할 수 있다. 그 경우, 그 장치가, 필요한 기능(기능 블록 등)을 갖고, 필요한 정보를 얻을 수 있도록 하면 된다.
또한, 예를 들어 상술한 흐름도에서 설명한 각 스텝은, 1개의 장치에서 실행하는 것 외에, 복수의 장치에서 분담하여 실행할 수 있다. 또한, 1개의 스텝에 복수의 처리가 포함되는 경우에는, 그 1개의 스텝에 포함되는 복수의 처리는, 1개의 장치에서 실행하는 것 외에, 복수의 장치에서 분담하여 실행할 수 있다.
또한, 컴퓨터가 실행하는 프로그램은, 프로그램을 기술하는 스텝의 처리가, 본 명세서에서 설명하는 순서를 따라서 시계열로 실행되도록 해도 되고, 병렬로, 혹은 호출이 행해졌을 때 등의 필요한 타이밍에 개별로 실행되도록 해도 된다. 또한, 이 프로그램을 기술하는 스텝의 처리가, 다른 프로그램의 처리와 병렬로 실행되도록 해도 되고, 다른 프로그램의 처리와 조합하여 실행되도록 해도 된다.
또한, 본 명세서에 있어서 복수 설명한 본 기술은, 모순이 발생하지 않는 한, 각각 독립적으로 단체로 실시할 수 있다. 물론, 임의의 복수의 본 기술을 병용하여 실시할 수도 있다. 예를 들어, 어느 것의 실시 형태에 있어서 설명한 본 기술을, 다른 실시 형태에 있어서 설명한 본 기술과 조합하여 실시할 수도 있다. 또한, 상술한 임의의 본 기술을, 상술하지 않은 다른 기술과 병용하여 실시할 수도 있다.
또한, 본 기술은 이하와 같은 구성도 취할 수 있다.
(1) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는 화상 처리 장치.
(2) 상기 예측 잔차에 대한 변환 처리인 프라이머리 변환을 행하는 프라이머리 변환부와,
상기 프라이머리 변환부에 의해 상기 예측 잔차가 상기 프라이머리 변환되어 얻어지는 프라이머리 변환 계수에 대한 변환 처리인 세컨더리 변환을 행하는 세컨더리 변환부
를 더 구비하고,
상기 클립 처리부는, 상기 세컨더리 변환부에 의해 상기 프라이머리 변환 계수가 상기 세컨더리 변환되어 얻어지는 세컨더리 변환 계수를 클립하도록 구성되는, (1)에 기재된 화상 처리 장치.
(3) 상기 프라이머리 변환은 직교 변환이며,
상기 세컨더리 변환은,
상기 프라이머리 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터에 대한 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 변환 처리인, (1) 또는 (2)에 기재된 화상 처리 장치.
(4) 상기 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부를 더 구비하고,
상기 클립 처리부는, 상기 스케일링부에 의해 스케일링된 상기 1차원의 벡터를 클립하도록 구성되고,
상기 행렬화부는, 상기 클립 처리부에 의해 클립된 상기 1차원의 벡터를 행렬화하도록 구성되는, (1) 내지 (3) 중 어느 하나에 기재된 화상 처리 장치.
(5) 상기 예측 잔차는 변환 블록의 서브블록마다 변환 처리되고,
상기 클립 처리부는, 상기 변환 계수를 서브블록마다 클립하는, (1) 내지 (4) 중 어느 하나에 기재된 화상 처리 장치.
(6) 상기 서브블록은, 4×4의 변환 계수에 의해 구성되는, (1) 내지 (5) 중 어느 하나에 기재된 화상 처리 장치
(7) 상기 상한값은, 215-1이며,
상기 하한값은, -215인, (1) 내지 (6) 중 어느 하나에 기재된 화상 처리 장치.
(8) 상기 클립 처리부에 의해 클립된 상기 변환 계수에 대해서 양자화를 행하는 양자화부와,
상기 양자화부에 의한 상기 변화 계수가 양자화되어 얻어지는 양자화 변환 계수 레벨을 부호화하는 부호화부
를 더 구비하는, (1) 내지 (7) 중 어느 하나에 기재된 화상 처리 장치.
(9) 상기 예측 화상을 생성하는 예측부를 더 구비하는, (1) 내지 (8) 중 어느 하나에 기재된 화상 처리 장치.
(10) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 화상 처리 방법.
(11) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는 화상 처리 장치.
(12) 상기 변환 계수에 대하여 역 세컨더리 변환을 행하는 역 세컨더리 변환부와,
상기 변환 계수가 상기 역 세컨더리 변환되어 얻어지는 프라이머리 변환 계수에 대해서 역 프라이머리 변환을 행하는 역 프라이머리 변환부
를 더 구비하고,
상기 클립 처리부는, 상기 역 세컨더리 변환부에 의해 상기 변환 계수가 상기 역 세컨더리 변환되어 얻어지는 상기 프라이머리 변환 계수를 클립하도록 구성되고,
상기 프라이머리 변환부는, 상기 클립 처리부에 의해 클립된 상기 프라이머리 변환 계수에 대해서 상기 역 프라이머리 변환을 행하도록 구성되는, (11)에 기재된 화상 처리 장치.
(13) 상기 역 세컨더리 변환은,
상기 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터에 대한 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 변환 처리이며,
상기 역 프라이머리 변환은 역직교 변환인, (11) 또는 (12)에 기재된 화상 처리 장치.
(14) 상기 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
를 더 구비하고,
상기 클립 처리부는, 상기 스케일링부에 의해 스케일링된 상기 1차원의 벡터를 클립하도록 구성되고,
상기 행렬화부는, 상기 클립 처리부에 의해 클립된 상기 1차원의 벡터를 행렬화하도록 구성되는, (11) 내지 (13) 중 어느 하나에 기재된 화상 처리 장치.
(15) 상기 클립 처리부는, 상기 변환 계수를 변환 블록의 서브블록마다 클립하는, (11) 내지 (14) 중 어느 하나에 기재된 화상 처리 장치.
(16) 상기 서브블록은, 4×4의 변환 계수에 의해 구성되는, (11) 내지 (15) 중 어느 하나에 기재된 화상 처리 장치.
(17) 상기 상한값은, 215-1이며,
상기 하한값은, -215인, (11) 내지 (16) 중 어느 하나에 기재된 화상 처리 장치.
(18) 부호화 데이터를 복호하는 복호부와,
상기 복호부에 의해, 상기 부호화 데이터가 복호되어 얻어지는 양자화 변환 계수 레벨을 역양자화하여 상기 변환 계수를 얻는 역양자화부
를 더 구비하는, (11) 내지 (17) 중 어느 하나에 기재된 화상 처리 장치.
(19) 상기 예측 화상을 생성하는 예측부를 더 구비하는, (11) 내지 (18) 중 어느 하나에 기재된 화상 처리 장치.
(20) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 화상 처리 방법.
(21) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터의 시프트량을 도출하는 시프트량 도출부와,
상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서, 상기 시프트량 도출부에 의해 도출되는 상기 시프트량에 따른 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
를 구비하는 화상 처리 장치.
(22) 상기 시프트량 도출부는, 상기 변환 계수의 다이내믹 레인지 폭과, 상기 행렬 연산부가 상기 행렬 연산에 사용하는 행렬에 기초하여, 상기 시프트량을 도출하는, (21)에 기재된 화상 처리 장치.
(23) 상기 변환 계수의 다이내믹 레인지 폭은 16인, (21) 또는 (22)에 기재된 화상 처리 장치.
(24) 상기 시프트량 도출부는, 상기 변환 계수의 다이내믹 레인지 폭과, 상기 행렬에 기초하여, 상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 세컨더리 변환 계수의 다이내믹 레인지 상한값을 도출하는, (21) 내지 (23) 중 어느 하나에 기재된 화상 처리 장치.
(25) 상기 시프트량 도출부는, 상기 세컨더리 변환 계수의 다이내믹 레인지 상한값과, 중간 버퍼의 다이내믹 레인지 상한값과의 차에 천장 함수를 사용하여 상기 시프트량을 도출하는, (21) 내지 (24) 중 어느 하나에 기재된 화상 처리 장치.
(26) 상기 중간 버퍼의 다이내믹 레인지 폭은 16인, (21) 내지 (25) 중 어느 하나에 기재된 화상 처리 장치.
(27) 상기 변환 계수를 변환 블록의 서브블록마다 처리되는, (21) 내지 (26) 중 어느 하나에 기재된 화상 처리 장치.
(28) 상기 서브블록은, 4×4의 변환 계수에 의해 구성되는, (21) 내지 (27) 중 어느 하나에 기재된 화상 처리 장치.
(29) 상기 예측 잔차를 프라이머리 변환하는 프라이머리 변환부와,
상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 세컨더리 변환 계수에 대해서 양자화를 행하는 양자화부와,
상기 양자화부에 의해 상기 세컨더리 변화 계수가 양자화되어 얻어지는 양자화 변환 계수 레벨을 부호화하는 부호화부
를 더 구비하고,
상기 래스터라이즈부는, 상기 프라이머리 변환부에 의해 상기 예측 잔차가 상기 프라이머리 변환되어 얻어지는 프라이머리 변환 계수를 1차원의 벡터로 변환하도록 구성되는, (21) 내지 (28) 중 어느 하나에 기재된 화상 처리 장치.
(30) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터의 시프트량을 도출하고,
상기 1차원의 벡터에 대한 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서, 도출되는 상기 시프트량에 따른 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 화상 처리 방법.
(31) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터의 시프트량을 도출하는 시프트량 도출부와,
상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서, 상기 시프트량 도출부에 의해 도출되는 상기 시프트량에 따른 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
를 구비하는 화상 처리 장치.
(32) 상기 시프트량 도출부는, 상기 변환 계수의 다이내믹 레인지 폭과, 상기 행렬 연산부가 상기 행렬 연산에 사용하는 행렬에 기초하여, 상기 시프트량을 도출하는, (31)에 기재된 화상 처리 장치.
(33) 상기 변환 계수의 다이내믹 레인지 폭은 16인, (31) 또는 (32)에 기재된 화상 처리 장치.
(34) 상기 시프트량 도출부는, 상기 변환 계수의 다이내믹 레인지 폭과, 상기 행렬에 기초하여, 상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 프라이머리 변환 계수의 다이내믹 레인지 상한값을 도출하는, (31) 내지 (33) 중 어느 하나에 기재된 화상 처리 장치.
(35) 상기 시프트량 도출부는, 상기 프라이머리 변환 계수의 다이내믹 레인지 상한값과, 중간 버퍼의 다이내믹 레인지 상한값의 차에 천장 함수를 사용하여 상기 시프트량을 도출하는, (31) 내지 (34) 중 어느 하나에 기재된 화상 처리 장치.
(36) 상기 중간 버퍼의 다이내믹 레인지 폭은 16인, (31) 내지 (35) 중 어느 하나에 기재된 화상 처리 장치.
(37) 상기 변환 계수를 변환 블록의 서브블록마다 처리되는, (31) 내지 (36) 중 어느 하나에 기재된 화상 처리 장치.
(38) 상기 서브블록은, 4×4의 변환 계수에 의해 구성되는, (31) 내지 (37) 중 어느 하나에 기재된 화상 처리 장치.
(39) 부호화 데이터를 복호하는 복호부와,
상기 복호부에 의해 상기 부호화 데이터가 복호되어 얻어지는 양자화 변환 계수 레벨을 역양자화하는 역양자화부와,
상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 프라이머리 변환 계수를 역 프라이머리 변환하는 역 프라이머리 변환부
를 더 구비하고,
상기 래스터라이즈부는, 상기 역양자화부에 의해 상기 양자화 변환 계수 레벨이 상기 역양자화되어 얻어지는 세컨더리 변환 계수를 1차원의 벡터로 변환하도록 구성되는, (31) 내지 (38) 중 어느 하나에 기재된 화상 처리 장치.
(40) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터의 시프트량을 도출하고,
상기 1차원의 벡터에 대한 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서, 도출되는 상기 시프트량에 따른 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 화상 처리 방법.
(41) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
를 구비하는 화상 처리 장치.
(42) 상기 행렬 연산부는, 제1 직교 행렬 내지 제4 직교 행렬, 및 제1 치환 행렬 내지 제3 치환 행렬을 사용하여, 상기 래스터라이즈부에 의해 상기 변환 계수가 변환되어 얻어진 상기 1차원의 벡터인 제1행 벡터에 대해서 상기 행렬 연산을 행하고, 제2행 벡터를 구하는, (41)에 기재된 화상 처리 장치.
(43) 상기 행렬 연산부는,
상기 제1 직교 행렬과 상기 제1행 벡터와의 행렬 곱인 제1 행렬 곱을 구하는 제1 회전 조작부와,
상기 제1 치환 행렬과 상기 제1 행렬 곱과의 행렬 곱인 제2 행렬 곱을 구하는 제1 치환 조작부와,
상기 제2 직교 행렬과 상기 제2 행렬 곱과의 행렬 곱인 제3 행렬 곱을 구하는 제2 회전 조작부와,
상기 제2 치환 행렬과 상기 제1 치환 행렬의 전치 행렬과 상기 제3 행렬 곱과의 행렬 곱인 제4 행렬 곱을 구하는 제2 치환 조작부와,
상기 제3 직교 행렬과 상기 제4 행렬 곱과의 행렬 곱인 제5 행렬 곱을 구하는 제3 회전 조작부와,
상기 제3 치환 행렬과 상기 제2 치환 행렬의 전치 행렬과 상기 제5 행렬 곱과의 행렬 곱인 제6 행렬 곱을 구하는 제3 치환 조작부와,
상기 제4 직교 행렬과 상기 제6 행렬 곱과의 행렬 곱인 제7 행렬 곱을 구하는 제4 회전 조작부와,
상기 제3 치환 행렬의 전치 행렬과 상기 제7 행렬 곱과의 행렬 곱을 구함으로써, 상기 제2행 벡터를 구하는 제4 치환 조작부
를 구비하는, (41) 또는 (42)에 기재된 화상 처리 장치.
(44) 상기 제1 직교 행렬 내지 상기 제4 직교 행렬은, 각각, 대각 성분으로 서로 다른 8개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, (41) 내지 (43) 중 어느 하나에 기재된 화상 처리 장치.
(45) 상기 제1 치환 행렬 내지 상기 제3 치환 행렬은, 치환 대상의 요소를 서로 다른 순서대로 재배열하는 치환 행렬인, (41) 내지 (44) 중 어느 하나에 기재된 화상 처리 장치.
(46) 상기 제1 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제2번째의 요소, 제1번째의 요소, 제3번째의 요소, 제4번째의 요소, 제6번째의 요소, 제5번째의 요소, 제7번째의 요소, 제8번째의 요소, 제10번째의 요소, 제9번째의 요소, 제11번째의 요소, 제12번째의 요소, 제14번째의 요소, 제13번째의 요소, 제15번째의 요소의 순서대로 재배열하고,
상기 제2 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제4번째의 요소, 제2번째의 요소, 제6번째의 요소, 제1번째의 요소, 제5번째의 요소, 제3번째의 요소, 제7번째의 요소, 제8번째의 요소, 제12번째의 요소, 제10번째의 요소, 제14번째의 요소, 제9번째의 요소, 제13번째의 요소, 제11번째의 요소, 제15번째의 요소의 순서대로 재배열하고,
상기 제3 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제8번째의 요소, 제2번째의 요소, 제10번째의 요소, 제4번째의 요소, 제12번째의 요소, 제6번째의 요소, 제14번째의 요소, 제1번째의 요소, 제9번째의 요소, 제3번째의 요소, 제11번째의 요소, 제5번째의 요소, 제13번째의 요소, 제7번째의 요소, 제15번째의 요소의 순서대로 재배열하는, (41) 내지 (45) 중 어느 하나에 기재된 화상 처리 장치.
(47) 상기 예측 잔차를 프라이머리 변환하는 프라이머리 변환부를 더 구비하고,
상기 래스터라이즈부는, 상기 프라이머리 변환부에 의해 상기 예측 잔차가 상기 프라이머리 변환되어 얻어지는 프라이머리 변환 계수를 1차원의 벡터로 변환하도록 구성되는, (41) 내지 (46) 중 어느 하나에 기재된 화상 처리 장치.
(48) 상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 세컨더리 변환 계수에 대해서 양자화를 행하는 양자화부와,
상기 양자화부에 의해 상기 세컨더리 변화 계수가 양자화되어 얻어지는 양자화 변환 계수 레벨을 부호화하는 부호화부
를 더 구비하는, (41) 내지 (47) 중 어느 하나에 기재된 화상 처리 장치.
(49) 상기 예측 화상을 생성하는 예측부를 더 구비하는, (41) 내지 (48) 중 어느 하나에 기재된 화상 처리 장치.
(50) 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 화상 처리 방법.
(51) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
상기 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하는 행렬 연산부와,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서 스케일링을 행하는 스케일링부와,
스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
를 구비하는 화상 처리 장치.
(52) 상기 행렬 연산부는, 제1 직교 행렬 내지 제4 직교 행렬, 및 제1 치환 행렬 내지 제3 치환 행렬을 사용하여, 상기 래스터라이즈부에 의해 상기 변환 계수가 변환되어 얻어진 상기 1차원의 벡터인 제1행 벡터에 대해서 상기 행렬 연산을 행하고, 제2행 벡터를 구하는, (51)에 기재된 화상 처리 장치.
(53) 상기 행렬 연산부는,
상기 제4 직교 행렬의 전치 행렬과 상기 제1행 벡터와의 행렬 곱인 제1 행렬 곱을 구하는 제1 회전 조작부와,
상기 제2 치환 행렬과 상기 제3 치환 행렬의 전치 행렬과 상기 제1 행렬 곱과의 행렬 곱인 제2 행렬 곱을 구하는 제1 치환 조작부와,
상기 제3 직교 행렬의 전치 행렬과 상기 제2 행렬 곱과의 행렬 곱인 제3 행렬 곱을 구하는 제2 회전 조작부와,
상기 제1 치환 행렬과 상기 제2 치환 행렬의 전치 행렬과 상기 제3 행렬 곱과의 행렬 곱인 제4 행렬 곱을 구하는 제2 치환 조작부와,
상기 제2 직교 행렬의 전치 행렬과 상기 제4 행렬 곱과의 행렬 곱인 제5 행렬 곱을 구하는 제3 회전 조작부와,
상기 제1 치환 행렬의 전치 행렬과 상기 제5 행렬 곱과의 행렬 곱인 제6 행렬 곱을 구하는 제3 치환 조작부와,
상기 제1 직교 행렬의 전치 행렬과 상기 제6 행렬 곱과의 행렬 곱을 구함으로써, 상기 제2행 벡터를 구하는 제4 회전 조작부
를 구비하는, (51) 또는 (52)에 기재된 화상 처리 장치.
(54) 상기 제1 직교 행렬 내지 상기 제4 직교 행렬은, 각각, 대각 성분으로 서로 다른 8개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, (51) 내지 (53) 중 어느 하나에 기재된 화상 처리 장치.
(55) 상기 제1 치환 행렬 내지 상기 제3 치환 행렬은, 치환 대상의 요소를 서로 다른 순서대로 재배열하는 치환 행렬인, (51) 내지 (54) 중 어느 하나에 기재된 화상 처리 장치.
(56) 상기 제1 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제2번째의 요소, 제1번째의 요소, 제3번째의 요소, 제4번째의 요소, 제6번째의 요소, 제5번째의 요소, 제7번째의 요소, 제8번째의 요소, 제10번째의 요소, 제9번째의 요소, 제11번째의 요소, 제12번째의 요소, 제14번째의 요소, 제13번째의 요소, 제15번째의 요소의 순서대로 재배열하고,
상기 제2 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제4번째의 요소, 제2번째의 요소, 제6번째의 요소, 제1번째의 요소, 제5번째의 요소, 제3번째의 요소, 제7번째의 요소, 제8번째의 요소, 제12번째의 요소, 제10번째의 요소, 제14번째의 요소, 제9번째의 요소, 제13번째의 요소, 제11번째의 요소, 제15번째의 요소의 순서대로 재배열하고,
상기 제3 치환 행렬은, 상기 치환 대상의 제0번째 내지 제15번째의 각 요소를, 제0번째의 요소, 제8번째의 요소, 제2번째의 요소, 제10번째의 요소, 제4번째의 요소, 제12번째의 요소, 제6번째의 요소, 제14번째의 요소, 제1번째의 요소, 제9번째의 요소, 제3번째의 요소, 제11번째의 요소, 제5번째의 요소, 제13번째의 요소, 제7번째의 요소, 제15번째의 요소의 순서대로 재배열하는, (51) 내지 (55) 중 어느 하나에 기재된 화상 처리 장치.
(57) 부호화 데이터를 복호하는 복호부와,
상기 복호부에 의해 상기 부호화 데이터가 복호되어 얻어지는 양자화 변환 계수 레벨을 역양자화하는 역양자화부
를 더 구비하고,
상기 래스터라이즈부는, 상기 역양자화부에 의해 상기 양자화 변환 계수 레벨이 상기 역양자화되어 얻어지는 세컨더리 변환 계수를 1차원의 벡터로 변환하도록 구성되는, (51) 내지 (56) 중 어느 하나에 기재된 화상 처리 장치.
(58) 상기 행렬화부에 의해 상기 1차원의 벡터가 행렬화되어 얻어지는 프라이머리 변환 계수를 역 프라이머리 변환하는 역 프라이머리 변환부를 더 구비하는, (51) 내지 (57) 중 어느 하나에 기재된 화상 처리 장치.
(59) 상기 예측 화상을 생성하는 예측부를 더 구비하는, (51) 내지 (58) 중 어느 하나에 기재된 화상 처리 장치.
(60) 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를 1차원의 벡터로 변환하고,
상기 1차원의 벡터에 대해서 복수회의 행렬 곱으로 이루어지는 행렬 연산을 행하고,
상기 행렬 연산이 행해진 상기 1차원의 벡터에 대해서 스케일링을 행하고,
스케일링된 상기 1차원의 벡터를 행렬화하는 화상 처리 방법.
(61) 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는 변환부를 구비하는 화상 처리 장치.
(62) 상기 직교 행렬 Ti는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi·Pi)으로 이루어지는, (61)에 기재된 화상 처리 장치.
(63) 상기 변환부는, 상기 제i 직교 행렬 Ti와 제i-1(i>0)의 행 벡터 Xi -1의 전치 행렬 Xi-1 T와의 행렬 곱 Xi를 도출하는 (62)에 기재된 화상 처리 장치.
(64) 상기 직교 행렬 Fi는, 대각 성분에 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, (62) 또는 (63)에 기재된 화상 처리 장치.
(65) 상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스가 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬인, (62) 내지 (64) 중 어느 하나에 기재된 화상 처리 장치.
(66) 상기 N은 4인, (61) 내지 (65) 중 어느 하나에 기재된 화상 처리 장치.
(67) 상기 N은 6인, (61) 내지 (66) 중 어느 하나에 기재된 화상 처리 장치.
(68) 요소 수 2N점의 1차원의 벡터로부터 이루어지는 상기 행 벡터 X0을 생성하는 래스터라이즈부를 더 구비하고,
상기 변환부는, 상기 래스터라이즈부에 의해 얻어진 상기 행 벡터 X0과 상기 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (61) 내지 (67) 중 어느 하나에 기재된 화상 처리 장치.
(69) 상기 래스터라이즈부는, 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 요소 수 2N점의 1차원의 벡터로부터 이루어지는 상기 행 벡터 X0으로 변환하는, (68)에 기재된 화상 처리 장치.
(70) 상기 래스터라이즈부는, 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차를, 요소 수 2N점의 1차원의 벡터로 이루어지는 상기 행 벡터 X0으로 변환하는, (68) 또는 (69)에 기재된 화상 처리 장치.
(71) 참조 화상이 커런트 블록의 예측 화상과의 잔차의 집합으로 이루어지는 학습 샘플을 사용하여, 상기 직교 행렬 R을 도출하는 직교 행렬 도출부를 더 구비하고,
상기 변환부는, 상기 래스터라이즈부에 의해 얻어진 상기 행 벡터 X0과, 상기 직교 행렬 도출부에 의해 도출된 상기 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (70)에 기재된 화상 처리 장치.
(72) 상기 학습 샘플을 도출하는 학습 샘플 도출부를 더 구비하고,
상기 직교 행렬 도출부는, 상기 학습 샘플 도출부에 의해 도출된 상기 학습 샘플을 사용해서 상기 직교 행렬 R을 도출하는, (71)에 기재된 화상 처리 장치.
(73) 상기 학습 샘플 도출부는, 상기 커런트 블록의 예측 화상과, 상기 참조 화상과의 비교를 소정의 사이즈의 템플릿 단위로 행하고, 상기 비교에 있어서 상기 커런트 블록의 예측 화상과 유사하다고 판정된 상기 참조 화상과 상기 커런트 블록의 예측 화상과의 잔차를 구함으로써 상기 학습 샘플을 도출하는, (72)에 기재된 화상 처리 장치.
(74) 상기 변환부는, 변환 블록 중 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (61) 내지 (73) 중 어느 하나에 기재된 화상 처리 장치.
(75) 상기 변환부는, 저주파측의 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (74)에 기재된 화상 처리 장치.
(76) 상기 변환부는, 스캔순에 있어서 선두로부터 연속하는 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (75)에 기재된 화상 처리 장치.
(77) 상기 변환부는, 상기 스캔순이 경사 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록에 대하여, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로의 변환을 행하는, (76)에 기재된 화상 처리 장치.
(78) 상기 변환부는, 상기 스캔순이 수평 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 최상단의 좌측부터 3번째의 4×4 서브블록, 최상단의 좌측부터 4번째의 4×4 서브블록에 대해서, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로 변환을 행하는, (76) 또는 (77)에 기재된 화상 처리 장치.
(79) 상기 변환부는, 상기 스캔순이 수직 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록, 위에서 4단째의 좌측 단부의 4×4 서브블록에 대하여, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로의 변환을 행하는, (76) 내지 (78) 중 어느 하나에 기재된 화상 처리 장치.
(80) 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는, 화상 처리 방법.
(81) 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는 역변환부를 구비하는 화상 처리 장치.
(82) 상기 직교 행렬 IR은, 상기 직교 행렬 Ti의 전치 행렬 Ti T에 의해 구성되고,
상기 직교 행렬 Ti T는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi의 전치 행렬 Fi T와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi T·Pi)으로 이루어지는, (81)에 기재된 화상 처리 장치.
(83) 상기 역변환부는, 상기 제i 직교 행렬 Ti의 전치 행렬 Ti T와 제i-1(i>0)의 행 벡터 Xi -1의 전치 행렬 Xi -1 T와의 행렬 곱 Xi를 도출하는, (82)에 기재된 화상 처리 장치.
(84) 상기 직교 행렬 Fi는, 대각 성분으로 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, (82) 또는 (83)에 기재된 화상 처리 장치.
(85) 상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스의 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬인, (82) 내지 (84) 중 어느 하나에 기재된 화상 처리 장치.
(86) 상기 N은 4인, (81) 내지 (85) 중 어느 하나에 기재된 화상 처리 장치.
(87) 상기 N은 6인, (81) 내지 (86) 중 어느 하나에 기재된 화상 처리 장치.
(88) 상기 역변환부는, 역 세컨더리 변환으로서 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는 (81) 내지 (87) 중 어느 하나에 기재된 화상 처리 장치.
(89) 상기 역변환부는, SDT(Signal Dependent Transform)로서 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는, (81) 내지 (88) 중 어느 하나에 기재된 화상 처리 장치.
(90) 참조 화상과 커런트 블록의 예측 화상과의 잔차의 집합으로 이루어지는 학습 샘플을 사용하여, 상기 직교 행렬 IR을 도출하는 직교 행렬 도출부를 더 구비하고,
상기 역변환부는, 상기 행 벡터 X0과, 상기 직교 행렬 도출부에 의해 도출된 상기 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (89)에 기재된 화상 처리 장치.
(91) 상기 학습 샘플을 도출하는 학습 샘플 도출부를 더 구비하고,
상기 직교 행렬 도출부는, 상기 학습 샘플 도출부에 의해 도출된 상기 학습 샘플을 사용해서 상기 직교 행렬 IR을 도출하는, 화상 처리 장치.
(92) 상기 학습 샘플 도출부는, 상기 커런트 블록의 예측 화상과, 상기 참조 화상과의 비교를 소정의 사이즈의 템플릿 단위로 행하고, 상기 비교에 있어서 상기 커런트 블록의 예측 화상과 유사하다고 판정된 상기 참조 화상과 상기 커런트 블록의 예측 화상과의 잔차를 구함으로써 상기 학습 샘플을 도출하는, (91)에 기재된 화상 처리 장치.
(93) 상기 직교 행렬 도출부는, 직교 행렬 R을 사용해서 상기 직교 행렬 IR을 도출하는, (90) 내지 (92) 중 어느 하나에 기재된 화상 처리 장치.
(94) 상기 역변환부는, 변환 블록 중 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (81) 내지 (93) 중 어느 하나에 기재된 화상 처리 장치.
(95) 상기 역변환부는, 저주파측의 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (94)에 기재된 화상 처리 장치.
(96) 상기 역변환부는, 스캔순에 있어서 선두로부터 연속하는 일부의 서브블록에 대해서만, 상기 행 벡터 X0을 상기 행 벡터 Xn으로 변환하는, (95)에 기재된 화상 처리 장치.
(97) 상기 역변환부는, 상기 스캔순이 경사 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록에 대하여, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로의 변환을 행하는, (96)에 기재된 화상 처리 장치.
(98) 상기 역변환부는, 상기 스캔순이 수평 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 최상단의 좌측부터 2번째의 4×4 서브블록, 최상단의 좌측부터 3번째의 4×4 서브블록, 최상단의 좌측부터 4번째의 4×4 서브블록에 대하여, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로의 변환을 행하는, (96) 또는 (97)에 기재된 화상 처리 장치.
(99) 상기 역변환부는, 상기 스캔순이 수직 방향인 경우, 상기 변환 블록의 좌측 상단부 4×4 서브블록, 위에서 2단째의 좌측 단부의 4×4 서브블록, 위에서 3단째의 좌측 단부의 4×4 서브블록, 위에서 4단째의 좌측 단부의 4×4 서브블록에 대해서, 이 순서대로, 상기 행 벡터 X0으로부터 상기 행 벡터 Xn으로의 변환을 행하는, (96) 내지 (98) 중 어느 하나에 기재된 화상 처리 장치.
(100) 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는, 화상 처리 방법.
100: 화상 부호화 장치
101: 제어부
111: 연산부
112: 변환부
113: 양자화부
114: 부호화부
115: 역양자화부
116: 역변환부
117: 연산부
118: 프레임 메모리
119: 예측부
131: 프라이머리 변환부
132: 세컨더리 변환부
141: 래스터라이즈부
142: 행렬 연산부
143: 스케일링부
144: 행렬화부
145: 클립 처리부
146: 세컨더리 변환 선택부
200: 화상 복호 장치
211: 복호부
212: 역양자화부
213: 역변환부
214: 연산부
215: 프레임 메모리
216: 예측부
231: 역 세컨더리 변환부
232: 역 프라이머리 변환부
241: 래스터라이즈부
242: 행렬 연산부
243: 스케일링부
244: 행렬화부
245: 클립 처리부
246: 역 세컨더리 변환 선택부
301: 시프트량 도출부
302: 스케일링부
311: 시프트량 도출부
312: 스케일링부
421: 행렬 연산부
431: 회전 조작부
432: 치환 조작부
433: 회전 조작부
434: 치환 조작부
435: 회전 조작부
436: 치환 조작부
437: 회전 조작부
438: 치환 조작부
451: 행렬 연산부
461: 치환 조작부
462: 회전 조작부
463: 치환 조작부
464: 회전 조작부
465: 치환 조작부
466: 회전 조작부
467: 치환 조작부
468: 회전 조작부
501: 회전 조작부
511: 회전 조작부
521: 의사 코드
522: 서브셋
523: 제1 클래스
524: 제2 클래스
5302: N점 HyGT부
531: 회전 조작부
540: 2N점 역 HyGT부
541: 회전 조작부
561: 세컨더리 변환 선택부
562: 행렬 연산부
563: 64점 HyGT부
564: 회전 조작부
571: 역 세컨더리 변환 선택부
572: 행렬 연산부
573: 64점 역 HyGT부
574: 회전 조작부
601: 스위치
602: 스위치
603: SDT부
611: 학습 샘플 도출부
612: 2N점 HyGT 도출부
613: 래스터라이즈부
614: 2N점 HyGT부
615: 스케일링부
616: 행렬화부
621: 템플릿 매칭부
622: 잔차 도출부
651: 스위치
652: 스위치
653: 역 SDT부
661: 학습 샘플 도출부
662: 2N점 역 HyGT 도출부
663: 래스터라이즈부
664: 2N점 역 HyGT부
665: 스케일링부
666: 행렬화부
671: 템플릿 매칭부
672: 잔차 도출부
681: 2N점 역 HyGT 도출부

Claims (20)

  1. 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는, 화상 처리 장치.
  2. 제1항에 있어서,
    상기 예측 잔차에 대한 변환 처리인 프라이머리 변환을 행하는 프라이머리 변환부와,
    상기 프라이머리 변환부에 의해 상기 예측 잔차가 상기 프라이머리 변환되어 얻어지는 프라이머리 변환 계수에 대한 변환 처리인 세컨더리 변환을 행하는 세컨더리 변환부
    를 더 구비하고,
    상기 클립 처리부는, 상기 세컨더리 변환부에 의해 상기 프라이머리 변환 계수가 상기 세컨더리 변환되어 얻어지는 세컨더리 변환 계수를 클립하도록 구성되는, 화상 처리 장치.
  3. 제1항에 있어서,
    상기 변환 계수를 1차원의 벡터로 변환하는 래스터라이즈부와,
    상기 1차원의 벡터에 대한 행렬 연산을 행하는 행렬 연산부와,
    상기 행렬 연산이 행해진 상기 1차원의 벡터의 스케일링을 행하는 스케일링부와,
    스케일링된 상기 1차원의 벡터를 행렬화하는 행렬화부
    를 더 구비하고,
    상기 클립 처리부는, 상기 스케일링부에 의해 스케일링된 상기 1차원의 벡터를 클립하도록 구성되고,
    상기 행렬화부는, 상기 클립 처리부에 의해 클립된 상기 1차원의 벡터를 행렬화하도록 구성되는, 화상 처리 장치.
  4. 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 변환 처리되어 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는, 화상 처리 방법.
  5. 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는 클립 처리부를 구비하는, 화상 처리 장치.
  6. 역변환 처리함으로써 화상과 상기 화상의 예측 화상과의 차분인 예측 잔차가 얻어지는 변환 계수를, 소정의 상한값 혹은 하한값 또는 그 양쪽에서 클립하는, 화상 처리 방법.
  7. 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는 변환부를 구비하는, 화상 처리 장치.
  8. 제7항에 있어서,
    상기 직교 행렬 Ti는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi·Pi)으로 이루어지는, 화상 처리 장치.
  9. 제8항에 있어서,
    상기 변환부는, 상기 제i 직교 행렬 Ti와 제i-1(i>0)의 행 벡터 Xi -1의 전치 행렬 Xi -1 T와의 행렬 곱 Xi를 도출하는, 화상 처리 장치.
  10. 제8항에 있어서,
    상기 직교 행렬 Fi는, 대각 성분에 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, 화상 처리 장치.
  11. 제8항에 있어서,
    상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스의 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬인, 화상 처리 장치.
  12. 제7항에 있어서,
    상기 N은 4 또는 6인, 화상 처리 장치.
  13. 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 변환하는, 화상 처리 방법.
  14. 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는 역변환부를 구비하는, 화상 처리 장치.
  15. 제14항에 있어서,
    상기 직교 행렬 IR은, 상기 직교 행렬 Ti의 전치 행렬 Ti T에 의해 구성되고,
    상기 직교 행렬 Ti T는, 제i 치환 행렬 Pi의 전치 행렬 Pi T와, 제i 직교 행렬 Fi의 전치 행렬 Fi T와, 제i 치환 행렬 Pi와의 행렬 곱(Pi T·Fi T·Pi)으로 이루어지는 것을 구비하는, 화상 처리 장치.
  16. 제15항에 있어서,
    상기 역변환부는, 상기 제i 직교 행렬 Ti의 전치 행렬 Ti T와 제i-1(i>0)의 행 벡터 Xi-1의 전치 행렬 Xi-1 T와의 행렬 곱 Xi를 도출하는 화상 처리 장치.
  17. 제15항에 있어서,
    상기 직교 행렬 Fi는, 대각 성분으로 서로 다른 2N-1개의 2×2회전 행렬을 갖고, 그 밖의 요소는 0인 소행렬인, 화상 처리 장치.
  18. 제15항에 있어서,
    상기 치환 행렬 Pi는, 순방향으로 2i개의 요소로 이루어지는 N-i+1개의 서브셋으로 분할하고, 각 서브셋 j의 좌측 절반의 요소군을 제1 클래스로 하고, 우측 절반의 요소군을 제2 클래스로 하고, 상기 제1 클래스의 홀수 번째의 요소 K를 상기 제2 클래스의 대응하는 홀수 번째 L의 요소의 우측 옆의 짝수 번째의 요소 M으로 교체함으로써 도출되는 행렬인, 화상 처리 장치.
  19. 제14항에 있어서,
    상기 N은 4 또는 6인 것을 구비하는, 화상 처리 장치.
  20. 요소 수 2N점의 행 벡터 X0(N은 자연수)과, N개의 2N×2N의 직교 행렬 Ti(i=1, 2, …, N)로 구성되는 직교 행렬 R의 역행렬인 직교 행렬 IR과의 행렬 곱을 도출함으로써, 상기 행 벡터 X0을 요소 수 2N점의 행 벡터 Xn으로 역변환하는, 화상 처리 방법.
KR1020187031808A 2016-05-13 2017-04-28 화상 처리 장치 및 방법 KR20190008203A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227013436A KR20220053702A (ko) 2016-05-13 2017-04-28 화상 처리 장치 및 방법

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JPJP-P-2016-097171 2016-05-13
JP2016097171 2016-05-13
JP2016193686 2016-09-30
JPJP-P-2016-193686 2016-09-30
PCT/JP2017/016987 WO2017195666A1 (ja) 2016-05-13 2017-04-28 画像処理装置および方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227013436A Division KR20220053702A (ko) 2016-05-13 2017-04-28 화상 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20190008203A true KR20190008203A (ko) 2019-01-23

Family

ID=60267020

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227013436A KR20220053702A (ko) 2016-05-13 2017-04-28 화상 처리 장치 및 방법
KR1020187031808A KR20190008203A (ko) 2016-05-13 2017-04-28 화상 처리 장치 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227013436A KR20220053702A (ko) 2016-05-13 2017-04-28 화상 처리 장치 및 방법

Country Status (6)

Country Link
US (1) US11368720B2 (ko)
EP (2) EP4300968A1 (ko)
JP (3) JP6868785B2 (ko)
KR (2) KR20220053702A (ko)
CN (1) CN109076242B (ko)
WO (1) WO2017195666A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020159316A1 (ko) * 2019-02-01 2020-08-06 엘지전자 주식회사 이차 변환에 기반한 영상 코딩 방법 및 그 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220053702A (ko) * 2016-05-13 2022-04-29 소니그룹주식회사 화상 처리 장치 및 방법
KR102604680B1 (ko) * 2017-12-21 2023-11-21 엘지전자 주식회사 선택적 변환에 기반한 영상 코딩 방법 및 그 장치
JP2021517795A (ja) * 2018-04-01 2021-07-26 エルジー エレクトロニクス インコーポレイティド 分割されたブロックに2次変換を適用して、ビデオ信号を処理する方法及び装置
HUE063982T2 (hu) * 2018-04-01 2024-02-28 Lg Electronics Inc Videojel feldolgozás csökkentett másodlagos transzformáció használatával
JP2021141348A (ja) * 2018-06-01 2021-09-16 ソニーグループ株式会社 画像処理装置および方法
CN112655216B (zh) 2018-07-06 2023-10-24 Lg电子株式会社 基于变换的图像编码方法及装置
CN114928745B (zh) * 2018-09-02 2024-04-19 Lg电子株式会社 信号编解码方法、计算机可读存储介质和数据传输方法
US11796617B2 (en) * 2019-01-04 2023-10-24 University Of Cincinnati System and method for reconstruction of magnetic resonance images acquired with partial Fourier acquisition
CN113545087A (zh) * 2019-03-11 2021-10-22 Oppo广东移动通信有限公司 预测值的确定方法、编码器以及计算机存储介质
WO2020216296A1 (en) * 2019-04-23 2020-10-29 Beijing Bytedance Network Technology Co., Ltd. Clipping operation in secondary transform based video processing
CN113841401B (zh) 2019-05-10 2022-11-25 北京字节跳动网络技术有限公司 用于视频处理的二次变换矩阵的选择
WO2020244656A1 (en) * 2019-06-07 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Conditional signaling of reduced secondary transform in video bitstreams
WO2020253642A1 (en) * 2019-06-15 2020-12-24 Beijing Bytedance Network Technology Co., Ltd. Block size dependent use of secondary transforms in coded video
JP7422858B2 (ja) 2019-08-03 2024-01-26 北京字節跳動網絡技術有限公司 ビデオ処理方法、装置、記憶媒体及び記憶方法
WO2021032045A1 (en) 2019-08-17 2021-02-25 Beijing Bytedance Network Technology Co., Ltd. Context modeling of side information for reduced secondary transforms in video
CN117336482A (zh) * 2019-08-20 2024-01-02 北京字节跳动网络技术有限公司 变换跳过模式的信令通知
CN115066899A (zh) * 2019-12-02 2022-09-16 抖音视界有限公司 编解码视频的可分二次变换处理
JP2021150788A (ja) * 2020-03-18 2021-09-27 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999060772A2 (en) * 1998-05-20 1999-11-25 Koninklijke Philips Electronics N.V. Encoding block-organized data
US7185037B2 (en) * 2001-08-23 2007-02-27 Texas Instruments Incorporated Video block transform
JP2004179687A (ja) * 2002-11-22 2004-06-24 Toshiba Corp 動画像符号化/復号化方法及び装置
ITMI20031128A1 (it) * 2003-06-05 2004-12-06 St Microelectronics Srl Metodo ed apparato per decodificare immagini digitali
US20050281332A1 (en) * 2004-06-22 2005-12-22 Wai-Ming Lai Transform coefficient decoding
US20060002468A1 (en) * 2004-06-22 2006-01-05 Minhua Zhou Frame storage method
US8631060B2 (en) 2007-12-13 2014-01-14 Qualcomm Incorporated Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures
US8577159B2 (en) * 2010-09-14 2013-11-05 Blackberry Limited Methods and devices for data compression with adaptive filtering in the transform domain
US9824066B2 (en) 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
JP2012244397A (ja) * 2011-05-19 2012-12-10 Sony Corp 画像処理装置および方法
EP2902918A1 (en) * 2011-06-30 2015-08-05 Samsung Electronics Co., Ltd Video decoding method restricting the range of intermediate decoding values
US8792550B2 (en) * 2011-08-04 2014-07-29 Qualcomm Incorporated Color/gray patch prevention for video coding
JP6157114B2 (ja) * 2012-12-28 2017-07-05 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
GB2513111A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
JP6294489B2 (ja) * 2013-09-06 2018-03-14 エルジー エレクトロニクス インコーポレイティド デジタル放送システムにおける広域明るさ表現のための超高画質放送信号送受信方法及び装置
KR101670208B1 (ko) * 2013-10-11 2016-10-27 텔레폰악티에볼라겟엘엠에릭슨(펍) 비디오 비트스트림을 트랜스코딩하기 위한 방법 및 어렌지먼트
GB2521828A (en) * 2013-12-23 2015-07-08 Sony Corp Data encoding and decoding
US9930348B2 (en) * 2014-03-14 2018-03-27 Qualcomm Incorporated Coefficient level coding in a video coding process
US9516345B2 (en) * 2014-03-17 2016-12-06 Qualcomm Incorporated Systems and methods for low complexity forward transforms using mesh-based calculations
CN105960802B (zh) * 2014-10-08 2018-02-06 微软技术许可有限责任公司 切换色彩空间时对编码和解码的调整
WO2017075804A1 (en) * 2015-11-06 2017-05-11 Microsoft Technology Licensing, Llc Flexible reference picture management for video encoding and decoding
US10390048B2 (en) 2016-02-15 2019-08-20 Qualcomm Incorporated Efficient transform coding using optimized compact multi-pass transforms
EP3453181A4 (en) 2016-05-04 2019-05-01 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR ENCODING TRANSFORMED DATA
KR20220053702A (ko) * 2016-05-13 2022-04-29 소니그룹주식회사 화상 처리 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer Ohm, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 2", JVET-B1001_ v3, Joint Video Exploration Team(JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016
X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, R.Joshi, "TU-level non-separable secondary transform", JVET-B0059, Joint Video Exploration Team (JVET) of ITU-T SG16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020159316A1 (ko) * 2019-02-01 2020-08-06 엘지전자 주식회사 이차 변환에 기반한 영상 코딩 방법 및 그 장치
CN113302942A (zh) * 2019-02-01 2021-08-24 Lg电子株式会社 基于二次变换的图像编码方法及其设备
US11284082B2 (en) 2019-02-01 2022-03-22 Lg Electronics Inc. Image coding method based on secondary transform and apparatus therefor
US11632551B2 (en) 2019-02-01 2023-04-18 Lg Electronics Inc. Image coding method based on secondary transform and apparatus therefor
CN113302942B (zh) * 2019-02-01 2024-02-13 Lg电子株式会社 基于二次变换的图像编码方法及其设备

Also Published As

Publication number Publication date
US20200322633A1 (en) 2020-10-08
EP3457699B1 (en) 2023-09-20
JP2021108480A (ja) 2021-07-29
CN109076242B (zh) 2023-01-03
EP3457699A4 (en) 2019-08-14
KR20220053702A (ko) 2022-04-29
CN109076242A (zh) 2018-12-21
EP3457699A1 (en) 2019-03-20
JPWO2017195666A1 (ja) 2019-03-14
EP4300968A1 (en) 2024-01-03
JP2022140610A (ja) 2022-09-26
JP7392778B2 (ja) 2023-12-06
WO2017195666A1 (ja) 2017-11-16
US11368720B2 (en) 2022-06-21
JP6868785B2 (ja) 2021-05-12

Similar Documents

Publication Publication Date Title
JP7392778B2 (ja) 画像処理装置および方法
JP7384247B2 (ja) 画像処理装置および方法
JP6822470B2 (ja) 画像処理装置および方法
JP7067487B2 (ja) 画像処理装置および方法
CN103988508B (zh) 图像处理设备和方法
KR20200051596A (ko) 화상 처리 장치 및 방법
CN105308959A (zh) 用于视频译码的自适应颜色变换
JPWO2018173798A1 (ja) 画像処理装置および方法
JP7001968B2 (ja) 画像処理装置および方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2022101000918; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20220421

Effective date: 20230531