KR20210022073A - 비디오 인코딩 및 디코딩에서의 정제 모드 처리 - Google Patents

비디오 인코딩 및 디코딩에서의 정제 모드 처리 Download PDF

Info

Publication number
KR20210022073A
KR20210022073A KR1020217001630A KR20217001630A KR20210022073A KR 20210022073 A KR20210022073 A KR 20210022073A KR 1020217001630 A KR1020217001630 A KR 1020217001630A KR 20217001630 A KR20217001630 A KR 20217001630A KR 20210022073 A KR20210022073 A KR 20210022073A
Authority
KR
South Korea
Prior art keywords
refinement
signal
encoding
mode
picture
Prior art date
Application number
KR1020217001630A
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
Priority claimed from EP18306226.4A external-priority patent/EP3627837A1/en
Application filed by 인터디지털 브이씨 홀딩스 인코포레이티드 filed Critical 인터디지털 브이씨 홀딩스 인코포레이티드
Publication of KR20210022073A publication Critical patent/KR20210022073A/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/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • 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

Landscapes

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

Abstract

비디오 정보의 픽처 부분을 인코딩 또는 디코딩하는 것은 정제 모드가 정제 파라미터에 기초할 수 있는 블록 당 정제 모드를 이용하는 것을 포함할 수 있다. 정제 모드는 교차 성분 크로마 정제일 수 있는 교차 성분 정제를 포함할 수 있다. 정제 모드는 정제 파라미터의 블록 당 선택을 인에이블하는 것을 포함할 수 있고, 정제 파라미터는 크로마 정제 테이블에 포함된 하나 이상의 크로마 정제 파라미터를 포함할 수 있다.

Description

