KR20220088074A - 비디오 신호 처리 방법 및 장치 - Google Patents

비디오 신호 처리 방법 및 장치 Download PDF

Info

Publication number
KR20220088074A
KR20220088074A KR1020200178740A KR20200178740A KR20220088074A KR 20220088074 A KR20220088074 A KR 20220088074A KR 1020200178740 A KR1020200178740 A KR 1020200178740A KR 20200178740 A KR20200178740 A KR 20200178740A KR 20220088074 A KR20220088074 A KR 20220088074A
Authority
KR
South Korea
Prior art keywords
abs
value
flag
criceparam
level
Prior art date
Application number
KR1020200178740A
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 KR1020200178740A priority Critical patent/KR20220088074A/ko
Publication of KR20220088074A publication Critical patent/KR20220088074A/ko

Links

Classifications

    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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

Landscapes

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

Abstract

본 발명은 잔차 신호의 부/복호화 방법 및 이를 위한 장치를 제공한다.

Description

비디오 신호 처리 방법 및 장치{A METHOD AND AN APPARATUS FOR PROCESSING A VIDEO SIGNAL}
본 발명은 비디오 신호 처리 방법 및 장치에 관한 것이다.
비디오 영상은 시공간적 중복성 및 시점 간 중복성을 제거하여 압축부호화되며, 이는 통신 회선을 통해 전송되거나 저장 매체에 적합한 형태로 저장될 수 있다.
본 발명은 비디오 신호의 코딩 효율을 향상시키고자 함에 있다.
상기 과제를 해결하기 위하여 잔차 신호의 부/복호화 방법 및 이를 위한 장치를 제공한다.
본 발명에 따른 비디오 신호 처리 방법 및 장치는 영상 부호화/복호화 효율을 향상시킬 수 있다.
최근, 초고해상도 영상은 디지털 방송뿐 아니라 넷플릭스 및 유튜브 등의 스트리밍 서비스 분야의 핵심이다. 게다가 기존의 2D영상이외에도 VR, 3D 영상 서비스가 상용화되고 있으며, 디지털 TV뿐만 아니라 스마트폰과 같은 모바일 장비에서도 위와 같은 영상 서비스를 사용할 수 있다. 이러한 영상 서비스의 공통점은, 영상 압축의 적용 없이는 서비스가 불가능하다는 점이다. Full-HD라고 할 수 있는 1080p@60Hz의 경우, 1920x1080크기의 화면을 1초에 60번 전송해야 한다. 3D 영상과 같이 양쪽 눈에 정보를 전달하기 위해서는 2배의 데이터가 필요하며, 4K(4096x2048), 8K(8192x4096) 등 초고해상도 영상 서비스는 한 화면을 1초에 120번 이상 전송해야 되기 때문에 full-HD대비 엄청난 데이터가 발생된다. 이러한 데이터를 감당하기 위해서는 통신 대역폭, 영상 압축 기술 등 다양한 분야의 기술이 필요하다. 우선, 데이터에 예측 기술이 사용되어 잔차 값을 생성한다. 예측이 정확하게 수행될수록 원본 데이터와의 잔차 신호들은 0에 가까워진다. 그 후 변환을 통해 에너지를 집중시키며, 양자화된 계수 값들은 문맥 정보를 참조하여 부호화가 수행된다.
특히 낮은 QP를 이용하여 부호화하는 경우, 혹은 12비트 이상의 의료영상이나 초고화질 영상의 경우, 부호화해야될 레지듀얼 신호는 극단적으로 커질 수 있다. 이러한 값들을 위해 최적화된 부호화 방식이 사용된다면, 부호화 효율을 크게 증가시켜줄 수 있다.
1. 블록 내 레지듀얼 신호 부호화 방법
블록을 부호화 할 때, 레지듀얼(residual) 신호를 생성하여 엔트로피 부호화를 수행한다. 레지듀얼 신호는 다양한 방법으로 생성될 수 있다. 일 예로, 원본 블록안에 존재하는 샘플(화소)들에 대해, 화면 간 예측 혹은 화면 내 예측 등과 같은 예측을 통해 예측 블록을 획득한다. 이후, 원본 블록으로부터 예측 블록을 차분하여, 잔차 값들로 이루어진 잔차 블록이 생성된다. 이 잔차 블록들에 변환 및/또는 양자화를 선택적으로 적용하여 생성된 잔차 계수가 레지듀얼 신호로 생성될 수 있다. 혹은, 예측, 변환, 양자화 중 적어도 하나를 스킵하여, 레지듀얼 신호를 생성할 수 있다. 즉, 레지듀얼 신호는, 잔차 샘플, 잔차 샘플을 변환하여 생성된 변환 계수, 상기 변환 계수를 양자화하여 생성된 양자화된 변환 계수, 상기 잔차 샘플을 양자화하여 생성된 양자화된 계수 중 적어도 하나를 포함할 수 있다.
레지듀얼 신호에 대해 엔트로피 부호화가 수행될 수 있다. 구체적으로, 생성된 레지듀얼 신호는 다양한 신택스로 표현되어 엔트로피 부호화가 수행될 수 있다. 위 신택스들은 이진화 과정을 거쳐 다수의 빈(bin)들로 변경된 후, 엔트로피 부호화를 이용하여 부호화 된다. 이때, 코딩/변환 블록을 서브 블록 단위로 분할하고, 분할된 서브 블록마다 레지듀얼 신호에 대해 엔트로피 부호화를 수행할 수 있다. 엔트로피 부호화는 크게 문맥 정보(context)를 이용한 부호화와 문맥 정보를 이용하지 않는 부호화가 존재한다.
이때, 엔트로피 코더의 처리율(throughput)을 증가시키기 위해, 부호화 하려는 블록마다 문맥정보를 이용하여 엔트로피 부호화를 수행하는 빈의 개수를 제한할 수 있다. 이를 위해, 임계값을 정한다. 발생한 다수의 빈들 중 임계값 만큼의 빈들은 문맥 정보를 이용한 부호화가 수행된다. 문맥 정보를 이용하여 빈들이 부호화될 때마다, 수를 카운팅(counting) 하고, 카운팅 된 값이 임계값을 넘어서는 경우, 더 이상 문맥 정보를 이용한 부호화를 사용하지 않는다.
임계값은 기 설정된 조건들에 의해 결정될 수 있다. 일 예로, 임계값은 블록 내에 존재하는 0이 아닌 잔차 계수의 개수를 기초로 결정될 수 있다. 일 예로, 상기 개수의 실수 배 또는 상기 개수에 오프셋을 가산한 값을 임계값으로 설정할 수 있다.
혹은 블록 내에 존재하는 화소의 개수에 기초하여 임계값을 결정할 수 있다. 혹은, 상기 개수의 실수 배 또는 상기 개수에 오프셋을 가산한 값을 임계값으로 설정할 수 있다.
혹은 상위 헤더를 통해 임계값을 부호화하여, 복호화기로 전송 할 수도 있다.
혹은 블록 크기 및/또는 형태에 따라, 임계값을 적응적으로 설정할 수 있다. 또는, 블록 크기에 맞게 설정된 임계값을 부호화 하여 복호화기로 전송하는 방식 또한 가능하다.
혹은, 변환 스킵의 적용 여부, 변환 커널 종류, 컬러 성분(예컨대, YCbCr의 각 콤포넌트) 또는 양자화 파라미터 중 적어도 하나에 기초하여, 임계값을 결정할 수 있다.
혹은 샘플의 깊이심도(BitDepth)에 기초하여, 임계값을 결정할 수 있다.
레지듀얼 신호 부호화 방법은, RC(Residual Coding) 방식 및 TSRC(Transform Skip Residual Coding) 방식을 포함한다.
블록 레벨에서, RC / TSRC 중 하나가 선택되면, 블록 내 모든 서브 블록들에 대해 선택된 방법이 적용될 수 있다. 여기서 서브 블록은, 엔트로피 부호화가 수행되기 전, TSRC 혹은 RC가 사용되는 단위를 의미한다.
1-1: RC방법
RC 방법은 다음의 그림 1과 같다. 이때 서브 블록의 크기는 설명의 편의성을 위해 4x4크기라고 가정한다. 또한 문맥 정보를 이용한 부호화를 사용할 빈의 개수에 대한 임계값, 즉 CCB(Coded Context Bin)은 52라고 가정한다.
Figure pat00001
그림 1
위 그림 1 에서, C15~C0은 서브 블록 내에 레지듀얼 신호(즉, 잔차 계수)를 의미한다. 서브 블록 내에 레지듀얼 신호는 역 대각 스캔 순서로 부호화될 수 있다. 즉, 서브 블록내 오른쪽 아래방향에서부터 왼쪽 위 방향으로 부호화가 진행될 수 있다. 이에 따라, 위 그림에서 C15는 서브 블록 내 우하단의 레지듀얼 신호를 나타내고, C0은 서브 블록 내 좌상단의 레지듀얼 신호를 나타낸다. 또한 검은색 화살표(context coding)는, 문맥정보를 이용하여 부호화가 수행되는 신택스들의 부호화 순서를 나타내고, 파란색 화살표(bypass coding)는 문맥정보를 이용하지 않고 부호화가 수행되는 신택스들의 부호화 순서를 나타낸다. 또한, 화살표간 연결선은, 이전 화살표에 의한 부호화가 수행된 이후, 연결선으로 연결된 화살표에 의한 부호화가 수행됨을 나타낸다.
신택스 sig_coeff_flag는, 레지듀얼 신호가 0이 아닌 값을 갖는지 여부를 나타낸다. 신택스 abs_level_gtx_flag[n]은 레지듀얼 신호의 절대값이 (2n+1)보다 큰지 여부를 나타낸다. 신택스 par_level_flag는, 레지듀얼 신호가 짝수인지, 홀수인지 여부를 나타낸다. 신택스 abs_remainder는, 마지막 abs_level_gtx_flag[l]이 1인 경우 부호화되고, 레지듀얼 신호의 절대값에서 (2l+1)을 차분한 값을 나타낸다. 신택스 dec_abs_level은 레지듀얼 신호의 절대값을 나타낸다. 신택스 coeff_sign_flag는 레지듀얼 신호의 부호를 나타낸다.
구체적으로, sig_coeff_flag, abs_level_gtx_flag[0], par_level_flag, abs_level_gtx_flag[1], abs_remainder, dec_abs_level, coeff_sign_flag는 다음의 표에 존재하는 수식과 같이 정의된다.
Pass 신택스명 수식
pass 1 sig_coeff_flag CN != 0
abs_level_gtx_flag[0] !! ( |CN| - 1 )
par_level_flag ( |CN| - 2 ) & 1
abs_level_gtx_flag[1] ( |CN| - 2 ) >> 1
pass 2-1 abs_remainder ( |CN| - 4 ) >> 1
pass 2-2 dec_abs_level
pass 3 coeff_sign_flag CN < 0 ? 1 : 0
만약, C15의 값이 -21 이라면, C15에 해당하는 sig_coeff_flag는 1, abs_level_gtx_flag[0]는 1, par_level_flag은 1, abs_level_gtx_flag[1]는 1, abs_remainder의 값은 8이되며, coeff_sign_flag의 값은 1로 표현되며 이 신택스들이 엔트로피 부호화되어 디코더로 시그널링 된다.
디코더에서는 다음의 표를 이용하여 레지듀얼 신호를 복원한다.
수식
TmpCN sig_coeff_flag + abs_level_gtx_flag[0] + par_level_flag + (abs_level_gtx_flag[1]<<1)
|CN| TmpCN + (abs_remainder<<1)
상기 설명한 대로 |C15|에 대해 복원하면, TmpCN의 값은 1+1+1+(1<<1)를 통해 5가 되며, (abs_remainder<<1)의 결과를 더해 21로 복원 된다. 그 후, coeff_sign_flag값을 통해 C15의 값은 -21로 최종 복원된다.
1-2: TSRC방법
TSRC 방식은 다음의 그림 2와 같다. 이때 서브 블록의 크기는 설명의 편의성을 위해 4x4크기라고 가정한다. 또한 문맥 정보를 이용한 부호화를 사용할 빈의 개수에 대한 임계값, 즉 CCB(Coded Context Bin)은 112라고 가정한다.
Figure pat00002
그림 2
위 그림 2에서, C0~C15는 서브 블록 내에 존재하는 레지듀얼 신호를 의미한다. TSRC 방식이 적용 될 때, 서브 블록 내 레지듀얼 신호는 대각 스캔 순서로 부호화될 수 있다. 즉, 서브 블록내 왼쪽 위 방향에서 오른쪽 아래방향으로 부호화가 진행된다. 위 그림에서 C15는 서브 블록 내 우하단 레지듀얼 신호를 나타내고, C0은 서브 블록 내 좌상단 레지듀얼 신호를 나타낸다. 또한 검은색 화살표(context coding)는, 문맥정보를 이용하여 부호화가 수행되는 신택스들의 부호화 순서를 나타내고, 파란색 화살표(bypass coding)는 문맥정보를 이용하지 않고 부호화가 수행되는 신택스들의 부호화 순서를 나타낸다. 또한, 화살표간 연결 선은, 이전 화살표에 의한 부호화가 수행된 이후, 연결선으로 연결된 화살표에 의한 부호화가 수행됨을 나타낸다.
또한, sig_coeff_flag, coeff_sign_flag, abs_level_gtx_flag[0], par_level_flag, abs_level_gtx_flag[1], abs_level_gtx_flag[2], abs_level_gtx_flag[3], abs_level_gtx_flag[4], abs_remainder는 다음의 표에 존재하는 수식과 같이 정의된다.
Pass 신택스명 수식
pass 1 sig_coeff_flag CN != 0
coeff_sign_flag CN < 0 ? 1 : 0
abs_level_gtx_flag[0] !! ( |CN| - 1 )
par_level_flag ( |CN| - 2 ) & 1
pass 2 abs_level_gtx_flag[1] ( |CN| - 2 ) >= 4
abs_level_gtx_flag[2] ( |CN| - 2 ) >= 6
abs_level_gtx_flag[3] ( |CN| - 2 ) >= 8
abs_level_gtx_flag[4] ( |CN| - 2 ) >= 10
pass 3 abs_remainder ( |CN| - 10 ) >> 1
만약, C0의 값이 -21 이라면, C0에 해당하는 sig_coeff_flag는 1, coeff_sign_flag는 1, abs_level_gtx_flag[0]는 1, par_level_flag는1, abs_level_gtx_flag[1]은 1, abs_level_gtx_flag[2]는 1, abs_level_gtx_flag[3]은 1, abs_level_gtx_flag[4]는 1, abs_remainder의 값은 5로 표현되며, 이 신택스들이 엔트로피 부호화되어 디코더로 시그널링 된다.
디코더에서는 다음의 표를 이용하여 레지듀얼 신호를 복원한다.
수식
TmpCN sig_coeff_flag + abs_level_gtx_flag[0] + par_level_flag
CN TmpCN + (abs_level_gtx_flag[1]<<1) + (abs_level_gtx_flag[2]<<1) + (abs_level_gtx_flag[3]<<1) + (abs_level_gtx_flag[4]<<1) +
(abs_remainder<<1)
상기 설명한 대로 |C0|에 대해 복원하면, TmpCN의 값은 1+1+1을 통해 3이 되며, (abs_level_gtx_flag[1]<<1) + (abs_level_gtx_flag[2]<<1) + (abs_level_gtx_flag[3]<<1) + (abs_level_gtx_flag[4]<<1) 을 통해 8이 복원되고, (abs_remainder<<1)을 통해 10이 복원됨으로, 전부 합하면 21로 복원 된다. 그 후, coeff_sign_flag값을 통해 C0의 값은 -21로 최종 복원된다.
1-3: 절삭된 라이스 (TR: Truncated Rice) 이진화 방법
임의 값에 대한, 엔트로피 부호화를 수행하기 위해서는 이진화가 선행되어야 한다. 다양한 이진화 방법 중, 절삭된 라이스이진화 방법을 수행하기 위해, 파라미터들이 요구된다. 구체적으로, 두 파라미터들이 요구되는데, 이들은, cMax 파라미터와 라이스파라미터(cRiceParam)이다.
cMax는, 프리픽스를 부호화하는데 할당되는 최대 비트 길이를 나타내고, 라이스 파라미터는, 부호화하려는 값을 프리픽스와 서픽스로 분류하기 위한 파라미터이다.
TR 이진화 방식이 적용되는 경우, 상기 두개의 파라미터들에 기초하여, 부호화하려는 값을 프리픽스(prefix) 부분과 서픽스(suffix) 부분으로 분류할 수 있다. 그리고 나서, 각 부분을 설정된 방법에 따라 이진화할 수 있다. 프리픽스 부분은 다음의 수식으로 유도될 수 있다.
prefixVal = symbolVal >> cRiceParam (1)
위 수식에서 symbolVal은 부호화하려는 값을 의미하며 prefixVal은 프리픽스 값을 의미한다. 그 후, 다음의 테이블과 같이, prefixVal을 이진화할 수 있다.
prefixVal Bin string
0 0
1 1 0
2 1 1 0
3 1 1 1 0
4 1 1 1 1 0
5 1 1 1 1 1 0
...
bin index 0 1 2 3 4 5 ...
다만, prefixVal의 값이 (cMax >> cRiceParam) 보다 작은 경우에만, 위의 표의 예시를 따라, prefixVal을 이진화할 수 있다. 반면, prefixVal의 값이 (cMax >> cRiceParam)보다 작지 않은 경우, 빈 스트링(Bin string)을 더 늘리지 않고 마지막 빈을 1로 대체할 수 있다. 예를 들어 (cMax >> cRiceParam)의 값이 6이고 prefixVal의 값이 6인 경우, 다음 표 6과 같이 빈 스트링을 설정할 수 있다.
prefixVal Bin string
0 0
1 1 0
2 1 1 0
3 1 1 1 0
4 1 1 1 1 0
5 1 1 1 1 1 0
6 1 1 1 1 1 1
bin index 0 1 2 3 4 5
서픽스는, cMax가 symbolVal보다 크고, cRiceParam이 0보다 큰 경우에만 사용될 수 있다. 위 조건을 만족하지 않는 경우, 서픽스는 사용되지 않는다. 서픽스가 사용되는 경우, 다음의 수식에 의해 서픽스 값이 설정된다.
suffixVal = symbolVal - (prefixVal << cRiceParam) (2)
suffixVal의 이진화할 때, 고정길이 (FL : Fixed-length)이진화 방식이 적용될 수 있다. 이때, FL 이진화를 위한 cMax값은 (1 << cRiceParam)-1 의 값으로 설정될 수 있다.
고정길이 이진화 방식은 우선 고정길이를 다음의 수식으로 설정한다.
fixedLength = Ceil ( Log2 (cMax+1) ) (3)
fixedLength은 FL이진화 방식에 사용되는 고정길이를 의미하며 Ceil( )는 올림 연산을 의미한다. 또한, (2fixedLength) 개의 값을 이진화 할 수 있다. 예를 들어 fixedLength가 2 설정된 경우 22 = 4개의 값을 이진화 할 수 있다. 다음의 표는 이에 따른 예시이다.
Val Bin string
0 0 0
1 0 1
2 1 0
3 1 1
bin index 0 1
1-4: 제한된 k차 지수골룸 (Limited k-th order Exp-Golomb) 이진화 방법
제한된 k차 지수 골룸 이진화 방식이 적용되는 경우, 입력되는 데이터는, 이진화하려는 값인 symbolVal, 변수 k, maxPreExtLen 및 truncSuffixLen를 포함할 수 있다.
이 입력값들을 이용하여 제한된 k차 지수골룸 이진화하는 방법은 다음의 표를 통해 설명한다.
codeValue = symbolVal >> k
preExtLen = 0
while( ( preExtLen < maxPreExtLen ) && ( codeValue > ( ( 2 << preExtLen ) - 2 ) ) ) {
preExtLen++
put( 1 )
}
if( preExtLen = = maxPreExtLen )
escapeLength = truncSuffixLen
else {
escapeLength = preExtLen + k
put( 0 )
}
symbolVal = symbolVal - ( ( ( 1 << preExtLen ) - 1 ) << k )
while( ( escapeLength-- ) > 0 )
put( ( symbolVal >> escapeLength ) & 1 )
1-5: abs_remainder과 dec_abs_level의 이진화 방법
abs_remainder의 이진화를 위해 abs_remainder를 프리픽스 부분과 서픽스 부분으로 분류한다. 그 후, 프리픽스 부분은 TR방식으로 이진화하고, 서픽스 부분은 제한된 k차 지수골룸 (Limited k-th order Exp-Golomb )방식으로 이진화할 수 있다. abs_remainder의 서픽스는, TR방식으로 이진화화된 비트스트링이 모두 1로 구성된 경우(예컨대, 비트스트링이 111111인 경우)에만 생성되어 이진화될 수 있다.
우선, abs_remainder의 프리픽스를 TR방식으로의 이진화하기 위해, cRiceParam의 값과 cMax값이 설정되어야 한다. 두 파라미터들 중 적어도 하나는, RC 방식 또는 TSRC 방식 중 어느 것이 적용되었는지에 따라, 적응적으로 결정될 수 있다.
일 예로, 레지듀얼 신호의 부호화를 위해 TSRC가 사용되었다면 cRiceParam는 1로 고정될 수 있다. 만약 TSRC가 아니라 RC가 사용되었다면, 주변 화소들을 참조하여, cRiceParam를 유도할 수 있다.
우선 그림 3과 같이, 현재 부호화하려는 위치를 기준으로 주변 참조위치 각각에 존재하는 레지듀얼 신호들의 절대값합(locSumAbs)를 유도한다.
Figure pat00003
그림 3
이때, 참조위치에 존재하는 각 레지듀얼 신호의 절대값은 표 2를 이용해서 생성된다. 그 후, 다음의 수식 (4)를 통해 클리핑을 수행한다.
locSumAbs = Clip3(0, 31, locSumAbs - baseLevel*5 ) (4)
Clip3 (A,B,C)의 의미는, 만약 C의 값이 A이하라면 A를 출력하고, 그게 아니라 만약 C의 값이 B이상이라면 B를 출력하며, 그게 아니라면 C를 출력한다는 의미이다. 즉, 수식 (4)에 따르면, 클리핑의 수행 결과는, 0부터 31 사이의 값을 가질 수 있다.
위 수식에서 baseLevel은 4로 고정된다. 그 후, 수식에 의해 계산된 locSumAbs에 따라서 다음의 표와 같이 cRiceParam를 유도한다.
locSumAbs 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
cRiceParam 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2
locSumAbs 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cRiceParam 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3
라이스 파라미터가 유도되면, 이를 이용하여 cMax를 유도할 수 있다. 아래 수식은 cMax의 값을 유도하는 예를 나타낸다.
cMax = 6<< cRiceParam (5)
cRiceParam의 값과 cMax값이 설정되면, abs_remainder의 프리픽스를 다음의 수식 (6)과 같이 유도한다.
prefixVal = Min (cMax, abs_remainder) (6)
이렇게 설정된 prefixVal은 파라미터 cMax와 cRiceParam를 이용하여 TR방식으로 이진화 된다.
다음의 예시는, abs_remainder를 이진화하는 예시를 나타낸다. 설명의 편의성을 위해 cRiceParam은 2라고 가정하였으며, abs_remainder의 값은 23이라고 가정한다.
우선, cRiceParam가 2이기 때문에, 수식 (5)에 의해 cMax는 24로 설정된다. 그 후, 수식 (6)에 의해 abs_remainder의 프리픽스 값이 23으로 설정된다. 이 프리픽스 값과 cMax, cRiceParam를 입력값으로 이용하여 TR이진화를 수행한다. 이 때. 이 프리픽스 값이 TR이진화의 symbolVal로 입력된다.
TR이진화를 수행하기 위해 symbolVal을 프리픽스와 서픽스로 분류한다. symbolVal이 23이고 수식 (1)을 통해, prefixVal이 5로 설정된다. 그 후, 이 프리픽스 값은 (cMax >> cRiceParam)의 결과인 6보다 작으므로 표 5에 의해 111110 으로 이진화 된다.
그리고, cMax값이 symbolVal 값인 23보다 크고 cRiceParam이 2이기 때문에, symbolVal의 서픽스를 추가로 설정하여야 한다. 수식 (2)와 같이 설정하면 suffixVal의 값은 23 - (5<<2)의 결과인 3이 설정되며, (1 << cRiceParam)-1의 값을 FL이진화 방식을 위한 cMax로 설정된다. 그 후, suffixVal 값인 3과, cMax 값인 3을 고정길이 (FL : Fixed-length)이진화 방식의 입력으로 적용하여 이진화를 수행한다. 이 때, 수식 (3)에 의해 fixedLength의 값은 2가 되며, 표 7에 의해 11로 이진화된다.
위와 같은 방식으로, abs_remainder의 프리픽스 값인 23을 TR이진화를 수행하면 111110 11 로 표현된다. 따라서, 111111이 아니기때문에 abs_remainder의 서픽스는 생성하지 않고 abs_remainder의 이진화 과정이 종료된다.
다음의 예시는, abs_remainder를 이진화하는 또다른 예시를 나타낸다. 설명의 편의성을 위해 cRiceParam은 2라고 가정하였으며, abs_remainder의 값은 25라고 가정한다.
우선, cRiceParam가 2이기 때문에, 수식 (5)에 의해 cMax는 24로 설정된다. 그 후, 수식 (6)에 의해 abs_remainder의 프리픽스 값이 24으로 설정된다. 이 프리픽스 값과 cMax, cRiceParam를 입력값으로 이용하여 TR이진화를 수행한다. 이 때. 이 프리픽스 값이 TR이진화의 symbolVal로 입력된다.
TR이진화를 수행하기 위해 symbolVal을 프리픽스와 서픽스로 분류한다. symbolVal이 24이고 수식 (1)을 통해, prefixVal이 6으로 설정된다. 그 후, 이 프리픽스 값은 (cMax >> cRiceParam)의 결과인 6보다 작지 않기 때문에, 표 6에 의해 111111 로 이진화 된다.
그리고, cMax값이 symbolVal 값인 24보다 크지 않기 때문에 TR이진화의 서픽스를 생성하지 않으며, abs_remainder의 프리픽스를 이진화한 결과는 111111로 종료된다.
그 후, abs_remainder의 프리픽스를 TR방식으로 이진화하여 생성된 비트 스트링이 모두 1로 구성되어 있으므로(즉, 111111), abs_remainder 서픽스를 생성 및 부호화할 수 있다. abs_remainder의 서픽스는 다음의 수식과 같이 유도될 수 있다.
SuffixVal = abs_remainder - cMax (7)
따라서 수식 (7)을 적용하면, 25-24의 결과인 1이 서픽스 값으로 생성된다. 그 후 k의 값을 cRiceParam+1의 결과로 설정하고, maxPreExtLen과 truncSuffixLen를 각각 11과 15로 설정한다. 마지막으로 서픽스값, k, maxPreExtLen, truncSuffixLen을 입력값으로 이용하여 제한된 k차 지수골룸 (Limited k-th order Exp-Golomb )방식으로 이진화한다.
dec_abs_level의 이진화는 abs_remainder의 이진화와 동일한 방식을 따를 수 있다.
2. 개선된 라이스파라미터(cRiceParam) 유도방법
cRiceParam을 유도할 때 TSRC가 사용되는 경우는 항상 1이 사용된다. 하지만 비트심도가 12 이상으로 높아지거나 혹은 QP의 값이 낮아질 수록, 혹은 확장된 정밀도가 이용되는 경우 cRiceParam를 1로만 설정하는 것은 비효율적인 방법이 될 수 있다. 여기서 확장된 정밀도란, 변환된 계수들은 정수화를 위해 16비트 정밀도를 가지는데 이 이상의 정밀도를 가지도록 하는 것을 의미한다.
따라서, TSRC를 위한 cRiceParam를 sps, pps, 픽쳐헤더 등 상위헤더를 통해 시그널링 할 수도 있다. 혹은 슬라이스, 타일, 서브픽쳐와 같은 영역단위로 cRiceParam을 시그널링할 수 있다. 혹은, CU와 같은 블록 레벨에서 cRiceParam를 시그날링할 수 있다. 혹은, 그림 1과 그림 2에서 예시로 사용된 서브블록 단위로, 라이스 파라미터를 시그널링하는 방식 또한 가능하다.
혹은 TSRC에서도, 주변 위치를 참조하여, abs_remainder를 위한 cRiceParam을 유도할 수 있다. 이 때, 서브 블록내 레지듀얼 신호의 스캔순서가 그림 3과 다를 수 있다. 다음의 그림은 이와 관련된 예시이다.
Figure pat00004
그림 9
그림 9의 첫 번째 그림은 주변 2개의 참조 위치만 이용하는 경우이며 두 번재 그림은 주변 5개의 위치를 이용하는 경우를 나타내는 예시이다. 이외에도 여러 주변 참조 위치가 설정될 수 잇다. 이 설정된 참조 위치에 따라, 현재 부호화하려는 위치를 기준으로 주변 참조위치 각각에 존재하는 레지듀얼 신호들의 절대값합(locSumAbs)를 유도한다. 그 후, 식 (4)와 표 9를 이용하여 cRiceParam를 유도할 수 있다. 이때 현재 부호화하려는 위치에 이용불가능한 주변 참조 위치가 존재할 수 있다. 다음의 그림 10은 이와 관련된 예시이다.
Figure pat00005
그림 10
위 그림과 같은 경우, 이용가능한 주변참조위치만 이용하여 locSumAbs를 유도할 수 있다.
혹은 라이스 파라미터가 사용되는 각 신택스마다 어떤 값이 사용되었는지를 시그널링하는 방식 또한 가능하다. 일 예로 다음의 그림 9은 이와 관련된 예시를 나타낸다.
Figure pat00006
그림 11
위 그림에서 abs_remainder에 대해 사용된 cRiceParam가 시그널링 될 수 있다. 또한 cRiceParam은 bypass coding이 되는 것으로 설명하였지만, 상위 pass로 이동하여 문맥정보를 이용하여 부호화되는 방식 또한 가능하다.
상기 예시에서는 설명의 편의성을 위해 TSRC에 대해서만 예시를 들었지만, RC에 대해서도 동일하게 적용 가능하다. 일 예로, RC의 dec_abs_level에 대해서도 abs_remainder와 동일하게 각 레지듀얼 신호마다 cRiceParam을 시그널링 할 수 있다. 혹은 두 신택스 중 어느 한 신택스에 대해서만 cRiceParam가 시그널링 될 수도 있다. 일 예로, abs_remainder는 표 9를 이용하여 cRiceParam를 유도하고 dec_abs_level에 대해서만 cRiceParam를 시그널링 하는 방식 또한 가능하다.
혹은 비트심도, QP, 또는 확장된 정밀도 중 적어도 하나에 기초하여, cRiceParams를 적응적으로 결정할 수 있다. 일 예로, 비트 심도, QP 또는 확장된 정밀도가 임계값보다 작은 경우, 제1 상수값이 인코더와 디코더에서 동일하게 cRiceParam의 값으로 설정되고, 반대의 경우, 제2 상수값이 인코더와 디코더에서 동일하게 cRiceParam의 값으로 설정될 수 있다.
이에 따라, TSRC가 사용된 경우, 비트심도, QP 또는 확장된 정밀도 중 적어도 하나에 따라, cRiceParam가 1보다 큰 임의의 상수로 변경될 수도 있다. 일 예로 이 상수는 2, 3, 4 등의 값이 될 수 있다.
혹은, 수식 (4)를 다음의 수식 (8)로 변경하는 방식 또한 가능하다.
locSumAbs = locSumAbs - baseLevel*5 < 0 ? 0 : locSumAbs - baseLevel*5 (8)
이런 경우, locSumAbs의 값은 31보다 더욱 크게 나올 수 있다. 그 후, 변수 shift를 다음의 수식을 이용하여 설정한다.
shift = locSumAbs >>5 (9)
그리고 locSumAbs을 다음의 수식을 통해 재조정한다.
locSumAbs= locSumAbs % 32 (10)
그 후, 표 9를 통해 cRiceParam값을 유도한 후, 수식 (11)를 통해 cRiceParam를 설정한다.
cRiceParam = cRiceParam + shift (11)
혹은 상기 언급한 shift변수를 다른 방식으로 유도하는 것 또한 가능하다.
예를 들어, 그림 3을 통해 유도한 locSumAbs의 값이 기설정된 임계값과 비교한다. 여기서 임계값은 수식 (4)에서 사용되는 baseLevel의 값에 기반하여 유도될 수 있다. 일 예로, 이 임계값은 32 + baseLevel*k (k는 임의의 상수)로 유도될 수 있다. 만약 locSumAbs이 임계값보다 크다면, 수식 (12)와 같이 shift를 유도한다.
shift = Floor( Log2(4*( BitDepth-10 ))) (12)
여기서 Floor(x)는 x를 내림한 결과를 리턴하는 함수를 의미한다. 그 후, locSumAbs의 값을 다음의 수식 (13)을 이용하여 조절한다
(locSumAbs + (1<<(shift-1)))>>shift (13)
(13)에서 유도된 locSumAbs를 수식 (4) 및 표 9를 통해 cRiceParam를 유도하고, 유도된 cRiceParam에 shift를 더하여 최종적인 cRiceParam를 생성한다.
상기 설명한 방식(즉, cRiceParam의 가변적 선택 기법)의 사용유무를 SPS, PPS, 픽쳐헤더와 같은 상위 헤더를 통해 시그널링 할 수 있으며 혹은 슬라이스, 타일, 서브픽쳐와 같은 영역단위로 시그널링하는 것 또한 가능하다.
일 예로, 상기 설명한 방식이 사용된다고 슬라이스를 통해 시그널링 되었다면, 해당 슬라이스의 모든 블록에서 cRiceParam를 유도할 때 이 방식을 이용한다.
혹은, 추가 시그널링 없이 블록 단위 혹은 서브 블록 단위로 상기 설명한 방식이 항상 적용 될 수도 있다.
설명의 편의성을 위해 상기 언급한 방식에서는 locSumAbs를 이용하는 RC방식을 예시로 설명하였지만, TSRC에서도 동일하게 사용가능하다. 예를 들어 TSRC방식에서는 스캔 순서가 서브블록의 왼쪽 위에서 오른쪽 아래 방향으로 진행된다. 따라서 그림 3과는 다르게 주변 참조 위치는 현재 부호화하려는 위치의 왼쪽과 위쪽 방향에서 유도될 수 있다.
혹은, 수식 (4)와 표 9를 이용하지 않고 수식으로 유도할 수도 있다. 예를 들어, 수식 (4)에서 31로 고정되있는 최대값을 해제하고, locSumAbs0에 따라 다음의 수식 (14)~(15)를 이용하여 cRiceParam를 유도하는 방식 또한 가능하다.
val = (locSumAbs0 * a + b)>>4 (14)
cRiceParam = val * 5 < 16 ? 0 : floorLog2((val*5)>>4) + 1 (15)
일 예로 위 수식 (14)~(15)에서 a와 b를 각각 7과 16으로 설정하면 표 9와 동일한 값이 유도된다.
상기 a와 b는 시그널링 없이 부호화기와 복호화기에서 동일한 값을 사용하는 것이 가능하다.
혹은, a와 b를 RC와 TSRC에 따라서 서로 다른 기설정된 값을 사용하는 것 또한 가능하다.
혹은, RC와 TSRC에 따라서 사용되는 a와 b를 SPS, PPS, 픽쳐헤더와 같은 상위 헤더를 통해 시그널링 할 수도 있다.
혹은, 슬라이스, 타일, 서브픽쳐와 같은 영역단위로 시그널링하는 것 또한 가능하다.

