KR20130116754A - 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치 - Google Patents

엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치 Download PDF

Info

Publication number
KR20130116754A
KR20130116754A KR1020120039424A KR20120039424A KR20130116754A KR 20130116754 A KR20130116754 A KR 20130116754A KR 1020120039424 A KR1020120039424 A KR 1020120039424A KR 20120039424 A KR20120039424 A KR 20120039424A KR 20130116754 A KR20130116754 A KR 20130116754A
Authority
KR
South Korea
Prior art keywords
flag
transform coefficient
subblock
coefficient
last position
Prior art date
Application number
KR1020120039424A
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 KR1020120039424A priority Critical patent/KR20130116754A/ko
Priority to PCT/KR2013/002947 priority patent/WO2013157769A1/ko
Publication of KR20130116754A publication Critical patent/KR20130116754A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치가 개시되어 있다. 엔트로피 복호화 방법은 복호화 대상 서브 블록이 마지막 위치 변환 계수 서브 블록인지 여부를 판단하는 단계와 마지막 위치 변환 계수 서브 블록에 포함된 0이 아닌 변환 계수가 한개인지 여부에 대한 정보를 포함한 마지막 위치 변환 계수 서브 블록의 그룹 플래그를 복호화하는 단계를 포함할 수 있다. 따라서, 변환 계수 정보를 적은 비트수로 부호화 및 복호화함으로서 부호화 및 복호화 효율을 높일 수 있다.

Description

엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치{METHODS OF ENTROPY CODING AND ENTROPY DECODING AND APPARATUSES USING THE SAME}
본 발명은 영상 부호화 및 복호화 방법에 관한 것으로 더욱 상세하게는 변환 계수를 엔트로피 부호화하고 복호화하는 방법 및 이러한 방법을 사용하는 장치에 관한 것이다.
최근 HD(High Definition) 영상 및 UHD(Ultra High Definition) 영상과 같은 고해상도, 고품질의 영상에 대한 수요가 다양한 응용 분야에서 증가하고 있다. 영상 데이터가 고해상도, 고품질이 될수록 기존의 영상 데이터에 비해 상대적으로 데이터량이 증가하기 때문에 기존의 유무선 광대역 회선과 같은 매체를 이용하여 영상 데이터를 전송하거나 기존의 저장 매체를 이용해 저장하는 경우, 전송 비용과 저장 비용이 증가하게 된다. 영상 데이터가 고해상도, 고품질화 됨에 따라 발생하는 이러한 문제들을 해결하기 위해서는 고효율의 영상 압축 기술들이 활용될 수 있다.
영상 압축 기술로 현재 픽쳐의 이전 또는 이후 픽쳐로부터 현재 픽쳐에 포함된 화소값을 예측하는 화면 간 예측 기술, 현재 픽쳐 내의 화소 정보를 이용하여 현재 픽쳐에 포함된 화소값을 예측하는 화면 내 예측 기술, 출현 빈도가 높은 값에 짧은 부호를 할당하고 출현 빈도가 낮은 값에 긴 부호를 할당하는 엔트로피 부호화 기술 등 다양한 기술이 존재하고 이러한 영상 압축 기술을 이용해 영상 데이터를 효과적으로 압축하여 전송 또는 저장할 수 있다.
본 발명의 목적은 영상 부호화 효율을 증가시키기 위한 변환 계수를 엔트로피 부호화하는 방법을 제공하는 것이다.
또한, 본 발명의 또 다른 목적은 영상 부호화 효율을 증가시키기 위한 변환 계수를 엔트로피 부호화하는 방법을 수행하는 장치를 제공하는 것이다.
상술한 본 발명의 목적을 달성하기 위한 본 발명의 일 측면에 따른 영상 복호화 방법은 복호화 대상 서브 블록이 마지막 위치 변환 계수 서브 블록인지 여부를 판단하는 단계와 상기 마지막 위치 변환 계수 서브 블록에 포함된 0이 아닌 변환 계수가 한개인지 여부에 대한 정보를 포함한 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그를 복호화하는 단계를 포함할 수 있다. 상기 그룹 플래그는 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하고 상기 0이 아닌 하나의 변환 계수가 서브 블록 내에서 첫번째 스캔 위치에 존재하지 않을 경우 제1 플래그값으로 부호화되고 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그값으로 부호화되는 플래그일 수 있다. 상기 그룹 플래그는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 존재하지 않는 경우 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그값으로 설정되는 플래그일 수 있다. 상기 영상 복호화 방법은 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그인 경우, 마지막 위치 변환 계수 위치에 해당하는 계수 플래그를 제2 플래그로 설정하고 마지막 위치 변환 계수를 제외한 마지막 위치 변환 계수 서브 블록에 포함된 나머지 변환 계수의 계수 플래그를 제1 플래그로 설정하는 단계를 더 포함할 수 있다. 상기 영상 복호화 방법은 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 변환 계수가 스캔 순서상 첫번째 스캔 순서 및 두번째 스캔 순서에 존재하지 않는 경우, 상기 마지막 위치 변환 계수 서브 블록의 계수 플래그를 복호화하는 단계를 더 포함할 수 있다. 상기 영상 복호화 방법은 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 마지막 위치 변환 계수가 스캔 순서상 두번째 스캔 순서에 위치한 경우, 상기 마지막 위치 변환 계수 의 계수 플래그를 제2 플래그로 설정하고 스캔 순서상 첫번째 스캔 순서에 위치한 변환 계수의 계수 플래그를 제2 플래그로 설정하는 단계를 더 포함할 수 있다. 상기 영상 복호화 방법은 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우 스캔 순서상 첫번째 스캔 순서에 위치한 마지막 위치 변환 계수의 계수 플래그를 제2 플래그로 설정하는 단계를 더 포함할 수 있다. 상기 그룹 플래그는 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하는 경우 제1 플래그, 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그로 설정되는 플래그일 수 있다. 상기 영상 복호화 방법은 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우, 마지막 위치 변환 계수의 계수 플래그를 제2 플래그로 설정하고 스캔 순서상 상기 마지막 위치 변환 계수 이전에 존재하는 계수의 계수 플래그를 제1 플래그로 설정하는 단계를 더 포함할 수 있다. 상기 영상 복호화 방법은 제1 서브 블록 및 마지막 위치 변환 계수 서브 블록을 제외한 나머지 서브 블록의 그룹 플래그를 복호화하는 단계와 상기 나머지 서브 블록의 그룹 플래그가 제2 플래그인 경우, 상기 나머지 서브 블록 내에서 스캔 순서상 첫번째 스캔 순서에 해당하는 변환 계수를 제외한 나머지 변환 계수의 계수 플래그를 복호화하는 단계를 포함할 수 있다.
상술한 본 발명의 목적을 달성하기 위한 본 발명의 일 측면에 따른 영상 복호화 장치는 상기 역양자화부로부터 수신된 정보를 기초로 복호화 대상 서브 블록이 마지막 위치 변환 계수 서브 블록인지 여부를 판단하고 상기 마지막 위치 변환 계수 서브 블록에 포함된 0이 아닌 변환 계수의 개수 정보를 포함한 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그를 복호화하는 엔트로피 복호화부와 상기 엔트로피 복호화부로부터 복호화된 정보를 기초로 재정렬을 수행하는 재정렬부를 포함할 수 있다. 상기 그룹 플래그는 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하고 상기 0이 아닌 하나의 변환 계수가 서브 블록 내에서 첫번째 스캔 위치에 존재하지 않을 경우 제1 플래그값으로 부호화되고 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그값으로 부호화되는 그룹 플래그일 수 있다. 상기 그룹 플래그는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 존재하지 않는 경우 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그값으로 설정되는 그룹 플래그일 수 있다. 상기 엔트로피 복호화부는,
상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그인 경우, 마지막 위치 변환 계수 위치에 해당하는 계수 플래그를 제2 플래그로 설정하고 마지막 위치 변환 계수를 제외한 마지막 위치 변환 계수 서브 블록에 포함된 나머지 변환 계수의 계수 플래그를 제1 플래그로 설정하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 변환 계수가 스캔 순서상 첫번째 스캔 순서 및 두번째 스캔 순서에 존재하지 않는 경우, 상기 마지막 위치 변환 계수 서브 블록의 계수 플래그를 복호화하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 마지막 위치 변환 계수가 스캔 순서상 두번째 스캔 순서에 위치한 경우, 상기 마지막 위치 변환 계수의 계수 플래그를 제2 플래그로 설정하고 스캔 순서상 첫번째 스캔 순서에 위치한 변환 계수의 계수 플래그를 제2 플래그로 설정하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우 스캔 순서상 첫번째 스캔 순서에 위치한 마지막 위치 변환 계수의 계수 플래그를 제2 플래그로 설정하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하는 경우 제1 플래그, 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그로 설정하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우, 마지막 위치 변환 계수의 계수 플래그를 제2 플래그로 설정하고 스캔 순서상 상기 마지막 위치 변환 계수 이전에 존재하는 계수의 계수 플래그를 제1 플래그로 설정하는 엔트로피 복호화부일 수 있다. 상기 엔트로피 복호화부는 제1 서브 블록 및 마지막 위치 변환 계수 서브 블록을 제외한 나머지 서브 블록의 그룹 플래그를 복호화하고 상기 나머지 서브 블록의 그룹 플래그가 제2 플래그인 경우, 상기 나머지 서브 블록 내에서 스캔 순서상 첫번째 스캔 순서에 해당하는 변환 계수를 제외한 나머지 변환 계수의 계수 플래그를 복호화하는 엔트로피 복호화부일 수 있다.
상술한 바와 같이 본 발명의 실시예에 따른 변환 계수 엔트로피 부호화 방법 및 이러한 방법을 사용하는 장치에 따르면 스캐닝 순서상 마지막 변환 계수 위치에 존재하는 변환 계수의 significant map 정보를 부호화 및 복호화함에 있어서, 새로운 구문 요소 정의를 사용함으로서 변환 계수 정보를 적은 비트수로 부호화 및 복호화함으로서 부호화 및 복호화 효율을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 부호화 장치를 나타낸 블록도이다.
도 2는 본 발명의 실시예에 따른 복호화기를 나타낸 블록도이다.
도 3은 본 발명의 실시예에 따른 변환 계수를 스캐닝하는 방법을 나타낸 개념도이다.
도 4는 본 발명의 실시예에 따른 16x16 크기의 변환 단위를 나타낸 개념도이다.
도 5는 본 발명의 실시예에 따른 변환 단위의 significant_coeff_group_flag를 표현한 개념도이다.
도 6은 본 발명의 실시예에 따른 변환 단위의 significant_coeff_flag를 표현한 개념도이다.
도 7은 본 발명의 실시예에 따른 변환 단위에 포함되는 변환 계수 정보를 나타낸 개념도이다.
도 8은 본 발명의 실시예에 따른 도 7에서 개시한 변환 단위의 변환 계수 정보를 기초로 significant_coeff_group_flag을 나타낸 개념도이다.
도 9는 본 발명의 실시예에 따른 significant map을 나타낸 개념도이다.
도 10은 본 발명의 실시예에 따른 significant map을 나타낸 개념도이다.
도 11은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 12는 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 13은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 14는 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_group_flag를 나타낸 개념도이다.
도 15는 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_flag를 나타낸 개념도이다.
도 16은 본 발명의 실시예에 따른 변환 단위에 대한 significant map을 나타낸 개념도이다.
도 17은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 18은 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_group_flag를 나타낸 개념도이다.
도 19는 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_flag를 나타낸 개념도이다.
도 20은 본 발명의 실시예에 따른 significant_coeff_flag를 나타낸 개념도이다.
도 21은 본 발명의 실시예에 따른 변환 블록을 나타낸 개념도이다.
도 22는 본 발명의 실시예에 따른 변환 블록을 나타낸 개념도이다.
도 23은 본 발명의 실시예에 따른 각 서브 블록의significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 24는 본 발명의 실시예에 따른 서브 블록의 significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 25는 본 발명의 실시예에 따른 각 서브 블록의significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 26은 본 발명의 실시예에 따른 서브 블록의 significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
본 발명의 실시예 및 도면에 개시된 각 구성부들은 영상 부호화 장치의 서로 다른 특징적인 기능들을 나타내기 위해 독립적인 구성으로 개시한 것이다. 각 구성부들이 반드시 분리된 하드웨어나 하나의 소프트웨어 구성 단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벋어나지 않는 한 본 발명의 권리범위에 포함된다.
또한, 일부의 본 발명에서 개시된 구성 요소는 본 발명에서 본질적인 기능을 수행하는 필수적인 구성 요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성 요소일 수 있다. 본 발명은 단지 성능 향상을 위해 사용되는 구성 요소를 제외한 본 발명의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 단지 성능 향상을 위해 사용되는 선택적 구성 요소를 제외한 필수 구성 요소만을 포함한 구조도 본 발명의 권리 범위에 포함된다.
도 1은 본 발명의 실시예에 따른 부호화 장치를 나타낸 블록도이다.
도 1을 참조하면, 부호화 장치는 분할부(100), 예측부(110), 화면 내 예측부(103), 화면 간 예측부(106), 변환부(115), 양자화부(120), 재정렬부(125), 엔트로피 부호화부(130), 역양자화부(135), 역변환부(140), 필터부(145) 및 메모리(150)를 포함할 수 있다.
부호화 장치는 이하의 본 발명의 실시예에서 설명하는 영상 부호화 방법에 의해 구현될 수 있으나, 일부의 구성부에서의 동작은 부호화기의 복잡도를 낮추기 위해 또는 빠른 실시간 부호화를 위해 수행되지 않을 수 있다. 예를 들어, 예측부에서 화면 내 예측을 수행함에 있어서, 실시간으로 부호화를 수행하기 위해 모든 화면 내 예측 모드 방법을 사용하여 최적의 화면 내 부호화 방법을 선택하는 방법을 사용하지 않고 일부의 제한적인 개수의 화면 내 예측 모드를 사용하여 그 중에서 하나의 화면 내 예측 모드를 최종 화면 내 예측 모드로 선택하는 방법이 사용될 수 있다. 또 다른 예로 화면 내 예측 또는 화면 간 예측을 수행함에 있어 사용되는 예측 단위의 형태를 제한적으로 사용하도록 하는 것도 가능하다.
부호화 장치에서 처리되는 블록의 단위는 부호화를 수행하는 부호화 단위, 예측을 수행하는 예측 단위, 변환을 수행하는 변환 단위가 될 수 있다. 부호화 단위는 CU(Coding Unit), 예측 단위는 PU(Prediction Unit), 변환 단위는 TU(Transform Unit)라는 용어로 표현될 수 있다.
분할부(100)에서는 하나의 픽쳐를 복수의 부호화 단위, 예측 단위 및 변환 단위의 조합으로 분할하고 소정의 기준(예를 들어, 비용 함수)으로 그 중 하나의 부호화 단위, 예측 단위 및 변환 단위 조합을 선택하여 픽쳐를 분할할 수 있다. 예를 들어, 픽쳐에서 부호화 단위를 분할하기 위해서는 쿼드 트리 구조(QuadTree Structure)와 같은 재귀적인 트리 구조를 사용할 수 있다. 이하, 본 발명의 실시예에서는 부호화 단위의 의미를 부호화를 하는 단위라는 의미뿐만 아니라 복호화를 수행하는 단위라는 의미로도 사용할 수 있다.
예측 단위는 화면 내 예측 또는 화면 간 예측을 수행하는 단위가 될 수 있다. 화면 내 예측을 수행하는 단위로는 2Nx2N, NxN과 같은 정사각형의 단위나 SDIP(Short Distance Intra Prediction)를 사용하는 직사각형의 형태의 예측 단위 형태를 가질 수 있다. 화면 간 예측을 수행하는 단위로는 2Nx2N, NxN과 같은 정사각형의 단위 또는 정사각형 형태의 예측 단위를 동일한 형태로 이분할한 형태인 2NxN, Nx2N 또는 비대칭 형태인 AMP (Asymetric Motion Partitioning)를 사용한 예측 단위 분할 방법이 있다. 예측 단위의 형태에 따라 변환부(115)에서는 변환을 수행하는 방법이 달라질 수 있다.
예측부(110)는 화면 내 예측을 수행하는 화면 내 예측부(103)와 화면 간 예측을 수행하는 화면 간 예측부(106)를 포함할 수 있다. 예측 단위에 대해 화면 간 예측을 사용할 것인지 또는 화면 내 예측을 수행할 것인지를 결정할 수 있다. 예측이 수행되는 처리 단위와 예측 방법 및 구체적인 내용이 정해지는 처리 단위는 다를 수 있다. 예를 들어, 화면 내 예측을 수행함에 있어서 예측 모드는 예측 단위로 결정되고, 예측을 수행하는 과정은 변환 단위를 기초로 수행될 수도 있다. 생성된 예측 블록과 원본 블록 사이의 잔차값(잔차 블록)은 변환부(115)로 입력될 수 있다. 또한, 예측을 위해 사용한 예측 모드 정보, 움직임 벡터 정보 등은 잔차값과 함께 엔트로피 부호화부(130)에서 부호화되어 복호화기에 전달될 수 있다.
PCM(Pulse Coded Modulation) 부호화 모드를 사용할 경우, 예측부(110)를 통해 예측을 수행하지 않고, 원본 블록을 그대로 부호화하여 복호화부에 전송하는 것도 가능하다.
화면 내 예측부(103)에서는 현재 예측 단위의 주변에 존재하는 참조 픽셀을 기초로 예측 단위를 생성할 수 있다. 현재 예측 단위에 대한 최적의 화면 내 예측 모드를 산출하기 위해서 현재 예측 단위를 복수의 화면 내 예측 모드로 생성하고 그 중 하나를 선택적으로 사용할 수 있다. 화면 내 예측에서 예측 모드는 참조 픽셀 정보를 예측 방향에 따라 사용하는 방향성 예측 모드와 예측을 수행 시 방향성 정보을 사용하지 않는 비방향성 모드를 가질 수 있다.
화면 내 예측 방법은 예측 모드에 따라 참조 화소에 MDIS(Mode Dependent Intra Smoothing) 필터를 적용한 후 예측 블록을 생성할 수 있다. 참조 화소에 적용되는 MDIS 필터의 종류는 상이할 수 있다. 화면 내 예측 방법을 수행하기 위해 또한, 화면 내 예측이 수행된 이후에 추가의 필터를 사용하여 참조 픽셀과 예측을 수행 후 예측 단위에 존재하는 일부 열에 대한 추가적인 필터링을 수행할 수 있다. 참조 픽셀과 예측을 수행 후 예측 단위에 존재하는 일부 열에 대한 필터링은 예측 모드의 방향성에 따라 다른 필터링을 사용할 수 있다.
화면 간 예측부(106)는 현재 픽쳐의 이전 픽쳐 또는 이후 픽쳐 중 적어도 하나의 픽쳐의 정보를 기초로 예측 단위를 생성할 수 있다. 화면 간 예측부(106)는 참조 픽쳐 보간부, 움직임 예측부, 움직임 보상부가 포함할 수 있다.
참조 픽쳐 보간부에서는 메모리(150)로부터 참조 픽쳐 정보를 제공받고 참조 픽쳐에서 정수 화소 이하의 화소 정보를 생성할 수 있다. 휘도 화소의 경우, 1/4 화소 단위로 정수 화소 이하의 화소 정보를 생성하기 위해 필터 계수를 달리하는 DCT 기반의 8탭 보간 필터(DCT-based Interpolation Filter)가 사용될 수 있다. 색차 신호의 경우 1/8 화소 단위로 정수 화소 이하의 화소 정보를 생성하기 위해 필터 계수를 달리하는 DCT 기반의 4탭 보간 필터(DCT-based Interpolation Filter)가 사용될 수 있다.
화면 간 예측부(106)는 참조 픽쳐 보간부에 의해 보간된 참조 픽쳐를 기초로 움직임 예측을 수행할 수 있다. 움직임 벡터를 산출하기 위한 방법으로 FBMA(Full search-based Block Matching Algorithm), TSS(Three Step Search), NTS(New Three-Step Search Algorithm) 등 다양한 방법이 사용될 수 있다. 움직임 벡터는 보간된 화소를 기초로 1/2 또는 1/4 화소 단위의 움직임 벡터값을 가질 수 있다. 화면 간 예측부(106)에서는 움직임 예측 방법을 다르게 하여 현재 예측 단위를 예측할 수 있다. 움직임 예측 방법으로 스킵(Skip) 방법, 머지(Merge) 방법, AMVP(Advanced Motion Vector Prediction) 방법 등 다양한 방법이 사용될 수 있다.
예측부(110)에서 생성된 예측 단위를 기초로 예측을 수행한 예측 단위와 예측 단위의 원본 블록과 차이값인 잔차값(Residual) 정보를 포함하는 잔차 블록이 생성될 수 있다. 생성된 잔차 블록은 변환부(115)로 입력될 수 있다. 변환부(115)에서는 부호화 대상 즉, 예측 대상이 되는 원본 블록과 예측 블록의 잔차값(residual)정보를 포함한 잔차 블록을 DCT(Discrete Cosine Transform) 또는 DST(Discrete Sine Transform)와 같은 변환 방법을 사용하여 변환시킬 수 있다. 양자화부(120)는 변환부(115)에서 주파수 영역으로 변환된 값들을 양자화할 수 있다. 블록에 따라 또는 영상의 중요도에 따라 양자화 계수는 변할 수 있다. 양자화부(120)에서 산출된 값은 역양자화부(135)와 재정렬부(125)에 제공될 수 있다.
재정렬부(125)는 양자화된 잔차값에 대해 계수값의 재정렬을 수행할 수 있다.재정렬부(125)는 계수 스캐닝(Coefficient Scanning) 방법을 통해 2차원의 블록 형태 계수를 1차원의 벡터 형태로 변경할 수 있다. 예를 들어, 재정렬부(125)에서는 다이아고널 스캔(Diagonal Scan)방법을 이용하여 DC 계수부터 고주파수 영역의 계수까지 스캔하여 1차원 벡터 형태로 변경시킬 수 있다. 변환 단위의 크기 및 화면 내 예측 모드에 따라 다이아고널 스캔 방법이 아닌 2차원의 블록 형태 계수를 열 방향으로 스캔하는 수직 스캔 방법, 2차원의 블록 형태 계수를 행 방향으로 스캔하는 수평 스캔 방법이 사용될 수 있다. 즉, 변환 단위의 크기 및 화면 내 예측 모드에 따라 다이어고널 스캔, 수직 방향 스캔 및 수평 방향 스캔 중 어떠한 스캔 방법이 사용될지 여부를 결정할 수 있다.
엔트로피 부호화부(130)는 재정렬부(125)에 의해 산출된 값들을 기초로 엔트로피 부호화를 수행할 수 있다. 엔트로피 부호화는 예를 들어, 지수 골롬(Exponential Golomb), CAVLC(Context-Adaptive Variable Length Coding), CABAC(Context-Adaptive Binary Arithmetic Coding)과 같은 다양한 부호화 방법을 사용할 수 있다.
엔트로피 부호화부(130)는 재정렬부(125) 및 예측부(110)로부터 부호화 단위의 잔차값 계수 정보 및 블록 타입 정보, 예측 모드 정보, 분할 단위 정보, 예측 단위 정보 및 전송 단위 정보, 움직임 벡터 정보, 참조 프레임 정보, 블록의 보간 정보, 필터링 정보 등 다양한 정보를 제공받아 소정의 부호화 방법을 기초로 엔트로피 부호화를 수행할 수 있다. 또한, 엔트로피 부호화부(130)에서는 재정렬부(125)에서 입력된 부호화 단위의 계수값을 엔트로피 부호화할 수 있다.
엔트로피 부호화부(130)에서는 CABAC을 이용한 HEB(High Efficiency Binarization) 방법 또는 CABAC의 bypass 코딩을 CAVLC 계수 이진화 방법을 활용하는 HTB(High Throughput Binarization) 방법을 통해 엔트로피 코딩을 수행할 수 있다.
엔트로피 부호화부에서는 변환 계수를 기초로 significant map을 생성할 수 있다. significant map은 구문 요소 정보인 significant_coeff_group_flag와 significant_coeff_flag를 사용하여 두 개의 레벨(two level)을 기초로 표현될 수 있다. 예를 들어, 우선 significant_coeff_group_flag를 사용한 제1 레벨을 통해 각 서브 블록(제2 서브 블록 내지 마지막 변환 계수 서브 블록 이전 스캔 서브 블록)에 0이 아닌 변환 계수가 존재하는지 여부를 표현할 수 있고 significant_coeff_flag를 사용한 제2 레벨을 통해 각 서브 블록에 포함된 변환 계수 정보를 표현할 수 있다. 본 발명의 실시예에 따르면 스캔 순서상 마지막 위치에 존재하는 변환 계수를 포함하는 서브 블록의 경우 significant_coeff_group_flag와 significant_coeff_flag를 다르게 정의하여 서브 블록의 변환 계수 정보를 나타낼 수 있고 이러한 실시예에 대해서는 이하, 본 발명의 실시예에서 상술한다.
역양자화부(135) 및 역변환부(140)에서는 양자화부(120)에서 양자화된 값들을 역양자화하고 변환부(115)에서 변환된 값들을 역변환한다. 역양자화부(135) 및 역변환부(140)에서 생성된 잔차값(Residual)은 예측부(110)에 포함된 움직임 추정부, 움직임 보상부 및 인트라 예측부를 통해서 예측된 예측 단위와 합쳐져 복원 블록(Reconstructed Block)을 생성할 수 있다.
필터부(145)는 디블록킹 필터, 오프셋 보정부, ALF(Adaptive Loop Filter)중 적어도 하나를 포함할 수 있다.
디블록킹 필터는 복원된 픽쳐에서 블록간의 경계로 인해 생긴 블록 왜곡을 제거할 수 있다. 디블록킹을 수행할지 여부를 판단하기 위해 블록에 포함된 몇 개의 열 또는 행에 포함된 픽셀을 기초로 현재 블록에 디블록킹 필터 적용할지 여부를 판단할 수 있다. 블록에 디블록킹 필터를 적용하는 경우 필요한 디블록킹 필터링 강도에 따라 강한 필터(Strong Filter) 또는 약한 필터(Weak Filter)를 적용할 수 있다. 또한 디블록킹 필터를 적용함에 있어 수직 필터링 및 수평 필터링을 수행시 수평 방향 필터링 및 수직 방향 필터링이 병행처리가 되도록 할 수 있다.
오프셋 보정부는 디블록킹을 수행한 영상에 대해 픽셀 단위로 원본 영상과의 오프셋을 보정할 수 있다. 특정 픽쳐에 대한 오프셋 보정을 수행하기 위해 영상에 포함된 픽셀을 일정한 수의 영역으로 구분한 후 오프셋을 수행할 영역을 결정하고 해당 영역에 오프셋을 적용하는 방법 또는 각 픽셀의 에지 정보를 고려하여 오프셋을 적용하는 방법을 사용할 수 있다.
ALF (Adaptive Loop Filter)는 필터링한 복원 영상과 원래의 영상을 비교한 값을 기초로 필터링을 수행할 수 있다. 영상에 포함된 픽셀을 적어도 하나 이상의 그룹으로 나눈 후 해당 그룹에 적용될 하나의 필터를 결정하여 그룹마다 차별적으로 필터링을 수행할 수 있다. ALF를 적용할지 여부에 관련된 정보는 휘도 신호는 부호화 단위 별로 전송될 수 있고, 각각의 블록에 따라 적용될 ALF의 크기 및 계수는 달라질 수 있다. ALF는 다양한 형태를 가질 수 있으며, 필터에 그에 따라 포함되는 계수의 개수도 달라질 수 있다. 이러한 ALF의 필터링 관련 정보(필터 계수 정보, ALF On/Off 정보, 필터 형태 정보)는 비트스트림 형태로 파라메터 셋에 포함되어 전송될 수 있다.
메모리(150)는 필터부(145)를 통해 산출된 복원 블록 또는 픽쳐를 저장할 수 있고, 저장된 복원 블록 또는 픽쳐는 화면 간 예측을 수행 시 예측부(110)에 제공될 수 있다.
도 2는 본 발명의 실시예에 따른 복호화기를 나타낸 블록도이다.
도 2를 참조하면, 복호화기는 엔트로피 복호화부(210), 재정렬부(215), 역양자화부(220), 역변환부(225), 예측부(230), 필터부(235), 메모리(240)가 포함될 수 있다.
부호화기에서 비트스트림이 입력된 경우, 입력된 비트스트림은 부호화기와 반대의 절차로 복호화될 수 있다.
엔트로피 복호화부(210)는 부호화기의 엔트로피 부호화부에서 엔트로피 부호화를 수행한 것과 반대의 절차로 엔트로피 복호화를 수행할 수 있다. 엔트로피 복호화부(210)에서 복호화된 정보 중 예측 블록을 생성하기 위한 정보는 예측부(230)로 제공되고 엔트로피 복호화부에서 엔트로피 복호화를 수행한 잔차값은 재정렬부(215)로 입력될 수 있다.
엔트로피 복호화부에서는 부호화된 구문 요소 정보인 significant_coeff_group_flag와 significant_coeff_flag를 사용하여 significant map을 생성할 수 있다. 본 발명의 실시예에 따르면 스캔 순서상 마지막 위치에 존재하는 변환 계수를 포함하는 서브 블록의 경우 significant_coeff_group_flag와 significant_coeff_flag를 다르게 정의하여 서브 블록의 변환 계수 정보를 나타낼 수 있고 이러한 실시예에 대해서는 이하, 본 발명의 실시예에서 상술한다.
두 개의 레벨(two level)을 기초로 표현될 수 있다. 예를 들어, 우선 significant_coeff_group_flag를 사용한 제1 레벨을 통해 각 서브 블록(제2 서브 블록 내지 마지막 변환 계수 서브 블록 이전 스캔 서브 블록)에 0이 아닌 변환 계수가 존재하는지 여부를 표현할 수 있고 significant_coeff_flag를 사용한 제2 레벨을 통해 각 서브 블록에 포함된 변환 계수 정보를 표현할 수 있다. 이하, 본 발명의 실시예에 따른 제1 레벨(significant_coeff_group_flag) 및 제2 레벨(significant_coeff _flag)의 부호화 및 복호화 방법에 대해 상술한다.
엔트로피 복호화부(210)에서도 엔트로피 부호화부와 마찬가지로 CABAC을 이용한 HEB 또는 CAVLC의 계수 코딩 방법을 활용하는 HTB 방법 중 적어도 하나의 방법을 사용하여 역 변환을 수행할 수 있다.
엔트로피 복호화부(210)에서는 부호화기에서 수행된 화면 내 예측 및 화면 간 예측에 관련된 정보를 복호화할 수 있다. 전술한 바와 같이 부호화기에서 화면 내 예측 및 화면 간 예측을 수행시 예를 들어 주변의 예측 모드가 가용하지 않은 경우 등의 제약이 있는 경우, 이러한 제약을 기초로 한 엔트로피 복호화를 수행해 현재 블록에 대한 화면 내 예측 및 화면 간 예측에 관련된 정보를 제공받을 수 있다.
재정렬부(215)는 엔트로피 복호화부(210)에서 엔트로피 복호화된 비트스트림을 부호화부에서 재정렬한 방법을 기초로 재정렬을 수행할 수 있다. 1차원 벡터 형태로 표현된 계수들을 다시 2차원의 블록 형태의 계수로 복원하여 재정렬할 수 있다. 재정렬부에서는 부호화부에서 수행된 계수 스캐닝에 관련된 정보를 제공받고 해당 부호화부에서 수행된 스캐닝 순서에 기초하여 역으로 스캐닝하는 방법을 통해 재정렬을 수행할 수 있다.
역양자화부(220)는 부호화기에서 제공된 양자화 파라미터와 재정렬된 블록의 계수값을 기초로 역양자화를 수행할 수 있다.
역변환부(225)는 부호화기에서 수행한 양자화 결과에 대해 변환부에서 수행한 DCT 및 DST에 대해 역 DCT 및 역 DST를 수행할 수 있다. 역변환은 부호화기에서 결정된 전송 단위를 기초로 수행될 수 있다. 부호화기의 변환부에서는 DCT와 DST는 예측 방법, 현재 블록의 크기 및 예측 방향 등 복수의 정보에 따라 선택적으로 수행될 수 있고, 복호화기의 역변환부(225)에서는 부호화기의 변환부에서 수행된 변환 정보를 기초로 역변환을 수행할 수 있다.
변환을 수행 시 변환 단위가 아닌 부호화 단위를 기준으로 변환을 수행할 수 있다.
예측부(230)는 엔트로피 복호화부(210)에서 제공된 예측 블록 생성 관련 정보와 메모리(240)에서 제공된 이전에 복호화된 블록 또는 픽쳐 정보를 기초로 예측 블록을 생성할 수 있다.
전술한 바와 같이 부호화기에서의 동작과 동일하게 화면 내 예측을 수행 시 예측 단위의 크기와 변환 단위의 크기가 동일할 경우, 예측 단위의 좌측에 존재하는 픽셀, 좌측 상단에 존재하는 픽셀, 상단에 존재하는 픽셀을 기초로 예측 단위에 대한 화면 내 예측을 수행하지만, 화면 내 예측을 수행 시 예측 단위의 크기와 변환 단위의 크기가 상이할 경우, 변환 단위를 기초로 한 참조 픽셀을 이용하여 화면 내 예측을 수행할 수 있다. 또한, 최소 부호화 단위에 대해서만 NxN 분할을 사용하는 화면 내 예측을 사용할 수 있다.
예측부(230)는 예측 단위 판별부, 화면 간 예측부 및 화면 내 예측부를 포함할 수 있다. 예측 단위 판별부는 엔트로피 복호화부에서 입력되는 예측 단위 정보, 화면 내 예측 방법의 예측 모드 정보, 화면 간 예측 방법의 움직임 예측 관련 정보 등 다양한 정보를 입력 받고 현재 부호화 단위에서 예측 단위를 구분하고, 예측 단위가 화면 간 예측을 수행하는지 아니면 화면 내 예측을 수행하는지 여부를 판별할 수 있다. 화면 간 예측부는 부호화기에서 제공된 현재 예측 단위의 화면 간 예측에 필요한 정보를 이용해 현재 예측 단위가 포함된 현재 픽쳐의 이전 픽쳐 또는 이후 픽쳐 중 적어도 하나의 픽쳐에 포함된 정보를 기초로 현재 예측 단위에 대한 화면 간 예측을 수행할 수 있다. 화면 간 예측을 수행하기 위해 부호화 단위를 기준으로 해당 부호화 단위에 포함된 예측 단위의 움직임 예측 방법이 스킵 모드(Skip Mode), 머지 모드(Merge 모드), AMVP 모드(AMVP Mode) 중 어떠한 방법인지 여부를 판단할 수 있다.
화면 내 예측부는 현재 픽쳐 내의 화소 정보를 기초로 예측 블록을 생성할 수 있다. 예측 단위가 화면 내 예측을 수행한 예측 단위인 경우, 부호화기에서 제공된 예측 단위의 화면 내 예측 모드 정보를 기초로 화면 내 예측을 수행할 수 있다. 화면 내 예측부에는 MDIS 필터, 참조 화소 보간부, DC 필터를 포함할 수 있다. MDIS 필터는 현재 블록의 참조 화소에 필터링을 수행하는 부분으로써 현재 예측 단위의 예측 모드에 따라 필터의 적용 여부를 결정하여 적용할 수 있다. 부호화기에서 제공된 예측 단위의 예측 모드 및 MDIS 필터 정보를 이용하여 현재 블록의 참조 화소에 MDIS 필터링을 수행할 수 있다. 현재 블록의 예측 모드가 MDIS 필터링을 수행하지 않는 모드일 경우, MDIS 필터는 적용되지 않을 수 있다. 또한, 부호화기에서 마찬가지로 예측 블록을 생성 후 참조 픽셀과 함께 추가적으로 필터링을 수행할 수 있다.
참조 화소 보간부는 예측 단위의 예측 모드가 참조 화소를 보간한 화소값을 기초로 화면 내 예측을 수행하는 예측 단위일 경우, 참조 화소를 보간하여 정수값 이하의 화소 단위의 참조 화소를 생성할 수 있다. 현재 예측 단위의 예측 모드가 참조 화소를 보간하지 않고 예측 블록을 생성하는 예측 모드일 경우 참조 화소는 보간되지 않을 수 있다. DC 필터는 현재 블록의 예측 모드가 DC 모드일 경우 필터링을 통해서 예측 블록을 생성할 수 있다.
복원된 블록 또는 픽쳐는 필터부(235)로 제공될 수 있다. 필터부(235)는 디블록킹 필터, 오프셋 보정부, ALF를 포함할 수 있다.
부호화기로부터 해당 블록 또는 픽쳐에 디블록킹 필터를 적용하였는지 여부에 대한 정보 및 디블록킹 필터를 적용하였을 경우, 강한 필터를 적용하였는지 또는 약한 필터를 적용하였는지에 대한 정보를 제공받을 수 있다. 복호화기의 디블록킹 필터에서는 부호화기에서 제공된 디블록킹 필터 관련 정보를 제공받고 복호화기에서 해당 블록에 대한 디블록킹 필터링을 수행할 수 있다. 부호화기에서와 마찬가지로 우선 수직 디블록킹 필터링 및 수평 디블록킹 필터링을 수행하되, 겹치는 부분에 있어서는 수직 디블록킹 및 수평 디블록킹 중 적어도 하나를 수행할 수 있다. 수직 디블록킹 필터링 및 수평 디블록킹 필터링이 겹치는 부분에서 이전에 수행되지 못한 수직 디블록킹 필터링 또는 수평 디블록킹 필터링이 수행될 수 있다. 이러한 디블록킹 필터링 과정을 통해서 디블록킹 필터링의 병행 처리(Parallel Processing)이 가능하다.
오프셋 보정부는 부호화시 영상에 적용된 오프셋 보정의 종류 및 오프셋 값정보 등을 기초로 복원된 영상에 오프셋 보정을 수행할 수 있다.
ALF는 필터링을 수행 후 복원된 영상과 원래의 영상을 비교한 값을 기초로 필터링을 수행할 수 있다. 부호화기로부터 제공된 ALF 적용 여부 정보, ALF 계수 정보 등을 기초로 부호화 단위에 ALF를 적용할 수 있다. 이러한 ALF 정보는 특정한 파라메터 셋에 포함되어 제공될 수 있다.
메모리(240)는 복원된 픽쳐 또는 블록을 저장하여 참조 픽쳐 또는 참조 블록으로 사용할 수 있도록 할 수 있고 또한 복원된 픽쳐를 출력부로 제공할 수 있다.
전술한 바와 같이 이하, 본 발명의 실시예에서는 설명의 편의상 코딩 유닛(Coding Unit)을 부호화 단위라는 용어로 사용하지만, 부호화 뿐만 아니라 복호화를 수행하는 단위가 될 수도 있다.
아래의 표 1은 CABAC(Context Adaptive Binary Arithmetic Coding)에서 변환 계수(Transform Coefficient)를 부호화 및 복호화하기 위해 사용되는 신택스들을 나타낸 것이다.
<표 1>
Figure pat00001
표 1을 참조하면, 구문 요소 중 last_significant_coeff_x_prefix, last_significant_coeff_y_prefix, last_significant_coeff_x_suffix 및last_significant_coeff_y_suffix는 변환 계수의 스캐닝(scanning) 순서상 마지막에 위치한 0이 아닌 변환 계수의 위치 정보를 나타낼 수 있으며, significant_coeff_group_flag 및 significant_coeff_flag는 변환 계수가 0인지 여부를 나타낸다. significant_coeff_group_flag 값은 4x4 서브 블록(sub-block)에 0이 아닌 변환 계수가 포함되어 있는지를 나타내며, significant_coeff_flag은 각 4x4 서브 블록(sub-block) 내 변화 계수 위치 별로 0이 아닌 값을 갖는지를 나타낼 수 있다. 두 신택스 (significant_coeff_group_flag 및 significant_coeff_flag)는 significant map을 구성하기 위한 구문 요소 정보로 사용될 수 있다. 그 이외의 syntax들(coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag, coeff_sign_flag, coeff_abs_level_remaining)은 변환 계수의 크기 정보를 나타낼 수 있다.
변환 계수의 마지막 위치(last position) 는 변환 계수들을 스캐닝하는 방법에 따라 달라질 수 있다.
도 3은 본 발명의 실시예에 따른 변환 계수를 스캐닝하는 방법을 나타낸 개념도이다.
도 3을 참조하면, 16x16 크기의 변환 단위(TU, Transform Unit)에서 up-right diagonal scanning 방식을 사용하여 변환 계수 정보를 스캐닝하는 것을 나타낸 개념도이다.
16x16 크기의 변환 단위는 16 개의 4x4 크기의 서브 블록(sub-block)으로 나뉠 수 있다. Up-right diagonal scanning 방식(이하, 다이아고널 스캐닝 방식이라고 함.)은 1 번부터 16 번까지 번호를 매긴 순서대로 화살표 방향으로 16x16 크기의 변환 단위에 포함된 서브 블록을 스캐닝하여 변환 계수 중 마지막 0이 아닌 계수값을 가진 서브-블록이 어떤 위치에 존재하는지에 대한 정보를 생성할 수 있다. 비트스트림에 삽입하는 순서는 다이아고널 스캐닝 방법의 역순으로 (즉, 16번부터 1번까지) 16 개의 4x4 크기의 서브 블록(sub-block)에 대한 정보가 저장된다. 본 실시예에서는 편의상 역순이 아닌, 순서대로 설명한다.
도 3에서와 같은 스캐닝 순서를 기준으로 서브 블록을 제1 서브 블록 내지 제16 서브 블록이라고 정의하면 각 서브-블록에 존재하는 변환 계수들도 다이아고날 스캔 방식으로 스캐닝될 수 있다. 예를 들어, 제1 서브 블록에 존재하는 계수들은 다이아고날 스캔 방식으로 0번부터 15번까지 스캐닝할 수 있다. 상기 언급한 변환 계수 중 마지막 0이 아닌 계수값을 가진 서브-블록도 제1 서브 블록과 동일한 다이아고날 스캔 방식으로 0번부터 15번까지 스캐닝하여 먀지막 0이 아닌 계수 값의 정확한 위치 (x,y)를 알아 낼 수 있다. 변환 계수들 역시, 비트스트림에 삽입하는 순서는 다이아고널 스캐닝 방법의 역순으로 (즉, 15번부터 0번까지) 16 개의 변환 계수에 대한 정보가 저장된다. 본 실시예에서는 편의상 역순이 아닌, 순서대로 설명한다.
4x4 크기의 서브 블록 및 각 4x4 크기의 서브 블록의 다이아고날 스캔 방식을 통하여 2D 상태인 서브 블록에 존재하는 변환 계수를 엔트로피 부호화를 수행하기 위한 1D 상태의 배열로 변환할 수 있다.
이하, 본 발명의 실시예에서 스캐닝 순서상 마지막에 위치한 0이 아닌 변환 계수를 마지막 위치 변환 계수 또는 마지막 변환 계수라는 용어로 정의하고, 이러한 마지막 위치 변환 계수를 포함한 서브 블록을 마지막 위치 변환 계수 서브 블록이라는 용어로 정의하여 사용한다.
도 4는 본 발명의 실시예에 따른 16x16 크기의 변환 단위를 나타낸 개념도이다.
도 4를 참조하면, 전술한 다이아고날 스캔 방법으로 변환 단위를 스캔하였을 경우, 마지막 변환 계수를 포함한 서브 블록은 제15 서브 블록(400)이 된다. 제15 서브 블록 내에서 마지막 변환 계수는 서브 블록 안에서 다이아고널 스캔 방향으로 4번째 스캔 위치에 존재하는 1(410)이 된다.
Significant map은 변환 계수가 0인지 아닌지 여부에 대한 정보로서 전술한 구문 요소 정보인 significant_coeff_group_flag와 significant_coeff_flag를 사용하여 두 개의 레벨(two level)을 기초로 표현될 수 있다. 예를 들어, 우선 significant_coeff_group_flag를 사용한 제1 레벨을 통해 각 서브 블록(제2 서브 블록 내지 마지막 변환 계수 서브 블록 이전 스캔 서브 블록)에 0이 아닌 변환 계수가 존재하는지 여부를 표현할 수 있고 significant_coeff_flag를 사용한 제2 레벨을 통해 각 서브 블록에 포함된 변환 계수 정보를 표현할 수 있다. 이하, 본 발명의 실시예에 따른 제1 레벨(significant_coeff_group_flag) 및 제2 레벨(significant_coeff _flag)의 부호화 및 복호화 방법에 대해 개시한다. 이하, 본 발명의 실시예에서는 제1 레벨(significant_coeff_group_flag) 플래그를 그룹 플래그라고 정의하고 제2 레벨(significant_coeff_flag) 플래그를 계수 플래그라는 용어로 정의하여 사용할 수 있다. 또한 각각의 플래그가 가지는 값을 구분하여 플래그가 0일 경우 제1 플래그값, 플래그가 1일 경우 제2 플래그값이라는 용어를 사용하여 플래그 정보를 표현할 수 있다. 플래그값은 구문 요소의 정의에 따라 변할 수 있고 이러한 실시예 또한 본 발명의 권리 범위에 포함된다.
(1) 제1 레벨(significant_coeff_gorup_flag) 부호화 복호화 방법.
본 발명의 실시예에 따르면 첫번째 서브 블록인 제1 서브 블록과 마지막 변환 계수 서브 블록을 제외한 제2 서브 블록부터 마지막 변환 계수 서브 블록 이전 스캐닝 서브 블록의 경우, 서브 블록이 0이 아닌 변환 계수를 포함하고 있다면 significant_coeff_group_flag를 1로 부호화하고 서브 블록이 포함하고 있는 계수가 모두 0이면 significant_coeff_group_flag를 0으로 부호화할 수 있다.
예외적으로 제1 서브 블록은 DC에 해당하는 변환 계수를 포함하는 서브 블록으로서 부호화 단계에서는 제1 서브 블록의 significant_coeff_group_flag를 따로 부호화하지 않고 복호화 단계에서 제1 서브 블록의 significant_coeff_group_flag를 1로 유추할 수 있으므로 따로 significant_coeff_group_flag값을 전송하지 않을 수 있다.
또한, 스캐닝 순서상 마지막 변환 계수 서브 블록의 다음에 존재하는 서브 블록들은 0이 아닌 변환 계수가 존재할 수 없는 서브 블록이므로 부호화 단계에서 마지막 변환 계수 서브 블록의 다음에 존재하는 서브 블록들의 significant_coeff_group_flag는 따로 전송하지 않고 복호화 단계에서 마지막 변환 계수 서브 블록의 다음에 존재하는 서브 블록들의 significant_coeff_group_flag를 0으로 유추하여 해당 서브 블록에 포함된 변환 계수가 모두 0임을 알 수 있다.
마지막 위치 변환 계수 서브 블록의 경우, 마지막 위치 변환 계수에 대한 정보를 알고 있기 때문에 따로 정보를 전송하지 않아도 0이 아닌 변환 계수를 포함하는 블록으로 유추될 수 있기 때문에 부호화 단계에서는 마지막 위치 변환 계수 서브 블록의 significant_coeff_group_flag를 따로 전송하지 않고 복호화 단계에서 significant_coeff_group_flag를 1로 유추하여 significant map을 생성할 수 있다.
본 발명의 실시예에 따르면 마지막 위치 변환 계수 서브 블록의 경우 significant_coeff_group_flag를 새롭게 정의하여 마지막 위치 변환 계수를 제외한 나머지 변환 계수 중 하나 이상의 0이 아닌 변환 계수를 포함하고 있다면 significant_coeff_group_flag를 1로 부호화하고, 나머지 변환 계수가 모두 0이면 significant_coeff_group_flag를 0으로 부호화 할 수 있다. 새로운 정의를 사용하는 경우 마지막 위치 변환 계수 서브 블록의 significant map을 생성하기 위한 비트수를 줄여 부호화 효율을 높일 수 있다. 이하, 본 발명의 실시예에 따른 마지막 위치 변환 계수 서브 블록의 significant_coeff_group_flag의 새로운 정의에 대해 상세히 설명한다.
(A) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 0인 경우, 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수(즉, 마지막 변환 계수)만이 존재함을 나타냄.
다만, 하나의 0이 아닌 변환 계수가 스캐닝 순서상 첫번째 존재하는 경우는 부호화 단계에서 significant_coeff_group_flag를 따로 부호화하지 않고 복호화 단계에서 significant_coeff_group_flag를 0으로 유추할 수 있으므로 따로 significant_coeff_group_flag값을 전송하지 않을 수 있음 (이하 도 21에서 해당 경우에 대해 상술함).
(B) significant_coeff_group_flag가 1인 경우, 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타냄.
(2) 제2 레벨(significant_coeff_flag) 부호화 복호화 방법.
다음으로 서브 블록에 포함된 변환 계수 정보를 제2 레벨인 significant_coeff_flag를 사용하여 표현할 수 있다. significant_coeff_flag는 서브 블록에 포함되는 변환 계수에 대한 정보를 표현할 수 있다.
서브 블록의 significant_coeff_group_flag가 1인 경우, 해당 서브 블록에 대한 significant_coeff_flag 값을 부호화 한다. 반대로, significant_coeff_group_flag가 0인 경우, 해당 서브 블록에 대한 대한 significant_coeff_flag 값을 부호화 하지 않는다.
제1 서브 블록은 16개의 모든 변환 계수에 대하여 significant_coeff_flag 값을 부호화 한다.
본 발명의 실시예에 따르면 제1 서브 블록과 마지막 변환 계수 서브 블록을 제외한 제2 서브 블록부터 마지막 변환 계수 서브 블록 이전 스캐닝 서브 블록의 경우, 다이아고날 스캐닝 방법의 역순으로 (즉, 15번부터 1번까지) 15개의 변환 계수의 significant_coeff_flag값이 모두 0이면, 해당 서브 블록의 첫 번째 (즉, 0번) 변환 계수에 해당하는 significant_coeff_flag 값은 부호화 하지 않고 1로 유추할 수 있다. 그렇지 않고, 15개의 변환 계수 중 0이 아닌 값이 존재하면, 해당 서브 블록의 첫 번째 변환 계수에 해당하는 significant_coeff_flag 값을 부호화 한다.
마지막 위치 변환 계수 서브 블록의 경우, 마지막 위치 변환 계수에 대한 위치 정보를 알고 있기 때문에, 다이아고날 스캐닝 방법의 순서상 마지막 위치 변환 계수의 이전에 존재하는 모든 변환 계수에 대한 significant_coeff_flag 값을 부호화하고, 마지막 위치 변환 계수에 significant_coeff_flag 값은 부호화 단계에서 따로 부호화 하지 않고, 복호화 단에서 마지막 위치 변환 계수에 대한significant_coeff_flag값을 1로 유추하여 significant map을 생성할 수 있다.
또한, 스캐닝 순서상 마지막 변환 계수 다음에 존재하는 변환 계수들은 0이 아닌 변환 계수가 존재할 수 없으므로 부호화 단계에서 마지막 변환 계수 다음에 존재하는 변환 계수들의 significant_coeff_flag는 따로 전송하지 않고 복호화 단계에서 마지막 변환 계수의 다음에 존재하는 변환 계수들의 significant_coeff_flag를 0으로 유추할 수 있다.
본 발명의 실시예에 따르면, 서브 블록이 마지막 변환 계수 서브 블록인 경우 significant_coeff_flag를 아래와 같이 표현할 수 있다.
(A) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 0인 경우, 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수만이 존재하고 그 위치를 알고 있으므로 따로 significant_coeff_flag 정보를 부호화하지 않음. 다만, 마지막 변환 계수 서브 블록의 significant_coeff_group_flag를 전송하지 않는 경우 (0으로 유추), 마지막 변환 계수 서브 블록의 첫번째 스캐닝 순서 위치에 하나의 0이 아닌 변환 계수만이 존재함을 나타냄. 마지막 변환 계수의 위치를 알기 때문에 significant_coeff_flag 정보를 전송하지 않고, 복호화단에서 1으로 유추할 수 있다.
(B) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 1인 경우, 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타내고, 0번 변환 계수부터 마지막 변환 계수 바로 이전의 변환 계수까지의 significant_coeff_flag 정보를 전송함. 예외적으로 0이 아닌 변환 계수가 마지막 변환 계수 서브 블록의 첫번째 스캔 위치 및 두번째 스캔 위치에 존재할 경우, significant_coeff_flag 정보를 전송하지 않음(이하 도 17 내지 도 20에서 이러한 경우에 대해 상술한다).
이하, 본 발명의 실시예에서는 전술한 significant_coeff_group_flag와 significant_coeff_flag의 새로운 정의를 사용하여 마지막 변환 계수 서브 블록의 significant map을 구성하는 방법에 대해 상술한다.
도 5는 본 발명의 실시예에 따른 변환 단위의 significant_coeff_group_flag를 표현한 개념도이다.
도 5는 도 4에서 개시한 변환 블록 정보를 significant_coeff_group_flag로 표현한 것이다. 전술한 바와 같이 제1 서브 블록의 경우(510), significant_coeff_group_flag를 1로 유추하므로 따로 부호화하지 않는다. 마지막 위치의 변환 계수를 포함하는 서브 블록의 위치가 제15 서브 블록(520)이므로 그 이후에 위치한 제16 서브 블록(530)의 significant_coeff_group_flag는 따로 부호화하지 않아도 0으로 유추할 수 있으므로 부호화하지 않는다. 본 발명의 실시예에 따르면, 제15 서브 블록(520)과 같은 마지막 위치의 변환 계수를 포함하는 서브 블록은 마지막 위치 변환 계수를 포함한 블록으로서 복수개의 0이 아닌 변환 계수를 포함하고 있으므로 제15 서브 블록(520)의 significant_coeff_group_flag는 1을 가진다.
도 6은 본 발명의 실시예에 따른 변환 단위의 significant_coeff_flag를 표현한 개념도이다.
도 6은 도 4에서의 변환 계수 정보 및 도 5의 significant_coeff_group_flag정보를 기초로 서브 블록의 계수 정보를 significant_coeff_flag로 표현한 것이다.
도 6을 참조하면, significant_coeff_group_flag계수가 1이거나 1로 유추된 서브 블록의 경우, 해당 서브 블록에 포함되는 변환 계수가 0인지 여부에 따라 significant_coeff_flag가 1 또는 0으로 부호화될 수 있다. 예를 들어, 도 6에서 significant_coeff_group_flag가 1이거나 1로 유추된 서브 블록들인 제1, 2, 3, 4, 5, 6, 8, 9, 12 서브 블록에 대하여 significant_coeff_flag를 기초로 변환 계수 정보를 표현할 수 있다. 마지막 변환 계수 서브 블록을 제외한 나머지 서브 블록 중 significant_coeff_group_flag가 0이거나 0으로 유추된 서브 블록의 경우, 서브 블록에 포함된 변환 계수가 모두 0으로 유추되므로 따로 significant_coeff_flag를 사용하지 않고 서브 블록에 포함된 변환 계수 정보를 부호화할 수 있다.
전술한 바와 같이 마지막 위치 변환 계수 서브 블록은 0이 아닌 변환 계수의 마지막 위치를 알고 있으므로 다른 서브 블록과 다르게 변환 계수의 마지막 위치를 고려한 부호화를 수행할 수 있다. 예를 들어, 마지막 변환 계수 서브 블록에서 변환 계수의 스캐닝 순서상 마지막 위치는 알고 있으므로 마지막 변환 계수는 따로 significant_coeff_flag를 통해 부호화할 필요가 없다. 예를 들어, 도 6의 마지막 위치 변환 계수 서브 블록 내 마지막 변환 계수의 위치(3행 1열의 위치)는 significant_coeff_flag를 1로 유추하면 되므로 따로 비트를 사용하지 않는다. 부호화 효율을 높이기 위해 마지막 변환 계수 서브 블록은 전술한 significant_coeff_flag의 정의를 기초로 변환 계수 정보를 표현할 수 있다.
이하, 본 발명의 실시예에서는 전술한 significant_coeff_group_flag와 significant_coeff_flag의 새로운 정의를 통해 부호화 또 다른 실시예에 대해 개시한다.
도 7은 본 발명의 실시예에 따른 변환 단위에 포함되는 변환 계수 정보를 나타낸 개념도이다.
도 7을 참조하면, 마지막 변환 계수 서브 블록(700)은 하나의 0이 아닌 계수(710)를 포함하고 있다.
마지막 변환 계수 서브 블록이 하나의 0이 아닌 계수(710)를 포함하고 있는 경우, significant_coeff_group_flag는 0으로 표현될 수 있다. 본 발명의 실시예에 따른 significant map 정보 표현 방법에서는 전술한 바와 같이 만약 마지막 변환 계수 서브 블록이 하나의 0이 아닌 계수만을 포함하고 있는 서브 블록인 경우, significant_coeff_group_flag는 0으로 표현되고 마지막 변환 계수 서브 블록이 둘 이상의 0이 아닌 계수를 포함하고 있는 서브 블록인 경우 significant_coeff_group_flag는 1로 표현될 수 있다. 예외적으로 마지막 변환 계수 서브 블록이 하나의 0이 아닌 계수만을 포함하고 있는 서브 블록이되, 마지막 변환 계수의 위치가 1행 1열인 경우는 마지막 변환 계수 서브 블록의 significant_coeff_group_flag를 전송하지 않는 부호화 방법을 사용하여 마지막 변환 계수 서브 블록에 포함된 마지막 변환 계수의 위치가 1행 1열이라는 정보를 마지막 위치 (last position) 정보를 이용하여 표현할 수 있다.
도 8은 본 발명의 실시예에 따른 도 7에서 개시한 변환 단위의 변환 계수 정보를 기초로 significant_coeff_group_flag을 나타낸 개념도이다.
도 8을 참조하면, 마지막 변환 계수 서브 블록인 제15 서브 블록의 경우, 하나의 0이 아닌 변환 계수를 포함하는 서브 블록이므로 significant_coeff_group_flag값으로 0(800)을 설정할 수 있다.
하나의 0이 아닌 변환 계수를 포함하는 마지막 변환 계수 서브 블록의 경우 표 1에서 전술한 구문 요소인 last_significant_coeff_x_prefix, last_significant_coeff_y_prefix, last_significant_coeff_x_suffix 및 last_significant_coeff_y_suffix와 같은 마지막 변환 계수의 위치를 표현하는 구문 요소 정보를 기초로 마지막 변환 계수의 위치를 알 수 있으므로 따로 significant_coeff_flag를 부호화하여 마지막 변환 계수의 위치를 전송할 필요가 없다.
도 9는 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_flag을 나타낸 개념도이다.
도 9를 참조하면, significant_coeff_group_flag가 1이거나 1로 유추된 서브 블록에 대하여 significant_coeff_flag 정보를 전송하여야 한다. 서브 블록의 significant_coeff_group_flag가 0이거나 0으로 유추된 경우 변환 계수가 모두 0이므로 significant_coeff_flag 정보를 따로 전송할 필요는 없다.
마지막 변환 계수 서브 블록(900)의 significant_coeff_group_flag가 0인 경우 마지막 변환 계수의 위치를 알기 때문에 따로 significant_coeff_flag를 부호화할 필요가 없이 변환 계수 정보를 표현할 수 있다. 따라서 significant_coeff_flag를 부호화하는데 드는 비트수를 줄일 수 있다. 도 7과 같은 변환 단위의 경우 마지막 변환 계수 서브 블록에 대한 significant_coeff_group_flag와 significant_coeff_flag에 대한 정의를 변경하기 전에 사용되는 비트수는 마지막 변환 계수 서브 블록에는 당연히 변환 계수가 존재하므로 제1 레벨인 significant_coeff_group_flag 값은 1로 유추될 수 있어 비트를 사용하지 않고도 제1 레벨의 significant map 정보를 표현할 수 있는 반면에 제2 레벨인 significant_coeff_flag 값은 마지막 변환 계수의 위치를 알고 있으나 스캐닝 순서상 그 이전에 존재하는 변환 계수 중 0이 아닌 계수가 몇 개나 있는지에 대한 정보를 알지 못하므로 마지막 변환 계수 서브 블록에 포함되는 변환 계수 정보를 표현하기 위한 significant_coeff_flag에 추가의 비트가 사용될 수 있다. 따라서, 도 7과 같은 경우 3행 3열 이전에 스캐닝을 수행해야 할 변환 계수의 개수가 11개이므로 추가의 11비트가 들게 된다.
본 발명의 실시예에 따른 새로운 significant_coeff_group_flag와 significant_coeff_flag의 정의를 사용하는 경우 마지막 변환 계수 서브 블록에 변환 계수가 하나만 존재하는지 여부를 표시하기 위한 제1 레벨의 significant_coeff_group_flag가 1 비트가 소요되지만, 제2 레벨의 significant_coeff_flag의 경우 significant_coeff_group_flag를 통해서 현재 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수가 존재하고 있음을 알 수 있고 또한, 마지막 변환 계수의 위치를 알고 있으므로 그 이외 0이 아닌 변환 계수가 존재하는지 여부를 표시하기 위한 significant_coeff_flag를 위한 비트가 추가로 사용되지 않는다.
결론적으로 도 7의 경우, 본 발명의 실시예에 따른 significant map 정보 부호화 방법을 사용하는 경우 마지막 변환 계수 서브 블록에 변환 계수가 하나만 존재하는지 여부를 표시하지 않는 방법과 비교하여 상기 존재 여부를 표시 하지 않는 방법의 경우는 10비트의 부호화 이득을 얻을 수 있다.
도 10은 본 발명의 실시예에 따른 significant map을 나타낸 개념도이다.
도 10을 참조하면, 도 8에서의 significant_coeff_group_flag와 도 9에서의 significant_coeff_flag를 기초로 도 10과 같은 변환 단위의 significant map을 표현할 수 있다.
아래의 도 11 및 도 12에서는 마지막 변환 계수 서브 블록에 변환 계수가 하나만 존재하는 경우를 나타낸 것으로서 전술한 방법을 사용하여 significant map 정보를 부호화하는 경우의 비트 이득에 대해 개시한다.
도 11은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 11을 참조하면, 마지막 위치 변환 계수 서브 블록 내 1행 2열의 위치에 0이 아닌 변환 계수(1100)가 존재하고 마지막 위치 변환 계수 서브 블록의 나머지 위치에 존재하는 변환 계수는 모두 0 값을 가진다. 이러한 경우, 본 발명의 실시예에 따른 significant map 정보를 표현하기 위해 사용되는 비트는 우선 significant_coeff_group_flag가 0값을 가져야 하므로 1 비트가 소요된다. significant_coeff_group_flag가 0인 마지막 변환 계수 서브 블록은 하나의 0이 아닌 변환 계수만을 가지므로 마지막 변환 계수의 위치를 표현하는 구문 요소 정보를 기초로 마지막 변환 계수의 위치를 알 수 있으므로 significant_coeff_flag 정보는 사용되지 않고 변환 계수 정보를 표현할 수 있다.
만약 마지막 변환 계수 서브 블록에 변환 계수가 하나만 존재하는지 여부를 표시하지 않는 방법 으로 significant map을 부호화하는 경우 significant_coeff_group_flag는 마지막 변환 계수 서브 블록이므로 사용되지 않지만, 마지막 변환 계수 서브 블록에 몇 개의 0이 아닌 변환 계수가 존재하는지 모르기 때문에 significant_coeff_flag를 사용하여 스캔 순서상 마지막 변환 계수를 제외한 나머지 변환 계수 정보를 부호화하여야 하고 결과적으로 1행 1열과 2행 1열에 존재하는 변환 계수 정보(1110, 1120)를 significant_coeff_flag를 사용하여 표현하기 위해 2개의 비트를 추가로 사용하여야 한다. 결과적으로 본 발명의 실시예에 따른 새로운 정의의 significant_coeff_group_flag와 significant_coeff_flag를 통해 significant map을 부호화하는 경우가 1 비트의 부호화 이득을 가질 수 있다.
도 12는 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 12를 참조하면, 4행 4열의 위치(1200)에 0이 아닌 마지막 변환 계수가 존재하고 마지막 변환 계수 서브 블록의 나머지 위치에 존재하는 변환 계수는 모두 0 값을 가진 변환 계수값이 될 수 있다. 이러한 경우, 본 발명의 실시예에 따른 significant map 정보를 표현하기 위해 사용되는 비트는 우선 significant_coeff_group_flag가 0값을 가져야 하므로 1비트가 소요된다. significant_coeff_group_flag가 0인 마지막 변환 계수 서브 블록은 하나의 0이 아닌 변환 계수만을 가지므로 전술한 바와 같이 significant_coeff_flag 정보는 사용되지 않고 변환 계수 정보를 표현할 수 있다.
만약 마지막 변환 계수 서브 블록에 대하여 새로운 정의를 사용하지 않고 significant map 부호화를 수행하는 경우 significant_coeff_group_flag은 마지막 변환 계수 서브 블록에 대하여 부호화되지 않지만, 마지막 변환 계수 서브 블록에 몇 개의 0이 아닌 변환 계수가 존재하는지 모르기 때문에 significant_coeff_flag를 사용하여 스캔 순서상 마지막 변환 계수를 제외한 나머지 변환 계수 정보를 부호화하여야 하고 결과적으로 서브 블록에 존재하는 4행 4열에 존재하는 마지막 변환 계수를 제외한 나머지 변환 계수 정보를 significant_coeff_flag를 사용하여 표현하기 위해 15개의 비트를 추가로 사용하여야 한다. 결과적으로 본 발명의 실시예에 따른 significant map 부호화 방법이 14 비트의 부호화 이득을 가질 수 있다.
이하, 본 발명의 실시예에서는 마지막 변환 계수 서브 블록이 복수개의 0이 아닌 변환 계수를 가지는 경우 본 발명의 실시예에 따른 significant map을 부호화하는 방법에 대해 개시한다.
도 13은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 13을 참조하면, 마지막 변환 계수 서브 블록(1300)이 복수개의 0이 아닌 변환 계수를 포함할 수 있다. 마지막 변환 계수 서브 블록(1300)이 복수개의 0이 아닌 변환 계수를 포함한 경우 전술한 바와 같이 significant_coeff_group_flag는 1로 표현되어 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타낼 수 있다.
도 14는 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_group_flag를 나타낸 개념도이다.
도 14는 도 13에서 개시된 변환 단위에 대한 significant_coeff_group_flag를 나타낸 것이다.
마지막 변환 계수 서브 블록의 significant_coeff_group_flag 값(1400)으로 1을 사용하여 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타낼 수 있다.
도 15는 도 13에서 개시된 변환 단위에 대한 significant_coeff_flag를 나타낸 것이다. 마지막 변환 계수 서브 블록 의 significant_coeff_flag를 마지막 변환 계수를 제외하고 모두 부호화하여 전송할 수 있다. 결과적으로 본 발명의 실시예에 따른 새로운 significant map 부호화 방법이 1 비트를 더 사용할 수 있다.
하지만, 복수개의 0이 아닌 변환 계수를 가진 마지막 변환 계수 서브 블록에서도 본 발명의 실시예에 따른 significant map 구성 방법을 사용하여 추가적으로 비트를 줄이거나 동일한 비트를 가지고 변환 계수 정보를 표현하는 것도 가능하고 이하 본 발명의 실시예에서 추가적으로 기술한다.
도 16은 본 발명의 실시예에 따른 변환 단위에 대한 significant map을 나타낸 개념도이다.
도 16은 도 14에서 산출된 significant_coeff_group_flag 및 도 15에서 산출된 significant_coeff_flag를 사용하여 생성된 도 13에 개시된 변환 단위의 significant map 정보를 나타낸다.
아래의 도 17 내지 도 22는 본 발명의 실시예에 따른 significant map 부호화 방법을 사용하여 비트를 줄이거나 동일한 비트를 가지고 변환 계수 정보를 표현하는 또다른 실시예를 나타낸 것이다.
도 17은 본 발명의 실시예에 따른 변환 단위를 나타낸 개념도이다.
도 17을 참조하면, 0이 아닌 변환 계수의 위치가 1행 1열(1700)과 2행 1열(1710)에 존재하여 마지막 변환 계수 서브 블록(1750)이 복수개의 0이 아닌 변환 계수를 포함한 경우에 해당한다.
마지막 변환 계수 서브 블록이 복수개의 0이 아닌 변환 계수를 포함한 경우 전술한 바와 같이 significant_coeff_group_flag는 1로 표현되어 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타낼 수 있다.
도 18은 본 발명의 실시예에 따른 변환 단위에 대한 significant_coeff_group_flag를 나타낸 개념도이다.
도 18은 도 17에서 개시된 변환 단위에 대한 significant_coeff_group_flag를 나타낸 것이다.
마지막 변환 계수 서브 블록의 significant_coeff_group_flag 값(1800)으로 1을 사용하여 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타낼 수 있다.
도 19는 도 17에서 개시된 변환 단위에 대한 significant_coeff_flag를 나타낸 것이다. 도 19를 참조하면, 예외적인 경우로 마지막 변환 계수 서브 블록의 계수 정보를 표현하기 위한 significant_coeff_flag가 따로 사용되지 않을 수 있다. 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 1이라는 것은 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재한다는 것을 의미하고 만약 마지막 변환 계수의 위치가 스캔 순서상 두번째 스캔 순서에 위치한 경우, 첫번째 스캔 순서에 위치한 변환 계수는 0이 아닌 변환 계수값을 가진다는 것을 알 수 있다. 따라서 0이 아닌 변환 계수의 위치가 1행 1열과 2행 1열에 존재하는 마지막 변환 계수 서브 블록의 경우, 도 19에서와 같이 마지막 변환 계수 서브 블록의 significant_coeff_flag를 따로 사용하지 않고 서브 블록의 변환 계수 정보를 표현할 수 있다.
도 20은 본 발명의 실시예에 따른 significant map를 나타낸 개념도이다.
도 20을 참조하면, 도 18의 significant_coeff_group_flag와 도 19의 significant_coeff_flag를 사용하여 significant map을 표현할 수 있다.
도 21은 본 발명의 실시예에 따른 변환 블록을 나타낸 개념도이다.
도 21을 참조하면, 마지막 변환 계수 서브 블록의 첫번째 스캔 순서에 위치한 변환 계수가 마지막 변환 계수인 경우는 예외적인 경우로서 significant_coeff_group_flag값을 부호화하지 않고 복호화 단계에서 significant_coeff_group_flag값을 0으로 유추하고, 마지막 변환 계수가 서브 블록의 첫번째 스캔 순서에 위치한 변환 계수임(2100)을 마지막 위치 (last position) 정보를 통해 나타낼 수 있다. 즉, 마지막 변환 계수의 위치를 나타내는 마지막 위치 (last position) 정보가 마지막 변환 계수 서브 블록의 첫번째 스캔 순서를 나타내면, 해당 마지막 변환 계수 서브 블록의 significant_coeff_group_flag값을 부호화하지 않고, 복호화 단에서 해당 서브 블록의 significant_coeff_group_flag값을 0으로 유추할 수 있다.
도 22는 본 발명의 실시예에 따른 변환 블록을 나타낸 개념도이다.
도 22를 참조하면, 마지막 변환 계수 서브 블록의 스캔 순서상 두번째 위치인 2행 1열에 하나의 0이 아닌 변환 계수(2200)가 존재하고 있다. 이러한 경우, 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수가 존재하므로 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 0이 되고 significant_coeff_flag는 전송되지 않는다.
전술한 본 발명의 다른 실시예에 따른 significant map을 구성하는 또 다른 실시예는 아래와 같다.
-significant_coeff_group_flag
(A) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 0인 경우, 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수(즉, 마지막 변환 계수)만이 존재함을 나타냄.
(B) significant_coeff_group_flag가 1인 경우, 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타냄.
본 발명의 다른 실시예에서는 significant_coeff_group_flag를 전송하기 위해 전술한 바와 같이 예외적인 경우를 제외하고 위와 같이 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수만이 존재하는지 아니면 복수개의 0의 아닌 변환 계수가 존재하는지 여부를 나누어 significant_coeff_group_flag를 전송할 수 있다.
-significant_coeff_flag
(A) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 0인 경우, 마지막 변환 계수 서브 블록에 하나의 0이 아닌 변환 계수만이 존재하고 그 위치를 알고 있으므로 따로 significant_coeff_flag 정보를 부호화하지 않음.
(B) 마지막 변환 계수 서브 블록의 significant_coeff_group_flag가 1인 경우, 마지막 변환 계수 서브 블록에 복수개의 0이 아닌 변환 계수가 존재함을 나타내고, 스캐닝 순서 상 0번 변환 계수부터 마지막 변화 계수 바로 이전의 변환 계수까지의 significant_coeff_flag 정보를 전송함.
본 발명의 다른 실시예에서는 significant_coeff_flag를 전송하기 위해 전술한 바와 같이 예외적인 경우를 제외하고 significant_coeff_group_flag값에 따라 significant_coeff_flag를 어떻게 전송할지 여부를 결정할 수 있다. 이러한 실시예에 대해서는 아래의 도 23 및 도 24에서 상술한다.
전술한 significant map 부호화 방법은 아래의 표 2의 신택스와 같이 표현될 수 있다. 아래 표 2에 표현된 신택스는 본 발명을 구현하기 위한 하나의 예시로서 본 발명의 실시예에 따른 significant map 구현 방법에 해당하는 경우 다양한 신택스 구조를 사용할 수 있고 이러한 신택스 구조 또한 본 발명의 권리 범위에 포함된다.
<표 2>
Figure pat00002