비디오 인코딩 및 디코딩에서의 정제 모드 처리
본 개시내용은 비디오 인코딩 및 디코딩을 포함한다.
높은 압축 효율을 달성하기 위해, 이미지 및 비디오 코딩 스킴들은 통상적으로 비디오 콘텐츠에서의 공간적 및 시간적 중복성(spatial and temporal redundancy)을 레버리지(leverage)하기 위해 예측(prediction) 및 변환(transform)을 이용한다. 일반적으로, 인트라 또는 인터 프레임 상관(intra or inter frame correlation)을 활용하기 위해 인트라 또는 인터 예측이 이용되어, 때로는 예측 오차들(prediction errors) 또는 예측 잔차들(prediction residuals)로서 표시되는 원래 픽처 블록과 예측된 픽처 블록 사이의 차이들이 변환되고, 양자화되고, 엔트로피 코딩(entropy coding)된다. 비디오를 재구성하기 위해, 압축된 데이터는 예측, 변환, 양자화 및 엔트로피 코딩에 대응하는 역 프로세스들(inverse processes)에 의해 디코딩된다.
일반적으로, 방법의 적어도 하나의 실시예의 예는, (i) 블록 당 재구성된 신호에 정제 모드(refinement mode)를 적용하는 것에 기초하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―하고, (ii) 정제 모드 이외의 모드를 이용하여 픽처 부분을 인코딩하기 위한 비용을 획득하는 단계; 및 비용에 기초하여 픽처 부분을 인코딩하는 단계를 포함한다.
일반적으로, 장치의 적어도 하나의 실시예의 예는, 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 블록 당 재구성된 신호에 정제 모드를 적용하는 것에 기초하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―하고, 정제 모드를 이용하지 않고 픽처 부분을 인코딩하기 위한 비용을 획득, 및 비용에 기초하여 픽처 부분을 인코딩하도록 구성된다.
일반적으로, 디코딩 방법의 적어도 하나의 실시예의 예는, 픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득하는 단계―정제 모드는 정제 파라미터에 기초함―; 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하는 단계를 포함한다.
일반적으로, 장치의 적어도 하나의 실시예의 예는, 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 인코딩된 픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득―정제 모드는 정제 파라미터에 기초함―, 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하도록 구성된다.
일반적으로, 적어도 하나의 실시예의 예는, 인코딩된 픽처 부분을 나타내는 데이터; 및 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터를 포함하도록 포맷팅된 신호를 제공하는 것을 포함한다.
일반적으로, 적어도 하나의 실시예의 예는, 인코딩된 픽처 부분을 나타내는 데이터; 및 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터를 포함하도록 포맷팅된 비트스트림을 제공하는 것을 포함한다.
일반적으로, 적어도 하나의 실시예의 예는, 하나 이상의 프로세서로 하여금 본 명세서에 설명된 방법들 중 임의의 것을 수행하게 하기 위한 컴퓨터 판독가능 명령어들을 저장하는 컴퓨터 프로그램 제품 또는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
일반적으로, 하나 이상의 실시예는, 본 명세서에 설명된 방법들 또는 장치들에 따라 비디오 데이터를 인코딩 또는 디코딩하기 위한 명령어들을 저장 및/또는 본 명세서에 설명된 방법들 또는 장치에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독가능 저장 매체, 예를 들어, 비휘발성 컴퓨터 판독가능 저장 매체를 제공한다. 본 실시예들 중 하나 이상은 또한, 본 명세서에 설명된 방법들 또는 장치에 따라 생성된 비트스트림을 송신 또는 수신하기 위한 방법들 및 장치를 제공할 수 있다.
일반적으로, 적어도 하나의 실시예의 다른 예는, 디바이스를 포함하고, 디바이스는 본 명세서에 설명된 방법들 또는 장치에 따라 픽처 부분을 인코딩 또는 디코딩하도록 구성된 하나 이상의 프로세서를 포함하고, (i) 신호를 수신하도록 구성된 안테나―신호는 이미지를 나타내는 데이터를 포함함―, (ii) 수신된 신호를 이미지를 나타내는 데이터를 포함하는 주파수들의 대역으로 제한하도록 구성된 대역 제한기(band limiter), 또는 (iii) 이미지를 디스플레이하도록 구성된 디스플레이 중 적어도 하나를 포함한다.
본 개시내용은 첨부 도면들과 함께 아래의 상세한 설명을 고려함으로써 더 잘 이해될 수 있다.
도 1은 비디오 인코더의 실시예의 예를 도시하는 블록도를 제공한다.
도 2는 비디오 디코더의 실시예의 예를 도시하는 블록도를 제공한다.
도 3은 비디오 인코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 4는 비디오 디코더의 다른 실시예의 예를 도시하는 블록도를 제공한다.
도 5는 신호 신택스(signal syntax)의 실시예의 예를 도시하는 테이블을 제공한다.
도 6은 정제 테이블(refinement table)의 실시예의 특징들을 도시하는 그래프를 제공한다.
도 7은 신호 신택스의 실시예의 다른 예를 도시하는 테이블을 제공한다.
도 8은 신호 신택스의 다른 실시예의 특징들의 예를 도시하는 테이블을 제공한다.
도 9는 정제 정보를 도출하기 위한 프로세스의 실시예의 예를 도시하는 흐름도를 제공한다.
도 10은 신호 신택스의 실시예의 다른 예를 도시하는 테이블을 제공한다.
도 11은 정제 정보를 도출하기 위한 프로세스의 실시예의 다른 예를 도시하는 흐름도를 제공한다.
도 12는 정제 파라미터들을 인코딩 및 디코딩하기 위한 프로세스의 실시예의 예를 도시하는 2개의 흐름도들을 제공한다.
도 13은 신호 신택스의 실시예의 다른 예를 도시하는 테이블을 제공한다.
도 14는 하나 이상의 실시예에서 이용하기 위한 정보를 도출하기 위한 프로세스의 실시예의 예를 도시하는 흐름도를 제공한다.
도 15는 비디오 인코딩 및/또는 디코딩을 포함하는 시스템의 실시예의 예를 도시하는 블록도를 제공한다.
도 16은 비디오 인코딩을 포함하는 송신기와 같은 시스템의 실시예의 예를 도시하는 블록도를 제공한다.
도 17은 비디오 인코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 18은 비디오 인코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 19는 비디오 인코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 20은 비디오 인코딩을 위한 프로세스의 실시예의 예를 도시하는 흐름도를 제공한다.
도 21은 도 20에 도시된 프로세스와 같은 적어도 하나의 다른 실시예의 특징들의 실시예의 예를 도시하는 흐름도를 제공한다.
도 22는 정제 테이블의 실시예의 특징들을 도시하는 그래프를 제공한다.
도 23은 정제 테이블의 다른 실시예의 특징들을 도시하는 그래프를 제공한다.
도 24는 도 21에 도시된 프로세스의 변형의 실시예의 예를 도시하는 흐름도를 제공한다.
도 25는 정제 테이블의 다른 실시예의 특징들을 도시하는 그래프를 제공한다.
도 26은 정제 테이블의 다른 실시예의 특징들을 도시하는 그래프를 제공한다.
도 27은 비디오 디코딩을 포함하는 수신기와 같은 시스템의 실시예의 예를 도시하는 블록도를 제공한다.
도 28은 비디오 디코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 29는 비디오 디코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 30은 비디오 디코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 31은 비디오 신호를 디코딩하기 위한 프로세스의 실시예의 예를 도시하는 흐름도를 제공한다.
도 32는 비디오 인코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도 33은 비디오 디코더의 실시예의 다른 예를 도시하는 블록도를 제공한다.
도면들은 다양한 양태들 및 실시예들의 예들을 도시하기 위한 것이고, 반드시 유일하게 가능한 구성들은 아니라는 것을 이해해야 한다. 다양한 도면들 전체를 통해, 비슷한 참조 번호들은 동일하거나 유사한 특징들을 나타낸다.
비디오 압축 및 재구성 처리는 왜곡들을 생성할 수 있다. 예를 들어, 재구성된 비디오 신호에서 왜곡이 관찰될 수 있는데, 특히, 예를 들어, 비디오 픽처들의 샘플 코드워드 분포(sample codewords distribution)를 더 잘 이용하기 위해, 비디오 신호가 인코딩 전에 맵핑되는 경우에 그러하다. 일반적으로, 적어도 하나의 실시예는 유연성 및 코딩 이득들을 제공하기 위해, 예를 들어, 크로마 성분들(chroma components)에 기초한 비디오 신호 정제를 이용하여 왜곡들을 감소하고/하거나 압축 효율을 개선하는 것을 제공할 수 있다. 적어도 하나의 실시예는 디코딩 후에 재구성된 비디오 신호를 개선하기 위한 인루프(in-loop) 또는 아웃-오브-루프(out-of-loop) 필터로서 정제 단계를 포함할 수 있다. 정제는, 예를 들어, 인코딩 동안 신호 또는 비트스트림에서 코딩된 정제 테이블들에 기초할 수 있다. 그 후, 디코더는 정제 테이블들에 기초하여 신호 정정(signal correction)(예를 들어, 필터링)을 적용한다. 가능한 모드들의 다양한 예들 중에서, 적어도 하나의 실시예의 모드의 일 예는 크로마 성분들의 교차 성분 정제(cross-component refinement)이다. 적어도 하나의 실시예의 모드의 다른 예는, 예를 들어, 루마 성분(luma component)에 적용된 인트라 성분 정제(intra-component refinement)이다.
전체 슬라이스에 또는 주어진 전체 영역에 정제를 제공하도록 의도된 특정 처리, 방법들 또는 기술들을 적용하는 것은, 전체 슬라이스 또는 영역에 대해 전역적으로 정제가 유익할지라도, 정제가 적용되는 슬라이스 또는 영역의 로컬 부분들의 열화를 초래할 수 있다. 일반적으로, 적어도 하나의 실시예는 이 문제를 해결하고, 또한 정제 테이블들과 같은 관련된 데이터의 코딩을 개선하는 것을 목표로 한다. 전체 슬라이스 또는 영역을 어드레싱하는 정제들은 성분 당 하나의 테이블을 코딩하고, 이 하나의 테이블을 전체 슬라이스 또는 전체 영역의 모든 샘플들에 적용하는 것을 포함할 수 있다.
일반적으로, 적어도 하나의 실시예에서, 테이블들은, 예를 들어, 전체 고려된 픽처 또는 영역에 걸쳐 레이트 왜곡 비용(rate-distortion cost)(전형적으로 왜곡 및 코딩 비용의 가중 합(weighted sum))을 감소시킴으로써, 메트릭(metric)에 의해 표시된 바와 같은 개선을 제공하는 것에 기초하여 인코더 측에서 계산된다. 왜곡은, 예를 들어, 정제된 재구성된 신호와 원래의 신호 사이의 평균 제곱 오차(mean square error)일 수 있다. 그 후, 결과적인 테이블들은 비트스트림 또는 신호로 코딩된다. 고려된 슬라이스 또는 영역에 걸친 레이트-왜곡 비용이 전역적으로 감소되면, 이것은 또한, 레이트 왜곡 비용이 증가되는 일부 부분들이, 고려된 슬라이스 또는 영역에 존재할 수 있다는 것을 의미한다. 일반적으로, 실시예의 적어도 하나의 예는 교차 성분 크로마 정제를 포함하는 정제 모드를 포함할 수 있다. 실시예의 다른 예는, 예를 들어, 루마 성분에 적용된 인트라 성분 정제(intra-component refinement)를 포함할 수 있다.
본 명세서에서 이용된 바와 같이, 데이터의 정제는 개선, 예를 들어, 비디오 데이터와 같은 정보를 코딩 및/또는 디코딩하는 것의 증가된 효율과 같은 개선 및/또는 본 명세서에 설명된 바와 같은 레이트 왜곡 비용과 같은 비용을 감소시키는 것과 같은 다른 개선들을 발생시킬 수 있는 처리의 변경(change), 조정(adjustment), 수정(modification), 정정(revision), 또는 적응(adaptation)을 지칭할 수 있다. 설명의 편의를 위해, 본 명세서에 설명된 하나 이상의 실시예는 "비용"을 정제 모드의 이용과 연관된 효과, 영향 또는 개선을 평가, 결정 또는 획득하는데 이용될 수 있는 "레이트 왜곡 비용"이라고 지칭할 수 있다. 예를 들어, 개선된 압축 효율 및/또는 비용의 변화에 의해 표시된 감소된 왜곡과 같은 개선에 기초하여, 예를 들어, 본 명세서에 설명된 바와 같은 정제 모드를 이용할지의 여부를 결정하기 위해 정제 모드의 이용과 연관된 및 정제 모드의 이용 없는 비용이 평가(예를 들어, 비교)될 수 있다. 비록 한가지 타입의 비용이 레이트 왜곡 비용을 포함할 수 있지만, 본 명세서에서는 레이트 왜곡 비용에 대한 참조들은 제한적이지 않은데, 그 이유는 다른 타입들의 비용 및/또는 정제 모드의 효과를 평가하는 다른 접근법들이 구상되기 때문이다.
또한, 본 명세서에서의 설명에서, "재구성된" 및 "디코딩된"이라는 단어는 상호교환적으로 이용될 수 있다. 보통, "재구성된"은 인코더 측에서 이용되며, "디코딩된"은 디코더 측에서 이용되지만, 반드시 그러하지는 않다. 용어 "디코딩된" 또는 "재구성된"은 비트스트림 또는 신호가 부분적으로 "디코딩된" 또는 "재구성된" 것, 예를 들어, 디블록킹 필터링(deblocking filtering) 이후 그러나 SAO 필터링 이전에 획득된 신호들을 의미할 수 있고, 재구성된 샘플들은 디스플레이를 위하여 이용되는 최종적인 디코딩된 출력과 상이할 수 있다는 것에 유의해야 한다. 또한, 용어들 "이미지", "픽처" 및 "프레임"은 상호교환적으로 이용될 수 있다.
일반적으로, 적어도 하나의 실시예는 블록 당 정제의 활성화를 인에이블하는 것, 및 가능하게는 스트림에서 이전에 코딩된 가능한 정제 파라미터들의 세트 중에서 블록에 적용할 정제 파라미터들의 블록 당 선택을 인에이블하는 것을 포함할 수 있다. 용어 "블록"은 변형들에서 "코딩 유닛(Coding Unit)"(CU), "코딩 트리 유닛(Coding Tree Unit)"(CTU)으로 대체될 수 있다.
일반적으로, 하나 이상의 실시예는 인코더 및 디코더에 관한 것이고, 하나 이상의 실시예는 디코더 사양 및 시맨틱스(semantics)에 관한 것일 수 있다.
도 1은 인코더(100)의 실시예의 예를 도시한다. 이러한 인코더(100)의 변형들이 구상되지만, 아래에서, 인코더(100)는 모든 예상되는 변동들을 설명하지 않으며, 명료성의 목적을 위해 설명된다.
인코딩되기 전에, 비디오 시퀀스는 전인코딩 처리(pre-encoding processing)(101), 예를 들어, 입력 컬러 픽처에 컬러 변환을 적용하는 것(예를 들어, RGB 4:4:4로부터 YCbCr 4:2:0으로의 변환), 또는 (예를 들면, 컬러 성분들 중 하나의 히스토그램 등화(histogram equalization)를 이용하여) 압축에 더 탄력적인 신호 분포를 얻기 위해 입력 픽처 성분들의 리맵핑(remapping)을 수행하는 것을 겪을 수 있다. 메타데이터는 전처리와 연관되며, 비트스트림 또는 신호에 첨부될 수 있다.
인코더(100)에서, 픽처는 아래에서 설명되는 바와 같이 인코더 요소들에 의해 인코딩된다. 인코딩될 픽처는, 예를 들어, CU들의 유닛들로 분할(102)되어 처리된다. 각각의 유닛은, 예를 들어, 인트라 또는 인터 모드를 이용하여 인코딩된다. 유닛이 인트라 모드에서 인코딩될 때, 그것은 인트라 예측(160)을 수행한다. 인터 모드에서, 움직임 추정(motion estimation)(175) 및 보상(compensation)(170)이 수행된다. 인코더는 유닛을 인코딩하기 위해 인트라 모드 또는 인터 모드 중 어느 것을 이용할지를 결정(105)하고, 예를 들어, 예측 모드 플래그에 의해 인트라/인터 결정을 표시한다. 예측 잔차들(prediction residuals)은, 예를 들어, 원래의 이미지 블록으로부터 예측된 블록을 감산(110)함으로써 계산된다.
예측 잔차들이 이어서 변환(125) 및 양자화(130)된다. 양자화된 변환 계수들 뿐만 아니라 움직임 벡터들 및 다른 신택스 요소들은, 비트스트림 또는 신호를 출력하도록 엔트로피 코딩(145)된다. 인코더는 변환을 스킵하고, 비변환된 잔차 신호에 직접 양자화를 적용할 수 있다. 인코더는 변환 및 양자화 둘다를 우회할 수 있는데, 즉, 잔차는 변환 또는 양자화 프로세스들의 적용 없이 직접 코딩된다.
인코더는 추가적 예측들을 위한 기준을 제공하기 위해 인코딩된 블록을 디코딩한다. 예측 잔차들을 디코딩하기 위해, 양자화된 변환 계수들은 역 양자화(140) 및 역 변환(150)된다. 디코딩된 예측 잔차들 및 예측된 블록을 결합(155)함으로써, 이미지 블록이 재구성된다. 인루프 필터들(165)은, 예를 들어, 인코딩 아티팩트들을 감소시키기 위한 디블록킹(deblocking)/SAO(Sample Adaptive Offset) 필터링을 수행하기 위해 재구성된 픽처에 적용된다. 필터링된 이미지는 참조 픽처 버퍼(reference picture buffer)(180)에 저장된다.
도 2는 비디오 디코더(200)의 실시예의 예의 블록도를 도시한다. 디코더(200)에서, 비트스트림 또는 신호는 아래에서 설명되는 바와 같이 디코더 요소들에 의해 디코딩된다. 비디오 디코더(200)는 일반적으로 도 1에 설명된 바와 같은 인코딩 패스(pass)에 역인 디코딩 패스를 수행한다. 인코더(100)는 또한, 비디오 데이터를 인코딩하는 것의 일부로서 비디오 디코딩을 일반적으로 수행한다.
특히, 디코더의 입력은 비디오 인코더(100)에 의해 생성될 수 있는 비디오 비트스트림 또는 신호를 포함한다. 비트스트림 또는 신호는, 변환 계수들, 움직임 벡터들 및 다른 코딩된 정보를 획득하기 위해 먼저 엔트로피 디코딩(230)된다. 픽처 분할 정보는 픽처가 분할되는 방법을 나타낸다. 따라서, 디코더는 디코딩된 픽처 분할 정보에 따라 픽처를 분할(235)할 수 있다. 예측 잔차들을 디코딩하기 위해, 변환 계수들은 역 양자화(240) 및 역 변환(250)된다. 디코딩된 예측 잔차들과 예측된 블록을 결합(255)함으로써, 이미지 블록이 재구성된다. 예측된 블록은 인트라 예측(260) 또는 움직임 보상 예측(즉, 인터 예측)(275)으로부터 획득될 수 있다(270). 인루프 필터들(265)은 재구성된 이미지에 대해 적용된다. 필터링된 이미지는 참조 픽처 버퍼(280)에 저장된다.
디코딩된 픽처는 후디코딩 처리(post-decoding processing)(285), 예를 들어, 역 컬러 변환(예를 들어, YCbCr 4:2:0으로부터 RGB 4:4:4로의 변환) 또는 전인코딩 처리(pre-encoding processing)(101)에서 수행된 리맵핑 프로세스의 역을 수행하는 역 리맵핑을 추가로 겪을 수 있다. 후디코딩 처리는 전인코딩 처리에서 도출되고 비트스트림 또는 신호에서 시그널링된 메타데이터를 이용할 수 있다.
일반적으로, 적어도 일 실시예에서, 본 명세서에 설명된 하나 이상의 특징은 본 명세서에 설명된 특징들의 다양한 예들에 따라, 인루프 필터들(165 및 265) 및 엔트로피 코딩(145) 및 디코딩(230)과 같은 코더/디코더(코덱)의 부분들 또는 섹션들 또는 모듈들에 영향을 미칠 수 있다.
도 3은 도 1의 비디오 인코더(100)의 변형(3000)을 도시한다. 도 1의 모듈들과 동일한 도 3의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 도 3에서, 도시된 실시예는 인루프인 정제 프로세스를 포함한다. 정제 파라미터들을 계산하는 단계(단계 3001)는 인루프 필터링 단계(165) 후에 수행된다. 정제 파라미터 계산 단계는 입력 비디오, 및 인루프 필터링 단계로부터 오는 재구성된 비디오를 입력으로서 취한다. 이는 수정된 엔트로피 코더(3003)에 의해 비트스트림 또는 신호로 코딩되는 정제 파라미터들을 계산한다. 정제 파라미터들은 또한 인루프 필터들로부터 오는 재구성된 비디오에 정제 단계(3002)를 적용하는데 이용된다.
도 4는 도 2의 비디오 인코더(100)의 변형(102)을 도시한다. 도 2의 모듈들과 동일한 도 4의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 도 4에서, 비트스트림 또는 신호는 단계(4001)에서 엔트로피 디코더에 의해 디코딩된다. 엔트로피 디코더는 재구성된 비디오, 및 추가적으로, 디코딩된 정제 파라미터들을 생성한다. 단계(4002)에서, 정제 파라미터들을 이용해서 재구성된 비디오의 정제를 적용하여 출력 비디오를 생성한다.
본 명세서에서 이용된 바와 같이, 이하의 표기법은 다음을 나타내거나 그에 대응한다:
- B는 신호의 비트 심도(bit depth)(예를 들어, 10 비트)이다.
- MaxVal은 (2B-1)로서 계산된 신호의 최대 값이다.
- Sin_Y(p), Sin_cb(p), Sin_cr(p)는 픽처에서의 상대 위치 p에서의 Y, cb 및 cr 원래 (입력) 신호에 대응한다.
- Sout_cb(p), Sout_cr(p)는 픽처에서의 상대 위치 p에서의 정제에 기인하는 cb 및 cr (입력) 신호에 대응한다.
- Srec_Y(p)는 픽처에서의 상대 위치 p에서의 재구성된 루마 신호에 대응한다. 이것은 인루프 필터들로부터 오는 신호에 대응한다.
- Srec_cb(p), Srec_cr(p)는 픽처에서의 상대 위치 p에서의 정제될 재구성된 크로마 신호에 대응한다. 이것은 인루프 필터들로부터 오는 신호에 대응한다.
- neutralVal은 미리 정의된 값에 대응하고; 정제 값이 neutralVal과 동일할 때, 정제는 신호를 수정하지 않고; neutralVal에 대한 전형적인 값은 64이다.
- Rcb, Rcr은 크로마 정제 파라미터들에 대응한다.
Rcb, Rcr은 전형적으로 구간 선형(piece-wise linear)(PWL) 모델들의 피봇 포인트들(pivot points)로서 정의될 수 있다. 예를 들어,
Rcb = {(Rcb_idx[pt], Rcb_val[pt]), pt = 0 내지 Ncb-1에 대해}, Ncb는 피봇 포인트들의 수이다.
크로마 정제 파라미터들 Rcb, Rcr로부터, 룩업 테이블들(look-up-tables) LutRcb, LutRcr이 도출된다. 예를 들어, LutRcb는 다음과 같이 Rcb의 포인트들의 각각의 커플 사이의 선형 보간(linear interpolation)에 의해 구축될 수 있다.
Figure pct00001
교차 성분 크로마 정제의 실시예는 (성분 cb에 대해 여기서 예시된) 다음과 같이 작용한다:
· Sout_cb(p) = offset + LutRcb[Srec_Y(p)] / neutralVal * (Srec_cb(p) - offset)
여기서, offset은 일반적으로 (MaxVal/2)로 설정되고, p는 픽처에서의 동일한 상대 위치에 대응한다.
또는, 다음과 같다:
· Sout_cb(p) = (LutRcb[Srec_Y(p)] - neutralVal) + Srec_cb(p)
실시예의 다른 예에서, 정제는 루마 성분의 인트라 성분 정제로서 적용될 수 있고, 이는 다음과 같이 작용한다:
· Sout_Y(p) = (LutRy[Srec_Y(p)] / neutralVal) * Srec_Y(p)
또는, 다음과 같다:
· Sout_Y(p) = LutRy[Srec_Y(p)] + Srec_Y(p)
실시예는 도 5의 예에 도시된 것들과 같은 하나 이상의 신택스 특징을 갖는 비트스트림 또는 신호를 제공하는 것을 포함할 수 있다. 일 양태는 정제되는 크로마 성분들만을 포함할 수 있다. 예를 들어, refinement_table_flag_cb가 참일 때, 0부터 (refinement_table_cb_size - 1)까지의 모든 pt에 대해, cb 정제 테이블 값들(Rcb_idx[pt], Rcb_val[pt])은 다음과 같이 계산된다:
· Rcb_idx[pt]는 (Rcb_idx[pt-1] + refinement_cb_idx[pt])로 설정된다.
· Rcb_val[pt]는 (neutralVal + refinement_cb_value[pt])로 설정된다.
유사한 프로세스가 cr 성분에 대해 적용된다.
정제 테이블의 예가 도 6에 도시되며, 여기서 refinement_table_cb_size = 6(pt = 0 내지 5)이다. 표기 단순화를 위해, "Rcb"는 도 6에서 "R"로 대체되었다.
실시예에서, 블록 기반 교차 성분 크로마 정제가 활성화될 때, cb, cr 정제 테이블들 (Rcbk, Rcrk)(k = 1 내지 K)의 K개의 쌍들이 인에이블된다. K가 0인 경우, 슬라이스에서 어떠한 정제도 적용되지 않는다. 이러한 테이블 쌍들 중 어느 것이 이용되는지, 또는 그 블록에 대해 어떤 정제도 활성화되지 않은지를 나타내기 위해, 블록 당 하나 또는 몇 개의 블록 기반 표시자가 코딩된다.
실시예의 비제한적인 예에서, 테이블들의 하나의 쌍만이 이용된다(K = 1).
일 실시예의 다른 예에서, 슬라이스 헤더에서, 정제 테이블들의 세트가 먼저 코딩된다. cb, cr 정제 테이블들의 쌍들을 디코딩하기 위한 신택스의 예가 도 7에 도시되어 있다. 도 7에서, 테이블 쌍 식별자를 이용하는 슬라이스 헤더 신택스의 예가 도시되어 있으며, 여기서:
refinement_number_of_tables는 스트림에서 코딩된 크로마 정제 테이블 쌍들의 수를 나타낸다. 이러한 수는 0보다 크거나 동일할 것이다. 0일 때, 이것은 현재 슬라이스에 대해 크로마 정제가 적용되지 않는다는 것을 의미한다. refinement_number_of_tables가 0보다 큰 경우, 0과 (refinement_number_of_tables - 1) 사이의 idx의 임의의 값에 대해, 적어도 refinement_table_flag_cb[idx] 또는 refinement_table_flag_cr[idx]는 1이어야 한다.
비고: refinement_number_of_tables는 앞서 논의된 파라미터 K에 대응한다.
refinement_table_flag_cb[idx]는 식별자 값 idx의 정제 테이블 쌍의 cb 성분에 대해 정제 테이블이 코딩되는지를 나타낸다. refinement_table_flag_cb[idx]가 0인 경우, refinement_table_flag_cr[idx]는 1일 것이다.
refinement_table_cb_size[idx]는 식별자 값 idx의 정제 테이블 쌍의 cb 정제 테이블의 크기를 나타낸다.
refinement_cb_idx[idx][i]는 식별자 값 idx의 정제 테이블 쌍의 cb 정제 테이블의 i번째 요소의 인덱스(제1 좌표)를 나타낸다.
refinement_cb_value[idx][i]는 식별자 값 idx의 정제 테이블 쌍의 cb 정제 테이블의 i번째 요소의 값(제2 좌표)을 나타낸다.
refinement_table_flag_cr[idx]는 식별자 값 idx의 정제 테이블 쌍의 cr 성분에 대해 정제 테이블이 코딩되는지를 나타낸다. refinement_table_flag_cr[idx]가 0인 경우, refinement_table_flag_cb[idx]는 1일 것이다.
refinement_table_cr_size[idx]는 식별자 값 idx의 정제 테이블 쌍의 cr 정제 테이블의 크기를 나타낸다.
refinement_cr_idx[idx][i]는 식별자 값 idx의 정제 테이블 쌍의 cr 정제 테이블의 i번째 요소의 인덱스(제1 좌표)를 나타낸다.
refinement_cr_value[idx][i]는 식별자 값 idx의 정제 테이블 쌍의 cr 정제 테이블의 i번째 요소의 값(제2 좌표)을 나타낸다.
블록(또는 CU, 또는 CTU) 레벨에서, 현재 블록에 적용될 cb, cr 정제 테이블들의 쌍들의 식별자에 대응하는 블록 기반 식별자 tables_id가 시그널링된다. 블록 정제 정보를 디코딩하기 위한 신택스의 예가 도 8에 도시되며, 도 8은 테이블 쌍 식별자를 이용하는 블록 레벨 신택스의 예를 도시한다. 도 8에서:
신택스 요소 refinement_activation_flag는 현재 블록이 정제를 이용하는지 여부를 나타낸다.
현재 블록이 정제를 이용하고 있는 경우(refinement_activation_flag가 1과 동일), 신택스 요소 tables_id가 디코딩된다. 그리고 현재 블록은 식별자 tables_id에 대응하는 정제 테이블들을 이용하여 정제된다:
· i = 0 내지 (refinement_table_cb_size[tables_id] - 1)에 대해
o refinement_cb_idx[tables_id][i]
o refinement_cb_value[tables_id][i]
· i = 0 내지 (refinement_table_cr_size[tables_id] - 1)에 대해
o refinement_cr_idx[tables_id][i]
o refinement_cr_value[tables_id][i]
현재 블록에 대한 정제 정보를 도출하기 위한 실시예를 도시하는 대응하는 블록도가 도 9에 도시된다. 도 9에서, 601에서, 신택스 요소 refinement_activation_flag가 디코딩된다. 602에서, refinement_activation_flag는 0인 것으로 체크된다. refinement_activation_flag가 0인 경우, 정제가 적용되지 않는다(603). refinement_activation_flag가 0이 아닌 경우, tables_id가 604에서 디코딩된다. 605에서, 식별자 tables_id에 의해 표시된 테이블 쌍을 이용하여 정제가 적용된다.
실시예에서, 신택스 요소 refinement_activation_flag는 코딩되지 않지만 tables_id의 특정한 값은 블록이 정제되지 않음을 나타낸다. 예를 들어, 0인 tables_id는 현재 블록이 정제를 이용하지 않는다는 것을 나타낸다. 테스트 "refinement_activation_flag == 0 ?"는 "tables_id== 0 ?"에 의해 대체된다.
다른 실시예에서, 일 양태는 이웃(neighboring) 정제 정보에 대해 상대적으로 코딩하는 것을 포함한다. 예를 들어, 블록 기반 표시자는, 현재 블록에 대한 정제 정보가 이웃 블록들로부터 복사되는지를 나타내는 신택스 요소들로 이루어진다. 정제 정보는 적어도 아래의 것으로 이루어진다.
- 블록이 정제를 이용했는지 여부를 나타내는 파라미터(여기서는 refinedBlock으로 명명되고, 또한 refinement_activation_flag로 명명된 신택스 요소에 대응함),
- refinedBlock이 블록이 정제됨을 나타내는 경우, 정제 테이블들은 블록의 샘플들을 정제하는데 이용된다.
블록 정제 정보를 디코딩하기 위한 신택스의 예가 도 10에 도시되어 있으며, 여기서:
tables_from_left_flag는 정제 정보가 현재 블록의 좌측 블록으로부터 복사되는지를 나타낸다.
tables_from_up_flag는 정제 정보가 현재 블록의 상부 블록으로부터 복사되는지를 나타낸다.
refinement_activation_flag는 현재 블록에 대해 정제가 활성화되는지를 나타낸다.
현재 블록에 대한 정제 정보를 도출하기 위한 대응하는 블록도가 도 11에 제공된다. 도 11에서, (501)에서 신택스 요소 tables_from_left_flag가 디코딩된다. 502에서, tables_from_left_flag는 0인 것으로 체크된다. tables_from_left_flag가 0이 아닌 경우, 현재 블록에 대한 정제 정보는 현재 블록의 좌측 블록으로부터 복사된다(504). 그렇지 않은 경우, 503에서 신택스 요소 tables_from_up_flag가 디코딩된다. 505에서, tables_from_up_flag는 0인 것으로 체크된다. tables_from_up_flag가 0이 아닌 경우, 현재 블록에 대한 정제 정보가 현재 블록의 위(up) 블록으로부터 복사된다(507). 그렇지 않은 경우, 506에서 신택스 요소 refinement_activation_flag가 디코딩된다. 현재 블록에 대한 refinedBlock은 refinement_activation_flag로 설정된다. 508에서, refinement_activation_flag는 0인 것으로 체크된다. refinement_activation_flag가 1인 경우, 정제 테이블들이 디코딩된다(510). 그렇지 않은 경우, 어떠한 특정 프로세스도 적용되지 않는다(510). 511에서, 정제가 적용된다. 이 단계에서, refinedBlock이 0인 경우, 블록은 정제 프로세스에 의해 처리되지 않는다. refinedBlock이 1인 경우, 블록은 현재 블록에 대해 도출된 정제 테이블들을 이용하여 정제된다.
실시예에서, refinement_activation_flag는 명시적으로 코딩되거나 디코딩되지 않지만, 암시적으로 맥락적으로 추론된다. 예를 들어, 맥락은 SAO 루프 필터링 프로세스에 관련된다. 이러한 실시예에서, refinement_activation_flag는 SAO 파라미터들로부터 추론된다. 일 실시예에서, SAO가 블록에 대해 디스에이블되는 경우, refinement_activation_flag는 0으로 설정된다. SAO가 블록에 대해 인에이블되는 경우, refinement_activation_flag는 1로 설정된다. 다른 실시예에서, SAO 대역 오프셋이 블록에 대해 디스에이블되는 경우, refinement_activation_flag는 0으로 설정된다. SAO 대역 오프셋이 블록에 대하여 인에이블되는 경우, refinement_activation_flag는 1로 설정된다. 유사한 규칙이 에지 오프셋(Edge Offset)과 같은 다른 SAO 타입들에 대해 적용될 수 있다.
실시예에서, 정제 프로세스는 SAO와 같은 다른 루프 필터 프로세스와 공동으로 적용된다.
일반적으로, 실시예는 중복 중립 값들(redundant neutral values)을 회피함으로써 테이블 코딩 비용을 감소시키는 것을 포함할 수 있다. 실시예에서, 크로마 정제 테이블들은 동일한 크기를 갖고(Ncb = Ncr = N), 동일한 인덱스들을 공유하는 것이 고려된다:
Rcb_idx[pt] = Rcr_idx[pt] (pt = 0 내지 (N - 1))
대부분의 경우들에서, 하나의 성분(예를 들어, cb)에 대한 정제 파라미터가 중립 값 neutralVal과 동일할 때, 다른 크로마 성분에 대한 대응하는 정제 파라미터는 종종 중립 값에 가깝다는 것이 관찰된다.
이것은 VTM 코덱을 이용하여 37의 QP로 코딩된 SDR 콘텐츠 BasketballDrive_1920x1080의 제1 픽처의 처리로부터 획득된 아래의 예에 예시된다. neutralValue는 64와 동일하고, 정제 값이 64에 가까운 경우들은 굵은 폰트로 표시된다.
cb 64, 32, 44, 63, 65, 65, 64, 64, 65, 64, 63, 56, 54, 54, 56, 37, 64,
cr 64, 35, 60, 64, 65, 64, 64, 64, 65, 64, 61, 57, 51, 45, 49, 46, 64,
따라서, 실시예에서, 제1 크로마 성분의 정제 파라미터들의 대응하는 정제 파라미터 값에 기초하여 제2 크로마 성분의 정제 파라미터들의 코딩을 컨디셔닝(conditioning)함으로써 정제 파라미터들의 비용이 감소될 수 있다. 이것은 인코더 측에 대응하는 상부 블록도 및 디코더 측에 대응하는 하부 블록도 둘다를 포함하는 도 12에 도시되어 있다.
인코더에서, 입력 값들은 제1 크로마 성분(예를 들어, cb 성분)의 정제 파라미터, Rp_c1, 및 제2 크로마 성분의 대응하는 정제 파라미터 Rp_c2(즉, 정제 파라미터 테이블에서 동일한 상대 인덱스에 대해 명시됨)이다. 제1 단계는 제1 크로마 성분의 정제 파라미터 Rp_c1의 인코딩을 수행한다(단계 701). 제2 단계는 Rp_c1의 값에 관련된 조건을 체크한다(단계 702). 조건이 거짓인 경우, 제2 크로마 성분의 대응하는 정제 파라미터 Rp_c2의 값이 인코딩된다(단계 704). 조건이 참인 경우, Rp_c2의 값이 추론된다(단계 703).
디코더에서, 제1 단계는 제1 크로마 성분의 정제 파라미터 Rp_c1의 디코딩을 수행한다(단계 711). 제2 단계는 Rp_c1의 값에 관련된 조건을 체크하는 것을 포함한다(단계 712). 조건이 거짓인 경우, 제2 크로마 성분의 대응하는 정제 파라미터 Rp_c2의 값이 디코딩된다(단계 714). 조건이 참인 경우, Rp_c2의 값이 추론된다(단계 713).
실시예에서, 테스트된 조건은 제1 크로마 성분의 정제 파라미터의 값이 neutralValue과 동일한지를 체크하는 것을 포함할 수 있다:
Rp_c1 == neutralValue ?
다른 실시예에서, 테스트된 조건은 제1 크로마 성분의 정제 파라미터의 값이 (neutralValue - thresh1)보다 크거나 동일한지, 또는 (neutralValue - thresh2)보다 작거나 동일한지를 체크하는 것을 포함할 수 있고, 여기서, thresh1 및 thresh2는 미리 정의된 값들(전형적으로 1)이다:
Rp_c1 >= (neutralValue-thresh1) 및 Rp_c1 <= (neutralValue+thresh2) ?
실시예에서, Rp_c2의 추론된 값은 neutralValue이다.
실시예에서, Rp_c2의 추론된 값은 Rp_c1이다.
실시예에서, Rp_c2의 추론된 값은 (neutralValue - Rp_c1)이다.
수정된 신택스의 예가 도 13에 도시되며, 아래의 조건을 갖는다.
Rp_c1 (테이블에서의 refinement_cb_value[i]) == neutralValue ?
Rp_c2 (테이블에서의 refinement_cr_value[i])는 이 조건이 참일 때 neutralValue으로 추론된다. 그렇지 않은 경우, 이 요소는 명시적으로 시그널링된다.
일반적으로, 실시예는 정제 테이블들의 크기의 제어를 포함할 수 있다. 예를 들어, 실시예에서, 정제 테이블들의 코딩 비용을 감소시키기 위해, 다음 중 적어도 하나가 포함될 수 있다:
· cb 및 cr에 대한 테이블 크기는 동일하며, 여기서는 N으로 명명된 디폴트로 고정 및 정의된다.
· 테이블들 Rcb_idx[pt] 및 Rcr_idx[pt]의 인덱스들은 등거리 포인트들(equi-distant points)에 대응한다.
· 정제 테이블 당 요소들의 제한된 미리 정의된 수 Nref가 코딩된다. 이 경우, 테이블 요소들이 코딩되는 제1 테이블 포인트 pt_init의 표시가 주어진다. 따라서, 코딩된 정제 값들은 다음과 같다.
o Rcb_idx[pt_init] 내지 Rcb_idx[pt_init + Nref-1]
o Rcr_idx[pt_init] 내지 Rcr_idx[pt_init + Nref-1]
다른 (코딩되지 않은) 값들은 중립 값(neutralVal)으로 설정된다.
o Rcr_idx[pt] = neutralVal 및 Rcb_idx[pt] = neutralVal (pt = 0 내지 (pt_init - 1) 및 (pt_init + Nref)로부터 (N - 1)까지)
실시예에서, 정제 테이블 당 값들 Nref의 수는 4와 동일하다.
실시예에서, 인코더는, 예를 들어, 아래에 열거되고 도 14에 도시된 대응하는 블록도에 도시된 동작들에 기초하여, 블록 기반 정제 활성화를 결정하고, 본 명세서에 설명된 하나 이상의 실시예에 따라 하나 이상의 정제 테이블을 도출할 수 있다. 일 구현에서, 열거된 동작들은 반복적으로 발생할 수 있다.
1. 맵 blkTablesId[blkId](blkId = 0 내지 (Nblk - 1), Nblk는 슬라이스의 블록들의 수임)가 -1로 초기화된다(단계 802).
2. 테이블 식별자 tablesId에 대한 파라미터가 0으로 초기화된다(단계 803).
3. 식별자 tablesId에 대한 정제 테이블들이, blkTablesId[blkId] = -1인 블록들 blkId에서의 샘플들로부터 도출된다(단계 804).
a. 결과들은 cb 및 cr 테이블들이다:
Figure pct00002
b. 설명된 계산을 수행하기 위한 실시예에 대해 이하를 참조한다.
4. blkTablesId[blkId] = -1인 각각의 블록 blkId에 대해, 크로마 레이트 왜곡 비용은, 정제 없이(RD_without[blkId]), 그리고 단계 3에서 계산된 테이블들을 이용한 정제로(RD_with[blkId]) 계산된다(단계 805).
a. 크로마 레이트 왜곡 비용은 다음과 같이 계산된다:
distortion(cb) + distortion(cr) +
L*cost(refinement_table_cb) + L*cost(refinement_table_cr) +
L * cost(activation map)
여기서 L은 레이트 왜곡 비용 도출에서 잘 알려진 "람다(lambda)" 파라미터이다.
5. blkTablesId[blkId] = -1인 모든 블록들 blkId에 대해, 블록 기반 정제 활성화는 다음과 같이 업데이트된다(단계 806):
a. (RD_with[blkId] < RD_without[blkId])인 경우 blkTablesId[blkId] = tablesId
6. blkTablesId[blkId] = -1과 같은 블록들 blkId가 여전히 존재하는 경우, 그리고 tablesId < MaxNbTables인 경우(단계 807),
a. tablesId를 1만큼 증분시키고, 단계 3으로 간다.
b. 그렇지 않은 경우 중지(단계 809).
MaxNbTables는 정제 테이블들의 인에이블된 쌍들의 최대 수를 명시하는 미리 정의된 파라미터이다(단계 808).
위의 양태 3b와 관련하여, 실시예에서, 정제 메타데이터는 이하에서 설명되는 바와 같이 도출될 수 있다. 정제 메타데이터는 컬러 성분(예를 들어, 루마 성분 Y, 또는 크로마 성분들 Cb / Cr)의 각각의 개별 샘플에 적용되는 R()로 표기되는 정정 함수(correcting function)를 나타낸다. 정제 메타데이터의 일 양태는 재구성된 픽처와 원래 픽처 사이에서 레이트 왜곡 비용을 최소화하는 것이다. 최소화는 주어진 영역 A, 예를 들어, 전체 픽처, 슬라이스, 타일 또는 CTU에 걸쳐 수행될 수 있다. 정제 메타데이터는 R로 표기된다. 바람직한 구현에서, N개의 커플들(R_idx[k], R_val[k])(k = 0 내지 N-1)에 의해 정의된 R에 대해 구간 선형 모델이 이용된다.
프로세스는 중립 값들에 의한 정제 메타데이터 R의 초기화로 시작한다(단계 300). 중립 값들은 정제가 신호를 변경하지 않도록 한다. 이것은 아래에서 더 설명될 것이다. 초기 레이트 왜곡 비용 initRD는 R을 이용하여 계산된다. 함수 R을 이용한 레이트 왜곡 비용 도출이 아래에 설명될 것이다. 파라미터 bestRD는 initRD로 초기화된다. 정제 메타데이터 R 최적화의 단계는 이후 다음의 단계들로 이루어진다. PWL 모델 R의 연속적인 피봇 포인트들의 인덱스 pt에 대한 루프가 수행된다. 파라미터들 bestVal 및 initVal은 R_val[pt]로 초기화된다. R_val[pt]의 다양한 값들에 대한 루프가 수행된다. 루프는 값(initVal-val0)으로부터 값(initVal+Val1)까지 달성되고, 여기서 Val0 및 Val1은 미리 정의된 파라미터들이다. 전형적인 값들이 아래에 주어진다. 레이트 왜곡 비용 curRD는 (수정된 R_val[pt]를 갖는) 수정된 R을 이용하여 계산된다. curRD와 bestRD가 비교된다. curRD가 bestRD보다 낮다면, bestRD는 curRD로 설정되고, bestValue는 R_val[pt]로 설정된다. 다음, R_val[pt]의 값들에 대해 루프의 끝에 대한 체크가 행해진다. 루프가 완료되면, R_val[pt]는 bestValue로 설정된다. 다음, pt의 값들에 대한 루프의 체크가 존재한다. 루프가 종료될 때, R은 최적화 프로세스로부터의 결과적인 메타데이터이다. 정제 메타데이터 최적화의 단계는 여러 번 반복될 수 있다.
다음, 정제 프로세스의 실시예는 다음의 표기법들을 이용하여 설명된다:
- B는 신호의 비트 심도(예를 들어, 10 비트)이다.
- MaxVal은 (2B-1)로서 계산된 신호의 최대 값이다.
- Sin(p)는 픽처에서의 위치 p에서의 원래 (입력) 신호이다.
- Sout(p)는 픽처에서의 위치 p에서의 정제에 기인하는 신호이다.
- Srec(p)는 정제될 신호이다. 이는 제1 변형에 대한 역 맵핑으로부터 오는 신호, 또는 제2 변형에 대한 인루프 필터들로부터 오는 신호에 대응한다.
- NeutralVal은 미리 정의된 값에 대응하고; 정제 값이 NeutralVal과 동일할 때, 정제는 신호를 수정하지 않고; NeutralVal에 대한 전형적인 값은 128이다.
정제 메타데이터 R로부터, 룩업 테이블 LutR이 다음과 같이 구축될 수 있다.
Figure pct00003
일반적으로, 정제 모드들의 적어도 2개의 예들이 정의된다. 이러한 예들은 본 명세서에서 "모드 1" 또는 "인트라 성분 정제 모드" 및 "모드 2" 또는 "인터 성분 정제 모드"라고 지칭될 것이다.
· 모드 1 또는 인트라 성분 정제 모드에서, 정제는 다른 성분들과 독립적으로 수행된다. 바람직하게, 이 모드는 루마 성분에 적용되고, 다음의 수학식에 기초한다:
o Sout(p) = LutR[Srec(p)] / NeutralVal * Srec(p)
· 모드 2 또는 인터 성분 정제 모드에서, 하나의 성분에 대해, 다른 성분에 따라 정제가 수행된다. 바람직하게, 이 모드는 루마 성분(아래에서 Srec_Y(p)라고 표기됨)에 의존적인 크로마 성분들에 적용된다. Srec_Y(p)는 제1 변형에서 인루프 필터 단계로부터, 또는 역 맵핑으로부터 기인하는 신호일 수 있다는 것에 유의해야 한다. 그것은 또한 다른(Y) 성분의 필터링된 버전일 수 있다. 프로세스는 다음의 수학식에 기초한다:
o Sout(p) = offset + LutR[Srec_Y(p)] / NeutralVal * (Srec(p) - offset)
여기서, offset은 일반적으로 (MaxVal/2)로 설정되고, p는 픽처에서의 동일한 상대 위치에 대응한다.
최소 및 최대 신호 값들(전형적으로 10비트 신호에 대해 0 및 1023) 사이의 라운딩(rounding) 및 클리핑(clipping)은 최종적으로 정제된 값 Sout(p)에 적용된다. 여기서, 정제는 승산 연산자 모드(multiplicative operator mode)로서 적용된다. 가산 정제 연산자(additive refinement operator)가 또한 정제를 위해 이용될 수 있다. 이 경우, 모드 1은 다음과 같이 적용된다:
o Sout(p) = LutR[Srec(p)] / NeutralVal + Srec(p)
그리고 모드 2는 다음과 같이 적용된다.
o Sout(p) = LutR[Srec_Y(p)] / NeutralVal + Srec(p)
크로마 성분들에 대해 승산 연산자 모드를 갖는 정제 모드 2가 바람직하다.
다음, 실시예에서, 정제 메타데이터 R의 레이트 왜곡 비용은 다음과 같이 결정될 수 있고, 여기서 다음의 표기법들이 이용된다:
- A는 정제가 수행되는 픽처 영역이고; 정제는, 예를 들어, 전체 픽처, 슬라이스, 타일, CTU에 걸쳐 수행될 수 있다.
- Dist(x,y)는 샘플 값 x와 샘플 값 y 사이의 왜곡이다. 전형적으로, 왜곡은 제곱 오차 (x-y)2이다.
- Cost(R)은 정제 메타데이터 R을 코딩하기 위한 코딩 비용이다.
- L은 영역과 연관된 람다 계수(lambda factor)이다. 그것은 전형적으로 2(QP/6)에 선형적으로 의존하고, 여기서 QP는 양자화 파라미터를 나타내며 영역에 적용된다.
정제 메타데이터 R을 이용하는 레이트 왜곡 비용 RDcost는 다음과 같이 정의된다:
Figure pct00004
R은 원래 신호 Sin(p)와 정제된 신호 Sout(p) 사이의 총 레이트 왜곡 비용이 최소화되도록 구축된다.
일반적으로, 실시예는 코딩 이득, 즉, 동일한 비트레이트에 대한 품질의 증가, 또는 동일한 품질에 대한 비트레이트의 감소를 제공한다. 블록 기반 활성화를 이용한 정제의 이득은 아래의 표들에 도시되어 있다. 아래에 도시된 비제한적인 예에서, 성분 당 하나의 표만이 허용된다(K, 또는 동등하게 refinement_number_of_tables는 1이다).
성능은 5 HDR HD 10비트 콘텐츠, 5 SDR HD 8비트 콘텐츠 및 2 SDR HD 10비트 콘텐츠에 대해 도시된다. 이용된 코덱은 QTBT(quadtree plus binary tree block partitioning structure)가 활성화된 VTM(Versatile Video Coding(VVC) Test Model)이다. 모든 시퀀스들은 10비트 내부 비트 심도로 코딩된다. 아래의 표들은 랜덤 액세스 구성에서 17 프레임들의 시퀀스들에 대한 코딩 결과들을 나타낸다. neutraVal은 64로 설정되고, 테이블 크기는 17로 설정된다. 정제 메타데이터 코딩은 시간 레벨 0에 대해서만 적용된다.
아래의 5개의 표들은 다음과 같이 BD-레이트 이득을 보여준다: 모든 블록들에 대해 정제("전체 슬라이스 정제")를 적용할 때의 표 1, 크기 128x128("blk128 정제"), 64x64("blk64 정제") 및 32x32("blk32 정제")의 블록들 당 정제의 활성화를 가능하게 할 때의 표 2 내지 표 4, 및 각각의 콘텐츠에 대해 최상의 구성을 선택할 때의 표 5. 결과들은 블록 기반 정제 활성화를 이용하는 것의 이점 또는 개선을 나타낸다.
Figure pct00005
Figure pct00006
Figure pct00007
Figure pct00008
Figure pct00009
본 문서는 실시예들, 특징들, 모델들, 접근법들 등의 다양한 예들을 설명한다. 많은 그러한 예들은 특이성으로 설명도고, 적어도 개별 특성들을 보여주기 위해, 제한하는 것으로 나타날 수 있는 방식으로 종종 설명된다. 그러나, 이것은 설명의 명료성을 위한 것이고, 그 적용 또는 범위를 제한하지 않는다. 실제로, 본 명세서에 설명된 실시예들, 특징들 등의 다양한 예들은 실시예들의 추가 예들을 제공하기 위해 다양한 방식들로 결합되고 교환될 수 있다.
일반적으로, 본 문서에서 설명되고 구상되는 실시예들의 예들은 많은 상이한 형태들로 구현될 수 있다. 위에서 설명된 도 1 및 도 2와, 아래에 설명된 도 15는 일부 실시예들을 제공하지만, 다른 실시예들이 구상되고, 도 1, 도 2 및 도 15의 논의는 구현들의 범위를 제한하지 않는다. 적어도 하나의 실시예는 일반적으로 비디오 인코딩 및/또는 디코딩에 관한 예를 제공하고, 적어도 하나의 다른 실시예는 일반적으로 생성되거나 인코딩된 비트스트림 또는 신호를 송신하는 것에 관한 것이다. 이들 및 다른 실시예들은 방법, 장치, 설명된 방법들 중 임의의 것에 따라 비디오 데이터를 인코딩 또는 디코딩하기 위한 명령어들을 저장하는 컴퓨터 판독가능 저장 매체, 및/또는 설명된 방법들 중 임의의 것에 따라 생성된 비트스트림 또는 신호를 저장하는 컴퓨터 판독가능 저장 매체로서 구현될 수 있다.
본 출원에서, "재구성된" 및 "디코딩된"이라는 용어들은 상호교환적으로 이용될 수 있고, "픽셀" 및 "샘플"이라는 용어들은 상호교환적으로 이용될 수 있고, "이미지", "픽처" 및 "프레임"이라는 용어들은 상호교환적으로 이용될 수 있다. 필수적은 아니지만 통상적으로, 용어 "재구성된"은 인코더 측에서 이용되는 한편, "디코딩된"은 디코더 측에서 이용된다.
HDR(high dynamic range) 및 SDR(standard dynamic range)이라는 용어들이 본 개시내용에서 이용된다. 이들 용어들은 종종 동적 범위의 특정 값들을 본 기술분야의 통상의 기술자에게 전달한다. 그러나, HDR에 대한 참조가 "더 높은 동적 범위"를 의미하는 것으로 이해되고, SDR에 대한 참조가 "더 낮은 동적 범위"를 의미하는 것으로 이해되는 추가적인 실시예들이 또한 의도된다. 그러한 추가적인 실시예들은 종종 용어들 "높은 동적 범위" 및 "표준 동적 범위"와 연관될 수 있는 동적 범위의 임의의 특정 값들에 의해 제약되지 않는다.
다양한 방법들이 본 명세서에서 설명되며, 방법들 각각은 설명된 방법을 달성하기 위한 하나 이상의 단계 또는 동작을 포함한다. 방법의 적절한 동작을 위해 단계들 또는 동작들의 특정 순서가 요구되지 않는 한, 특정 단계들 및/또는 동작들의 순서 및/또는 이용은 수정되거나 결합될 수 있다.
본 문서에서 설명된 다양한 방법들 및 다른 양태들은 도 1 및 도 2에 도시된 바와 같이 비디오 인코더(100) 및 디코더(200)의 모듈들, 예를 들어, 인트라 예측, 엔트로피 코딩, 및/또는 디코딩 모듈들(160, 360, 145, 330)을 수정하는데 이용될 수 있다. 더욱이, 현재의 양태들은 VVC 또는 HEVC로 제한되지 않고, 예를 들어, 미리 존재하든 또는 장래에 개발되든 간에, 다른 표준들 및 권고들과, (VVC 및 HEVC를 포함한) 임의의 그러한 표준들 및 권고들의 확장들에 적용될 수 있다. 달리 지시되거나, 또는 기술적으로 배제되지 않는 한, 본 문서에서 설명된 양태들은 개별적으로 또는 조합하여 이용될 수 있다.
예를 들어, 본 문서에서 다양한 수치 값들이 이용된다. 특정 값들은 예시의 목적들을 위한 것이고, 설명된 양태들은 이들 특정 값들로 제한되지 않는다.
도 15는 다양한 양태들 및 실시예들이 구현될 수 있는 시스템의 예의 블록도를 도시한다. 시스템(1000)은 아래에서 설명된 다양한 컴포넌트들을 포함하는 디바이스로서 구현될 수 있고, 본 문서에서 설명된 양태들 중 하나 이상을 수행하도록 구성된다. 그러한 디바이스들의 예들은, 제한적인 것은 아니지만, 개인용 컴퓨터들, 랩탑 컴퓨터들, 스마트폰들, 태블릿 컴퓨터들, 디지털 멀티미디어 셋톱 박스들, 디지털 텔레비전 수신기들, 개인 비디오 기록 시스템들, 접속된 가전 기기들, 및 서버들과 같은 다양한 전자 디바이스들을 포함한다. 시스템(1000)의 요소들은, 단독으로 또는 조합하여, 단일 집적 회로, 다수의 IC들, 및/또는 개별 컴포넌트들로 구현될 수 있다. 예를 들어, 적어도 하나의 실시예에서, 시스템(1000)의 처리 및 인코더/디코더 요소들은 다수의 IC들 및/또는 개별 컴포넌트들에 걸쳐 분포된다. 다양한 실시예들에서, 시스템(1000)은, 예를 들어, 통신 버스를 통해 또는 전용 입력 및/또는 출력 포트들을 통해 다른 유사한 시스템들, 또는 다른 전자 디바이스들에 통신가능하게 결합된다. 다양한 실시예들에서, 시스템(1000)은 본 문서에서 설명된 양태들 중 하나 이상을 구현하도록 구성된다.
시스템(1000)은, 예를 들어, 본 문서에 설명된 다양한 양태들을 구현하기 위해, 그것에 로딩된 명령어들을 실행하도록 구성된 적어도 하나의 프로세서(1010)를 포함한다. 프로세서(1010)는 내장된 메모리, 입력 출력 인터페이스, 및 본 기술분야에 알려진 바와 같은 다양한 다른 회로들을 포함할 수 있다. 시스템(1000)은 적어도 하나의 메모리(1020)(예를 들어, 휘발성 메모리 디바이스 및/또는 비휘발성 메모리 디바이스)를 포함한다. 시스템(1000)은, 제한적인 것은 아니지만, EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래시, 자기 디스크 드라이브, 및/또는 광학 디스크 드라이브를 포함하는, 비휘발성 메모리 및/또는 휘발성 메모리를 포함할 수 있는 저장 디바이스(1040)를 포함한다. 저장 디바이스(1040)는, 비제한적인 예들로서, 내부 저장 디바이스, 부착된 저장 디바이스, 및/또는 네트워크 액세스가능 저장 디바이스를 포함할 수 있다.
시스템(1000)은, 예를 들어, 인코딩된 비디오 또는 디코딩된 비디오를 제공하기 위해 데이터를 처리하도록 구성된 인코더/디코더 모듈(1030)을 포함하고, 인코더/디코더 모듈(1030)은 그 자신의 프로세서 및 메모리를 포함할 수 있다. 인코더/디코더 모듈(1030)은 인코딩 및/또는 디코딩 기능들을 수행하도록 디바이스에 포함될 수 있는 모듈(들)을 나타낸다. 알려진 바와 같이, 디바이스는 인코딩 및 디코딩 모듈들 중 하나 또는 둘다를 포함할 수 있다. 추가적으로, 인코더/디코더 모듈(1030)은 시스템(1000)의 별도 요소로서 구현될 수 있거나, 또는 본 기술분야의 통상의 기술자에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(1010) 내에 통합될 수 있다.
본 문서에 설명된 다양한 양태들을 수행하기 위해 프로세서(1010) 또는 인코더/디코더(1030) 상에 로딩될 프로그램 코드는 저장 디바이스(1040)에 저장될 수 있고, 후속하여 프로세서(1010)에 의한 실행을 위해 메모리(1020) 상에 로딩될 수 있다. 다양한 실시예들에 따르면, 프로세서(1010), 메모리(1020), 저장 디바이스(1040) 및 인코더/디코더 모듈(1030) 중 하나 이상은 본 문서에 설명된 프로세스들의 수행 동안 다양한 항목들 중 하나 이상을 저장할 수 있다. 그러한 저장된 항목들은, 제한적인 것은 아니지만, 입력 비디오, 디코딩된 비디오 또는 디코딩된 비디오의 부분들, 비트스트림 또는 신호, 행렬들, 변수들, 및 수학식들, 공식들, 연산들 및 연산 로직의 처리로부터의 중간 또는 최종 결과들을 포함할 수 있다.
몇몇 실시예들에서, 프로세서(1010) 및/또는 인코더/디코더 모듈(1030) 내부의 메모리는 명령어들을 저장하고, 인코딩 또는 디코딩 동안 필요한 처리를 위한 작업 메모리를 제공하기 위해 이용된다. 그러나, 다른 실시예들에서, 처리 디바이스(예를 들어, 처리 디바이스는 프로세서(1010) 또는 인코더/디코더 모듈(1030) 중 하나일 수 있음) 외부의 메모리가 이러한 기능들 중 하나 이상을 위해 이용된다. 외부 메모리는 메모리(1020) 및/또는 저장 디바이스(1040), 예를 들어, 동적 휘발성 메모리 및/또는 비휘발성 플래시 메모리일 수 있다. 몇몇 실시예들에서, 외부 비휘발성 플래시 메모리는 텔레비전의 운영 체제를 저장하기 위해 이용된다. 적어도 일 실시예에서, RAM과 같은 고속 외부 동적 휘발성 메모리는 MPEG-2, HEVC, 또는 VVC(Versatile Video Coding)와 같은 비디오 코딩 및 디코딩 동작들을 위한 작업 메모리로서 이용된다.
시스템(1000)의 요소들에의 입력은 블록(1130)에 나타낸 바와 같이 다양한 입력 디바이스들을 통해 제공될 수 있다. 그러한 입력 디바이스들은, 제한적인 것은 아니지만, (i) 예를 들어, 브로드캐스터(broadcaster)에 의해 공기를 통해(over the air) 송신된 RF 신호를 수신하는 RF 부분, (ii) 복합 입력 단자, (iii) USB 입력 단자, 및/또는 (iv) HDMI 입력 단자를 포함한다.
다양한 실시예들에서, 블록(1130)의 입력 디바이스들은 본 기술분야에 알려진 바와 같은 연관된 각각의 입력 처리 요소들을 갖는다. 예를 들어, RF 부분은 (i) 원하는 주파수를 선택하는 것(또한 신호를 선택하는 것, 또는 주파수들의 대역으로 신호를 대역 제한하는 것으로 지칭됨), (ii) 선택된 신호를 하향 변환하는 것, (iii) 주파수들의 더 좁은 대역으로 다시 대역 제한하여 특정 실시예들에서 채널로 지칭될 수 있는 (예를 들어) 신호 주파수 대역을 선택하는 것, (iv) 하향 변환된 및 대역 제한된 신호를 복조하는 것, (v) 오류 정정(error correction)을 수행하는 것, 및 (vi) 원하는 데이터 패킷들의 스트림을 선택하기 위해 역다중화하는 것을 위한 요소들과 연관될 수 있다. 다양한 실시예들의 RF 부분은 이러한 기능들을 수행하기 위한 하나 이상의 요소, 예를 들어, 주파수 선택기들, 신호 선택기들, 대역 제한기들, 채널 선택기들, 필터들, 하향 변환기들, 복조기들, 오류 정정기들, 및 역다중화기들을 포함한다. RF 부분은, 예를 들어, 수신된 신호를 더 낮은 주파수(예를 들어, 중간 주파수 또는 근 기저대역(near-baseband) 주파수)로 또는 기저대역으로 하향 변환하는 것을 포함하여, 다양한 이러한 기능들을 수행하는 튜너를 포함할 수 있다. 하나의 셋톱 박스 실시예에서, RF 부분 및 그것의 연관된 입력 처리 요소는 유선(예를 들어, 케이블) 매체를 통해 송신된 RF 신호를 수신하고, 필터링, 하향 변환, 및 원하는 주파수 대역으로의 다시 필터링에 의해 주파수 선택을 수행한다. 다양한 실시예들은 전술한(및 다른) 요소들의 순서를 재배열하고, 이 요소들 중 일부를 제거하고/하거나 유사하거나 상이한 기능들을 수행하는 다른 요소들을 추가한다. 요소들을 추가하는 것은 기존 요소들 사이에 요소들을 삽입하는 것, 예를 들어, 증폭기들 및 아날로그-대-디지털 변환기를 삽입하는 것을 포함할 수 있다. 다양한 실시예들에서, RF 부분은 안테나를 포함한다.
추가적으로, USB 및/또는 HDMI 단자들은 USB 및/또는 HDMI 접속들을 통해 다른 전자 디바이스들에 시스템(1000)을 접속하기 위한 각각의 인터페이스 프로세서들을 포함할 수 있다. 입력 처리의 다양한 양태들, 예를 들어, 리드-솔로몬(Reed-Solomon) 오류 정정이, 예를 들어, 별도의 입력 처리 IC 내에서 또는 프로세서(1010) 내에서 구현될 수 있다는 것을 이해해야 한다. 유사하게, USB 또는 HDMI 인터페이스 처리의 양태들은 별도의 인터페이스 IC들 내에서 또는 프로세서(1010) 내에서 구현될 수 있다. 복조된, 오류 정정된, 및 역다중화된 스트림은, 예를 들어, 출력 디바이스 상의 제시를 위해 데이터스트림을 처리하기 위해 메모리 및 저장 요소들과 조합하여 동작하는 인코더/디코더(1030) 및 프로세서(1010)를 포함하는 다양한 처리 요소들에 제공된다.
시스템(1000)의 다양한 요소들은 통합된 하우징 내에 제공될 수 있고, 통합된 하우징 내에서, 다양한 요소들은 적절한 접속 배열(1140), 예를 들어, I2C 버스, 배선, 및 인쇄 회로 보드들을 포함하는 본 기술분야에 알려진 바와 같은 내부 버스를 이용하여 상호접속되고 그들 사이에 데이터를 송신할 수 있다.
시스템(1000)은 통신 채널(1060)을 통해 다른 디바이스들과의 통신을 가능하게 하는 통신 인터페이스(1050)를 포함한다. 통신 인터페이스(1050)는, 제한적인 것은 아니지만, 통신 채널(1060)을 통해 데이터를 송신 및 수신하도록 구성된 송수신기를 포함할 수 있다. 통신 인터페이스(1050)는, 제한적인 것은 아니지만, 모뎀 또는 네트워크 카드를 포함할 수 있고, 통신 채널(1060)은, 예를 들어, 유선 및/또는 무선 매체 내에서 구현될 수 있다.
데이터는, 다양한 실시예들에서, IEEE 802.11과 같은 Wi-Fi 네트워크를 이용하여 시스템(1000)에 스트리밍된다. 이러한 실시예들의 Wi-Fi 신호는 Wi-Fi 통신들을 위해 적응되는 통신 인터페이스(1050) 및 통신 채널(1060)을 통해 수신된다. 이러한 실시예들의 통신 채널(1060)은 스트리밍 애플리케이션들 및 다른 OTT(over-the-top) 통신들을 허용하기 위한 인터넷을 포함하는 외부 네트워크들에 대한 액세스를 제공하는 액세스 포인트 또는 라우터에 전형적으로 접속된다. 다른 실시예들은 입력 블록(1130)의 HDMI 접속을 통해 데이터를 전달하는 셋톱 박스를 이용하여 스트리밍된 데이터를 시스템(1000)에 제공한다. 또 다른 실시예들은 입력 블록(1130)의 RF 접속을 이용하여 스트리밍된 데이터를 시스템(1000)에 제공한다.
시스템(1000)은 디스플레이(1100), 스피커들(1110), 및 다른 주변 디바이스들(1120)을 포함하는 다양한 출력 디바이스들에 출력 신호를 제공할 수 있다. 다른 주변 디바이스들(1120)은, 실시예들의 다양한 예들에서, 독립형 DVR, 디스크 플레이어, 스테레오 시스템, 조명 시스템, 및 시스템(1000)의 출력에 기초한 기능을 제공하는 다른 디바이스들 중 하나 이상을 포함한다. 다양한 실시예들에서, 제어 신호들은 AV.Link, CEC, 또는 사용자 개입을 갖거나 또는 갖지 않고 디바이스-대-디바이스 제어를 가능하게 하는 다른 통신 프로토콜들과 같은 시그널링을 이용하여 시스템(1000)과 디스플레이(1100), 스피커들(1110), 또는 다른 주변 디바이스들(1120) 사이에서 통신된다. 출력 디바이스들은 각각의 인터페이스들(1070, 1080, 및 1090)을 통한 전용 접속들을 통해 시스템(1000)에 통신가능하게 결합될 수 있다. 대안적으로, 출력 디바이스들은 통신 인터페이스(1050)를 통해 통신 채널(1060)을 이용하여 시스템(1000)에 접속될 수 있다. 디스플레이(1100) 및 스피커들(1110)은, 예를 들어, 텔레비전과 같은 전자 디바이스에서 시스템(1000)의 다른 컴포넌트들과 함께 단일 유닛에 통합될 수 있다. 다양한 실시예들에서, 디스플레이 인터페이스(1070)는, 예를 들어, 타이밍 제어기(timing controller)(T Con) 칩과 같은 디스플레이 드라이버를 포함한다.
디스플레이(1100) 및 스피커(1110)는 대안적으로, 예를 들어, 입력(1130)의 RF 부분이 별도의 셋톱 박스의 일부인 경우, 다른 컴포넌트들 중 하나 이상으로부터 분리될 수 있다. 디스플레이(1100) 및 스피커들(1110)이 외부 컴포넌트들인 다양한 실시예들에서, 출력 신호는, 예를 들어, HDMI 포트들, USB 포트들, 또는 COMP 출력들을 포함하는 전용 출력 접속들을 통해 제공될 수 있다.
실시예들은 프로세서(1010)에 의해 또는 하드웨어에 의해 구현된 컴퓨터 소프트웨어에 의해, 또는 하드웨어 및 소프트웨어의 조합에 의해 수행될 수 있다. 비제한적인 예로서, 실시예들은 하나 이상의 집적 회로에 의해 구현될 수 있다. 메모리(1020)는 기술적 환경에 적절한 임의의 타입일 수 있고, 비제한적 예들로서, 광학 메모리 디바이스들, 자기 메모리 디바이스들, 반도체 기반 메모리 디바이스들, 고정 메모리, 및 이동식 메모리와 같은 임의의 적절한 데이터 저장 기술을 이용하여 구현될 수 있다. 프로세서(1010)는 기술적 환경에 적절한 임의의 타입일 수 있고, 비제한적 예들로서, 마이크로프로세서들, 범용 컴퓨터들, 특수 목적 컴퓨터들, 및 멀티 코어 아키텍처에 기초한 프로세서들 중 하나 이상을 포함할 수 있다.
이하에서는, 본 명세서에 설명된 하나 이상의 양태를 구현하기에 적합한 실시예들의 다양한 다른 예들을 일반적으로 도시하는 도 16 내지 도 30을 설명한다.
도 16은 특정한 비제한적 실시예에 따른, 비트스트림에서 픽처를 인코딩하도록 구성된 송신기(1000)의 예시적인 아키텍처를 도시한다.
송신기(1000)는 내부 메모리(1030)(예를 들어, RAM, ROM 및/또는 EPROM)와 함께, 예를 들어, CPU, GPU 및/또는 DSP(Digital Signal Processor의 영문 두문자어)를 포함할 수 있는 하나 이상의 프로세서(들)(1005)를 포함한다. 송신기(1000)는 하나 이상의 통신 인터페이스(들)(1010)(예를 들어, 키보드, 마우스, 터치패드, 웹캠)―이들 각각은 출력 정보를 디스플레이하고/하거나 사용자가 커맨드들 및/또는 데이터를 입력하도록 할 수 있게 적응됨―; 및 송신기(1000)의 외부에 있을 수 있는 전원(1020)을 포함한다. 송신기(1000)는 또한 하나 이상의 네트워크 인터페이스(들)(도시되지 않음)를 포함할 수 있다. 인코더 모듈(1040)은 코딩 기능들을 수행하기 위해 디바이스에 포함될 수 있는 모듈을 나타낸다. 또한, 인코더 모듈(1040)은 송신기(1000)의 분리된 요소로서 구현될 수 있거나, 본 기술분야의 통상의 기술자에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(들)(1005) 내에 통합될 수 있다.
픽처는 소스로부터 획득될 수 있다. 상이한 실시예들에 따르면, 소스는 다음과 같을 수 있지만, 이들로 제한되지는 않는다:
- 로컬 메모리, 예를 들어, 비디오 메모리, RAM, 플래시 메모리, 하드 디스크;
- 저장 인터페이스, 예를 들어, 대용량 저장소, ROM, 광학 디스크 또는 자성 지지체(magnetic support)를 갖는 인터페이스;
- 통신 인터페이스, 예를 들어, 유선 인터페이스(예를 들어, 버스 인터페이스(bus interface), 광역 네트워크 인터페이스(wide area network interface), 근거리 네트워크 인터페이스(local area network interface)) 또는 (IEEE 802.11 인터페이스 또는 블루투스 인터페이스와 같은) 무선 인터페이스; 및
- 픽처 캡처링 회로(picture capturing circuit)(예를 들어, CCD(Charge-Coupled Device) 또는 CMOS(Complementary Metal-Oxide-Semiconductor)와 같은 센서).
다른 실시예들에 따르면, 비트스트림이 목적지(destination)로 전송될 수 있다. 예로서, 비트스트림은 원격 또는 로컬 메모리, 예를 들어, 비디오 메모리 또는 RAM, 하드 디스크에 저장된다. 변형에서, 비트스트림은 저장 인터페이스, 예를 들어, 대용량 저장소, ROM, 플래시 메모리, 광학 디스크 또는 자성 지지체를 갖는 인터페이스에 전송되고/되거나 통신 인터페이스, 예를 들어, 지점간 링크(point to point link), 통신 버스, 지점 대 다지점 링크(point to multipoint link) 또는 브로드캐스트 네트워크(broadcast network)에 대한 인터페이스를 통해 송신된다.
실시예들의 하나 이상의 비제한적 예에 따르면, 송신기(1000)는 메모리(1030)에 저장된 컴퓨터 프로그램을 더 포함한다. 컴퓨터 프로그램은, 송신기(1000)에 의해, 특히 프로세서(1005)에 의해 실행될 때, 송신기(1000)가 도 20을 참조하여 설명되는 인코딩 방법을 실행할 수 있게 하는 명령어들을 포함한다. 변형에 따르면, 컴퓨터 프로그램은 송신기(1000)의 외부에서 비일시적 디지털 데이터 지지체 상에, 예를 들어, 본 기술분야에서 모두 알려져 있는 HDD, CD-ROM, DVD, 판독 전용 및/또는 DVD 드라이브 및/또는 DVD 판독/기입 드라이브와 같은 외부 저장 매체 상에 저장된다. 따라서, 송신기(1000)는 컴퓨터 프로그램을 판독하기 위한 메커니즘을 포함한다. 또한, 송신기(1000)는 대응하는 USB(Universal Serial Bus) 포트들(도시되지 않음)을 통해 하나 이상의 USB 타입 저장 디바이스들(예를 들어, "메모리 스틱들")에 액세스할 수 있다.
실시예들의 하나 이상의 비제한적 예들에 따르면, 송신기(1000)는 다음과 같을 수 있지만, 이들로 제한되지는 않는다:
- 모바일 디바이스;
- 통신 디바이스;
- 게임 디바이스;
- 태블릿(또는 태블릿 컴퓨터);
- 랩탑;
- 스틸 픽처 카메라(still picture camera)
- 비디오 카메라;
- 인코딩 칩 또는 인코딩 디바이스/장치;
- 스틸 픽처 서버; 및
- 비디오 서버(예를 들어, 브로드캐스트 서버, 주문형 비디오 서버(video-on-demand server) 또는 웹 서버).
도 17은 도 20의 인코딩 방법을 실행하도록 적응된 비디오 인코더(100), 예를 들어, HEVC 타입의 인코더의 예를 도시한다. 인코더(100)는 송신기(1000) 또는 그러한 송신기(1000)의 일부의 예이다.
코딩을 위해, 픽처는 통상적으로 기본 코딩 유닛들, 예를 들어, HEVC에서의 코딩 트리 유닛들(CTU)로, 또는 H.264에서의 매크로블록 유닛들로 분할된다. 가능하게는 연속적인 기본 코딩 유닛들의 세트는 슬라이스로 그룹화된다. 기본 코딩 유닛은 모든 컬러 성분들의 기본 코딩 블록들을 포함한다. HEVC에서, 최소 코딩 트리 블록(CTB) 크기 16x16은 이전의 비디오 코딩 표준들에서 이용되는 바와 같은 매크로블록 크기에 대응한다. CTU 및 CTB라는 용어들은, 본 명세서에서 인코딩/디코딩 방법들 및 인코딩/디코딩 장치를 설명하기 위해 이용되지만, 이러한 방법들 및 장치는, H.264와 같은 다른 표준들에서 상이하게 (예를 들어, 매크로블록으로) 지칭될 수 있는 이러한 특정 용어들에 의해 제한되지 않아야 한다는 점이 이해될 것이다.
HEVC 코딩에서, 픽처는 구성가능한 크기, 즉, 전형적으로 64x64, 128x128 또는 256x256을 갖는 정사각형 형상의 CTU들로 분할된다. CTU는 동일한 크기, 즉, 폭 및 높이에 있어서 부모 블록(parent block) 크기의 절반인 4개의 정사각형 코딩 유닛들(Coding Units)(CU)로의 쿼드 트리 분할(quad-tree partitioning)의 루트(root)이다. 쿼드 트리는 부모 노드가 4개의 자식 노드들로 분할될 수 있는 트리이고, 자식 노드들 각각은 4개의 자식 노드들로 분할된 다른 것에 대한 부모 노드가 될 수 있다. HEVC에서, 코딩 블록(Coding Block)(CB)은 하나 이상의 예측 블록(Prediction Block)(PB)으로 분할되고, 변환 블록(Transform Block)(TB)들로의 쿼드 트리 분할의 루트를 형성한다. 코딩 블록, 예측 블록 및 변환 블록에 대응하여, 코딩 유닛(CU)은 예측 유닛(Prediction Unit)(PU)들 및 변환 유닛(TU)들의 트리 구조 세트를 포함하고, PU는 모든 컬러 성분들에 대한 예측 정보를 포함하며, TU는 각각의 컬러 성분에 대한 잔차 코딩 신택스 구조(residual coding syntax structure)를 포함한다. 루마 성분의 CB, PB 및 TB의 크기는 대응하는 CU, PU 및 TU에 적용된다.
보다 최근의 인코딩 시스템들에서, CTU는 코딩 유닛(Coding Unit)(CU)들으로의 코딩 트리 분할의 루트이다. 코딩 트리는 (통상적으로 CU에 대응하는) 부모 노드가 자식 노드들(예를 들어, 2개, 3개 또는 4개의 자식 노드들)로 분할될 수 있는 트리이며, 자식 노드들 각각은 자식 노드들로 분할된 다른 것에 대한 부모 노드가 될 수 있다. 쿼드 트리 분할 모드(quad-tree split mode)에 부가하여, 가능한 분할 모드들의 총 수를 증가시키는 새로운 분할 모드들(2진 트리 대칭 분할 모드들(binary tree symmetric split modes), 2진 트리 비대칭 분할 모드들 및 3중 트리 분할 모드들(triple tree split modes))이 또한 정의된다. 코딩 트리는 고유한 루트 노드, 예를 들어, CTU를 갖는다. 코딩 트리의 리프(leaf)는 트리의 종단 노드(terminating node)이다. 코딩 트리의 각각의 노드는, 서브(sub)-CU들 또는 보다 일반적으로 서브-블록들(sub-blocks)이라고도 지칭되는, 더 작은 CU들로 더 분할될 수 있는 CU를 나타낸다. CTU의 CU들로의 분할이 결정되면, 코딩 트리의 리프들에 대응하는 CU들이 인코딩된다. CTU의 CU들로의 분할 및 (코딩 트리의 리프에 대응하는) 각각의 CU를 인코딩하기 위해 이용되는 코딩 파라미터들이 레이트 왜곡 최적화 절차(rate distortion optimization procedure)를 통해 인코더 측에서 결정될 수 있다. CB의 PB들 및 TB들로의 분할이 없으며, 즉, CU는 단일 PU 및 단일 TU로 만들어진다.
이하에서, "블록" 또는 "픽처 블록"이라는 용어는 CTU, CU, PU, TU, CB, PB 및 TB 중 임의의 하나를 지칭하는데 이용될 수 있다. 또한, "블록" 또는 "픽처 블록"은 H.264/AVC 또는 다른 비디오 코딩 표준들에 명시된 바와 같이 매크로블록, 파티션(partition) 및 서브블록을 지칭하기 위해, 그리고 보다 일반적으로는, 다양한 크기들의 샘플들의 어레이를 지칭하기 위해 이용될 수 있다.
도 17로 되돌아가면, 인코더(100)의 실시예의 예에서, 픽처는 아래에서 설명되는 바와 같이 인코더 요소들에 의해 인코딩된다. 인코딩될 픽처는 CU들의 유닛들에서 처리된다. 각각의 CU는 인트라 또는 인터 모드를 이용하여 인코딩된다. CU가 인트라 모드에서 인코딩되는 경우, 그것은 인트라 예측(160)을 수행한다. 인터 모드에서, 움직임 추정(motion estimation)(175) 및 보상(170)이 수행된다. 인코더는, CU를 인코딩하기 위해 인트라 모드 또는 인터 모드 중 어느 것을 이용할지를 결정(105)하고, 예측 모드 플래그에 의해 인트라/인터 결정을 표시한다. 잔차들은, 원래 픽처 블록으로부터 (예측자(predictor)라고도 알려진) 예측된 샘플 블록을 감산(110)함으로써 계산된다.
인트라 모드에서의 CU들은, 예를 들어, 동일한 슬라이스 내의 재구성된 이웃 샘플들로부터 예측된다. 35개의 인트라 예측 모드들의 세트가 DC, 평면 및 33개의 각도 예측 모드들을 포함하는 HEVC에서 이용가능하다. 인터 모드에서의 CU들은 참조 픽처 버퍼(reference picture buffer)(180)에 저장된 참조 픽처의 재구성된 샘플들로부터 예측된다.
잔차들은 변환(125) 및 양자화(130)된다. 양자화된 변환 계수들 뿐만 아니라 움직임 벡터들(motion vectors) 및 다른 신택스 요소들은, 비트스트림을 출력하도록 엔트로피 코딩(145)된다. 인코더는 또한 변환을 스킵하거나, 또는 변환 및 양자화 둘다를 우회할 수 있는데, 즉, 잔차는 변환 또는 양자화 프로세스들의 적용 없이 직접 코딩된다.
엔트로피 코딩은, 예를 들어, CABAC(Context Adaptive Binary Arithmetic Coding), CAVLC(Context Adaptive Variable Length Coding), 허프만(Huffman), 산술(arithmetic), 지수 골롬(exp-Golomb) 등일 수 있다. CABAC는 H.264에서 먼저 도입되고, 또한 HEVC에서 이용되는 엔트로피 코딩의 방법이다. CABAC는 이진화(binarization), 콘텍스트 모델링(context modeling) 및 이진 산술 코딩(binary arithmetic coding)을 포함한다. 이진화는 신택스 요소들을 이진 심볼들(빈들(bins))에 맵핑한다. 콘텍스트 모델링은 일부 특정 콘텍스트에 기초하여 각각의 규칙적으로 코딩된 빈(즉, 논바이패스됨(non-bypassed))의 확률을 결정한다. 마지막으로, 이진 산술 코딩은 결정된 확률에 따라 빈들을 비트들로 압축한다.
인코더는 디코딩 루프를 포함하므로, 추가 예측들을 위한 참조(reference)를 제공하기 위해 인코딩된 블록을 디코딩한다. 잔차들을 디코딩하기 위해, 양자화된 변환 계수들은 역 양자화(140) 및 역 변환(150)된다. 픽처 블록은, 디코딩된 잔차들과 예측된 샘플 블록을 결합(155)함으로써 재구성된다. 선택적으로, 인루프 필터(들)(165)가 재구성된 픽처에 적용되어, 예를 들어, 코딩 아티팩트들을 감소시키기 위해 DBF(DeBlocking Filter)/SAO(Sample Adaptive Offset)/ALF(Adaptive Loop Filtering)를 수행한다. 필터링된 픽처는 참조 픽처 버퍼(180)에 저장되고, 다른 픽처들에 대한 참조로서 이용될 수 있다. 본 실시예에서, 필터링된 재구성된 픽처, 즉, 인루프 필터(들)의 출력, 및 그의 원래 버전으로부터 정제 데이터가 결정(190)된다. 제1 변형에서, 정제 데이터가 인루프 필터링 이전의 재구성된 픽처 및 그의 원래 버전으로부터 결정(190)된다. 이러한 제1 변형에서, 정제는 인루프 필터링 이전에 적용된다. 제2 변형에서, 정제 데이터가, 예를 들어, 디블록킹 필터링 이후에 그러나 SAO 이전에 부분적으로 필터링된 재구성된 픽처 및 그의 원래 버전으로부터 결정(190)된다. 이러한 제2 변형에서, 정제가 이후에, 예를 들어, 부분 필터링 직후에, 예를 들어, 디블록킹 필터링 이후이지만 SAO 이전에 적용된다. 정제 데이터는 컬러 성분(예를 들어, 루마 성분 Y, 또는 크로마 성분들 Cb/Cr, 또는 컬러 성분들 R, G, 또는 B)의 개별 샘플(들)에 적용되는, R()로 표기되는 정정 함수(correcting function)를 나타낸다. 그 후, 정제 데이터는 비트스트림에서 엔트로피 코딩된다. 이러한 실시예에서, 정제 프로세스는 디코딩 루프 밖에 있다. 따라서, 정제 프로세스는 후처리로서 디코더에서만 적용된다.
도 18은 도 17의 비디오 인코더(100)의 변형(101)을 도시한다. 도 17의 모듈들과 동일한 도 18의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 비디오 인코더(101)에 의해 인코딩되기 전에, 픽처가 맵핑(105)될 수 있다. 그러한 맵핑은 픽처들의 샘플 코드워드 값 분포를 더 잘 활용하기 위해 이용될 수 있다. 일반적으로, 맵핑은 도 18에 도시된 바와 같이 코어 인코딩 이전에 원래 (입력) 샘플들에 적용된다. 통상적으로, 정적 맵핑 함수들, 즉, 모든 콘텐츠에 대한 동일한 함수들이 복잡성을 제한하기 위해 이용된다. 가능하게는 1D 룩업 테이블(look-up-table) LUTmap[x](x는 소정의 값임)에 의해 모델링되는 맵핑 함수 fmap()은 다음과 같이 입력 신호 x에 직접 적용된다:
y = fmap(x) 또는
y = LUTmap[x]
여기서, x는 (예를 들어, 10비트 신호에 대해 0부터 1023까지의) 입력 신호이고, y는 맵핑된 신호이다.
변형에서, 하나의 성분에 대한 맵핑 함수는 다른 성분에 의존한다(교차 성분 맵핑 함수(cross-component mapping function)). 예를 들어, 크로마 성분 c는 픽처에서 동일한 상대적 위치에 위치된 루마 성분 y에 따라 맵핑된다. 크로마 성분 c는 다음과 같이 맵핑된다:
c = offset + fmap(y) * (c - offset) 또는
c = offset + LUTmap[y] * (c-offset)
여기서, offset은 통상적으로 크로마 신호의 중심 값이다(예를 들어, 10비트 크로마 신호에 대한 512). 이 파라미터는 또한 스트림에서 코딩된 동적 파라미터일 수 있으며, 이는 개선된 압축 이득들을 초래할 수 있다.
맵핑 함수들은 디폴트로 정의되거나, 예를 들어, 구간 선형 모델들(piece-wise linear models), 스케일링 테이블들(scaling tables), 또는 델타(delta) QP(dQP) 테이블들을 이용하여 비트스트림에서 시그널링될 수 있다.
필터링된 재구성된 픽처, 즉, 인루프 필터(들)의 출력은 역 맵핑(185)된다. 역 맵핑(185)은 맵핑(105)의 역 프로세스의 구현이다. 역 맵핑 후의 필터링된 재구성된 픽처 및 그의 원래 버전으로부터 정제 데이터가 결정(190)된다. 그 후, 정제 데이터는 비트스트림에서 엔트로피 코딩된다. 이러한 실시예에서, 정제 프로세스는 디코딩 루프 밖에 있다. 따라서, 정제 프로세스는 후처리로서 디코더에서만 적용된다.
도 19는 도 17의 비디오 인코더(100)의 변형(102)을 도시한다. 도 17의 모듈들과 동일한 도 19의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 맵핑 모듈(105)은 선택적이다. 정제 데이터가, 필터링된 재구성된 픽처, 즉, 인루프 필터(들)의 출력, 및 맵핑이 적용되지 않은 경우의 그의 원래 버전으로부터, 또는 맵핑이 적용되는 경우의 그의 맵핑된 원래 버전으로부터 결정(190)된다. 그 후, 정제 데이터는 비트스트림에서 엔트로피 코딩(145)된다. 필터링된 재구성된 픽처는 또한 정제 데이터를 이용하여 정제(182)된다. 정제된 픽처는 필터링된 재구성된 픽처 대신에 참조 픽처 버퍼(180)에 저장된다. 이러한 실시예에서, 정제 프로세스는 인루프 프로세스, 즉, 그것은 디코딩 루프의 일부이다. 따라서, 정제 프로세스는 인코더 및 디코더의 디코딩 루프 둘다에 적용된다. 모듈들(182 및 190)은 다른 위치들에 삽입될 수 있다. 정제의 모듈(182)은 인루프 필터(들) 이전에 또는 적어도 2개의 인루프 필터들인 경우에는 인루프 필터(들) 사이에, 예를 들어, DBF 이후 및 SAO 이전에 삽입될 수 있다. 모듈(190)은 입력으로서 정제 모듈(182)과 동일한 픽처, 즉, 모듈(182)이 인루프 필터들 이전에 있는 경우에는 재구성된 픽처, 모듈(182)이 인루프 필터들 사이에 있는 경우에는 부분적으로 필터링된 재구성된 픽처를 취하도록 배치된다.
도 20은 특정한 비제한적 실시예에 따른, 비트스트림에서 픽처 부분을 인코딩하기 위한 방법의 흐름도를 도시한다. 방법은 단계(S100)에서 시작한다. 단계(S110)에서, 예를 들어, 인코더(100, 101 또는 102)와 같은 송신기(1000)가 픽처 부분에 액세스한다. 인코딩되기 전에, 액세스된 픽처 부분은 선택적으로 도 18 및 도 19에서와 같이 맵핑될 수 있다. 단계(S120)에서, 송신기는 재구성된 픽처 부분을 획득하기 위해, 액세스된 픽처 부분을 인코딩 및 재구성한다. 이러한 목적을 위해, 픽처 부분은 블록들로 분할될 수 있다. 픽처 부분을 인코딩하는 것은 픽처 부분의 블록들을 인코딩하는 것을 포함한다. 블록을 인코딩하는 것은 통상적으로, 잔차들의 블록을 획득하기 위해 블록으로부터 예측자를 감산하는 것, 잔차들의 블록을 변환 계수들의 블록으로 변환하는 것, 변환 계수들의 양자화된 블록을 획득하기 위해 양자화 단계 크기로 계수들의 블록을 양자화하는 것, 및 비트스트림에서 변환 계수들의 양자화된 블록을 엔트로피 코딩하는 것을 포함하지만 반드시 그럴 필요는 없다. 인코더 측에서 블록을 재구성하는 것은 통상적으로 변환 계수들의 양자화된 블록을 역 양자화 및 역 변환하여, 잔차들의 블록을 획득하는 것, 및 예측자를 잔차들의 블록에 가산하여 디코딩된 블록을 획득하는 것을 포함하지만, 반드시 그럴 필요는 없다. 그 후, 재구성된 픽처 부분은 인루프 필터들(들), 예를 들어, 도 17 내지 도 19에서와 같은 디블록킹/SAO/ALF 필터들에 의해 필터링될 수 있고, 또한 도 18에서와 같이 역 맵핑될 수 있다.
단계(S130)에서, 정제 데이터는, 예를 들어, 모듈(190)에 의해, 데이터 코딩 비용(즉, 정제 데이터 및 정제된 픽처 부분의 코딩 비용) 및 가능하게는 도 19에서와 같이 맵핑된 픽처 부분, 즉, 액세스된 이미지 부분의 원래 버전과 가능하게는 도 17 및 도 19에서와 같이 필터링되거나 또는 도 18에서와 같이 역 맵핑되고 정제된 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용이 감소되거나 최소화되도록 결정된다. 보다 정확하게는, 정제 데이터는,
- 맵핑이 없는 도 17 및 도 19에서와 같이 코딩 이전에 맵핑이 적용되지 않는 경우에, 데이터 코딩 비용(즉, 정제 데이터 및 정제된 픽처 부분의 코딩 비용) 및 상기의 픽처 부분의 원래 버전과 상기의 정제 데이터에 의한 정제 이후의 상기의 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용이, 데이터 코딩 비용(즉, 정제가 없는 픽처 부분의 코딩 비용) 및 상기의 픽처 부분의 상기의 원래 버전과 정제가 없는 상기의 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용과 비교하여 감소되고;
- (맵핑을 갖고 루프 정제 밖에 있는) 도 18에서와 같이 코딩 이전에 맵핑이 적용되고, 상기의 정제가 디코딩 루프 밖에 있는 경우에, 데이터 코딩 비용(정제 데이터 및 정제된 픽처 부분의 코딩 비용) 및 상기의 픽처 부분의 원래 버전과 역 맵핑 및 상기의 정제 데이터에 의한 정제 이후의 상기의 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용이, 데이터 코딩 비용 및 상기의 픽처 부분의 상기의 원래 버전과 역 맵핑 이후의 정제가 없는 상기의 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용과 비교하여 감소되고;
- 맵핑을 갖는 도 19에서와 같이 코딩 이전에 맵핑이 적용되고, 상기의 정제가 디코딩 루프에 있는 경우에, 데이터 코딩 비용 및 상기의 픽처 부분의 맵핑된 원래 버전과 상기의 정제 데이터에 의한 정제 이후의 상기의 재구성된 픽처 부분 사이의 가중된 합으로서 계산된 레이트 왜곡 비용이, 데이터 코딩 비용 및 상기의 픽처 부분의 상기의 맵핑된 원래 버전과 정제가 없는 상기의 재구성된 픽처 부분 사이의 왜곡의 가중된 합으로서 계산된 레이트 왜곡 비용과 비교하여 감소되도록 결정된다.
정제 데이터를 결정하는데 이용된 재구성된 픽처 부분은 재구성된 픽처 부분의 인루프 필터링된 버전 또는 인루프 부분적 필터링된 버전일 수 있다.
특정한 비제한적 실시예에서, R이라고 지칭되는 정제 데이터는 유리하게는 N개의 커플들 (R_idx[k], R_val[k])(여기서, k = 0 내지 N-1)에 의해 정의되는 구간 선형 모델(PWL)에 의해 모델링된다. 각각의 커플은 PWL 모델의 피봇 포인트를 정의한다. 단계(S130)는 도 21 내지 도 26에서 상세히 설명된다. R_idx[k]는 전형적으로, 고려된 신호의 범위, 예를 들어, 10비트 신호에 대해 범위 0 내지 1023에서의 값이다. 유리하게, R_idx[k]는 R_idx[k-1]보다 크다.
단계(S140)에서, 정제 데이터는 비트스트림 또는 신호에서 인코딩된다. 다음은 신택스의 실시예의 비제한적인 예를 제공한다. 이는 3개의 성분들이 정제되는 것을 고려한다. 변형들에서, 성분들 중 일부만을 위한(예를 들어, 2개의 크로마 성분들만을 위한) 신택스가 코딩 및 적용될 수 있다. 정제 데이터는 정제 테이블의 형태로 인코딩된다.
Figure pct00010
refinement_table_new_flag가 0이거나, refinement_table_flag_luma가 0인 경우, 루마에 대해 정제가 적용되지 않는다.
그렇지 않은 경우, 0부터 (refinement_table_luma_size-1)까지의 모든 pt에 대해, 루마 정제 값들(R_idx[pt], R_val[pt])은 다음과 같이 계산된다:
· R_idx[pt]는 (default_idx[pt] + refinement_luma_idx[pt])와 동일하게 설정된다.
· R_val[pt]는 (NeutralVal + refinement_luma_value[pt])와 동일하게 설정된다.
유사한 프로세스가 cb 또는 cr 성분에 대해 적용된다.
예를 들어, NeutralVal = 128이다. 이것은 도 21 및 24에서 상세히 설명된 바와 같이 단계(S130)에서 값들 R_val을 초기화하는데 이용될 수 있다. NeutralVal 및 default_idx[pt]는 인코더 측 및 디코더 측 둘다에 알려진 디폴트 값들일 수 있으며, 이 경우에 이들은 송신될 필요가 없다. 변형에서, NeutralVal 및 default_idx[pt]는 비트스트림 또는 신호에서 인코딩된 값들일 수 있다.
바람직하게, 0부터 (refinement_table_luma_size-1)까지의 pt에 대한 default_idx[pt]는 다음과 같이 정의된다:
default_idx[pt] = (MaxVal / (refinement_table_luma_size-1)) * pt
또는
default_idx[pt] = ((MaxVal+ 1) / (refinement_table_luma_size-1)) * pt
이는 0부터 MaxVal 또는 (Max+1)까지의 등거리 인덱스들(equi-distant indexes)에 대응하고, MaxVal은 신호의 최대값이다(예를 들어, 신호가 10비트로 표현될 때 1023).
변형에서, 맵핑이 적용되고, 커플들 (map_idx[k], map_val[k])에 의해 정의된 PWL 맵핑 테이블에 기초하는 경우, R_idx[k](여기서, k = 0 내지 N-1)가 map_idx[k]에 의해 초기화된다. 즉, default_idx[k]는 map_idx[k]와 동일하다. 유사하게, R_val[k](여기서, k = 0 내지 N-1)는 map_val[k](여기서, k = 0 내지 N-1)에 의해 초기화된 다른 변형에 있을 수 있다.
신택스 요소들 refinement_table_luma_size, refinement_table_cb_size, refinement_table_cr_size는 디폴트로 정의될 수 있고, 이 경우 이들은 스트림에서 코딩될 필요가 없다.
루마 PWL 모델의 등거리 포인트들의 경우, refinement_luma_idx[pt]는 코딩될 필요가 없다. refinement_luma_idx[pt]는 0으로 설정되어, 0부터 (refinement_table_luma_size-1)까지의 pt에 대해 R_idx[pt] = default_idx[pt]가 된다. 동일한 것이 cb 또는 cr 테이블들에 적용된다.
변형에서, (인트라 성분(모드 1) 및 또는 인터 성분(모드 2) 사이에서) 어느 정제 모드가 이용되는지를 표시하기 위해 테이블마다 신택스 요소가 추가될 수 있다. 신택스 요소는 SPS, PPS, 슬라이스, 타일 또는 CTU 레벨에서 시그널링될 수 있다.
변형에서, 테이블이 승산 연산자(multiplicative operator)로서 또는 가산 연산자(additive operator)로서 적용되는지를 나타내기 위해 테이블마다 신택스 요소가 추가될 수 있다. 신택스 요소는 SPS, PPS, 슬라이스, 타일 또는 CTU 레벨에서 시그널링될 수 있다.
실시예에서, 정제 테이블들은 비트스트림 또는 신호에서 코딩되지 않는다. 대신에, (도 18 및 도 19 상에서의 맵핑(105)에 의해 이용되는 맵핑 테이블들의 역에 대응하는) 디폴트 역 맵핑 테이블들이 정제 테이블들에 의해 수정되고, 수정된 역 맵핑 테이블들이 비트스트림 또는 신호에서 코딩된다.
실시예에서, 정제 테이블들은 낮은 시간 레벨들의 픽처들에 대해서만 코딩된다. 예를 들어, 테이블들은 시간 레벨 0(시간적 코딩 계층구조에서의 최저 레벨)의 픽처들에 대해서만 코딩된다.
실시예에서, 정제 테이블들은 인트라 픽처들과 같은 랜덤 액세스 픽처들에 대해서만 코딩된다.
실시예에서, 정제 테이블들은 주어진 값 아래의 픽처에 대한 평균 QP에 대응하는 고품질의 픽처들에 대해서만 코딩된다.
실시예에서, 정제 테이블은 전체 픽처 코딩 비용에 대한 정제 테이블 코딩 비용이 주어진 값 아래인 경우에만 코딩된다.
실시예에서, 정제 테이블은 정제 테이블을 코딩하지 않는 것과 비교하여 레이트 왜곡 이득이 주어진 값 초과인 경우에만 코딩된다. 예를 들어, 다음의 규칙들이 적용될 수 있다:
· 레이트 왜곡 비용 이득이 (0.01 * 폭 * 높이)보다 큰 경우―여기서, 폭 및 높이는 고려된 성분의 치수들임―, 테이블이 코딩된다.
· 레이트 왜곡 비용 이득이 (0.0025 * initRD)보다 큰 경우―여기서, initRD는 성분의 정제가 적용되지 않을 때의 레이트 왜곡 비용임―, 테이블이 코딩된다. 이것은 레이트 왜곡 비용이 제곱 오차 왜곡(square error distortion)에 기초할 때 0.01dB의 최소 PSNR 이득에 대략적으로 대응한다. 주어진 값이 (0.01 * initRD)로 설정되면, 이것은 레이트 왜곡 비용이 제곱 오차 왜곡에 기초할 때 0.05dB의 최소 PSNR 이득에 대략적으로 대응한다. 설명된 값들은 단지 예들일 뿐이며, 수정될 수 있다.
도 20으로 되돌아가면, 선택적 단계(S150)에서, 정제 데이터는 도 19에서와 같이 가능하게는 필터링된 재구성된 픽처 부분에 적용된다.
이러한 목적을 위해, PWL (R_idx[pt], R_val[pt])(여기서, pt = 0 내지 N-1)의 포인트들의 커플들로부터 룩업 테이블 LutR이 결정된다.
예를 들어, LutR은 다음과 같이, PWL (R_idx[pt], R_val[pt]) 및 (R_idx[pt+1], R_val[pt+1])의 포인트들의 각각의 커플 사이의 선형 보간에 의해 결정된다:
Figure pct00011
변형에서, LutR은 다음과 같이 결정된다:
Figure pct00012
정제 모드들의 2개의 예들은 다음과 같다:
· 모드 1 - 인트라 성분 정제. 모드 1에서, 정제는 다른 성분들과 독립적으로 수행된다. 신호 Srec(p)는 다음과 같이 정제된다:
Sout(p) = LutR[Srec(p)] / NeutralVal * Srec(p)
여기서, Srec(p)는 픽처 부분에서의 위치 p에서 정제될 재구성된 신호이고, 인루프 필터(들)로부터 오거나 또는 가능하게는 역 맵핑으로부터 오는 신호에 대응하고, Sout(p)는 정제된 신호이다. 여기서, 신호들 Srec 및 Sout은 동일한 비트 심도(bit depth)를 이용하는 것으로 고려된다. 양 신호들에 대한 상이한 비트 심도들(즉, Sout에 대한 Bout 및 Srec에 대한 Brec)을 이용할 때, 비트 심도 차이에 관련된 스케일링 계수(scaling factor)가 적용될 수 있다.
예를 들어, 공식은 Sout의 비트 심도 Bout이 Srec의 비트 심도 Brec보다 더 높을 때 다음과 같이 적응된다:
Sout(p) = 2(Bout-Brec) * LutR[Srec(p)] / NeutralVal * Srec(p)
스케일링 계수는 LutR 값들에 직접 통합될 수 있다. 예를 들어, 공식은 Sout의 비트 심도 Bout이 Srec의 비트 심도 Brec보다 낮을 때 다음과 같이 적응된다:
Sout(p) = LutR[Srec(p)] / NeutralVal * Srec(p) / 2(Brec-Bout)
스케일링 계수는 LutR 값들에 직접 통합될 수 있다.
유리하게, 모드 1은 루마 성분에 대해 이용된다.
· 모드 2 - 인터 성분 정제. 모드 2에서, 정제는 하나의 성분 C0에 대해 수행되고, 다른 성분 C1에 의존한다. 신호 Srec_C0(p)는 다음과 같이 정제된다:
Sout(p) = offset + LutR[Srec_C1(p)] / NeutralVal * (Srec_C0(p) - offset)
여기서, offset은, 예를 들어, (MaxVal/2)로 설정되고, Srec_C0(p)는 정제될 성분 C0의 재구성된 신호이고, p는 픽처 부분에서의 샘플 위치이다. MaxVal은 신호 Srec_C0의 최대값이고 (2B-1)로서 계산되며, 여기서 B는 신호의 비트 심도이다. Srec_C1(p)는 성분 C1의 재구성된 신호이다. Srec_C1(p)는 인루프 필터들로부터, 또는 역 맵핑으로부터 오는 신호일 수 있다. Srec_C1(p)는 또한 인루프 필터(들)에 의해 필터링된 후에, 예를 들어, 저역 통과 필터로 더 필터링될 수 있다. 여기서, 신호들 Srec_C0, Srec_C1 및 Sout은 동일한 비트 심도를 이용하는 것으로 고려된다. 유리하게, 모드 2는 크로마 성분에 적용될 수 있고, 루마 성분에 의존한다. 공식은 Sout의 비트 심도 Bout이 Srec_C0 및 Srec_C1의 비트 심도 Brec보다 더 높을 때 다음과 같이 적응된다:
Sout(p) = 2(Bout-Brec) * (offset + LutR[Srec_C1(p)] / NeutralVal * (Srec_C0(p) - offset))
공식은 Sout의 비트 심도 Bout이 Srec_C0 및 Srec_C1의 비트 심도 Brec보다 더 낮을 때 다음과 같이 적응된다:
Sout(p) = (offset + LutR[Srec_C1(p)] / NeutralVal * (Srec_C0(p) - offset)) / 2(Bout-Brec)
최소 및 최대 신호 값들(전형적으로 10비트 신호에 대해 0 및 1023) 사이의 라운딩 및 클리핑은 최종적으로 정제된 값들 Sout(p)에 적용된다.
상기의 실시예에서, 정제는 승산 연산자로서 적용된다.
변형에서, 정제는 가산 연산자로서 적용된다. 이 경우, 모드 1에서, 신호 Srec(p)는 다음과 같이 정제된다:
o Sout(p) = LutR[Srec(p)] / NeutralVal + Srec(p)
이 경우, 모드 2에서, 신호 Srec_C0(p)는 다음과 같이 정제된다:
o Sout(p) = LutR[Srec_C1(p)] / NeutralVal + Srec_C0(p)
교차 성분 정제 테이블 값들의 예는, 크로마 성분들 Cb 및 Cr에 대해, NeutralVal = 64 및 N= 17에 대해 아래에 도시되어 있다:
Cb
Figure pct00013
Cr
Figure pct00014
도 20으로 되돌아가면, 방법은 단계(S160)에서 종료된다.
도 21은 단계(S130)에 대한 더 상세한 예를 예시하는 흐름도를 도시한다. 정제 데이터는 주어진 픽처 영역 A, 예를 들어, 슬라이스, 타일 또는 CTU에 걸쳐, 또는 전체 픽처에 걸쳐 결정될 수 있다. 정제 데이터 R은 유리하게는 N개의 커플들 (R_idx[k], R_val[k])(여기서, k = 0 내지 N-1)에 의해 정의되는 구간 선형 모델(PWL)에 의해 모델링될 수 있다. PWL 모델의 예가 도 22에 도시되어 있으며, 여기서 N = 6이다(k ∈ {0, 1, 2, 3, 5}). 각각의 커플은 PWL 모델의 피봇 포인트를 정의한다.
값들 R_idx 및 R_val이 초기화된다(단계 S1300). 전형적으로, R_idx[k](여기서, k = 0 내지 N-1)는 초기화되고, 따라서 연속적인 인덱스들 사이에 등거리 공간이 있는데, 즉, (R_idx[k+1] - R_idx[k]) = D이고, 여기서 D = Range / (N-1)이고, Range는 정제하기 위한 신호의 범위이다(예를 들어, 10비트들에 대해 표현되는 신호에 대해 1024). 예에서, N = 17 또는 33이다. 값들 R_val은 정제가 신호를 변경하지 않도록 정의되는 값들 NeutralVal, 예를 들어, 128로 초기화된다. 변형에서, 맵핑이 적용되고, 커플들 (map_idx[k], map_val[k])에 의해 정의되는 PWL 맵핑 테이블에 기초하면, (R_idx[k], R_val[k])(여기서, k = 0 내지 N-1)이 (map_idx[k], map_val[k])에 의해 초기화된다.
도 21의 실시예에서 값들 R_val[k]만이 결정된다. 값들 R_idx[k]는 그들의 초기 값들로 고정된다. 초기 레이트 왜곡 비용 initRD는 S1300에서 초기화된 바와 같은 R을 이용하여 계산된다(단계 1301). 초기 레이트 왜곡 비용 initRD는 다음과 같이 계산된다:
initRD = L * Cost(R) + ∑P in A dist(Sin(P), Sout(p)) (수학식 1)
여기서:
- R은 S1300에서 초기화된 바와 같은 정제 데이터이고,
- A는 정제가 수행되는 픽처 영역이고,
- Sin(p)는 다음과 같이 정의된다:
맵핑이 적용되지 않을 때, Sin(p)는 원래 픽처 영역에서의 픽셀 p의 샘플 값이다;
맵핑이 적용되고 정제가 루프 밖에 있을 때(도 18), Sin(p)는 원래 픽처 영역에서의 픽셀 p의 샘플 값이다;
맵핑이 적용되고 정제가 루프에 있을 때(도 19), Sin(p)는 맵핑된 원래 픽처 영역에서의 픽셀 p의 샘플 값이다;
- Sout(p)는 정제된 픽처 영역에서의 픽셀 p의 샘플 값이다;
- dist(x, y)는 샘플 값 x와 샘플 값 y 사이의 왜곡이고, 예를 들어, 왜곡은 제곱 오차 (x-y)2이고; 다른 가능한 왜곡 함수들은 절대 차이 |x-y|이거나, SSIM(Z. Wang, A. C. Bovik, H. R. Sheikh 및 E. P. Simoncelli에 의한 "Image quality assessment: From error visibility to structural similarity", IEEE Transactions on Image Processing, vol. 13, no. 4, pp. 600-612, April 2004) 또는 SSIM의 변형들과 같은 주관적 지향 메트릭들(subjective-oriented metrics)에 기초한 왜곡이 또한 이용될 수 있다;
- Cost(R)은 정제 데이터 R 및 정제된 픽처 영역을 코딩하기 위한 코딩 비용이다;
- L은 픽처 영역 A와 연관된 값이다. 그것은 유리하게는 2(QP/6)에 선형적으로 의존하고, 여기서 QP는 단일 양자화 파라미터 값이 픽처 영역 A 내부에서 이용될 때의 양자화 파라미터이거나, QP는 상이한 양자화 파라미터 값들이 픽처 영역 A 내부에서 이용될 때 픽처 영역 A에 적용되는 양자화 파라미터들을 나타낸다. 예를 들어, QP는 영역 A의 블록들 내부에서 이용되는 QP들의 평균이다.
값들 R_val이 값들 NeutralVal로 초기화되는 경우에, 초기 레이트 왜곡 비용 initRD는 정제 데이터의 코딩 비용 없이 픽처 영역의 코딩 비용으로 계산될 수 있다.
단계(S1302)에서, 파라미터 bestRD가 initRD로 초기화된다. 그 다음, 정제 데이터 R이 단계(S1303)에서 결정된다. PWL 모델 R의 연속적인 피봇 포인트들의 인덱스 pt에 대한 루프가 단계(S1304)에서 수행된다. 단계(S1305)에서, 파라미터들 bestVal 및 initVal은 R_val[pt]로 초기화된다. R_val[pt]의 다양한 값들에 대한 루프, 즉, 값(initVal-Val0)으로부터 값(initVal+Val1)으로의 루프가 단계(S1306)에서 수행되고, 여기서 Val0 및 Val1은 미리 정의된 파라미터들이다. 전형적인 값들 Val0 = Val1 = NeutralVal/4이다. 레이트 왜곡 비용 curRD는 단계(S1307)에서 현재 R을 갖는(현재 R_val[pt]를 갖는) 수학식 1을 이용하여 계산된다. curRD 및 bestRD는 단계(S1308)에서 비교된다. curRD가 bestRD보다 낮다면, bestRD는 curRD로 설정되고, bestValue는 R_val[pt]로 설정된다. 그렇지 않은 경우, 방법은 단계(S1310)에서 계속된다. 단계(S1310)에서, R_val[pt]의 값들에 대한 루프가 종료되는지가 체크된다. 루프가 종료되는 경우에, R_val[pt]는 단계(S1311)에서 bestValue로 설정된다. 단계(S1312)에서, pt의 값들에 대한 루프가 종료되는지가 체크된다. 루프가 종료되는 경우, 현재 R은 출력 정제 데이터이다.
단계(S1303)는 n회 반복될 수 있고, n은 고정된 값을 갖는 정수이고, 예를 들어, n = 3이다. 도 23은 R_val의 결정을 도시한다. 파선은 R_val을 업데이트한 후의 PWL을 나타낸다.
도 24는 도 21의 프로세스의 변형을 도시한다. 도 24의 실시예에서 값들 R_idx[k]만이 결정된다. 값들 R_val[k]는 그들의 초기 값들로 고정된다. 프로세스는 입력으로서 (예를 들어, 도 21의 방법으로부터 오는) 초기 R_idx 및 R_val 데이터를 이용한다. 초기 레이트 왜곡 비용 initRD는 단계(S1401)에서 (수학식 1)을 이용하여 계산된다. 단계(S1402)에서, 파라미터 bestRD가 initRD로 초기화된다. 그 다음, 정제 데이터 R이 단계(S1403)에서 결정된다. PWL 모델 R의 연속적인 피봇 포인트들의 인덱스 pt에 대한 루프가 단계(S1404)에서 수행된다. 단계(S1405)에서, 파라미터들 bestIdx 및 initIdx는 R_idx[pt]로 초기화된다. R_idx[pt]의 (initIdx-idxVal0으로부터 initIdx+idxVal1로의) 다양한 값들에 대한 루프가 단계(S1406)에서 수행되고, 여기서 idxVal0 및 idxVal1은 정의된 값들, 예를 들어, idxVal0 = idxVal1 = D/4이고, 여기서 D = Range / (N-1)이고, Range는 정제하기 위한 신호의 범위이다(예를 들어, 10비트들에 대해 표현된 신호에 대해 1024). 레이트 왜곡 비용 curRD는 단계(S1407)에서 현재 R을 갖는(현재 R_idx[pt]를 갖는) 수학식 1을 이용하여 계산된다. curRD 및 bestRD는 단계(S1408)에서 비교된다. curRD가 bestRD보다 낮다면, bestRD는 curRD로 설정되고, bestIdx는 R_idx[pt]로 설정된다. 그렇지 않은 경우 방법은 단계(S1310)에서 계속된다. 단계(S1410)에서, R_idx[pt]의 값들에 대한 루프가 종료되는지가 체크된다. 루프가 종료되는 경우, R_idx[pt]는 단계(S1411)에서 bestIdx로 설정된다. 단계(S1412)에서, pt의 값들에 대한 루프가 종료되는지가 체크된다. 루프가 종료되는 경우, 현재 R이 출력 정제 데이터이다. 단계(S1403)는 n회 반복될 수 있고, n은 고정된 값을 갖는 정수이고, 예를 들어, n= 3이다.
도 25는 R_idx의 결정을 도시한다. 파선은 R_idx를 업데이트한 후의 PWL을 나타낸다.
도 26은 R_idx 및 R_val 둘다의 결정을 도시한다. 파선은 R_val 및 R_idx의 업데이트 후의 PWL을 나타낸다.
도 27은 특정한 비제한적 실시예에 따른, 비트스트림 또는 신호로부터 픽처를 디코딩하여 디코딩된 픽처를 획득하도록 구성된 수신기(2000)의 아키텍처의 예를 도시한다. 수신기(2000)는, 내부 메모리(2030)(예를 들어, RAM, ROM 및/또는 EPROM)와 함께, 예를 들어, CPU, GPU 및/또는 DSP(Digital Signal Processor의 영문 두문자어)를 포함할 수 있는 하나 이상의 프로세서(들)(2005)를 포함한다. 수신기(2000)는 하나 이상의 통신 인터페이스(들)(2010)(예를 들어, 키보드, 마우스, 터치패드, 웹캠)―이들 각각은 출력 정보를 디스플레이하고/하거나 사용자가 커맨드들 및/또는 데이터(예를 들어, 디코딩된 픽처)를 입력하도록 할 수 있게 적응됨―; 및 수신기(2000)의 외부에 있을 수 있는 전원(2020)을 포함한다. 수신기(2000)는 또한 하나 이상의 네트워크 인터페이스(들)(도시되지 않음)를 포함할 수 있다. 디코더 모듈(2040)은 디코딩 기능들을 수행하기 위해 디바이스에 포함될 수 있는 모듈을 나타낸다. 또한, 디코더 모듈(2040)은 수신기(2000)의 분리된 요소로서 구현될 수 있거나, 본 기술분야의 통상의 기술자에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(들)(2005) 내에 통합될 수 있다.
비트스트림 또는 신호는 소스로부터 획득될 수 있다. 상이한 실시예들에 따르면, 소스는 다음과 같을 수 있지만, 이들로 제한되지는 않는다:
- 로컬 메모리, 예를 들어, 비디오 메모리, RAM, 플래시 메모리, 하드 디스크;
- 저장 인터페이스, 예를 들어, 대용량 저장소, ROM, 광학 디스크 또는 자성 지지체를 갖는 인터페이스;
- 통신 인터페이스, 예를 들어, 유선 인터페이스(예를 들어, 버스 인터페이스, 광역 네트워크 인터페이스, 근거리 네트워크 인터페이스) 또는 (IEEE 802.11 인터페이스 또는 블루투스 인터페이스와 같은) 무선 인터페이스; 및
- 이미지 캡처링 회로(예를 들어, CCD(Charge-Coupled Device) 또는 CMOS(Complementary Metal-Oxide-Semiconductor)와 같은 센서).
다른 실시예들에 따르면, 디코딩된 픽처는 목적지, 예를 들어, 디스플레이 디바이스에 전송될 수 있다. 예로서, 디코딩된 픽처는 원격 또는 로컬 메모리, 예를 들어, 비디오 메모리 또는 RAM, 하드 디스크에 저장된다. 변형에서, 디코딩된 픽처는 저장 인터페이스, 예를 들어, 대용량 저장소, ROM, 플래시 메모리, 광학 디스크 또는 자성 지지체를 갖는 인터페이스에 전송되고/되거나 통신 인터페이스, 예를 들어, 지점간 링크, 통신 버스, 지점 대 다지점 링크 또는 브로드캐스트 네트워크에 대한 인터페이스를 통해 송신된다.
특정한 비제한적 실시예에 따르면, 수신기(2000)는 메모리(2030)에 저장된 컴퓨터 프로그램을 더 포함한다. 컴퓨터 프로그램은, 수신기(2000)에 의해, 특히 프로세서(2005)에 의해 실행될 때, 수신기가 도 31을 참조하여 설명되는 디코딩 방법을 실행할 수 있게 하는 명령어들을 포함한다. 변형에 따르면, 컴퓨터 프로그램은 수신기(2000)의 외부에서 비일시적 디지털 데이터 지지체 상에, 예를 들어, 본 기술분야에서 모두 알려져 있는 HDD, CD-ROM, DVD, 판독 전용 및/또는 DVD 드라이브 및/또는 DVD 판독/기입 드라이브와 같은 외부 저장 매체 상에 저장된다. 따라서, 수신기(2000)는 컴퓨터 프로그램을 판독하기 위한 메커니즘을 포함한다. 또한, 수신기(2000)는 대응하는 USB 포트들(도시되지 않음)을 통해 하나 이상의 USB 타입의 저장 디바이스들(예를 들어, "메모리 스틱들")에 액세스할 수 있다.
실시예들의 하나 이상의 비제한적 예에 따르면, 수신기(2000)는 다음과 같을 수 있지만, 이들로 제한되지는 않는다:
- 모바일 디바이스;
- 통신 디바이스;
- 게임 디바이스;
- 셋톱 박스;
- TV 세트;
- 태블릿(또는 태블릿 컴퓨터);
- 랩탑;
- 비디오 플레이어, 예를 들어, 블루레이 플레이어, DVD 플레이어;
- 디스플레이; 및
- 디코딩 칩 또는 디코딩 디바이스/장치.
도 28은 도 31의 디코딩 방법을 실행하도록 적응된, 예를 들어, HEVC 타입의, 비디오 디코더(200)의 실시예의 예의 블록도를 도시한다. 비디오 디코더(200)는 수신기(2000) 또는 그러한 수신기(2000)의 일부의 예이다. 디코더(200)의 실시예의 도시된 예에서, 비트스트림 또는 신호는 아래에서 설명되는 바와 같이 디코더 요소들에 의해 디코딩된다. 비디오 디코더(200)는 일반적으로 도 17에 설명된 바와 같은 인코딩 패스(pass)에 대해 역인 디코딩 패스를 수행하며, 이는 비디오 데이터를 인코딩하는 것의 일부로서 비디오 디코딩을 수행한다.
특히, 디코더의 입력은 비디오 인코더(100)에 의해 생성될 수 있는 비디오 비트스트림 또는 신호를 포함한다. 비트스트림 또는 신호는, 변환 계수들, 움직임 벡터들 및 다른 코딩된 정보, 예를 들어, 정제 데이터를 획득하기 위해 먼저 엔트로피 디코딩(230)된다. 잔차들을 디코딩하기 위해, 변환 계수들은 역 양자화(240) 및 역 변환(250)된다. 그 다음, 디코딩된 잔차들은, (예측자라고도 알려진) 예측된 블록과 결합(255)되어, 디코딩된/재구성된 픽처 블록이 획득된다. 예측된 블록은 인트라 예측(260) 또는 움직임 보상된 예측(즉, 인터 예측)(275)으로부터 획득될 수 있다(270). 앞서 설명된 바와 같이, AMVP 및 병합 모드(merge mode) 기술들이 움직임 보상 동안 이용될 수 있고, 이는 참조 블록의 서브 정수 샘플들(sub-integer samples)에 대한 보간된 값들을 계산하기 위해 보간 필터들을 이용할 수 있다. 재구성된 픽처에는 인루프 필터(265)가 적용된다. 인루프 필터는 디블록킹 필터 및 SAO 필터를 포함할 수 있다. 필터링된 픽처는 참조 픽처 버퍼(280)에 저장된다. 가능하게는 필터링된 재구성된 픽처는 정제(290)된다. 정제는 디코딩 루프 밖에 있고, 후처리 프로세스로서 적용된다.
도 29는 도 28의 비디오 디코더(200)의 변형(201)을 도시한다. 도 28의 모듈들과 동일한 도 29의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 필터링된 재구성된 픽처, 즉, 인루프 필터(들)의 출력은 역 맵핑(285)된다. 역 맵핑(285)은 인코더 측에서 적용된 맵핑(105)의 역 프로세스이다. 역 맵핑은 비트스트림 또는 신호로부터 디코딩된 역 맵핑 테이블들 또는 디폴트 역 맵핑 테이블들을 이용할 수 있다. 역 맵핑된 픽처는 비트스트림 또는 신호로부터 디코딩(230)된 정제 데이터를 이용하여 정제(290)된다.
변형에서, 역 맵핑 및 정제는 비트스트림 또는 신호로부터 디코딩된 역 맵핑 테이블들을 이용하여 역 맵핑을 적용하는 단일 모듈에서 병합되며, 역 맵핑 테이블들은 정제 데이터를 고려하기 위해 인코더에서 수정된다. 변형에서, 처리되고 있는 주어진 성분에 대해, 역 맵핑 및 정제 프로세스들을 수행하기 위해 룩업 테이블 LutComb가 적용되고, 이러한 룩업 테이블은 맵핑 테이블로부터 도출된 룩업 테이블 LutInvMap과 정제 테이블 LutR로부터 도출된 룩업 테이블의 연결로서 구축된다:
LutComb[x] = LutR[LutInvMap[x]] (여기서, x = 0 내지 MaxVal)
이러한 실시예에서, 정제 프로세스는 디코딩 루프 밖에 있다. 따라서, 정제 프로세스는 후처리로서 디코더에서만 적용된다.
도 30은 도 28의 비디오 디코더(200)의 변형(202)을 도시한다. 도 28의 모듈들과 동일한 도 30의 모듈들은 동일한 수치 참조들로 표시되며, 더 설명되지는 않는다. 정제 데이터는 비트스트림 또는 신호로부터 디코딩(230)된다. 필터링된 재구성된 픽처는 디코딩된 정제 데이터를 이용하여 정제(290)된다. 정제된 픽처는 필터링된 재구성된 픽처 대신에 참조 픽처 버퍼(280)에 저장된다. 모듈(290)은 상이한 위치들에 삽입될 수 있다. 정제의 모듈(290)은 인루프 필터(들) 이전에 또는 적어도 2개의 인루프 필터들인 경우에는, 인루프 필터(들) 사이에, 예를 들어, DBF 이후 및 SAO 이전에 삽입될 수 있다. 정제된 픽처는 선택적으로 역 맵핑(285)될 수 있다. 이러한 실시예에서, 정제 프로세스는 디코딩 루프에 있다.
도 31은 특정한 비제한적 실시예에 따른, 비트스트림 또는 신호로부터 픽처를 디코딩하기 위한 방법의 흐름도를 도시한다. 방법은 단계(S200)에서 시작한다. 단계(S210)에서, 디코더(200)와 같은 수신기(2000)가 비트스트림 또는 신호에 액세스한다. 단계(S220)에서, 수신기는 디코딩된 픽처 부분을 획득하기 위해 비트스트림 또는 신호로부터 픽처 부분을 디코딩한다. 이러한 목적을 위해, 픽처 부분의 블록들이 디코딩된다. 블록을 디코딩하는 것은, 반드시 그러한 것은 아니지만, 통상적으로 변환 계수들의 블록을 획득하기 위해 블록을 나타내는 비트스트림 또는 신호의 일부를 엔트로피 디코딩하는 것, 잔차들의 블록을 획득하기 위해 변환 계수들의 블록을 역 양자화 및 역 변환하는 것, 및 디코딩된 블록을 획득하기 위해 잔차들의 블록에 예측자를 추가하는 것을 포함한다. 그 후, 디코딩된 픽처 부분은 도 28 내지 도 30에서와 같이 인루프 필터(들)에 의해 필터링되고, 또한 도 29에서와 같이 역 맵핑될 수 있다. 단계(S230)에서, 정제 데이터가 비트스트림 또는 신호로부터 디코딩된다. 이 단계는 인코딩 단계(S140)의 역이다. 단계(S140)와 관련하여 설명된 모든 변형들 및 실시예들이 단계(S230)에 적용된다. 단계(S240)에서, 디코딩된 픽처가 정제된다. 이 단계는 인코더 측의 정제 단계(S150)와 동일하다.
정제 모드 능력을 제공하는 것을 포함하는 비디오 데이터를 인코딩하기 위한 방법인 실시예의 다른 예가 도 32에 도시되어 있다. 도 32에서, 디지털 비디오 신호 또는 비트스트림에 포함된 데이터와 같은 비디오 데이터는 3210에서 처리되어, 본 명세서에 기술된 바와 같이 블록 당 정제 모드를 이용하여 그리고 정제 모드 이외의 모드, 예를 들어, 정제가 없는 모드를 이용하여 픽처 부분과 같은 비디오 데이터를 인코딩하는 것과 연관된 비용을 획득한다. 그 다음, 3220에서, 비디오 데이터는 비용에 기초하여 인코딩된다. 예를 들어, 레이트 왜곡 비용과 같은 비용이, 정제 모드를 이용하는 경우 및 정제 모드를 이용하지 않는 경우 모두를 인코딩하기 위해 획득될 수 있다. 정제 모드의 이용이 인코딩의 개선을 나타내는 레이트 왜곡 비용이 되게 한다면, 인코딩은 정제 모드를 이용하여 발생할 수 있다. 정제 모드에 대한 복잡성을 추가하는 것을 정당화하지 않는 제한된 개선의 어떠한 개선도 나타내지 않는 레이트 왜곡 비용은 정제 모드를 이용하지 않는 것 또는 상이한 모드의 이용을 초래할 수 있다. 비용을 획득하고 비디오 데이터를 인코딩하기 위한 비디오 데이터의 처리는, 예를 들어, 본 명세서에 설명된 하나 이상의 실시예와 관련하여 전술한 바와 같이 발생할 수 있다. 인코딩된 비디오 데이터는 3220으로부터 출력된다.
도 33은 비디오 데이터를 디코딩하는 방법의 실시예의 예를 도시한다. 3310에서, 인코딩된 비디오 데이터, 예를 들어, 디지털 데이터 신호 또는 비트스트림이 처리되어, 본 명세서에 설명된 하나 이상의 실시예에 따른 비디오 데이터의 인코딩 동안, 정제 모드, 예를 들어, 블록 당 정제 모드의 이용의 표시를 획득한다. 그 후, 3320에서, 인코딩된 픽처 부분과 같은 인코딩된 비디오 데이터는 표시에 기초하여 디코딩되는데, 예를 들어, 인코딩 동안 이용된 정제 모드에 기초하여 본 명세서에 설명된 바와 같은 디코딩이다. 비용을 획득하고 비디오 데이터를 인코딩하기 위한 비디오 데이터의 처리는, 예를 들어, 본 명세서에 설명된 하나 이상의 실시예와 관련하여 전술한 바와 같이 발생할 수 있다. 3320으로부터 디코딩된 비디오 데이터가 출력된다.
본 개시내용 전체에 걸쳐, 다양한 구현들은 디코딩을 수반한다. 본 출원에서 이용되는 바와 같은 "디코딩"은 디스플레이에 적합한 최종 출력을 생성하기 위해, 예를 들어, 수신된 인코딩된 시퀀스에 대해 수행된 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시예들에서, 그러한 프로세스들은 디코더에 의해 전형적으로 수행된 프로세스들, 예를 들어, 엔트로피 디코딩, 역 양자화, 역 변환, 및 차동 디코딩 중 하나 이상을 포함한다. 다양한 실시예들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 설명된 다양한 구현들의 디코더에 의해 수행된 프로세스들, 예를 들어, 타일링된(패킹된) 픽처로부터 픽처를 추출하는 것, 이용할 업샘플 필터를 결정한 다음 픽처를 업샘플링하는 것, 및 픽처를 그의 의도된 배향으로 다시 플립(flipping)하는 것을 포함한다.
추가 예들로서, 일 실시예에서, "디코딩"은 엔트로피 디코딩만을 지칭하고, 다른 실시예에서, "디코딩"은 차동 디코딩만을 지칭하고, 다른 실시예에서, "디코딩"은 엔트로피 디코딩 및 차동 디코딩의 조합을 지칭한다. "디코딩 프로세스"라는 문구가 구체적으로 동작들의 서브세트를 지칭하거나 일반적으로 더 넓은 디코딩 프로세스를 지칭하도록 의도되는지의 여부는, 특정 설명들의 맥락에 기초하여 명백할 것이며, 본 기술분야의 통상의 기술자에 의해 잘 이해될 것으로 생각된다.
또한, 다양한 구현들은 인코딩을 수반한다. "디코딩"에 관한 상기의 논의와 유사한 방식으로, 본 출원에서 이용된 바와 같은 "인코딩"은 인코딩된 비트스트림 또는 신호를 생성하기 위해, 예를 들어, 입력 비디오 시퀀스에 대해 수행된 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시예들에서, 그러한 프로세스들은 인코더에 의해 전형적으로 수행된 프로세스들, 예를 들어, 분할, 차동 인코딩, 변환, 양자화, 및 엔트로피 인코딩 중 하나 이상을 포함한다. 다양한 실시예들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 설명된 다양한 구현들의 인코더에 의해 수행된 프로세스들을 포함한다.
추가 예들로서, 일 실시예에서 "인코딩"은 엔트로피 인코딩만을 지칭하고, 다른 실시예에서, "인코딩"은 차동 인코딩만을 지칭하고, 다른 실시예에서, "인코딩"은 차동 인코딩 및 엔트로피 인코딩의 조합을 지칭한다. "인코딩 프로세스"라는 문구가 구체적으로 동작들의 서브세트를 지칭하거나 일반적으로 더 넓은 인코딩 프로세스를 지칭하도록 의도되는지의 여부는, 특정 설명들의 문맥에 기초하여 명백할 것이며, 본 기술분야의 통상의 기술자에 의해 잘 이해될 것으로 생각된다.
본 명세서에서 이용된 바와 같은 신택스 요소들은 설명적 용어들이라는 점에 유의한다. 따라서, 이들은 다른 신택스 요소 명칭들의 이용을 배제하지 않는다.
도면이 흐름도로서 제시될 때, 그것은 또한 대응하는 장치의 블록도를 제공한다는 것을 이해해야 한다. 유사하게, 도면이 블록도로서 제시될 때, 그것은 대응하는 방법/프로세스의 흐름도를 또한 제공한다는 것을 이해해야 한다.
다양한 실시예들은 레이트 왜곡 최적화를 언급한다. 특히, 인코딩 프로세스 동안, 계산 복잡도의 제약이 종종 주어지면, 레이트와 왜곡 사이의 균형 또는 트레이드오프가 통상적으로 고려된다. 레이트 왜곡 최적화는 통상적으로 레이트와 왜곡의 가중 합인 레이트 왜곡 함수를 최소화하는 것으로 공식화된다. 레이트 왜곡 최적화 문제를 해결하기 위한 상이한 접근법들이 존재한다. 예를 들어, 이 접근법들은, 코딩 및 디코딩 이후에 재구성된 신호의 코딩 비용 및 관련 왜곡의 완전한 평가와 함께, 모든 고려된 모드들 또는 코딩 파라미터 값들을 비롯한, 모든 인코딩 옵션들의 광범위한 테스트에 기초할 수 있다. 인코딩 복잡성을 절약하기 위해, 특히 재구성된 것이 아니라 예측 또는 예측 잔차 신호에 기초한 근사화된 왜곡의 계산으로 더 빠른 접근법들이 또한 이용될 수 있다. 이들 2개의 접근법들의 혼합은 또한, 예를 들어, 가능한 인코딩 옵션들 중 단지 일부에 대한 근사화된 왜곡, 및 다른 인코딩 옵션들에 대한 완전한 왜곡을 이용함으로써 이용될 수 있다. 다른 접근법들은 가능한 인코딩 옵션들의 서브세트만을 평가한다. 보다 일반적으로, 많은 접근법들은 최적화를 수행하기 위해 다양한 기법들 중 임의의 기법을 이용하지만, 최적화가 반드시 코딩 비용 및 관련 왜곡 둘다의 완전한 평가일 필요는 없다.
본 명세서에 설명된 구현들 및 양태들은, 예를 들어, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림 또는 신호로 구현될 수 있다. (예를 들어, 방법으로서만 설명된) 단일 형태의 구현의 맥락에서만 설명되었지만, 설명되는 특징들의 구현은 다른 형태들(예를 들어, 장치 또는 프로그램)로도 구현될 수 있다. 장치는, 예를 들어, 적절한 하드웨어, 소프트웨어 및 펌웨어로 구현될 수 있다. 예를 들어, 방법들은, 예를 들어, 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그래밍가능 논리 디바이스를 포함하는 처리 디바이스들을 일반적으로 지칭하는 프로세서로 구현될 수 있다. 프로세서들은 또한, 예를 들어, 컴퓨터들, 셀 폰들(cell phones), PDA(portable/personal digital assistant)들, 및 최종 사용자들 간의 정보의 통신을 용이하게 하는 다른 디바이스들과 같은, 통신 디바이스들을 포함한다.
"일 실시예" 또는 "실시예" 또는 "하나의 구현" 또는 "구현" 뿐만 아니라 그의 다른 변형들에 대한 참조는, 실시예와 관련하여 설명된 특정한 특징, 구조, 특성 등이 적어도 일 실시예에 포함된다는 것을 의미한다. 따라서, 본 문서의 전체에 걸쳐 다양한 곳에서 나타나는 "일 실시예에서" 또는 "실시예에서" 또는 "하나의 구현에서" 또는 "구현에서"라는 어구 뿐만 아니라 임의의 다른 변형들의 출현들은 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다.
추가적으로, 본 문서는 다양한 정보 조각을 "획득하는 것"을 언급할 수 있다. 정보를 획득하는 것은, 예를 들어, 정보를 결정하는 것, 정보를 추정하는 것, 정보를 계산하는 것, 정보를 예측하는 것, 또는 메모리로부터 정보를 검색하는 것 중 하나 이상을 포함할 수 있다.
더욱이, 본 문서는 다양한 정보 조각에 "액세스하는 것"을 언급할 수 있다. 정보에 액세스하는 것은, 예를 들어, 정보를 수신하는 것, (예를 들어, 메모리로부터) 정보를 검색하는 것, 정보를 저장하는 것, 정보를 이동하는 것, 정보를 복사하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것 중 하나 이상을 포함할 수 있다.
추가적으로, 본 문서는 다양한 정보 조각을 "수신하는 것"을 언급할 수 있다. 수신하는 것은, "액세스하는 것"에서와 같이, 광의의 용어인 것으로 의도된다. 정보를 수신하는 것은, 예를 들어, 정보에 액세스하는 것, 또는 (예를 들어, 메모리로부터) 정보를 검색하는 것 중 하나 이상을 포함할 수 있다. 또한, "수신하는 것"은 전형적으로, 예를 들어, 정보를 저장하는 것, 정보를 처리하는 것, 정보를 송신하는 것, 정보를 이동하는 것, 정보를 복사하는 것, 정보를 제거하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것과 같은 동작들 동안 하나의 방식 또는 다른 방식으로 수반된다.
예를 들어, "A/B", "A 및/또는 B" 및 "A 및 B 중 적어도 하나"의 경우들에서, 이하의 "/", "및/또는", 및 "~ 중 적어도 하나" 중 임의의 것의 이용은, 제1 열거된 옵션 (A)만의 선택, 또는 제2 열거된 옵션 (B)만의 선택, 또는 두 옵션들 (A 및 B)의 선택을 포함하려는 의도임을 알 것이다. 추가 예로서, "A, B, 및/또는 C" 및 "A, B, 및 C 중 적어도 하나"의 경우들에서, 그러한 문구는 제1 열거된 옵션 (A)만의 선택, 또는 제2 열거된 옵션 (B)만의 선택, 또는 제3 열거된 옵션 (C)만의 선택, 또는 제1 및 제2 열거된 옵션들 (A 및 B)만의 선택, 또는 제1 및 제3 열거된 옵션들 (A 및 C)만의 선택, 또는 제2 및 제3 열거된 옵션들 (B 및 C)만의 선택, 또는 3개 모든 옵션들 (A 및 B 및 C)의 선택을 포함하는 것으로 의도된다. 이것은 본 기술분야의 통상의 기술자에 의해 쉽게 명백해지는 바와 같이, 열거된 많은 항목들에 대해 확장될 수 있다.
또한, 본 명세서에 이용된 바와 같이, 단어 "신호"는 다른 것들 중에서, 대응하는 디코더에 대한 무언가를 나타내는 것을 지칭한다. 예를 들어, 특정 실시예들에서, 인코더는 정제를 위한 복수의 파라미터들 중 특정의 파라미터를 시그널링한다. 이와 같이, 실시예에서, 동일한 파라미터는 인코더 측 및 디코더 측 양쪽에서 이용된다. 따라서, 예를 들어, 인코더는 디코더가 동일한 특정 파라미터를 이용할 수 있도록 디코더에 특정 파라미터를 송신(명시적 시그널링)할 수 있다. 반대로, 디코더가 특정 파라미터 뿐만 아니라 다른 것들을 이미 갖는 경우, 단순히 디코더가 특정 파라미터를 알고 선택하는 것을 허용하기 위해 송신 없이 시그널링(암시적 시그널링)이 이용될 수 있다. 다양한 실시예들에서, 임의의 실제 기능들의 송신을 회피함으로써, 비트 절감이 실현될 수 있다. 시그널링은 다양한 방식들로 달성될 수 있다는 것을 알아야 한다. 다양한 실시예들에서, 예를 들어, 하나 이상의 신택스 요소, 플래그 등은 대응하는 디코더에 정보를 시그널링하기 위해 이용된다는 점을 알아야 한다. 위의 내용은 단어 "신호"의 동사 형태와 관련되지만, 단어 "신호"는 본 명세서에서 명사로서 이용될 수도 있다.
본 기술분야의 통상의 기술자에게 명백한 바와 같이, 구현들은, 예를 들어, 저장되거나 또는 송신될 수 있는 정보를 운반하도록 포맷팅된 다양한 신호들을 생성할 수 있다. 정보는, 예를 들어, 방법을 수행하기 위한 명령어들, 또는 설명된 구현들 중 하나에 의해 생성되는 데이터를 포함할 수 있다. 예를 들어, 신호는 설명된 실시예의 비트스트림 또는 신호를 운반하도록 포맷팅될 수 있다. 그러한 신호는, 예를 들어, (예를 들어, 스펙트럼의 무선 주파수 부분을 이용한) 전자기파로서 또는 기저대역 신호로서 포맷팅될 수 있다. 포맷팅은, 예를 들어, 데이터 스트림을 인코딩하고, 인코딩된 데이터 스트림으로 캐리어를 변조하는 것을 포함할 수 있다. 신호가 운반하는 정보는, 예를 들어, 아날로그 또는 디지털 정보일 수 있다. 신호는 알려진 바와 같은 여러 가지의 상이한 유선 또는 무선 링크들을 통해 송신될 수 있다. 신호는 프로세서 판독가능한 매체 상에 저장될 수 있다.
다양한 실시예들이 설명되었다. 실시예들은 다양한 상이한 청구항 카테고리들 및 타입들에 걸쳐, 단독으로 또는 임의의 조합으로, 다음의 특징들 또는 엔티티들 중 임의의 것을 포함할 수 있다:
· 이웃하는 재구성된 샘플들에 의존하지 않는 정제를 적용.
· 비트스트림에서 송신된 하나 이상의 정제 파라미터를 갖는 전역 함수들에 기초하여 정제를 적용.
· 크로마 성분들의 교차 성분 정제를 포함하는 모드를 인코더 및/또는 디코더에 제공.
· 루마 성분의 인트라 성분 정제를 포함하는 모드를 인코더 및/또는 디코더에 제공.
· 디코더 및/또는 인코더에서 블록 당 정제의 활성화를 인에이블.
· 특정 성분에 대해 몇몇 함수들을 이용하여 정제를 적용 및 블록 기반으로 정제 함수들을 선택.
· 디코더 및/또는 인코더에서 정제 파라미터들의 블록 당 선택을 인에이블하여, 비트스트림 또는 신호에서 코딩된 가능한 파라미터들의 세트 중의 블록에 적용.
· 블록 기반으로 재구성된 신호에 정제를 적용.
· 디코딩 후에 재구성된 신호를 개선하기 위한 인루프 또는 아웃-오브-루프 필터로서 정제 단계를 포함.
· 디코더 및/또는 인코더에서의 정제를 비트스트림 또는 신호에서 코딩된 정제 테이블들에 기초하게 함.
· 중복 중립 값들을 회피함으로써 테이블 코딩 비용 감소를 제공.
· 디코더가 본 명세서에 설명된 바와 같은 정제를 제공할 수 있게 하는 신택스 요소들을 시그널링에 삽입.
· 테이블 쌍 식별자와 같은 정제 테이블들에 관련된 식별자를 신택스 요소들에 포함.
· 코딩 비용을 감소시키기 위해 정제 테이블들의 크기 제한을 제공.
· 현재 블록에 대한 정제 정보가 이웃 블록들로부터 복사되는지를 나타내는 하나 이상의 신택스 요소를 신택스 요소들에 포함.
· 이들 신택스 요소들에 기초하여, 디코더에서 적용할 정제를 선택.
· 설명된 신택스 요소들, 또는 그의 변형들 중 하나 이상을 포함하는 비트스트림 또는 신호.
· 디코더가 인코더에 의해 이용된 것에 대응하는 방식으로 정제를 제공할 수 있게 하는 신택스 요소들을 시그널링에 삽입.
· 설명된 신택스 요소들, 또는 그의 변형들 중 하나 이상을 포함하는 비트스트림 또는 신호를 생성 및/또는 송신 및/또는 수신 및/또는 디코딩.
· 설명된 실시예들 중 임의의 것에 따라 정제를 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
· 설명된 실시예들 중 임의의 것에 따라 정제를 수행하고, (예를 들어, 모니터, 스크린, 또는 다른 타입의 디스플레이를 이용하여) 결과적인 이미지를 디스플레이하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
· 인코딩된 이미지를 포함하는 신호를 수신하기 위해 (예를 들어, 튜너를 이용하여) 채널을 튜닝하고, 설명된 실시예들 중 임의의 것에 따라 정제를 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
· 인코딩된 이미지를 포함하는 신호를 공기를 통해 (예를 들어, 안테나를 이용하여) 수신하고, 설명된 실시예들 중 임의의 것에 따라 정제를 수행하는 TV, 셋톱 박스, 셀 폰, 태블릿, 또는 다른 전자 디바이스.
· 컴퓨터에 의해 실행될 때, 설명된 실시예들 중 임의의 것에 따라 정제를 구현하는 프로그램 코드를 저장하는 컴퓨터 프로그램 제품.
· 실행가능 프로그램 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 실행가능 프로그램 명령어들은 명령어들을 실행하는 컴퓨터로 하여금 설명된 실시예들 중 임의의 것에 따라 정제를 구현하게 하는, 비일시적 컴퓨터 판독가능 매체.
다양한 다른 일반화된, 뿐만 아니라 특정화된 실시예들이 본 개시내용의 전체에 걸쳐 또한 지원되고 구상된다. 예를 들어, 실시예의 적어도 하나의 예는, 인코딩 방법으로서, (i) 블록 당 재구성된 신호에 정제 모드를 적용하는 것에 기초하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―하고, (ii) 정제 모드 이외의 모드를 이용하여 픽처 부분을 인코딩하기 위한 비용을 획득하는 단계; 및 비용에 기초하여 픽처 부분을 인코딩하는 단계를 포함하는, 인코딩 방법을 포함한다.
적어도 하나의 실시예의 다른 예는, 장치로서, 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 블록 당 재구성된 신호에 정제 모드를 적용하는 것에 기초하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―하고, 정제 모드를 이용하지 않고 픽처 부분을 인코딩하기 위한 비용을 획득, 및 비용에 기초하여 픽처 부분을 인코딩하도록 구성되는, 장치를 포함한다.
적어도 하나의 실시예의 다른 예는, 디코딩 방법으로서, 픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득하는 단계―정제 모드는 정제 파라미터에 기초함―; 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하는 단계를 포함하는, 디코딩 방법을 포함한다.
적어도 하나의 실시예의 다른 예는, 장치로서, 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 인코딩된 픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득―정제 모드는 정제 파라미터에 기초함―, 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하도록 구성되는, 장치를 포함한다.
적어도 하나의 실시예의 다른 예는, 신호로서, 인코딩된 픽처 부분을 나타내는 데이터; 및 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터를 포함하도록 포맷팅된, 신호를 포함한다.
적어도 하나의 실시예의 다른 예는, 비트스트림으로서, 인코딩된 픽처 부분을 나타내는 데이터; 및 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터를 포함하도록 포맷팅된, 비트스트림을 포함한다.
정제 모드를 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 정제 모드는 성분 정제를 포함할 수 있다.
정제 모드를 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 정제 모드는 교차 성분 정제 또는 인트라 성분 정제 중 적어도 하나를 포함할 수 있다.
교차 성분 정제 또는 인트라 성분 정제를 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 교차 성분 정제는 교차 성분 크로마 정제를 포함할 수 있고, 인트라 성분 정제는 인트라 성분 루마 정제를 포함할 수 있다.
정제 모드를 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 정제 모드는 정제 파라미터의 블록 당 선택을 인에이블하는 것을 포함할 수 있다.
정제 파라미터를 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 정제 파라미터는 정제 테이블에 포함된 하나 이상의 정제 파라미터를 포함할 수 있다.
정제 모드 및 정제 파라미터를 적용하는 것에 기초하여 픽처 부분을 인코딩하는 것을 수반하는 본 명세서에 설명된 바와 같은 적어도 하나의 실시예에서, 정제 파라미터는 정제 모드를 이용하여 픽처 부분을 인코딩할 때의 비용의 개선에 기초하여 복수의 정제 파라미터들로부터 블록 기반으로 선택될 수 있다.
다른 실시예에 따르면, 비디오 데이터를 인코딩하기 위한 방법으로서, (i) 블록 당 정제 모드를 이용하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―하고, (ii) 정제 모드 이외의 모드를 이용하여 픽처 부분을 인코딩하기 위한 비용을 획득하는 단계; 및 비용에 기초하여 픽처 부분을 인코딩하는 단계를 포함하는, 비디오 데이터를 인코딩하기 위한 방법이 제시된다.
다른 실시예에 따르면, 비디오 데이터를 디코딩하기 위한 방법으로서, 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 정제 모드의 이용의 표시를 획득하는 단계; 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하는 단계를 포함하는, 비디오 데이터를 디코딩하기 위한 방법이 제시된다.
다른 실시예에 따르면, 비디오 데이터를 디코딩하기 위한 장치로서, 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 정제 모드의 이용의 표시를 획득, 및 표시에 기초하여 인코딩된 픽처 부분을 디코딩하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치가 제시된다.
다른 실시예에 따르면, 신호 포맷으로서, 인코딩된 픽처 부분을 나타내는 데이터; 및 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 정제 모드의 이용의 표시를 제공하는 데이터를 포함하는 신호 포맷이 제시된다.
다른 실시예에 따르면, 비트스트림으로서, 인코딩된 비디오 데이터를 포함하도록 포맷팅되고, 인코딩된 비디오 데이터는: (i) 블록 당 정제 모드를 이용하여 픽처 부분을 인코딩―정제 모드는 정제 파라미터에 기초함―을 획득하고, (ii) 정제 모드 이외의 모드를 이용하여 픽처 부분을 인코딩하기 비용을 획득함으로써 인코딩되는, 비트스트림이 제시된다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 성분 정제를 포함할 수 있다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 성분 정제를 포함할 수 있고, 성분 정제는 교차 성분 정제 및 인터 성분 정제 및 인트라 성분 정제 중 적어도 하나를 포함한다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 인터 성분 크로마 정제를 포함할 수 있다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 인트라 성분 루마 정제를 포함할 수 있다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 정제 파라미터의 블록 당 선택을 인에이블하는 것을 포함할 수 있다.
다른 실시예에 따르면, 본 명세서에 설명된 바와 같은 정제 모드는 크로마 정제 테이블에 포함된 하나 이상의 크로마 정제 파라미터를 포함하는 정제 파라미터에 기초할 수 있다.
다른 실시예에 따르면, 본 개시내용에 따른 방법, 장치 또는 신호는 정제 파라미터에 기초한 정제 모드를 이용하여 비디오 데이터를 인코딩 및/또는 디코딩하는 것을 포함할 수 있고, 인코딩 및/또는 디코딩하는 것은 정제 모드를 이용하여 픽처 부분을 인코딩 및/또는 디코딩할 때의 비용의 개선에 기초하여 픽처 부분 및 정제 파라미터를 인코딩 및/또는 디코딩하는 것을 포함한다.
다른 실시예에 따르면, 본 개시내용에 따른 방법, 장치 또는 신호는 인코딩 및/또는 디코딩 동안 정제 모드를 이용하는 것에 기초하여 비디오 데이터를 인코딩 및/또는 디코딩하는 것, 및 정제 모드를 이용하는 것과 연관된 비용을 결정하는 것을 포함할 수 있고, 비용은 레이트 왜곡 비용을 포함할 수 있으며, 비용을 결정하는 것은 정제 모드를 이용하여 픽처 부분을 인코딩할 때의 레이트 왜곡 비용을 결정하는 것을 포함할 수 있다.
일반적으로, 비디오 데이터를 인코딩 및/또는 디코딩하기 위한 디바이스의 적어도 하나의 실시예는 본 명세서에 설명된 바와 같은 장치를 포함할 수 있고, (i) 신호를 수신하도록 구성된 안테나―신호는 이미지를 나타내는 데이터를 포함함―, (ii) 수신된 신호를 이미지를 나타내는 데이터를 포함하는 주파수들의 대역으로 제한하도록 구성된 대역 제한기, 또는 (iii) 이미지를 디스플레이하도록 구성된 디스플레이 중 적어도 하나를 포함할 수 있다.
일반적으로, 비디오 데이터를 인코딩 및/또는 디코딩하는 디바이스의 적어도 하나의 실시예는 텔레비전, 셀 폰, 태블릿, 셋톱 박스, 및 게이트웨이 디바이스 중 적어도 하나를 포함할 수 있다.
본 실시예들 중 하나 이상은 또한, 본 명세서에서 설명된 방법들 또는 장치들에 따라 비디오 데이터를 인코딩 또는 디코딩하기 위한 명령어들을 저장하는 컴퓨터 판독가능 저장 매체 또는 컴퓨터 프로그램 제품을 제공한다. 본 실시예들은 또한, 본 명세서에 설명된 방법들 또는 장치들에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독가능 저장 매체 또는 컴퓨터 프로그램 제품을 제공한다. 본 실시예들은 또한, 본 명세서에 설명된 방법들 또는 장치들에 따라 생성된 비트스트림을 송신 또는 수신하기 위한 방법들 및 장치들을 제공한다.

Claims (17)

  1. 인코딩 방법으로서,
    (i) 블록 당 재구성된 신호에 정제 모드를 적용하는 것에 기초하여 픽처 부분을 인코딩―상기 정제 모드는 정제 파라미터에 기초함―하고, (ii) 상기 정제 모드 이외의 모드를 이용하여 상기 픽처 부분을 인코딩하기 위한 비용을 획득하는 단계; 및
    상기 비용에 기초하여 상기 픽처 부분을 인코딩하는 단계
    를 포함하는, 인코딩 방법.
  2. 장치로서,
    하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는,
    블록 당 재구성된 신호에 정제 모드를 적용하는 것에 기초하여 픽처 부분을 인코딩―상기 정제 모드는 정제 파라미터에 기초함―하고, 상기 정제 모드를 이용하지 않고 상기 픽처 부분을 인코딩하기 위한 비용을 획득, 및
    상기 비용에 기초하여 상기 픽처 부분을 인코딩
    하도록 구성되는, 장치.
  3. 디코딩 방법으로서,
    픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득하는 단계―상기 정제 모드는 정제 파라미터에 기초함―; 및
    상기 표시에 기초하여 상기 인코딩된 픽처 부분을 디코딩하는 단계
    를 포함하는, 디코딩 방법.
  4. 장치로서,
    하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는,
    인코딩된 픽처 부분의 인코딩 동안 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 획득―상기 정제 모드는 정제 파라미터에 기초함―, 및
    상기 표시에 기초하여 상기 인코딩된 픽처 부분을 디코딩
    하도록 구성되는, 장치.
  5. 신호로서,
    인코딩된 픽처 부분을 나타내는 데이터; 및
    상기 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터
    를 포함하도록 포맷팅된, 신호.
  6. 비트스트림으로서,
    인코딩된 픽처 부분을 나타내는 데이터; 및
    상기 인코딩된 픽처 부분의 인코딩 동안 정제 파라미터에 기초하여 블록 당 재구성된 신호에 적용되는 정제 모드의 표시를 제공하는 데이터
    를 포함하도록 포맷팅된, 비트스트림.
  7. 제1항 또는 제3항의 방법, 또는 제2항 또는 제4항의 장치, 또는 제5항의 신호, 또는 제6항의 비트스트림에 있어서,
    상기 정제 모드는 성분 정제를 포함하는, 방법, 장치, 신호 또는 비트스트림.
  8. 제1항, 제3항 또는 제7항 중 어느 한 항의 방법, 또는 제2항, 제4항 또는 제7항 중 어느 한 항의 장치, 또는 제5항 또는 제7항의 신호, 또는 제6항 또는 제7항의 비트스트림에 있어서,
    상기 정제 모드는 교차 성분 정제 또는 인트라 성분 정제 중 적어도 하나를 포함하는, 방법, 장치, 신호 또는 비트스트림.
  9. 제8항의 방법, 장치, 신호 또는 비트스트림에 있어서,
    상기 교차 성분 정제는 교차 성분 크로마 정제를 포함하고, 상기 인트라 성분 정제는 인트라 성분 루마 정제를 포함하는, 방법, 장치, 신호 또는 비트스트림.
  10. 제1항, 제3항 또는 제7항 내지 제9항 중 어느 한 항의 방법, 또는 제2항, 제4항 또는 제7항 내지 제9항 중 어느 한 항의 장치, 또는 제5항 또는 제7항 내지 제9항 중 어느 한 항의 신호, 또는 제6항 내지 제9항 중 어느 한 항의 비트스트림에 있어서,
    상기 정제 모드는 상기 정제 파라미터의 블록 당 선택을 인에이블하는 것을 포함하는, 방법, 장치, 신호 또는 비트스트림.
  11. 제1항, 제3항 또는 제7항 내지 제10항 중 어느 한 항의 방법, 또는 제2항, 제4항 또는 제7항 내지 제10항 중 어느 한 항의 장치, 또는 제5항 또는 제7항 내지 제10항 중 어느 한 항의 신호, 또는 제6항 내지 제10항 중 어느 한 항의 비트스트림에 있어서,
    상기 정제 파라미터는 정제 테이블에 포함된 하나 이상의 정제 파라미터를 포함하는, 방법, 장치, 신호 또는 비트스트림.
  12. 제1항 또는 제7항 내지 제11항 중 어느 한 항의 방법, 또는 제2항 또는 제7항 내지 제11항 중 어느 한 항의 장치에 있어서,
    상기 인코딩은 상기 픽처 부분을 인코딩하는 것을 포함하고, 상기 정제 파라미터는 상기 정제 모드를 이용하여 상기 픽처 부분을 인코딩할 때의 비용의 개선에 기초하여 복수의 정제 파라미터들로부터 블록 기반으로 선택되는, 방법 또는 장치.
  13. 제12항의 방법 또는 장치에 있어서,
    상기 비용은 레이트 왜곡 비용을 포함하고, 상기 개선은 상기 정제 모드를 이용하여 상기 픽처 부분을 인코딩할 때의 상기 레이트 왜곡 비용의 감소를 포함하는, 방법 또는 장치.
  14. 하나 이상의 프로세서로 하여금 제1항, 제3항, 또는 제7항 내지 제13항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램 제품.
  15. 명령어들을 실행하는 컴퓨터로 하여금 제1항, 제3항, 또는 제7항 내지 제13항 중 어느 한 항에 따른 방법을 수행하게 하는 실행가능 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체.
  16. 디바이스로서,
    제2항, 제4항, 또는 제7항 내지 제13항 중 어느 한 항에 따른 장치; 및
    (i) 신호를 수신하도록 구성된 안테나―상기 신호는 이미지를 나타내는 데이터를 포함함―, (ii) 상기 수신된 신호를 상기 이미지를 나타내는 상기 데이터를 포함하는 주파수들의 대역으로 제한하도록 구성된 대역 제한기, 또는 (iii) 상기 이미지를 디스플레이하도록 구성된 디스플레이 중 적어도 하나
    를 포함하는, 디바이스.
  17. 제16항에 있어서,
    상기 디바이스는 텔레비전, 셀 폰, 태블릿, 셋톱 박스, 및 게이트웨이 디바이스 중 적어도 하나를 포함하는, 디바이스.
KR1020217001630A 2018-06-21 2019-06-11 비디오 인코딩 및 디코딩에서의 정제 모드 처리 KR20210022073A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP18305785 2018-06-21
EP18305785.0 2018-06-21
EP18306226.4 2018-09-21
EP18306226.4A EP3627837A1 (en) 2018-09-21 2018-09-21 Refinement mode processing in video encoding and decoding
PCT/US2019/036474 WO2019245797A1 (en) 2018-06-21 2019-06-11 Refinement mode processing in video encoding and decoding

Publications (1)

Publication Number Publication Date
KR20210022073A true KR20210022073A (ko) 2021-03-02

Family

ID=67002446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217001630A KR20210022073A (ko) 2018-06-21 2019-06-11 비디오 인코딩 및 디코딩에서의 정제 모드 처리

Country Status (7)

Country Link
US (2) US11611765B2 (ko)
EP (1) EP3811620A1 (ko)
JP (1) JP2021528004A (ko)
KR (1) KR20210022073A (ko)
CN (1) CN112789853A (ko)
BR (1) BR112020026048A2 (ko)
WO (1) WO2019245797A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146823B2 (en) * 2019-06-25 2021-10-12 Qualcomm Incorporated Signalling chroma quantization parameter (QP) mapping tables
WO2021101356A1 (ko) * 2019-11-22 2021-05-27 한국전자통신연구원 참조 픽처의 해상도를 이용하는 비디오 처리 방법, 장치 및 기록 매체

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8542736B2 (en) 2006-10-18 2013-09-24 Thomson Licensing Method and apparatus for video coding using prediction data refinement
KR20120045369A (ko) * 2010-10-29 2012-05-09 에스케이 텔레콤주식회사 쿼드 트리 기반으로 블록 필터 정보를 부호화/복호화하는 영상 부호화/복호화 장치 및 방법
US9693070B2 (en) * 2011-06-24 2017-06-27 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
EP4161078A1 (en) 2011-11-11 2023-04-05 GE Video Compression, LLC Effective wedgelet partition coding using spatial prediction
US10397616B2 (en) * 2012-09-28 2019-08-27 Vid Scale, Inc. Cross-plane filtering for chroma signal enhancement in video coding
US9143797B2 (en) * 2013-05-29 2015-09-22 Blackberry Limited Lossy data compression with conditional reconstruction refinement
CA2942336A1 (en) 2014-03-10 2015-09-17 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
US10038919B2 (en) * 2014-05-29 2018-07-31 Apple Inc. In loop chroma deblocking filter
US20160088298A1 (en) 2014-09-22 2016-03-24 Ximin Zhang Video coding rate control including target bitrate and quality control
CN107810632B (zh) 2015-05-06 2020-06-23 Ng编译码器股份有限公司 具有降低代价的块分割和细化的帧内模式选择的帧内预测处理器
WO2017123487A1 (en) * 2016-01-15 2017-07-20 Vid Scale, Inc. System and method for enhanced motion compensation using adaptive filtering
WO2018070914A1 (en) 2016-10-12 2018-04-19 Telefonaktiebolaget Lm Ericsson (Publ) Residual refinement of color components
CN111837385B (zh) 2018-01-29 2024-04-30 交互数字Vc控股公司 利用重构画面的细化进行编码和解码

