KR20200002035A - 듀얼 디블로킹 필터 임계값들 - Google Patents

듀얼 디블로킹 필터 임계값들 Download PDF

Info

Publication number
KR20200002035A
KR20200002035A KR1020197035627A KR20197035627A KR20200002035A KR 20200002035 A KR20200002035 A KR 20200002035A KR 1020197035627 A KR1020197035627 A KR 1020197035627A KR 20197035627 A KR20197035627 A KR 20197035627A KR 20200002035 A KR20200002035 A KR 20200002035A
Authority
KR
South Korea
Prior art keywords
deblocking
current
identifying
block
threshold index
Prior art date
Application number
KR1020197035627A
Other languages
English (en)
Other versions
KR102294438B1 (ko
Inventor
징닝 한
야오우 쑤
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200002035A publication Critical patent/KR20200002035A/ko
Application granted granted Critical
Publication of KR102294438B1 publication Critical patent/KR102294438B1/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • 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
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter

Abstract

듀얼 디블로킹 필터 임계값들을 사용하는 비디오 코딩은 부호화된 비트스트림을 복호화함으로써 재구성된 프레임을 생성하고, 재구성된 프레임을 출력하는 것을 포함한다. 복호화는, 부호화된 비트스트림의 일부를 복호화하여 복호화된 블록을 생성하는 것, 부호화된 비트스트림으로부터 제1 디블로킹 임계값 인덱스를 식별하는 것, 부호화된 비트스트림으로부터 제2 디블로킹 임계값 인덱스를 식별하는 것, 복호화된 블록에 기초하여 재구성된 블록을 생성하는 것, 및 재구성된 프레임 내에 재구성된 블록을 포함시키는 것을 포함할 수 있다. 재구성된 블록을 생성하는 것은 제1 디블로킹 임계값 인덱스 및 제2 디블로킹 임계값 인덱스에 기초한 디블로킹을 포함할 수 있다.

Description

듀얼 디블로킹 필터 임계값들
디지털 비디오는, 예를 들어, 화상 회의, 고화질 비디오 엔터테인먼트, 비디오 광고들 또는 사용자 생성 비디오들의 공유를 통한 원격 비즈니스 미팅들에 사용될 수 있다. 비디오 데이터와 관련된 많은 양의 데이터로 인해, 고성능 압축이 전송 및 저장에 유리할 수 있다. 따라서, 듀얼 디블로킹 필터(dual deblocking filter) 임계값들을 사용하여 비디오 코딩과 같은 제한된 대역폭을 갖는 통신 채널을 통해 전송되는 고해상도 비디오를 제공하는 것이 유리할 것이다.
본 출원은 전송 또는 저장을 위한 비디오 스트림 데이터의 부호화 및 복호화에 관한 것이다. 듀얼 디블로킹 필터 임계값들을 사용하여 부호화 및 복호화하기 위한 시스템들, 방법들 및 장치들의 양태들이 본 명세서에 개시된다.
일 양태는 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 복호화 방법이다. 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 복호화는 부호화된 비트스트림을 복호화함으로써 재구성된 프레임을 생성하고, 재구성된 프레임을 출력하는 것을 포함할 수 있다. 복호화는, 부호화된 비트스트림의 일부를 복호화하여 복호화된 블록을 생성하는 것, 부호화된 비트스트림으로부터 제1 디블로킹 임계값 인덱스를 식별하는 것, 부호화된 비트스트림으로부터 제2 디블로킹 임계값 인덱스를 식별하는 것, 복호화된 블록에 기초하여 재구성된 블록을 생성하는 것, 및 재구성된 프레임 내에 재구성된 블록을 포함시키는 것을 포함할 수 있다. 재구성된 블록을 생성하는 것은 제1 디블로킹 임계값 인덱스 및 제2 디블로킹 임계값 인덱스에 기초한 디블로킹을 포함할 수 있다.
다른 양태는 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 부호화 방법이다. 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 부호화는, 입력 프레임을 부호화하고 출력 비트스트림을 출력함으로써, 부호화된 프레임을 생성하는 것을 포함할 수 있다. 부호화는, 부호화된 프레임을 복호화함으로써 복호화된 프레임을 생성하는 것과, 복호화된 프레임을 재구성함으로써 재구성된 프레임을 생성하는 것, 및 부호화된 프레임과 제1 디블로킹 임계값 인덱스의 표시 및 제2 디블로킹 임계값 인덱스의 표시를 포함하는 출력 비트스트림을 생성하는 것을 포함할 수 있다. 복호화된 프레임을 재구성하는 것은 복호화된 프레임을 디블로킹하기 위해 복수의 디블로킹 임계값 인덱스들로부터 공동 디블로킹 임계값 인덱스를 식별하는 것, 복수의 디블로킹 임계값 인덱스들로부터 제1 디블로킹 임계값 인덱스를 식별하는 것 ― 여기서, 제1 디블로킹 임계값 인덱스를 식별하는 것은 디코딩된 프레임을 디블로킹하기 위해 공동 디블로킹 임계값 인덱스를, 제2 디블로킹 임계값 인덱스로서, 사용하는 것을 포함함 ― , 및 복수의 디블로킹 임계값 인덱스들로부터 제2 디블로킹 임계값 인덱스를 식별하는 것 ― 여기서, 제2 디블로킹 임계값 인덱스를 식별하는 것은 복호화된 프레임을 디블로킹하기 위해 제1 디블로킹 임계값 인덱스를 사용하는 것을 포함함 ― 을 포함한다.
다른 양태는 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 부호화 방법이다. 듀얼 디블로킹 필터 임계값들을 사용하는 비디오 부호화는, 부호화된 비트스트림의 일부를 복호화하여 복호화된 블록들을 포함하는 복호화된 프레임을 생성함으로써 재구성된 프레임을 생성하는 것과, 부호화된 비트스트림으로부터 제1 디블로킹 임계값 인덱스를 식별하는 것과, 부호화된 비트스트림으로부터 제2 디블로킹 임계값 인덱스를 식별하는 것 ― 제2 디블로킹 임계값 인덱스는 제1 디블로킹 임계값 인덱스와 상이함 ― , 제1 디블로킹 임계값 인덱스에 기초하여 제1 방향에서 복호화된 프레임을 디블로킹함으로써 부분적으로 디블로킹된 프레임을 생성하는 것, 및 제2 디블로킹 임계값 인덱스에 기초하여 제2 방향에서 부분적으로 디블로킹된 프레임을 디블로킹함으로써 재구성된 프레임을 생성하는 것을 포함할 수 있다. 상기 방법은 재구성된 프레임을 출력하는 것을 포함할 수 있다.
이들 및 다른 양태들의 변형들은 이후에 추가로 상세하게 설명될 것이다.
본 명세서의 상세한 설명은, 달리 언급하지 않는 한, 몇개의 도면들에 걸쳐 유사한 도면 번호들이 유사한 부분들을 나타내는 첨부된 도면을 참조한다.
도 1는 본 발명의 구현예들에 따른 컴퓨팅 디바이스를 나타내는 도면이다.
도 2는 본 발명의 구현예들에 따른 컴퓨팅 및 통신 시스템들을 나타내는 도면이다.
도 3은 본 발명의 구현예들에 따라 부호화 및 복호화에 사용하기 위한 비디오 스트림을 나타내는 도면이다.
도 4는 본 발명의 구현예들에 따른 인코더를 나타내는 블록도이다.
도 5는 본 발명의 구현예들에 따른 디코더를 나타내는 블록도이다.
도 6은 본 발명의 구현예들에 따른 일부 프레임을 나타내는 블록도이다.
도 7은 본 발명의 구현예들에 따라 블록 경계들을 포함하는 입력 프레임 일부의 예를 도시한다.
도 8은 본 발명의 구현예들에 따라 블록 아티팩트들(block artifacts)을 포함하는 재구성된 프레임 일부의 예를 도시한다.
도 9는 본 발명의 구현예들에 따라 픽셀들의 행에 대해 픽셀 입도(pixel granularity)를 갖는 블록 아티팩트들을 포함하여 재구성된 프레임의 일부의 예를 도시한다.
도 10은 본 발명의 구현예들에 따라 픽셀들의 열에 대해 픽셀 입도를 갖는 블록 아티팩트들을 포함하여 재구성된 프레임의 일부의 예를 도시한다.
도 11는 본 발명의 구현예들에 따라 듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 예를 나타내는 흐름도이다.
도 12는 본 발명의 구현예들에 따라 디블로킹 임계값 인덱스들을 식별하는 예를 나타내는 흐름도이다.
도 13은 본 발명의 구현예들에 따라 디블로킹 임계값 인덱스를 식별하는 예를 나타내는 흐름도이다.
도 14는 본 발명의 구현예들에 따라 현재 에러 메트릭(current error metric)을 결정하는 예를 나타내는 흐름도이다.
도 15는 본 발명의 구현예들에 따라 현재 블록을 디블로킹하는 예를 나타내는 흐름도이다.
도 16은 본 발명의 구현예들에 따라 듀얼 디블로킹 필터 임계값들을 사용하는 복호화의 예를 나타내는 흐름도이다.
비디오 압축 기법들은 각각의 이미지 또는 프레임을 블록들과 같은 더 작은 부분으로 나누고, 출력에서 각 블록에 포함된 정보를 제한하는 기술들을 사용하여 출력 비트스트림을 생성하는 것을 포함할 수 있다. 일부 구현예들에서, 출력에서 각각의 블록에 포함된 정보는 공간적 중복 감소나, 시간적 중복 감소, 또는 이들의 조합에 의해 제한될 수 있다. 예를 들어, 시간적 또는 공간적 중복들은 인코더 및 디코더 모두에 이용 가능한 정보에 기초하여 프레임을 예측하고, 예측된 프레임과 원본 프레임간의 차이 또는 잔차(residual)를 나타내는 정보를 포함함으로써 감소될 수 있다. 잔차 정보를 변환 계수들로 변환하고, 변환 계수들을 양자화하고, 양자화된 변환 계수들을 엔트로피 코딩(entropy coding)함으로써, 잔차 정보가 추가로 압축될 수도 있다.
제한된 정보로부터 블록들 및 원본 이미지들(source images)을 재생성하기 위해 부호화된 비트스트림이 복호화될 수 있다. 복호화된 프레임에는 양자화로 인한 블록 경계들을 가로지르는 블록 아티팩트들과 같은 아티팩트들이 포함될 수 있다. 아티팩트들을 감소시키기 위해, 디블로킹 필터를 사용하는 것과 같이, 복호화된 프레임은 수직 블록 경계들 및 수평 블록 경계들과 같은 블록 경계들을 따라 필터링될 수 있다. 블록 경계들에 정렬되는 입력 이미지로부터 객체 가장자리와 같은 가장자리 컨텐츠를 유지하기 위해, 필터링은 각각의 블록 경계를 필터링할지 여부를 결정하고 대응하는 필터링 파라미터들을 식별하기 위한 임계값들을 식별할 수 있다. 하나의 임계값들의 세트를 사용하여 수직 블록 경계들 및 수평 블록 경계들을 모두 필터링하는 것은 필터링의 정확도가 제한되고 부호화 품질이 저하될 수 있다.
듀얼 디블로킹 필터 임계값들을 사용하는 비디오 코딩은, 예컨대, 수직 블록 경계들을 따르는 제1 방향으로 필터링하기 위한 제1 최적 필터 임계값들의 세트를 식별하고, 예컨대, 수평 블록 경계들을 따르는 제2 방향으로 필터링하기 위한 제2 최적 필터 임계값들의 세트를 식별함으로써, 정확도 및 부호화 품질을 향상시킬 수 있다. 인코더는 수직 블록 경계들을 필터링하기 위해 식별된 필터 임계값들의 세트에 대응하는 디블로킹 임계값 인덱스와, 수평 블록을 필터링하기 위해 식별된 필터 임계값들의 세트에 대응하는 다른 디블로킹 임계값 인덱스를 식별할 수 있다. 인코더는 부호화된 비트스트림에서 디블로킹 임계값 인덱스들을 나타내는 정보를 포함할 수 있다. 디코더는 부호화된 비트스트림으로부터 디블로킹 임계값 인덱스들을 표시하는 정보를 추출하고, 대응하는 필터 임계값들을 식별하며, 제1 방향의 제1 필터 임계값들의 세트 및 제2 방향의 제2 필터 임계값들의 세트를 사용하여 복호화된 프레임을 디블로킹할 수 있다.
도 1은 본 발명의 구현예들에 따른 컴퓨팅 디바이스(100)를 나타내는 도면이다. 도시된 컴퓨팅 디바이스(100)는 메모리(110), 프로세서(120), UI(User Interface)(130), 전자 통신 유닛(140), 센서(150), 전원(160) 및 버스(170)를 포함한다. 본 명세서에서 사용되는 용어 "컴퓨팅 디바이스"는 본 명세서에 개시된 임의의 방법 또는 어느 부분 또는 부분들을 수행할 수 있는 임의의 유닛 또는 유닛들의 조합을 포함한다.
컴퓨팅 디바이스(100)는 PC(Personal Computer), 서버, 워크스테이션, 미니컴퓨터 또는 메인프레임 컴퓨터와 같은 고정형 컴퓨팅 디바이스일 수 있고; 또는 모바일 전화, PDA(Personal Digital Assistant), 랩탑 또는 태블릿 PC와 같은 모바일 컴퓨팅 디바이스일 수 있다. 단일 유닛으로 도시되어 있지만, 컴퓨팅 디바이스(100)의 임의의 하나의 요소나 요소들은 임의 수의 개별적인 물리 유닛들에 통합될 수 있다. 예를 들어, UI(130) 및 프로세서(120)는 제1 물리적 유닛에 통합될 수 있고, 메모리(110)는 제2 물리적 유닛에 통합될 수 있다.
메모리(110)는, 예를 들어, 데이터(112), 명령어들(114), 운영 시스템(116), 또는 컴퓨팅 디바이스(100)의 다른 구성 요소들에 의해 또는 다른 구성 요소들과 관련하여 사용하기 위한 그와 관련된 임의의 정보를 포함, 저장, 통신 또는 전송할 수 있는 임의의 유형의 디바이스와 같은 임의의 비일시적 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체를 포함할 수 있다. 비일시적 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는, 예를 들어, 고체 상태 드라이브, 메모리 카드, 이동식 매체, ROM(Read-Only Memory), RAM(Random-Access Memory), 임의 유형의 디스크 ― 하드 디스크, 플로피 디스크, 광 디스크, 자기 또는 광학 카드, ASIC(Application-Specific Integrated Circuit)들, 또는 전자 정보를 저장하기에 적합한 임의 유형의 비일시적 매체를 포함함 ―, 또는 이들의 임의의 조합일 수 있다.
단일 유닛으로 도시되었지만, 메모리(110)는 랜덤 액세스 메모리 유닛들과 같은 하나 이상의 기본 메모리 유닛들과, 디스크들과 같은 하나 이상의 보조 데이터 저장 유닛들, 또는 이들의 조합과 같은 다수의 물리적 유닛들을 포함할 수 있다. 예를 들어, 데이터(112) 또는 그 일부, 명령어들(114) 또는 그 일부, 또는 양쪽 모두는 보조 저장 유닛에 저장될 수 있고, 각각의 데이터(112)를 처리하는 것, 각각의 명령어들(114)을 실행하는 것, 또는 양쪽 모두와 관련하여 기본 저장 유닛으로 로딩되거나 전송될 수 있다. 일부 구현예들에서, 메모리(110) 또는 그 일부는 제거 가능한 메모리일 수 있다.
데이터(112)는 입력 오디오 데이터, 부호화된 오디오 데이터, 복호화된 오디오 데이터 등과 같은 정보를 포함할 수 있다. 명령어들(114)은 본 명세서에 개시된 임의의 방법 또는 그 일부 또는 그 일부들을 수행하기 위한 코드와 같은 지시들(directions)을 포함할 수 있다. 명령어들(114)은 하드웨어, 소프트웨어 또는 이들의 임의의 조합으로 실현될 수 있다. 예를 들어, 명령어들(114)은 컴퓨터 프로그램과 같은, 메모리(110)에 저장된 정보로서 구현될 수 있고, 본 명세서에 설명된 바와 같이, 각각의 방법들, 알고리즘들, 양태들 또는 이들의 조합들 중 어느 하나를 수행하도록 프로세서(120)에 의해 실행될 수 있다.
메모리(110)에 포함된 것으로 도시되어 있지만, 일부 구현예들에서, 명령어들(114) 또는 그 일부는, 본 명세서에 기재된 바와 같이, 방법들, 알고리즘들, 양태들 또는 이들의 조합들 중 어느 하나를 수행하기 위한 특수 하드웨어를 포함할 수 있는 특수 목적 프로세서 또는 회로로서 구현될 수 있다. 명령어들(114)의 일부들은 동일한 기계 또는 상이한 기계 상의 다수의 프로세서들에 걸쳐 또는 근거리 통신망, 광역 통신망, 인터넷 또는 이들의 조합과 같은 네트워크를 통해 배포될 수 있다.
프로세서(120)는 광학 프로세서들, 양자 프로세서들, 분자 프로세서들 또는 이들의 조합을 포함하여 현재 존재하거나 이후에 개발되는 디지털 신호 또는 다른 전자 정보를 조작 또는 처리할 수 있는 임의의 디바이스나 시스템을 포함할 수 있다. 예를 들어, 프로세서(120)는 특수 목적 프로세서, CPU(Central Processing Unit), DSP(Digital Signal Processor), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로프로세서, 컨트롤러, 마이크로컨트롤러, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), 프로그래머블 로직 어레이(programmable logic array), 프로그래머블 로직 컨트롤러, 마이크로코드(microcode), 펌웨어(firmware), 모든 유형의 집적 회로(IC), 상태 머신 또는 이들의 조합을 포함할 수 있다. 본 명세서에 사용되는 용어 "프로세서"는 단일 프로세서 또는 다중 프로세서들을 포함한다.
UI(130)는 가상 또는 물리적 키패드(keypad), 터치패드(touchpad), 디스플레이, 터치 디스플레이, 스피커, 마이크로폰, 비디오카메라, 센서 또는 이들의 임의의 조합과 같은, 사용자와 인터페이싱할 수 있는 임의의 유닛을 포함할 수 있다. 예를 들어, UI(130)는 시청각 디스플레이 디바이스일 수 있고, 컴퓨팅 디바이스(100)는 복호화된 비디오와 같이 비디오를 디스플레이하는 것과 함께 UI(130) 시청각 디스플레이 디바이스를 사용하여 복호화된 오디오와 같은 오디오를 표시할 수 있다. UI(130)는, 단일 유닛으로 도시되어 있지만, 하나 이상의 물리적 유닛들을 포함할 수 있다. 예를 들어, UI(130)는 사용자와 오디오 통신을 수행하기 위한 오디오 인터페이스 및 사용자와 시각적 및 터치 기반 통신을 수행하기 위한 터치 디스플레이를 포함할 수 있다.
전자 통신 유닛(140)은 RF(Radio Frequency) 통신 매체, UV(Ultraviolet) 통신 매체, 가시광 통신 매체, 광섬유 통신 매체, 유선 통신 매체 또는 이들의 조합과 같은 유선 또는 무선 전자 통신 매체(180)를 통해 신호들을 송신하거나 수신하거나 송수신할 수 있다. 예를 들어, 도시된 바와 같이, 전자 통신 유닛(140)은 무선 신호를 통해 통신하도록 구성된 안테나와 같은 전자 통신 인터페이스(142)에 작동 가능하게 연결된다.
도 1에서는 전자 통신 인터페이스(142)가 무선 안테나로서 도시되어 있지만, 전자 통신 인터페이스(142)는 도시된 바와 같은 무선 안테나이거나, 이더넷 포트(Ethernet port)와 같은 유선 통신 포트, 적외선 포트, 직렬 포트, 또는 유무선 전자 통신 매체(180)와 인터페이싱할 수 있는 임의의 다른 유무선 유닛일 수 있다. 도 1은 단일 전자 통신 유닛(140) 및 단일 전자 통신 인터페이스(142)를 도시하지만, 임의 수의 전자 통신 유닛 및 임의 수의 전자 통신 인터페이스가 사용될 수 있다.
센서(150)는, 예를 들어, 오디오 감지 디바이스, 가시광 감지 디바이스, 모션 감지 디바이스 또는 이들의 조합을 포함할 수 있다. 예를 들어, 센서(150)는 마이크로폰과 같은 사운드 감지 디바이스나, 컴퓨팅 디바이스(100)를 조작하는 사용자에 의해 생성된 음성 또는 다른 발언들(utterances)과 같은, 컴퓨팅 디바이스(100) 근처에서 소리를 감지할 수 있는 현재 존재하거나 이후에 개발될 임의의 다른 사운드 감지 디바이스를 포함할 수 있다. 다른 예에서, 센서(150)는 카메라나, 컴퓨팅 디바이스를 조작하는 사용자의 이미지와 같은, 이미지를 감지할 수 있는 현재 존재하거나 이후에 개발될 임의의 다른 이미지 감지 디바이스를 포함할 수 있다. 단일 센서(150)가 도시되어 있지만, 컴퓨팅 디바이스(100)는 다수의 센서들(150)를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는 컴퓨팅 디바이스(100)의 사용자를 향한 시야를 지향하는 제1 카메라와, 컴퓨팅 디바이스(100)의 사용자로부터 멀어지는 시야를 지향하는 제2 카메라를 포함할 수 있다.
전원(160)은 컴퓨팅 디바이스(100)에 전력을 공급하기 위한 임의의 적절한 디바이스일 수 있다. 예를 들어, 전원(160)은 유선 외부 전원 인터페이스; 니켈-카드뮴(NiCd), 니켈-아연(NiZn), 니켈 금속 수소화물(NiMH), 리튬 이온(Li-ion)과 같은 하나 이상의 건전지 배터리들; 태양 전지들; 연료 전지들; 또는 컴퓨팅 디바이스(100)에 전력을 공급할 수 있는 임의의 다른 디바이스를 포함할 수 있다. 단일 전원(160)이 도 1에 도시되어 있지만, 컴퓨팅 디바이스(100)는 배터리 및 유선 외부 전원 인터페이스와 같은 다중 전원들(160)을 포함할 수 있다.
별도의 유닛들로 도시되어 있지만, 전자 통신 유닛(140), 전자 통신 인터페이스(142), UI(130), 전원(160) 또는 그 일부들은 결합된 유닛으로 구성될 수 있다. 예를 들어, 전자 통신 유닛(140), 전자 통신 인터페이스(142), UI(130) 및 전원(160)은 외부 디스플레이 디바이스와 인터페이싱하여 통신들, 전원 또는 양쪽 모두를 제공할 수 있는 통신 포트들로 구현될 수 있다.
메모리(110), 프로세서(120), UI(130), 전자 통신 유닛(140), 센서(150) 또는 전원(160) 중 하나 이상이 버스(170)를 통해 동작 가능하게 결합될 수 있다. 단일 버스(170)가 도 1에 도시되어 있지만, 컴퓨팅 디바이스(100)는 다수의 버스들을 포함할 수 있다. 예를 들어, 메모리(110), 프로세서(120), UI(130), 전자 통신 유닛(140), 센서(150) 및 버스(170)는 버스(170)를 통해 전원(160)으로부터 전력을 공급받을 수 있다. 다른 예에서, 메모리(110), 프로세서(120), UI(130), 전자 통신 유닛(140), 센서(150), 전원(160) 또는 이들의 조합은, 예컨대, 버스(170)를 통해 전자 신호를 송수신함으로써 데이터 통신을 할 수 있다.
도 1에는 개별적으로 도시되지 않았지만, 프로세서(120), UI(130), 전자 통신 유닛(140), 센서(150) 또는 전원(160) 중 하나 이상이 내부 버퍼 또는 레지스터와 같은 내부 메모리를 포함할 수 있다. 예를 들어, 프로세서(120)는 내부 메모리(도시하지 않음)를 포함할 수 있고, 프로세싱을 위해 메모리(110)로부터 내부 메모리(미도시)로 데이터(112)를 판독할 수 있다.
별개의 요소들로 도시되어 있지만, 메모리(110), 프로세서(120), UI(130), 전자 통신 유닛(140), 센서(150), 전원(160) 및 버스(170) 또는 이들의 임의의 조합은 하나 이상의 전자 유닛들, 회로들 또는 칩들에 통합될 수 있다.
도 2는 본 발명의 구현예들에 따른 컴퓨팅 및 통신 시스템(200)을 나타내는 도면이다. 도시된 컴퓨팅 및 통신 시스템(200)은 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C), 액세스 포인트들(210A, 210B) 및 네트워크(220)를 포함한다. 예를 들어, 컴퓨팅 및 통신 시스템(200)은 음성, 오디오, 데이터, 비디오, 메시징, 방송 또는 이들의 조합과 같은 통신을 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)과 같은 하나 이상의 유선 또는 무선 통신 디바이스들에 제공하는 다중 액세스 시스템일 수 있다. 간략화를 위해, 도 2는 3 개의 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C), 2 개의 액세스 포인트들(210A, 210B) 및 1 개의 네트워크(220)를 도시하지만, 임의 수의 컴퓨팅 및 통신 디바이스들, 액세스 포인트들 및 네트워크들이 사용될 수 있다.
컴퓨팅 및 통신 디바이스(100A, 100B, 100C)는, 예를 들어, 도 1에 도시된 컴퓨팅 디바이스(100)와 같은 컴퓨팅 디바이스일 수 있다. 예를 들어, 컴퓨팅 및 통신 디바이스들(100A, 100B)은 모바일 컴퓨팅 디바이스, 랩톱, 신 클라이언트(thin client) 또는 스마트 폰과 같은 사용자 디바이스들일 수 있고, 컴퓨팅 및 통신 디바이스(100C)는 메인프레임 또는 클러스터와 같은 서버일 수 있다. 컴퓨팅 및 통신 디바이스(100A) 및 컴퓨팅 및 통신 디바이스(100B)는 사용자 디바이스들로서 기술되고, 컴퓨팅 및 통신 디바이스(100C)는 서버로서 기술되지만, 임의의 컴퓨팅 및 통신 디바이스는 서버의 기능들 중 일부 또는 전부나, 사용자 디바이스의 기능들 중 일부 또는 전부, 또는 서버 및 사용자 디바이스의 기능들 중 일부 또는 전부를 수행할 수 있다. 예를 들어, 서버 컴퓨팅 및 통신 디바이스(100C)는 오디오 데이터를 수신하거나, 부호화하거나, 처리하거나, 저장하거나, 전송하거나, 이들의 조합일 수 있고, 컴퓨팅 및 통신 디바이스(100A)와 컴퓨팅 및 통신 디바이스(100B) 중 하나 또는 양쪽 모두는 오디오 데이터를 수신하거나, 복호화하거나, 처리하거나, 저장하거나, 표시하거나 또는 이들의 조합일 수 있다.
사용자 장비(UE), 이동국, 고정 또는 이동 가입자 유닛, 셀룰러 전화, 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 가전 제품, 또는 임의의 유사한 디바이스를 포함할 수 있는 각각의 컴퓨팅 및 통신 디바이스(100A, 100B, 100C)는 네트워크(220)를 통하는 것과 같은 유선 또는 무선 통신을 수행하도록 구성될 수 있다. 예를 들어, 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)은 유선 또는 무선 통신 신호를 송신 또는 수신하도록 구성될 수 있다. 각각의 컴퓨팅 및 통신 디바이스(100A, 100B, 100C)가 단일 유닛으로서 도시되어 있지만, 컴퓨팅 및 통신 디바이스는 임의 수의 상호 연결된 요소들을 포함할 수 있다.
각각의 액세스 포인트(210A, 210B)는 유선 및 무선 통신 링크들(180A, 180B, 180C)을 통해 컴퓨팅 및 통신 디바이스(100A, 100B, 100C)나, 네트워크(220) 또는 양쪽 모두와 통신하도록 구성된 임의 유형의 디바이스일 수 있다. 예를 들어, 액세스 포인트(210A, 210B)는 기지국, BTS(Base Transceiver Station), Node-B, 강화 Node-B(eNode-B), Home Node-B(HNode-B), 무선 라우터, 유선 라우터, 허브, 중계기, 스위치 또는 이와 유사한 유무선 디바이스를 포함할 수 있다. 각각의 액세스 포인트(210A, 210B)가 단일 유닛으로 도시되어 있지만, 액세스 포인트는 임의 수의 상호 연결된 구성 요소들을 포함할 수 있다.
네트워크(220)는 유선 또는 무선 통신 링크를 통해 음성, 데이터, 애플리케이션, VoIP(Voice over Internet Protocol), 또는 임의의 다른 통신 프로토콜 또는 통신 프로토콜의 조합과 같은 서비스를 제공하도록 구성된 임의 유형의 네트워크일 수 있다. 예를 들어, 네트워크(220)는 LAN(Local Area Network), WAN(Wide Area Network), VPN(Virtual Private Network), 모바일 또는 셀룰러 전화 네트워크, 인터넷 또는 다른 전자 통신 수단일 수 있다. 네트워크는 TCP(Transmission Control Protocol), UDP(User Datagram Protocol), IP(Internet Protocol), RTP(Real-time Transport Protocol), HTTP(HyperText Transport Protocol), 또는 이들의 조합과 같은 통신 프로토콜을 사용할 수 있다.
컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)은 하나 이상의 유선 또는 무선 통신 링크들을 사용하는 네트워크(220)를 통해, 또는 유선 및 무선 통신 링크들의 조합을 통해 서로 통신할 수 있다. 예를 들어, 도시된 바와 같이, 컴퓨팅 및 통신 디바이스들(100A, 100B)은 무선 통신 링크들(180A, 180B)를 통해 통신할 수 있고, 컴퓨팅 및 통신 디바이스(100C)는 유선 통신 링크(180C)를 통해 통신할 수 있다. 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C) 중 임의의 것이 임의의 유선 또는 무선 통신 링크나 링크들을 사용하여 통신할 수 있다. 예를 들어, 제1 컴퓨팅 및 통신 디바이스(100A)는 제1 유형의 통신 링크를 사용하여 제1 액세스 포인트(210A)를 통해 통신할 수 있고, 제2 컴퓨팅 및 통신 디바이스(100B)는 제2 유형의 통신 링크를 사용하여 제2 액세스 포인트(210B)를 통해 통신할 수 있으며, 제3 컴퓨팅 및 통신 디바이스(100C)는 제3 유형의 통신 링크를 사용하여 제3 액세스 포인트(도시되지 않음)를 통해 통신할 수 있다. 마찬가지로, 액세스 포인트들(210A, 210B)은 하나 이상의 유선 또는 무선 통신 링크들(230A, 230B)의 유형을 통해 네트워크(220)와 통신할 수 있다. 도 2는 네트워크(220)를 통해 통신하는 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)을 도시하지만, 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)은 직접 유선 또는 무선 통신 링크와 같은 임의 수의 통신 링크들을 통해 서로 통신할 수 있다.
일부 구현예들에서, 하나 이상의 컴퓨팅 및 통신 디바이스(100A, 100B, 100C) 간의 통신들은 네트워크(220)를 통한 통신을 생략할 수 있고, 데이터 저장 디바이스와 같은 다른 매체(도시하지 않음)를 통해 데이터를 전송하는 것을 포함할 수 있다. 예를 들어, 서버 컴퓨팅 및 통신 디바이스(100C)는 부호화된 오디오 데이터와 같은 오디오 데이터를 휴대용 데이터 저장 유닛과 같은 데이터 저장 디바이스에 저장할 수 있고, 컴퓨팅 및 통신 디바이스(100A)나 컴퓨팅 및 통신 디바이스(100B) 중 하나 또는 양쪽 모두는 데이터 저장 디바이스를 서버 컴퓨팅 및 통신 디바이스(100C)로부터 물리적으로 분리하고, 데이터 저장 디바이스를 컴퓨팅 및 통신 디바이스(100A)나 컴퓨팅 및 통신 디바이스(100B)에 물리적으로 연결함으로써 저장된 오디오 데이터를 데이터 저장 유닛으로부터 액세스, 판독 또는 검색할 수 있다.
컴퓨팅 및 통신 시스템(200)의 다른 구현예들이 가능하다. 예를 들어, 구현예에서, 네트워크(220)는 애드혹 네트워크(ad-hoc network)일 수 있고, 하나 이상의 액세스 포인트들(210A, 210B)을 생략할 수 있다. 컴퓨팅 및 통신 시스템(200)은 도 2에 도시되지 않은 디바이스들, 유닛들 또는 구성 요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 및 통신 시스템(200)은 더 많은 통신 디바이스들, 네트워크들 및 액세스 포인트들을 포함할 수 있다.
도 3은 본 발명의 구현예들에 따라 부호화 및 복호화에 사용하기 위한 비디오 스트림(300)을 나타내는 도면이다. 비디오카메라에 의해 캡처된 비디오 스트림이나 컴퓨팅 디바이스에 의해 생성된 비디오 스트림과 같은 비디오 스트림(300)은 비디오 시퀀스(310)를 포함할 수 있다. 비디오 시퀀스(310)는 인접 프레임들(320)의 시퀀스를 포함할 수 있다. 3 개의 인접 프레임들(320)이 도시되어 있지만, 비디오 시퀀스(310)는 임의 수의 인접 프레임들(320)을 포함할 수 있다.
인접한 프레임들(320) 중 각각의 프레임(330)은 비디오 스트림으로부터의 단일 이미지를 나타낼 수 있다. 도 3에 도시되지 않지만, 프레임(330)은 하나 이상의 세그먼트들(segments), 타일들(tiles) 또는 평면들(planes)을 포함할 수 있으며, 이는 병렬과 같이 독립적으로 코딩될 수 있거나 달리 처리될 수 있다. 프레임(330)은 블록들(340)을 포함할 수 있다. 도 3에 도시되지 않았지만, 블록은 픽셀들을 포함할 수 있다. 예를 들어, 블록은 16×16 픽셀들의 그룹, 8×8 픽셀들의 그룹, 8×16 픽셀들의 그룹, 또는 임의의 다른 픽셀들의 그룹을 포함할 수 있다. 본 명세서에서 달리 지시되지 않는 한, 용어 "블록"은 수퍼블록(superblock), 매크로블록(macroblock), 세그먼트, 슬라이스 또는 프레임의 임의의 다른 부분을 포함할 수 있다. 프레임, 블록, 픽셀 또는 이들의 조합은 휘도 정보(luminance information), 색차 정보(chrominance information), 또는 비디오 스트림이나 그 일부를 저장, 수정, 통신 또는 디스플레이하는 데 사용될 수 있는 임의의 다른 정보와 같은 디스플레이 정보를 포함할 수 있다.
도 4는 본 발명의 구현예들에 따른 인코더(400)를 나타내는 블록도이다. 인코더(400)는, 예를 들어, 도 1에 도시된 메모리(110)와 같은 데이터 저장 유닛에 저장된 컴퓨터 소프트웨어 프로그램으로서, 도 1에 도시된 컴퓨팅 디바이스(100) 또는 도 2에 도시된 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)과 같은 디바이스에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은 도 1에 도시된 프로세서(120)와 같은 프로세서에 의해 실행될 수 있는 기계 명령어들을 포함할 수 있고, 본 명세서에 기술된 바와 같이, 디바이스로 하여금 비디오 데이터를 부호화하게 할 수 있다. 인코더(400)는, 예를 들어, 컴퓨팅 디바이스(100)에 포함된 특수 하드웨어로서 구현될 수 있다.
인코더(400)는 부호화된(압축된) 비트스트림(404)을 생성하기 위해, 도 3에 도시된 비디오 스트림(300)과 같은 비디오 스트림(402)을 부호화할 수 있다. 일부 구현예들에서, 인코더(400)는 압축된 비트스트림(404)을 생성하기 위한 순방향 경로를 포함할 수 있다. 순방향 경로는 인트라/인터 예측 유닛(intra/inter prediction unit)(410), 변환 유닛(420), 양자화 유닛(430), 엔트로피 부호화 유닛(entropy encoding unit)(440), 또는 이들의 임의의 조합을 포함할 수 있다. 일부 구현예들에서, 인코더(400)는 추가 블록들을 부호화하기 위해 프레임을 재구성하는 재구성 경로(파선들로 표시됨)를 포함할 수 있다. 재구성 경로는 역양자화 유닛(450), 역변환 유닛(460), 재구성 유닛(470), 필터링 유닛(480), 또는 이들의 임의의 조합을 포함할 수 있다. 인코더(400)의 다른 구조적 변형이 비디오 스트림(402)을 부호화하는 데 사용될 수 있다.
비디오 스트림(402)을 부호화하기 위해, 비디오 스트림(402) 내의 각각의 프레임은 블록들 단위로 처리될 수 있다. 따라서, 현재 블록은 프레임 내의 블록들로부터 식별될 수 있고, 현재 블록은 부호화될 수 있다.
인트라/인터 예측 유닛(410)에서, 현재 블록은 단일 프레임 내에 있을 수 있는 프레임 내 예측(intra-frame prediction) 또는 프레임마다 있을 수 있는 프레임간 예측(inter-frame prediction)을 사용하여 부호화될 수 있다. 프레임 내 예측은 이전에 부호화되고 재구성된 현재 프레임 내의 샘플들로부터 예측 블록을 생성하는 것을 포함할 수 있다. 프레임간 예측은 하나 이상의 사전 구성된 참조 프레임들의 샘플들로부터 예측 블록을 생성하는 것을 포함할 수 있다. 현재 프레임 내에서 현재 블록에 대한 예측 블록을 생성하는 것은 참조 프레임의 적절한 참조 부분을 나타내는 모션 벡터를 생성하기 위해 모션 추정을 수행하는 것을 포함할 수 있다.
인트라/인터 예측 유닛(410)은 현재 블록(원 블록(raw block))에서 예측 블록을 감산하여 잔차 블록을 생성할 수 있다. 변환 유닛(420)은, 예를 들어, 주파수 영역에서 잔차 블록을 변환 계수들로 변환하는 것을 포함할 수 있는 블록 기반 변환을 수행할 수 있다. 블록 기반 변환들의 예들로는 이산 카루넨-뢰브 변환(KLT: Karhunen-Lo
Figure pct00001
ve Transform), 이산 코사인 변환(DCT: Discrete Cosine Transform), 특이값 분해 변환(SVD: Singular Value Decomposition Transform) 및 비대칭 이산 사인 변환(ADST: Asymmetric Discrete Sine Transform)이 있다. 일 예에서, DCT는 블록을 주파수 영역으로 변환하는 것을 포함할 수 있다. DCT는 공간 주파수에 기초하여 행렬의 좌상단에서 최저 주파수(즉, DC) 계수 및 행렬의 우하단에서 최고 주파수 계수를 갖는 변환 계수값들을 사용하는 것을 포함할 수 있다.
양자화 유닛(430)은 변환 계수를 이산 양자값들로 변환할 수 있고, 이는 양자화된 변환 계수들 또는 양자화 레벨들로 지칭될 수도 있다. 양자화된 변환 계수들은 엔트로피 부호화된 계수들을 생성하기 위해 엔트로피 부호화 유닛(440)에 의해 엔트로피 부호화될 수 있다. 엔트로피 부호화는 확률 분포 메트릭(probability distribution metric)을 사용하는 것을 포함할 수 있다. 사용된 예측의 유형, 모션 벡터들 및 양자화기 값들(quantizer values)을 포함할 수 있는 블록을 복호화하는 데 사용된 엔트로피 부호화된 계수들 및 정보는 압축된 비트스트림(404)으로 출력될 수 있다. 압축된 비트스트림(404)은 RLE(Run-Length Encoding) 및 제로 런 코딩(zero-run coding)과 같은 다양한 기술을 사용하여 포맷될 수 있다.
재구성 경로는 인코더(400)와 도 5에 도시된 디코더(500)와 같은 대응하는 디코더 사이의 참조 프레임 동기화를 유지하는 데 사용될 수 있다. 재구성 경로는 후술하는 복호화 처리와 유사할 수 있고, 부호화된 프레임 또는 그 일부를 복호화하는 것을 포함할 수 있고, 부호화된 블록을 복호화하는 것을 포함할 수 있고, 역양자화 유닛(450)에서 양자화된 변환 계수들을 역양자화하고, 역변환 유닛(460)에서 역양자화된 변환 계수들을 역변환하여 미분 잔차 블록을 생성하는 것을 포함할 수 있다. 재구성 유닛(470)은 인트라/인터 예측 유닛(410)에 의해 생성된 예측 블록을 미분 잔차 블록에 추가하여 복호화된 블록을 생성할 수 있다. 필터링 유닛(480)은 재구성된 블록을 생성하기 위해 복호화된 블록에 적용될 수 있으며, 이는 블록 아티팩트들과 같은 왜곡을 감소시킬 수 있다. 하나의 필터링 유닛(480)이 도 4에 도시되어 있지만, 복호화된 블록을 필터링하는 것은 루프 필터링, 디블로킹 필터링이나, 다른 유형의 필터링, 또는 필터링 유형의 조합을 포함할 수 있다. 재구성된 블록은, 도면 부호 482의 파선으로 나타내는 바와 같이, 현재 프레임의 다른 부분, 다른 프레임, 또는 양쪽 모두를 부호화하기 위해 참조 프레임의 일부일 수 있는 재구성된 블록으로서 저장되거나, 그렇지 않으면 액세스 가능하게 될 수 있다. 도면 부호 484의 파선으로 나타내는 바와 같이, 프레임에 대한 디블로킹 임계값 인덱스값들과 같은 코딩 정보는 부호화되거나 압축된 비트스트림(404)에 포함되거나, 또는 양쪽 모두일 수 있다.
인코더(400)의 다른 변형은 압축된 비트스트림(404)을 부호화하는 데 사용될 수 있다. 예를 들어, 비변환 기반(non-transform based) 인코더(400)는 변환 유닛(420) 없이 직접 잔여 블록을 양자화할 수 있다. 일부 구현예들에서, 양자화 유닛(430) 및 역양자화 유닛(450)은 단일 유닛으로 결합될 수도 있다.
도 5는 본 발명의 구현예들에 따른 디코더(500)를 나타내는 블록도이다. 디코더(500)는, 예를 들어, 도 1에 도시된 메모리(110)와 같은 데이터 저장 유닛에 저장된 컴퓨터 소프트웨어 프로그램으로서, 도 1에 도시된 컴퓨팅 디바이스(100) 또는 도 2에 도시된 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)과 같은 디바이스에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은 도 1에 도시된 프로세서(120)와 같은 프로세서에 의해 실행될 수 있는 기계 명령어들을 포함할 수 있고, 본 명세서에 기술된 바와 같이, 디바이스로 하여금 비디오 데이터를 복호화하게 할 수 있다. 디코더(500)는, 예를 들어, 컴퓨팅 디바이스(100)에 포함된 특수 하드웨어로서 구현될 수 있다.
디코더(500)는 도 4에 도시된 압축된 비트스트림(404)과 같이, 압축된 비트스트림(502)을 수신하고, 출력 비디오 스트림(504)을 생성하기 위해 압축된 비트스트림(502)을 복호화할 수 있다. 디코더(500)는 엔트로피 복호화 유닛(510), 역양자화 유닛(520), 역변환 유닛(530), 인트라/인터 예측 유닛(540), 재구성 유닛(550), 필터링 유닛(560), 또는 이들의 임의의 조합을 포함할 수 있다. 압축된 비트스트림(502)을 복호화하기 위해 디코더(500)의 다른 구조적 변형이 사용될 수 있다.
엔트로피 복호화 유닛(510)은, 예를 들어, 컨텍스트 적응 이진 산술 복호화(Context Adaptive Binary Arithmetic Decoding)를 이용하여 압축된 비트스트림(502) 내의 데이터 요소들을 복호화하여, 양자화된 변환 계수들의 세트를 생성할 수도 있다. 역양자화 유닛(520)은 양자화된 변환 계수들을 역양자화할 수 있고, 역변환 유닛(530)은 역양자화된 변환 계수들을 역변환하여 미분 잔차 블록(derivative residual block)을 생성할 수 있으며, 이는 도 4에 도시된 역변환 유닛(460)에 의해 생성된 미분 잔차 블록에 대응할 수 있다. 압축된 비트스트림(502)으로부터 복호화된 헤더 정보를 이용하여, 인트라/인터 예측 유닛(540)은 인코더(400)에서 생성된 예측 블록에 대응하는 예측 블록을 생성할 수 있다. 재구성 유닛(550)에서, 예측 블록은 미분 잔차 블록에 추가되어 복호화된 블록을 생성할 수 있다. 필터링 유닛(560)은 루프 필터링, 디블로킹 필터링, 또는 다른 유형의 필터링 또는 필터링 유형들의 조합들을 포함할 수 있고, 재구성된 블록을 생성하는 것을 포함할 수 있는 블로킹 아티팩트들과 같은 아티팩트들을 감소시키기 위해 복호화된 블록에 적용될 수 있고, 이는 출력 비디오 스트림(504)으로서 출력될 수 있다.
압축된 비트스트림(502)을 복호화하기 위해 디코더(500)의 다른 변형이 사용될 수 있다. 예를 들어, 디코더(500)는 필터링 유닛(560)없이 출력 비디오 스트림(504)을 생성할 수 있다.
도 6은 본 발명의 구현예들에 따라, 도 3에 도시된 프레임(330)과 같은 프레임의 일부분(600)을 나타내는 블록도이다. 도시된 바와 같이, 프레임의 일부분(600)은 행렬 또는 직교 평면 내의 2 개의 행과 2 개의 열에 4 개의 64×64 블록들(610)을 포함한다. 일부 구현예들에서, 64×64 블록은 최대 부호화 단위, N = 64일 수 있다. 각각의 64×64 블록은 4 개의 32×32 블록들(620)을 포함할 수 있다. 각각의 32×32 블록은 4 개의 16×16 블록들(630)을 포함할 수 있다. 각각의 16×16 블록은 4 개의 8×8 블록들(640)을 포함할 수 있다. 각각의 8×8 블록(640)은 4 개의 4×4 블록들(650)을 포함할 수 있다. 각각의 4×4 블록(650)은 16 픽셀을 포함할 수 있고, 이는 직교 평면 또는 행렬 내의 각 블록에서 4 개의 행과 4 개의 열로 표현될 수 있다. 픽셀들은 휘도 정보, 색상 정보 및 위치 정보와 같은, 프레임에서 캡처된 이미지를 나타내는 정보를 포함할 수 있다. 일부 구현예들에서, 도시된 16×16 픽셀 블록과 같은 블록은 휘도 픽셀들(662)을 포함할 수 있는 휘도 블록(660); 및 U 또는 Cb 색차 블록(670)과 V 또는 Cr 색차 블록(680)과 같은 2 개의 색차 블록들(670, 680)을 포함할 수 있다. 색차 블록들(670, 680)은 색차 픽셀들(690)을 포함할 수 있다. 예를 들어, 휘도 블록(660)은 16×16 휘도 픽셀들(662)을 포함할 수 있고, 각각의 색차 블록(670, 680)은, 도시된 바와 같이, 8×8 색차 픽셀들(690)을 포함할 수 있다. 블록들의 하나의 배열이 도시되어 있지만, 임의의 배열이 사용될 수 있다. 도 6은 N×N 블록들을 도시하지만, 일부 구현예들에서, N×M 블록들이 사용될 수 있다. 예를 들어, 32×64 블록들, 64×32 블록들, 16×32 블록들, 32×16 블록들 또는 임의의 다른 크기의 블록들이 사용될 수 있다. 일부 구현예들에서, N×2N 블록들, 2N×N 블록들, 또는 이들의 조합이 사용될 수 있다.
일부 구현예들에서, 비디오 코딩은 정렬된 블록 레벨 코딩(block-level coding)을 포함할 수도 있다. 정렬된 블록 레벨 코딩에는, 래스터 스캔 오더(raster-scan order)와 같이, 순서대로 프레임의 코딩 블록들이 포함될 수 있고, 여기서, 각 블록을 차례로 식별하고 처리하기 위해, 블록들은 프레임의 좌상단 모서리나 프레임의 일부에 있는 블록에서 시작하여 좌측에서 우측으로 그리고 상단 행에서 하단 행으로 행을 따라 진행하면서, 식별 및 처리될 수 있다. 예를 들어, 프레임의 상단 행 및 좌측 열의 64×64 블록은 코딩된 제1 블록일 수 있고, 제1 블록의 바로 오른쪽에 있는 64×64 블록은 코딩된 제2 블록일 수 있다. 상단으로부터의 제2 행은 코딩된 제2 행일 수 있어서, 제2 행의 좌측 열의 64×64 블록이 제1 행의 우측 열 마지막의 64×64 블록 다음에 코딩될 수 있다.
일부 구현예들에서, 블록을 코딩하는 것은 쿼드-트리 코딩(quad-tree coding)을 사용하는 것을 포함할 수 있고, 이는 래스터 스캔 순서(raster-scan order)로 블록 내에서 더 작은 블록 유닛을 코딩하는 것을 포함할 수 있다. 예를 들어, 도 6에 도시된 프레임의 일부의 좌하단 모서리에 도시된 64×64 블록은 쿼드-트리 코딩을 사용하여 코딩될 수 있고, 여기서, 좌상단 32×32 블록이 코딩될 수 있고, 다음에 우상단 32×32 블록이 코딩될 수 있고, 이어서 좌하단 32×32 블록이 코딩될 수 있으며, 마지막으로 우하단 32×32 블록이 코딩될 수 있다. 각각의 32×32 블록은 쿼드-트리 코딩을 사용하여 코딩될 수 있고, 여기서, 좌상단 16×16 블록이 코딩될 수 있고, 다음에 우상단 16×16 블록이 코딩될 수 있고, 이어서 좌하단 16×16 블록이 코딩될 수 있으며, 마지막으로 우하단 16×16 블록이 코딩될 수 있다. 각각의 16×16 블록은 쿼드-트리 코딩을 사용하여 코딩될 수 있고, 여기서, 좌상단 8×8 블록이 코딩될 수 있고, 다음에 우상단 8×8 블록이 코딩될 수 있고, 이어서 좌하단 8×8 블록이 코딩될 수 있으며, 마지막으로 우하단 8×8 블록이 코딩될 수 있다. 각각의 8×8 블록은 쿼드-트리 코딩을 사용하여 코딩될 수 있고, 여기서, 좌상단 4×4 블록이 코딩될 수 있고, 다음에 우상단 4×4 블록이 코딩될 수 있고, 이어서 좌하단 4×4 블록이 코딩될 수 있으며, 마지막으로 우하단 4×4 블록이 코딩될 수 있다. 일부 구현예들에서, 8×8 블록들은 16×16 블록에 대해 생략될 수 있고, 16×16 블록은 쿼드-트리 코딩을 사용하여 코딩될 수 있고, 여기서, 좌상단 4×4 블록이 코딩될 수 있고, 다음에 16×16 블록 내의 나머지 4×4 블록들이 래스터 스캔 순서로 코딩될 수 있다.
일부 구현예들에서, 비디오 코딩은, 예를 들어, 대응하는 부호화된 프레임으로부터 원본 프레임의 정보 중 일부를 생략함으로써, 원본 프레임 또는 입력 프레임에 포함된 정보를 압축하는 것을 포함할 수 있다. 예를 들어, 코딩은 스펙트럼 중복 감소, 공간적 중복 감소, 시간적 중복 감소, 또는 이들의 조합을 포함할 수 있다.
일부 구현예들에서, 스펙트럼 중복을 감소시키는 것은 휘도 성분(Y) 및 2 개의 색차 성분들(U 및 V, 또는 Cb 및 Cr)에 기초한 색상 모델을 사용하는 것을 포함할 수 있고, 이는 YUV 또는 YCbCr 색상 모델 또는 색 공간(color space)으로 지칭될 수 있다. YUV 색상 모델을 사용하는 것은 프레임의 일부분의 휘도 성분을 나타내기 위해 비교적 많은 양의 정보를 사용하는 것과, 프레임의 일부분에 대한 각각의 대응하는 색차 성분을 나타내기 위해 비교적 적은 양의 정보를 이용하는 것을 포함할 수 있다. 예를 들어, 프레임의 일부는 16×16 픽셀들의 블록을 포함할 수 있는 고해상도 휘도 성분 및 2 개의 저해상도 색차 성분들로 표현될 수 있으며, 이들의 각각은 프레임의 일부를 8×8 픽셀들의 블록으로 나타낸다. 픽셀은, 소정 값, 예를 들어, 0 내지 255 범위의 값을 나타낼 수 있고, 예를 들어, 8 비트를 사용하여 저장되거나 전송될 수 있다. 본 발명에서는 YUV 색상 모델을 참조하여 설명하고 있지만, 임의의 색상 모델이 사용될 수 있다.
일부 구현예들에서, 공간적인 중복을 감소시키는 것은, 예를 들어, DCT(Discrete Cosine Transform)을 이용하여 블록을 주파수 영역으로 변환하는 것을 포함할 수 있다. 예를 들어, 도 4에 도시된 변환 유닛(420)과 같은 인코더의 유닛은 공간 주파수에 기초한 변환 계수값들을 사용하여 DCT를 수행할 수 있다.
일부 구현예들에서, 시간적인 중복을 감소시키는 것은 비디오 스트림의 이전에 부호화, 복호화 및 재구성된 프레임들일 수 있는 하나 이상의 참조 프레임들에 기초하여 비교적 적은 양의 데이터를 사용하여 프레임을 부호화하기 위해 프레임들 사이의 유사성을 이용하는 것을 포함할 수 있다. 예를 들어, 현재 프레임의 블록 또는 픽셀은 참조 프레임의 공간적으로 대응하는 블록 또는 픽셀과 유사할 수 있다. 일부 구현예들에서, 현재 프레임의 블록 또는 픽셀은 상이한 공간 위치에서의 참조 프레임의 블록 또는 픽셀과 유사할 수 있고, 시간적인 중복을 감소시키는 것은 현재 프레임에서의 블록 또는 픽셀의 위치와 참조 프레임에서의 블록 또는 픽셀의 대응하는 위치 사이의 공간적인 차이나 변환을 나타내는 모션 정보를 생성하는 것을 포함할 수 있다.
일부 구현예들에서, 시간적인 중복을 감소시키는 것은 현재 프레임의 현재 블록이나 픽셀에 대응하는 참조 프레임의 일부를 식별하는 것을 포함할 수 있다. 예를 들어, 메모리에 저장될 수 있는 참조 프레임이나 참조 프레임의 일부는 최대 효율로 현재 프레임의 현재 블록이나 픽셀을 부호화하는 데 사용될 예측자(predictor)를 생성하기 위한 부분을 식별하기 위해 검색될 수 있다. 예를 들어, 검색은 참조 프레임의 일부에 기초하여 생성된 예측 블록과 현재 블록 사이의 픽셀값들의 차이가 최소화되는 참조 프레임의 일부분을 식별할 수 있고, 모션 검색이라고 지칭될 수 있다. 일부 구현예들에서, 검색된 기준 프레임의 일부분이 제한될 수 있다. 예를 들어, 검색 영역으로 지칭될 수 있는 검색된 참조 프레임의 일부분은 참조 프레임의 제한된 수의 행을 포함할 수 있다. 일 예에서, 예측자를 생성하기 위해 참조 프레임의 일부분을 식별하는 것은 검색 영역의 부분들의 픽셀들과 현재 블록의 픽셀들 사이의 SAD(Sum of Absolute Differences)와 같은 비용 함수(cost function)를 계산하는 것을 포함할 수 있다.
일부 구현예들에서, 참조 프레임에서 예측자를 생성하기 위한 참조 프레임의 일부분의 위치와 현재 프레임의 현재 블록 사이의 공간적 차이는 모션 벡터로서 표현될 수 있다. 예측자 블록과 현재 블록 사이의 픽셀값의 차이는 차등 데이터(differential data), 잔차 데이터(residual data), 예측 오류 또는 잔차 블록으로 지칭될 수 있다. 일부 구현예들에서, 모션 벡터들을 생성하는 것은 모션 추정으로 지칭될 수 있고, 현재 블록의 픽셀은 직교 좌표 f x , y를 이용하는 위치에 기초하여 표시될 수 있다. 마찬가지로, 참조 프레임의 검색 영역의 픽셀은 직교 좌표 r x , y를 사용하는 위치에 기초하여 표시될 수 있다. 현재 블록에 대한 모션 벡터(MV: Motion Vector)는, 예를 들어, 현재 프레임의 픽셀들과 참조 프레임의 대응하는 픽셀들 사이의 SAD에 기초하여 결정될 수 있다.
명확히 하기 위해 프레임의 행렬 또는 직교 표현을 참조하여 본 명세서에 설명되었지만, 프레임이나 이미지에 대해 픽셀값들이 효율적으로 표현될 수 있도록, 프레임은 임의의 데이터 구조로 저장, 전송, 처리될 수 있거나 또는 이들의 임의의 조합일 수 있다. 예를 들어, 프레임은 도시된 행렬과 같은 2 차원 데이터 구조, 또는 벡터 어레이와 같은 1 차원 데이터 구조로 저장, 전송, 처리될 수 있거나 또는 이들의 임의의 조합일 수 있다. 구현예에서, 도시된 2 차원 표현과 같은 프레임의 표현은 이미지로서 프레임의 렌더링에서의 물리적 위치에 대응할 수 있다. 예를 들어, 프레임의 좌상단 모서리 내에 있는 블록의 좌상단 모서리의 위치는 이미지로서 프레임의 렌더링의 좌상단 모서리의 물리적인 위치와 대응할 수 있다.
일부 구현예들에서, 입력 블록들을, 예측 코딩을 위한 정사각형 파티션들을 포함하는 직사각형일 수 있는 하나 이상의 예측 파티션들로 분할함으로써 블록 기반 코딩 효율성이 개선될 수 있다. 일부 구현예들에서, 예측 분할을 이용하는 비디오 코딩은 다수의 후보 예측 분할 기법들 중에서 하나의 예측 분할 기법을 선택하는 것을 포함할 수도 있다. 예를 들어, 일부 구현예들에서, 64×64 코딩 유닛에 대한 후보 예측 분할 기법들은, 예를 들어, 4×4, 4×8, 8×4, 8×8, 8×16, 16×8, 16×16, 16×32, 32×16, 32×32, 32×64, 64×32 또는 64×64와 같은 4×4 내지 64×64의 크기 범위의 직사각형 크기 예측 파티션들을 포함할 수 있다. 일부 구현예들에서, 예측 분할을 사용하는 비디오 코딩은 전체 예측 파티션 검색을 포함할 수 있고, 이는 각각의 이용 가능한 후보 예측 분할 기법을 사용하여 코딩 유닛을 부호화함으로써, 예측 분할 기법을 선택하고, 최저 비율 왜곡 오차를 생성하는 기법과 같은 최상의 기법을 선택하는 것을 포함할 수 있다.
일부 구현예들에서, 비디오 프레임을 부호화하는 것은 블록(610)과 같은 현재 블록을 부호화하기 위한 예측 분할 기법을 식별하는 것을 포함할 수 있다. 일부 구현예들에서, 예측 분할 기법을 식별하는 것은 블록을, 도시된 64×64일 수 있는 최대 코딩 유닛 크기의 단일 예측 파티션으로 부호화할지, 또는 도시된 바와 같이, 32×32 블록들(620), 16×16 블록들(630) 또는 8×8 블록들(640)과 같은 서브 블록과 대응할 수 있는 다수의 예측 파티션으로 분할할지를 결정하는 것을 포함할 수 있고, 또한 하나 이상의 더 작은 예측 파티션으로 분할할지를 결정하는 것을 포함할 수 있다. 예를 들어, 64×64 블록은 4 개의 32×32 예측 파티션들로 분할될 수 있다. 4 개의 32×32 예측 파티션들 중 3 개는 32×32 예측 파티션들로 부호화될 수 있고, 제4의 32×32 예측 파티션은 4 개의 16×16 예측 파티션들로 더 분할될 수 있다. 4 개의 16×16 예측 파티션들 중 3 개는 16×16 예측 파티션들로 부호화될 수 있고, 제4의 16×16 예측 파티션은 4 개의 8×8 예측 파티션들로 더 분할될 수 있으며, 각각은 8×8 예측 파티션으로 부호화될 수 있다. 일부 구현예들에서, 예측 분할 기법을 식별하는 것은 예측 분할 결정 트리(prediction partitioning decision tree)를 사용하는 것을 포함할 수 있다.
일부 구현예들에서, 현재 블록에 대한 비디오 코딩은 다수의 후보 예측 코딩 모드들로부터 최적의 예측 코딩 모드를 식별하는 것을 포함할 수 있으며, 이는 다양한 통계적 특성들을 갖는 비디오 신호들을 처리하는 데 유연성을 제공할 수 있고, 압축 효율을 향상시킬 수 있다. 예를 들어, 비디오 코더(video coder)는 각각의 후보 예측 코딩 모드를 평가하여 최적 예측 코딩 모드를 식별할 수 있는 데, 예를 들어, 현재 블록에 대한 비율 왜곡 비용(rate-distortion cost)과 같은 에러 메트릭(error metric)을 최소화하는 예측 코딩 모드일 수 있다. 일부 구현예들에서, 후보 예측 코딩 모드들을 검색하는 복잡성은 현재 블록과, 대응하는 예측 블록 사이의 유사성에 기초하여 이용 가능한 후보 예측 코딩 모드들의 세트를 제한함으로써 감소될 수 있다. 일부 구현예들에서, 각각의 후보 예측 코딩 모드를 검색하는 복잡성은 지향적 개선 모드 검색을 수행함으로써 감소될 수 있다. 예를 들어, 16×16, 8×8 및 4×4와 같은 제한된 후보 블록 크기들의 세트에 대해 메트릭들이 생성될 수 있고, 각 블록 크기와 연관된 에러 메트릭은 내림차순일 수 있으며, 4×8 및 8×4 블록 크기들과 같은 추가 후보 블록 크기들이 평가될 수 있다.
일부 구현예들에서, 블록 기반 코딩 효율은 현재 잔차 블록을, 변환 코딩을 위한 정사각형 파티션들을 포함하는 직사각형일 수 있는 하나 이상의 변환 파티션들로 분할함으로써 개선될 수 있다. 일부 구현예들에서, 변환 분할을 사용하는 비디오 코딩은 균일한 변환 분할 기법을 선택하는 것을 포함할 수 있다. 예를 들어, 블록(610)과 같은 현재 잔차 블록은 64×64 블록일 수 있고, 64×64 변환을 사용하여 분할없이 변환될 수 있다.
도 6에 명시적으로 도시되지 않았지만, 잔차 블록은 균일한 변환 분할 기법을 사용하여 변환 분할될 수 있다. 예를 들어, 64×64 잔차 블록은 4 개의 32×32 변환 블록들을 포함하는 균일한 변환 분할 기법을 사용하거나, 16 개의 16×16 변환 블록들을 포함하는 균일한 변환 분할 기법을 사용하거나, 64 개의 8×8 변환 블록들을 포함하는 균일한 변환 분할 기법을 사용하거나, 또는 256 개의 4×4 변환 블록들을 포함하는 균일한 변환 분할 기법을 사용하여 변환 분할될 수 있다.
일부 구현예들에서, 변환 분할을 사용하는 비디오 코딩은 멀티폼 변환 분할 코딩(multiform transform partition coding)을 사용하여 잔차 블록에 대한 복수의 변환 블록 크기들을 식별하는 것을 포함할 수 있다. 일부 구현예들에서, 멀티폼 변환 파티션 코딩은 현재 블록 크기 변환을 사용하거나, 현재 블록 및 각 파티션을 코딩하는 멀티폼 변환 파티션을 분할함으로써 현재 블록을 변환할지 여부를 재귀 적으로(recursively) 결정하는 단계를 포함할 수 있다. 예를 들어,도 6에 도시된 좌하단 블록(610)은 64×64 잔차 블록일 수 있고, 멀티폼 변환 파티션 코딩은 64×64 변환을 사용하여 현재의 64×64 잔차 블록을 코딩할지, 또는 64×64 잔차 블록을 4 개의 32×32 블록들(620)과 같은 파티션들로 분할하고, 각 파티션을 멀티폼 변환 파티션 코딩함으로써 64×64 잔차 블록을 코딩할지를 결정하는 것을 포함할 수 있다. 일부 구현예들에서, 현재 블록을 파티션 변환할지 여부를 결정하는 것은 현재 블록 크기 변환을 사용하여 현재 블록을 부호화하기 위한 비용을 파티션 크기 변환들을 사용하여 각 파티션을 부호화하기 위한 비용의 합계를 비교하는 것을 기초로 할 수 있다.
도 7은 본 발명의 구현예들에 따라 블록 경계들을 포함하는 일부 입력 프레임의 예를 도시한다. 입력 프레임의 부분(700)은 좌상단에 제1 블록(710)을, 우상단에 제2 블록(720)을, 좌하단에 제3 블록(730)을, 그리고 우하단에 제4 블록(740)을 포함한다. 입력 프레임의 부분(700)은 제1 블록(710)과 제2 블록(720) 사이의 수직 블록 경계인 제1 블록 경계(750)와, 제1 블록(710)과 제3 블록(730) 사이의 수평 블록 경계인 제2 블록 경계(760)와, 제3 블록(730)과 제4 블록(740) 사이의 수직 블록 경계인 제3 블록 경계(770), 및 제2 블록(720)과 제4 블록(740) 사이의 수평 블록 경계인 제4 블록 경계(780)를 포함한다.
제1 블록(710)과 제2 블록(720)은 점묘 배경(stippled background)으로 도시되어, 제1 블록(710)과 제2 블록(720)이 프레임에 의해 캡처된 제1 객체나 시각적 요소에 대응하는 콘텐츠를 포함한다는 것을 나타낸다. 제3 블록(730)과 제4 블록(740)은 흰색 배경으로 도시되어, 제3 블록(730)과 제4 블록(740)이 프레임에 의해 캡처된 제2 객체나 시각적 요소에 대응하는 콘텐츠를 포함한다는 것을 나타낸다. 프레임에 의해 캡처된 제1 객체와 제2 객체 사이의 가장자리는 제2 블록 경계(760)와 제4 블록 경계(780)에 대응하고, 도면 부호 790의 굵은 파선으로 표시된다.
도 7에 명시적으로 도시되지 않았지만, 각 블록(710, 720, 730, 740)은 픽셀들을 포함할 수 있다. 예를 들어, 각각의 블록(710, 720, 730, 740)은 8×8 픽셀 블록일 수 있다.
도 4와 관련하여 설명된 부호화와 같이, 이미지나 비디오를 부호화하는 것은 양자화에 의해 발생된 블록 경계를 따라 왜곡될 수 있는 블록 아티팩트들과 같은 아티팩트들이나 왜곡을 가져올 수 있다. 예를 들어,도 7에 도시된 입력 프레임의 부분(700)을 부호화하면, 도 8에 도시된 재구성된 이미지 부분에 도시된 바와 같은 블록 아티팩트들이 발생할 수 있다.
도 8은 본 발명의 구현예들에 따라 블록 아티팩트들을 포함하는 일부의 재구성된 프레임의 예를 도시한다. 도 8에 도시된 재구성된 프레임의 부분(800)은 도 8에 도시된 재구성된 프레임의 부분(800)이 블록 아티팩트들을 포함하는 것을 제외하면 도 7에 도시된 입력 프레임의 부분(700)에 대응할 수 있다.
도 8은 좌상단의 제1 블록(810), 우상단의 제2 블록(820), 좌하단의 제3 블록(830), 우하단의 제4 블록(840), 제1 블록(810)과 제2 블록(820) 사이의 수직 블록 경계인 제1 블록 경계(850)와, 제1 블록(810)과 제3 블록(830) 사이의 수평 블록 경계인 제2 블록 경계(860)와, 제3 블록(830)과 제4 블록(840) 사이의 수직 블록 경계인 제3 블록 경계(870), 및 제2 블록(820)과 제4 블록(840) 사이의 수평 블록 경계인 제4 블록 경계(880)를 포함한다.
도 8에 도시된 제1 블록(810)은 도 8에 도시된 제1 블록(810)이 블록 양자화 에러를 나타내기 위해 다크 스티플링(dark stippling)을 사용하여 도시된 것을 제외하고는 도 7에 도시된 제1 블록(710)에 대응한다. 도 8에 도시된 제2 블록(820)은 도 7에 도시된 제2 블록(720)에 대응한다. 도 8에 도시된 제3 블록(830)은 도 7에 도시된 제3 블록(730)에 대응한다. 도 8에 도시된 제4 블록(840)은 도 8에 도시된 제4 블록(840)이 블록 양자화 에러를 나타내기 위해 라이트 스티플링(light stippling)을 사용하여 도시되는 것을 제외하고는 도 7에 도시된 제4 블록(740)에 대응한다.
도 7과 관련하여 설명된 객체들과 유사하게, 도 8에 도시된 제1 블록(810) 및 제2 블록(820)은 프레임에 의해 캡처된 제1 객체나 시각적 요소에 대응하는 콘텐츠를 포함하고, 도 8에 도시된 제3 블록(830) 및 제4 블록(840)은 프레임에 의해 캡처된 제2 객체나 시각적 요소에 대응하는 콘텐츠를 포함한다. 프레임에 의해 캡처된 제1 객체와 제2 객체 사이의 가장자리는 제2 블록 경계(860)와 제4 블록 경계(880)에 대응하고, 도면 부호 890의 굵은 파선으로 표시된다.
도 8에 명시적으로 도시되지 않았지만, 각 블록(810, 820, 830, 840)은 픽셀들을 포함할 수 있다. 예를 들어, 각각의 블록(810, 820, 830, 840)은 8×8 픽셀 블록일 수 있다.
도 8에 도시된 재구성된 프레임의 부분(800)을 디블로킹하는 것은 제1 블록 경계(850)에 따른 블록 아티팩트들 및 제3 블록 경계(870)에 따른 블록 아티팩트들과 같은, 블록 경계들에 따라 블록 아티팩트들을 평활화하거나 아니면 최소화하고, 제2 블록 경계(860) 및 제4 블록 경계(880)에 따른 객체 가장자리(890)를 보존하거나, 블러(blur)를 최소로 하는 것을 포함할 수 있으며, 이는 블록 아티팩트들에 대응하는 블록간의 차이와 객체 가장자리들에 대응하는 블록들간의 차이를 구별하는 것을 포함할 수 있다.
도 9는 본 발명의 구현예들에 따라 픽셀들의 행에 대해 픽셀 입도(pixel granularity)를 갖는 블록 아티팩트들을 포함하는 재구성된 프레임의 일부의 예를 도시한다. 도 9에 도시된 재구성된 프레임의 일부분(900)은 도 9에 도시된 재구성된 프레임의 일부분(900)에서 픽셀들이나 픽셀들의 행에 대한 픽셀 위치들이 명시적으로 표현되고, 블록 경계에 대한 참조가 명확성을 위해 생략되는 것을 제외하고는 도 8에 도시된 재구성된 프레임의 일부분(800)에 대응할 수 있다.
도 9는 도 8에 도시된 제1 블록(810)에 대응하는 좌상단에 제1 블록(910)을, 도 8에 도시된 제2 블록(820)에 대응하는 우상단에 제2 블록(920)을, 도 8에 도시된 제3 블록(830)에 대응하는 좌하단에 제3 블록(930)을, 그리고 도 8에 도시된 제4 블록(840)에 대응하는 우하단에 제4 블록(940)을 포함한다.
현재 블록이 될 수 있는 제3 블록(930)은 명확하게 하기 위해 도 9에서 제3 블록(930)을 수평으로 가로질러 행을 따라 좌측으로부터 우측으로 c0, c1, c2, c3, c4, c5, c6 및 c7로 라벨링된 픽셀들과 같은 픽셀들을 포함할 수 있다. 수평으로 인접한 블록과 같은 인접 블록이 될 수 있는 제4 블록(940)은 명확히 하기 위해 도 9에서 제4 블록(940)을 수평으로 가로질러 행을 따라 좌측으로부터 우측으로 a0, a1, a2, a3, a4, a5, a6 및 a7로 라벨링된 픽셀들과 같은 픽셀들을 포함할 수 있다.
제3 블록(930)을 디블로킹하는 것은, 현재 블록(제3 블록(930))으로부터의 행을 따르는 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7) 및 인접 블록(제4 블록(940))으로부터의 행을 따르는 픽셀들(a0, a1, a2, a3, a4, a5, 6a, 7a) 중 하나 이상에 기초하여, 도 8에 도시된 제4 블록 경계(880)에 대응할 수 있는 현재 블록(제3 블록(930))과 수평 인접 블록(제4 블록(940)) 사이의 블록 경계를 따라 현재 블록(제3 블록(930))의 행의 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7) 중 하나 이상을 디블로킹하는 것을 포함할 수 있다.
제2 블록(1020)을 디블로킹하는 것은, 현재 블록(제2 블록(1020))으로부터의 열을 따르는 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7)과 수직 인접 블록(제4 블록(1040))으로부터의 열을 따르는 픽셀들(a0, a1, a2, a3, a4, a5, a6, a7) 중 하나 이상에 기초하여, 도 8에 도시된 제3 블록 경계(870)에 대응할 수 있는 현재 블록(제2 블록(1020))과 수직 인접 블록(제4 블록(1040)) 사이의 블록 경계를 따라 현재 블록(제2 블록(1020))의 열의 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7) 중 하나 이상을 디블로킹하는 것을 포함할 수 있다.
도 10은 본 발명의 구현예들에 따라 픽셀들의 열에 대해 픽셀 입도를 갖는 블록 아티팩트들을 포함하여 재구성된 프레임의 일부의 예를 도시한다. 도 10에 도시된 재구성된 프레임의 일부분(1000)에서 픽셀들이나 픽셀들의 열에 대한 픽셀 위치들이 명시적으로 표현되고, 블록 경계에 대한 참조의 명확성을 위해 생략되는 것을 제외하고는, 도 10에 도시된 재구성된 프레임의 일부분(1000)은 도 8에 도시된 재구성된 프레임의 일부분(800)에 대응할 수 있다.
도 10은 도 8에 도시된 제1 블록(810)에 대응하는 좌상단에 제1 블록(1010)을, 도 8에 도시된 제2 블록(820)에 대응하는 우상단에 제2 블록(1020)을, 도 8에 도시된 제3 블록(830)에 대응하는 좌하단에 제3 블록(1030)을, 그리고 도 8에 도시된 제4 블록(840)에 대응하는 우하단에 제4 블록(1040)을 포함한다.
현재 블록이 될 수 있는 제2 블록(1020)은 명확하게 하기 위해 도 10에서 제2 블록(1020)을 수직으로 가로질러 열을 따라 위로부터 아래로, c0, c1, c2, c3, c4, c5, c6 및 c7로 라벨링된 픽셀들과 같은 픽셀들을 포함할 수 있다. 수직 인접 블록과 같은 인접 블록이 될 수 있는 제4 블록(1040)은 명확하게 하기 위해 도 10에서 제4 블록(1040)을 수직으로 가로질러 열을 따라 위로부터 아래로, a0, a1, a2, a3, a4, a5, a6 및 a7로 라벨링된 픽셀들과 같은 픽셀들을 포함할 수 있다.
제2 블록(1020)을 디블로킹하는 것은, 현재 블록(제2 블록(1020))으로부터의 열을 따른 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7)과 수직 인접 블록(제4 블록(1040))으로부터의 열을 따른 픽셀들(a0, a1, a2, a3, a4, a5, a6, a7) 중 하나 이상에 기초하여, 도 8에 도시된 제3 블록 경계(870)에 대응할 수 있는 현재 블록(제2 블록(1020))과 수직 인접 블록(제4 블록(1040)) 사이의 블록 경계를 따라 현재 블록(제2 블록(1020))의 열의 픽셀들(c0, c1, c2, c3, c4, c5, c6, c7) 중 하나 이상을 디블로킹하는 것을 포함할 수 있다.
도 11는 본 발명의 구현예들에 따라 듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 방법(1100)의 예를 나타내는 흐름도이다. 듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 방법(1100)은 도 4에 도시된 인코더(400)와 같은 인코더로 구현될 수 있다. 예를 들어, 도 4에 도시된 인코더(400)의 필터링 유닛(480)은 듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 방법(1100)을 구현할 수 있다.
듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 방법(1100)은 단계 1110에서 입력 프레임을 식별하고, 단계 1120에서 입력 프레임을 부호화하고, 단계 1130에서 부호화된 비트스트림을 출력하는 것을 포함하거나, 또는 이들의 임의의 조합을 포함할 수 있다.
입력 프레임은 단계 1110에서 식별될 수 있다. 예를 들어, 인코더는 입력 이미지나 입력 비디오 스트림이나 신호, 또는 그들의 일부분을 수신하거나 아니면 액세스할 수 있고, 입력 이미지나 입력 비디오 스트림의 일부분을 현재 입력 프레임으로서 식별할 수 있다.
단계 1110에서 식별된 입력 프레임은 단계 1120에서 부호화될 수 있다. 단계 1120에서 입력 프레임을 부호화하는 단계는 단계 1122에서 부호화된 프레임을 생성하는 것과, 단계 1124에서 재구성된 프레임을 생성하는 것과, 단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것과, 단계 1128에서 출력 비트스트림에 부호화된 프레임과 디블로킹 임계값 인덱스들을 포함하는 것, 또는 이들의 조합을 포함할 수 있다. 도 11에 개별적으로 도시되어 있지만, 단계 1122에서 부호화된 프레임을 생성하는 것과, 단계 1124에서 재구성된 프레임을 생성하는 것과, 단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것, 및 단계 1128에서 출력 비트스트림 내에 부호화된 프레임 및 디블로킹 임계값 인덱스들을 포함하는 것은 조합하여 구현될 수도 있다.
블록 기반 부호화를 사용하는 것을 포함할 수 있는 단계 1122에서 부호화된 프레임을 생성하는 것은 본 명세서에 설명되거나 문맥상 명백하지 않은 것을 제외하고는 도 4와 관련하여 설명된 부호화와 유사할 수 있다. 예를 들어, 인코더는 예측 블록들을 생성하고, 각각의 예측 블록들과 대응하는 입력 블록들 사이의 차이를 잔차들로서 식별하고, 잔차들을 변환함으로써 각각의 변환 계수들을 식별하고, 변환 계수들, 엔트로피 코드, 각각의 양자화된 변환 계수들 및 움직임 정보와 같은 다른 부호화 데이터, 또는 이들의 조합을 양자화함으로써 각각의 양자화된 변환 계수들을 생성할 수 있다.
단계 1124에서 재구성된 프레임을 생성하는 것은 여기에 설명되거나 문맥상 명백하지 않은 것을 제외하고는 도 4와 관련하여 설명된 재구성과 유사할 수 있다. 예를 들어, 인코더는 양자화된 변환 계수들을 역양자화하여 각각의 역양자화된 변환 계수들을 생성하고, 역양자화된 변환 계수들을 역변환하여 각각의 재구성된 잔차들을 생성하고, 단계 1122에서 생성된 예측 블록들과 같은 각각의 예측 블록들을 식별하고, 복호화된 프레임을 생성할 수 있고, 이는 각각의 예측 블록들 및 대응하는 재구성된 잔차들을 결합함으로써, 복호화된 프레임의 복호화된 블록들 각각을 생성하는 것이나, 아티팩트들을 감소시키고 재구성된 프레임을 생성하기 위해 복호화된 프레임을 필터링(예컨대, 루프 필터링, 디블로킹 필터링, 또는 양쪽 모두)하는 것, 또는 이들의 조합을 포함할 수 있다. 단계 1124에서 재구성된 프레임을 생성하는 것과 관련하여 설명되었지만, 디블로킹 또는 그 일부는 복호화된 프레임을 생성하는 것에 이어서 또는 루프 필터링에 이어서 수행될 수 있다. 재구성된 프레임은 다른 프레임을 부호화하기 위해 재구성된 프레임 또는 참조 프레임으로 저장되거나 달리 액세스 가능하게 될 수 있다.
디블로킹 임계값 인덱스들은 단계 1126에서 식별될 수 있다. 일부 구현예들에서는, 단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것은 단계 1122에서 부호화된 프레임을 생성하는 것에 이어서 수행될 수 있으며, 단계 1124에서 재구성된 프레임을 생성하는 것과 같이 동시에 또는 단계 1124에서 재구성된 프레임을 생성하는 것에 이어서 수행될 수 있다. 예를 들어, 단계 1124에서 재구성된 프레임을 생성하는 것과 단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것은, 도 11에 개별적으로 도시되어 있지만, 단계 1124에서 재구성된 프레임을 생성하는 것과 관련하여 설명된 디블로킹은 디블로킹 임계값 인덱스들을 식별하는 것을 포함할 수 있다.
단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것은 제1 디블로킹 임계값 인덱스를 식별하는 것, 제2 디블로킹 임계값 인덱스를 식별하는 것, 또는 양쪽 모두를 포함할 수 있다. 디블로킹 임계값 인덱스는 디블로킹 임계값들의 정의된 세트, 그룹 또는 집합을 식별하는 정수값과 같은 인덱스일 수 있다. 예를 들어, 인코더는 정의된 디블로킹 임계값들의 세트들을 포함하는 테이블이나 다른 데이터 저장 구조체를 포함하거나, 그렇지 않으면 액세스할 수 있으며, 여기서, 각각의 정의된 디블로킹 임계값들의 세트는 각각의 대응하는 디블로킹 임계값 인덱스에 의해 색인되거나 고유하게 식별된다.
단계 1126에서 디블로킹 임계값 인덱스들을 식별하는 것은 수평 또는 수직과 같은 제1 방향에서 프레임을 디블로킹하기 위한 제1 디블로킹 임계값 인덱스를 식별하고, 수직 또는 수평과 같은 제1 방향에 직교하는 제2 방향에서 프레임을 디블로킹하기 위해 제1 디블로킹 임계값 인덱스와 상이할 수 있는 제2 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
일 예에서, 제1 디블로킹 임계값 인덱스는 프레임으로부터 수직 블록 경계들을 디블로킹하기 위해 식별될 수 있고, 제2 디블로킹 임계값 인덱스는 프레임에 대한 수평 블록 경계들을 디블로킹하기 위해 식별될 수 있다. 디블로킹 임계값 인덱스들을 식별하는 예가 도 12에 도시되어 있다.
부호화된 프레임이나, 디블로킹 임계값 인덱스들, 또는 양쪽 모두는 단계 1128에서 출력 또는 부호화된 비트스트림에 포함될 수 있다. 예를 들어, 디블로킹 임계값 인덱스들은 부호화된 프레임에 대한 프레임 헤더에 포함될 수 있고, 프레임 헤더는 프레임 헤더 또는 그 일부를 엔트로피 코딩하는 것을 포함할 수 있는 출력 비트스트림에 포함될 수 있다.
출력 비트스트림에 디블로킹 임계값 인덱스들을 포함하는 것은 출력 비트스트림에 제1 디블로킹 임계값 인덱스의 표시를 포함하는 것 및 개별적으로 출력 비트스트림에 제2 디블로킹 임계값 인덱스의 표시를 포함하는 것을 포함할 수 있다. 출력 비트스트림에 제2 디블로킹 임계값 인덱스의 표시를 포함하는 일부 구현예들에서, 제1 디블로킹 임계값 인덱스와 제2 디블로킹 임계값 인덱스간의 차이와 같은 차등 디블로킹 임계값 인덱스값을 식별하는 것과, 제2 디블로킹 임계값 인덱스로서 출력 비트스트림에서 차등 디블로킹 임계값 인덱스값 또는 그 표시를 포함하는 것을 포함할 수 있다.
부호화된 비트스트림은 단계 1130에서 출력될 수 있다. 예를 들어, 부호화된 비트스트림, 또는 출력 비트스트림은, 도 2에 도시된 네트워크(220)와 같은 네트워크를 통해 신호로서 전송될 수 있어서, 도 1에 도시된 컴퓨팅 디바이스(100) 또는 도 2에 도시된 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)과 같은 디바이스는, 도 5에 도시된 디코더(500)와 같은 디코더를 포함하여, 네트워크를 통해 신호를 수신할 수 있고, 부호화된 비디오 비트스트림을 복호화할 수 있으며, 현재 프레임에 대응하여 재구성된 프레임이나 재구성된 프레임의 일부를 생성할 수 있다. 다른 예에서, 부호화된 비트스트림은, 저장된 부호화 비디오로서, 도 1에 도시된 컴퓨팅 디바이스(100) 또는 도 2에 도시된 컴퓨팅 및 통신 디바이스들(100A, 100B, 100C)과 같은 디바이스의 도 1에 도시된 메모리(110)와 같은 메모리에 저장될 수 있어서, 디바이스 또는 메모리에 액세스할 수 있는 임의의 다른 디바이스는 저장된 부호화 비디오를 검색하여, 도 5에 도시된 디코더(500)와 같은 디코더가 부호화된 비디오를 복호화할 수 있고, 현재 프레임에 대응하는 재구성된 프레임이나 재구성된 프레임의 일부를 생성할 수 있다.
듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 다른 구현예들도 가능하다. 구현예들에서, 듀얼 디블로킹 필터 임계값들을 사용하여 부호화하는 추가 요소들이 부가될 수 있고, 특정 요소들이 결합될 수 있고/있거나 특정 요소들이 제거될 수 있다.
도 12는 본 발명의 구현예들에 따라 디블로킹 임계값 인덱스들을 식별하는 방법(1200)의 예를 나타내는 흐름도이다. 디블로킹 임계값 인덱스들을 식별하는 방법(1200)은 도 4에 도시된 인코더(400)와 같은 인코더로 구현될 수 있다. 예를 들어, 도 4에 도시된 인코더(400)의 필터링 유닛(480)은 디블로킹 임계값 인덱스들을 식별하는 방법(1200)을 구현할 수 있다.
디블로킹 임계값 인덱스들을 식별하는 방법(1200)은 복호화된 프레임일 수 있는 현재 프레임을 디블로킹하기 위한 디블로킹 임계값 인덱스들을 식별하는 방법을 포함할 수 있고, 여기에 설명되거나 문맥상 명백하지 않은 것을 제외하고는 도 11에 도시된 단계 1126의 디블로킹 임계값 인덱스들을 식별하는 것과 유사할 수 있다.
디블로킹 임계값 인덱스들을 식별하는 방법(1200)은 단계 1210에서 공동 디블로킹 임계값 인덱스를 식별하는 것과, 단계 1220에서 제1 개별 디블로킹 임계값 인덱스를 식별하는 것과, 단계 1230에서 제2 개별 디블로킹 임계값 인덱스를 식별하는 것, 또는 이들의 임의의 조합을 포함할 수 있다.
도 12에 개별적으로 도시되지 않았지만, 디블로킹 임계값 인덱스들을 식별하는 방법(1200)은 후보 디블로킹 임계값 인덱스들을 식별하는 것을 포함할 수 있다. 후보 디블로킹 임계값 인덱스들로부터 각각의 디블로킹 임계값 인덱스는 각각의 정의된 디블로킹 임계값들의 세트에 대응하고 고유하게 식별할 수 있다. 예를 들어, 인코더, 또는 인코더의 디블로킹 임계값 인덱스 식별 유닛은, 인코더의 메모리에 저장되거나 인코더에 의해 액세스 가능한 테이블과 같이, 후보 디블로킹 임계값 인덱스들 및 대응하는 디블로킹 임계값들의 세트를 포함하는 테이블 또는 다른 데이터 저장 구조체로부터 판독하거나, 그렇지 않으면 액세스할 수 있다. 일 예에서, 후보 디블로킹 임계값 인덱스들은 카디널리티(cardinality) N을 가질 수 있고, 정의된 디블로킹 임계값들의 세트들은 카디널리티 N을 가질 수 있으며, 각각의 후보 디블로킹 임계값 인덱스는 각각의 정의된 디블로킹 임계값들의 세트에 대응할 수 있다.
단계 1210에서 공동 디블로킹 임계값 인덱스를 식별하는 것은 프레임을 디블로킹하기 위한 공동 에러 메트릭과 같은 메트릭을 최소화하는 디블로킹 임계값들의 세트에 대응하는 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있으며, 이는 수평 또는 수직과 같은 제1 방향에서 디블로킹 임계값들의 세트를 사용하여 프레임을 디블로킹하는 것과, 수직 또는 수평과 같은 제1 방향과 직교할 수 있는 제2 방향에서 디블로킹 임계값들의 세트를 사용하여 프레임을 디블로킹하는 것을 포함할 수 있다. 공동 디블로킹 임계값 인덱스와 같은 디블로킹 임계값 인덱스를 식별하는 예가 도 13에 도시되어 있다.
단계 1220에서 제1 개별 디블로킹 임계값 인덱스를 식별하는 단계는 제1 방향에서 제1 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하고, 제2 방향에서 단계 1210에서 식별된 공동 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 프레임을 디블로킹하기 위해, 에러 메트릭과 같은 메트릭을 최소화하는 디블로킹 임계값들의 세트에 대응하는 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다. 제1 개별 디블로킹 임계값 인덱스와 같은 디블로킹 임계값 인덱스를 식별하는 예가 도 13에 도시되어 있다.
단계 1230에서 제2 개별 디블로킹 임계값 인덱스를 식별하는 것은 제1 방향에서 단계 1220에서 식별된 제1 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하고, 제2 방향에서 제2 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 프레임을 디블로킹하기 위해, 에러 메트릭과 같은 메트릭을 최소화하는 디블로킹 임계값들의 세트에 대응하는 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다. 제2 개별 디블로킹 임계값 인덱스와 같은 디블로킹 임계값 인덱스를 식별하는 예가 도 13에 도시되어 있다.
도 13은 본 발명의 구현예들에 따라 디블로킹 임계값 인덱스를 식별하는 방법(1300)의 예를 나타내는 흐름도이다. 디블로킹 임계값 인덱스를 식별하는 방법(1300)은 도 4에 도시된 인코더(400)와 같은 인코더로 구현될 수 있다. 예를 들어, 도 4에 도시된 인코더(400)의 필터링 유닛(480)은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 구현할 수 있다.
디블로킹 임계값 인덱스를 식별하는 방법(1300)은 단계 1310에서 현재 후보 디블로킹 임계값 인덱스를 식별하는 것과, 단계 1320에서 현재 에러 메트릭을 결정하는 것과, 단계 1330에서 최소 에러 메트릭에 대응하는 후보 디블로킹 임계값 인덱스를 식별하는 것, 또는 이들의 임의의 조합을 포함할 수 있다.
현재 후보 디블로킹 임계값 인덱스는 단계 1310에서 식별될 수 있다. 현재 후보 디블로킹 임계값 인덱스를 식별하는 것은 도 12와 관련하여 설명된 후보 디블로킹 임계값 인덱스들과 같은 후보 디블로킹 임계값 인덱스들의 세트로부터 현재 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다. 단계 1310에서 현재 후보 디블로킹 임계값 인덱스를 식별하는 것은 대응하는 디블로킹 임계값들의 세트를 식별하는 것을 포함할 수 있다.
예를 들어, 도 12의 단계 1210에 도시된 바와 같은 공동 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1310에서 현재 후보 디블로킹 임계값 인덱스를 식별하는 것은 수평 또는 수직과 같은 제1 방향 및 수직 또는 수평과 같은 제1 방향에 직교할 수 있는 제2 방향에서 현재 프레임 또는 그 일부를 디블로킹하기 위한 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 식별하는 것을 포함할 수 있다.
다른 예에서, 도 12의 단계 1220에 도시되거나 도 12의 단계 1230에 도시된 바와 같이, 별개의 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1310에서 현재 후보 디블로킹 임계값 인덱스를 식별하는 것은 제1 방향에서 현재 프레임 또는 그 일부를 디블로킹하기 위해 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 식별하는 것과 제2 방향에서 개별적으로 또는 이전에 식별된 별개의 디블로킹 임계값 인덱스와 같은 상이한 별개의 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하는 것을 포함하거나, 또는 제1 방향에서 상이한 별개의 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하는 것과 제 2 방향에서 현재 프레임 또는 그 일부를 디블로킹하기 위해 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 식별하는 것을 포함할 수 있다.
단계 1320에서 현재 후보 디블로킹 임계값 인덱스에 대한 현재 에러 메트릭이 결정될 수 있다. 현재 에러 메트릭을 결정하는 것은 수평 또는 수직과 같은 제1 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것, 또는 수직 또는 수평과 같은 제1 방향에 직교할 수 있는 제2 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것, 또는 제1 방향 및 제2 방향에서의 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것을 포함할 수 있다.
예를 들어, 도 12의 단계 1210에 도시된 바와 같이, 공동 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1320에서 현재 에러 메트릭을 결정하는 것은 제1 방향 및 제2 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것을 포함할 수 있다. 공동 디블로킹 임계값 인덱스를 식별하는 것을 포함하는 구현예에서, 현재 에러 메트릭은 공동 에러 메트릭일 수 있다.
다른 예에서,도 12의 단계 1220에 도시되거나 도 12의 단계 1230에 도시된 바와 같이, 별개의 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1320에서 현재 에러 메트릭을 결정하는 것은 제1 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여, 현재 프레임 또는 그 일부를 디블로킹하는 것과 제2 방향에서 개별적으로 식별된 개별 디블로킹 임계값 인덱스와 같은 상이한 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것을 포함하거나, 또는 제2 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것과 제1 방향에서 상이한 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것을 포함할 수 있다.
단계 1320에서 현재 에러 메트릭을 결정하는 것은 예를 들어, 후보 재구성 프레임과 대응하는 입력 프레임 간의 SAD(Sum of Absolute Differences), SSD(Sum of Squared Differences)나 다른 에러 메트릭을 결정함으로써, 후보 재구성 프레임 또는 그 일부를 생성하는 것, 및 후보 재구성 프레임 또는 그 일부와 대응하는 입력 프레임 또는 그에 대응하는 부분 사이의 차이에 기초하여 현재 에러 메트릭을 식별하는 것을 포함할 수 있다. 현재 에러 메트릭을 결정하는 예가 도 14에 도시되어 있다.
제1 방향으로 각각의 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하거나, 제2 방향으로 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하거나, 또는 현재 프레임 또는 그 일부를 디블로킹하는 에러 메트릭들의 각각은 제1 방향 및 제2 방향으로 후보 디블로킹 임계값 인덱스들로부터 대응하는 후보 디블로킹 임계값 인덱스를 사용하여, 단계 1325에서, 파선 화살표로 표시된 바와 같이, 결정될 수 있다.
예를 들어, 도 12의 단계 1210에 도시된 바와 같이, 공동 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1320에서 현재 에러 메트릭을 결정하는 것은 제1 방향 및 제2 방향에서 각각의 후보 디블로킹 임계값 인덱스에 대응하는 각각의 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹함으로써 후보 디블로킹 임계값 인덱스들로부터 각각의 후보 디블로킹 임계값 인덱스를 각각 사용하여 공동 에러 메트릭일 수 있는 각각의 에러 메트릭을 결정하는 것을 포함할 수 있다.
일부 구현예들에서, 단계 1310에서 현재 후보 디블로킹 임계값 인덱스를 식별하는 것은 제1 방향(또는 제2 방향)에서, 현재 프레임 또는 그 일부를 디블로킹하기 위해 개별적으로 식별된 별개의 디블로킹 임계값 인덱스와 제2 방향(또는 제1 방향)에서 현재 프레임 또는 그 일부를 디블로킹하기 위한 현재 후보 디블로킹 임계값 인덱스와 같은 후보 디블로킹 임계값 인덱스들로부터 개별적으로 식별된 별개의 디블로킹 임계값 인덱스를 식별하는 것을 생략할 수 있고, 각각의 에러 메트릭들을 결정하는 것은 제1 방향 및 제2 방향에서 개별적으로 식별된 별개의 디블로킹 임계값 인덱스를 사용하여, 현재 프레임 또는 그 일부를 디블로킹하는 데 대응하는 에러 메트릭을 결정하는 것을 생략할 수 있다.
예를 들어, 도 12의 단계 1220에 도시되거나 도 12의 단계 1230에 도시된 바와 같이, 별개의 디블로킹 임계값 인덱스를 식별하는 것은 디블로킹 임계값 인덱스를 식별하는 방법(1300)을 포함할 수 있고, 단계 1320에서 현재 에러 메트릭을 결정하는 것은, 제1 방향에서 각각의 현재 후보 디블로킹 임계값 인덱스에 대응하는 각각의 디블로킹 임계값 세트를 사용하여, 현재 프레임 또는 그 일부를 디블로킹하고 제2 방향에서 별개의 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하거나, 또는 제1 방향에서 상이한 별개의 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 이용하여 현재 프레임 또는 그 일부를 디블로킹하고 제2 방향에서 현재 후보 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트의 각각을 사용하여 현재 프레임 또는 그 일부를 디블로킹함으로써, 개별적으로 식별된 별개의 디블로킹 임계값 인덱스와 같은 별개의 디블로킹 임계값 인덱스와 다르거나 구별되는 후보 디블로킹 임계값 인덱스들로부터 각각의 후보 디블로킹 임계값 인덱스에 각각 대응하는 에러 메트릭들(제 1 에러 메트릭들)을 결정하는 것을 포함할 수 있다.
최소 에러 메트릭에 대응하는 디블로킹 임계값 인덱스는 단계 1330에서 식별될 수 있다. 최소 에러 메트릭에 대응하는 디블로킹 임계값 인덱스를 식별하는 것은 에러 메트릭들의 세트로부터 최소 에러 메트릭을 식별하는 것을 포함할 수 있다. 에러 메트릭들의 세트로부터의 에러 메트릭의 각각은 단계 1320에서 결정된 각각의 현재 에러 메트릭에 대응할 수 있다.
예를 들어, 디블로킹 임계값 인덱스를 식별하는 방법(1300)은 도 12의 단계 1210에 도시된 바와 같은 공동 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있고, 단계 1320에서 현재 에러 메트릭을 결정하는 것은 후보 디블로킹 임계값 인덱스들로부터 각각의 후보 디블로킹 임계값 인덱스의 각각에 대응하는 각각의 디블로킹 임계값들의 세트를 사용하여, 제 1 방향 및 제 2 방향에서, 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하는 각각의 에러 메트릭을 포함하는 에러 메트릭들을 결정하는 것을 포함할 수 있고, 또한 단계 1330에서 디블로킹 임계값 인덱스를 식별하는 것은 단계 1320에서 결정된 에러 메트릭들로부터 최소 에러 메트릭을 식별하는 것과 단계 1330에서 디블로킹 임계값 인덱스로서 최소 에러 메트릭에 대응하는 후보 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
다른 예에서, 도 12의 방법(1200)에 도시된 바와 같은 디블로킹 임계값 인덱스들을 식별하는 것은 도 12의 단계 1210에 도시된 바와 같은 공동 디블로킹 임계값 인덱스를 식별하는 것과, 도 12의 단계 1220에 도시된 바와 같은 제1 개별 디블로킹 임계값 인덱스를 식별하는 것과, 도 12의 단계 1230에 도시된 바와 같은 제2 개별 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
공동 디블로킹 임계값 인덱스를 식별하는 것은 제1 방향에서 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것과 제 2 방향에서 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하는 최소 공동 에러 메트릭을 식별하는 것을 포함할 수 있다.
제1 개별 디블로킹 임계값 인덱스를 식별하는 것은 최소 공동 에러 메트릭을 포함하고 제1 방향에서 공동 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것 및 제2 방향에서 디블로킹 임계값들의 다른 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하는 후보 에러 메트릭들을 포함하는 에러 메트릭들의 세트로부터 최소 에러 메트릭에 대응하는 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
제2 개별 디블로킹 임계값 인덱스를 식별하는 것은 제1 개별 디블로킹 임계값 인덱스에 대응하는 에러 메트릭을 포함하고, 제2 방향에서 제1 개별 디블로킹 임계값 인덱스에 대응하는 디블로킹 임계값들의 세트를 사용하여 현재 프레임 또는 그 일부를 디블로킹하고 제2 방향에서 디블로킹 임계값들의 다른 세트들을 사용하여 현재 프레임 또는 그 일부를 디블로킹하는 것에 대응하는 후보 에러 메트릭들을 포함하는 에러 메트릭들의 세트로부터 최소 에러 메트릭에 대응하는 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
도 14는 본 발명의 구현예들에 따라 현재 에러 메트릭을 결정하는 방법(1400)의 예를 나타내는 흐름도이다. 현재 에러 메트릭을 결정하는 방법(1400)은 도 4에 도시된 인코더(400)와 같은 인코더로 구현될 수 있다. 예를 들어, 도 4에 도시된 인코더(400)의 필터링 유닛(480)은 현재 에러 메트릭을 결정하는 방법(1400)을 구현할 수 있다.
현재 에러 메트릭을 결정하는 방법(1400)은 단계 1410에서 현재 블록을 식별하는 것, 단계 1420에서 재구성된 블록을 생성하는 것, 단계 1430에서 에러 메트릭을 결정하는 것, 또는 이들의 임의의 조합을 포함할 수 있다.
도 14에 개별적으로 도시되지 않았지만, 현재 에러 메트릭을 결정하는 방법(1400)은 수평 또는 수직과 같은 제1 방향에서 현재 프레임을 디블로킹하기 위한 제1 디블로킹 임계값들의 세트를 식별하는 것 및 수직 또는 수평과 같은 제1 방향에 직교할 수 있는 제2 방향에서 현재 프레임을 디블로킹하기 위한 제2 디블로킹 임계값들의 세트를 식별하는 것을 포함할 수 있다.
제1 디블로킹 임계값들의 세트는, 도 12의 단계 1210에 도시된 바와 같이, 식별된 공동 디블로킹 임계값 인덱스와 같은 공동 디블로킹 임계값 인덱스에 대응할 수 있거나, 도 12의 단계 1220에 도시된 바와 같이, 식별된 제1 개별 디블로킹 임계값 인덱스와 같은 제1 개별 디블로킹 임계값 인덱스에 대응할 수 있다. 제2 디블로킹 임계값들의 세트는 공동 개별 디블로킹 임계값 인덱스에 대응하거나, 도 12의 단계 1230에 도시된 바와 같이, 식별된 제2 개별 디블로킹 임계값 인덱스와 같은 제2 개별 디블로킹 임계값 인덱스에 대응할 수 있다.
현재 프레임의 현재 블록은 단계 1410에서 식별될 수 있다. 예를 들어, 현재 프레임은 예측 블록들과 같은 블록들을 포함할 수 있고, 프레임으로부터의 현재 블록의 각각은 래스터 순서와 같은 스캔 순서에 기초하여 식별될 수 있다. 도 14에 개별적으로 도시되지 않았지만, 현재 에러 메트릭을 결정하는 방법(1400)은 현재 블록, 현재 블록에 인접한 하나 이상의 인접 블록들, 또는 양쪽 모두에 대한 변환 블록 크기들을 나타내는 정보를 식별하는 것을 포함할 수 있다.
단계 1420에서 재구성된 블록이 생성될 수 있다. 현재 프레임은 복호화된 프레임일 수 있고, 단계 1410에서 식별된 현재 블록은 복호화된 블록일 수 있으며, 단계 1420에서 재구성된 블록을 생성하는 것은 현재 블록을 디블로킹하는 것을 포함할 수 있다.
현재 블록을 디블로킹하는 것은 제1 방향에서 현재 블록을 디블로킹하기 위한 제1 디블로킹 임계값 인덱스를 사용하고, 제2 방향에서 현재 블록을 디블로킹하기 위한 제2 디블로킹 임계값 인덱스를 사용하여, 복호화된 블록일 수 있는 현재 블록을 디블로킹하는 것을 포함할 수 있다.
제1 디블로킹 임계값 인덱스 및 제2 디블로킹 임계값 인덱스는 공동 디블로킹 임계값 인덱스이거나, 제1 디블로킹 임계값 인덱스가 제2 디블로킹 임계값 인덱스와 상이할 수 있다. 예를 들어, 식별된 디블로킹 임계값 인덱스는 공동 디블로킹 임계값 인덱스일 수 있고, 현재 블록을 디블로킹하는 것은 식별된 디블로킹 임계값 인덱스를 수평 방향에서 복호화된 블록을 디블로킹하기 위한 수평 디블로킹 임계값 인덱스로서 사용하는 것 및 수직 방향에서 복호화된 블록을 디블로킹하기 위한 수직 디블로킹 임계값 인덱스로서 사용하는 것을 포함하거나, 식별된 디블로킹 임계값 인덱스를 수직 방향에서 복호화된 블록을 수직 디블로킹하기 위한 수직 디블로킹 임계값 인덱스로서 사용하는 것 및 수평 방향에서 복호화된 블록을 수평 디블로킹하기 위한 수평 디블로킹 임계값 인덱스로서 사용하는 것을 포함할 수 있다. 현재 블록을 디블로킹하는 방법의 예가 도 15에 도시되어 있다.
도 14에 도시된 바와 같이, 현재 에러 메트릭을 결정하는 방법(1400)은, 단계 1425에서 파선 화살표로 표시된 바와 같이, 현재 프레임의 각 블록에 대한 각각의 재구성된 블록을 생성하는 것을 포함할 수 있다. 예를 들어, 현재 프레임의 각 블록에 대해, 각각의 재구성된 블록이 단계 1420에서 생성될 수 있고, 이는 현재 블록을 제1 방향 및 제2 방향에서 디블로킹하는 것을 포함할 수 있다. 도 14에 개별적으로 도시되지 않았지만, 현재 에러 메트릭을 결정하는 방법(1400)은 제1 방향에서 각각의 현재 블록을 디블로킹함으로써 현재 프레임의 각 블록에 대해 부분적으로 재구성된 블록의 각각을 생성하는 것과 제2 방향에서 대응하는 부분적으로 재구성된 블록을 디블로킹함으로써 현재 프레임의 각 블록에 대해 재구성된 블록을 생성하는 것을 포함할 수 있다.
단계 1430에서 현재 에러 메트릭이 결정될 수 있다. 현재 에러 메트릭은 예를 들어, 현재 재구성된 프레임과 대응하는 입력 프레임 사이의 절대 차이들의 합, 제곱 차이들의 합, 또는 다른 에러 메트릭을 결정함으로써 현재 재구성된 프레임이나 그것의 일부, 및 대응하는 입력 프레임이나 그것의 대응하는 일부 사이의 차이들에 기초하여 결정될 수 있다.
도 15는 본 발명의 구현예들에 따라 현재 블록을 디블로킹하는 방법(1500)의 예를 나타내는 흐름도이다. 재구성된 블록을 생성하는 것을 포함할 수 있는 현재 블록을 디블로킹하는 방법(1500)은 도 4에 도시된 인코더(400)와 같은 인코더로 구현될 수 있다. 예를 들어, 도 4에 도시된 인코더(400)의 필터링 유닛(480)은 현재 블록을 디블로킹하는 방법(1500)을 구현할 수 있다.
현재 블록을 디블로킹하는 것은 제1 디블로킹 임계값 인덱스에 기초하거나, 또는 제1 디블로킹 임계값 인덱스 및 제2 디블로킹 임계값 인덱스에 기초하여 현재 블록을 디블로킹하는 것을 포함할 수 있다. 예를 들어, 제1 디블로킹 임계값 인덱스는 공동 디블로킹 임계값 인덱스일 수 있고, 현재 블록을 디블로킹하는 것은 제1 방향에서 공동 디블로킹 임계값 인덱스에 기초하여 현재 블록을 디블로킹하는 것과, 제2 방향에서 공동 디블로킹 임계값 인덱스에 기초하여 현재 블록을 디블로킹하는 것을 포함할 수 있다. 다른 예에서, 제1 디블로킹 임계값 인덱스는 제1 개별 디블로킹 임계값 인덱스일 수 있고, 제2 디블로킹 임계값 인덱스는 제2 개별 디블로킹 임계값 인덱스일 수 있으며, 현재 블록을 디블로킹하는 것은 제1 방향에서 제1 개별 디블로킹 임계값 인덱스에 기초하여 현재 블록을 디블로킹하는 것 및 제2 방향에서 제2 개별 디블로킹 임계값 인덱스에 기초하여 현재 블록을 디블로킹하는 것을 포함할 수 있다.
현재 블록은 블록 경계들, 둘레들(borders), 가장자리들 또는 측면들을 가질 수 있다. 예를 들어, 도 6 내지 10에 도시된 바와 같이, 현재 블록은 4 개의 블록 경계들을 가질 수 있고, 이는 수직 방향으로 상단 블록 경계 및 하단 블록 경계와 같은 2 개의 블록 경계들과, 수평 방향으로 좌측 블록 경계 및 우측 블록 경계와 같은 2 개의 블록 경계들을 포함할 수 있다. 현재 블록은, 예를 들어, 상단 블록 경계를 따라 현재 블록에 인접할 수 있는 현재 블록 위의 인접 블록, 하단 블록 경계를 따라 현재 블록에 인접할 수 있는 현재 블록 아래의 인접 블록, 좌측 블록 경계를 따라 현재 블록에 인접할 수 있는 현재 블록 좌측의 인접 블록, 및 우측 블록 경계를 따라 현재 블록에 인접할 수 있는 현재 블록 우측의 인접 블록과 같은 인접 블록들에 바로 인접될 수 있다. 현재 블록 및 인접 블록들 각각은 각각의 변환 블록들에 대응할 수 있다. 예를 들어, 현재 블록은 N×N 블록일 수 있고, N×N 변환 블록에 대응할 수 있거나, 현재 블록은 x2 N/x×N/x 변환 블록과 같은 더 작은 변환 블록들에 대응할 수 있다.
도 15에 도시된 바와 같이, 현재 블록을 디블로킹하는 방법(1500)은 단계 1510에서 현재 방향을 식별하는 것과, 단계 1520에서 현재 블록 경계를 식별하는 것과, 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것과, 단계 1540에서 픽셀들을 식별하는 것과, 단계 1550에서 비평탄도 인자(non-flatness factor)를 결정하는 것과 단계 1560에서 디블로킹 여부를 결정하는 것, 및 단계 1570에서 디블로킹 파라미터를 식별하는 것, 또는 이들의 조합을 포함할 수 있다.
현재 방향은 단계 1510에서 식별될 수 있다. 예를 들어, 현재 방향은 수평 또는 수직과 같은 제1 방향, 또는 수직 또는 수평과 같은 제1 방향과 직교할 수 있는 제2 방향으로 식별될 수 있다.
단계 1510에서 현재 방향을 식별하는 것은 현재 방향에서 현재 프레임을 디블로킹하기 위한 현재 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다. 예를 들어, 현재 방향에서 현재 프레임을 디블로킹하기 위한 현재 디블로킹 임계값 인덱스는 도 13의 단계 1310에 도시된 바와 같이 식별될 수 있다. 현재 방향에서 현재 프레임을 디블로킹하기 위한 현재 디블로킹 임계값 인덱스를 식별하는 것은 현재 방향에서 현재 프레임을 디블로킹하기 위한 현재 디블로킹 임계값 인덱스와 연관된 디블로킹 임계값들의 현재 세트, 그룹 또는 집합을 식별하는 것을 포함할 수 있다. 예를 들어, 인코더는 인코더의 메모리에 저장되거나, 그렇지 않으면 인코더에 의해 액세스 가능한 테이블과 같이, 현재 디블로킹 임계값 인덱스 및 대응하는 디블로킹 임계값들을 포함하는 테이블 또는 다른 데이터 저장 구조체로부터 판독하거나, 그렇지 않으면 액세스할 수 있다.
현재 블록 경계는 단계 1520에서 식별될 수 있다. 예를 들어, 현재 방향은 수직일 수 있고, 현재 블록의 상단 측면, 둘레 또는 가장자리에 대응하는 수평 블록 경계가 현재 블록 경계로 식별되거나, 현재 블록의 하단 측면, 둘레 또는 가장자리에 대응하는 수평 블록 경계가 현재 블록 경계로 식별될 수 있다. 다른 예에서, 현재 방향은 수평일 수 있고, 현재 블록의 좌측 측면, 둘레 또는 가장자리에 대응하는 수직 블록 경계가 현재 블록 경계로 식별되거나, 현재 블록의 우측 측면, 둘레 또는 가장자리에 대응하는 수직 블록 경계가 현재 블록 경계로 식별될 수 있다.
단계 1530에서 현재 블록 경계를 디블로킹하기 위해 현재 디블로킹 임계값들의 서브세트가 식별될 수 있다. 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 단계는 단계 1520에서 식별된 현재 블록 경계에 대응하는 현재 최소 변환 블록 크기를 식별하는 것을 포함할 수 있다.
단계 1530에서 현재 블록 경계에 대응하는 현재 최소 변환 블록 크기를 식별하는 것은 현재 블록 경계를 따라 각각의 변환 블록에 대한 변환 블록 크기들 식별하는 것을 포함할 수 있고, 이는 현재 블록에 대응하는 변환 블록들이나, 현재 블록 경계를 따라 현재 블록에 인접하는 변환 블록들 또는 양쪽 모두를 포함할 수 있다.
예를 들어, 도 8을 참조하면, 현재 블록은 우상단 블록(820)일 수 있고, 현재 방향은 수평일 수 있고, 현재 블록 경계(850)는 현재 블록(820)과 수평 인접 블록(810) 사이의 수직 경계일 수 있고, 현재 블록(820)은 16×16 블록일 수 있고, 현재 블록(820)에 대한 변환 블록 크기는 16×16일 수 있고, 인접 블록(810)에 대한 변환 블록 크기는 8×8일 수 있으며, 현재 최소 변환 블록 크기는 8×8일 수 있다.
도 15를 참조하면, 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것은 현재 최소 변환 블록 크기에 기초하여 현재 디블로킹 임계값들의 서브세트를 식별하는 것을 포함할 수 있고, 이는 현재 디블로킹 임계값 인덱스에 기초하여 식별된 디블로킹 임계값들의 세트일 수 있는 현재 디블로킹 임계값들의 세트로부터 현재 디블로킹 임계값들의 서브세트를 식별하는 것을 포함할 수 있다.
예를 들어, 현재 디블로킹 임계값 인덱스에 기초하여 식별된 현재의 디블로킹 임계값들의 세트는 각각의 이용 가능한 변환 블록 크기의 각각에 대응하는 각각의 디블로킹 임계값들의 서브세트를 포함할 수 있고, 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것은 현재의 디블로킹 임계값들의 세트로부터 현재 최소 변환 블록 크기에 대응하는 디블로킹 임계값들의 서브세트를 식별하는 것을 포함할 수 있다. 현재 디블로킹 임계값들의 서브세트는 현재 디블로킹 임계값으로 식별될 수 있다. 예를 들어, 하나 이상의 디블로킹 임계값들은 각각의 최소 변환 블록 크기와 연관될 수 있고, 현재 최소 변환 블록 크기와 연관된 디블로킹 임계값들의 서브세트는 현재 디블로킹 임계값으로 식별될 수 있다.
일부 구현예들에서, 현재 방향에서 제1 블록 경계에 대한 최소 변환 블록 크기는 현재 방향에서의 현재 블록과 반대쪽의 블록 경계에 대해 사전에 식별된 최소 변환 블록 크기와 일치할 수 있고, 반대쪽의 블록 경계를 디블로킹하기 위해 식별된 디블로킹 임계값은 현재 블록 경계를 디블로킹하기 위한 디블로킹 임계값으로 식별될 수 있다. 일부 구현예들에서, 현재 방향에서 현재 블록 경계에 대한 최소 변환 블록 크기는 현재 방향에서 현재 블록과 반대 방향의 블록 경계에 대한 사전에 식별된 최소 변환 블록 크기와는 상이하고, 현재 블록 경계를 디블로킹하기 위한 디블로킹 임계값들은 반대 블록 경계를 디블로킹하기 위해 식별된 디블로킹 임계값들과는 별개로 식별될 수 있다.
단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것은 현재 블록 경계를 디블로킹하기 위한 현재 디블로킹 결정 임계값을 식별하는 것을 포함할 수 있다. 예를 들어, 단계 1530에서 식별된 현재 디블로킹 임계값들의 서브세트는 현재 디블로킹 결정 임계값을 포함할 수 있고, 현재 디블로킹 결정 임계값은 현재 디블로킹 임계값들의 서브세트로부터 식별될 수 있다.
픽셀들의 현재 세트, 그룹 또는 집합과 같은 현재 픽셀들은 단계 1540에서 식별될 수 있다. 현재 픽셀들은 현재 블록으로부터의 픽셀들, 현재 방향에서 현재 블록 경계를 따라 현재 블록에 인접한 인접 블록, 또는 양쪽 모두를 포함할 수 있다. 예를 들어, 단계 1510에서 식별된 현재 방향은 수직일 수 있고, 현재 블록은 픽셀들의 열들을 포함할 수 있고, 인접 블록은 대응하는 픽셀들의 열들을 포함할 수 있으며, 단계 1540에서 현재 픽셀들을 식별하는 것은, 예컨대, 현재 블록 경계에 가장 근접한 현재 블록의 현재 열로부터의 N 픽셀들과 같이, 현재 블록의 현재 열로부터의 픽셀들의 정의된 카디널리티, 숫자 또는 카운트 (N)을 식별하는 것을 포함할 수 있고, 또한, 예컨대, 현재 블록 경계에 가장 근접한 인접 블록의 현재 열로부터의 N 픽셀들과 같이, 인접 블록의 현재 열로부터의 픽셀들의 정의된 카디널리티를 식별하는 것을 포함할 수 있다. 일부 구현예들에서, 현재 블록으로부터 식별된 픽셀들의 카디널리티는 인접 블록으로부터 식별된 픽셀들의 카디널리티와 상이할 수 있다.
비평탄도 인자와 같은 메트릭들은 단계 1550에서 결정될 수 있다. 비평탄도 인자는 식별된 픽셀들의 세트에 대한 평탄도 또는 비평탄도를 나타낼 수 있다. 예를 들어, 현재 비평탄도 인자는, 단계 1540에서 식별된 현재 블록으로부터의 픽셀과 같이, 현재 블록으로부터 식별된 픽셀들의 세트에 대한 평탄도를 나타낼 수 있고, 인접한 비평탄도 인자는 인접 블록의 대응하는 픽셀들에 대한 평탄도 또는 비평탄도를 나타낼 수 있다. 예를 들어, 평탄도나 비평탄도, 메트릭이나 인자는 각각의 픽셀들 사이의 최대차를 나타낼 수 있다.
예를 들어, 도 9를 참조하면, 현재 블록은 좌하단 블록(930)일 수 있고, 현재 블록 경계는 현재 블록(930)과 인접 블록(940) 사이의 수직 경계일 수 있으며, 이는 복호화된 인접 블록일 수 있다. 현재 블록(940)의 각 행에 대해 각각의 현재 평탄도 인자가 식별될 수 있고, 인접 블록(940)의 각 행에 대해 각각의 인접 평탄도 인자가 식별될 수 있다. 예를 들어, 현재 블록(930)의 상단으로부터의 제5 행에 대한 현재 평탄도 인자는 c0, c1, c2, c3, c4, c5, c6, c7로 라벨링된 픽셀들에 기초하여 식별될 수 있고, 인접 블록(940)의 상단으로부터의 제5 행에 대한 인접 평탄도 인자는 a0, a1, a2, a3, a4, a5, a6, a7로 라벨링된 픽셀들에 기초하여 식별될 수 있다.
일 예에서, 현재 블록(c)(930)에 대한 현재 평탄도, 또는 비평탄도 인자는 c4로 라벨링된 픽셀과 c7로 라벨링된 픽셀 사이의 절대값 차이와, c5로 라벨링된 픽셀과 c7로 라벨링된 픽셀 사이의 절대값 차이, 및 c6으로 라벨링된 픽셀과 c7로 라벨링된 픽셀 사이의 절대값 차이의 최대값에 기초하여 식별될 수 있고, 이는 다음과 같이 표현될 수 있다.
Figure pct00002
[수학식 1]
인접 블록(a)에 대해 대응하는 인접 평탄도, 또는 비평탄도 인자는, a0으로 라벨링된 픽셀과 a1로 라벨링된 픽셀 사이의 절대값 차이와 a0으로 라벨링된 픽셀과 a2로 라벨링된 픽셀 사이의 절대값 차이 및 a0으로 라벨링된 픽셀과 a3으로 라벨링된 픽셀 사이의 절대값 차이의 최대값에 기초하여 식별될 수 있고, 이는 다음과 같이 표현될 수 있다.
Figure pct00003
[수학식 2]
다른 예에서, 도 10을 참조하면, 현재 블록은 우상단 블록(1020)일 수 있고, 현재 블록 경계는 현재 블록(1020)과 수직으로 인접한 블록(1040) 사이의 수평 경계일 수 있다. 현재 블록(1020)의 각 열에 대해 현재 평탄도 인자가 식별될 수 있고, 인접 블록(1040)의 각 열에 대해 인접 평탄도 인자가 식별될 수 있다. 예를 들어, 현재 블록(1020)의 좌측으로부터 제5 열에 대한 현재 평탄도 인자는 c0, c1, c2, c3, c4, c5, c6 및 c7로 라벨링된 픽셀들에 기초하여 식별될 수 있고, 인접 블록(1040)의 좌측으로부터 제5 열에 대한 인접 평탄도 인자는 a0, a1, a2, a3, a4, a5, a6 및 a7로 라벨링된 픽셀들에 기초하여 식별될 수 있다.
도 15에 도시된 바와 같이, 현재 디블로킹 결정은 단계 1560에서 식별될 수 있다. 예를 들어, 단계 1540에서 식별된 픽셀들을 디블로킹할지 여부는 단계 1530에서 식별된 현재 디블로킹 결정 임계값 및 단계 1550에서 결정된 비평탄도 인자들에 기초하여 단계 1560에서 결정될 수 있다. 예를 들어, 현재 블록 경계는 프레임에 의해 캡처된 컨텐츠에서 가장자리에 정렬될 수 있고, 현재 블록 경계를 따른 디블로킹 픽셀들은 생략될 수 있다. 다른 예에서, 블록 경계는 프레임에 의해 캡처된 컨텐츠의 가장자리에 정렬되지 않을 수 있고, 현재 블록 경계를 따른 픽셀들은 디블로킹될 수 있다.
현재 블록 경계를 따라 현재 블록으로부터 단계 1540에서 식별된 픽셀들을 디블로킹할지 여부를 결정하는 것은 현재 블록의 현재 행 또는 열에 대해 단계 1550에서 식별된 현재 비평탄도 인자(Nf(c))가 단계 1530에서 식별된 현재 디블로킹 결정 임계값보다 작은 지 여부를 결정하는 것과, 인접 블록에 대한 인접 비평탄도 인자(Nf(a))가 현재 디블로킹 결정 임계값보다 작은 지 여부를 결정하는 것을 포함할 수 있다.
예를 들어, 현재 블록의 현재 행 또는 열에 대한 현재 비평탄도 인자(Nf(a))는 디블로킹 결정 임계값보다 작을 수 있고, 인접 블록의 현재 행 또는 열에 대한 인접 비평탄도 인자(Nf(a))는 디블로킹 결정 임계값보다 작을 수 있으며, 현재 블록 경계의 현재 행 또는 열에 대한 디블로킹을 표시하는 결정이 식별될 수도 있다.
다른 예에서, 현재 블록의 현재 행 또는 열에 대한 현재 비평탄도 인자(Nf(a))는 디블로킹 결정 임계값보다 작을 수 있고, 인접 블록의 현재 행 또는 열에 대한 인접 비평탄도 인자(Nf(a))는 적어도 디블로킹 결정 임계값 이상일 수 있으며, 현재 블록 경계의 현재 행 또는 열에 대한 디블로킹의 생략을 표시하는 결정이 식별될 수 있다.
다른 예에서, 현재 블록의 현재 행 또는 열에 대한 현재 비평탄도 인자(Nf(a))는 적어도 디블로킹 결정 임계값 이상일 수 있고, 인접 블록의 현재 행 또는 열에 대한 인접 비평탄도 인자(Nf(a))는 디블로킹 결정 임계값보다 작을 수 있으며, 현재 블록 경계의 현재 행 또는 열에 대한 디블로킹의 생략을 표시하는 결정이 식별될 수 있다.
다른 예에서, 현재 블록의 현재 행 또는 열에 대한 현재 비평탄도 인자(Nf(a))는 적어도 디블로킹 결정 임계값 이상일 수 있고, 인접 블록의 현재 행 또는 열에 대한 인접 비평탄도 인자(Nf(a))는 적어도 디블로킹 결정 임계값 이상일 수 있으며, 현재 블록 경계의 현재 행 또는 열에 대한 디블로킹의 생략을 표시하는 결정이 식별될 수 있다.
단계 1560에서 식별된 디블로킹 결정은 단계 1540에서 식별된 픽셀들에 대한 디블로킹을 표시할 수 있고, 단계 1540에서 식별된 픽셀들을 디블로킹하기 위한 디블로킹 필터, 디블로킹 필터 유형, 디블로킹 필터 강도, 또는 이들의 조합과 같은 디블로킹 파라미터나 디블로킹 필터 파라미터는 단계 1570에서 식별될 수 있다. 디블로킹 파라미터를 식별하는 것은 현재 디블로킹 임계값들의 서브세트로부터 디블로킹 결정 임계값과 상이할 수 있는 하나 이상의 디블로킹 필터 임계값들을 식별하는 것과 식별된 디블로킹 필터 임계값들에 기초하여 디블로킹 파라미터를 식별하는 것을 포함할 수 있다. 예를 들어, 디블로킹 필터 임계값들은 예측 모드, 모션 벡터 일관성, 변환 블록 크기, 변환 블록 유형 등에 기초하여 식별되거나 조정될 수 있다.
현재 블록 경계를 디블로킹하는 것은, 단계 1562 및 단계 1572에서 파선 화살표로 표시된 바와 같이, 현재 블록의 각 행 또는 열에 대해 단계 1540에서 픽셀들을 식별하는 것과, 현재 블록의 각 행 또는 열에 대해 단계 1550에서 비평탄도 인자를 결정하는 것과, 현재 블록의 각 행 또는 열에 대해 단계 1560에서 디블로킹할지 여부를 결정하는 것과, 현재 블록의 각 행 또는 열에 대해 단계 1570에서 디블로킹 파라미터를 식별하는 것, 또는 이들의 조합을 포함할 수 있다.
현재 방향에서 현재 블록을 디블로킹하는 것은, 1574에서 파선 화살표로 표시된 바와 같이, 현재 방향과 각각의 각 블록 경계에 대해 단계 1520에서 각각의 블록 경계를 식별하는 것과, 각각의 블록 경계에 대해 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1540에서 픽셀들을 식별하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1550에서 비평탄도 인자를 결정하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1560에서 디블로킹할 것인지 여부를 결정하는 것과, 각각의 블록 경계에 대해, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1570에서 디블로킹 파라미터를 식별하는 것, 또는 이들의 조합을 포함할 수 있다.
현재 블록을 디블로킹하는 것은, 단계 1576에서 파선 화살표로 표시된 바와 같이, 각각의 방향에 대해 단계 1510에서 각각의 방향을 식별하는 것과, 각각의 방향 및 각각의 블록 경계에 대해 단계 1520에서 각각의 블록 경계를 식별하는 것과, 각각의 각 블록 경계에 대해 단계 1530에서 현재 디블로킹 임계값들의 서브세트를 식별하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1540에서 픽셀들을 식별하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1550에서 비평탄도 인자를 결정하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1560에서 디블로킹 여부를 결정하는 것과, 각각의 블록 경계에 대한 현재 블록의 각 행 또는 열에 대해 단계 1570에서 디블로킹 파라미터를 식별하는 것, 또는 이들의 조합을 포함할 수 있다.
도 16는 본 발명의 구현예들에 따라 듀얼 디블로킹 필터 임계값들을 사용하여 복호화하는 방법(1600)의 예를 나타내는 흐름도이다. 듀얼 디블로킹 필터 임계값들을 사용하여 복호화하는 방법(1600)은 도 5에 도시된 디코더(500)와 같은 디코더로 구현될 수 있다.
듀얼 디블로킹 필터 임계값들을 사용하여 복호화하는 방법(1600)은 단계 1610에서 부호화된 프레임을 식별하는 것과, 단계 1620에서 복호화된 프레임을 생성하는 것과, 단계 1630에서 디블로킹 임계값 인덱스들을 식별하는 것과, 단계 1640에서 재구성된 프레임을 생성하는 것과, 단계 1650에서 재구성된 프레임을 출력하는 것, 또는 이들의 임의의 조합을 포함할 수 있다.
단계 1610에서 부호화된 프레임이 식별될 수 있다. 예를 들어, 디코더는 부호화된 비트스트림을 수신하거나, 아니면 액세스할 수 있고, 부호화된 비트스트림 또는 그 일부로부터 부호화된 프레임을 식별할 수 있다.
단계 1620에서 복호화된 프레임이 생성될 수 있다. 예를 들어, 복호화된 프레임은 단계 1610에서 식별된 부호화된 프레임을 복호화함으로써 생성될 수 있다. 복호화된 프레임을 생성하는 것은 복호화된 블록들을 생성하는 것을 포함할 수 있다. 복호화된 블록을 생성하는 것은 부호화된 비트스트림의 일부를 복호화하는 것을 포함할 수 있다.
디블로킹 임계값 인덱스들은 단계 1630에서 식별될 수 있다. 예를 들어, 디블로킹 임계값 인덱스들은 부호화된 비트스트림으로부터, 예를 들어, 현재 (재구성되거나 복호화된) 프레임과 관련되거나 이에 대응하는 프레임 헤더로부터 디블로킹 임계값 인덱스들을 복호화, 판독 또는 추출함으로써 식별될 수 있다.
디블로킹 임계값 인덱스들을 식별하는 것은 부호화된 비트스트림으로부터 제1 디블로킹 임계값 인덱스를 식별하는 것, 부호화된 비트스트림으로부터 제2 디블로킹 임계값 인덱스를 식별하는 것, 또는 양쪽 모두를 포함할 수 있다. 예를 들어, 디블로킹 임계값 인덱스들을 식별하는 것은 수평 또는 수직과 같은 제1 방향에서 현재 프레임을 디블로킹하기 위한 제1 디블로킹 임계값 인덱스를 식별하는 것, 및 수직 또는 수평과 같은 제2 방향에서 현재 프레임을 디블로킹하기 위한 제2 디블로킹 임계값 인덱스를 식별하는 것을 포함할 수 있다.
일부 구현예들에서, 제2 디블로킹 임계값 인덱스를 식별하는 것은 부호화된 비트스트림으로부터 차등 디블로킹 임계값 인덱스값과 같은 제2 디블로킹 임계값 인덱스를 나타내는 정보를 추출하는 것, 및 제2 디블로킹 임계값 인덱스로서 차등 디블로킹 임계값 인덱스값과 제1 디블로킹 임계값 인덱스의 합을 식별하는 것을 포함할 수 있다. 일부 구현예들에서, 제2 디블로킹 임계값 인덱스를 식별하는 것은 제2 디블로킹 임계값 인덱스를 나타내는 정보가 차등 디블로킹 임계값 인덱스값을 포함한다고 결정하는 것을 포함할 수 있다.
단계 1640에서 재구성된 프레임이 생성될 수 있다. 재구성된 프레임을 생성하는 것은 복호화된 프레임을 디블로킹하는 것을 포함할 수 있고, 이는 재구성된 블록들을 생성하는 것 및 재구성된 블록들을 디블로킹하는 것을 포함할 수 있다.
복호화된 프레임을 디블로킹하는 것은 프레임으로부터 각각의 복호화된 블록을 디블로킹하는 것을 포함할 수 있고, 이는, 프레임으로부터 개개의 복호화된 블록을 각각 식별하는 것과, 본 명세서에 나타내는 바와 같거나 문맥상 명확하게 설명되는 바와 같이, 도 14에서 단계 1410으로 표시된 블록 식별 및 도 14에서 단계 1420으로 표시된 블록 재구성과 유사할 수 있는, 각각의 복호화된 블록을 디블로킹함으로써 대응하는 재구성 블록을 생성하는 것을 포함할 수 있다. 현재 블록을 디블로킹하는 것은 본 명세서에 설명되거나 문맥상 명백하지 않은 것을 제외하고는 도 15에 도시된 디블로킹과 유사할 수 있다. 예를 들어, 각각의 재구성된 블록은 제1 디블로킹 임계값 인덱스 및 제2 디블로킹 임계값 인덱스에 기초하여 대응하는 복호화된 블록을 디블로킹함으로써 생성될 수 있다. 재구성된 블록들은 재구성된 프레임에 포함될 수 있다.
예를 들어, 제1 디블로킹 임계값 인덱스는 수직 디블로킹 임계값 인덱스일 수 있고, 재구성된 프레임을 생성하는 것은 제1 디블로킹 임계값 인덱스에 기초한 수직 디블로킹 및 제2 디블로킹 임계값 인덱스에 기초한 수평 디블로킹을 포함할 수 있다. 다른 예에서, 제1 디블로킹 임계값 인덱스는 수평 디블로킹 임계값 인덱스일 수 있고, 재구성된 프레임을 생성하는 것은 제1 디블로킹 임계값 인덱스에 기초한 수평 디블로킹 및 제2 디블로킹 임계값 인덱스에 기초한 수직 디블로킹을 포함할 수 있다.
제1 방향에서의 디블로킹은 제1 디블로킹 임계값 인덱스에 기초하여 제1 방향에서 복호화된 프레임을 디블로킹함으로써 부분적으로 디블로킹된 프레임을 생성하는 것을 포함할 수 있다. 제2 방향에서의 디블로킹은 제2 디블로킹 임계값 인덱스에 기초하여 제2 방향에서 부분적으로 디블로킹된 프레임을 디블로킹함으로써 재구성된 프레임을 생성하는 것을 포함할 수 있다.
제1 방향 또는 제2 방향에서의 디블로킹은 각각의 (현재) 디블로킹 임계값 인덱스에 기초하여 디블로킹 임계값들의 세트들로부터 디블로킹 임계값들의 세트를 포함할 수 있는 현재 디블로킹 임계값을 식별하는 것을 포함할 수 있다. 예를 들어, 디코더 또는 디코더의 디블로킹 임계값 식별 유닛은 디코더의 메모리 또는 디코더에 의해 달리 액세스 가능한 메모리에 저장된 테이블과 같은 디블로킹 임계값들의 세트들을 포함하는 테이블 또는 다른 데이터 저장 구조체로부터 판독하거나 아니면 액세스할 수 있고, 제1 디블로킹 임계값 인덱스에 대응하는 제1 디블로킹 임계값들의 세트 및 제2 디블로킹 임계값 인덱스에 대응하는 제2 디블로킹 임계값들의 세트를 식별할 수 있다.
재구성된 프레임은 단계 1650에서 출력될 수 있다. 예를 들어, 재구성된 프레임은 사용자에게 저장 또는 제시하기 위해 도 5에 도시된 출력 비디오 스트림(504)과 같은 출력 비디오 스트림에 포함될 수 있다.
"예(example)" 또는 "예시적인(exemplary)"이라는 단어는 본 명세서에서 일예(example), 사례(instance) 또는 실례(illustration)로서 제공하는 것을 의미하는 것으로 사용된다. 본 명세서에서 "예" 또는 "예시적인"으로 설명된 임의의 양태 또는 설계는 다른 양태들 또는 설계들보다 바람직하거나 유리한 것으로 해석될 필요는 없다. 오히려, "예" 또는 "예시적인"이라는 단어의 사용은 개념을 구체적인 방식으로 제시하기 위한 것이다. 본 출원에서 사용되는 용어 "또는"은 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 명시되지 않거나 문맥상 명확하지 않은 한, "X는 A 또는 B를 포함한다"는 자연 포함 순환들(natural inclusive permutations)을 의미하는 것으로 의도된다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; 또는 X가 A 및 B를 양쪽 모두를 포함하면, "X는 A 또는 B를 포함한다"는 전술한 임의의 사례가 만족된다. 또한, 본 출원 및 첨부된 특허 청구 범위에 사용된 바와 같은 단수형은 문맥에서 단수 형식으로 지시하기 위해 달리 명시되거나 명확하지 않은 한 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다. 또한, "실시예" 또는 "하나의 실시예" 또는 "구현예" 또는 "하나의 구현예"라는 용어의 사용은 그렇게 설명되지 않는 한 동일한 실시예 또는 구현예를 의미하도록 의도되지 않는다. 본 명세서에서 사용된 용어 "결정하다" 및 "식별하다" 또는 그것의 임의의 변형은 도 1에 도시된 하나 이상의 디바이스를 사용하여 어떤 방식으로든 선택, 확인, 계산, 조회, 수신, 결정, 설정, 획득, 또는 그 밖의 방법으로 식별하거나 결정하는 것이 포함된다.
또한, 설명의 단순화를 위해, 본 명세서의 도면 및 상세한 설명은 시퀀스들 또는 일련의 단계들 또는 스테이지들(stages)을 포함할 수 있지만, 본 명세서에 개시된 방법의 요소들은 다양한 순서들로 및/또는 동시에 수행될 수 있다. 또한, 본 명세서에 개시된 방법의 요소들은 본 명세서에 명시적으로 제시되고 설명되지 않은 다른 요소들과 함께 수행될 수 있다. 또한, 본 명세서에 기술된 방법들 중 하나 이상의 요소는 개시된 주제에 따른 방법들의 구현예들에서 생략될 수도 있다.
송신 컴퓨팅 및 통신 디바이스(100A) 및/또는 수신 컴퓨팅 및 통신 디바이스(100B)(및 거기에 저장되고/저장되거나 그에 의해 실행되는 알고리즘들, 방법들, 명령들 등)의 구현예들은 하드웨어, 소프트웨어 또는 임의의 조합으로 실현될 수 있다. 하드웨어는, 예를 들어, 컴퓨터들, IP(Intellectual Property) 코어들, ASIC(Application-Specific Integrated Circuit), 프로그래머블 로직 어레이들(programmable logic arrays), 광학 프로세서들, 프로그래머블 로직 컨트롤러들(programmable logic controllers), 마이크로코드(microcode), 마이크로컨트롤러들(microcontrollers), 서버들, 마이크로프로세서들, 디지털 신호 프로세서들 또는 임의의 다른 적절한 회로를 포함할 수 있다. 특허 청구 범위들에서, 용어 "프로세서"는 전술한 하드웨어 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. "신호" 및 "데이터"라는 용어는 서로 교환 가능하게 사용될 수 있다. 또한, 송신 컴퓨팅 및 통신 디바이스(100A)와 수신 컴퓨팅 및 통신 디바이스(100B)의 일부들은 반드시 동일한 방식으로 구현될 필요는 없다.
또한, 일 구현예에서, 예를 들어, 송신 컴퓨팅 및 통신 디바이스(100A) 또는 수신 컴퓨팅 및 통신 디바이스(100B)는, 실행될 때, 본 명세서에 설명된 각각의 방법들, 알고리즘들 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램을 사용하여 구현될 수 있다. 추가로 또는 대안적으로, 예를 들어, 본 명세서에 설명된 방법들, 알고리즘들 또는 명령들 중 임의의 것을 수행하기 위한 특수 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 이용될 수도 있다.
송신 컴퓨팅 및 통신 디바이스(100A)와 수신 컴퓨팅 및 통신 디바이스(100B)는, 예를 들어, 실시간 비디오 시스템의 컴퓨터들에서 구현될 수도 있다. 대안적으로, 송신 컴퓨팅 및 통신 디바이스(100A)는 서버상에서 구현될 수 있고, 수신 컴퓨팅 및 통신 디바이스(100B)는 휴대용 통신 디바이스와 같은 서버와는 별개인 디바이스상에서 구현될 수 있다. 이 경우, 전송 컴퓨팅 및 통신 디바이스(100A)는 인코더(400)를 사용하여 콘텐츠를 부호화된 비디오 신호로 부호화하여 부호화된 비디오 신호를 통신 디바이스로 전송할 수 있다. 그런 다음, 통신 디바이스는 디코더(500)를 사용하여 부호화된 비디오 신호를 복호화할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 국부적으로 저장된 콘텐츠, 예를 들어, 송신 컴퓨팅 및 통신 디바이스(100A)에 의해 전송되지 않은 콘텐츠를 복호화할 수 있다. 다른 적절한 송신 컴퓨팅 및 통신 디바이스(100A) 및 수신 컴퓨팅 및 통신 디바이스(100B)의 구현 방식을 이용할 수 있다. 예를 들어, 수신 컴퓨팅 및 통신 디바이스(100B)는 휴대용 통신 디바이스보다는 일반적으로 고정형 개인 컴퓨터일 수 있고/있거나 인코더(400)를 포함하는 디바이스는 디코더(500)를 포함할 수도 있다.
또한, 구현예들의 전부 또는 일부는, 예를 들어, 유형의 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는, 예를 들어, 임의의 프로세서에 의해 또는 프로세서와 관련하여 사용하기 위해 프로그램을 유형적으로 포함, 저장, 통신 또는 전달할 수 있는 임의의 디바이스일 수 있다. 매체는, 예를 들어, 전자, 자기, 광학, 전자기 또는 반도체 디바이스일 수 있다. 다른 적합한 매체들도 이용할 수 있다.
전술한 구현예들은 본 출원의 이해를 용이하게 하기 위해 설명되었지만 그것으로 제한되는 것은 아니다. 반대로, 본 출원은 첨부된 특허 청구 범위들의 범주 내에 포함된 다양한 수정들 및 등가의 배열들을 포괄하며, 이 범주는 법률에 의해 허용되는 모든 그러한 수정들 및 등가 구조를 포괄하도록 가장 넓게 해석되어야 한다.

