KR20170002478A - 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 - Google Patents

제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20170002478A
KR20170002478A KR1020167032973A KR20167032973A KR20170002478A KR 20170002478 A KR20170002478 A KR 20170002478A KR 1020167032973 A KR1020167032973 A KR 1020167032973A KR 20167032973 A KR20167032973 A KR 20167032973A KR 20170002478 A KR20170002478 A KR 20170002478A
Authority
KR
South Korea
Prior art keywords
interval
updated
length
arithmetic coding
present
Prior art date
Application number
KR1020167032973A
Other languages
English (en)
Other versions
KR101898664B1 (ko
Inventor
아미르 새드
탈리브 마흐푸드흐아보
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Publication of KR20170002478A publication Critical patent/KR20170002478A/ko
Application granted granted Critical
Publication of KR101898664B1 publication Critical patent/KR101898664B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • 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
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은, 데이터 심볼에 대한 산술 코딩을 수행하는 방법에 있어서, 데이터 심볼 각각에 대한 구간을 생성하는 단계, 여기서 상기 구간은 상기 구간의 시작 지점과 길이에 기초하여 표현됨; 데이터 심볼 각각에 대해 상기 구간을 업데이트하는 단계; 상기 업데이트된 구간이 특정 범위 내에 포함되어 있는지 여부를 확인하는 단계; 및 상기 확인 결과를 기반으로 업데이트된 구간을 재정규화하는 단계를 포함하는 것을 특징으로 하는 방법을 개시한다.

Description

제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING ARITHMETIC CODING BY LIMITED CARRY OPERATION}
본 발명은 비디오 신호를 처리하기 위한 방법 및 장치에 관한 것으로서, 보다 상세하게는, 제한된 캐리(carry) 연산에 의한 산술 코딩을 수행하기 위한 기술에 관한 것이다.
엔트로피 코딩은 가장 적은 수의 평균 비트 수를 가지는 데이터를 나타내기 위한 과정이며, 모든 미디어 압축 방법에 있어서 기본적인 기술이다. 그 중에서도 산술 코딩은 프리픽스(prefix) 코딩(예를 들어, 허프만(Huffman), 라이스(Rice), exp-Golomb 코드)과 같은 다른 코딩 기술에 비해 고도의 연산 복잡도를 가지는 엔트로피 코딩 방법이지만, 보다 나은(거의 이론적 한계에 가까운) 압축 결과를 보여주고 있어서, 최근의 비디오 코딩 규격인 H.265/HEVC 및 VP9 에서 이용되고 있으며, 향후에도 활용될 것으로 기대되고 있다.
산술 코딩을 실제적으로 구현하는 방법에는 다양한 선택이 있으며, 이들 각각은 이러한 구현이 범용 목적의 프로세서 및 통상의 소프트웨어 도구에 의해 이루어지는지, 특수한 하드웨어(ASICs)에 의해 이루어지는지에 따라 장점과 단점을 가지고 있다.
따라서, 본 발명은 바이트 재정규화를 기반으로 하여 범용 목적의 하드웨어 또는 특수한 하드웨어에서 효과적으로 구현될 수 있는 산술 코딩의 구현을 가능하게 해주는 기술을 정의하고자 한다.
또한, 특수하게 구현된 하드웨어에서의 문제점 중 하나는 데이터 심볼이 인코딩된 이후에 압축된 데이터 바이트에 대한 변경의 최대 개수가 제한되지 않을 수 있다는 것이다. 따라서, 본 발명은 압축에서의 손실이 거의 없이 이러한 개수를 효과적으로 제한하는 방법을 제안하고자 한다.
본 발명의 실시예는 범용 또는 특수화된 하드웨어에서 효율적으로 구현될 수 있으며 바이트 재정규화를 기반으로 하는 산술 코딩의 구현을 가능하게 하는 기술을 정의한다.
또한, 본 발명은 압축에서의 손실이 거의 없이 압축된 데이터 바이트에 대한 변경의 최대 개수를 효과적으로 제한하는 방법을 제공한다.
또한, 본 발명은 구간을 조정하는 방법을 제공한다.
또한, 본 발명은 구간 재정규화에 대하여 지연된 결정을 수행하는 방법을 제공한다.
또한, 본 발명은 버퍼 값들로 제한된 결정을 수행하는 방법을 제공한다.
또한, 본 발명은 확장 정밀도 레지스터에서의 오버플로우 가능성을 제거하거나 아웃스탠딩 비트로써 버퍼에서 동등한 오버플로우를 일으키기 위한 방법을 제공한다.
본 발명은 바이트 재정규화에 기반한 산술 코딩의 구현을 가능하게 함으로써 범용 또는 특수한 하드웨어에서 모두 효율적으로 구현할 수 있다.
또한, 본 발명은 압축에서의 손실이 거의 없이 압축된 데이터 바이트에 대한 변경의 최대 개수를 효과적으로 제한할 수 있다.
도 1 및 2는 본 발명이 적용되는 실시예에 따라 비디오 신호를 처리하는 인코더 및 디코더의 개략적인 블록도를 나타낸다.
도 3은 본 발명이 적용되는 일 실시예에 따라 산술 코딩 구간 데이터를 업데이트하기 위해 요구되는 동작의 집합을 예시하는 흐름도이다.
도 4 및 5는 본 발명이 적용되는 실시예에 따라 비디오 신호를 처리하는 엔트로피 인코딩 유닛 및 엔트로피 디코딩 유닛의 개략적인 블록도를 나타낸다.
도 6은 본 발명이 적용되는 일 실시예에 따라 능동 비트(active bit)의 윈도우에서의 산술에 의한 코딩 과정을 예시하는 도면이다.
도 7은 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간에 대한 재정규화 동작을 예시하는 도면이다.
도 8은 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간의 가능한 위치를 예시하는 도면이다.
도 9는 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간의 조정 과정을 예시하는 도면이다.
도 10은 본 발명이 적용되는 일 실시예에 따른 제한된 캐리 연산에 의한 산술 코딩을 수행하는 방법을 예시하는 흐름도이다.
도 11 은 본 발명이 적용되는 일 실시예에 따라 산술 코딩 구간을 재정규화하는 방법을 예시하는 흐름도이다.
도 12는 본 발명이 적용되는 일 실시예에 따라 산술 코딩 구간을 조정하는 방법을 예시하는 흐름도이다.
도 13 및 14는 본 발명이 적용되는 또 다른 실시예에 따라 산술 코딩 구간을 조정하는 또 다른 방법을 예시하는 흐름도이다.
발명의 실시를 위한 최선의 형태
본 발명은, 데이터 심볼에 대한 산술 코딩을 수행하는 방법에 있어서, 데이터 심볼 각각에 대한 구간을 생성하는 단계, 여기서 상기 구간은 상기 구간의 시작 지점과 길이에 기초하여 표현됨; 데이터 심볼 각각에 대해 상기 구간을 업데이트하는 단계; 상기 업데이트된 구간이 특정 범위 내에 포함되어 있는지 여부를 확인하는 단계; 및 상기 확인 결과를 기반으로 업데이트된 구간을 재정규화하는 단계를 포함하는 것을 특징으로 하는 방법을 제공한다.
본 발명에서, 상기 조정된 구간을 재정규화하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명은, 상기 업데이트된 구간이 특정 범위 내에 포함되어 있지 않은 경우, 상기 업데이트된 구간의 상위 부분과 하위 부분 중 하나를 선택하는 단계를 더 포함하되, 상기 업데이트된 구간은 선택된 부분에 기초하여 조정되는 것을 특징으로 한다.
본 발명은, 상기 업데이트된 구간 내에 임계 지점을 산출하는 단계; 및
상기 임계 지점부터 상기 상위 부분까지의 제 1 거리와 상기 임계 지점부터 상기 하위 부분까지의 제 2 거리를 비교하는 단계를 더 포함하되, 상기 업데이트된 구간은 상기 비교 결과에 기초하여 조정되는 것을 특징으로 한다.
본 발명에서, 상기 제 1 거리가 상기 제 2 거리보다 짧은 경우, 상기 업데이트된 구간의 길이는 상기 제 2 거리로 설정되는 것을 특징으로 한다.
본 발명에서, 상기 제 1 거리가 상기 제 2 거리보다 짧지 않은 경우, 상기 업데이트된 구간의 길이는 상기 제 1 거리로 설정되고, 상기 업데이트된 구간의 시작 시점은 상기 임계 지점으로 설정되는 것을 특징으로 한다.
본 발명은, 이진 산술 코딩 유닛을 포함하는 데이터 심볼에 대한 산술 코딩을 수행하는 장치에 있어서, 상기 이진 산술 코딩 유닛은 데이터 심볼 각각에 대한 구간을 생성하며 상기 구간은 상기 구간의 시작 지점과 길이에 기초하여 표현되고, 데이터 심볼 각각에 대해 상기 구간을 업데이트하며, 상기 업데이트된 구간이 특정 범위 내에 포함되어 있는지 여부를 확인하고, 상기 확인 결과를 기초로 업데이트된 구간을 재정규화하도록 구성된 것을 특징으로 하는 장치를 제공한다.
발명의 실시를 위한 형태
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 의해서 설명되는 본 발명의 구성과 작용은 하나의 실시예로서 설명되는 것이며, 이것에 의해서 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미를 명확히 기재하므로, 본 발명의 설명에서 사용된 용어의 명칭만으로 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.
또한, 본 발명에서 사용되는 용어들은 발명을 설명하기 위해 선택된 일반적인 용어들이나, 유사한 의미를 갖는 다른 용어가 있는 경우 보다 적절한 해석을 위해 대체 가능할 것이다. 예를 들어, 신호, 데이터, 샘플, 픽쳐, 프레임, 블록 등의 경우 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다. 또한, 범위, 길이, 구간(또는 코딩 구간, 산술 코딩 구간), 및 구간 길이는 각각의 산술 코딩 과정에서 적절히 대체되어 해석될 수 있을 것이다.
도 1 및 2는 본 발명이 적용되는 실시예에 따라 비디오 신호를 처리하는 인코더 및 디코더의 개략적인 블록도를 나타낸다.
도 1의 인코더(100)는 변환 유닛(110), 양자화 유닛(120), 및 엔트로피 인코딩 유닛(130)을 포함한다. 도 2의 디코더(200)는 엔트로피 디코딩 유닛(210), 역양자화 유닛(220), 및 역변환 유닛(230)을 포함한다.
상기 인코더(100)는 비디오 신호를 수신하여 상기 비디오 신호로부터 예측된 신호를 차감함으로써 예측 에러를 생성한다.
생성된 상기 예측 에러는 변환 유닛(110)으로 전송된다. 상기 변환 유닛(110)은 예측 에러에 변환 방식을 적용함으로써 변환 계수를 생성한다.
상기 양자화 유닛(120)은 상기 생성된 변환 계수를 양자화하여 상기 양자화된 계수를 엔트로피 인코딩 유닛(130)으로 전송한다.
상기 엔트로피 인코딩 유닛(130)은 상기 양자화된 계수에 대한 엔트로피 코딩을 수행하며 엔트로피 코딩된 신호를 출력한다. 이 경우, 상기 엔트로피 코딩은 압축된 데이터 시퀀스로 들어가는 비트의 개수를 최적으로 정의하기 위해 사용되는 과정이다. 최적의 엔트로피 코딩 기술 중 하나인 산술 코딩은 다중 심볼을 단일한 실수로 나타내는 방법이다.
통상의 코딩 조건에서, 압축된 데이터 버퍼 내의 비트의 값들은 거의 동일한 확률을 가지며, n 개의 아웃스탠딩(outstanding) 비트 시퀀스의 확률은 1/2n 이기 때문에 아주 긴 아웃스탠딩 비트들의 시퀀스가 나오는 경우는 매우 드물다. 그러나, 산술 코딩의 실제 구현은 제한되지 않은 개수의 아웃스탠딩 비트를 우연히 (또는 의도적으로) 생성하는 경우를 포함하는 어떠한 입력 데이터 및 심볼 집합의 확률과도 동작하도록 설계되어야 한다.
소프트웨어 (범용 프로세서) 구현을 위해 설계된 인코더는 아웃스탠딩 비트의 계수기를 채택하거나, 단순히 압축된 데이터 버퍼 상의 캐리들을 가정한다. 반면에, 특수한 프로세서(ASICs)를 사용하여 구현된 인코더는 일반적으로 각 동작에 있어서 요구되는 사이클의 개수에 대한 강한 제한을 필요로 하며, 따라서 평균 및 최악의 경우 사이에서 매우 큰 변동을 감당할 수 없다.
이러한 문제에 대한 하나의 해결책은 "비트 스터핑(stuffing)"이라 불리는 것으로서, 한 번에 하나의 비트를 출력하는 산술 코딩기를 위해 개발되었다. 연속되는 "1"의 비트들의 개수가 특정한 제한을 초과하는 경우에, 캐리 전파를 제한하기 위해 "0"의 비트가 인위적으로 삽입될 수 있다. 이러한 추가적 비트는 어떠한 유용한 정보도 가지고 있지 않으므로 압축에서 약간의 손실이 발생하지만, 이러한 손실은 상대적으로 작게 유지될 수 있다.
이러한 해결책의 문제점은, 완전한 바이트(단일 비트가 아닌 8 비트 워드)의 집합을 생성하는 산술 코딩의 새로운 구현방식에서는 효율적이지 않다는 것이다. 여기서 말하는 새로운 구현방식이란 데이터 버스 및 병렬 처리가 값싸게 이루어지는 반면에 클록 속도를 높이는 것이 곤란한 경우, 산술부호화기가 단일 비트단위가 아닌 바이트 단위의 정보를 생성하는 방식을 의미한다.
이러한 구현에 대해서는 "비트 스터핑" 접근 방식은 "바이트 스터핑"으로 확장될 수 없으며, 다시 말해 캐리 전파를 제한하기 위해 0 바이트를 인위적으로 추가할 수 없다. 이러한 방식이 원하는 결과를 가져 올 수는 있겠지만, 어떠한 정보도 담고 있지 않은 8 비트가 추가되어야 하고, 압축에서의 상대적 손실이 과도해지기 때문에 이러한 방식은 실제로 구현되기 어렵다.
따라서, 본 발명은 범용 또는 특수한 하드웨어에서 모두 효율적으로 구현할 수 있으며 바이트 재정규화에 기반한 산술 코딩의 구현을 가능하게 하는 기술을 정의한다.
또한, 본 발명은 압축에서의 손실이 거의 없이 압축된 데이터 바이트에 대한 변경의 최대 개수를 효과적으로 제한할 수 있다.
본 발명의 일 측면에서, 상기 엔트로피 인코딩 유닛(130)은 각각의 데이터 심볼에 대한 구간을 생성할 수 있으며, 상기 데이터 심볼 각각에 대하여 상기 구간을 업데이트할 수 있다. 이 경우, 상기 구간은 시작 지점 및 구간의 길이를 기반으로 나타낼 수 있다.
상기 엔트로피 인코딩 유닛(130)은 상기 업데이트된 구간이 특정한 범위에 포함되는지를 확인할 수 있으며, 상기 확인을 기반으로 상기 업데이트된 구간을 재정규화할 수 있다.
상기 업데이트된 구간이 특정한 범위에 포함되는 경우, 상기 엔트로피 인코딩 유닛(130)은 상기 특정한 범위 내에 위치한 비트를 버퍼에 저장할 수 있으며, 상기 업데이트된 구간을 재정규화할 수 있다.
도 2의 디코더(200)는 도 1의 인코더(100)에 의한 신호 출력을 수신한다.
상기 엔트로피 디코딩 유닛(210)은 상기 수신된 신호에 대한 엔트로피 디코딩을 수행한다. 예를 들어, 상기 엔트로피 디코딩 유닛(210)은 코드 값의 위치 정보를 포함하는 신호를 수신하고, 상기 코드 값의 위치 정보에 해당하는 심볼을 확인하며, 상기 확인된 심볼을 디코딩할 수 있다.
산술 코딩에서, 상기 디코딩된 시퀀스는 압축된 시퀀스의 코드 값에 의해 결정될 수 있다. 디코딩 과정에서, 상기 코드 값은 올바른 시퀀스를 디코딩하기 위해 사용될 수 있다.
상기 엔트로피 디코딩 유닛(210)은 k번째 정규화된 코드 값으로부터 k번째 올바른 값을 검색할 수 있으며, 이후 상기 k번째 올바른 값 및 k번째 정규화된 코드 값으로부터 (k+1)번째 정규화된 코드 값을 계산할 수 있다.
한편, 상기 역양자화 유닛(220)은 상기 엔트로피 디코딩된 신호로부터 양자화 단계 크기에 대한 정보를 기반으로 변환 계수를 획득한다.
상기 역변환 유닛(230)은 상기 변환 계수에 대한 역변환을 수행함으로써 예측 에러를 획득한다. 상기 예측 에러를 예측 신호에 더함으로써 복원된 신호가 생성된다.
도 3은 산술 코딩 구간 데이터를 업데이트하기 위해 요구되는 동작의 집합을 예시하는 흐름도이다.
본 발명이 적용되는 산술 코딩기는 데이터 소스 유닛(310), 데이터 모델링 유닛(320), 1차 지연 유닛(330) 및 2차 지연 유닛(340)을 포함할 수 있다.
상기 데이터 소스 유닛(310)은 다음의 수학식 1과 같이 M개의 심볼들의 알파벳으로부터 각각 N개의 무작위적 심볼들의 시퀀스를 생성할 수 있다.
Figure pct00001
이 경우, 본 발명은 상기 데이터 심볼들이 다음의 수학식 2와 같이 영이 아닌 확률을 가지면서 모두 독립적이며 동일하게 분포된 것으로 가정한다.
Figure pct00002
또한, 본 발명은 다음 수학식 3 과 같이 누적 확률 분포를 정의할 수 있다.
Figure pct00003
이 경우, c(s)는 엄격하게 단조적(monotonic)이며, c(0) = 0 이고 c(M ) = 1 이다.
이러한 조건들이 실제의 복잡한 매체 신호에서 발견되는 것과 크게 다른 것으로 보일 수도 있지만, 사실상 모든 엔트로피 코딩 도구들이 이러한 가정으로부터 도출된 기술에 기반하고 있으며, 따라서 본 발명은 이러한 단순한 모델로 제한된 구현을 제공할 수 있다.
산술 코딩은 주로 실수 직선 상의 [bk, bk + lk ) 형태의 반개방 구간을 업데이트하는 단계들로 구성되며, 이 때 bk 는 구간 베이스를 나타내고 lk 는 그 길이를 나타낸다. 이들 구간은 각각의 데이터 심볼 sk 에 따라 업데이트되며, 초기 조건 b1 = 0 및 l1 = 1 에서 시작하여 다음 수학식 4 및 5 를 사용하여 k = 1, 2, . . . , N에 대해 재귀적으로 업데이트된다.
Figure pct00004
Figure pct00005
이 경우, 상기 구간들은 다음 수학식 6 과 같이 점진적으로 내부에 포함된다.
Figure pct00006
상기 설명한 것과 같이, 도 3 을 참조하면, 상기 데이터 모델링 유닛(320)은 N 개의 무작위 심볼들 Sk 의 시퀀스를 수신할 수 있으며 상기 누적 확률 분포 C(Sk) 및 심볼 확률 p(Sk)을 출력할 수 있다.
구간 길이 lk+1 는 데이터 모델링 유닛(320)으로부터 출력된 Sk 및 1 차 지연 유닛(330)으로부터 출력된 lk 의 곱셈 연산에 의해 획득될 수 있다.
또한, 상기 구간 베이스 bk+1 는 2 차 지연 유닛(340)으로부터 출력된 bk 의 덧셈 연산 및 C(Sk)와 lk 의 곱셈으로부터 획득될 수 있다.
본 발명이 적용되는 산술 코딩은 곱셈과 덧셈의 산술 연산들로 정의될 수 있다. 이 경우, bk 및 lk 는 무한 정밀도(infinite precision)로 나타낼 수 있으나, 이는 처음에 직관적으로 간단한 버전에서 표현을 도입하기 위해 사용된다. 이후에 본 발명은 유한 정밀도(finite precision) 동작을 사용하여 산술 코딩을 근사하게 구현하는 방법을 제공한다.
최종 구간 [bN+1, bN+1 + lN+1)이 계산된 이후에 산술 인코딩된 메시지는 코드 값
Figure pct00007
∈ [bN+1, bN+1 + lN+1)에 의해 정의된다. 최대 1 + log2(lN+1) 비트를 사용하여 나타낼 수 있는 값이 하나 존재한다는 것이 증명될 수 있다.
코드 값
Figure pct00008
를 사용하여 시퀀스 S 를 디코딩하기 위해, 본 발명은 다시 초기 조건 b1 = 0 및 l1 = 1 에서 시작하여, 다음 수학식 7 내지 9 를 사용하여 sk, lk, 및 bk 를 점진적으로 획득한다.
Figure pct00009
Figure pct00010
Figure pct00011
이러한 디코딩 과정이 올바른지의 여부는 모든 구간들이 내부에 포함되고,
Figure pct00012
∈ [bN+1, bN+1 + lN+1)인 특성으로부터, 또한 상기 디코더가 상기 인코더에 의해 수행된 동작을 완벽하게 재생한다는 가정에 의해 결론을 내릴 수 있다.
본 발명은 심볼 Bk, Lk, 및 Dk 를 사용하여 각각 bk, lk
Figure pct00013
- bk 의 유한 정밀도(finite precision) 값(통상적으로 정수 값으로 크기가 조정됨)을 나타낼 수 있다. 인코딩의 측면들은 다음 수학식 10 과 11 에 의해 정의될 수 있다.
Figure pct00014
Figure pct00015
이 경우, 곱셈 값을 둘러싸는 이중 대괄호(double brackets)는 상기 곱셈이 유한 정밀도 근사(finite precision approximations)에 의한 것임을 나타낸다.
p(s) = c(s + 1) - c(s) (s = 1, 2,..., M)이므로 상기 수학식 10 은 수학식 4 에 대응된다.
따라서, 상기 디코딩 과정은 다음의 수학식 12 내지 14 와 같이 정의될 수 있다.
Figure pct00016
Figure pct00017
Figure pct00018
도 4 및 5 는 본 발명이 적용되는 실시예에 따라 이진 산술 코딩을 기반으로 비디오 신호를 처리하는 엔트로피 인코딩 유닛 및 엔트로피 디코딩 유닛의 개략적인 블록도를 나타낸다.
도 4 를 참조하면, 상기 엔트로피 인코딩 유닛(130)은 이진화 유닛(410), 컨텍스트(context) 모델링 유닛(420) 및 이진 산술 인코딩 유닛(430)을 포함한다.
상기 이진화 유닛(410)은 데이터 심볼들의 시퀀스를 수신하고 이진화를 수행함으로써 0 또는 1 의 이진화된 값으로 구성된 이진 심볼(bin) 스트링을 출력할 수 있다. 상기 이진화 유닛(410)은 신택스(syntax) 요소들을 이진 심볼들로 매핑할 수 있다. 서로 다른 여러 이진화 과정들, 예를 들어, 단항(unary: U), 끝이 잘린 단항(truncated unary: TU), k 차 Exp-Golomb (EGk), 및 고정 길이(FL) 과정 등이 이진화를 위해 사용될 수 있다. 상기 이진화 과정은 신택스 요소의 유형을 기반으로 선택될 수 있다.
출력된 이진 심볼 스트링은 컨텍스트 모델링 유닛(420)으로 전송된다. 상기 컨텍스트 모델링 유닛(420)은 엔트로피-인코딩에 대한 확률 평가를 수행한다. 즉, 상기 컨텍스트 모델링 유닛(420)은 상기 bin 들의 확률을 평가할 수 있다.
상기 컨텍스트 모델링 유닛(420)은 높은 코딩 효율을 성취하기 위해 필요한 정확한 확률 추정을 제공할 수 있다. 이에 따라, 서로 다른 이진 심볼들에 대해 서로 다른 컨텍스트 모델들이 사용될 수 있고 이러한 컨텍스트 모델의 확률은 이전에 코딩된 이진 심볼의 값들을 기반으로 업데이트될 수 있다.
유사한 분포를 가지는 이진 심볼들은 동일한 컨텍스트 모델을 공유할 수 있다. 이러한 각 이진 심볼에 대한 컨텍스트 모델은 신택스 요소의 유형, 신택스 요소 내에서의 이진 심볼의 위치(binIdx), 휘도/채도(luma/chroma), 인접 정보들 중 최소한 하나를 기반으로 선택될 수 있다.
상기 이진 산술 인코딩 유닛(430)은 출력된 스트링에 대한 엔트로피 인코딩을 수행하고 압축된 데이터 비트들을 출력한다.
상기 이진 산술 인코딩 유닛(430)은 재귀적 구간 분할(recursive interval division)을 기반으로 산술 코딩을 수행한다.
0 내지 1 의 초기값을 가지는 구간(또는 범위)이 이진 심볼의 확률을 기반으로 두 개의 하위 구간들로 분할된다. 인코딩된 비트들은 이진 분수로 변환되는 경우 디코딩된 이진 심볼의 값을 나타내는 두 개의 하위 구간 중 하나를 선택하는 오프셋을 제공한다.
디코딩된 모드의 이진 심볼 이후에, 상기 구간은 선택된 하위 구간을 동일하게 하기 위해 업데이트될 수 있으며, 상기 구간 분할 과정 자체가 반복된다. 상기 구간 및 오프셋은 제한된 비트 정밀도를 가지며, 따라서 상기 구간이 특정한 값 아래로 떨어질 때마다 오버플로우를 방지하기 위해 재정규화(renormalization)가 필요할 수 있다. 상기 재정규화(renormalization)는 각각의 이진 심볼이 디코딩된 이후에 발생할 수 있다.
추정된 확률을 사용하거나 0.5 의 동일한 확률을 가정하여 산술 코딩이 수행될 수 있다. 코딩된 이진 심볼을 우회하기 위해, 범위를 하위 구간으로 분할하는 단계는 시프트 연산을 통해 수행될 수 있으며, 반면에 컨텍스트 코딩된 이진 심볼들에 대해서는 룩업 테이블(look up table)이 필요할 수도 있다.
도 5 를 참조하면, 상기 엔트로피 디코딩 유닛(210)은 이진 산술 디코딩 유닛(510), 컨텍스트 모델링 유닛(520) 및 역이진화 유닛(530)을 포함한다.
상기 엔트로피 디코딩 유닛(210)은 도 4 에 대한 기술에서 설명된 상기 인코딩 과정을 역으로 수행할 수 있다.
이진 산술 디코딩 유닛(510)에서, 상기 업데이트된 구간은 재귀적 구간 분할을 위해 다시 제공될 수 있다. 상기 업데이트된 컨텍스트는 정확한 확률 평가를 위해 이진 산술 디코딩 유닛(510)에서 )컨텍스트 모델링 유닛(520)으로 다시 제공될 수 있다.
상기 컨텍스트 모델링 유닛(520)은 신택스 요소의 유형을 기반으로 컨텍스트를 선택할 수 있다. 엔트로피 디코딩 유닛(210)에서, 디코딩된 상기 이진 심볼은 동일한 신택스 요소의 처리를 계속하여야 할지, 또는 다른 신택스 요소로 전환할지를 결정하기 위해 다시 제공될 수 있다. 상기 컨텍스트 모델링 유닛(520)은 또한 상기 신택스 요소 내의 이진 심볼의 위치(binIdx)를 기반으로 컨텍스트를 선택할 수 있다.
상기 역이진화 유닛(530)은 상기 이진 심볼 스트링을 다중값을 가지는 심볼로 변환할 수 있다.
도 6 은 본 발명이 적용되는 일 실시예에 따라 능동 비트(active bit)의 윈도우에서의 산술에 의한 코딩 과정 을 예시하는 도면이다.
실제적인 산술 코딩의 구현을 위해, 본 발명은 모든 덧셈이 무한 정밀도로 수행되지만 곱셈은 유한 정밀도를 사용하여 일부 특성이 보존되도록 근사된다는 사실을 고려할 수 있다. 본 명세서에서는 본 발명의 이해를 위해 필요한 내용만 다룰 것이다.
산술 코딩의 중요한 측면 중 하나는 덧셈에 대해서는 무한한 정밀도를 가지는 산술 과정으로 간주될 수 있지만, 곱셈에서는 정확한 곱셈을 근사값으로 대체한다는 것이다. 이때, 근사값은 모든 연산이 묵시적으로 무한 정밀도 레지스터로서 수행되는 것을 보장한다.
이러한 해석에 기초하여, 코딩 과정은 도 6 에 보인 것과 같이 능동 비트(active bit)의 "윈도우(window)"에서의 산술로 수행될 수 있다. 도 6 에서, 심볼 'a'는 임의의 비트 값을 나타내며, B 는 스케일된 b 의 소수점 이하 값을 2P 를 곱해 정수화한 값이다 .
구간 길이 lk 가 감소하기 때문에, 재정규화라 불리는 과정에서 P 를 주기적으로 증가시키고, L = 2Pl 의 값들의 크기를 재조정하는 것이 필요하다. 재정규화 동안, 개별적 비트들 또는 전체 바이트들이 레지스터 워드로부터 압축된 데이터를 포함하고 있는 버퍼로 복사된다.
도 6 에서, 상기 비트들은 '안정된(settled)' 것으로 불리고 '아웃스탠딩'은 압축된 데이터를 가지고 있는 버퍼로 이미 이동된 비트들을 나타내며, 따라서 산술 연산에서 능동적으로 사용되지 않을 수 있다. 그러나, 도 6 을 살펴보면, 본 발명의 중요한 측면 중 하나는 이후의 덧셈으로부터의 이진 산술 캐리로 인해 변경될 가능성이 있는 아웃스탠딩 비트가 임의의 개수로 존재할 수 있다는 것이다.
도 7 은 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간에 대한 재정규화 동작을 예시하는 도면이다.
산술 코딩의 실제적 구현에 있어서, 연산은 유한 정밀도 레지스터에서 실행되므로, 출력되어야 할 구간의 상위 비트가 결정되면, 상기 상위 비트가 출력될 수 있으며 상기 재정규화가 구간의 폭을 확장하기 위해 수행될 수 있다.
도 7 에 도시된 것과 같이, 두꺼운 실선은 선택된 구간들을 나타낸다. 도 7 의 두 번째 선에서, 출력되어야 할 구간 [0.64, 0.8)의 비트 값이 명백히 0.5 보다 크므로, 코딩된 비트 '1'이 이 시점에서 출력될 수 있으며, 구간 [0.5, 1.0)가 확장된 구간 [0.0, 1.0)에 매칭될 수 있다. 이러한 단계들을 통해, 선택된 구간들이 재정규화될 수 있다.
도 8 은 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간의 가능한 위치를 예시하는 도면이다.
이하의 설명에서, 본 발명은 산술 코딩 연산이 P-비트 레지스터로 수행되는 것으로 가정하지만(예를 들어, P = 32 또는 P = 64), 표시를 간단히 하기 위해, 본 발명은 Pc 비트들의 "캐리 정밀도(carry-precision)"를 정의할 수 있으며, 이는 캐리 전파를 위해 유보된 추가적인 메모리 바이트를 포함할 수 있다. 예를 들어, P = 32 비트인 레지스터를 갖는 프로세서를 사용하지만 캐리 전파를 위해 유보된 별도의 바이트를 갖는 구현이 편의상 Pc = 40 비트를 가지는 레지스터를 사용하는 구현으로 해석된다. 또한, 본 발명은 구간 베이스 및 길이 Bk 및 Lk 를 표시함에 있어 인덱스 k 를 생략하여 B 와 L 이 가장 최근의 인덱스 값들을 나타내는 것으로 가정한다.
본 발명은 구간을 조정하는 방법을 제안한다. 이 경우, 상기 인코더 및 디코더는 B 및 L 을 추적할 수 있으며, 상기 인코더 및 디코더 모두 캐리 전파를 제한하는 것이 바람직한 상황임을 확인할 수 있다.
본 발명은 상기 인코더 및 디코더가 B 와 L 을 변경하기 위해 동일한 규칙을 사용하고, 이러한 규칙이 정확한 산술 디코딩을 위한 조건들에 위배되지 않는 한 정확한 디코딩을 수행할 수 있다.
본 발명의 일 측면에서, 상기 유한 정밀도 산술 코딩은 자신의 구간 길이 L 이 특정한 값보다 작을 경우 이를 재정규화할 필요가 있다.
도 8 은 특정한 조건이 충족될 때의 가능한 상황들을 도시한다. 예를 들어, 조건 L < 2R 이 충족되면(예를 들어, R = 24 가 32-비트 산술에 대해 사용될 수 있다), 구간의 가능한 상황을 도 8 에 도시된 것과 같이 나타낼 수 있다. 이 경우, 본 발명은 다음의 수학식 15 와 같이 비트 위치를 정의할 수 있다.
Figure pct00019
Figure pct00020
또한, 구간이 수학식 16 과 같이 내부에 포함되는 경우, 위치 R 및 그 위의 비트들은 캐리에 의해 변경되지 않을 것이며, 따라서 즉시 압축된 데이터 버퍼에 저장될 수 있고, 상기 구간은 재정규화될 수 있다.
도 9 는 본 발명이 적용되는 일 실시예에 따른 산술 코딩 구간의 조정 과정을 예시하는 도면이다.
구간 [C, D)가 구간 [B, B +L)을 포함하지 않는 경우, 인코더는 캐리가 발생할 지의 여부를 알 수 없다. 이 경우, 본 발명은 두 개의 실시예를 제안한다.
제 1 실시예에서, 본 발명은 어떠한 아웃스탠딩 바이트의 임시 저장도 가정하지 않으며, 즉, Pc = P 이다. 제 2 실시예에서, 본 발명은 적은 개수의 아웃스탠딩 바이트가 약간의 캐리를 허용하기 위해 저장되는 것을 고려하며, Pc > P 이다.
본 발명의 일 측면에서, 인코더 및 디코더에 사용되는 하기 알고리즘은 구간 재정규화를 위한 결정을 설명한다. 도 9 에서, 조건에 따른 상단 구간의 선택 결과에 따라 캐리의 발생여부가 내포적으로 결정되게 된다.
상기 엔트로피 인코딩 유닛은 이하의 수학식 17 과 같이 비트 위치를 산출할 수 있다.
Figure pct00021
여기서, T 는 비트 위치에 대한 경계를 나타내고, 예를 들어 D 보다 더 타이트한 경계(tighter bound)를 의미할 수 있다.
상기 엔트로피 인코딩 유닛은 T 가 B 보다 큰지를 확인할 수 있다. T 가 B 보다 큰 경우, 상기 엔트로피 인코딩 유닛은 L 이 2S 보다 큰지를 확인할 수 있다. L 이 2S 보다 큰 경우에는 리턴된다. 또한, 상기 엔트로피 인코딩 유닛은 상위 부분(B+L-T)의 길이가 하위 부분 (T-B)의 길이보다 작은지의 여부, 또는 T 가 0 과 같은지의 여부를 확인할 수 있다.
상위 부분 (B+L-T)의 길이가 하위 부분 (T-B)의 길이보다 작거나, T 가 0 과 같은 경우에, 상기 엔트로피 인코딩 유닛은 L 을 (T-B)로 설정할 수 있다. 그렇지 않은 경우, 상기 엔트로피 인코딩 유닛은 L 을 (B+L-T)로 설정하고 B 를 T 로 설정할 수 있다.
그 이후, 상기 엔트로피 인코딩 유닛은 구간을 재정규화할 수 있다.
이 경우, 본 발명은 L < 2R 및 S ≤ R 을 가정하며, 조건 T = 0 은 부호 없는 정수의 산술 오버플로우가 있는 경우에만 발생한다. 이는 일부 구현에서 캐리의 전파를 시작하기 위해 사용되는 조건과 관련되어 있다.
제 2 실시예에서, 상기 엔트로피 인코딩 유닛은 버퍼 값으로 제한된 결정을 수행할 수 있다. 본 발명은 최근의 데이터 바이트를 이러한 바이트에서 가능한 캐리와 함께 버퍼에 저장할 수 있다. 상기 설명한 것과 같이, 이는 추가적인 비트를 갖는 레지스터를 갖는 것과 동등할 수 있으며, 본 발명은 다음과 같은 알고리즘을 사용할 수 있다.
상기 엔트로피 인코딩 유닛은 상기 수학식 17 에서와 같이 비트 위치를 계산할 수 있다. 이 경우, 본 발명은 Pc 비트의 정밀도를 가정할 수 있다.
또한, 상기 엔트로피 인코딩 유닛은 T 가 0 과 같은지 확인할 수 있다.
T 가 0 과 같은 경우, 상기 엔트로피 인코딩 유닛은 L 을 (T-B)로 설정할 수 있다. 이 후, 상기 엔트로피 인코딩 유닛은 구간을 재정규화할 수 있다.
위에서 설명된 것처럼, 본 발명은 확장된 정밀도 레지스터에서의 오버플로우의 가능성을 제거하거나 아웃스탠딩 비트를 가지는 버퍼에서 동등한 오버플로우를 생성하기 위해 구간을 조정할 수 있다.
도 10 은 본 발명이 적용되는 일 실시예에 따른 제한된 캐리 연산에 의한 산술 코딩을 수행하는 방법을 예시하는 흐름도이다.
상기 이진 산술 인코딩 유닛(440)은 재귀적 구간 분할을 수행할 수 있다. 즉, 0 내지 1 의 초기값을 가지는 구간이 이진 심볼의 확률을 기반으로 두 개의 하위 구간으로 분할될 수 있다.
상기 이진 산술 인코딩 유닛(440)은 코딩된 이진 심볼의 값을 나타내는 두 개의 하위 구간 중 하나를 선택할 수 있다. 상기 구간은 선택된 하위 구간이 동일하게 되도록 업데이트될 수 있다. 이 경우, 코딩 구간의 범위 및 베이스는 유한한 개수의 비트로 나타내어지며, 정밀도의 하락을 방지하기 위해 구간을 재정규화하는 것이 필요하다. 또한, 상기 베이스의 상위 비트는 재정규화 동안 코딩된 비트로서 출력될 수 있다. 범위가 임계값보다 작은 경우에 상기 코딩 구간(베이스, 베이스 + 범위)은 재정규화될 수 있다.
캐리 전파 및 코딩된 비트의 출력을 처리하기 위해, 상기 코딩된 비트들은 향후의 캐리 전파가 비트 값들에 영향을 미치지 않는다는 것이 확인되기 전까지는 출력되지 않는다.
본 발명의 일 측면에서, 상기 이진 산술 인코딩 유닛(440)은 각 데이터 심볼에 대한 구간을 생성할 수 있다(S1010). 각 데이터 심볼에 대하여 생성된 상기 구간은 이진 심볼의 확률을 기반으로 업데이트될 수 있다(S1020).
상기 이진 산술 인코딩 유닛(440)은 구간들이 내부에 포함되는지의 여부를 확인할 수 있다(S1030). 예를 들어, 상기 이진 산술 인코딩 유닛(440)은 상기 업데이트된 구간이 특정한 범위에 포함되는지의 여부를 확인할 수 있다. 즉, 도 8 을 참조하면, 도 8(a)은 구간 [B, B+L)이 특정한 범위 [C, D)에 포함되어 있음을 보여 주며, 도 8(b)는 구간 [B, B+L)이 특정한 범위 [C, D)에 포함되지 않았음을 보여 준다. 따라서, 도 8(a)에 도시된 것과 같이, 구간 [B, B+L)간 특정한 범위 [C, D)에 포함되는 경우, 위치 R 및 그 위에서의 비트들은 캐리에 의해 변경되지 않을 수 있다. 따라서, 위치 R 및 그 위에서의 상기 비트들은 버퍼에 저장될 수 있다.
이 후, 상기 이진 산술 인코딩 유닛(440)은 확인 결과를 기반으로 상기 업데이트된 구간을 재정규화할 수 있다(S1040).
도 11 은 본 발명이 적용되는 일 실시예에 따라 산술 코딩 구간을 재정규화하는 방법을 예시하는 흐름도이다.
본 발명의 일 측면에서, 상기 이진 산술 인코딩 유닛(440)은 구간 조정을 수행할 수 있다.
먼저, 상기 이진 산술 인코딩 유닛(440)은 특정한 범위를 정의할 수 있다(S1110). 도 9 를 참조하면, 상기 특정한 범위 [C, D)는 수학식 15 와 같이 정의될 수 있다.
상기 이진 산술 인코딩 유닛(440)은 구간이 특정한 범위에 포함되는지의 여부를 확인할 수 있다(S1120). 예를 들어, 상기 이진 산술 인코딩 유닛(440)은 상기 구간이 도 8(a) 또는 도 8(b)에 해당하는지의 여부를 확인할 수 있다.
상기 구간이 특정한 범위에 포함되는 경우, 상기 이진 산술 인코딩 유닛(440)은 상기 특정한 범위에 위치한 비트를 버퍼에 저장할 수 있다(S1130). 그렇지 않은 경우, 상기 이진 산술 인코딩 유닛(440)은 특정한 조건 하에서 상기 구간의 상위 부분 또는 하위 부분 중 하나를 선택할 수 있다(S1140).
또한, 상기 이진 산술 인코딩 유닛(440)은 상기 구간을 재정규화할 수 있다(S1150).
도 12 는 본 발명이 적용되는 일 실시예에 따라 산술 코딩 구간을 조정하는 방법을 예시하는 흐름도이다.
본 발명의 일 측면에서, 상기 이진 산술 인코딩 유닛(440)은 구간 재정규화에 대한 결정을 수행할 수 있다.
상기 엔트로피 인코딩 유닛은 수학식 17 과 같이 비트 위치를 계산할 수 있다(S1210).
상기 엔트로피 인코딩 유닛(440)은 비트 위치의 값이 구간 베이스의 값보다 큰지를 확인할 수 있다(S1220). 예를 들어, 도 9 를 참조하면, 상기 엔트로피 인코딩 유닛(440)은 T 가 B 보다 큰지를 확인할 수 있다.
비트 위치의 값이 구간 베이스의 값보다 큰 경우에, 상기 엔트로피 인코딩 유닛(440)은 또한 상기 구간의 상위 부분의 길이가 하위 부분의 길이보다 작은지를 확인할 수 있다(S1230). 예를 들어, 도 9 를 참조하면, 상기 엔트로피 인코딩 유닛(440)은 상위 부분(B+L-T)의 길이가 하위 부분 (T-B)의 길이보다 작은지를 확인할 수 있다.
상기 상위 부분의 길이가 상기 하위 부분의 길이보다 작은 경우에는, 상기 엔트로피 인코딩 유닛(440)은 상기 구간의 길이를 상기 하위 부분의 길이로 설정할 수 있다(S1240).
그렇지 않은 경우, 상기 엔트로피 인코딩 유닛(440)은 상기 구간의 길이를 상기 상위 부분의 길이로 설정할 수 있으며, 상기 구간의 시작 지점을 비트 위치로 설정할 수 있다(S1250).
이 후, 상기 엔트로피 인코딩 유닛(440)은 상기 구간을 재정규화할 수 있다(S1260).
도 13 및 14 는 본 발명이 적용되는 또 다른 실시예에 따라 산술 코딩 구간을 조정하는 또 다른 방법을 예시하는 흐름도이다.
본 발명의 또 다른 측면에서, 상기 엔트로피 인코딩 유닛(440)은 버퍼 값들로 제한된 결정을 수행할 수 있다. 본 발명은 최근의 데이터 바이트를 이러한 바이트에만 가능한 캐리들을 담아 버퍼에 저장할 수 있다. 상기 설명한 것과 같이, 이는 추가적인 비트를 갖는 레지스터와 동등하며, 본 발명은 다음과 같은 알고리즘을 사용할 수 있다.
상기 이진 산술 인코딩 유닛(440)은 특정한 범위를 정의할 수 있다(S1310). 도 9 를 참조하면, 상기 특정한 범위[C,D)는 수학식 15 와 같이 정의될 수 있다.
상기 이진 산술 인코딩 유닛(440)은 상기 구간이 상기 특정한 범위에 포함되는지 확인할 수 있다(S1320). 예를 들어, 상기 이진 산술 인코딩 유닛(440)은 상기 구간이 도 8(a) 또는 도 8(b)에 해당하는지 확인할 수 있다.
상기 구간이 상기 특정한 범위에 포함되는 경우, 상기 이진 산술 인코딩 유닛(440)은 상기 특정한 범위 내에 위치한 비트를 버퍼에 저장할 수 있다(S1330). 그렇지 않은 경우, 상기 이진 산술 인코딩 유닛(440)은 확장 정밀도 레지스터에서의 오버플로우 또는 아웃스탠딩 비트를 가진 버퍼에서의 오버플로우 가능성을 제거하기 위해 상기 구간을 조정할 수 있다(S1340). 또한, 상기 이진 산술 인코딩 유닛(440)은 상기 구간을 재정규화할 수 있다(S1350).
본 발명의 또 다른 실시예에서, 상기 엔트로피 인코딩 유닛(440)은 위의 수학식 17 에서와 같이 비트 위치(S1410)를 계산할 수 있다.
상기 엔트로피 인코딩 유닛(440)은 비트 위치가 0 과 같은지 확인할 수 있다(S1420).
비트 위치가 0 과 같은 경우, 상기 엔트로피 인코딩 유닛(440)은 구간 길이를 비트 위치로부터 구간 베이스를 차감한 값으로 설정할 수 있다(S1430).
이후에, 상기 엔트로피 인코딩 유닛(440)은 구간을 재정규화할 수 있다(S1440).
상기 기술된 것과 같이, 본 발명에서 설명한 실시예들은 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다. 예를 들어, 상기 도 1 내지 도 5 에서 도시한 기능 유닛들은 컴퓨터, 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다.
또한, 본 발명이 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, 인터넷 스트리밍 서비스 제공 장치, 3 차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 및 데이터 신호를 처리하기 위해 사용될 수 있다.
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.
이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.