Also Published As

Publication number Publication date
US20210258586A1 (en) 2021-08-19
CN112789853A (zh) 2021-05-11
BR112020026048A2 (pt) 2021-03-23
WO2019245797A1 (en) 2019-12-26
JP2021528004A (ja) 2021-10-14
US11611765B2 (en) 2023-03-21
US20230188734A1 (en) 2023-06-15
EP3811620A1 (en) 2021-04-28

Similar Documents

Publication Publication Date Title
CN113228650B (zh) 基于块的表面的视频编码或解码的量化
CN112970264A (zh) 基于相邻样本相关参数模型的译码模式的简化
US20230188734A1 (en) Refinement mode processing in video encoding and decoding
CN114208178A (zh) 用于视频编码和解码的二次变换
KR20210020915A (ko) 이미지 블록들의 비대칭 이진 파티셔닝에 기초한 비디오 인코딩 및 디코딩을 위한 방법 및 장치
US20210400276A1 (en) Quantization for video encoding and decoding
EP4035357A1 (en) Method and apparatus using homogeneous syntax with coding tools
JP2023543985A (ja) 多用途ビデオコーディングのためのテンプレートマッチング予測
KR20210058938A (ko) 픽처 인코딩 및 디코딩을 위한 방법 및 디바이스
CN113647111A (zh) 环内重整形自适应重整形方向
KR20220053516A (ko) 비디오 인코딩 및 디코딩에 대한 인트라 예측
EP4221201A1 (en) Encoding and decoding with refinement of the reconstructed picture
JP2024513873A (ja) 切り替え可能な補間フィルタを用いる幾何学的分割
JP2023516940A (ja) ローカルクロマ量子化パラメータ制御のための高レベルの制約フラグ
CN114930819A (zh) 三角形合并模式中的子块合并候选
EP3627837A1 (en) Refinement mode processing in video encoding and decoding
JP2022548495A (ja) 複数参照ラインイントラ予測を用いた最確モードのシグナリング
EP3518538A1 (en) A method and a device for encoding and decoding a picture part
KR20210019454A (ko) 비디오 코딩에서의 조명 보상
CN117716689A (zh) 用于abt的vvc规范性和编码器侧适配
CN118140481A (zh) 利用isp模式对基于模版的帧内模式推导(timd)进行扩展
KR20220057630A (ko) 코딩 툴들과의 변환 크기 상호작용들
CN114073093A (zh) 三角形分割的合并索引的信令通知
CN114270849A (zh) 具有色度缩放的亮度映射(lmcs)lut扩展和裁剪
CN115336267A (zh) 用于联合色度编码块的缩放过程