KR20190031558A - 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치 - Google Patents

이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20190031558A
KR20190031558A KR1020197005929A KR20197005929A KR20190031558A KR 20190031558 A KR20190031558 A KR 20190031558A KR 1020197005929 A KR1020197005929 A KR 1020197005929A KR 20197005929 A KR20197005929 A KR 20197005929A KR 20190031558 A KR20190031558 A KR 20190031558A
Authority
KR
South Korea
Prior art keywords
band
decoded
block
offsets
decoding
Prior art date
Application number
KR1020197005929A
Other languages
English (en)
Inventor
필립 보르드
땅기 푸아리에
야 천
파비앙 라까프
Original Assignee
인터디지털 브이씨 홀딩스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터디지털 브이씨 홀딩스 인코포레이티드 filed Critical 인터디지털 브이씨 홀딩스 인코포레이티드
Publication of KR20190031558A publication Critical patent/KR20190031558A/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • 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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • 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

- 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하는 단계; - 상기 비트스트림으로부터 샘플 적응적 오프셋 필터(SAO)의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하는 단계; - 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하는 단계를 포함하고; 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋인 디코딩 방법이 개시된다.

Description

이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치
본 원리들은 일반적으로 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치에 관한 것으로, 더 상세하게는, 인-루프 필터링(in-loop filtering), 특히, 샘플 적응적 오프셋 필터링(sample adaptive offset filtering)을 갖는 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치에 관한 것이다.
높은 압축 효율을 달성하기 위하여, 비디오 코딩 방식들은 비디오 컨텐츠에서의 공간적 및 시간적 중복성을 활용하기 위하여 예측 및 변환을 통상적으로 채용한다. 일반적으로, 인트라 또는 인터 예측은 인트라 또는 인터 프레임 상관을 활용하기 위하여 이용되고, 그 다음으로, 잔차(residual)들로서 종종 나타내어진, 원래의 이미지와 예측된 이미지 사이의 차이들은 변환되고, 양자화되고, 엔트로피 코딩된다. 비디오를 재구성하기 위하여, 압축된 데이터는 예측, 변환, 양자화, 및 엔트로피 코딩에 대응하는 역 프로세스(inverse process)들에 의해 디코딩된다.
전통적인 비디오 코딩 방식은 재구성된 이미지들의 품질을 개선시키기 위한 인-루프 필터링 프로세스들을 포함한다. 인-루프 필터링은 디블록킹 필터링(deblocking filtering)과, 그 다음으로, HEVC에서와 같은 샘플 적응적 오프셋(Sample Adaptive Offset)(SAO) 필터링을 포함할 수도 있다. 샘플 적응적 오프셋 필터링 프로세스는 "High Efficiency Video Coding(고효율 비디오 코딩)"으로 명명된 문서 ITU-T H.265의 섹션 8.7.3에서 설명되어 있다. SAO 필터링은 코딩 아티팩트(coding artifact)들, 예컨대, 링잉 아티팩트(ringing artifact)를 감소시키기 위하여 오프셋들을 일부 픽셀들에 추가하는 것을 포함한다. 2 개의 유형들의 필터링은 SAO 필터링이 인에이블(또는 활성화)될 때에 수행될 수도 있다: 에지 오프셋(Edge Offset)(EO) 유형 또는 대역 오프셋(Band Offset)(BO) 유형. SAO 필터링은 영역에서의 샘플들을, BO 유형의 경우에 대역이라는 명칭인 다수의 범주들로 먼저 분류함으로써, 그리고 그 범주에 따라 특정 오프셋(BO 유형의 경우에 대역 오프셋)을 각각의 샘플에 추가함으로써 샘플 왜곡을 감소시킨다.
HEVC에서 규정된 바와 같은 BO 필터링에서는, 하나의 대역 오프셋이 그 값들이 동일한 대역(값들의 범위)에 속하는 모든 샘플들에 추가된다. 이 목적을 위하여, 샘플 값 범위는 32 개의 동일한 대역들로 분할되고, 대역들은 0으로부터 31까지 인덱싱된다. 범위 [0;255]에서의 8-비트 샘플들에 대하여, 대역의 폭은 8이다. 대역 오프셋들은 디코더로 시그널링될 수도 있다. HEVC에서는, 오직 4 개의 연속 대역들의 대역 오프셋들 및 현재의 블록의 대역 위치(시작 대역 위치로서 또한 알려짐)가 디코더로 시그널링된다. 시작 대역 위치는 제1 인코딩된 대역 오프셋의 대역의 위치를 표시한다. 대역 위치는 인덱스에 의해 표시된다. 예로서, 도 1에서, 대역 위치는 18이고, 4 개의 오프셋들은 4 개의 연속 대역들 18, 19, 20, 및 21에 배정되는 {0, 0, 2, 3}이다. 다른 대역들에 대하여, 오프셋들은 제로일 것으로 추론된다.
HEVC에서, SAO 파라미터들(대역 위치 및 대역 오프셋들)은 CTU(코딩 트리 유닛) 레벨에서 시그널링된다. 그러나, 이 SAO 파라미터들의 인코딩은 차선(sub-optimal)이다. 첫째, 도 2에서 도시된 대역 오프셋들의 구성은 적어도 2 개의 방법들로 인코딩될 수도 있다. 오직 대역들 20 및 21은 비-제로(non-zero) 오프셋들을 가지므로, 구성은 대역 위치가 18이고 대역 오프셋들이 {0, 0, 2, 3}인 것을 표시하는 것, 또는 대역 위치가 19이고 대역 오프셋들이 {0, 2, 3, 0}인 것을 표시하는 것, 또는 대역 위치가 20이고 대역 오프셋들이 {2, 3, 0, 0}인 것을 표시하는 것의 어느 하나에 의해 인코딩될 수도 있다. 엔트로피 코딩 이론에서는, 정보가 상이한 신택스(syntax)들로 인코딩될 수 있을 경우, 신택스는 차선인 것으로 고려된다.
둘째, 대역 위치들이 동일-확률(equi-probable)인 것을 가정하면, 시작 대역 위치는 비-적응 확률 상태(non-adapting probability state)를 갖는 고정 길이 코딩(Fixed Length Coding)(FLC)으로 절대 값으로 인코딩된다. 이 가정은 차선의 신택스를 초래한다.
이 때문에, 코딩 코스트(coding cost)를 감소시키기 위하여 SAO 필터 파라미터들의 인코딩을 개선시키는 것이 바람직할 것이다.
샘플 적응적 오프셋 필터(SAO) 파라미터들을 인코딩하기 위하여 이용된 비트들의 수를 감소시키는 것을 허용하는 디코딩 및 인코딩 방법들이 개시된다.
디코딩 방법은:
- 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하는 단계;
- 비트스트림으로부터 샘플 적응적 오프셋 필터(SAO)의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하는 단계;
- 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하는 단계를 포함하고;
여기서, 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
특정 실시예에서, 제1 대역 오프셋을 디코딩하는 단계는 제1 대역 오프셋을 나타내는 디코딩된 신택스 엘리먼트(syntax element)에 1을 가산하는 단계를 포함한다.
예로서, 적어도 하나의 이미지 블록은 루마 블록(luma block)이다. 특정 실시예에서, 디코딩 방법은 적어도 2 개의 크로마 블록(chroma block)들을 디코딩하는 단계, 및 적어도 제1 크로마 블록에 대하여, 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일한지 여부를 표시하는 추가적인 비트를 디코딩하는 단계를 더 포함한다.
또 다른 특정 실시예에서, 디코딩 방법은 제1 크로마 블록에 대하여 디코딩된 추가적인 비트가 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일하지는 않다는 것을 표시할 경우에만, 적어도 제2 크로마 블록에 대하여, 제2 크로마 블록에 대한 모든 대역 오프셋들이 제로인지 여부를 표시하는 추가적인 비트를 디코딩하는 단계를 더 포함한다.
또 다른 실시예에서, 대역 위치를 디코딩하는 단계는 참조 대역 위치로부터 대역 위치를 디코딩하는 단계를 포함한다.
예로서, 대역 위치를 디코딩하는 단계는 가변 길이 디코딩을 이용한다.
특정 실시예에서, 참조 대역 위치는 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치이다.
특정 실시예에서, 참조 대역 위치로부터 대역 위치를 디코딩하는 단계는 디코딩된 잔차를 참조 대역 위치에 가산하는 단계를 포함한다.
유리하게도, 디코딩된 블록의 최대 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와, 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와의 사이의 차이가 디코딩된 대역 오프셋들의 수보다 낮을 경우, 대역 위치는 디코딩되지 않는다.
인코딩 방법은:
- 비트스트림에서의 적어도 하나의 이미지 블록을 인코딩 및 디코딩하는 단계;
- 비트스트림에서의 샘플 적응적 오프셋 필터(SAO)의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하는 단계;
- 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하는 단계를 포함하고;
여기서, 복수의 대역 오프셋들 중의 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
특정 실시예에서, 제1 대역 오프셋을 인코딩하는 단계는 제1 대역 오프셋 마이너스(minus) 1을 인코딩하는 단계를 포함한다.
예로서, 적어도 하나의 이미지 블록은 루마 블록이다. 특정 실시예에서, 인코딩 방법은 적어도 2 개의 크로마 블록들을 인코딩하고, 적어도 제1 크로마 블록에 대하여, 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일한지 여부를 표시하는 추가적인 비트를 인코딩하는 단계를 더 포함한다.
또 다른 특정 실시예에서, 인코딩 방법은 제1 크로마 블록에 대하여 인코딩된 추가적인 비트가 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일하지는 않다는 것을 표시할 경우에만, 적어도 제2 크로마 블록에 대하여, 제2 크로마 블록에 대한 모든 대역 오프셋들이 제로인지 여부를 표시하는 추가적인 비트를 인코딩하는 단계를 더 포함한다.
특정 실시예에서, 대역 위치를 인코딩하는 단계는 참조 대역 위치로부터 대역 위치를 인코딩하는 단계를 포함한다.
예로서, 대역 위치를 인코딩하는 단계는 가변 길이 코딩을 이용한다.
예시적인 실시예에서, 참조 대역 위치는 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치이다.
특정 실시예에서, 참조 대역 위치로부터 대역 위치를 인코딩하는 단계는 잔차를 획득하기 위하여 상기 대역 위치로부터 상기 참조 대역 위치를 감산하는 단계, 및 상기 잔차를 인코딩하는 단계를 포함한다.
유리하게도, 디코딩된 블록의 최대 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와, 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와의 사이의 차이가 인코딩된 대역 오프셋들의 수보다 낮을 경우, 대역 위치는 인코딩되지 않는다.
디코더로서:
- 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하기 위한 수단;
- 비트스트림으로부터 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하기 위한 수단;
- 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하기 위한 수단을 포함하는 디코더가 개시되고;
여기서, 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
변형에서는, 적어도 비트스트림을 액세스하도록 구성된 통신 인터페이스 및 적어도 하나의 프로세서를 포함하는 디코더가 개시되고, 상기 적어도 하나의 프로세서는:
- 액세스된 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하고;
- 비트스트림으로부터 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하고;
- 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하도록 구성되고;
여기서, 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
디코더들은 다양한 실시예들에 따른 인코딩 방법을 구현하도록 구성된다.
인코더로서:
- 비트스트림에서의 적어도 하나의 이미지 블록을 인코딩 및 디코딩하기 위한 수단;
- 비트스트림에서의 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하기 위한 수단;
- 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하기 위한 수단을 포함하는 인코더가 개시되고;
여기서, 복수의 대역 오프셋들 중의 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
변형에서는, 적어도 하나의 이미지 블록을 액세스하도록 구성된 통신 인터페이스 및 적어도 하나의 프로세서를 포함하는 인코더가 개시되고, 상기 적어도 하나의 프로세서는:
- 비트스트림에서의 액세스된 적어도 하나의 이미지 블록을 인코딩 및 디코딩하고;
- 비트스트림에서의 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하고;
- 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링하도록 구성되고;
여기서, 복수의 대역 오프셋들 중의 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
인코더들은 다양한 실시예들에 따른 인코딩 방법을 구현하도록 구성된다.
적어도 하나의 이미지 블록을 나타내는 코딩된 데이터; 및 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 나타내는 코딩된 데이터를 포함하는 비트스트림이 개시되고, 여기서, 복수의 대역 오프셋들 중의 제1 대역 오프셋은 반드시 비-제로 대역 오프셋이다. 즉, 비트스트림은 제1 오프셋이 제로인지 또는 아닌지 여부를 표시하는 명시적 신택스를 갖지 않는다.
스트림을 그 상에 저장한 비-일시적 프로세서 판독가능 매체가 개시되고, 여기서, 스트림은:
적어도 하나의 이미지 블록을 나타내는 코딩된 데이터; 및 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 나타내는 코딩된 데이터를 포함하고, 여기서, 복수의 대역 오프셋들 중의 제1 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
송신 방법으로서:
- 적어도 하나의 이미지 블록을 나타내는 코딩된 데이터를 송신하는 단계; 및
샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 나타내는 코딩된 데이터를 송신하는 단계를 포함하는 송신 방법이 개시되고, 여기서, 복수의 대역 오프셋들 중의 제1 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
송신기로서:
- 적어도 하나의 이미지 블록을 나타내는 코딩된 데이터를 송신하기 위한 수단; 및
샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 나타내는 코딩된 데이터를 송신하기 위한 수단을 포함하는 송신기가 개시되고, 여기서, 복수의 대역 오프셋들 중의 제1 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
변형에서는, 코딩된 데이터를 액세스하도록 구성된 통신 인터페이스 및 적어도 하나의 프로세서를 포함하는 송신기가 개시되고, 상기 적어도 하나의 프로세서는:
- 적어도 하나의 이미지 블록을 나타내는 코딩된 데이터를 송신하고; 그리고
샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 나타내는 코딩된 데이터를 송신하도록 구성되고, 여기서, 복수의 대역 오프셋들 중의 제1 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
저장된 명령들을 가지는 비-일시적 컴퓨터 판독가능 매체가 개시되고, 상기 명령들은, 실행 시에:
- 액세스된 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하고;
- 비트스트림으로부터 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하고;
- 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링할 것을 적어도 하나의 프로세서에 명령하고;
여기서, 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
저장된 명령들을 가지는 비-일시적 컴퓨터 판독가능 매체가 개시되고, 상기 명령들은, 실행 시에:
- 비트스트림에서의 액세스된 적어도 하나의 이미지 블록을 인코딩 및 디코딩하고;
- 비트스트림에서의 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하고;
- 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링할 것을 적어도 하나의 프로세서에 명령하고;
여기서, 복수의 대역 오프셋들 중의 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다.
- 도 1 및 도 2는 32 개의 대역들로의 샘플 범위의 예시적인 분할을 예시한다;
- 도 3은 비-제한적인 실시예에 따라, 비트스트림에서의 이미지 블록을 인코딩하도록 구성된 송신기의 예시적인 아키텍처를 나타낸다;
- 도 4는 예시적인 HEVC 인코더를 예시한다;
- 도 5 및 도 6은 특정한 그리고 비-제한적인 실시예들에 따라, 비트스트림에서의 이미지 블록을 인코딩하기 위한 방법의 플로우차트들을 나타낸다;
- 도 7a 및 도 7b는 재구성된 블록 샘플들의 히스토그램(histogram)을 갖는 32 개의 대역들로의 샘플 범위의 예시적인 분할들을 예시한다;
- 도 8은 비-제한적인 실시예에 따라, 디코딩된 이미지 블록을 획득하기 위하여 비트스트림으로부터 이미지 블록을 디코딩하도록 구성된 수신기의 예시적인 아키텍처를 나타낸다;
- 도 9는 예시적인 HEVC 비디오 디코더의 블록도를 예시한다; 그리고
- 도 10 및 도 11은 특정한 그리고 비-제한적인 실시예들에 따라, 비트스트림으로부터 이미지 블록을 디코딩하기 위한 방법의 플로우차트들을 나타낸다.
도면들 및 설명들은 명확함의 목적들을 위하여, 전형적인 인코딩 및/또는 디코딩 장치에서 발견된 많은 다른 엘리먼트(element)들을 제거하면서, 본 원리들의 명확한 이해를 위하여 관련되는 엘리먼트들을 예시하도록 단순화되었다는 것이 이해되어야 한다.
다음에서, 단어 "재구성된" 및 "디코딩된"은 상호 교환가능하게 이용될 수 있다. 반드시는 아닌 통상적으로, "재구성된"은 인코더 측 상에서 이용되는 반면, "디코딩된"은 디코더 측 상에서 이용된다.
도 3은 비-제한적인 실시예에 따라, 비트스트림에서의 이미지 블록을 인코딩하도록 구성된 송신기(200)의 예시적인 아키텍처를 나타낸다.
송신기(200)는 내부 메모리(2030)(예컨대, RAM, ROM, 및/또는 EPROM)와 함께, 예를 들어, CPU, GPU, 및/또는 DSP(디지털 신호 프로세서(Digital Signal Processor)의 영어 두문자어)를 포함할 수 있는 하나 이상의 프로세서(들)(2000)를 포함한다. 송신기(200)는 각각이 출력 정보를 디스플레이하고 및/또는 사용자가 커맨드들 및/또는 데이터(예컨대, 스트림)를 입력하는 것으로 허용하도록 구비된 하나 이상의 통신 인터페이스(들)(2010)(예컨대, 키보드, 마우스, 터치패드, 웹캠(webcam)); 및 송신기(200)에 외부적일 수도 있는 전원(2020)을 포함한다. 송신기(200)는 하나 이상의 네트워크 인터페이스(들)(도시되지 않음)를 또한 포함할 수도 있다. 인코더 모듈(2040)은 코딩 기능들을 수행하기 위하여 디바이스 내에 포함될 수도 있는 모듈을 나타낸다. 추가적으로, 인코더 모듈(2040)은 송신기(200)의 별도의 엘리먼트로서 구현될 수도 있거나, 본 기술분야의 통상의 기술자들에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(들)(2000) 내에 편입될 수도 있다. 이미지 블록은 소스(source)로부터 획득될 수도 있다. 상이한 실시예들에 따르면, 소스는:
- 로컬 메모리, 예컨대, 비디오 메모리, RAM, 플래시 메모리, 하드 디스크;
- 저장 인터페이스, 예컨대, 대용량 스토리지(storage), ROM, 광학 디스크, 또는 자기적 지원부(magnetic support)를 갖는 인터페이스;
- 통신 인터페이스, 예컨대, 와이어라인(wireline) 인터페이스(예를 들어, 버스 인터페이스, 광역 네트워크 인터페이스, 로컬 영역 네트워크 인터페이스) 또는 (IEEE 802.11 인터페이스 또는 블루투스 인터페이스와 같은) 무선 인터페이스; 및
- 이미지 캡처링 회로(예컨대, 예를 들어, CCD(또는 전하 결합 디바이스(Charge-Coupled Device)) 또는 CMOS(또는 상보적 금속-옥사이드-반도체(Complementary Metal-Oxide-Semiconductor)) 와 같은 센서)일 수 있지만, 이것으로 제한되지는 않는다.
상이한 실시예들에 따르면, 비트스트림은 목적지(destination)로 전송될 수도 있다. 예로서, 비트스트림은 원격으로 또는 로컬 메모리, 예컨대, 비디오 메모리 또는 RAM, 하드 디스크에서 저장된다. 변형에서, 비트스트림은 저장 인터페이스, 예컨대, 대용량 스토리지, ROM, 플래시 메모리, 광학 디스크, 또는 자기적 지원부를 갖는 인터페이스로 전송되고 및/또는 통신 인터페이스, 예컨대, 포인트 투 포인트(point to point) 링크, 통신 버스, 포인트 투 멀티포인트(point to multipoint) 링크, 또는 브로드캐스트 네트워크에 대한 인터페이스 상에서 송신된다.
예시적인 그리고 비-제한적인 실시예에 따르면, 송신기(200)는 메모리(2030)에서 저장된 컴퓨터 프로그램을 더 포함한다. 컴퓨터 프로그램은 송신기(200)에 의해, 특히, 프로세서(2000)에 의해 실행될 때, 송신기(200)가 도 5 및/또는 도 6을 참조하여 설명된 인코딩 방법을 실행하는 것을 가능하게 하는 명령들을 포함한다.
변형에 따르면, 컴퓨터 프로그램은 비-일시적 디지털 데이터 지원부 상에서, 예컨대, 본 기술분야에서 모두 알려진, HDD, CD-ROM, DVD, 판독-전용 및/또는 DVD 드라이브, 및/또는 DVD 판독/기입 드라이브와 같은 외부 저장 매체 상에서 송신기(200)에 외부적으로 저장된다. 송신기(200)는 따라서, 컴퓨터 프로그램을 판독하기 위한 메커니즘을 포함한다. 또한, 송신기(200)는 대응하는 USB 포트들(도시되지 않음)을 통해 하나 이상의 유니버셜 직렬 버스(Universal Serial Bus)(USB)-유형 저장 디바이스들(예컨대, "메모리 스틱(memory stick)들")을 액세스할 수 있다.
예시적인 그리고 비-제한적인 실시예들에 따르면, 송신기(200)는:
- 이동 디바이스;
- 통신 디바이스;
- 게임 디바이스;
- 태블릿(또는 태블릿 컴퓨터);
- 랩톱;
- 스틸 이미지 카메라;
- 비디오 카메라;
- 인코딩 칩 또는 인코딩 디바이스/장치;
- 스틸 이미지 서버; 및
- 비디오 서버(예컨대, 브로드캐스트 서버, 비디오-온-디맨드(video-on-demand) 서버, 또는 웹 서버)일 수 있지만, 이것으로 제한되지는 않는다.
도 4는 도 5 및/또는 도 6의 인코딩 방법을 실행하도록 구비된 예시적인 비디오 인코더(400), 예컨대, HEVC 비디오 인코더를 예시한다. 인코더(400)는 송신기(200)의 예이다. 하나 이상의 픽처(picture)들을 갖는 비디오 시퀀스(video sequence)를 인코딩하기 위하여, 픽처는 각각의 슬라이스(slice)가 하나 이상의 슬라이스 세그먼트(slice segment)들을 포함할 수 있는 하나 이상의 슬라이스들로 파티셔닝된다. 슬라이스 세그먼트는 코딩 유닛들, 예측 유닛들, 및 변환 유닛들로 편성된다. HEVC 사양은 "블록들"과 "유닛들" 사이를 구별하고, 여기서, "블록"은 샘플 어레이에서의 특정 에어리어(예컨대, 루마, Y)를 어드레싱하고, "유닛"은 모든 인코딩된 컬러 컴포넌트(color component)들(Y, Cb, Cr, 또는 단색)의 공동위치된 블록(collocated block), 신택스 엘리먼트들, 및 블록과 연관되는 예측 데이터(예컨대, 모션 벡터(motion vector)들)를 포함한다.
코딩을 위하여, 픽처는 구성가능한 크기를 갖는 정사각형 형상의 코딩 트리 블록들(coding tree blocks)(CTB)로 파티셔닝되고, 코딩 트리 블록들의 연속 세트는 슬라이스로 그룹화된다. CTB에 대응하는 코딩 트리 유닛(Coding Tree Unit)(CTU)은 인코딩된 컬러 컴포넌트(color component)들의 CTB들을 포함한다. CTB는 코딩 블록들(Coding Blocks)(CB)로 파티셔닝하는 쿼드트리(quadtree)의 루트(root)이고, 코딩 블록은 하나 이상의 예측 블록들(Prediction Blocks)(PB)로 파티셔닝되고, 변환 블록들(Transform Blocks)(TBs)로 파티셔닝하는 쿼드트리의 루트를 형성한다. 코딩 블록, 예측 블록, 및 변환 블록에 대응하여, 코딩 유닛(Coding Unit)(CU)은 예측 유닛들(Prediction Units)(PUs), 및 변환 유닛들(Transform Units)(TUs)의 트리-구조화된 세트를 포함하고, PU는 모든 컬러 컴포넌트들에 대한 예측 정보를 포함하고, TU는 각각의 컬러 컴포넌트에 대한 잔차 코딩 신택스 구조를 포함한다. 루마 컴포넌트(luma component)의 CB, PB, 및 TB의 크기는 대응하는 CU, PU, 및 TU에 적용된다. 본 출원에서, 용어 "블록"은 CTU, CU, PU, TU, CB, PB, 및 TB 중의 임의의 것을 지칭하기 위하여 이용될 수 있다. 추가적으로, "블록"은 H.264/AVC 또는 다른 비디오 코딩 표준들에서 특정된 바와 같은 매크로블록(macroblock), 파티션(partition), 및 서브-블록(sub-block)을 지칭하기 위하여, 그리고 더 일반적으로, 다양한 크기들의 샘플들의 어레이를 지칭하기 위하여 이용될 수 있다.
예시적인 인코더(400)에서, 픽처는 이하에서 설명된 바와 같은 인코더 엘리먼트들에 의해 인코딩된다. 인코딩되어야 할 픽처는 CU들의 유닛들로 프로세싱된다. 각각의 CU는 인트라 또는 인터 모드의 어느 하나를 이용하여 인코딩된다. CU가 인트라 모드(intra mode)에서 인코딩될 때, 그것은 인트라 예측을 수행한다(460). 인터 모드(inter mode)에서는, 모션 추정(motion estimation)(475) 및 보상(compensation)(470)이 수행된다. 인코더는 CU를 인코딩하기 위하여 인트라 모드 또는 인터 모드 중의 어느 것을 이용할 것인지를 판정하고(405), 예측 모드 플래그(prediction mode flag)에 의해 인트라/인터 판정을 표시한다. 잔차들은 원래의 이미지 블록으로부터 예측된 샘플 블록(예측자(predictor)로서 또한 알려짐)을 감산(410)함으로써 계산된다.
인트라 모드에서의 CU들은 샘플 슬라이스 내에서의 재구성된 이웃하는 샘플들로부터 예측된다. DC, 평면형, 및 33 개의 각도 예측 모드들을 포함하는 35 개의 인트라 예측 모드들의 세트가 HEVC에서 이용가능하다. 인트라 예측 참조는 현재의 블록에 인접한 행(row) 및 열(column)로부터 재구성된다. 참조는 이전에 재구성된 블록들로부터의 이용가능한 샘플들을 이용하여 수평 및 수직 방향에서 블록 크기의 2 배를 초과하여 연장된다. 각도 예측 모드가 인트라 예측을 위하여 이용될 때, 참조 픽셀들은 각도 예측 모드에 의해 표시된 방향을 따라 복사될 수 있다.
현재의 블록에 대한 적용가능한 루마 인트라 예측 모드는 2 개의 상이한 옵션들을 이용하여 복사될 수 있다. 적용가능한 모드가 3 개의 최고 확률 모드들(most probable modes)(MPM)의 구성된 리스트 내에 포함될 경우, 모드는 MPM 리스트에서의 인덱스에 의해 시그널링된다. 그렇지 않을 경우, 모드는 모드 인덱스의 고정-길이 2진화(fixed-length binarization)에 의해 시그널링된다. 3 개의 최고 확률 모드들은 상단 및 좌측 이웃하는 블록들의 인트라 예측 모드들로부터 유도된다.
인터 CU에 대하여, 대응하는 코딩 블록은 하나 이상의 예측 블록들로 추가로 파티셔닝된다. 인터 예측은 PB 레벨에 대해 수행되고, 대응하는 PU는 인터 예측이 어떻게 수행되는지에 대한 정보를 포함한다.
모션 정보(즉, 모션 벡터 및 참조 픽처 인덱스)는 2 개의 방법들, 즉, "진보된 모션 벡터 예측(advanced motion vector prediction)(AMVP)" 및 "병합 모드(merge mode)"로 시그널링될 수 있다. AMVP에서, 비디오 인코더 또는 디코더는 이미 코딩된 블록들로부터 결정된 모션 벡터들에 기초하여 후보 리스트들을 조립한다. 비디오 인코더는 그 다음으로, 모션 벡터 예측자(motion vector predictor)(MVP)를 식별하기 위하여 후보 리스트들로의 인덱스를 시그널링하고, 모션 벡터 차이(motion vector difference)(MVD)를 시그널링한다. 디코더 측에서, 모션 벡터(MV)는 MVP+MVD로서 재구성된다.
병합 모드에서, 비디오 인코더 또는 디코더는 이미 코딩된 블록들에 기초하여 후보 리스트를 조립하고, 비디오 인코더는 후보 리스트에서의 후보들 중의 하나에 대한 인덱스를 시그널링한다. 디코더 측에서, 모션 벡터 및 참조 픽처 인덱스는 시그널링된 후보에 기초하여 재구성된다.
HEVC에서, 모션 보상을 위한 모션 정보의 정밀도는 루마 컴포넌트에 대한 1/4-샘플 및 크로마 컴포넌트(chroma component)들에 대한 1/8-샘플이다. 7-탭(tap) 또는 8-탭 보간 필터(interpolation filter)는 분수-샘플 픽셀 위치들의 보간을 위하여 이용되고, 즉, 양자의 수평 및 수직 방향들에서의 전체 픽셀 로케이션(pixel location)들의 1/4, 1/2, 및 3/4는 루마에 대하여 어드레싱될 수 있다.
잔차들은 변환(425)되고 양자화(430)된다. 양자화된 변환 계수들 뿐만 아니라, 모션 벡터들 및 다른 신택스 엘리먼트들은 비트스트림을 출력하기 위하여 엔트로피 코딩(entropy code)(445)된다. 인코더는 변환을 또한 스킵(skip)할 수도 있고, 4x4 TU에 기초하여 양자화를 비-변환된 잔차 신호에 직접적으로 적용할 수도 있다. 인코더는 양자의 변환 및 양자화를 또한 우회할 수도 있고, 즉, 잔차는 변환 또는 양자화 프로세스의 적용 없이 직접적으로 코딩된다. 직접적인 PCM 코딩에서는, 예측이 적용되지 않고, 코딩 유닛 샘플들은 비트스트림으로 직접적으로 코딩된다.
인코더는 디코딩 루프를 포함하고, 따라서, 추가의 예측들을 위한 참조를 제공하기 위하여 인코딩된 블록을 디코딩한다. 양자화된 변환 계수들은 잔차들을 디코딩하기 위하여 역-양자화(de-quantize)(440)되고 역변환(450)된다. 이미지 블록은 디코딩된 잔차들 및 예측된 샘플 블록을 조합(455)함으로써 재구성된다. 인-루프 필터(465)는 예를 들어, 코딩 아티팩트들을 감소시키기 위한 디블록킹/SAO(샘플 적응적 오프셋) 필터링을 수행하기 위하여 재구성된 픽처에 적용된다. 필터링된 이미지는 참조 픽처 버퍼(480)에서 저장된다.
도 5는 특정한 그리고 비-제한적인 실시예에 따라, 비트스트림에서의 이미지 블록을 인코딩하기 위한 방법의 플로우차트를 나타낸다.
방법은 단계(S200)에서 시작된다. 단계(S210)에서, 예컨대, 인코더(400)와 같은 송신기는 이미지 블록을 액세스한다. 단계(S220)에서, 송신기는 비트스트림에서의 액세스된 이미지 블록을 인코딩하고, 인코딩된 이미지 블록을 추가로 디코딩/재구성한다. 이미지 블록을 인코딩하는 것은 이미지 블록으로부터 예측자를 감산함으로써 잔차들을 획득하는 것을 포함할 수도 있다. 예측자는 인트라 예측 또는 모션-보상된 예측(즉, 인터 예측)으로부터 획득될 수도 있다. 그 다음으로, 잔차들은 비트스트림에서 엔트로피 코딩되는 양자화된 계수들로 변환될 수도 있고 양자화될 수도 있다. 인코딩된 블록의 디코딩은 디코딩된 잔차들을 획득하기 위하여 양자화된 계수들을 역-양자화하고 역변환하는 것을 통상적으로 포함한다. 인코더 측 상에서, 인코딩된 이미지 블록의 디코딩은 엔트로피 디코딩을 통상적으로 포함하지 않는다. 이미지 블록은 디코딩된 잔차들 및 예측자를 조합함으로써 디코딩/재구성된다. 예로서, 블록은 루마 블록, 즉, 루마 컴포넌트의 블록이다. 변형에서, 블록은 크로마 블록, 즉, 크로마 컴포넌트의 블록이다. 용어 "디코딩된" 또는 "재구성된"은 이미지 블록이 예를 들어, 디블록킹 필터링 후에, 그러나 SAO 필터링 전에 부분적으로 "디코딩"되는 것을 의미할 수도 있다는 것이 주목되어야 한다.
단계(S230)에서, (예컨대, 인코더(400)의 모듈(445)을 이용하는) 송신기는 비트스트림에서의 복수의 대역 오프셋들 및 대역 위치를 인코딩한다.
유리하게도, 복수의 대역 오프셋들 중의 제1 대역 오프셋의 코딩은 제1 대역 오프셋이 반드시 비-제로 대역 오프셋이 되도록 수정된다. 그러므로, 인코더는 제1 오프셋이 제로인지 또는 아닌지 여부를 표시하는 명시적 신택스 없이 제1 오프셋을 인코딩한다. 대역 오프셋들이 {0, 2, 3, 0}인 전에 논의된 예를 다시 참조하면, 대역 위치는 19로부터 20으로 이동되고, 인코딩되어야 할 오프셋들은 {2, 3, 0, 0}이 되고, 즉, 2는 먼저 인코딩되고, 그 다음으로, 3, 그 다음으로 0, 그리고 그 다음으로 0이 인코딩된다. 결과적으로, 이러한 경우, 제1 오프셋이 제로인지 또는 아닌지 여부를 표시하는 비트를 인코딩하기 위한 필요성이 없다. 특정 실시예에서, 제1 대역 오프셋 마이너스 1의 값은 대역 오프셋 값 자체 대신에 인코딩된다. {2, 3, 0, 0} 대역 오프셋들의 위의 예에서, 값 1은 제1 대역 오프셋에 대하여 인코딩되고, 값 3은 제2 대역 오프셋에 대하여 인코딩되고, 값들 0은 제3 및 제4 대역 오프셋들에 대하여 인코딩된다. 대역 오프셋들의 인코딩에 관한 이러한 제약을 추가함으로써, 누군가는 하나의 비트를 절약할 수도 있다. 대역 오프셋 부호(band offset sign)는 비-제로 대역 오프셋들에 대하여 비트스트림에서 또한 인코딩될 수도 있다. 특정 예에서는, 4 개의 대역 오프셋들이 인코딩되고, 최초의 것은 비-제로이다. 변형에서는, 4 개를 초과하는 대역 오프셋들이 인코딩된다. 샘플 적응적 오프셋 필터(SAO)의 복수의 대역 오프셋들 및 대역 위치는 원래의 이미지 블록 및 디코딩된 이미지 블록으로부터 획득될 수도 있다. 본 원리들은 이 SAO 파라미터들이 획득되는 방법에 의해 제한되지는 않는다. 예로서, SAO 파라미터들은 평균 샘플 레이트-왜곡 코스트를 최소화함으로써, 또는 또 다른 기준을 이용함으로써 획득될 수도 있다.
단계(S240)에서, 송신기는 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링한다. 필터링된 디코딩된 블록은 그 다음으로, 참조 픽처 버퍼(480)에서 저장될 수도 있고, 다른 이미지 블록들의 예측을 위하여 역할을 한다. 방법은 단계(S250)에서 종료된다.
도 6에서 설명된 또 다른 특정 실시예에서, 송신기는 단계(S210)에서 제1 및 제2 크로마 블록들(예컨대, Cb 및 Cr)을 액세스한다. 단계(S220)에서, 송신기는 제1 크로마 블록(Cb)을 인코딩 및 디코딩한다. 단계(S225)에서, 송신기는 그 대역 오프셋들의 전부가 제로와 동일한지 여부를 표시하는, 인코딩된 크로마 블록에 대한 정보(예컨대, 추가적인 비트 sao_all_offsets_zero)를 인코딩한다. 실제로, HEVC SAO 필터에서, (신택스 엘리먼트 sao_type_ idx _ chroma에 의해 표시된) 동일한 SAO 유형은 2 개의 크로마 컴포넌트들 사이에서 공유된다. 그러므로, SAO 필터가 크로마에 대하여 디스에이블될 경우, SAO 필터는 양자의 크로마 컴포넌트들에 대하여 디스에이블된다. 결과적으로, 2 개의 크로마 컴포넌트들 중의 하나(Cb 또는 Cr 중의 어느 하나)가 제로와 동일한 모든 그 대역 오프셋들을 가지는 반면, 다른 크로마 컴포넌트가 적어도 하나의 비-제로 대역 오프셋을 가질 경우, 제로와 동일한 모든 그 대역 오프셋들을 가지는 컴포넌트에 대한 4 개의 제로 값들을 인코딩하는 것이 필요하다. 추가적인 비트 sao_all_offsets_zero를 인코딩함으로써, 제로와 동일한 모든 그 대역 오프셋들을 가지는 컴포넌트에 대한 4 개의 제로 값들을 인코딩하는 것이 더 이상 필요하지 않으므로, 추가적인 비트들은 절약될 수도 있다. 그러므로, 크로마 블록에 대한 대역 오프셋들 및 대역 위치는 정보가 그 대역 오프셋들의 전부가 제로와 동일하지 않다는 것을 표시할 경우에만 단계(S230)에서 인코딩되고, 그렇지 않을 경우에는, 대역 오프셋 및 대역 위치가 코딩되지 않는다. 단계(S240)에서, 송신기는 인코딩된 복수의 대역 오프셋들 및 인코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 크로마 블록을 필터링한다.
단계들(S220, S225, S230, 및 S240)은 제2 크로마 블록(Cr)에 대하여 반복된다. 그러나, 제2 크로마 컴포넌트 대역 오프셋들은 아마도 모두 제로가 아니므로, 제2 크로마 컴포넌트(Cr)에 대한 추가적인 비트 sao_all_offsets_zerosao_all_offsets_zero가 제1 크로마 컴포넌트(Cb)에 대한 모든 대역 오프셋들이 제로인 것을 표시할 경우에 회피(즉, 인코딩되지 않음)될 수도 있다. 실제로, 후자의 경우, 필터링 모드를 "적용되지 않음"(sao_type_ idx _ chroma = 0)으로 설정함으로써 SAO 필터링을 디스에이블하는 것이 더 효율적이다. 방법은 단계(S250)에서 종료된다.
크로마 컴포넌트에 대한 이 특정 실시예는 루마 컴포넌트에 대한 실시예에 독립적이다. 그러나, 양자의 실시예들은 예컨대, 블록의 루마 및 크로마 컴포넌트들을 인코딩하기 위하여, 유리하게도 함께 조합될 수도 있다.
표 1은 상이한 크로마 오프셋들 구성들에 대한 크로마 대역 오프셋들을 코딩하기 위한 제안된 방법으로 획득된 예상된 이득(비트들의 수)을 도시한다. 크로마 컴포넌트에 대한 이 특정 실시예는 루마 컴포넌트에 대한 실시예에 독립적이다. 그러나, 양자의 실시예들은 유리하게도 함께 조합될 수도 있다.
HEVC에서, 특정 모드(HEVC에서의 표 7 내지 표 8에서 표시된 바와 같은 모드 "적용되지 않음")는 모든 대역 오프셋들이 양자의 크로마 컴포넌트들에 대하여 제로와 동일한 경우를 표시하기 위하여 이용된다. 이 경우, 대역 오프셋 및 대역 위치는 인코딩되지 않는다.
Figure pct00001
표 2는 본 원리들에 따른 SAO 파라미터들 인코딩의 예시적인 신택스 테이블을 예시한다. HEVC 신택스를 갖는 차이는 이탤릭체로 도시된다. 이 표에서, 인코딩된 대역 오프셋들 수는 4와 동일하다. 그러나, 본 원리들은 4개의 대역 오프셋들을 인코딩하는 것으로 한정되지 않는다는 것이 인식될 것이다.
Figure pct00002
sao_offset_abs_ minus1 플러스(plus) 1은 제1 대역 오프셋의 절대 값을 특정한다. 대역 오프셋 값 마이너스 1은 대역 오프셋 값 자체 대신에 인코딩되므로, 제1 대역 오프셋의 인코딩은 따라서 특정적이다. 모든 나머지 대역 오프셋들에 대하여, 그 값들은 직접적으로 인코딩된다.
sao_ all_offsets_zero[ cldx = 1]는 제1 크로마 컴포넌트(예컨대, Cb)에 대한 sao_all_offsets_zero에 대응하고, sao_all_offsets_zero[ cldx = 2]는 제2 크로마 컴포넌트(예컨대, Cr)에 대한 sao_all_offsets_zero에 대응한다.
HEVC 신택스 엘리먼트들은 "High Efficiency Video Coding"으로 명명된 문서 ITU-T H.265의 섹션들 7.3.8.3 및 7.4.9.3에서 정의된다.
또 다른 실시예에서, 루마 컴포넌트, 또는 크로마 컴포넌트들, 또는 양자의 루마 및 크로마 컴포넌트들 중의 어느 하나에 대한 대역 위치(sao_band_position)는 참조 대역 위치 RefVal에 대하여 인코딩된다. HEVC에서, 대역 위치는 절대 값으로 인코딩되고, 이것은 디코딩된 블록의 샘플 범위가 8 비트들에서의 [0;255] 범위보다 더 작거나 [0;2BitDepth-1] 범위보다 더 일반적으로 더 작을 경우에 비효율적이다. 디코딩된 블록의 최저 샘플 값 Min 및 아마도 최대 샘플 값 Max는 현재의 디코딩된 블록의 디코딩된 샘플 값들을 분석함으로써 결정될 수도 있다. 고전적인 범위 [0;2BitDepth-1]의 값들은 도 7에서 도시된 바와 같이 현재의 블록에서 부재할 수도 있다. 이러한 경우, 현재의 디코딩된 블록 샘플 값 범위 외부의 대역들에 대한 비-제로 대역 오프셋들을 인코딩하는 것은 쓸모 없다. 실제로, 현재의 블록에서의 샘플은 이러한 대역 오프셋들에 의해 수정되지 않아야 할 것이다. 예로서, 참조 대역 위치는 디코딩된 (루마 및/또는 크로마) 블록의 최저 샘플 값(Min)을 포함하는 대역의 위치, 즉, 도 7에서의 인덱스 7의 대역이다. 대역 위치는 따라서, 참조 대역 위치에 대하여 더 효율적으로 인코딩될 수도 있다. 실제로, 인코딩되어야 할 더 작은 값은 일반적으로 VLC를 이용하는 더 적은 비트들로 귀착된다. 특정 실시예에서는, 비트스트림에서의 대역 위치의 절대 값을 인코딩하는 대신에, 대역 위치와 참조 값 RefVal 사이의 차이와 동일한 잔차 r이 인코딩되고, r= band_position-RefVal이다. 예로서, RefVal=Min 대역 위치이다. 도 7에서, band_position = 24이고, RefVal = 7이다. VLC는 유리하게도, 잔차 r을 인코딩하기 위하여 FLC 대신에 이용된다.
Max 대역 위치(최대 샘플 값을 포함하는 대역의 위치)와 Min 대역 위치(최대 샘플 값을 포함하는 대역의 위치) 사이의 차이가 인코딩된 대역 오프셋들의 수보다 낮을(예컨대, 4보다 낮음) 경우, 대역 위치는 인코딩되지 않는다. 유리하게도, 이 경우, 인코딩된 오프셋들의 수는 또한 이에 따라 감소될 수도 있다. 대역의 위치는 그 인덱스에 의해 표시된다. HEVC의 경우, 32 개의 대역들이 있고, 대역의 위치는 0 내지 31 사이의 인덱스에 의해 표시된다. 도 7a를 참조하면, Min 대역 위치는 7과 동일하고, Max 대역 위치는 25와 동일하다. 이 특정한 경우에, Max 대역 위치와 Min 대역 위치 사이의 차이는 18과 동일하다. 18은 인코딩된 대역 오프셋들의 수, 즉, HEVC의 경우에 4보다 높고, 그 다음으로, band_position이 인코딩된다. 도 7b에서 도시된 또 다른 실시예에서는, Min 대역 위치가 7과 동일하고, Max 대역 위치가 9와 동일하다. 이것은 픽처가 오직 대역들 7, 8, 및 9에서 샘플 값들을 가진다는 것을 의미한다. 이 상황은 재구성된 샘플 값들의 히스토그램(histogram)을 구축함으로써 검출될 수 있다. 이 특정한 경우에, 시작 대역 위치는 Min 대역 위치와 동일한 것으로, 그리고 비-제로 대역 오프셋들의 수는 최대한으로 3과 동일한 것으로 디코더에 의해 추론될 수 있다. 이 특정한 경우에, Max 대역 위치와 Min 대역 위치 사이의 차이는 2와 동일하다. 2는 인코딩된 대역 오프셋들의 수, 즉, HEVC의 경우에 4보다 낮고, 그 다음으로, band_position은 인코딩되지 않고, 오직 3 개의 대역 오프셋들이 인코딩된다.
HEVC에서는, BO에서, 대역 위치가 최후 대역 위치에 근접할 경우, 대역들이 도 7에서 도시된 바와 같이 원형 버퍼(circular buffer)에 의해 관리되므로, 대역 오프셋들은 비-연속 대역들에 대응할 수도 있다. 본 원리들에 따르면, 대역 위치에 대한 원형 버퍼는 (인덱스 0의) 최초 대역 및 (인덱스 31의) 최후 대역 위치를, 값 Min을 포함하는 Min 대역(도 7에서의 인덱스 7의 대역) 및 값 Max를 포함하는 Max 대역(도 7에서의 인덱스 25의 대역)으로 대체함으로써 수정된다. 실제로, 대역 위치가 Max 대역에 근접할 경우, 오프셋 값들은 비-연속 대역들에 대응할 수도 있고, 디코딩된 블록 샘플 범위 외부의 대역 위치들이 쓸모 없으므로, 제로 인덱스를 갖는 대역 대신에, Min 대역으로 다시 간다.
대역 위치를 인코딩하기 위한 이 특정 실시예는 루마 컴포넌트(도 5) 및/또는 크로마 컴포넌트들(도 6)을 인코딩하기 위한 실시예들에 독립적이다. 그러나, 이 실시예들은 유리하게도 함께 조합될 수도 있다.
도 8은 비-제한적인 실시예에 따라, 디코딩된 이미지 블록을 획득하기 위하여 비트스트림으로부터 이미지 블록을 디코딩하도록 구성된 수신기(100)의 예시적인 아키텍처를 나타낸다.
수신기(100)는 내부 메모리(1030)(예컨대, RAM, ROM, 및/또는 EPROM)와 함께, 예를 들어, CPU, GPU, 및/또는 DSP(디지털 신호 프로세서의 영어 두문자어)를 포함할 수 있는 하나 이상의 프로세서(들)(1000)를 포함한다. 수신기(100)는 각각이 출력 정보를 디스플레이하고 및/또는 사용자가 커맨드들 및/또는 데이터(예컨대, 디코딩된 이미지 블록)를 입력하는 것으로 허용하도록 구비된 하나 이상의 통신 인터페이스(들)(1010)(예컨대, 키보드, 마우스, 터치패드, 웹캠); 및 수신기(100)에 외부적일 수도 있는 전원(1020)을 포함한다. 수신기(100)는 하나 이상의 네트워크 인터페이스(들)(도시되지 않음)를 또한 포함할 수도 있다. 디코더 모듈(1040)은 디코딩 기능들을 수행하기 위하여 디바이스 내에 포함될 수도 있는 모듈을 나타낸다. 추가적으로, 디코더 모듈(1040)은 수신기(100)의 별도의 엘리먼트로서 구현될 수도 있거나, 본 기술분야의 통상의 기술자들에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(들)(1000) 내에 편입될 수도 있다.
비트스트림은 소스로부터 획득될 수도 있다. 상이한 실시예들에 따르면, 소스는:
- 로컬 메모리, 예컨대, 비디오 메모리, RAM, 플래시 메모리, 하드 디스크;
- 저장 인터페이스, 예컨대, 대용량 스토리지, ROM, 광학 디스크, 또는 자기적 지원부를 갖는 인터페이스;
- 통신 인터페이스, 예컨대, 와이어라인 인터페이스(예를 들어, 버스 인터페이스, 광역 네트워크 인터페이스, 로컬 영역 네트워크 인터페이스) 또는 (IEEE 802.11 인터페이스 또는 블루투스 인터페이스와 같은) 무선 인터페이스; 및
- 픽처 캡처링 회로(예컨대, 예를 들어, CCD(또는 전하 결합 디바이스) 또는 CMOS(또는 상보적 금속-옥사이드-반도체) 와 같은 센서)일 수 있지만, 이것으로 제한되지는 않는다.
상이한 실시예들에 따르면, 디코딩된 이미지 블록은 목적지, 예컨대, 디스플레이 디바이스로 전송될 수도 있다. 예로서, 디코딩된 이미지 블록은 원격으로 또는 로컬 메모리, 예컨대, 비디오 메모리 또는 RAM, 하드 디스크에서 저장된다. 변형에서, 디코딩된 이미지 블록은 저장 인터페이스, 예컨대, 대용량 스토리지, ROM, 플래시 메모리, 광학 디스크, 또는 자기적 지원부를 갖는 인터페이스로 전송되고 및/또는 통신 인터페이스, 예컨대, 포인트 투 포인트 링크, 통신 버스, 포인트 투 멀티포인트 링크, 또는 브로드캐스트 네트워크에 대한 인터페이스 상에서 송신된다.
특정한 그리고 비-제한적인 실시예에 따르면, 수신기(100)는 메모리(1030)에서 저장된 컴퓨터 프로그램을 더 포함한다. 컴퓨터 프로그램은 수신기(100)에 의해, 특히, 프로세서(1000)에 의해 실행될 때, 수신기가 도 10 및/또는 도 11을 참조하여 설명된 디코딩 방법을 실행하는 것을 가능하게 하는 명령들을 포함한다. 변형에 따르면, 컴퓨터 프로그램은 비-일시적 디지털 데이터 지원부 상에서, 예컨대, 본 기술분야에서 모두 알려진, HDD, CD-ROM, DVD, 판독-전용 및/또는 DVD 드라이브, 및/또는 DVD 판독/기입 드라이브와 같은 외부 저장 매체 상에서 수신기(100)에 외부적으로 저장된다. 수신기(100)는 따라서, 컴퓨터 프로그램을 판독하기 위한 메커니즘을 포함한다. 또한, 수신기(100)는 대응하는 USB 포트들(도시되지 않음)을 통해 하나 이상의 유니버셜 직렬 버스(USB)-유형 저장 디바이스들(예컨대, "메모리 스틱들")을 액세스할 수 있다.
예시적인 그리고 비-제한적인 실시예들에 따르면, 수신기(100)는:
- 이동 디바이스;
- 통신 디바이스;
- 게임 디바이스;
- 셋톱 박스;
- TV 세트;
- 태블릿(또는 태블릿 컴퓨터);
- 랩톱;
- 비디오 플레이어, 예컨대, 블루-레이 플레이어(Blu-ray player), DVD 플레이어;
- 디스플레이; 및
- 디코딩 칩 또는 디코딩 디바이스/장치일 수 있지만, 이것으로 제한되지는 않는다.
도 9는 도 10 및/또는 도 11의 디코딩 방법을 실행하도록 구비된 예시적인 HEVC 비디오 디코더(200)의 블록도를 예시한다. 비디오 디코더(200)는 수신기(100)의 예이다. 예시적인 디코더(200)에서, 비트스트림은 이하에서 설명된 바와 같은 디코더 엘리먼트들에 의해 디코딩된다. 비디오 디코더(200)는 비디오 데이터를 인코딩하는 것의 일부로서 비디오 디코딩을 수행하는, 도 4에서 설명된 바와 같은 인코딩 패스(encoding pass)에 상반적인 디코딩 패스를 일반적으로 수행한다.
특히, 디코더의 입력은 비디오 인코더(400)에 의해 생성될 수도 있는 비디오 비트스트림을 포함한다. 비트스트림은 변환 계수들, 모션 벡터들, 및 다른 코딩된 정보를 획득하기 위하여 먼저 엔트로피 디코딩(330)된다. 변환 계수들은 잔차들을 디코딩하기 위하여 역-양자화(340)되고 역변환(350)된다. 디코딩된 잔차들은 그 다음으로, 디코딩된/재구성된 이미지 블록을 획득하기 위하여 예측된 샘플 블록(예측자로서 또한 알려짐)과 조합(355)된다. 예측된 샘플 블록은 인트라 예측(360) 또는 모션-보상된 예측(즉, 인터 예측)(375)으로부터 획득(370)될 수도 있다. 위에서 설명된 바와 같이, AMVP 및 병합 모드 기법들은 참조 블록의 정수-미만(sub-integer) 픽셀들에 대한 보간된 값들을 계산하기 위하여 보간 필터들을 이용할 수도 있는 모션 보상 동안에 이용될 수도 있다. 인-루프 필터(365)는 재구성된 이미지에 적용된다. 인-루프 필터는 디블록킹 필터 및 SAO 필터를 포함할 수도 있다. 필터링된 이미지는 참조 픽처 버퍼(380)에서 저장된다.
도 10은 특정한 그리고 비-제한적인 실시예에 따라, 비트스트림으로부터 이미지 블록을 디코딩하기 위한 방법의 플로우차트를 나타낸다.
방법은 단계(S100)에서 시작된다. 단계(S110)에서, 디코더(300)와 같은 수신기(100)는 비트스트림을 액세스한다. 단계(S120)에서, 수신기는 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩한다. 블록을 디코딩하는 것은 변환 계수들, 모션 벡터들, 및 다른 코딩된 정보를 획득하기 위하여 엔트로피 디코딩하는 것을 포함할 수도 있다. 변환 계수들은 그 다음으로, 잔차들을 획득하기 위하여 역-양자화될 수도 있고 역변환될 수도 있다. 블록은 잔차들 및 예측자를 조합함으로써 재구성된다. 예측자는 인트라 예측 또는 모션-보상된 예측(즉, 인터 예측)으로부터 획득될 수도 있다. 예로서, 블록은 루마 블록이다. 변형에서, 블록은 크로마 블록이다. 용어 "디코딩된" 또는 "재구성된"은 이미지 블록이 예를 들어, 디블록킹 필터링 후에, 그러나 SAO 필터링 전에 부분적으로 "디코딩"된다는 것을 의미할 수도 있고, 디코딩된 블록은 디스플레이를 위하여 이용되는 최종적인 디코딩된 출력과 상이할 수도 있다는 것이 주목되어야 한다.
단계(S130)에서, 수신기는 비트스트림으로부터 샘플 적응적 오프셋 필터(SAO)의 복수의 대역 오프셋들 및 대역 위치를 디코딩한다. 유리하게도, 복수의 대역 오프셋들 중의 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이다. 그러므로, 대역 오프셋들이 {2, 3, 0, 0}인 예에 대하여, 2가 먼저 디코딩되고, 그 다음으로, 3, 그 다음으로, 0, 그리고 그 다음으로 0이 디코딩된다. 이러한 경우, 제1 오프셋이 제로인지 또는 아닌지 여부를 표시하는 비트를 디코딩하기 위한 필요성이 없다. 즉, 디코더는 제1 오프셋이 제로인지 또는 아닌지 여부를 표시하는 명시적 신택스 없이 제1 오프셋을 디코딩한다. 특정 실시예에서, 제1 대역 오프셋 마이너스 1의 값은 대역 오프셋 값 자체 대신에 디코딩된다. 1은 제1 대역 오프셋 값을 획득하기 위하여 제1 대역 오프셋에 대한 디코딩된 값에 가산된다. {2, 3, 0, 0} 대역 오프셋들의 위의 예에서, 값 1은 제1 대역 오프셋에 대하여 디코딩되고, 값 3은 제2 대역 오프셋에 대하여 인코딩되고, 값들 0은 제3 및 제4 대역 오프셋들에 대하여 인코딩된다. 대역 오프셋들의 디코딩에 관한 이러한 제약을 추가함으로써, 누군가는 따라서 하나의 비트를 절약할 수도 있다. 대역 오프셋 부호는 비-제로 대역 오프셋들에 대하여 비트스트림으로부터 또한 디코딩될 수도 있다. 특정 예에서는, 4 개의 대역 오프셋들이 디코딩되고, 최초의 것은 비-제로이다. 변형에서는, 4 개를 초과하는 대역 오프셋들이 디코딩된다.
단계(S140)에서, 수신기는 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 블록을 필터링한다.
방법은 단계(S150)에서 종료된다.
도 11에서 설명된 또 다른 특정 실시예에서, 수신기는 단계(S110)에서 비트스트림을 액세스한다. 단계(S120)에서, 수신기는 제1 크로마 블록(Cb)을 디코딩한다. 단계(S125)에서, 수신기는 그 대역 오프셋들의 전부가 제로와 동일한지 여부를 표시하는, 크로마 블록에 대한 정보(예컨대, 추가적인 비트 sao_all_offsets_zero)를 디코딩한다. 실제로, HEVC SAO 필터에서, 동일한 SAO 유형은 2 개의 크로마 컴포넌트들 사이에서 공유된다. 그러므로, SAO 필터가 크로마에 대하여 디스에이블될 경우, 그것은 양자의 크로마 컴포넌트들에 대하여 반드시 디스에이블된다. 그러므로, 2 개의 크로마 컴포넌트들 중의 하나(Cb 또는 Cr 중의 어느 하나)가 제로와 동일한 모든 그 대역 오프셋들을 가지는 반면, 다른 크로마 컴포넌트가 적어도 하나의 비-제로 대역 오프셋을 가질 경우, 제로와 동일한 모든 그 대역 오프셋들을 가지는 컴포넌트에 대한 4 개의 제로 값들을 디코딩하는 것이 필요하다. 추가적인 비트(sao_all_offsets_zero)를 디코딩함으로써, 추가적인 비트들이 절약될 수도 있다. 그러므로, 크로마 블록에 대한 대역 오프셋들 및 대역 위치는 정보가 그 대역 오프셋들의 전부가 제로와 동일하지 않다는 것을 표시할 경우에만 단계(S130)에서 디코딩되고, 그렇지 않을 경우에는, 대역 오프셋 및 대역 위치가 코딩되지 않는다. 단계(S140)에서, 수신기는 디코딩된 복수의 대역 오프셋들 및 디코딩된 대역 위치에 응답하여, 샘플 적응적 오프셋 필터로 디코딩된 크로마 블록을 필터링한다.
단계들(S120, S125, S130, 및 S140)은 제2 크로마 컴포넌트(Cr)에 대하여 반복된다. 그러나, 제2 크로마 컴포넌트 대역 오프셋들은 반드시 모두 제로가 아니므로, 제2 크로마 컴포넌트(Cr)에 대한 추가적인 비트 sao_all_offsets_zerosao_all_offsets_zero가 제1 크로마 컴포넌트(Cb)에 대한 모든 대역 오프셋들이 제로인 것을 표시할 경우에 회피(즉, 디코딩되지 않음)될 수도 있다. 방법은 단계(S150)에서 종료된다.
크로마 컴포넌트에 대한 이 특정 실시예는 루마 컴포넌트에 대한 실시예에 독립적이다. 그러나, 양자의 실시예들은 유리하게도 함께 조합될 수도 있다.
또 다른 실시예에서, 루마 컴포넌트, 또는 크로마 컴포넌트들, 또는 양자의 루마 및 크로마 컴포넌트들 중의 어느 하나에 대한 대역 위치(sao_band_position)는 참조 대역 위치로부터 디코딩된다. HEVC에서, 대역 위치는 절대 값으로 디코딩되고, 이것은 디코딩된 블록의 샘플 범위가 8 비트들에서의 [0;255] 범위보다 더 작거나 [0;2BitDepth-1] 범위보다 더 일반적으로 더 작을 경우에 비효율적이다. 디코딩된 블록의 최저 샘플 값 Min 및 아마도 최대 샘플 값 Max는 현재의 블록의 디코딩된 샘플 값들을 분석함으로써 결정될 수도 있다. 고전적인 범위 [0;2BitDepth-1]의 값들은 도 7에서 도시된 바와 같이 현재의 블록에서 부재할 수도 있다. 이러한 경우, 현재의 블록 샘플 값 범위 외부의 대역들에 대한 비-제로 대역 오프셋들을 디코딩하는 것은 쓸모 없다. 실제로, 현재의 블록에서의 샘플은 이러한 대역 오프셋들에 의해 수정되지 않아야 할 것이다. 예로서, 참조 대역 위치는 디코딩된 (루마 및/또는 크로마) 블록의 최저 샘플 값(Min)을 포함하는 대역, 즉, 도 7에서의 인덱스 7의 대역의 위치이다. 대역 위치는 따라서, 참조 대역 위치에 대하여 더 효율적으로 디코딩될 수도 있다. 특정 실시예에서, 비트스트림에서의 대역 위치의 절대 값을 디코딩하는 대신에, 잔차 r(인코딩 방법에 의해 인코딩된 것)이 디코딩된다. band_position는 그 다음으로, 기준 값 RefVal을 잔차 r에 가산함으로써 획득되고, band_position=r+RefVal이다. 예로서, RefVal=Min 대역 위치, 즉, 도 7에서의 인덱스 7이다. VLC는 유리하게도, 잔차 r을 디코딩하기 위하여 FLC 대신에 이용된다.
Max 대역 위치, 즉, Max 대역의 인덱스와 Min 대역 위치, 즉, Min 대역의 인덱스 사이의 차이가 디코딩된 대역 오프셋들의 수보다 낮을(예컨대, 4보다 낮음) 경우, 대역 위치는 디코딩되지 않는다. 대역의 위치는 그 인덱스에 의해 표시된다. HEVC의 경우, 32 개의 대역들이 있고, 대역의 위치는 0 내지 31 사이의 인덱스에 의해 표시된다. 도 7a를 참조하면, Min 대역 위치 = 7이고, Max 대역 위치 = 25이다. 이 특정한 경우에, Max 대역 위치와 Min 대역 위치 사이의 차이는 18과 동일하다. 18은 디코딩된 대역 오프셋들의 수, 즉, 4보다 높고, 그 다음으로, band_position이 디코딩된다. 도 7b에서 도시된 또 다른 실시예에서는, Min 대역 위치가 7과 동일하고, Max 대역 위치가 9와 동일하다. 이것은 픽처가 오직 대역들 7, 8, 및 9에서 샘플 값들을 가진다는 것을 의미한다. 이 상황은 재구성된 샘플 값들의 히스토그램을 구축함으로써 검출될 수 있다. 이 특정한 경우에, 시작 대역 위치는 Min 대역 위치와 동일한 것으로, 그리고 비-제로 대역 오프셋들의 수는 최대한으로 3과 동일한 것으로 디코더에 의해 추론될 수 있다. 이 특정한 경우에, Max 대역 위치와 Min 대역 위치 사이의 차이는 2와 동일하다. 2는 디코딩된 대역 오프셋들의 수, 즉, 4보다 낮고, 그 다음으로, band_position이 디코딩되지 않는다.
HEVC에서는, BO에서, 대역 위치가 최후 대역 위치에 근접할 경우, 대역들이 도 7에서 도시된 바와 같이 원형 버퍼에 의해 관리되므로, 대역 오프셋들은 비-연속 대역들에 대응할 수도 있다. 본 원리들에 따르면, 대역 위치에 대한 원형 버퍼는 (인덱스 0의) 최초 대역 및 (인덱스 31의) 최후 대역 위치를, 값 Min을 포함하는 Min 대역(도 7에서의 인덱스 7의 대역) 및 값 Max를 포함하는 Max 대역(도 7에서의 인덱스 25의 대역)으로 대체함으로써 수정된다. 실제로, 대역 위치가 Max 대역에 근접할 경우, 오프셋 값들은 비-연속 대역들에 대응할 수도 있고, 디코딩된 블록 샘플 범위 외부의 대역 위치들이 쓸모 없으므로, 제로 인덱스를 갖는 대역 대신에, Min 대역으로 다시 간다.
대역 위치를 디코딩하기 위한 이 특정 실시예는 루마 컴포넌트(도 10) 및/또는 크로마 컴포넌트들(도 11)을 디코딩하기 위한 실시예들에 독립적이다. 그러나, 이 실시예들은 유리하게도 함께 조합될 수도 있다.
도 5, 도 6, 도 10, 및 도 11에서, 모듈들은 구별가능한 물리적인 유닛들과 관련될 수도 있거나 관련되지 않을 수도 있는 기능적인 유닛들이다. 예를 들어, 이 모듈들 또는 그것들의 일부는 고유한 컴포넌트 또는 회로에서 함께 동반될 수도 있거나, 소프트웨어의 기능성들에 기여할 수도 있다. 반대로, 일부 모듈들은 잠재적으로 별도의 물리적인 엔티티들로 구성될 수도 있다. 개시내용과 양립가능한 장치는 순수한 하드웨어의 어느 하나를 이용하여, 예를 들어, 각각 ASIC 또는 FPGA 또는 VLSI <<애플리케이션 특정 집적 회로(Application Specific Integrated Circuit)>>, <<필드-프로그래밍가능한 게이트 어레이(Field-Programmable Gate Array)>>, <<초고밀도 집적회로 (Very Large Scale Integration)>>와 같은 전용 하드웨어를 이용하여, 또는 디바이스 내에 내장된 몇몇 집적된 전자 컴포넌트들로부터, 또는 하드웨어 및 소프트웨어 컴포넌트들의 배합으로부터 구현된다.
다양한 실시예들은 HEVC 표준에 대하여 설명된다. 그러나, 본 원리들은 HEVC로 제한되지는 않고, HEVC, 또는 포맷 범위(RExt), 스케일러빌러티(SHVC), 및 멀티-뷰(MV-HEVC) 확장들과 같은 HEVC 확장들을 포함하는, 다른 표준들, 추천안들, 및 그 확장들에 적용될 수 있다. 다양한 실시예들은 이미지 블록의 인코딩/디코딩에 대하여 설명된다. 실시예들은 이미지들의 전체 픽처 또는 전체 시퀀스를 인코딩/디코딩하기 위하여 적용될 수도 있다.
다양한 방법들이 위에서 설명되고, 방법들의 각각은 설명된 방법을 달성하기 위한 하나 이상의 단계들 또는 액션들을 포함한다. 방법의 적당한 동작을 위하여 단계들 또는 액션들의 특정 순서가 요구되지 않는 한, 특정 단계들 및/또는 액션들의 순서 및/또는 이용은 수정될 수도 있거나 조합될 수도 있다.
본원에서 설명된 구현예들은 예를 들어, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림, 또는 신호에서 구현될 수도 있다. (예를 들어, 오직 방법 또는 디바이스로서 논의된) 단일 형태의 구현예의 맥락에서 오직 논의되더라도, 논의된 특징들의 구현예는 또한 다른 형태들 (예를 들어, 프로그램) 로 구현될 수도 있다. 장치는 예를 들어, 적절한 하드웨어, 소프트웨어, 및 펌웨어로 구현될 수도 있다. 방법들은 예를 들어, 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그래밍가능 로직 디바이스를 포함하는 프로세싱 디바이스들을 일반적으로 지칭하는 예를 들어, 프로세서와 같은 예를 들어, 장치에서 구현될 수도 있다. 프로세서들은 또한, 예를 들어, 컴퓨터들, 셀 전화들, 휴대용/개인용 정보 단말 (portable/personal digital assistant) ("PDA") 들, 및 최종-사용자들 사이의 정보의 통신을 가능하게 하는 다른 디바이스들과 같은 통신 디바이스들을 포함한다.
본원에서 설명된 다양한 프로세스들 및 특징들의 구현예들은 다양한 상이한 장비 또는 애플리케이션들, 특히, 예를 들어, 장치 또는 애플리케이션들에서 구체화될 수도 있다. 이러한 장비의 예들은 인코더, 디코더, 디코더로부터의 출력을 프로세싱하는 포스트-프로세서(post-processor), 입력을 인코더에 제공하는 프리-프로세서(pre-processor), 비디오 코더, 비디오 디코더, 비디오 코덱, 웹 서버, 셋톱 박스, 랩톱, 개인용 컴퓨터, 셀 전화, PDA, 및 다른 통신 디바이스들을 포함한다. 명확해야 하는 바와 같이, 장비는 이동식일 수도 있고, 심지어 이동 차량 내에 설치될 수도 있다.
추가적으로, 방법들은 프로세서에 의해 수행되는 명령들에 의해 구현될 수도 있고, 이러한 명령들(및/또는 구현예에 의해 생성된 데이터 값들)은 예를 들어, 집적 회로, 소프트웨어 캐리어(software carrier), 또는 예를 들어, 하드 디스크, 컴팩트 디스켓(compact diskette)("CD"), (예를 들어, 디지털 다기능 디스크 또는 디지털 비디오 디스크로서 종종 지칭된 DVD와 같은) 광학 디스크, 랜덤 액세스 메모리(random access memory)("RAM"), 또는 판독-전용 메모리(read-only memory)("ROM")와 같은 다른 저장 디바이스와 같은 프로세서-판독가능 매체 상에서 저장될 수도 있다. 명령들은 프로세서-판독가능 매체 상에서 유형적으로 구체화된 애플리케이션 프로그램을 형성할 수도 있다. 명령들은 예를 들어, 하드웨어, 펌웨어, 소프트웨어, 또는 조합일 수도 있다. 명령들은 예를 들어, 오퍼레이팅 시스템, 별도의 애플리케이션, 또는 둘의 조합에서 발견될 수도 있다. 프로세서는 예를 들어, 프로세스를 수행하도록 구성된 디바이스, 및 프로세스를 수행하기 위한 명령들을 가지는 (저장 디바이스와 같은) 프로세서-판독가능 매체를 포함하는 디바이스의 양자로서 특징될 수도 있다. 또한, 프로세서-판독가능 매체는 명령들에 추가하여 또는 명령들 대신에, 구현예에 의해 생성된 데이터 값들을 저장할 수도 있다.
본 기술분야의 통상의 기술자에게 명백한 바와 같이, 구현예들은 예를 들어, 저장될 수도 있거나 송신될 수도 있는 정보를 반송하도록 포맷팅된 다양한 신호들을 생성할 수도 있다. 정보는 예를 들어, 방법을 수행하기 위한 명령들, 또는 설명된 구현예들 중의 하나에 의해 생성된 데이터를 포함할 수도 있다. 예를 들어, 신호는 설명된 실시형태의 신택스를 기록하거나 판독하기 위한 규칙들을 데이터로서 반송하거나, 설명된 실시형태에 의해 기록된 실제적인 신택스-값들을 데이터로서 반송하도록 포맷팅될 수도 있다. 이러한 신호는 예를 들어, (예를 들어, 스펙트럼의 라디오 주파수 부분을 이용하는) 전자기파로서, 또는 기저대역 신호로서 포맷팅될 수도 있다. 포맷팅은 예를 들어, 데이터 스트림을 인코딩하고 캐리어를 인코딩된 데이터 스트림으로 변조하는 것을 포함할 수도 있다. 신호가 반송하는 정보는 예를 들어, 아날로그 또는 디지털 정보일 수도 있다. 신호는 알려져 있는 바와 같이, 다양한 상이한 유선 또는 무선 링크들 상에서 송신될 수도 있다. 신호는 프로세서-판독가능 매체 상에서 저장될 수도 있다.
다수의 구현예들이 설명되었다. 그럼에도 불구하고, 다양한 수정들이 행해질 수도 있다는 것이 이해될 것이다. 예를 들어, 상이한 구현예들의 엘리먼트들은 다른 구현예들을 생성하기 위하여 조합될 수도 있거나, 보충될 수도 있거나, 수정될 수도 있거나, 제거될 수도 있다. 추가적으로, 당업자는 다른 구조들 및 프로세스들이 개시된 것들을 위하여 치환될 수도 있고 결과적인 구현예들은 개시된 구현예들과 적어도 실질적으로 동일한 결과(들)를 달성하기 위하여 적어도 실질적으로 동일한 방법(들)으로 적어도 실질적으로 동일한 기능(들)을 수행할 것이라는 것을 이해할 것이다. 따라서, 이러한 그리고 다른 구현예들은 이 출원에 의해 고려된다.

Claims (16)

  1. 디코딩 방법으로서,
    - 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하는 단계(S120);
    - 상기 비트스트림으로부터 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하는 단계(S130);
    - 상기 디코딩된 복수의 대역 오프셋들 및 상기 디코딩된 대역 위치에 응답하여, 상기 샘플 적응적 오프셋 필터로 상기 디코딩된 블록을 필터링하는 단계(S140)
    를 포함하고,
    상기 복수의 대역 오프셋들 중의 상기 제1 디코딩된 대역 오프셋은 반드시 비-제로(non-zero) 대역 오프셋이고, 상기 대역 위치를 디코딩하는 단계는 참조 대역 위치 - 상기 참조 대역 위치는 상기 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치임 - 로부터 상기 대역 위치를 디코딩하는 단계를 포함하는, 디코딩 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 이미지 블록은 루마 블록(luma block)이고, 상기 방법은 적어도 2 개의 공동-위치된(co-located) 크로마 블록(chroma block)들을 디코딩하고 적어도 제1 크로마 블록에 대하여, 상기 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로(zero)와 동일한지 여부를 표시하는 추가적인 비트를 디코딩하는 단계를 더 포함하는, 디코딩 방법.
  3. 제2항에 있어서,
    상기 제1 크로마 블록에 대하여 디코딩된 상기 추가적인 비트가 상기 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일하지는 않다는 것을 표시할 경우에만, 적어도 제2 크로마 블록에 대하여, 상기 제2 크로마 블록에 대한 모든 대역 오프셋들이 제로인지 여부를 표시하는 추가적인 비트를 디코딩하는 단계를 더 포함하는, 디코딩 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 대역 위치를 디코딩하는 단계는 가변 길이 디코딩을 이용하는 디코딩 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 참조 대역 위치로부터 대역 위치를 디코딩하는 단계는 잔차를 디코딩하는 단계, 및 상기 디코딩된 잔차를 상기 참조 대역 위치에 가산하는 단계를 포함하는, 디코딩 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 디코딩된 블록의 최대 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와, 상기 디코딩된 블록의 최저 샘플 값을 포함하는 상기 대역의 위치를 표시하는 인덱스와의 사이의 차이가 디코딩된 대역 오프셋들의 수보다 낮을 경우, 상기 대역 위치는 디코딩되지 않는, 디코딩 방법.
  7. 인코딩 방법으로서,
    - 비트스트림에서의 적어도 하나의 이미지 블록을 인코딩 및 디코딩하는 단계(S220);
    - 상기 비트스트림에서의 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하는 단계(S230);
    - 상기 인코딩된 복수의 대역 오프셋들 및 상기 인코딩된 대역 위치에 응답하여, 상기 샘플 적응적 오프셋 필터로 상기 디코딩된 블록을 필터링하는 단계(S240)
    를 포함하고,
    상기 복수의 대역 오프셋들 중의 상기 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이고, 상기 대역 위치를 인코딩하는 단계는 참조 대역 위치 - 상기 참조 대역 위치는 상기 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치임 - 로부터 상기 대역 위치를 인코딩하는 단계를 포함하는, 인코딩 방법.
  8. 제7항에 있어서,
    상기 적어도 하나의 이미지 블록은 루마 블록이고, 상기 방법은 적어도 2 개의 공동-위치된 크로마 블록들을 인코딩하고 적어도 제1 크로마 블록에 대하여, 상기 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일한지 여부를 표시하는 추가적인 비트를 인코딩하는 단계를 더 포함하는, 인코딩 방법.
  9. 제8항에 있어서,
    상기 제1 크로마 블록에 대하여 인코딩된 상기 추가적인 비트가 상기 제1 크로마 블록에 대한 모든 대역 오프셋들이 제로와 동일하지는 않다는 것을 표시할 경우에만, 적어도 제2 크로마 블록에 대하여, 상기 제2 크로마 블록에 대한 모든 대역 오프셋들이 제로인지 여부를 표시하는 추가적인 비트를 인코딩하는 단계를 더 포함하는, 인코딩 방법.
  10. 제7항 내지 제9항 중 어느 한 항에 있어서,
    상기 대역 위치를 인코딩하는 단계는 가변 길이 코딩을 이용하는, 인코딩 방법.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 참조 대역 위치로부터 대역 위치를 인코딩하는 단계는 잔차를 획득하기 위하여 상기 대역 위치로부터 상기 참조 대역 위치를 감산하는 단계, 및 상기 잔차를 인코딩하는 단계를 포함하는, 인코딩 방법.
  12. 제7항 내지 제11항 중 어느 한 항에 있어서,
    상기 디코딩된 블록의 최대 샘플 값을 포함하는 대역의 위치를 표시하는 인덱스와, 상기 디코딩된 블록의 최저 샘플 값을 포함하는 상기 대역의 위치를 표시하는 인덱스와의 사이의 차이가 인코딩된 대역 오프셋들의 수보다 낮을 경우, 상기 대역 위치는 인코딩되지 않는, 인코딩 방법.
  13. 디코더로서,
    - 비트스트림으로부터 적어도 하나의 이미지 블록을 디코딩하기 위한 수단;
    - 상기 비트스트림으로부터 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 디코딩하기 위한 수단;
    - 상기 디코딩된 복수의 대역 오프셋들 및 상기 디코딩된 대역 위치에 응답하여, 상기 샘플 적응적 오프셋 필터로 상기 디코딩된 블록을 필터링하기 위한 수단
    을 포함하고,
    상기 복수의 대역 오프셋들 중의 상기 제1 디코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이고, 상기 대역 위치를 디코딩하기 위한 상기 수단은 참조 대역 위치 - 상기 참조 대역 위치는 상기 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치임 - 로부터 상기 대역 위치를 디코딩하도록 구성되는, 디코더.
  14. 제13항에 있어서,
    상기 디코더는 제1항 내지 제6항 중 어느 한 항에 따른 상기 디코딩 방법을 구현하도록 구성되는, 디코더.
  15. 인코더로서,
    - 비트스트림에서의 적어도 하나의 이미지 블록을 인코딩 및 디코딩하기 위한 수단; - 상기 비트스트림에서의 샘플 적응적 오프셋 필터의 복수의 대역 오프셋들 및 제1 대역 오프셋의 대역 위치를 인코딩하기 위한 수단;
    - 상기 인코딩된 복수의 대역 오프셋들 및 상기 인코딩된 대역 위치에 응답하여, 상기 샘플 적응적 오프셋 필터로 상기 디코딩된 블록을 필터링하기 위한 수단
    을 포함하고,
    상기 복수의 대역 오프셋들 중의 상기 제1 인코딩된 대역 오프셋은 반드시 비-제로 대역 오프셋이고, 상기 대역 위치를 인코딩하기 위한 상기 수단은 참조 대역 위치 - 상기 참조 대역 위치는 상기 디코딩된 블록의 최저 샘플 값을 포함하는 대역의 위치임 - 로부터 상기 대역 위치를 인코딩하도록 구성되는, 인코더.
  16. 제15항에 있어서,
    상기 인코더는 제7항 내지 제12항 중 어느 한 항에 따른 상기 인코딩 방법을 구현하도록 구성되는, 인코더.
KR1020197005929A 2016-08-04 2017-07-04 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치 KR20190031558A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16306012.2 2016-08-04
EP16306012.2A EP3280143A1 (en) 2016-08-04 2016-08-04 A method and an apparatus for image block encoding and decoding
PCT/EP2017/066573 WO2018024425A1 (en) 2016-08-04 2017-07-04 A method and an apparatus for image block encoding and decoding

Publications (1)

Publication Number Publication Date
KR20190031558A true KR20190031558A (ko) 2019-03-26

Family

ID=56787388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197005929A KR20190031558A (ko) 2016-08-04 2017-07-04 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20190191187A1 (ko)
EP (2) EP3280143A1 (ko)
JP (1) JP2019528607A (ko)
KR (1) KR20190031558A (ko)
CN (1) CN109716764A (ko)
WO (1) WO2018024425A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113170120A (zh) 2018-09-28 2021-07-23 弗劳恩霍夫应用研究促进协会 去块或去振铃滤波器以及应用和改变去块或去振铃滤波器的强度的编码器、解码器和方法
WO2021141372A1 (ko) * 2020-01-06 2021-07-15 현대자동차주식회사 이종 해상도를 갖는 참조 픽처 기반의 영상 부호화 및 복호화
CN113068037B (zh) * 2021-03-17 2022-12-06 上海哔哩哔哩科技有限公司 用于样点自适应补偿的方法及装置、设备和介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102656595B1 (ko) * 2011-06-14 2024-04-12 엘지전자 주식회사 영상 정보 인코딩 및 디코딩 방법
PT3145197T (pt) * 2011-10-31 2018-08-10 Samsung Electronics Co Ltd Método e aparelho para determinar um modelo de contexto para a transformação de nível de coeficiente de codificação e descodificação de entropia
BR112014011149A2 (pt) * 2011-11-08 2017-05-16 Motorola Mobility Llc dispositivos e métodos para codificação e / ou de sinalização de deslocamento adaptativo de amostra
US9161035B2 (en) * 2012-01-20 2015-10-13 Sony Corporation Flexible band offset mode in sample adaptive offset in HEVC
US9282328B2 (en) * 2012-02-10 2016-03-08 Broadcom Corporation Sample adaptive offset (SAO) in accordance with video coding
CN103650511B (zh) * 2012-05-25 2017-12-15 太阳专利托管公司 运动图像解码方法及运动图像解码装置
US9628822B2 (en) * 2014-01-30 2017-04-18 Qualcomm Incorporated Low complexity sample adaptive offset encoding
US10609377B2 (en) * 2015-05-12 2020-03-31 Samsung Electronics Co., Ltd. Image encoding method and device for sample value compensation and image decoding method and device for sample value compensation