Claims (26)

  1. 비일시적 컴퓨터 판독 가능 매체에 저장된 명령들을 실행하는 프로세서에 의해, 부호화된 비트스트림을 복호화함으로써 재구성된 프레임을 생성하는 단계를 포함하되, 상기 복호화는:
    상기 부호화된 비트스트림의 일부를 복호화함으로써 복호화된 블록을 생성하는 단계;
    상기 부호화된 비트스트림으로부터 제1 디블로킹 임계값 인덱스(first deblocking threshold index)를 식별하는 단계;
    상기 부호화된 비트스트림으로부터 제2 디블로킹 임계값 인덱스를 식별하는 단계;
    상기 복호화된 블록에 기초하여 재구성된 블록을 생성하는 단계 ― 상기 재구성된 블록을 생성하는 단계는, 상기 제1 디블로킹 임계값 인덱스 및 상기 제2 디블로킹 임계값 인덱스에 기초한 디블로킹을 포함함 ― ;
    상기 재구성된 블록을 상기 재구성된 프레임에 포함시키는 단계를 포함하는, 상기 생성하는 단계; 및
    상기 재구성된 프레임을 출력하는 단계
    를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 제1 디블로킹 임계값 인덱스를 식별하는 단계는, 상기 재구성된 프레임에 대응하는 프레임 헤더로부터 상기 제1 디블로킹 임계값 인덱스를 추출하는 단계를 포함하는,
    방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 제2 디블로킹 임계값 인덱스를 식별하는 단계는:
    상기 부호화된 비트스트림으로부터 차등 디블로킹 임계값 인덱스값(differential deblocking threshold index value)을 식별하는 단계; 및
    상기 차등 디블로킹 임계값 인덱스값과 상기 제1 디블로킹 임계값 인덱스의 합을, 상기 제2 디블로킹 임계값 인덱스로서 식별하는 단계를 포함하는,
    방법.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 재구성된 프레임을 생성하는 단계는:
    상기 제1 디블로킹 임계값 인덱스가 수직 디블로킹 임계값 인덱스인 조건하에서, 디블로킹은 상기 제1 디블로킹 임계값 인덱스에 기초한 수직 디블로킹 및 상기 제2 디블로킹 임계값 인덱스에 기초한 수평 디블로킹을 포함하고; 또한
    상기 제1 디블로킹 임계값 인덱스가 수평 디블로킹 임계값 인덱스인 조건하에서, 디블로킹은 상기 제1 디블로킹 임계값 인덱스에 기초한 수평 디블로킹 및 상기 제2 디블로킹 임계값 인덱스에 기초한 수직 디블로킹을 포함하는,
    방법.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상기 디블로킹은:
    현재 디블로킹 임계값 인덱스에 기초하여 복수의 디블로킹 임계값들로부터 현재 디블로킹 임계값을 식별하는 단계를 포함하며,
    상기 현재 디블로킹 임계값 인덱스가 상기 제1 디블로킹 임계값 인덱스인 조건하에서, 상기 현재 디블로킹 임계값은 제1 디블로킹 임계값이고; 또한
    상기 현재 디블로킹 임계값 인덱스가 상기 제2 디블로킹 임계값 인덱스인 조건하에서, 상기 현재 디블로킹 임계값이 제2 디블로킹 임계값인,
    방법.
  6. 제5 항에 있어서,
    상기 현재 디블로킹 임계값을 식별하는 단계는:
    상기 현재 디블로킹 임계값 인덱스에 기초하여 상기 복수의 디블로킹 임계값들로부터 디블로킹 임계값들의 세트를 식별하는 단계;
    현재 방향에서 상기 복호화된 블록의 현재 블록 경계에 대응하는 현재 최소 변환 블록 크기를 식별하는 단계; 및
    상기 현재 최소 변환 블록 크기에 기초하여 상기 디블로킹 임계값들의 세트로부터 디블로킹 임계값들의 서브세트를, 상기 현재 디블로킹 임계값으로서 식별하는 단계를 포함하는,
    방법.
  7. 제6 항에 있어서,
    상기 현재 디블로킹 임계값을 식별하는 단계는:
    상기 현재 최소 변환 블록 크기가 상기 현재 블록 경계와 반대에 있는 상기 복호화된 블록의 제2 블록 경계에 대한 제2 최소 변환 블록 크기와는 상이하다는 결정에 응답하여, 상기 현재 디블로킹 임계값이 상기 제2 블록 경계에 대한 디블로킹 임계값과는 상이하게 되도록 상기 현재 디블로킹 임계값을 식별하는 단계; 및
    상기 현재 최소 변환 블록 크기가 상기 제2 최소 변환 블록 크기와 동일하다는 결정에 응답하여, 상기 제2 블록 경계에 대한 상기 디블로킹 임계값을, 상기 현재 디블로킹 임계값으로서 식별하는 단계를 포함하는,
    방법.
  8. 제6 항 또는 제7 항에 있어서,
    상기 디블로킹은:
    상기 현재 블록 경계에 대한 디블로킹을 표시하는 현재 디블로킹 결정에 응답하여, 상기 현재 블록 경계를 디블로킹하는 단계를 포함하는,
    방법.
  9. 제8 항에 있어서,
    상기 디블로킹은,
    상기 현재 방향을 따라 상기 복호화된 블록으로부터의 픽셀값들에 기초하여 현재 평탄도 인자(flatness factor)를 식별하는 단계;
    상기 현재 평탄도 인자가 상기 현재 디블로킹 임계값으로부터의 디블로킹 결정 임계값을 초과한다는 결정에 응답하여, 상기 현재 디블로킹 결정을 상기 디블로킹의 생략을 표시하는 것으로서 식별하는 단계;
    상기 현재 방향을 따라 인접한 복호화된 블록으로부터의 픽셀값들에 기초하여 인접한 평탄도 인자를 식별하는 단계;
    상기 인접한 평탄도 인자가 상기 디블로킹 결정 임계값을 초과한다는 결정에 응답하여, 상기 현재 블로킹 결정을, 상기 디블로킹의 생략을 표시하는 것으로서 식별하는 단계; 및
    상기 현재 평탄도 인자가 상기 디블로킹 결정 임계값 내에 있고 상기 인접한 평탄도 인자가 상기 디블로킹 결정 임계값 내에 있다는 결정에 응답하여, 상기 현재 블로킹 결정을, 디블로킹을 표시하는 것으로서 식별하는 단계.
    에 의해 상기 현재 디블로킹 결정을 생성하는 단계를 포함하는.
    방법.
  10. 제8 항에 있어서,
    상기 현재 블록 경계를 디블로킹하는 단계는:
    상기 디블로킹 임계값들의 서브세트로부터 디블로킹 필터 임계값을 식별하는 단계;
    상기 디블로킹 필터 임계값에 기초하여 디블로킹 필터 파라미터를 식별하는 단계; 및
    상기 디블로킹 필터 파라미터를 사용하여 상기 현재 블록 경계를 디블로킹하는 단계를 포함하는,
    방법.
  11. 비일시적 컴퓨터 판독 가능 매체에 저장된 명령들을 실행하는 프로세서에 의해, 입력 프레임을 부호화함으로써 부호화된 프레임을 생성하는 단계를 포함하되, 상기 부호화는:
    상기 부호화된 프레임을 복호화함으로써 복호화된 프레임을 생성하는 단계;
    상기 복호화된 프레임을 재구성함으로써 재구성된 프레임을 생성하는 단계 ― 상기 복호화된 프레임을 재구성하는 단계는: 상기 복호화된 프레임을 디블로킹하기 위해 복수의 디블로킹 임계값 인덱스들로부터 공동 디블로킹 임계값 인덱스를 식별하는 단계; 상기 복수의 디블로킹 임계값 인덱스들로부터 제1 디블로킹 임계값 인덱스를 식별하는 단계로서, 상기 제1 디블로킹 임계값 인덱스를 식별하는 단계는 상기 복호화된 프레임을 디블로킹하기 위해 상기 공동 디블로킹 임계값 인덱스를 제2 디블로킹 임계값 인덱스로서 사용하는 단계를 포함하는, 상기 식별하는 단계; 및 상기 복수의 디블로킹 임계값 인덱스들로부터 상기 제2 디블로킹 임계값 인덱스를 식별하는 단계를 포함하고, 상기 제2 디블로킹 임계값 인덱스를 식별하는 단계는 상기 복호화된 프레임을 디블로킹하기 위해 상기 제1 디블로킹 임계값 인덱스를 사용하는 단계를 포함함 ―; 및
    상기 부호화된 프레임, 상기 제1 디블로킹 임계값 인덱스의 표시 및 상기 제2 디블로킹 임계값 인덱스의 표시를 포함하는 출력 비트스트림을 생성하는 단계를 포함하는, 상기 생성하는 단계; 및
    상기 출력 비트스트림을 출력하는 단계
    를 포함하는, 방법.
  12. 제11 항에 있어서,
    상기 출력 비트스트림을 생성하는 단계는:
    상기 제1 디블로킹 임계값 인덱스의 표시를 상기 부호화된 프레임에 대응하는 프레임 헤더 내에 포함시키는 단계를 포함하는,
    방법.
  13. 제11 항 또는 제12 항에 있어서,
    상기 출력 비트스트림을 생성하는 단계는:
    상기 제1 디블로킹 임계값 인덱스와 상기 제2 디블로킹 임계값 인덱스의 차이를 차등 디블로킹 임계값 인덱스값으로서 식별하는 단계; 및
    상기 차등 디블로킹 임계값 인덱스값을 상기 출력 비트스트림에 포함시키는 단계를 포함하는,
    방법.
  14. 제11 항 내지 제13 항 중 어느 한 항에 있어서,
    상기 재구성된 프레임을 생성하는 단계는:
    상기 부호화된 프레임으로부터 부호화된 블록을 복호화함으로써 복호화된 블록을 생성하는 단계;
    상기 복호화된 블록에 기초하여 재구성된 블록을 생성하는 단계 ― 상기 재구성된 블록을 생성하는 단계는, 상기 제1 디블로킹 임계값 인덱스 및 상기 제2 디블로킹 임계값 인덱스에 기초한 디블로킹을 포함함 ― ; 및
    상기 재구성된 블록을 상기 재구성된 프레임에 포함시키는 단계를 포함하는,
    방법.
  15. 제14 항에 있어서,
    상기 부호화는:
    상기 제1 디블로킹 임계값 인덱스가 수직 디블로킹 임계값 인덱스인 조건하에서, 디블로킹이 상기 제1 디블로킹 임계값 인덱스에 기초한 수직 디블로킹 및 상기 제2 디블로킹 임계값 인덱스에 기초한 수평 디블로킹을 포함하는 것; 및
    상기 제1 디블로킹 임계값 인덱스가 수평 디블로킹 임계값 인덱스인 조건하에서, 디블로킹이 상기 제1 디블로킹 임계값 인덱스에 기초한 수평 디블로킹 및 상기 제2 디블로킹 임계값 인덱스에 기초한 수직 디블로킹을 포함하는 것
    을 포함하는,
    방법.
  16. 제14 항 또는 제15 항에 있어서,
    상기 공동 디블로킹 임계값 인덱스를 식별하는 단계는:
    공동 에러 메트릭들을 결정하는 단계 ― 상기 공동 에러 메트릭들 중에서 각각의 공동 에러 메트릭은, 상기 복수의 디블로킹 임계값 인덱스들 중에서 각각의 디블로킹 임계값 인덱스를, 상기 제1 디블로킹 임계값 인덱스 및 상기 제2 디블로킹 임계값 인덱스로서 사용하여 상기 복호화된 프레임을 디블로킹하는 것에 대응함 ― ; 및
    상기 공동 에러 메트릭들 중에서 최소 공동 에러 메트릭에 대응하는 상기 디블로킹 임계값 인덱스를, 상기 공동 디블로킹 임계값 인덱스로서 식별하는 단계를 포함하는,
    방법.
  17. 제16 항에 있어서,
    상기 제1 디블로킹 임계값 인덱스를 식별하는 단계는:
    제1 에러 메트릭들을 식별하는 단계 ― 상기 제1 에러 메트릭들 중에서 각각의 제1 에러 메트릭은, 상기 공동 디블로킹 임계값 인덱스를, 상기 제2 디블로킹 임계값 인덱스로서 사용하고 상기 복수의 디블로킹 임계값 인덱스들 중에서 상기 공동 디블로킹 임계값 인덱스가 아닌 각각의 디블로킹 임계값 인덱스를, 상기 제1 디블로킹 임계값 인덱스로서 사용하여 상기 복호화된 프레임을 디블로킹하는 것에 대응함 ― ;
    상기 최소 공동 에러 메트릭을, 상기 공동 디블로킹 임계값 인덱스에 대응하는 제1 에러 메트릭으로서, 상기 제1 에러 메트릭들에 포함시키는 단계; 및
    상기 제1 에러 메트릭들 중에서 최소 제1 에러 메트릭에 대응하는 디블로킹 임계값 인덱스를, 상기 제1 디블로킹 임계값 인덱스로서 식별하는 단계를 포함하는,
    방법.
  18. 제17 항에 있어서,
    상기 제2 디블로킹 임계값 인덱스를 식별하는 단계는:
    제2 에러 메트릭들을 식별하는 단계 ― 상기 제2 에러 메트릭들 중에서 각각의 제2 에러 메트릭은, 상기 제1 디블로킹 임계값 인덱스를 사용하고 상기 복수의 디블로킹 임계값 인덱스들 중에서 상기 제1 디블로킹 임계값 인덱스가 아닌 각각의 디블로킹 임계값 인덱스를, 상기 제2 디블로킹 임계값 인덱스로서 사용하여 상기 복호화된 프레임을 디블로킹하는 것에 대응함 ― ;
    상기 최소 제1 에러 메트릭을, 상기 제1 디블로킹 임계값 인덱스에 대응하는 제2 에러 메트릭으로서, 상기 제2 에러 메트릭들에 포함시키는 단계; 및
    상기 제2 에러 메트릭들 중에서 최소 제2 에러 메트릭에 대응하는 상기 디블로킹 임계값 인덱스를, 상기 제2 디블로킹 임계값 인덱스로서 식별하는 단계를 포함하는,
    방법.
  19. 제17 항 또는 제18 항에 있어서,
    상기 디블로킹은:
    현재 디블로킹 임계값 인덱스에 기초하여 복수의 디블로킹 임계값들 중에서 현재 디블로킹 임계값을 식별하는 단계를 포함하고,
    상기 현재 디블로킹 임계값 인덱스가 상기 제1 디블로킹 임계값 인덱스인 조건하에서, 상기 현재 디블로킹 임계값은 제1 디블로킹 임계값이고; 또한
    상기 현재 디블로킹 임계값 인덱스가 상기 제2 디블로킹 임계값 인덱스인 조건하에서, 상기 현재 디블로킹 임계값은 제2 디블로킹 임계값인,
    방법.
  20. 제19 항에 있어서,
    상기 현재 디블로킹 임계값을 식별하는 단계는:
    상기 현재 디블로킹 임계값 인덱스에 기초하여 상기 복수의 디블로킹 임계값들 중에서 디블로킹 임계값들의 세트를 식별하는 단계;
    현재 방향에서 상기 복호화된 블록의 현재 블록 경계에 대응하는 현재 최소 변환 블록 크기를 식별하는 단계; 및
    상기 현재 최소 변환 블록 크기에 기초하여 상기 디블로킹 임계값들의 세트 중에서 디블로킹 임계값들의 서브세트를 상기 현재 디블로킹 임계값으로서 식별하는 단계를 포함하는,
    방법.
  21. 제20 항에 있어서,
    상기 현재 디블로킹 임계값을 식별하는 단계는:
    상기 현재 최소 변환 블록 크기가 상기 현재 블록 경계와 반대에 있는 상기 복호화된 블록의 제2 블록 경계에 대한 제2 최소 변환 블록 크기와는 상이하다는 결정에 응답하여, 상기 현재 디블로킹 임계값이 상기 제2 블록 경계에 대한 디블로킹 임계값과는 상이하게 되도록 상기 현재 디블로킹 임계값을 식별하는 단계; 및
    상기 현재 최소 변환 블록 크기가 상기 제2 최소 변환 블록 크기와 동일하다는 결정에 응답하여, 상기 제2 블록 경계에 대한 상기 디블로킹 임계값을, 상기 현재 디블로킹 임계값으로서 식별하는 단계를 포함하는,
    방법.
  22. 제20 항 또는 제21 항에 있어서,
    상기 디블로킹은:
    상기 현재 블록 경계에 대한 디블로킹을 표시하는 현재 디블로킹 결정에 응답하여, 상기 현재 블록 경계를 디블로킹하는 단계를 포함하는,
    방법.
  23. 제22 항에 있어서,
    상기 디블로킹은,
    상기 현재 방향을 따라 상기 복호화된 블록으로부터의 픽셀값들에 기초하여 현재 평탄도 인자를 식별하는 단계;
    상기 현재 평탄도 인자가 상기 현재 디블로킹 임계값으로부터의 디블로킹 결정 임계값을 초과한다는 결정에 응답하여, 상기 현재 디블로킹 결정을, 상기 디블로킹의 생략을 표시하는 것으로서 식별하는 단계;
    상기 현재 방향을 따라 인접한 복호화된 블록으로부터의 픽셀값들에 기초하여 인접한 평탄도 인자를 식별하는 단계;
    상기 인접한 평탄도 인자가 상기 디블로킹 결정 임계값을 초과한다는 결정에 응답하여, 상기 현재 블로킹 결정을, 상기 디블로킹의 생략을 표시하는 것으로서 식별하는 단계; 및
    상기 현재 평탄도 인자가 상기 디블로킹 결정 임계값 내에 있고 상기 인접한 평탄도 인자가 상기 디블로킹 결정 임계값 내에 있다는 결정에 응답하여, 상기 현재 블로킹 결정을, 디블로킹을 표시하는 것으로서 식별하는 단계
    에 의해 상기 현재 디블로킹 결정을 생성하는 단계를 포함하는,
    방법.
  24. 제22 항에 있어서,
    상기 현재 블록 경계를 디블로킹하는 단계는:
    상기 디블로킹 임계값들의 서브세트 중에서 디블로킹 필터 임계값을 식별하는 단계;
    상기 디블로킹 필터 임계값에 기초하여 디블로킹 필터 파라미터를 식별하는 단계; 및
    상기 디블로킹 필터 파라미터를 사용하여 상기 현재 블록 경계를 디블로킹하는 단계를 포함하는,
    방법.
  25. 프로세서에 의해, 비일시적 컴퓨터 판독 가능 매체에 저장된 명령들에 응답하여,
    부호화된 비트스트림의 일부를 복호화함으로써 복호화된 블록들을 포함하는 복호화된 프레임을 생성하는 단계;
    상기 부호화된 비트스트림 중에서 제1 디블로킹 임계값 인덱스를 식별하는 단계;
    상기 부호화된 비트스트림 중에서 제2 디블로킹 임계값 인덱스를 식별하는 단계 ― 상기 제2 디블로킹 임계값 인덱스는 상기 제1 디블로킹 임계값 인덱스와는 상이함 ― ;
    상기 제1 디블로킹 임계값 인덱스에 기초하여, 제1 방향에서 상기 복호화된 프레임을 디블로킹함으로써 부분적으로 디블로킹된 프레임을 생성하는 단계; 및
    상기 제2 디블로킹 임계값 인덱스에 기초하여, 제2 방향에서 상기 부분적으로 디블로킹된 프레임을 디블로킹함으로써 상기 재구성된 프레임을 생성하는 단계
    에 의해 재구성된 프레임을 생성하는 단계; 및
    상기 재구성된 프레임을 출력하는 단계를 포함하는,
    방법.
  26. 제25 항에 있어서,
    상기 제1 디블로킹 임계값 인덱스를 식별하는 단계는, 상기 재구성된 프레임에 대응하는 프레임 헤더로부터 상기 제1 디블로킹 임계값 인덱스를 추출하는 단계를 포함하고;
    상기 제2 디블로킹 임계값 인덱스를 식별하는 단계는:
    상기 재구성된 프레임에 대응하는 상기 프레임 헤더로부터 상기 제2 디블로킹 임계값 인덱스를 표시하는 정보를 추출하는 단계;
    상기 제2 디블로킹 임계값 인덱스를 표시하는 상기 정보가 차등 디블로킹 임계값 인덱스값을 포함한다는 결정에 응답하여, 상기 차등 디블로킹 임계값 인덱스값과 상기 제1 디블로킹 임계값 인덱스의 합을, 상기 제2 디블로킹 임계값 인덱스로서 식별하는 단계; 및
    상기 제2 디블로킹 임계값 인덱스를 표시하는 상기 정보가 디블로킹 임계값 인덱스를 포함한다는 결정에 응답하여, 상기 디블로킹 임계값 인덱스를, 상기 제2 디블로킹 임계값 인덱스로서 식별하는 단계를 포함하는,
    방법.