Claims (1)

  1. 잔차 신호의 부호화/복호화 방법.
KR1020200178740A 2020-12-18 2020-12-18 비디오 신호 처리 방법 및 장치 KR20220088074A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200178740A KR20220088074A (ko) 2020-12-18 2020-12-18 비디오 신호 처리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200178740A KR20220088074A (ko) 2020-12-18 2020-12-18 비디오 신호 처리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220088074A true KR20220088074A (ko) 2022-06-27

Family

ID=82247313

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200178740A KR20220088074A (ko) 2020-12-18 2020-12-18 비디오 신호 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20220088074A (ko)

Similar Documents

Publication Publication Date Title
AU2023202899B2 (en) Method and device for entropy encoding, decoding video signal
US10609374B2 (en) Method and apparatus for entropy-encoding and entropy-decoding video signal
EP3328086A1 (en) Devices and methods for context reduction in last significant coefficient position coding
KR20140010185A (ko) 합성 비디오에서의 무손실 코딩 및 관련 시그널링 방법
AU2020297534A1 (en) Context modeling for low-frequency non-separable transformation signaling for video coding
EP2801195A1 (en) Devices and methods for sample adaptive offset coding and/or selection of edge offset parameters
WO2013109990A2 (en) Devices and methods for context reduction in last significant coefficient position coding
US12022061B2 (en) Method and apparatus for coding transform coefficient in video/image coding system
KR20220131331A (ko) 사인 데이터 하이딩 관련 영상 디코딩 방법 및 그 장치
KR100772870B1 (ko) Fgs 계층의 블록에 포함되는 계수의 특성에 따라 비디오신호를 부호화하고 복호화하는 방법 및 장치
KR20220013029A (ko) 잔차 및 계수를 코딩하는 방법 및 장치
KR20220019256A (ko) 영상 코딩 시스템에서 레지듀얼 코딩 방법에 대한 플래그를 사용하는 영상 디코딩 방법 및 그 장치
KR20080004855A (ko) 문맥 기반 적응적 가변 길이 부호화 인코더 및 디코더,문맥 기반 적응성 가변 길이 부호화하는 방법과 복호화하는방법 및 이를 이용한 동영상 전송 시스템.
JP7453347B2 (ja) 画像コーディングシステムで単純化されたレジデュアルデータコーディングを用いる画像デコード方法及びその装置
KR20220088074A (ko) 비디오 신호 처리 방법 및 장치
KR20220038121A (ko) 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
KR20220088072A (ko) 비디오 신호 처리 방법 및 장치
KR20220088073A (ko) 비디오 신호 처리 방법 및 장치
KR20220134309A (ko) 비디오 신호 처리 방법 및 장치
KR20220121426A (ko) 비디오 신호 처리 방법 및 장치
KR20220121424A (ko) 비디오 신호 처리 방법 및 장치
KR20220121425A (ko) 비디오 신호 처리 방법 및 장치