변수 lastPosinSubset는 서브 블록 내에서 마지막 변환 계수의 상대 위치를 나타낼 수 있다. 상대 위치란 서브 블록에서 스캐닝 순서상 마지막 변환 계수가 몇번째 위치에 있느냐를 의미할 수 있다. 변수 lastPosinSubset이 0이란 것은 서브 블록 내에서 가장 첫 번째 위치한, 즉 (0,0)에 마지막 변환 계수가 위치해 있음을 말한다. 따라서, 마지막 변환 계수의 위치가 서브 블록 내에서 첫 번째 위치해 있을 경우, 해당 서브 블록에 대한 group_flag(significant_coeff_group_flag)를 시그널링하지 않고(도 21에서 전술한 실시예에 해당함.), 그외의 경우에는 group_flag를 명시적으로 시그널링할 수 있다.
변수 groupLastSubset은 group flag를 마지막 변환 계수가 위치한 서브 블록에 대해 시그널링할지 여부를 나타낸다. 4x4 크기의 서브 블록까지 시그널링할 경우, groupLastSubset에 numLastSubset 값이 지정이 되고, 4x4 크기 서브 블록의 이전 서브 블록까지만 시그널링할 경우 변수 groupLastSubset에 (numLastSubset -1)의 값이 지정될 수 있다.
if ((i<=groupLastSubset) && (i>0))는 앞서 구한 변수 groupLastSubset을 이용하여 실제 group_flag를 보내기 위한 조건문이다. 조건문에서 보면 i 값이 0보다 크고 (여기서, 0은 제1 서브 블록을 뜻함. 즉, 제1 서브 블록은 group flag 를 시그널링하지 않음) 변수 groupLastSubset 보다 작거나, 같은 범위 내에서 group flag를 시그널링할 수 있다.
(lastPosinSubset>1 || numLastSubset>i)는 마지막 위치 변환 계수를 포함한 서브 블록을 처리할 때, lastPosinSubset 값이 1을 초과해야만 coeff_flag(significant_coeff_flag)를 시그널링하기 위한 조건 문이다. 즉, 마지막 변환 계수의 서브 블록 내의 상대 위치가 스캐닝 순서상 0 번째 또는 1 번째 일 경우, coeff_flag를 시그널링할 필요가 없다(도 17 내지 도 20 및 도 21에서 전술한 실시예에 해당함).
아래는 본 발명의 실시예에 따른 significant map을 구성하기 위한 새로운정의의 significant_coeff_group_flag와 significant_coeff_flag의 semantics를 나타낸 것이다.
significant_coeff_group_flag[xCG][yCG] specifies for the coefficient group position (xCG, yCG) within the current transform block whether the corresponding coefficient group at location (xCG, yCG) has non-zero transform coefficient level. A coefficient group at location (xCG, yCG) is an array of 16 transform coefficient levels at locations (xC, yC).
If significant_coeff_group_flag[xCG][yCG] is equal to 0 and (xCG<<2, yCG<<2) is the coefficient group including the last significant position (LastSignificantCoeffX, LastSignificantCoeffY), the 15 transform coefficient levels (except the last significant position) of the coefficient group at location (xCG, yCG) are inferred to be equal to 0;
Else if significant_coeff_group_flag[xCG][yCG] is equal to 0, the 16 transform coefficient levels of the coefficient group at location (xCG, yCG) are inferred to be equal to 0;
Otherwise (significant_coeff_group_flag[xCG][yCG] is equal to 1), the following applies.
If significant_coeff_group_flag[xCG][yCG] is present, at least one of the 16 transform coefficient levels of the coefficient group at location (xCG, yCG) has a non zero value.
Otherwise, at least one of the 16 significant_coeff_flag syntax elements is present for the coefficient group at location (xCG, yCG)
When significant_coeff_group_flag[xCG][yCG] is not present, it is inferred as follows.
If (xCG, yCG) is equal to (0, 0), significant_coeff_group_flag[xCG][yCG] is inferred to be equal to 1.
Otherwise, significant_coeff_group_flag[xCG][yCG] is inferred to be equal to 0.
significant_coeff_flag[xC][yC] specifies for the transform coefficient position (xC, yC) within the current transform block whether the corresponding transform coefficient level at location (xC, yC) is non-zero as follows.
If significant_coeff_flag[xC][yC] is equal to 0, the transform coefficient level at location (xC, yC) is set equal to 0.
Otherwise (significant_coeff_flag[xC][yC] is equal to 1), the transform coefficient level at location (xC, yC) has a nonzero value.
When significant_coeff_flag[xC][yC] is not present, it is inferred as follows.
If (xC, yC) is the last significant location (LastSignificantCoeffX, LastSignificantCoeffY) in scan order and (xC, yC) is equal to (xCG << 2 + 1, yCG << 2), significant_coeff_flag[xC-1][yC] is inferred to be equal to 1
Else if (xC, yC) is the last significant location (LastSignificantCoeffX, LastSignificantCoeffY) in scan order or both of the following conditions are true, significant_coeff_flag[xC][yC] is inferred to be equal to 1
(xC, yC) is equal to (xCG << 2, yCG << 2)
implicitNonZeroCoeff is equal to 1
Otherwise, significant_coeff_flag[xC][yC] is inferred to be equal to 0.
이하, 도 23 및 도 24와 도 25 및 도 26에서는 새로운 정의의 significant_coeff_group_flag 및 significant_coeff_flag를 기초로 significant map 정보를 복호화하는 방법을 나타낸 개념도이다. 도 23 및 도 24와 도 25 및 도 26에서 개시하는 significant_coeff_group_flag 및 significant_coeff_flag를 파싱하는 순서는 임의적인 것으로서 다른 순서 및 절차를 가진 파싱 방법이 적용될 수도 있고 이러한 절차 또한 본 발명의 권리 범위에 포함된다.
도 23 및 도 24에서는 예외적인 경우를 고려하지 않고 significant_coeff_group_flag 및 significant_coeff_flag를 파싱하는 방법에 대해 개시한다.
도 23은 본 발명의 실시예에 따른 각 서브 블록의significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 23을 참조하면, 복호화 대상 블록이 제1 서브 블록인지 여부를 판단한다(단계 S2300).
복호화 대상 블록이 제1 서브 블록인 경우 그룹 플래그(group_flag)를 1로 설정한다(S2310).
본 발명의 실시예에 따르면 제1 서브 블록의 경우, 그룹 플래그값을 부호화하여 전송하지 않고 복호화단에서 1로 유추한다.
복호화 대상 블록이 제1 서브 블록이 아닌 경우 그룹 플래그(group_flag)를 파싱한다(S2320).
복호화 대상 블록이 제1 서브 블록이 아닌 경우 그룹 플래그(group_flag)를 파싱할 수 있다. 본 발명의 실시예에 따르면 서브 블록이 제1 서브 블록 및 마지막 위치 변환 계수 서브 블록이 아닌 경우, 0이 아닌 변환 계수 존재 여부에 따라 그룹 플래그(significant_coeff_group_flag)를 0 또는 1로 설정할 수 있고 마지막 위치 변환 계수 서브 블록인 경우, 0이 아닌 변환 계수가 하나인지 아니면 두개 이상인지 여부에 따라 그룹 플래그(significant_coeff_group_flag)를 0 또는 1로 설정할 수 있다.
도 24는 본 발명의 실시예에 따른 각 서브 블록의significant_coeff_flag 정보를 산출하는 방법을 나타낸 순서도이다.
복호화 대상 서브 블록이 제1 서브 블록인지 여부를 판단한다(단계 S2400).
복호화 대상 서브 블록이 제1 서브 블록인 경우, 서브 블록에 포함된 변환 계수 정보인 significant_coeff_flag 정보를 파싱할 수 있다(단계 S2405).
복호화 대상 서브 블록이 제1 서브 블록이 아닌 경우, 복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인지 여부를 판단한다(단계 S2410).
복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인 경우, 마지막 위치 변환 계수의 significant_coeff_flag를 1로 설정한다(단계 S2415).
마지막 위치 변환 계수의 경우, significant_coeff_flag가 부호화되어 전송되지 않는다. 따라서, 마지막 위치 변환 계수의 significant_coeff_flag를 1로 설정한다.
significant_coeff_group_flag가 0인지 여부를 판단한다(단계 S2435).
significant_coeff_group_flag가 0인 경우, 마지막 변환 계수를 제외한 나머지 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2430).
significant_coeff_group_flag가 0이 아닌 경우, 마지막 변환 계수 이전의 변환 계수까지 significant_coeff_flag를 파싱한다(단계 S2440).
단계 S2440을 통해 마지막 변환 계수 이전의 변환 계수까지의 significant_coeff_flag를 파싱한 후 마지막 변환 계수 다음의 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2430).
단계 S2410을 통한 판단 결과, 복호화 대상 서브 블록이 제1 서브 블록 또는 마지막 변환 계수 서브 블록이 아닌 경우, 복호화 대상 서브 블록의 significant_coeff_group_flag가 0인지 여부를 판단한다(단계 S2450).
단계S2450를 통한 판단 결과 복호화 대상 서브 블록의 significant_coeff_group_flag가 0이 아닌 경우, 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag를 복호화한다(단계 S2455).
서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0인지 여부를 판단한다(단계 S2460).
단계 S2460를 통한 판단 결과 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0인 경우, 첫번째 스캐닝 위치에 존재하는 변환 계수의 significant_coeff_flag를 1로 설정한다(단계 S2465).
단계 S2460를 통한 판단 결과 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0이 아닌 경우, 첫번째 스캐닝 위치에 존재하는 변환 계수의 significant_coeff_flag를 파싱한다(단계 S2470).
단계 S2450을 통한 판단 결과 복호화 대상 서브 블록의 significant_coeff_group_flag가 0인 경우, 해당 서브 블록에 포함된 모든 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2475).
도 25 및 도 26에서는 예외적인 경우를 고려하여 significant_coeff_group_flag 및 significant_coeff_flag를 파싱하는 방법에 대해 개시한다.
도 25는 본 발명의 실시예에 따른 각 서브 블록의significant_coeff_group_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 25를 참조하면, 복호화 대상 서브 블록이 제1 서브 블록인지 여부를 판단한다(단계 S2500).
복호화 대상 서브 블록이 제1 서브 블록인 경우, group_flag(significant_coeff_group_flag)를 1로 설정한다(단계 S2510).
전술한 바와 같이 제1 서브 블록의 경우 제1 서브 블록 내에 0이 아닌 변환 계수가 존재할 가능성이 크므로, significant_coeff_group_flag를 1로 유추하여 설정한다.
복호화 대상 서브 블록이 제1 서브 블록이 아닌 경우, 복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인지 여부를 판단한다(단계 S2520).
복호화 대상 서브 블록이 제1 서브 블록이 아닌 경우, 복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인지 여부에 따라 significant_coeff_group_flag를 다르게 설정할 수 있다.
복호화 대상 서브 블록이 마지막 변환 계수 서브 블록이 아닌 경우, 부호화기에서 전송된 significant_coeff_group_flag값을 파싱한다(단계 S2530).
복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인 경우, 마지막 변환 계수 위치가 서브 블록 내에서 스캔 순서상 첫번째 위치인지 여부를 판단한다(단계 S2540).
마지막 변환 계수 위치가 스캔 순서상 첫번째 위치인 경우, significant_coeff_group_flag가 전송되지 않으므로 마지막 변환 계수 서브 블록의 significant_coeff_group_flag를 0으로 설정한다(단계 S2550).
마지막 변환 계수 위치가 스캔 순서상 첫번째 위치가 아닌 경우, 부호화되어 전송된 significant_coeff_group_flag를 복호화한다(단계 S2530).
도 26은 본 발명의 실시예에 따른 서브 블록의 significant_coeff_flag 정보를 산출하는 방법을 나타낸 순서도이다.
도 26을 참조하면, 복호화 대상 서브 블록이 제1 서브 블록인지 여부를 판단한다(단계 S2600).
복호화 대상 서브 블록이 제1 서브 블록인 경우, 서브 블록에 포함된 변환 계수 정보인 significant_coeff_flag 정보를 복호화할 수 있다(단계 S2605).
복호화 대상 서브 블록이 제1 서브 블록이 아닌 경우, 복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인지 여부를 판단한다(단계 S2610).
복호화 대상 서브 블록이 마지막 변환 계수 서브 블록인 경우, 마지막 위치 변환 계수의 significant_coeff_flag를 1로 설정한다(단계 S2615).
마지막 위치 변환 계수의 경우, significant_coeff_flag가 부호화되어 전송되지 않는다. 따라서, 마지막 위치 변환 계수의 significant_coeff_flag를 1로 설정한다.
significant_coeff_group_flag가 0인지 여부를 판단한다(단계 S2620).
significant_coeff_group_flag가 0인 경우, 마지막 변환 계수를 제외한 나머지 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2630).
significant_coeff_group_flag가 0이 아닌 경우, 스캐닝 순서상 두번째 변환 계수가 마지막 변환 계수인지 여부를 판단한다(단계 S2635).
significant_coeff_group_flag가 0이 아닌 경우, 스캐닝 순서상 두번째 변환 계수가 마지막 변환 계수인 경우 스캐닝 순서상 첫번째 위치에 존재하는 변환 계수의 significant_coeff_flag를 1로 설정한다(단계 S2625).
도 17 내지 도 20에서 전술한 바와 같이 스캐닝 순서상 두번째 변환 계수가 마지막 변환 계수인 경우, 첫번째 변환 계수의 significant_coeff_flag는 부호화되어 전송되지 않을 수 있고 복호화 단계에서 첫번째 변환 계수의 significant_coeff_flag는 1로 유추될 수 있다.
단계 S2625를 수행한 후 마지막 변환 계수 서브 블록에 포함된 나머지 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2630).
단계 S2620을 통한 판단 결과 스캐닝 순서상 두번째 변환 계수가 마지막 변환 계수가 아닌 경우 마지막 변환 계수 서브 블록에 포함된 마지막 변환 계수 이전의 변환 계수까지의 significant_coeff_flag를 파싱한다(단계 S2640).
단계 S2640을 통해 마지막 변환 계수 이전의 변환 계수까지의 significant_coeff_flag를 파싱한 후 마지막 변환 계수 다음의 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2630).
단계 S2610을 통한 판단 결과, 복호화 대상 서브 블록이 제1 서브 블록 또는 마지막 변환 계수 서브 블록이 아닌 경우, 복호화 대상 서브 블록의 significant_coeff_group_flag가 0인지 여부를 판단한다(단계 S2650).
단계 S2650를 통한 판단 결과 복호화 대상 서브 블록의 significant_coeff_group_flag가 0이 아닌 경우, 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag를 복호화한다(단계 S2655).
서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0인지 여부를 판단한다(단계 S2660).
단계 S2660를 통한 판단 결과 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0인 경우, 첫번째 스캐닝 위치에 존재하는 변환 계수의 significant_coeff_flag를 1로 설정한다(단계 S2665).
단계 S2660를 통한 판단 결과 서브 블록에 포함된 첫번째 스캔 위치에 존재하는 변환 계수를 제외한 나머지 15개의 변환 계수의 significant_coeff_flag가 모두 0이 아닌 경우, 첫번째 스캐닝 위치에 존재하는 변환 계수의 significant_coeff_flag를 파싱한다(단계 S2670).
단계 S2650을 통한 판단 결과 복호화 대상 서브 블록의 significant_coeff_group_flag가 0인 경우, 해당 서브 블록에 포함된 모든 변환 계수의 significant_coeff_flag를 0으로 설정한다(단계 S2675).
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 복호화 대상 서브 블록이 마지막 위치 변환 계수 서브 블록인지 여부를 판단하는 단계; 및
    상기 마지막 위치 변환 계수 서브 블록에 포함된 0이 아닌 변환 계수가 한개인지 여부에 대한 정보를 포함한 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그를 복호화하는 단계를 포함하는 영상 복호화 방법.
  2. 제1항에 있어서, 상기 그룹 플래그는,
    상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하고 상기 0이 아닌 하나의 변환 계수가 서브 블록 내에서 첫번째 스캔 위치에 존재하지 않을 경우 제1 플래그값으로 부호화되고 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그값으로 부호화되는 플래그인 영상 복호화 방법.
  3. 제1항에 있어서,상기 그룹 플래그는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 존재하지 않는 경우 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그값으로 설정되는 플래그인 영상 복호화 방법.
  4. 제1항에 있어서,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그인 경우, 마지막 위치 변환 계수 위치에 해당하는 계수 플래그가 제2 플래그로 설정되고 마지막 위치 변환 계수를 제외한 마지막 위치 변환 계수 서브 블록에 포함된 나머지 변환 계수의 계수 플래그가 제1 플래그로 설정되는 단계를 더 포함하는 영상 복호화 방법.
  5. 제1항에 있어서,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 변환 계수가 스캔 순서상 첫번째 스캔 순서 및 두번째 스캔 순서에 존재하지 않는 경우, 상기 마지막 위치 변환 계수 서브 블록의 계수 플래그를 복호화하는 단계를 더 포함하는 영상 복호화 방법.
  6. 제1항에 있어서,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 마지막 위치 변환 계수가 스캔 순서상 두번째 스캔 순서에 위치한 경우, 상기 마지막 위치 변환 계수 의 계수 플래그가 제2 플래그로 설정되고 스캔 순서상 첫번째 스캔 순서에 위치한 변환 계수의 계수 플래그가 제2 플래그로 설정되는 단계를 더 포함하는 영상 복호화 방법.
  7. 제1항에 있어서,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우 스캔 순서상 첫번째 스캔 순서에 위치한 마지막 위치 변환 계수의 계수 플래그가 제2 플래그로 설정되는 단계를 더 포함하는 영상 복호화 방법.
  8. 제1항에 있어서, 상기 그룹 플래그는,
    상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하는 경우 제1 플래그, 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그로 설정되는 플래그인 영상 복호화 방법.
  9. 제1항에 있어서,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우, 마지막 위치 변환 계수의 계수 플래그가 제2 플래그로 설정되고 스캔 순서상 상기 마지막 위치 변환 계수 이전에 존재하는 계수의 계수 플래그가 제1 플래그로 설정되는 단계를 더 포함하는 영상 복호화 방법.
  10. 제1항에 있어서,
    제1 서브 블록 및 마지막 위치 변환 계수 서브 블록을 제외한 나머지 서브 블록의 그룹 플래그를 복호화하는 단계; 및
    상기 나머지 서브 블록의 그룹 플래그가 제2 플래그인 경우, 상기 나머지 서브 블록 내에서 스캔 순서상 첫번째 스캔 순서에 해당하는 변환 계수를 제외한 나머지 변환 계수의 계수 플래그를 복호화하는 단계를 포함하는 영상 복호화 방법.
  11. 상기 역양자화부로부터 수신된 정보를 기초로 복호화 대상 서브 블록이 마지막 위치 변환 계수 서브 블록인지 여부를 판단하고 상기 마지막 위치 변환 계수 서브 블록에 포함된 0이 아닌 변환 계수의 개수 정보를 포함한 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그를 복호화하는 엔트로피 복호화부; 및
    상기 엔트로피 복호화부로부터 복호화된 정보를 기초로 재정렬을 수행하는 재정렬부를 포함하는 영상 복호화 장치.
  12. 제11항에 있어서, 상기 그룹 플래그는,
    상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하고 상기 0이 아닌 하나의 변환 계수가 서브 블록 내에서 첫번째 스캔 위치에 존재하지 않을 경우 제1 플래그값으로 부호화되고 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그값으로 부호화되는 그룹 플래그인 영상 복호화 장치.
  13. 제11항에 있어서, 상기 그룹 플래그는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 존재하지 않는 경우 상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그값으로 설정되는 그룹 플래그인 영상 복호화 장치.
  14. 제11항에 있어서, 상기 엔트로피 복호화부는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그인 경우, 마지막 위치 변환 계수 위치에 해당하는 계수 플래그가 제2 플래그로 설정되고 마지막 위치 변환 계수를 제외한 마지막 위치 변환 계수 서브 블록에 포함된 나머지 변환 계수의 계수 플래그가 제1 플래그로 설정되는 엔트로피 복호화부인 영상 복호화 장치.
  15. 제11항에 있어서, 상기 엔트로피 복호화부는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 변환 계수가 스캔 순서상 첫번째 스캔 순서 및 두번째 스캔 순서에 존재하지 않는 경우, 상기 마지막 위치 변환 계수 서브 블록의 계수 플래그를 복호화하는 엔트로피 복호화부인 영상 복호화 장치.
  16. 제11항에 있어서, 상기 엔트로피 복호화부는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제2 플래그이고 마지막 위치 변환 계수가 스캔 순서상 두번째 스캔 순서에 위치한 경우, 상기 마지막 위치 변환 계수의 계수 플래그가 제2 플래그로 설정되고 스캔 순서상 첫번째 스캔 순서에 위치한 변환 계수의 계수 플래그가 제2 플래그로 설정되도록 하는 엔트로피 복호화부인 영상 복호화 장치.
  17. 제11항에 있어서, 상기 엔트로피 복호화부는,
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우 스캔 순서상 첫번째 스캔 순서에 위치한 마지막 위치 변환 계수의 계수 플래그가 제2 플래그로 설정되도록 하는 엔트로피 복호화부인 영상 복호화 장치.
  18. 제11항에 있어서, 상기 엔트로피 복호화부는,
    상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 하나의 변환 계수를 포함하는 경우 제1 플래그, 상기 마지막 위치 변환 계수 서브 블록이 0이 아닌 복수의 변환 계수를 포함하는 경우 제2 플래그로 설정되도록 하는 엔트로피 복호화부인 영상 복호화 장치.
  19. 제11항에 있어서, 상기 엔트로피 복호화부는
    상기 마지막 위치 변환 계수 서브 블록의 그룹 플래그가 제1 플래그로 설정된 경우, 마지막 위치 변환 계수의 계수 플래그가 제2 플래그로 설정되도록 하고 스캔 순서상 상기 마지막 위치 변환 계수 이전에 존재하는 계수의 계수 플래그가 제1 플래그로 설정되도록 하는 엔트로피 복호화부인 영상 복호화 장치.
  20. 제11항에 있어서, 상기 엔트로피 복호화부는
    제1 서브 블록 및 마지막 위치 변환 계수 서브 블록을 제외한 나머지 서브 블록의 그룹 플래그를 복호화하고 상기 나머지 서브 블록의 그룹 플래그가 제2 플래그인 경우, 상기 나머지 서브 블록 내에서 스캔 순서상 첫번째 스캔 순서에 해당하는 변환 계수를 제외한 나머지 변환 계수의 계수 플래그를 복호화하는 엔트로피 복호화부인 영상 복호화 장치.