Also Published As

Publication number Publication date
EP3494696A1 (en) 2019-06-12
JP2019528607A (ja) 2019-10-10
CN109716764A (zh) 2019-05-03
WO2018024425A1 (en) 2018-02-08
EP3280143A1 (en) 2018-02-07
US20190191187A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
CN112243587B (zh) 基于块的自适应环路滤波器(alf)设计和信令通知
CN107211154B (zh) 用于译码视频数据的方法和装置以及计算机可读存储介质
EP2893704B1 (en) Weighted prediction mode for scalable video coding
EP2979448B1 (en) Memory reduction for video coding prediction
JP7504925B2 (ja) ビデオコーディングのための組み合わされたインターおよびイントラ予測モード
EP3849182B1 (en) Restriction of prediction units in b slices to uni-directional inter prediction
CA2812307C (en) Intra smoothing filter for video coding
US9357235B2 (en) Sample adaptive offset merged with adaptive loop filter in video coding
CA2839687C (en) Parallelization friendly merge candidates for video coding
CA2839249C (en) Unified merge mode and adaptive motion vector prediction mode candidates selection
CN110089116B (zh) 通过光照补偿和整数运动向量限制进行编码优化
KR20170108012A (ko) 비디오 코딩을 위한 중첩 모션 보상
US11032542B2 (en) Method and a device for image encoding and decoding
WO2013112729A2 (en) Video coding using parallel motion estimation
WO2013155274A1 (en) Bandwidth reduction in video coding through applying the same reference index
EP3364656A1 (en) Method for sample adaptive offset coding
KR20190031558A (ko) 이미지 블록 인코딩 및 디코딩을 위한 방법 및 장치
KR20220005550A (ko) 비디오 코딩을 위한 서브-블록 시간적 움직임 벡터 예측

Legal Events

Date Code Title Description
WITB Written withdrawal of application