Claims (12)

  1. 데이터 심볼에 대한 산술 코딩을 수행하는 방법에 있어서,
    데이터 심볼 각각에 대한 구간을 생성하는 단계, 여기서 상기 구간은 상기 구간의 시작 지점과 길이에 기초하여 표현됨;
    데이터 심볼 각각에 대한 상기 구간을 업데이트하는 단계;
    상기 업데이트된 구간이 특정 범위(range) 내에 포함되어 있는지 여부를 확인하는 단계;
    아웃스탠딩 비트(outstanding bits)를 줄이기 위해 상기 업데이트된 구간을 조정하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 조정된 구간을 재정규화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 업데이트된 구간이 특정 범위 내에 포함되어 있지 않은 경우, 상기 업데이트된 구간의 상위 부분과 하위 부분 중 하나를 선택하는 단계를 더 포함하되,
    상기 업데이트된 구간은 선택된 부분에 기초하여 조정되는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서,
    상기 업데이트된 구간 내에 임계 지점(threshold point)을 산출하는 단계; 및
    상기 임계 지점부터 상기 상위 부분까지의 제 1 거리와 상기 임계 지점부터 상기 하위 부분까지의 제 2 거리를 비교하는 단계
    를 더 포함하되,
    상기 업데이트된 구간은 상기 비교 결과에 기초하여 조정되는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 제 1 거리가 상기 제 2 거리보다 짧은 경우, 상기 업데이트된 구간의 길이는 상기 제 2 거리로 설정되는 것을 특징으로 하는 방법.
  6. 제 4 항에 있어서,
    상기 제 1 거리가 상기 제 2 거리보다 짧지 않은 경우, 상기 업데이트된 구간의 길이는 상기 제 1 거리로 설정되고, 상기 업데이트된 구간의 시작 시점은 상기 임계 지점으로 설정되는 것을 특징으로 하는 방법.
  7. 이진 산술 코딩 유닛을 포함하는 데이터 심볼에 대한 산술 코딩을 수행하는 장치에 있어서,
    상기 이진 산술 코딩 유닛은
    데이터 심볼 각각에 대한 구간을 생성하며 상기 구간은 상기 구간의 시작 지점과 길이에 기초하여 표현되고,
    데이터 심볼 각각에 대해 상기 구간을 업데이트하며,
    상기 업데이트된 구간이 특정 범위 내에 포함되어 있는지 여부를 확인하고,
    상기 확인 결과를 기초로 업데이트된 구간을 재정규화하도록 구성된 것을 특징으로 하는 장치.
  8. 제 7 항에 있어서,
    상기 업데이트된 구간이 특정 범위 내에 포함되는 경우, 상기 특정 범위 내에 위치한 비트가 버퍼에 저장되고 상기 업데이트된 구간이 재정규화되는 것을 특징으로 하는 장치.
  9. 제 7 항에 있어서,
    상기 업데이트된 구간이 특정 범위 내에 포함되어 있지 않은 경우, 상기 이진 산술 코딩 유닛은 상기 업데이트된 구간의 상위 부분과 하위 부분 중 하나를 선택하고,
    상기 업데이트된 구간은 선택된 부분에 기초하여 조정되는 것을 특징으로 하는 장치.
  10. 제 9 항에 있어서,
    상기 이진 산술 코딩 유닛은 상기 상위 부분의 길이와 상기 하위 부분의 길이를 비교하고,
    상기 업데이트된 구간은 상기 비교 결과를 기초로 하여 재정규화되는 것을 특징 으로 하는 장치.
  11. 제 10 항에 있어서,
    상기 상위 부분의 길이가 상기 하위 부분의 길이보다 작은 경우, 상기 업데이트된 구간의 길이는 상기 하위 부분의 길이로 설정되는 것을 특징으로 하는 장치.
  12. 제 10 항에 있어서,
    상기 상위 부분의 길이가 상기 하위 부분의 길이보다 작지 않은 경우, 상기 업데이트된 구간의 길이는 상기 상위 부분의 길이로 설정되고, 상기 업데이트된 구간의 시작 지점이 비트 위치로 설정되는 것을 특징으로 하는 장치.