KR1020120039424A 2012-04-16 2012-04-16 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치 KR20130116754A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120039424A KR20130116754A (ko) 2012-04-16 2012-04-16 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치
PCT/KR2013/002947 WO2013157769A1 (ko) 2012-04-16 2013-04-09 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120039424A KR20130116754A (ko) 2012-04-16 2012-04-16 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치

Publications (1)

Publication Number Publication Date
KR20130116754A true KR20130116754A (ko) 2013-10-24

Family

ID=49383671

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120039424A KR20130116754A (ko) 2012-04-16 2012-04-16 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치

Country Status (2)

Country Link
KR (1) KR20130116754A (ko)
WO (1) WO2013157769A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018026028A1 (ko) * 2016-08-02 2018-02-08 엘지전자(주) 서브 계수 그룹을 이용하여 레지듀얼 신호를 인코딩, 디코딩하는 방법 및 장치
WO2018190594A1 (ko) * 2017-04-13 2018-10-18 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
KR20190013380A (ko) * 2017-07-31 2019-02-11 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
WO2019045538A1 (ko) * 2017-09-04 2019-03-07 삼성전자 주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
RU2733096C2 (ru) * 2016-05-13 2020-09-29 Сони Корпорейшн Устройство и способ обработки изображения
KR20220140678A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003153228A (ja) * 2001-11-15 2003-05-23 Sony Corp 画像符号化装置及び画像復号化装置
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
KR20090129926A (ko) * 2008-06-13 2009-12-17 삼성전자주식회사 영상 부호화 방법 및 그 장치, 영상 복호화 방법 및 그 장치
AU2011274680B2 (en) * 2010-07-09 2015-06-11 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding a transform coefficient
KR20120033951A (ko) * 2010-09-30 2012-04-09 한국전자통신연구원 영상 부호화 방법과 복호화 방법 및 이를 이용한 영상 부호화 장치와 복호화 장치

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2733096C2 (ru) * 2016-05-13 2020-09-29 Сони Корпорейшн Устройство и способ обработки изображения
US11877008B2 (en) 2016-05-13 2024-01-16 Sony Corporation Image processing apparatus and method
US11546635B2 (en) 2016-05-13 2023-01-03 Sony Corporation Image processing apparatus and method for coding skip information
US11070841B2 (en) 2016-05-13 2021-07-20 Sony Corporation Image processing apparatus and method for coding skip information
US10869061B2 (en) 2016-05-13 2020-12-15 Sony Corporation Image processing apparatus and method
WO2018026028A1 (ko) * 2016-08-02 2018-02-08 엘지전자(주) 서브 계수 그룹을 이용하여 레지듀얼 신호를 인코딩, 디코딩하는 방법 및 장치
KR20210083404A (ko) * 2017-04-13 2021-07-06 엘지전자 주식회사 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
KR20220057647A (ko) * 2017-04-13 2022-05-09 엘지전자 주식회사 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
KR20200102551A (ko) * 2017-04-13 2020-08-31 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
AU2018251489B2 (en) * 2017-04-13 2021-05-27 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for entropy encoding, decoding video signal
KR20190132519A (ko) * 2017-04-13 2019-11-27 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
US11902592B2 (en) 2017-04-13 2024-02-13 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
US11240536B2 (en) 2017-04-13 2022-02-01 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
RU2738317C1 (ru) * 2017-04-13 2020-12-11 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для энтропийного кодирования и декодирования видеосигнала
WO2018190594A1 (ko) * 2017-04-13 2018-10-18 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
AU2021221878B2 (en) * 2017-04-13 2023-02-09 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for entropy encoding, decoding video signal
KR20220140675A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140676A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20190013380A (ko) * 2017-07-31 2019-02-11 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140677A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
KR20220140678A (ko) * 2017-07-31 2022-10-18 에스케이텔레콤 주식회사 비-제로 계수들의 위치를 표현하는 방법 및 장치
WO2019045538A1 (ko) * 2017-09-04 2019-03-07 삼성전자 주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치