KR1020197035627A 2017-09-17 2018-05-08 듀얼 디블로킹 필터 임계값들 KR102294438B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/706,735 2017-09-17
US15/706,735 US10645408B2 (en) 2017-09-17 2017-09-17 Dual deblocking filter thresholds
PCT/US2018/031565 WO2019055070A1 (en) 2017-09-17 2018-05-08 DOUBLE RELEASE FILTER THRESHOLDS

Publications (2)

Publication Number Publication Date
KR20200002035A true KR20200002035A (ko) 2020-01-07
KR102294438B1 KR102294438B1 (ko) 2021-08-25

Family

ID=62530531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197035627A KR102294438B1 (ko) 2017-09-17 2018-05-08 듀얼 디블로킹 필터 임계값들

Country Status (6)

Country Link
US (2) US10645408B2 (ko)
EP (1) EP3682638A1 (ko)
JP (1) JP6959367B2 (ko)
KR (1) KR102294438B1 (ko)
CN (1) CN110720223B (ko)
WO (1) WO2019055070A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194229A1 (ko) * 2020-03-23 2021-09-30 엘지전자 주식회사 비디오 또는 이미지 코딩 시스템에서 디블록킹 필터 파라미터 정보를 시그널링하는 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2020002143A (es) * 2017-12-06 2020-07-20 Fujitsu Ltd Metodos y aparatos para codificar y decodificar informacion de modo y dispositivo electronico.
WO2021045671A1 (en) * 2019-09-06 2021-03-11 Telefonaktiebolaget Lm Ericsson (Publ) Deblocking filter selection in video or image coding

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130070597A (ko) * 2010-05-18 2013-06-27 소니 주식회사 화상 처리 장치와 화상 처리 방법
KR101373759B1 (ko) * 2012-01-30 2014-03-28 광운대학교 산학협력단 복호화 장치 및 방법
KR20140098740A (ko) * 2011-11-04 2014-08-08 파나소닉 주식회사 변경된 이미지 블록 경계 세기 유도에 의한 디블로킹 필터링
US9344723B2 (en) * 2012-04-13 2016-05-17 Qualcomm Incorporated Beta offset control for deblocking filters in video coding
KR101647376B1 (ko) * 2009-03-30 2016-08-10 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR20160132915A (ko) * 2014-03-14 2016-11-21 퀄컴 인코포레이티드 픽셀 거리를 이용한 디블록 필터링

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1209624A1 (en) * 2000-11-27 2002-05-29 Sony International (Europe) GmbH Method for compressed imaging artefact reduction
WO2003021936A2 (en) * 2001-09-05 2003-03-13 Emblaze Semi Conductor Ltd Method for reducing blocking artifacts
EP2899977A1 (en) 2002-01-31 2015-07-29 Samsung Electronics Co., Ltd Filtering method and apparatus for reducing block artifacts or ringing noise
US7227901B2 (en) 2002-11-21 2007-06-05 Ub Video Inc. Low-complexity deblocking filter
US7362810B2 (en) 2003-05-13 2008-04-22 Sigmatel, Inc. Post-filter for deblocking and deringing of video data
US7539248B2 (en) 2004-04-29 2009-05-26 Mediatek Incorporation Adaptive de-blocking filtering apparatus and method for MPEG video decoder
US7983505B2 (en) * 2007-03-30 2011-07-19 Intel Corporation Performing deblocking on pixel data
JP2009004920A (ja) * 2007-06-19 2009-01-08 Panasonic Corp 画像符号化装置および画像符号化方法
JP5844263B2 (ja) * 2009-10-05 2016-01-13 ビーマル イメージング リミテッドBeamr Imaging Ltd. デジタル画像を再圧縮するための装置および方法
US9185430B2 (en) * 2010-03-15 2015-11-10 Mediatek Singapore Pte. Ltd. Deblocking filtering method and deblocking filter
CN107241604B (zh) * 2010-04-01 2020-11-03 索尼公司 图像处理设备和方法
US8787443B2 (en) * 2010-10-05 2014-07-22 Microsoft Corporation Content adaptive deblocking during video encoding and decoding
US9807424B2 (en) * 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
US20130101027A1 (en) * 2011-06-20 2013-04-25 Matthias Narroschke Deblocking control by individual quantization parameters
KR102010160B1 (ko) * 2011-06-28 2019-08-12 소니 주식회사 화상 처리 장치, 화상 처리 방법 및 기록 매체
KR102138260B1 (ko) * 2011-09-20 2020-07-28 엘지전자 주식회사 영상 정보 인코딩/디코딩 방법 및 장치
US9807403B2 (en) * 2011-10-21 2017-10-31 Qualcomm Incorporated Adaptive loop filtering for chroma components
CN109246429A (zh) * 2011-11-04 2019-01-18 Lg 电子株式会社 用于编码/解码图像信息的方法和装置
US9414064B2 (en) * 2011-11-25 2016-08-09 Sun Patent Trust Image processing method and image processing apparatus
CN104350753B (zh) * 2012-06-01 2019-07-09 威勒斯媒体国际有限公司 算术解码装置、图像解码装置、算术编码装置以及图像编码装置
US9270993B2 (en) * 2012-09-10 2016-02-23 Apple Inc. Video deblocking filter strength derivation
US20140192862A1 (en) * 2013-01-07 2014-07-10 Research In Motion Limited Methods and systems for prediction filtering in video coding
WO2014120368A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US10038915B2 (en) * 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US20180091812A1 (en) * 2016-09-23 2018-03-29 Apple Inc. Video compression system providing selection of deblocking filters parameters based on bit-depth of video data

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101647376B1 (ko) * 2009-03-30 2016-08-10 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR20130070597A (ko) * 2010-05-18 2013-06-27 소니 주식회사 화상 처리 장치와 화상 처리 방법
KR20140098740A (ko) * 2011-11-04 2014-08-08 파나소닉 주식회사 변경된 이미지 블록 경계 세기 유도에 의한 디블로킹 필터링
KR101373759B1 (ko) * 2012-01-30 2014-03-28 광운대학교 산학협력단 복호화 장치 및 방법
US9344723B2 (en) * 2012-04-13 2016-05-17 Qualcomm Incorporated Beta offset control for deblocking filters in video coding
KR20160132915A (ko) * 2014-03-14 2016-11-21 퀄컴 인코포레이티드 픽셀 거리를 이용한 디블록 필터링

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
비특허문헌1(Geert Van der Auwera 등, JCTVC-J0090, 2012.07.20) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194229A1 (ko) * 2020-03-23 2021-09-30 엘지전자 주식회사 비디오 또는 이미지 코딩 시스템에서 디블록킹 필터 파라미터 정보를 시그널링하는 방법

Also Published As

Publication number Publication date
JP6959367B2 (ja) 2021-11-02
US20200236375A1 (en) 2020-07-23
WO2019055070A1 (en) 2019-03-21
US20190089969A1 (en) 2019-03-21
KR102294438B1 (ko) 2021-08-25
EP3682638A1 (en) 2020-07-22
CN110720223A (zh) 2020-01-21
CN110720223B (zh) 2022-08-02
US11153588B2 (en) 2021-10-19
JP2020524933A (ja) 2020-08-20
US10645408B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
US10009625B2 (en) Low-latency two-pass video coding
US10104398B2 (en) Super-transform video coding
US10694180B2 (en) Entropy coding transform partitioning information
GB2546888B (en) Tile copying for video compression
US10701398B2 (en) Context adaptive scan order for entropy coding
EP3707905A1 (en) Block artefact reduction
US20170237939A1 (en) Loop filtering for multiform transform partitioning
US11528498B2 (en) Alpha channel prediction
US11153588B2 (en) Dual deblocking filter thresholds
US20220046242A1 (en) Quantization constrained neural image coding
CN107079156B (zh) 用于交替块约束决策模式代码化的方法

Legal Events

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