KR1020167032973A 2014-06-29 2015-06-29 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 KR101898664B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462018644P 2014-06-29 2014-06-29
US62/018,644 2014-06-29
PCT/KR2015/006621 WO2016003130A1 (ko) 2014-06-29 2015-06-29 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170002478A true KR20170002478A (ko) 2017-01-06
KR101898664B1 KR101898664B1 (ko) 2018-09-13

Family

ID=55019596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167032973A KR101898664B1 (ko) 2014-06-29 2015-06-29 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20180205952A1 (ko)
EP (1) EP3163876A4 (ko)
JP (1) JP6426212B2 (ko)
KR (1) KR101898664B1 (ko)
CN (1) CN106537914B (ko)
WO (1) WO2016003130A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108401158B (zh) * 2017-02-07 2021-01-22 深圳市中兴微电子技术有限公司 一种上下文自适应二元算术编码重归一化实现方法和装置
RU2702724C2 (ru) * 2018-02-19 2019-10-09 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Способ совместного арифметического и помехоустойчивого кодирования и декодирования
US11218737B2 (en) * 2018-07-23 2022-01-04 Google Llc Asymmetric probability model update and entropy coding precision
RU2718213C1 (ru) * 2019-10-08 2020-03-31 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Способ совместного арифметического и помехоустойчивого кодирования и декодирования

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867114A (en) * 1996-02-29 1999-02-02 Mitel Corporation Method and apparatus for performing data compression
CN105406873B (zh) 2002-09-20 2017-06-23 株式会社Ntt都科摩 算术编码的方法和设备
US6940429B2 (en) * 2003-05-28 2005-09-06 Texas Instruments Incorporated Method of context based adaptive binary arithmetic encoding with decoupled range re-normalization and bit insertion
US7221296B2 (en) * 2005-08-22 2007-05-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
JP4220534B2 (ja) * 2006-05-18 2009-02-04 株式会社アクセル 符号化システムおよび符号化方法
JP4717780B2 (ja) * 2006-11-01 2011-07-06 キヤノン株式会社 符号化装置及びその制御方法
JP2008131526A (ja) * 2006-11-24 2008-06-05 Victor Co Of Japan Ltd 動画像符号化装置及び動画像符号化プログラム
US7982641B1 (en) * 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
SG172459A1 (en) * 2009-12-01 2011-08-29 Intel Corp Compression using range coding with virtual sliding window
TWI403170B (zh) * 2010-05-21 2013-07-21 Univ Nat Chiao Tung 背景調適性二進制算術解碼裝置及其解碼方法
JP2012089917A (ja) * 2010-10-15 2012-05-10 Sony Corp 符号化装置および方法、並びにプログラム
JP2013009167A (ja) * 2011-06-24 2013-01-10 Mitsubishi Electric Corp エントロピー符号化装置、エントロピー復号装置、エントロピー符号化方法及びエントロピー復号方法

Also Published As

Publication number Publication date
JP6426212B2 (ja) 2018-11-21
CN106537914A (zh) 2017-03-22
CN106537914B (zh) 2019-10-11
EP3163876A1 (en) 2017-05-03
JP2017527165A (ja) 2017-09-14
EP3163876A4 (en) 2018-02-28
KR101898664B1 (ko) 2018-09-13
US20180205952A1 (en) 2018-07-19
WO2016003130A1 (ko) 2016-01-07

Similar Documents

Publication Publication Date Title
US7304590B2 (en) Arithmetic decoding apparatus and method
JP5736032B2 (ja) 算術符号化のための適応型2値化
JP2006126810A (ja) 後方適応規則を用いた整数データの無損失適応Golomb−Rice符号化および復号化
KR101898664B1 (ko) 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치
KR20030043621A (ko) 키 데이터 부호화/복호화 방법 및 장치
JP2006129467A (ja) 整数データの無損失適応符号化・復号化
JP4191706B2 (ja) データ符号化及び復号化方法、並びに装置
KR101727449B1 (ko) 영상 양자화 파라미터 복호 방법
CN106851278B (zh) 图像量化参数解码方法及解码器
JP3431368B2 (ja) 可変長符号化/復号化方法及び可変長符号化/復号化装置
DK1504408T3 (en) Arithmetic coding system and method
JPH04343576A (ja) 高能率符号化方法と高能率符号の復号方法
JP2924416B2 (ja) 高能率符号化方法
KR101910376B1 (ko) 연결된 rom-ram 테이블에 기초하여 산술 코딩을 수행하는 방법 및 장치
US20160323603A1 (en) Method and apparatus for performing an arithmetic coding for data symbols
EP1322118A2 (en) Method and apparatus for encoding and decoding key data
JP3965360B2 (ja) 位置インタポレータの符号化/復号化方法、及び装置
JP2003179503A (ja) 可変長復号化方法及び装置
JP2003198380A (ja) 可変長符号化方法及び装置
JP2003204269A (ja) 可変長符号化方法及び装置
JP2003198381A (ja) 可変長符号化方法及び装置
JP2003102012A (ja) 画像符号化装置および画像復号装置並びに画像符号化方法および画像復号方法
JP2003204268A (ja) 可変長符号化方法及び装置
JP2003204270A (ja) 可変長符号化方法及び装置
JP2003158458A (ja) 可変長復号化方法及び装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right