Also Published As

Publication number Publication date
WO2013157769A1 (ko) 2013-10-24

Similar Documents

Publication Publication Date Title
KR101549910B1 (ko) 화면 내 예측 모드에 기초한 적응적인 변환 방법 및 이러한 방법을 사용하는 장치
KR101569086B1 (ko) 화면 내 예측 모드 매핑 방법 및 이러한 방법을 사용하는 장치
KR102465116B1 (ko) 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
KR102555352B1 (ko) 인트라 예측 방법과 이를 이용한 부호화 장치 및 복호화 장치
KR101965388B1 (ko) 양자화 계수 부/복호화 방법 및 이러한 방법을 사용하는 장치
KR20140007073A (ko) 휘도 샘플을 이용한 색차 블록의 화면 내 예측 방법 및 이러한 방법을 사용하는 장치
KR20150096375A (ko) 영상 인코딩/디코딩 방법 및 이를 이용하는 장치
KR101974952B1 (ko) 두 개의 후보 인트라 예측 모드를 이용한 화면 내 예측 모드의 부/복호화 방법 및 이러한 방법을 사용하는 장치
KR20130118240A (ko) 블록 정보에 따른 변환 방법 및 이러한 방법을 사용하는 장치
WO2012138032A1 (ko) 영상 정보 부호화 방법 및 복호화 방법
KR20130116754A (ko) 엔트로피 부복호화 방법 및 이러한 방법을 사용하는 장치
KR20140062443A (ko) 시간적 후보 움직임 벡터 유도 방법 및 이러한 방법을 사용하는 장치
KR20140039093A (ko) 무손실 부호화/복호화 방법 및 이러한 방법을 사용하는 장치
KR20130085603A (ko) 색차 블록의 화면 내 예측 모드 방법 및 이러한 방법을 사용하는 장치
KR20130100662A (ko) 후보 화면 내 예측 모드 결정 방법 및 이러한 방법을 사용하는 장치
KR20140004825A (ko) 엔트로피 부호화 및 엔트로피 복호화를 위한 구문 요소 이진화 방법 및 장치

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination