KR101941955B1 - 재귀적 블록 파티셔닝 - Google Patents
재귀적 블록 파티셔닝 Download PDFInfo
- Publication number
- KR101941955B1 KR101941955B1 KR1020167021004A KR20167021004A KR101941955B1 KR 101941955 B1 KR101941955 B1 KR 101941955B1 KR 1020167021004 A KR1020167021004 A KR 1020167021004A KR 20167021004 A KR20167021004 A KR 20167021004A KR 101941955 B1 KR101941955 B1 KR 101941955B1
- Authority
- KR
- South Korea
- Prior art keywords
- regions
- block
- region
- sub
- partition
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 개시내용의 양상들에 따르면, 이미지를 영역들로 분할하고, 각각의 영역에 파티션 타입들을 적용하고, 각각의 영역에 적용된 파티션 타입들에 기초하여 각각의 영역에 대한 레이트 왜곡 비용을 결정하고, 각각의 영역에 적용된 파티션 타입에 기초하여 각각의 영역에 대한 코딩 방식을 결정하고, 그리고 각각의 영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여 각각의 영역을 개별적으로 인코딩하기 위한 시스템들 및 방법들이 제공된다.
Description
관련 출원에 대한 상호 참조
[0001] 본 출원은, "RECURSIVE BLOCK PARTITIONING"이라는 명칭으로 2013년 12월 30일자로 출원된 미국 정규 특허 출원 제 14/144,375호의 계속 출원이고 이를 우선권으로 주장하며, 상기 특허 출원의 개시내용은 그 전체가 인용에 의해 본원에 포함된다.
[0002] 본 설명은, 비디오 압축에서의 재귀적(recursive) 블록 파티셔닝(partitioning) 및 그의 엔트로피 인코딩(entropy encoding)을 위한 다양한 컴퓨터-기반 기술들에 관한 것이다.
[0003] 일반적으로, 비디오 코덱(codec)들은 디지털 비디오의 압축/압축해제를 가능하게 한다. 통상적으로, 비디오 품질, 비디오를 표현하는데 요구되는 데이터의 양(즉, 비트 레이트), 인코딩/디코딩 알고리즘들의 복잡도, 및 다수의 다른 팩터(factor)들 간에 복잡한 균형이 존재한다. 비디오 코덱들은 통상적으로 블록-기반 코딩을 이용하며, 여기서, 블록 사이즈들이 더 클수록 코딩에 대해 평균 오버헤드(overhead) 비용이 더 적게 되게 하는 한편, 블록 사이즈들이 더 작을 수록 잔류(residual) 에너지를 감소시키기 위한 예측에서 더 많은 유연성을 허용할 수 있다. 종래의 비디오 코덱들은, 레이트 왜곡(rate distortion) 비용을 최적화하기 위한 블록 사이즈 선택을 핸들링(handle)하는 경우에는 불충분하지만, 비교적 단순하고 간결한 코덱 구조를 유지한다. 최근, 평균 오버헤드 비용과 예측 품질 간의 트레이드-오프(trade-off)를 최적화하기 위한 보통의 전략은, 주어진 영역에 대해, 인코더가 허용가능한 블록 사이즈들 전부를 테스팅(test)하여 레이트 왜곡 비용을 최소화하는 블록 사이즈를 선택할 수 있다는 것이다. 이러한 보통의 전략은 선택된 블록 사이즈들을 비트스트림으로 명시적으로(explicitly) 인코딩한다. 불운하게도, 종래의 인코딩에 대해, 블록 사이즈들 전부에 걸친 그러한 대규모(massive) 탐색들은 고도로 복잡한 비디오 코덱 구현을 초래한다. 추가로, 블록 사이즈 정보를 명시적으로 코딩하는 것은 공간적 상관(correlation)을 충분히 활용하지 않으며, 이는 낮은 압축 효율성을 초래할 수 있다. 그러므로, 비디오 코덱들이 구현되는 프로세스들을 최적화하고 그리고/또는 개선할 필요성이 존재한다.
[0004] 본 개시내용의 양상들에 따르면, 실행되는 경우 적어도 하나의 프로세서로 하여금 프로세스를 수행하게 하는 명령들을 저장하기 위한 비-일시적인 컴퓨터-판독가능 저장 매체가 제공된다. 명령들은, 이미지를 복수의 영역들로 분할(divide)하고 그리고 복수의 영역들의 각각의 영역에 복수의 파티션 타입들을 적용하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 복수의 영역들의 각각의 영역에 대한 레이트 왜곡(예컨대, 레이트 왜곡 비용)을 결정하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 복수의 영역들의 각각의 영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여, 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들을 포함할 수 있다.
[0005] 본 개시내용의 양상들에 따르면, 실행되는 경우 적어도 하나의 프로세서로 하여금 프로세스를 수행하게 하는 명령들을 저장하기 위한 비-일시적인 컴퓨터-판독가능 저장 매체가 제공된다. 명령들은, 비디오 프레임을 복수의 픽셀 블록들로 분할하고 그리고 복수의 픽셀 블록들의 각각의 픽셀 블록에 복수의 파티션 타입들을 적용하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 복수의 픽셀 블록들의 각각의 픽셀 블록에 적용된 복수의 파티션 타입들 중 제 1 파티션 타입에 대해, 제 1 파티션 타입의 각각의 픽셀 블록을 복수의 픽셀 서브-블록들로 분할하고 그리고 복수의 픽셀 서브-블록들의 각각의 픽셀 서브-블록에 복수의 파티션 타입들을 재적용(reapply)하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대한 레이트 왜곡 비용을 결정하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대한 코딩 방식을 결정하도록 구성되는 명령들을 포함할 수 있다. 명령들은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록을 개별적으로 인코딩하도록 구성되는 명령들을 포함할 수 있다.
[0006] 본 개시내용의 양상들에 따르면, 시스템은, 적어도 하나의 프로세서 및 메모리를 포함할 수 있다. 시스템은, 적어도 하나의 프로세서로 하여금 이미지를 복수의 영역들로 분할하게 하고 그리고 복수의 영역들의 각각의 영역에 복수의 파티션 타입들을 적용하게 하도록 구성되는 인코더를 포함할 수 있다. 인코더는, 적어도 하나의 프로세서로 하여금, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들 중 적어도 하나의 파티션 타입에 대해, 적어도 하나의 파티션 타입의 각각의 영역을 복수의 서브-영역들로 분할하게 하고 그리고 복수의 서브-영역들의 각각의 서브-영역에 복수의 파티션 타입들을 재적용하게 하도록 구성될 수 있다. 인코더는, 적어도 하나의 프로세서로 하여금, 각각의 영역 및 각각의 서브-영역에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 영역 및 각각의 서브-영역에 대한 레이트 왜곡 비용을 결정하게 하도록 구성될 수 있다. 인코더는, 적어도 하나의 프로세서로 하여금, 각각의 영역 및 각각의 서브-영역에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 영역 및 각각의 서브-영역에 대한 코딩 방식을 결정하게 하도록 구성될 수 있다. 인코더는, 적어도 하나의 프로세서로 하여금, 각각의 영역 및 각각의 서브-영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여, 각각의 영역 및 각각의 서브-영역을 개별적으로 인코딩하게 하도록 구성될 수 있다.
[0007] 하나 이상의 구현들의 세부사항들은 아래의 설명 및 첨부된 도면들에서 제시된다. 다른 특징들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
[0008] 도 1a는 본 개시내용의 양상들에 따른, 비디오 압축에서의 재귀적 블록 파티셔닝 및 그의 엔트로피 인코딩을 위한 다양한 컴퓨터-기반 기술들을 구현하기 위한 예시적인 시스템을 예시하는 블록도이다.
[0009] 도 1b는 본 개시내용의 양상들에 따른, 도 1a에 도시된 블록들의 부분과 연관된 예시적인 컴포넌트들을 예시하는 블록도이다.
[0010] 도 2는 본 개시내용의 양상들에 따른, 예시적인 인코더를 예시하는 블록도이다.
[0011] 도 3은 본 개시내용의 양상들에 따른, 예시적인 디코더를 예시하는 다른 블록도이다.
[0012] 도 4는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 기술을 예시하는 블록도이다.
[0013] 도 5는 본 개시내용의 양상들에 따른, 컨텍스트(context)-기반 엔트로피 인코딩을 위한 예시적인 기술을 예시하는 블록도이다.
[0014] 도 6a는 본 개시내용의 양상들에 따른, 인코더에서 테이블들을 생성하기 위한 방법을 예시하는 프로세스 흐름이다.
[0015] 도 6b-6c는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 방법들을 예시하는 프로세스 흐름들이다.
[0016] 도 7은 일 구현에 따른 확률(probability) 테이블의 예를 예시하는 도면이다.
[0017] 도 8은 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 다른 예시적인 방법을 예시하는 프로세스 흐름이다.
[0009] 도 1b는 본 개시내용의 양상들에 따른, 도 1a에 도시된 블록들의 부분과 연관된 예시적인 컴포넌트들을 예시하는 블록도이다.
[0010] 도 2는 본 개시내용의 양상들에 따른, 예시적인 인코더를 예시하는 블록도이다.
[0011] 도 3은 본 개시내용의 양상들에 따른, 예시적인 디코더를 예시하는 다른 블록도이다.
[0012] 도 4는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 기술을 예시하는 블록도이다.
[0013] 도 5는 본 개시내용의 양상들에 따른, 컨텍스트(context)-기반 엔트로피 인코딩을 위한 예시적인 기술을 예시하는 블록도이다.
[0014] 도 6a는 본 개시내용의 양상들에 따른, 인코더에서 테이블들을 생성하기 위한 방법을 예시하는 프로세스 흐름이다.
[0015] 도 6b-6c는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 방법들을 예시하는 프로세스 흐름들이다.
[0016] 도 7은 일 구현에 따른 확률(probability) 테이블의 예를 예시하는 도면이다.
[0017] 도 8은 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 다른 예시적인 방법을 예시하는 프로세스 흐름이다.
[0018] 도 1a는 본 개시내용의 양상들에 따른, 비디오 압축에서의 재귀적 블록 파티셔닝 및 그의 엔트로피 인코딩을 위한 다양한 기술들을 구현하기 위한 예시적인 시스템(100)을 예시하는 도면이다. 몇몇 구현들에서, 이미지는 다수의 영역들로 분할될 수 있다(예컨대, 각각의 영역은 64×64 픽셀들과 같은 n×n 픽셀들의 사이즈를 가짐). 추가로, 각각의 영역은 최적의 코딩 결정들(이미지가 영역들 또는 픽셀 블록 사이즈들로 분할 또는 파티셔닝되는 방식, 블록에 대한 예측 모드, 각각의 블록에 적용되는 변환 타입 등을 포함함)을 찾기 위해 레이트 왜곡 루프를 통해 테스팅될 수 있고, 그 후, 각각의 영역은 래스터 순서(raster order)로 비트스트림으로 코딩 또는 인코딩될 수 있다. 몇몇 구현들에서, 이미지는, 64×32 픽셀들과 같은 n×m 픽셀들의 사이즈를 갖는 다수의 영역들로 분할될 수 있다.
[0019] 레이트 왜곡 루프는, 비디오 압축에서 비디오 품질을 개선하기 위해 사용될 수 있고, 비디오를 인코딩하기 위해 사용되는 데이터의 양(데이터 레이트)에 대한 왜곡의 양(비디오 품질의 손실)을 비교하고 결정하는 것을 수반할 수 있다. 몇몇 구현들에서, 레이트 왜곡 루프는 인코딩을 개선하기 위해 사용될 수 있고, 여기서, 결정들은, 인코딩된 비디오의 파일 사이즈 및 품질에 동시에 영향을 미칠 수 있다.
[0020] 도 1a의 예에서, 시스템(100)은, 재귀적 블록 파티셔닝을 구현하기 위한 컴퓨터 시스템을 포함할 수 있다. 도 1a의 예에서, 인코더(120)는, 입력 비디오 스트림을 사용하여 인코딩된 또는 압축된 비트스트림을 제공하기 위해, 순방향(forward) 경로에서 다양한 기능들을 수행하기 위한 하나 이상의 스테이지들을 포함할 수 있다. 본원에서 추가로 설명되는 바와 같이, 입력 비디오 스트림의 이미지 또는 비디오 프레임은 다수의 영역들로 분할될 수 있으며, 여기서, 각각의 영역은 최적의 코딩 결정들을 찾기 위해 레이트 왜곡 루프를 통해 테스팅 또는 평가될 수 있고, 그 후, 각각의 영역은 래스터 순서로 비트스트림으로 인코딩될 수 있다.
[0021] 도 1a의 예에서, 디코더(124)는, 인코딩된 또는 압축된 비트스트림으로부터 출력 비디오 스트림을 제공하기 위해, 다양한 기능들을 수행하기 위한 하나 이상의 스테이지들을 포함할 수 있다. 본원에 추가로 설명되는 바와 같이, 인코딩된 또는 압축된 비트스트림은, 출력 비디오 스트림을 제공하기 위해서, 디코딩하기 위해 디코더에 제공될 수 있다. 몇몇 구현들에서, 디코더(124)는 인코더(120)의 상보형(complement)이며, 이에 의해, 디코더(124)에 의해 사용되는 디코딩 프로세스는 인코더(120)에 의해 사용되는 인코딩 프로세스의 상보형이다. 인코더(120) 및 디코더(124)에 동작에 관련된 더 세부적인 사항들은, 예를 들어, 도 2 내지 도 5와 관련하여 아래에 설명된다.
[0022] 도 1a의 예에서, 컴퓨팅 디바이스(104)는 비디오 소스(114) 및 네트워크(118)와 통신하는 서버 또는 사용자 디바이스를 포함할 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스(104)는, 비디오 인터페이스(130)를 통해 비디오 소스(114)로부터 비디오 데이터 스트림을 수신하고, 인코더(120)를 통해 비디오 데이터 스트림을 인코딩하고, 그리고 인코딩된 비디오 데이터 스트림을 네트워크 인터페이스(134)를 통해 네트워크(118)를 거쳐 송신하도록 구성될 수 있다. 인코더(120)는, 비디오 소스(114)의 블록 파티셔닝 및 블록 파티셔닝의 엔트로피 인코딩에 기초하여 최적화된 인코딩 프로세스들을 사용할 수 있다. 최적화를 발생시키는 예시적인 인코딩 프로세스(들)가 본원에 추가로 설명된다.
[0023] 몇몇 구현들에서, 컴퓨팅 디바이스(104)는, 네트워크 인터페이스(134)를 통해 네트워크(118)로부터 비디오 데이터 스트림을 수신하고, 디코더(124)를 통해 비디오 데이터 스트림을 디코딩하고, 그리고 비디오 인터페이스(130)를 통해 디스플레이 디바이스(150) 상에 디코딩된 비디오 데이터 스트림을 디스플레이하도록 구성될 수 있다. 디코더(124)는, 비디오 데이터 스트림의 블록 파티셔닝 및 블록 파티셔닝의 엔트로피 디코딩에 기초하여 최적화된 디코딩 프로세스들을 사용할 수 있다. 예시적인 디코딩 프로세스(들)가 본원에 추가로 설명된다.
[0024] 비디오 소스(114)는, 스틸 이미지(still image)들, 비디오 프레임들 등을 포함하는 비디오 이미지들을 제공하고, 캡쳐하고, 그리고/또는 송신하는 것이 가능한 임의의 디바이스일 수 있다. 예를 들면, 비디오 소스(114)는, 컴퓨터 서버, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 모바일 폰, 개인 휴대 정보 단말, 디지털 카메라, 디지털 캠코더, 웹캠, 또는 비디오 이미지들을 포함하는 이미지들을 제공하고, 캡쳐하고, 그리고/또는 송신하는 것이 가능한 임의의 다른 디바이스를 포함할 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스(104)는, 다수의 비디오 소스들(114)로부터 오디오 및/또는 비디오를 수신하고, 소스들을 단일 비디오 데이터 스트림으로 결합시킬 수 있다.
[0025] 몇몇 구현들에서, 컴퓨팅 디바이스(104)는, 네트워크(118)의 하나의 노드에 있을 수 있고, 네트워크(118)의 하나 이상의 다른 노드들과 직접적으로 또는 간접적으로 통신하도록 동작가능할 수 있다. 예를 들면, 컴퓨팅 디바이스(104)는, 네트워크(118)를 통해 하나 이상의 클라이언트 디바이스들과 통신함으로써 컴퓨팅 디바이스(104)가 네트워크(118)를 사용하여 사용자에게 정보를 송신하고 그리고 디스플레이 디바이스(152)를 통해 사용자에게 정보를 디스플레이하게 하도록 동작가능한 웹 서버를 포함할 수 있다. 본원에 설명되는 개념들 및 기술들이 일반적으로 컴퓨팅 디바이스(104)에 관하여 설명되지만, 본 개시내용의 다양한 양상들은 인코딩/디코딩 동작들을 구현하는 것이 가능한 임의의 디바이스 및/또는 컴퓨팅 노드에 적용될 수 있다.
[0026] 몇몇 구현들에서, 시스템(100)은, 개인 식별가능 정보의 익명화, 데이터의 어그리게이션(aggregation), 민감한 정보의 필터링, 암호화, 개인 속성들을 제거하기 위한 민감한 정보의 해싱(hashing) 또는 필터링, 정보의 저장에 대한 시간 제한들, 및/또는 데이터 사용 또는 공유에 대한 제한들을 포함하는, 데이터 대한 프라이버시(privacy) 보호를 제공하도록 구성될 수 있다. 그러므로, 데이터는, 개별적인 사용자 데이터가 누설되지 않도록 익명화되고 그리고 어그리게이팅될 수 있다.
[0027] 도 1a의 예에서, 비디오 인터페이스(130)는, 컴퓨팅 디바이스들, 주변기기들, 및 다양한 타입들의 전기 장비들 간의 연결들에 대해 특정되는 물리적 특징들 및 파라미터들의 타입들을 정의하는 다수의 상이한 오디오 및 비디오 표준들에 관련된 입력에 대해 하드웨어 및/또는 소프트웨어 인터페이스를 제공하도록 구성될 수 있다. 이들 오디오 및 비디오 표준들은, 신호들의 성공적인 전달을 위한 아날로그 및 디지털 비디오 데이터 전달 프로토콜들을 정의할 수 있다. 예를 들면, 디지털 인터페이스는, 입력 비디오 스트림과 같은 디지털 비디오 컨텐츠의 전달을 위해, 비디오 소스를 컴퓨터와 같은 컴퓨팅 디바이스에 연결하는데 사용될 수 있다. 몇몇 예시들에서, 비디오 인터페이스(130)는, 비디오 소스(114)로부터 입력 비디오 스트림을 수신하고 그리고 입력 비디오 스트림을 인코딩을 위해 인코더(120)에 제공하도록 설계될 수 있다.
[0028] 도 1a의 예에서, 네트워크 인터페이스(134)는, 인코더(120)에 의해 인코딩되는 바와 같은 비디오 데이터 스트림들을 송신하는 것을 관리하도록 구성될 수 있다. 추가로, 네트워크 인터페이스(134)는, 디코더(124)에 의해 디코딩되는 바와 같은 비디오 데이터 스트림들을 수신하는 것을 관리하도록 구성될 수 있다. 네트워크 인터페이스(134)는, 적어도 하나의 프로세서(110)로부터 명령들을 수신하여 비디오 데이터 스트림들을 송신 및 수신하기 위한 네트워크 파라미터들 및 네트워크 프로토콜들을 구성하도록 구성될 수 있다.
[0029] 네트워크(118)는, 인터넷, World Wide Web, 인트라넷들, 가상 사설 네트워크들, 로컬 이더넷 네트워크들, 하나 이상의 컴퍼니(company)들에 독점적인(proprietary) 통신 프로토콜들을 사용하는 사설 네트워크들, 셀룰러 및 무선 네트워크들(예컨대, Wi-Fi), 인스턴트 메시징(instant messaging), 하이퍼텍스트 전달 프로토콜("HTTP(hypertext transfer protocol)"), 간이 전자우편 전달 프로토콜("SMTP(simple mail transfer protocol )"), 및 전술한 것들의 다양한 결합들을 포함하는 다양한 구성들 및 다양한 프로토콜들을 포함할 수 있다. 추가로, 시스템(100)은, 네트워크(118)를 통해 통신하는 연결된 컴퓨터들로 이루어진 더 큰 시스템의 일부일 수 있다.
[0030] 위에 언급된 바와 같이 정보가 송신 또는 수신되는 경우, 특정한 이점들이 획득되지만, 본원에 설명된 시스템 및 방법의 다른 양상들은 정보의 송신에 대해 임의의 특정한 방식으로 제한되지 않는다. 예를 들면, 몇몇 구현들에서, 정보는 광학 디스크 또는 휴대용 드라이브와 같은 매체를 통해 전송될 수 있다. 다른 구현들에서, 정보는 비-전자 포맷으로 송신되고 그리고/또는 수동으로 시스템에 입력될 수 있다.
[0031] 도 1a의 예에서, 시스템(100)은, 본원에 설명되는 바와 같이, 비디오 압축에서의 재귀적 블록 파티셔닝 및 그의 엔트로피 인코딩을 위한 다양한 컴퓨터-기반 기술들을 구현하도록 설계되는 특수 목적 머신으로서 구성될 수 있는 컴퓨팅 디바이스(104)와 연관될 수 있는, 재귀적 블록 파티셔닝을 구현하기 위한 컴퓨터 시스템을 포함할 수 있다. 이러한 의미에서, 컴퓨팅 디바이스(104)는, 적어도 하나의 프로세서(110), 적어도 하나의 메모리(112)(예컨대, 비-일시적인 컴퓨터-판독가능 저장 매체), 적어도 하나의 데이터베이스(140), 전력부, 주변기기(들), 및 도 1a에 명시적으로 도시되지 않았을 수 있는 다양한 다른 컴퓨팅 엘리먼트들 및/또는 컴포넌트들을 포함하는 임의의 표준 엘리먼트(들) 및/또는 컴포넌트(들)을 포함할 수 있다. 추가로, 시스템(100)은, 예를 들어, 그래픽 사용자 인터페이스(GUI)와 같은 사용자 인터페이스(UI)(152)를 제공하는데 사용될 수 있는 디스플레이 디바이스(150)(예컨대, 모니터 또는 다른 디스플레이)와 연관될 수 있다. UI(152)는, 시스템(100)을 이용하는 사용자로부터 입력을 수신하는데 사용될 수 있다.
[0032] 그러므로, 시스템(100)을 구현하는데 유용할 수 있는, 시스템(100)의 다양한 다른 엘리먼트들 및/또는 컴포넌트들이 부가되거나 또는 포함될 수 있다. 추가로, 다양한 구현들에서, 컴퓨팅 디바이스(104)는, 컴퓨터 서버, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 모바일 폰, 개인 휴대 정보 단말, 또는 스틸 이미지들 및 비디오 이미지들을 포함하는 이미지들을 프로세싱(예컨대, 인코딩, 디코딩 등)하고 그리고/또는 송신하는 것이 가능한 임의의 다른 디바이스와 같은 임의의 타입의 디바이스를 포함할 수 있다.
[0033] 도 1a는 적어도 하나의 프로세서(110) 및 적어도 하나의 메모리(112)를 단일 기능 블록 내에 기능적으로 예시하지만, 적어도 하나의 프로세서(110) 및 적어도 하나의 메모리(112)는, 동일한 물리적 하우징(housing) 내에 저장되거나 또는 동일한 물리적 하우징 내에 저장되지 않을 수 있는 다수의 프로세서들 및 메모리들을 포함할 수 있다는 것이 이해되어야 한다. 그러므로, 프로세서(들), 컴퓨터(들), 및/또는 메모리(들)에 대한 참조들은, 병렬로 동작하거나 또는 병렬로 동작하지 않을 수 있는 프로세서들, 컴퓨터들, 및/또는 메모리들의 집합에 대한 참조들을 포함할 수 있다는 것이 이해되어야 한다.
[0034] 도 1a의 예에서, 시스템(100)은, 컴퓨팅 디바이스(104), 및 컴퓨터-판독가능 매체(112) 상에 기록되고 적어도 하나의 프로세서(110)에 의해 실행가능한 명령들을 포함할 수 있다. 추가로, 일 구현에서, 시스템(100)은, 사용자에 출력을 제공하기 위한 디스플레이 디바이스(150)를 포함할 수 있으며, 디스플레이 디바이스(150)는 사용자로부터 입력을 수신하기 위한 UI(152)를 포함할 수 있다.
[0035] 도 1a의 예에서, 시스템(100)은, 거의 별개의 기능을 표현하는 다양한 기능 블록들 또는 모듈들을 사용하여 예시된다는 것이 인식되어야 한다. 그러나, 그러한 예시는 명확성 및 편의성을 위해 제공되며, 따라서, 다양한 기능들은 설명된 블록(들) 또는 모듈(들) 내에서 오버랩(overlap)되거나 또는 결합될 수 있고, 그리고/또는 도 1a의 예에서 구체적으로 예시되지 않은 하나 이상의 블록(들) 또는 모듈(들)에 의해 구현될 수 있다는 것이 인식되어야 한다. 그러므로, 도 1a의 시스템(100)에 대해 유용하다고 고려될 수 있는 종래의 기능은 또한, 그러한 종래의 엘리먼트들이 명확성 및 편의성을 위해 명시적으로 예시되지 않았다 하더라도 포함될 수 있다는 것이 인식되어야 한다.
[0036] 도 1b는 본 개시내용의 양상들에 따른, 도 1a에 도시된 블록들의 부분과 연관된 예시적인 컴포넌트들을 예시하는 블록도이다. 특히, 도 1b는, 도 1a에 도시된 메모리(112) 및 인코더(120)와 연관된 예시적인 컴포넌트들을 예시한다.
[0037] 도 1b의 예에서, 메모리(112)는 확률 테이블(160)을 포함할 수 있으며, 각각의 확률 테이블(160)은 하나 이상의 확률 값들(예컨대, CN1, CN2, CN3, CN4)과 연관되고 그리고/또는 그들로 채워진다(populated). 다양한 구현들에서, 메모리(112)는, 임의의 개수의 확률 테이블들(이를테면, 확률 테이블(160)) 및 임의의 개수의 연관된 확률 값들을 포함할 수 있다. 몇몇 구현들에서, 확률 값들 중 하나 이상은, 하나 이상의 다른 확률 테이블들(도시되지 않음)에 관련될 수 있다. 확률 테이블(160)에 포함된 확률 값들 중 하나 이상은, 일 세트의 비디오 프레임들을 포함하는 비디오 시퀀스의 각각의 프레임에 대해 수정/업데이트될 수 있다. 확률 값들 CN1, CN2, CN3, CN4 각각은, 비디오 프레임 내의 블록을 인코딩하는 것과 함께 사용되는 특정한 파티션 타입의 확률과 연관될 수 있다.
[0038] 추가로, 도 1b의 예에서, 인코더(120)는, 비디오 시퀀스 검출기(162), 확률 계산기(164), 및 파티션 모듈(165)을 포함하는 하나 이상의 컴포넌트들(예컨대, 프로세싱 컴포넌트들)을 포함할 수 있다. 몇몇 구현들에서, 비디오 시퀀스의 각각의 비디오 프레임은, 작은 영역들의 그리드(grid)로 분할될 수 있으며, 여기서, 각각의 영역은, 최적의 코딩 결정들을 찾기 위해 레이트-왜곡 최적화 루프를 통해 테스팅될 수 있고, 그 후, 래스터 순서로 비트스트림으로 코딩될 수 있다.
[0039] 비디오 시퀀스 검출기(162)는, 비디오 프레임들의 시퀀스의 제 1 프레임을 식별하도록 구성될 수 있다. 예를 들면, 비디오 시퀀스 검출기(162)는, 새로운 비디오 시퀀스를 검출하고, 확률 계산들을 리셋/재시작하고, 그리고 예컨대, 비디오 시퀀스의 처음(제 1 프레임)에서 확률 테이블들을 디폴트(default)로 리셋하는 것을 비롯하여 확률 테이블들을 업데이트/수정하도록 구성될 수 있다. 몇몇 구현들에서, 비디오 시퀀스 검출기(162)는, 비디오 시퀀스의 제 1 프레임을 검출하는 경우 확률 분포 숫자들 및/또는 값들을 변경하도록 구성될 수 있다.
[0040] 확률 계산기(164)는, 비디오 프레임들의 시퀀스의 제 1 프레임(또는 후속 프레임)의 인코딩에 기초하여, 파티션 타입과 연관된 확률 값(예컨대, 확률 값 CN1)을 업데이트된 확률 값으로 수정/업데이트하도록 구성될 수 있다. 몇몇 구현들에서, 각각의 확률 테이블(160)의 확률 값들은, 비디오 시퀀스의 각각의 프레임에 대한 코딩 결정들을 최적화하도록 수정/업데이트될 수 있다.
[0041] 파티션 모듈(165)은, 메모리(112)에 저장된 확률 테이블(160)에 기초하여, 비디오 프레임들의 시퀀스의 제 1 프레임을 인코딩하도록 구성될 수 있다. 몇몇 구현들에서, 확률 테이블(160)은, 하나 이상의 파티션 타입들과 연관된 하나 이상의 확률 값들을 포함할 수 있다. 추가로, 파티션 모듈(165)은, 확률 테이블(160)에 포함된 업데이트된 확률 값들에 기초하여, 비디오 프레임들의 시퀀스의 제 2 프레임을 인코딩하도록 구성될 수 있다. 몇몇 구현들에서, 각각의 프레임은, 각각의 프레임이 더 작은 블록 사이즈들로 파티셔닝되는 방식, 블록에 대한 예측 모드, 각각의 블록에 적용되는 변환 타입 등을 포함하는 최적의 코딩 결정들을 결정하기 위해 재귀적으로 인코딩될 수 있다.
[0042] 파티션 모듈(165)은, 이웃 블록 분석기(166) 및 파티션 선택기(167)를 포함하는 하나 이상의 컴포넌트들을 포함할 수 있다. 몇몇 구현들에서, 이웃 블록 분석기(166)는 좌측에 이웃하는 블록 및 위에 이웃하는 블록(및/또는 상이한 이웃들)을 포함하는 이웃하는 블록들을 식별하도록 구성될 수 있고, 파티션 선택기(167)는, 이웃하는 블록들의 파티셔닝과 관련하여 현재 블록의 최적의 파티셔닝을 식별하는 것을 포함하는 추가적인 분석을 위해, 하나 이상의 이웃하는 블록들에 다양한 파티션 타입들을 적용하도록 구성될 수 있다.
[0043] 본 개시내용의 양상들에 따르면, 인코더(120)는, 이웃하는 블록들을 분석하고 코딩 결정들을 최적화하기 위한 파티션 타입을 선택하기 위해 컨텍스트-기반 엔트로피 코딩 접근법을 이용하도록 구성될 수 있다. 예를 들면, 파티션 타입 코딩에 대한 확률 모델들은, 다음의 팩터들, 즉, 현재 블록 사이즈(예컨대, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2 등), 위에 이웃하는 블록의 파티션 타입, 및 좌측에 이웃하는 블록의 파티션 타입 중 하나 이상에 대해 조건화(condition)될 수 있다. 각각의 조건부(conditional) 확률 모델은 역방향(backward) 적응적일 수 있고, 프레임 단위 기반으로 업데이트될 수 있다. 이러한 컨텍스트-기반 엔트로피 코딩 기술은 공간적 상관을 효율적으로 이용하기 위해 사용될 수 있으며(여기서, 파티션 타입들은 연속적인 구역들에서 일관되게 되는 경향이 있음), 다양한 성능 이득들을 달성하는데 사용될 수 있다.
[0044] 종래의 전체 가능한 블록 사이즈들에 걸친 대규모 탐색 접근법과 달리, 본 개시내용의 컨텍스트-기반 엔트로피 코딩 기술은, 최적의 레이트-왜곡 탐색 및 최적의 인코딩 및 디코딩 프로세스들을 위해 재귀적 블록 파티셔닝 사용하도록 구성된다. 레이트-왜곡 최적화 단계 동안, 모든 각각의 영역/블록은, 예를 들어, 더 작은 영역들/블록들로의 수직적(vertical)(vert) 파티션, 수평적(horizontal)(horz) 파티션, 파티션 없음(no partition)(none), 스플릿(split) 파티션과 같은 다수의 파티션 타입들에 걸쳐 테스팅될 수 있다. 추가로, 결과적인 서브-블록들 각각은 그 후, 그들의 최적의 코딩 결정들을 (로컬로(locally)) 찾기 위해, 다양한 가능한 예측 모드들, 필터 타입들, 변환 사이즈들 등을 통해 독립적으로 테스팅된다. 본 개시내용의 이들 양상들 및 다양한 다른 양상들이 본원에 더 상세히 설명된다.
[0045] 도 2는 본 개시내용의 양상들에 따른, 예시적인 인코더(200)를 예시하는 블록도이다. 인코더(200)는, 이를테면, 예컨대 메모리(112)(도 1a에 도시됨)와 같은 메모리에 저장된 컴퓨터 소프트웨어 프로그램을 제공하는 것에 의해, 컴퓨팅 디바이스, 서버, 송신 스테이션 등에서 구현될 수 있다. 인코더(200)는, 입력 비디오 스트림(210)을 사용하여 인코딩된 또는 압축된 비트스트림(230)을 제공하기 위해, (예컨대, 점으로 된 흐름 선에 의해 도시된 바와 같은) 다양한 기능들을 수행하기 위한 하나 이상의 스테이지들을 순방향 경로(208)에서 포함할 수 있다. 다양한 구현들에서, 순방향 경로(208)는, 인코더(200)에 대한 입력으로서의 입력 비디오 스트림(210), 그에 후속하는 인트라/인터(intra/inter) 예측 스테이지(214)(예컨대, 예측 신호들이 오리지널(original) 비디오 신호로부터 감산되어 다음 스테이지들에 대한 잔차(residual)들을 생성할 수 있음), 변환 스테이지(218), 양자화(quantization) 스테이지(222), 및 엔트로피 인코딩 스테이지(226)를 포함할 수 있다.
[0046] 인코더(200)는, 향후의 블록들의 인코딩을 위해 프레임을 재구성하기 위한 (예컨대, 점으로 된 연결 선에 의해 도시된 바와 같은) 재구성 경로(232)를 포함할 수 있다. 몇몇 구현들에서, 이것은, 인코더(200) 뿐만 아니라 (예컨대, 도 3에 도시된 바와 같은) 디코더(300)가 동일한 기준을 사용하여, 인코더(200)에 의해 제공되는 인코딩된 또는 압축된 비트스트림(230)을 디코딩하는 것을 보장할 수 있다. 도 2에 도시된 바와 같이, 인코더(200)는, 다양한 기능들을 수행하기 위한 하나 이상의 부가적인 스테이지들을 재구성 경로(232)에서 포함할 수 있다. 다양한 구현들에서, 재구성 경로(232)는, 역양자화(dequantization) 스테이지(234), 역변환 스테이지(238), 재구성 스테이지(242), 및 루프 필터링 스테이지(246)를 포함할 수 있다. 다른 구현들에서, 인코더(200)의 구조적 변형들이 사용되어 입력 비디오 스트림(210)을 인코딩할 수 있다.
[0047] 입력 비디오 스트림(210)이 인코딩을 위해 인코더(200)에 전송되는 경우, 입력 비디오 스트림(210)의 각각의 프레임은 블록들의 단위들로 프로세싱될 수 있다. 몇몇 구현들에서, 인트라/인터 예측 스테이지(214)에서, 각각의 블록은, 인트라-프레임 예측(이는, 인트라 예측으로서 지칭될 수 있음) 또는 인터-프레임 예측(이는, 인터 예측으로서 지칭될 수 있음)을 사용하여 인코딩될 수 있다. 임의의 경우에서, 예측 블록이 형성(예컨대, 정의)될 수 있다. 인트라 예측의 경우에서, 예측 블록은, 이전에 인코딩되고 재구성되었던 현재 프레임의 샘플들로부터 형성될 수 있다. 인터 예측의 경우에서, 예측 블록은, 하나 이상의 이전에 재구성된 기준 프레임들의 샘플들로부터 형성될 수 있다. 예측 블록은, 인트라/인터 예측 스테이지(214)에서 현재 블록으로부터 감산되어 잔차 블록(이는, 잔차로서 지칭될 수 있음)을 제공할 수 있다. 변환 스테이지(218)는, 잔차를, 예를 들어, 주파수 도메인의 계수들로 변환하도록 구성될 수 있다.
[0048] 추가로, 몇몇 구현들에서, 양자화 스테이지(222)는, 양자화기(quantizer) 값 또는 양자화 레벨을 사용하여 변환 계수들을 이산 양자 값(discrete quantum value)들로 컨버팅(convert)하도록 구성될 수 있으며, 이들은 양자화된 변환 계수들로서 지칭될 수 있다. 양자화된 변환 계수들은 그 후, 엔트로피 인코딩 스테이지(226)에 의해 엔트로피 인코딩될 수 있다. 엔트로피-인코딩된 계수들은 그 후, 예를 들어, 사용된 예측의 타입, 모션(motion) 벡터들, 및 양자화기 값을 포함할 수 있는, 블록을 디코딩하기 위해 사용되는 다른 정보와 함께, 인코딩된 또는 압축된 비트스트림(230)으로 출력된다. 다양한 구현들에서, 압축된 비트스트림(230)은, 예를 들어, 가변 길이 코딩(VLC; variable length coding), 산술 코딩(arithmetic coding) 등과 같은 다양한 기술들을 사용하여 포맷(format)될 수 있다. 압축된 비트스트림(230)은 또한, 인코딩된 비디오 스트림 또는 인코딩된 출력 비디오 스트림으로서 지칭될 수 있다. 엔트로피 인코딩 스테이지(226)는, 본원에 설명된 바와 같은 방식으로, 하나 이상의 확률 테이블들을 생성하고 하나 이상의 확률 값들을 생성하여 확률 테이블들을 채우도록 구성될 수 있다.
[0049] 몇몇 구현들에서, 비디오 코덱들은 블록-기반 코딩을 이용할 수 있으며, 여기서, 각각의 프레임은 블록들의 그리드로 파티셔닝되고, 각각은 그 후, 인터/인트라-프레임 예측 및 그에 후속하는 공간적 변환 및 양자화를 사용하여 독립적으로 코딩된다. 큰 블록 사이즈는 예측 모드, 기준 프레임 인덱스, 모션 벡터들 등을 코딩하는데 더 적은 평균 오버헤드 비용들을 초래할 수 있는 한편, 작은 블록 사이즈는 예측에서의 더 많은 유연성을 허용할 수 있으며, 그러므로 잔류 에너지가 감소될 수 있다. 본 개시내용의 양상들은, 비교적 단순하고 간결한 코덱 구조를 유지하면서 전체 레이트 왜곡 비용 트레이드-오프를 최적화하기 위한 블록 사이즈 선택을 효율적으로 핸들링하는 방법들 및 장치들을 제공하도록 구성될 수 있다. 추가로, 상보성(complementary) 엔트로피 코딩 기술이 인코더(200)에 제공되어 코딩 성능 이득들에 대한 공간적 상관을 완전히 이용하도록 각각의 선택된 블록 사이즈를 코딩/인코딩하며, 이는 본원에 추가로 설명된다.
[0050] 평균 오버헤드 비용과 예측 품질 간의 트레이드-오프를 최적화하거나 또는 균형을 맞추기 위한 하나의 전략은, 주어진 영역에 대해, 인코더가 각각의 허용가능한 블록 사이즈 및 모든 허용가능한 블록 사이즈를 테스팅하여 레이트 왜곡 비용을 최소화하는 적어도 하나의 블록 사이즈를 선택할 수 있다는 것이다. 추가로, 인코더는 그 후, 선택된 블록 사이즈들을 비트스트림으로 명시적으로 인코딩할 수 있다. 각각의 블록 사이즈 및 모든 블록 사이즈에 걸친 그러한 대규모 탐색은, 코덱 구현을 고도로 복잡하게 되게 할 수 있다. 또한, 블록 사이즈 정보를 명시적으로 코딩하는 것은 공간적 상관을 활용하지 않으며, 이는 압축 효율성을 감소시킬 수 있다.
[0051] 그러나, 본 개시내용의 양상들은 재귀적 블록 파티셔닝을 사용하며, 이는, 비교적 단순하고 간결한 코덱 구현을 유지하면서 블록 사이즈를 최적화하는데 있어 더 많은 유연성을 허용할 수 있다. 몇몇 구현들에서, 재귀적 블록 파티셔닝은 실제의 블록 사이즈들의 코딩을 파티션 타입들의 코딩으로 변환하며(본원에 추가로 설명됨), 이는, 컨텍스트-기반 엔트로피 코딩과 함께, 개선된 성능 이득들을 제공한다. 허용가능한 블록 사이즈들에 관한 유연성은, 단순하고 간결한 코덱 구조를 유지함으로써 압축 효율성을 개선할 수 있다. 추가로, 몇몇 구현들에서, 파티션 타입의 컨텍스트-기반 엔트로피 코딩은, 코딩 성능 이득들을 추가로 제공할 수 있다. 본 개시내용의 양상들은, 비디오 코덱들 및/또는 다양한 비디오 압축 기술들(예컨대, 코덱 설계)의 연구 및 개발에 적용될 수 있다. 더 추가적으로, 본 개시내용의 양상들은, 비디오 스트리밍 및/또는 스틸 사진(still picture) 코딩 관련 기술들에 적용될 수 있고 그리고/또는 적용가능할 수 있다.
[0052] 도 3은 본 개시내용의 양상들에 따른, 예시적인 디코더(300)를 예시하는 블록도이다. 몇몇 구현들에서, 디코더(300)는, 인코더(200)의 재구성 경로(232)와 유사할 수 있다. 디코더(300)는, 인코딩된 또는 압축된 비트스트림(310)으로부터 출력 비디오 스트림(342)을 제공하기 위해, 다양한 기능들을 수행하기 위한 하나 이상의 스테이지들을 포함할 수 있다. 디코더(300)는, 엔트로피 디코딩 스테이지(314), 역양자화 스테이지(318), 역변환 스테이지(322), 재구성 스테이지(326), 루프 필터링 스테이지(330), 인트라/인터 예측 스테이지(334), 및 디블로킹(deblocking) 필터링 스테이지(338)를 포함할 수 있다. 다른 구현들에서, 디코더(300)의 구조적 변형들이 압축된 비트스트림(310)을 디코딩하는데 사용될 수 있다.
[0053] 압축된 비트스트림(310)이 디코딩을 위해 디코더(300)에 제공되는 경우, 압축된 비트스트림(310) 내의 데이터 엘리먼트들은, 일 세트의 양자화된 변환 계수들을 생성하도록 엔트로피 디코딩 스테이지(314)에 의해 (예컨대, VLC, 산술 코딩 등을 사용하여) 디코딩될 수 있다. 역양자화 스테이지(318)는 양자화된 변환 계수들을 역양자화하도록 구성될 수 있고, 역변환 스테이지(322)는, 인코더(200)의 역변환 스테이지(238)에 의해 생성된 것과 동일할 수 있는 유도적(derivative) 잔차를 제공하기 위해, 역양자화된 변환 계수들을 역변환하도록 구성될 수 있다. 몇몇 구현들에서, 압축된 비트스트림(310)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(300)는, 인트라/인터 예측 스테이지(214)에 의해 인코더(200)에서 생성된 것과 같은 동일한 예측 블록을 생성하도록 인트라/인터 예측 스테이지(334)를 사용하게 구성될 수 있다. 재구성 스테이지(326)에서, 예측 블록은 유도적 잔차에 부가되어 재구성 블록을 생성할 수 있다. 루프 필터링 스테이지(330)는, 재구성된 블록에 적용되어 블로킹 아티팩트(blocking artifact)들을 감소시킬 수 있다. 몇몇 구현들에서, 다양한 다른 필터링이 재구성된 블록에 적용될 수 있다. 예를 들면, 디블로킹 필터링 스테이지(338)가 재구성된 블록에 적용되어 블로킹 왜곡을 감소시킴으로써, 예컨대, 출력 비디오 스트림(342)으로서의 출력이 초래된다. 출력 비디오 스트림(342)은, 디코딩된 비디오 스트림 또는 디코딩된 출력 비디오 스트림으로서 지칭될 수 있다.
[0054] 도 4는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝(400)을 위한 예시적인 기술을 예시하는 블록도이다. 도 4에서, 몇몇 구현들에서, 이미지(410)(예컨대, 비디오 프레임)는 영역들의 그리드와 같은 복수의 영역들(414)로 분할될 수 있으며, 여기서, 각각의 영역(418)은 적어도 이미지 그 자체보다는 더 작을 수 있다(예컨대, 각각의 영역은 64×64 픽셀들의 사이즈를 가짐). 이러한 예시에서, 각각의 영역(418)은, 최적의 코딩 결정(이미지(410)를 더 작은 블록 사이즈들로 분할 또는 파티셔닝하는 방식, 블록에 대한 예측 모드, 각각의 블록에 적용되는 변환 타입 등을 포함함)을 평가 및 발견하기 위해, 레이트 왜곡 루프를 이용하여 테스팅될 수 있고, 그 후, 래스터 순서로 비트스트림으로 코딩될 수 있다.
[0055] 최적의 코딩 방식에 관하여, 주어진 영역에 대해, 인코더는 하나, 몇몇, 또는 모든 가능한 파티션(분할) 타입들을 테스팅하도록 구성될 수 있으며, 각각에 대해, 상호 배타적일 수 있고 그리고 함께 전체 영역을 커버할 수 있는 일 세트의 서브-블록들을 초래된다. 인코더는 그 후, 예측 모드들, 기준 소스들, 필터 타입들, 변환 타입들 및 사이즈들 등을 포함하는 다양한 가능한 코딩 모드들을 각각의 서브-블록에 대해 테스팅할 수 있고, 이러한 서브-블록의 레이트-왜곡 비용을 최소화하거나 또는 임계 조건(예컨대, 임계값)을 충족시키는 레이트-왜곡 비용을 갖는 코딩 모드를 획득할 수 있다. 이때, 주어진 영역의 각각의 파티션 타입은 레이트-왜곡 비용 값과 연관될 수 있으며, 이는, 각각의 서브-블록의 최소 레이트-왜곡 비용의 합산으로서 계산될 수 있다. 그러므로, 인코더는, 전체 비용이 최소가 되게 하는 파티션 타입을 선정 또는 선택할 수 있다.
[0056] 가능한 블록 사이즈들 전부에 걸친 종래의 대규모 탐색과 달리, 본 개시내용의 양상들은, 본원에 설명된 바와 같이, 레이트 왜곡 탐색 및 인코딩 및 디코딩 프로세스들에 대해 재귀적 블록 파티셔닝 접근법으로 구성될 수 있다. 다양한 구현들에서, 레이트 왜곡 최적화 단계 동안, 각각의 영역(418)은, 예를 들어, 파티션이 없는(none) 파티션 타입(430), 수평적(horz) 파티션 타입(432), 수직적(vert) 파티션 타입(434), 및 스플릿 파티션 타입(436)(이는, 각각의 영역(438)을 4개의 더 작은 영역들(스플릿) 또는 서브-블록들로서 지칭될 수 있는 서브-영역들(438)로 분할함)을 포함하는 4개의 파티션 타입들 중 적어도 하나와 같은 복수의 파티션 타입들(426)에 걸쳐 테스팅될 수 있다. 도 4에 도시된 바와 같이, 결과적인 서브-영역들(438)은 그 후, 그들의 최적의 코딩 결정들을 (로컬로) 찾기 위해 하나 이상의 가능한 예측 모드들, 필터 타입들, 변환 사이즈들 등에 걸쳐 독립적으로 테스팅될 수 있다. 이것은, 이미지(410)의 재귀적 블록 파티셔닝으로 지칭된다.
[0057] 일부 구현들에서, 파티션 동작은 정방형(square) 블록들에 적용될 수 있다. 예를 들면, 영역은, 사이즈 N×N을 포함할 수 있으며, 여기서 N은 짝수(예컨대, 2의 거듭제곱)이다. 4개의 파티션 타입들은 다음의 서브-블록 사이즈들을 초래할 수 있다.
파티션 없음 -> 하나의 N×N 서브-블록,
스플릿 -> 4개의 (N/2)×(N/2) 서브-블록들,
수직적 -> 2개의 (N/2)×N 서브-블록들, 및
수평적 -> 2개의 N×(N/2) 서브-블록들.
[0058] 몇몇 구현들에서, 제 1 파티션 타입은 유사한 치수의 4개의 서브-블록들을 갖는 스플릿 파티션 타입(436)을 포함할 수 있고, 제 2 파티션 타입은 유사한 치수의 2개의 수평적으로 배열된 서브-블록들을 갖는 수평적 파티션 타입(432)을 포함할 수 있고, 제 3 파티션 타입은 유사한 치수의 2개의 수직적으로 배열된 서브-블록들을 갖는 수직적 파티션 타입(434)을 포함할 수 있으며, 제 4 파티션 타입은, 단일 블록을 갖는, 파티션이 없는 타입(430)을 포함할 수 있다.
[0059] 몇몇 구현들에서, none(430), horz(432), 및 vert(434)를 포함하는 파티션 타입들(426)은 엔드-노드(end-node)들(즉, 어떠한 추가적인 파티셔닝도 서브-블록 내부에 적용될 수 없음)로 고려될 수 있다. 스플릿 파티션 타입(436)의 각각의 서브-영역(438)은 그 후, none(430), horz(432), vert(434), 및 split(456)을 포함하는 4개의 파티션 타입들(446) 각각에 걸쳐 재귀적으로 테스팅될 수 있는 시작 포인트로서 고려될 수 있다. 이러한 예시에서, 제 1 분할(414)의 각각의 영역(418)은 제 2 분할(446)에서 4개의 영역들의 그리드와 같은 복수의 서브-영역들(438)로 분할될 수 있다. 이러한 재귀적 파티셔닝은, 스플릿 파티션 타입의 각각의 반복에 대해 몇 번이든 반복될 수 있다. 몇몇 구현들에서, 이러한 재귀적 파티셔닝은 64×64 픽셀 블록들로 시작할 수 있으며, 이들 각각의 그 다음 재귀적 파티셔닝은 일련의 32×32 픽셀 블록들, 16×16 픽셀 블록들, 8×8 픽셀 블록들, 및 4×4 픽셀 블록들로 이어진다. 몇몇 구현들에서, 재귀적 파티셔닝은, 4×4 픽셀 블록들로부터, 그 다음 2×2 픽셀 블록들로 이어질 수 있다. 다른 구현들에서, 재귀적 파티셔닝은, 임의의 n×n 픽셀 블록들로 시작하여 임의의 n×n 픽셀 블록들로 종료될 수 있다. 코딩 모드 정보(이를테면, 예컨대 기준 프레임 인덱스, 필터 타입들 등)는 특정한 블록 사이즈 레벨을 초과하여 할당되도록 선택적으로 제한될 수 있다는 것이 이해되어야 한다.
[0060] 일단 최적의 코딩 모드들이 선택되면, 인코더(200)는 그들을 비트스트림에 기입하도록 구성될 수 있다. 실제의 블록 사이즈들을 주어진 영역 내부에 명시적으로 코딩하는 대신, 이러한 재귀적 파티셔닝 접근법은 파티션 타입을 재귀적 방식으로 코딩한다. 예를 들면, 이러한 재귀적 파티셔닝 접근법은, 64×64 블록으로 시작하고, 파티션 타입을 기입할 수 있다. 이러한 타입이 vert, horz, 또는 none이면, 서브-블록 사이즈들은 이미 파싱(parse)되었을 수 있으며, 그러므로, 어떠한 추가적인 파티션 정보도 전송되지 않는다. 이러한 타입이 split 파티션 타입이면, 인코더(200)는 각각의 서브-블록마다 하나씩 다른 4개의 파티션 타입들을 기입할 수 있다. 몇몇 구현들에서, 인코더(200)는, vert/horz/none 파티션 타입들에 도달할 때까지, 또는 몇몇 예시들에서는, 예컨대 8×8 블록 사이즈 미만이 될 때까지 파티션 타입 정보를 전송하는 것을 반복한다. 디코더(300)는, 64×64 블록으로 시작하고, 파티션 타입을 판독하고, 그리고 그에 따라 서브-블록 사이즈들을 파싱하도록 구성될 수 있다.
[0061] 추가로, 본 개시내용의 양상들은, 파티션 정보에 대해 컨텍스트-기반 엔트로피 코딩 접근법을 구현하도록 구성된다. 예를 들면, 파티션 타입 코딩에 대한 확률 모델들은, 도 5를 참조하여 설명되는 바와 같이, 다음의 3개의 팩터들, 즉, 현재 블록 사이즈(예컨대, 64×64, 32×32, 16×16 등), 현재 블록의 위에 이웃하는 블록의 파티션 타입, 현재 블록의 좌측에 이웃하는 블록의 파티션 타입을 통해 조건화될 수 있다. 몇몇 구현들에서, 이들 조건부 확률 모델들은 역방향 적응적으로 구성될 수 있고, 프레임 단위로 업데이트될 수 있다. 그러한 컨텍스트-기반 엔트로피 코딩 접근법은 공간적 상관을 효율적으로 이용하는데, 즉, 여기서, 파티션 타입들은, 연속적인 구역들에서 일관되게 되는 경향이 있고, 이러한 컨텍스트-기반 엔트로피 코딩 접근법은 특정한 성능 이득들을 달성할 수 있다.
[0062] 몇몇 구현들에서, 본래의(natural) 비디오 신호들은 정적 랜덤 프로세스로서 뷰잉(view)(모델링)될 수 있다. 블록은, 하나 이상의 인접 블록들에 대해 픽셀 값들, 모션 정보 등을 포함하는 특정한 유사성을 지닐 수 있다. 예를 들어, 프레임이 밝은 배경 앞에서 수평적으로 움직이는 어두운 컬러의 오브젝트를 포함하면, 오브젝트 엣지(dege)들을 포함하는 블록들(영역들)은 수직적으로 파티셔닝되는 경향이 있을 수 있으며, 그러므로, 오브젝트 및 배경을 포함하는 서브-블록들 각각은 개별적으로 코딩될 수 있고, 이는, 각각에 대한 코딩 모드들을 최적하는데 있어 더 많은 유연성을 허용한다.
[0063] 도 4의 구현에서, 본 개시내용의 시스템 및 방법들은, 이미지(410)(예컨대, 비디오 프레임)를 복수의 영역들(414)로 분할하고, 복수의 영역들의 각각의 영역(418)에 복수의 파티션 타입들(426)을 적용하고, 그리고 각각의 영역(418)에 적용된 복수의 파티션 타입들(426)에 기초하여 각각의 영역(418)에 대한 레이트 왜곡 비용을 결정하도록 구성될 수 있다. 추가로, 본 개시내용의 시스템 및 방법들은, 각각의 영역(418)에 적용된 복수의 파티션 타입들(426)에 기초하여 각각의 영역(418)에 대한 코딩 방식을 결정하고, 각각의 영역(418)에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여 각각의 영역(418)을 개별적으로 인코딩하도록 구성될 수 있다. 몇몇 구현들에서, 이러한 파티셔닝 방법은, 파티션 타입들(426) 중 스플릿 파티션 타입(436)과 같은 적어도 하나의 파티션 타입의 하나 이상의 서브-영역들(438)에 반복적인 방식으로 재귀적으로 적용됨으로써, 최적의 레이트 왜곡 비용을 달성할 수 있다. 레이트 왜곡 루프는, 비디오 압축의 비디오 품질을 개선하기 위해 사용될 수 있고, 비디오를 인코딩하기 위해 사용되는 데이터의 양(데이터 레이트)에 대한 왜곡의 양(비디오 품질의 손실)을 비교하고 결정하는 것을 수반할 수 있다. 몇몇 예들에서, 레이트 왜곡 루프는 인코딩을 개선하기 위해 사용될 수 있고, 여기서, 결정들은, 인코딩된 비디오의 파일 사이즈 및 품질에 동시에 영향을 미칠 수 있다.
[0064] 도 5는 본 개시내용의 양상들에 따른, 파티션 타입의 컨텍스트-기반 엔트로피 인코딩을 위한 예시적인 기술을 예시하는 블록도이다. 몇몇 구현들에서, 본원에 설명된 바와 같이, 파티션 타입의 샘플 공간은, 파티션 없음(NONE), 수평적 파티션(HORZ), 수직적 파티션(VERT), 및 4개의 서브-블록들로의 스플릿(SPLIT)을 포함하는 적어도 4개의 엔트리(entry)들을 포함할 수 있다. 예를 들어, 8×8 내지 64×64의 범위에 있는 사이즈들의 각각의 정방형 블록은에는 적어도 하나의 파티션 타입이 할당될 수 있다. 이러한 심볼(symbol)은, 압축을 달성하기 위해 샘플 공간에 걸친 확률 분포를 취하는 엔트로피 코딩을 사용하여 코딩될 수 있다.
[0065] 예를 들면, 도 5에 도시된 바와 같이, 블록들 A 및 B는 이전에 코딩된 블록들을 표현할 수 있고, 블록 C는 인코딩될 블록을 표현할 수 있다. 본래의 비디오/이미지 신호들의 공간적 일관성(consistency)을 참조하면, A가 수직적으로 파티셔닝되면(즉, VERT 또는 SPLIT), C 또한 수직적으로 파티셔닝될 수 있는 가능성이 더 많다. 유사하게, B가 수평적으로 파티셔닝되면(즉, HORZ 또는 SPLIT), C 또한 수평적으로 파티셔닝될 수 있는 가능성이 더 높다. 따라서, 본 개시내용의 양상들은, 도 5에서 자신의 위(즉, A) 및 좌측(즉, B)에 코딩된 이웃들의 파티션 타입들에 의존하여 엔트로피 코더(coder)에 의해 사용되는 확률 분포를 제공한다. 추가로, 본 개시내용의 양상들은, 블록 C의 블록 사이즈에 대한 확률 모델(분포)의 잠재적 종속성(potential dependency)을 인정하는데, 예컨대, 64×64 블록은, 동일한 위/좌측 블록의 파티션 타입들이 주어지면, 8×8 블록보다는 SPLIT를 선택할 가능성이 더 많을 수 있다.
[0066] 따라서, 이러한 작업은, 도 5에서 예시된 바와 같은 위에 언급된 종속성들을 캡쳐하기 위해 확률 모델들의 어레이(array)를 이용한다. 추가로, 이러한 작업은, 이웃하는 위/좌측 블록(A 및 B)의 파티션 타입들 및 현재 블록 사이즈로부터 인덱스 넘버를 계산하고, 어레이로부터 대응하는 확률 모델을 리트리브(retrieve)하며, C의 파티션 타입의 엔트로피 코딩에 대해 리트리브된 모델을 사용한다.
[0067] 다음은 파티션 타입의 컨텍스트-기반 엔트로피 인코딩에 대한 샘플 코드이다.
컨텍스트 정보를 리트리브하는 소스 코드들:
[0068] 몇몇 구현들에서, 도 4-5를 참조하여 설명된 바와 같은 비디오 압축에서의 재귀적 블록 파티셔닝 접근법 및 그의 엔트로피 코딩을 참조하면, 허용가능한 블록 사이즈들은, 8×8, 16×16, 32×32, 64×64와 같은 다양한 n×n 픽셀 블록들을 포함할 수 있으며, 여기서, 본원에 설명된 바와 같이, 각각의 블록 사이즈는 4개의 파티션 타입들 {NONE, HORZ, VERT, SPLIT} 중 하나로서 코딩될 수 있다.
[0069] 이러한 점에서, 몇몇 구현들에서, 가능한 결과들은 정방형 또는 장방형 블록들 중 어느 하나일 수 있다. 임의의 하나 이상의 파티션 타입들을 스킵(skip)하는 것이 가능하다. 예를 들어, 32×32 블록에 대해, 최적화 프로세스 또는 기술은 하나의 32×32 블록 또는 2개의 32×16 서브-블록들로서의 코딩 사이에서 선택할 수 있으며, 그에 따라, 최적화 프로세스의 속도를 높이기 위해 다른 파티션 타입들의 테스팅을 스킵할 수 있다.
[0070] 몇몇 구현들에서, 도 5를 참조하면, 파티션 타입들 A 및 B의 결합은 다음의 규칙들을 통해 0 내지 3의 범위에 있는 정수로 변환될 수 있다.
A의 파티션 타입이 VERT 또는 SPLIT이면, a = 2; 그렇지 않으면, a = 0;
B의 파티션 타입이 HORZ 또는 SPLIT이면, b = 1; 그렇지 않으면, b = 0;
이들 2개의 팩터들을 결합하여 c = (a + b)로 지정함.
이러한 숫자 C는, 블록 사이즈에 따라 추가로 오프셋(offset)됨:
블록 사이즈가 8×8이면, 오프셋 = 0;
블록 사이즈가 16×16이면, 오프셋 = 4;
블록 사이즈가 32×32이면, 오프셋 = 8;
블록 사이즈가 64×64이면, 오프셋 = 12.
[0071] 어레이로부터 확률 모델을 리트리브하는데 사용될 수 있는 전체 인덱스는 (c + 오프셋)으로 계산될 수 있다.
[0072] 본원에 설명된 바와 같이, 컨텍스트-기반 엔트로피 코딩은 파티션 정보에 적용될 수 있으며, 여기서, 파티션 타입 코딩에 대한 확률 모델들은, 현재 블록 사이즈(예컨대, 64×64, 32×32, 16×16, 8×8 등), 현재 블록의 위의 블록의 파티션 타입, 및 현재 블록의 좌측 블록의 파티션 타입을 포함하는 팩터들 중 하나 이상에 대해 조건화될 수 있다. 이들 조건부 확률 모델들은 역방향 적응적으로 고려될 수 있고, 프레임 단위 기반으로 업데이트될 수 있다. 이러한 컨텍스트-기반 엔트로피 코딩의 기술은 공간적 상관을 효율적으로 이용하기 위해 사용될 수 있으며(여기서, 몇몇 예들에서, 파티션 타입들은 연속적인 구역들에서 일관되게 되는 경향이 있음), 특정한 성능 이득들을 달성하기 위해 사용될 수 있다.
[0073] 예를 들면, 몇몇 구현들에서, 도 5를 참조하면, 확률 분포는, 자신의 위(a)의 코딩된 이웃(예컨대, A) 및 자신의 좌측(l)의 코딩된 이웃(예컨대, B)의 파티션 타입에 의존하는 것으로 고려될 수 있다. 추가로, 몇몇 예들에서, 블록 C의 블록 사이즈에 대한 확률 모델(분포)의 잠재적 종속성이 존재하는데, 예컨대, 64×64 블록은, 동일한 위/좌측 블록의 파티션 타입들이 주어지면, 8×8 블록보다는 SPLIT를 선택할 가능성이 더 많을 수 있다. 따라서, 확률 모델들의 어레이는, 도 5에서 예시된 바와 같은 이러한 잠재적 종속성들을 캡쳐하기 위해 사용될 수 있다.
[0074] 몇몇 구현들에서, 자신의 위 및 좌측의 이웃하는 블록들의 파티션 타입들에 기초하여, 현재 블록에 대한 확률 분포를 식별하기 위해 하나 이상의 확률 테이블들이 생성될 수 있다. 그러므로, 본 개시내용의 양상들은, 이웃하는 블록들(예컨대, 위 및 좌측의 이웃하는 블록들)의 파티션 타입들에 기초하여, 현재 블록의 컨텍스트-기반 엔트로피 코딩을 위한 빌딩(building) 테이블들(예컨대, 확률 테이블들(확률 분포 테이블들로서 또한 지칭될 수 있음))을 제공한다.
[0075] 몇몇 구현들에서, 비디오 시퀀스(이는, 비디오 프레임들의 시퀀스로서 지칭될 수 있음)의 제 1 프레임에 대해 디폴트 확률 테이블이 사용될 수 있으며, 제 1 프레임의 파티션 타입들의 확률 분포에 기초하여, 확률 테이블 업데이트가 다음 프레임(이는, 후속 프레임으로서 지칭될 수 있음)에 적용될 수 있다. 몇몇 예들에서, 도 1a 및/또는 도 1b의 인코더(120)는 확률 분포 테이블들을 생성하기 위해 사용될 수 있다.
[0076] 도 1b는, 도 1a에 도시된 컴퓨팅 디바이스(104)와 연관된 예시적인 컴포넌트들을 예시하는 도면이다. 도 1b에 도시된 바와 같이, 메모리(112)는 확률 테이블(160)을 저장하도록 구성될 수 있고, 인코더(120)는, 확률 테이블(160)에 저장된 확률 값들에 기초하여 비디오 프레임의 각각의 블록을 최적으로 인코딩하도록 구성될 수 있다.
[0077] 예를 들어, 도 1b 및 도 4의 예들을 참조하면, 인코더(120)는, 이미지(예컨대, 비디오 프레임)를 복수의 영역들로 분할하고, 복수의 영역들의 각각의 영역에 복수의 파티션 타입들(예컨대, 수직적, 수평적, 파티션 없음, 스플릿)을 적용하고, 그리고 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 각각의 영역에 대한 최적의 레이트 왜곡 비용을 결정하도록 구성될 수 있다. 추가로, 인코더(120)는, 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 각각의 영역에 대한 최적의 코딩 방식을 결정하고, 각각의 영역에 대해 결정된 최적의 레이트 왜곡 비용 및 최적의 코딩 방식에 기초하여 각각의 영역을 개별적으로 인코딩하도록 구성될 수 있다.
[0078] 몇몇 구현들에서, 이러한 파티셔닝 기술은, 각각의 파티션 타입의 각각의 영역 및 서브-영역에 반복적인 방식으로 재귀적으로 적용됨으로써, 최적의 레이트 왜곡 비용을 달성할 수 있다. 레이트 왜곡 루프는, 비디오 압축의 비디오 품질을 개선하기 위해 사용될 수 있고, 비디오를 인코딩하기 위해 사용되는 데이터의 양(데이터 레이트)에 대한 왜곡의 양(비디오 품질의 손실)을 비교하고 결정하는 것을 수반할 수 있다. 몇몇 예들에서, 레이트 왜곡 루프는 인코딩을 개선하기 위해 사용될 수 있고, 여기서, 결정들은, 인코딩된 비디오의 파일 사이즈 및 품질에 동시에 영향을 미칠 수 있다.
[0079] 도 6a는 본 개시내용의 양상들에 따른, 인코더(120)에서 확률 테이블들을 생성하기 위한 방법(600)을 예시하는 흐름도이다. 인코더(120)는, 디폴트 확률 테이블을 컴퓨팅 디바이스(104)의 메모리(112)에 저장하는 것을 비롯하여 하나 이상의 확률 테이블들(160)을 메모리(112)에 저장하도록 구성될 수 있다.
[0080] 도 6a의 예에서, 동작들(602-608)은 순차적 순서로 발생하는 별개의 동작들로서 예시된다. 그러나, 다른 구현들에서는, 동작들(602-608) 중 2개 이상의 동작이, 부분적으로 또는 완전히 오버랩된(overlapping) 방식 또는 병렬 방식으로 발생할 수 있거나, 또는 내포적(nested) 방식 또는 루프형 방식으로 발생할 수 있거나, 또는 도시된 순서와 상이한 순서로 발생할 수 있다는 것이 인식되어야 한다. 추가로, 도 6a의 예에서 명시적으로 예시되지 않을 수 있는 부가적인 동작들이 또한 몇몇 예시적인 구현들에서 포함될 수 있지만, 다른 구현들에서는, 동작들(602-608) 중 하나 이상이 생략될 수 있다. 몇몇 구현들에서, 방법(600)은, 도 1a의 시스템(100)에서의 재귀적 블록 파티셔닝을 위한 컴퓨터-구현 방법에 대한 프로세스 흐름을 포함할 수 있다. 추가로, 본원에 설명된 바와 같이, 동작들(602-608)은, 도 1a를 참조하여 설명된 바와 같은 특성들 및 기능들을 제공하도록 컴퓨팅 디바이스(104)에 의해 실행될 수 있는 간략화된 동작 프로세스 흐름을 제공할 수 있다.
[0081] 도 6a의 예의 (602)에서, 방법(600)은 비디오 프레임들의 시퀀스의 제 1 프레임을 식별하는 단계를 포함할 수 있다. 예를 들면, 인코더(120)는, 새로운 비디오 시퀀스를 검출하고, 확률 계산들을 리셋/재시작하고, 그리고 예컨대 비디오 시퀀스의 처음(제 1 프레임)에서 확률 테이블들을 디폴트로 리셋하는 것을 비롯하여 확률 테이블들을 업데이트/수정하도록 구성될 수 있다. 몇몇 구현들에서, 인코더(120)는, 비디오 시퀀스의 제 1 프레임을 검출하는 경우 확률 분포 숫자들 및/또는 값들을 변경하도록 구성될 수 있다.
[0082] (604)에서, 방법(600)은, 메모리에 저장된 확률 테이블에 기초하여 비디오 프레임들의 시퀀스의 제 1 프레임을 인코딩하는 단계를 포함할 수 있으며, 여기서, 확률 테이블은 파티션 타입과 연관된 확률 값을 포함한다. 예를 들면, 인코더(120)는, 메모리에 저장된 확률 테이블들 중 적어도 하나에 기초하여, 비디오 프레임들의 시퀀스의 제 1 프레임을 인코딩하도록 구성될 수 있다. 몇몇 구현들에서, 각각의 확률 테이블은, 하나 이상의 파티션 타입들과 연관된 하나 이상의 확률 값들을 포함할 수 있다. 몇몇 구현들에서, 각각의 프레임은, 각각의 프레임이 더 작은 블록 사이즈들로 파티셔닝되는 방식, 블록에 대한 예측 모드, 각각의 블록에 적용되는 변환 타입 등을 포함하는 최적의 코딩 결정들을 결정하기 위해 재귀적으로 인코딩될 수 있다.
[0083] (606)에서, 방법(600)은, 비디오 프레임들의 시퀀스의 제 1 프레임의 인코딩에 기초하여, 파티션 타입과 연관된 확률 값을 업데이트된 확률 값으로 수정하는 단계를 포함할 수 있다. 예를 들면, 인코더(120)는, 비디오 프레임들의 시퀀스의 제 1 프레임의 인코딩에 기초하여, 파티션 타입과 연관된 확률 값을 업데이트된 확률 값으로 수정/업데이트하도록 구성될 수 있다. 몇몇 구현들에서, 각각의 확률 테이블의 확률 값들은, 비디오 시퀀스의 각각의 프레임에 대한 코딩 결정들을 최적화하도록 수정/업데이트될 수 있다.
[0084] (608)에서, 방법(600)은, 확률 테이블에 포함된 업데이트된 확률 값에 기초하여 비디오 프레임들의 시퀀스의 제 2 프레임을 인코딩하는 단계를 포함할 수 있다. 예를 들면, 인코더(120)는, 확률 테이블에 포함된 수정된/업데이트된 확률 값들에 기초하여, 비디오 프레임들의 시퀀스의 제 2 프레임을 인코딩하도록 구성될 수 있다. 본원에 설명된 바와 같이, 메모리(112)는 확률 테이블(160)을 포함할 수 있으며, 확률 테이블(160)은 하나 이상의 확률 값들을 포함한다.
[0085] 본 개시내용의 양상들에 따르면, 인코더(120)는, 이웃하는 블록들을 분석하고 코딩 결정들을 최적화하기 위한 파티션 타입을 선택하기 위해 컨텍스트-기반 엔트로피 코딩 접근법을 이용하도록 구성될 수 있다. 예를 들면, 파티션 타입 코딩에 대한 확률 모델들은, 다음의 팩터들, 즉, 현재 블록 사이즈(예컨대, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2 등), 위에 이웃하는 블록의 파티션 타입, 및 좌측에 이웃하는 블록의 파티션 타입 중 하나 이상에 대해 조건화될 수 있다. 각각의 조건부 확률 모델은 역방향 적응적일 수 있고, 프레임 단위 기반으로 업데이트될 수 있다. 이러한 컨텍스트-기반 엔트로피 코딩 기술은 공간적 상관을 효율적으로 이용하기 위해 사용될 수 있으며(여기서, 파티션 타입들은 연속적인 구역들에서 일관되게 되는 경향이 있음), 다양한 성능 이득들을 달성하는데 사용될 수 있다.
[0086] 도 1a의 예를 참조하면, 디코더(124)는, 인코딩된 또는 압축된 비트스트림으로부터 디코딩된 출력 비디오 스트림을 제공하기 위해, 다양한 기능들을 수행하기 위한 하나 이상의 스테이지들을 포함할 수 있다. 본원에 추가로 설명되는 바와 같이, 인코딩된 또는 압축된 비트스트림은, 본 개시내용의 양상들에 따르면, 디코딩된 출력 비디오 스트림을 제공하도록 디코딩하기 위해 디코더에 제공될 수 있다. 몇몇 구현들에서, 디코더(124)는 인코더(120)의 상보형이며, 이에 의해, 디코더(124)에 의해 사용되는 디코딩 프로세스는 인코더(120)에 의해 사용되는 인코딩 프로세스의 상보형이고, 여기서, 디코더(124)는, 인코더(120)에 의해 수행되는 바와 같은 인코딩 프로세스의 역순으로 디코딩 프로세스를 수행하도록 구성된다.
[0087] 도 7은 일 구현에 따른 확률 테이블(700)의 예를 예시하는 도면이다. 도 7에 도시된 바와 같이, 확률 테이블(700)은 2개의 상이한 블록 부분들, 즉, 블록 부분 B 및 블록 부분 A를 포함한다. 블록 부분들 각각은, 프로세싱되고 있는 현재 블록 사이즈와 연관된다. 예를 들어, 확률 테이블(700)의 블록 부분 A는, 블록 사이즈 A 내지 블록 사이즈 B(예컨대, 64×64 내지 32×32)를 갖는 블록의 스플릿과 관련된 결정들을 행하기 위해 사용된다. 블록 사이즈 A는 프로세싱되고 있는 현재 블록 사이즈로서 지칭될 수 있고, 블록 사이즈 B는 타겟(target) 블록 사이즈로서 지칭될 수 있다. 확률 테이블(700)의 블록 부분 B는, 블록 사이즈 B 내지 예컨대 블록 사이즈 C(예컨대, 32×32 내지 16×16)를 갖는 블록의 스플릿과 관련된 결정들을 행하기 위해 사용된다. 도시되진 않았지만, 부가적인 블록 부분들 및/또는 사이즈들(비-정방형 사이즈들을 포함함)이 포함될 수 있다.
[0088] 이러한 예에서, 블록 부분 A는 4개의 행들 및 3개의 열들 상에 확률 값들을 포함한다. 4개의 행들은 문자들 P 내지 S에 의해 기술되고, 열들은 숫자들 1 내지 3에 의해 기술된다. 따라서, 확률 값 Q2는 제 2 행 그리고 제 2 열 상에 포함된다.
[0089] 행들 P 내지 S 각각은 상이한 타입의 이웃 분석과 연관된다. 구체적인 예로서, 행 P는, 둘 모두가 스플릿이 아닌 (분석되고 있는 인스턴트(instant) 블록에 대한) 위 및 좌측의 이웃들의 분석에 대한 확률 값들을 포함할 수 있고, 행 Q는, 스플릿인 위의 이웃 및 스플릿이 아닌 좌측 이웃의 분석에 대한 확률 값들을 포함할 수 있다. 따라서, 인코더(예컨대, 도 1a에 도시된 인코더(120))는, 현재 블록의 분석 동안, 이웃하는(예컨대, 인접) 블록들의 스플릿들(또는 비-스플릿(non-split))과 대응하는 확률 테이블(700)의 확률 값들의 행을 선택하도록 구성될 수 있다.
[0090] 확률 값들은, 엔트로피 코더에 의해 사용될 수 있는 값들을 표현할 수 있다. 인코딩 동안, 엔트로피 코더는, 확률 테이블(700)에 포함된 확률 값들에 기초하여 비트 레이트들을 할당하도록 구성될 수 있다. 확률 값에 의해 표현되는 바와 같은 비교적 높은 결과(예컨대, 비교적 가능성이 높은 결과, 더 가능성이 있는 결과)에 대해 엔트로피 코더에 의해 더 적은 비트들이 할당될 수 있고, 확률 값에 의해 표현되는 바와 같은 비교적 가능성이 낮은 결과에 대해 엔트로피 코더에 의해 더 많은 개수의 비트들이 할당될 수 있다.
[0091] 확률 테이블(700)의 열들 각각은 상이한 타입의 파티션과 연관된다. 예를 들어, (행 P에서의) 확률 값 P1은 어떠한 파티셔닝도 없는 확률을 표현할 수 있고, 확률 값 P2는 수직적 스플릿의 확률을 표현할 수 있으며, 확률 값 P3은 수평적 스플릿의 확률을 표현할 수 있다. 확률 값들 P1 내지 P3과 연관된 스플리팅(split)에 대한 조건들이 충족되지 않으면, 파티션 분석의 결과는 상이한 스플릿(예컨대, 완전한 4 웨이(four way) 스플릿)이다. 몇몇 구현들에서, 확률 테이블(700)은 100% 확률을 갖는 제 4 열을 포함할 수 있으며, 확률 값들의 처음 3개의 열들(예컨대, P1 내지 P3)과 연관된 조건들이 충족되지 않는 경우의 최종 결과와 연관된다.
[0092] 몇몇 구현들에서, 확률 값들을, 예컨대, 0 내지 255의 범위를 가질 수 있다. 더 높은 확률 값들은 확률 값과 연관된 결과의 확률일 수 있다. 예를 들어, 확률 값 P2는 수직적 스플릿의 확률을 표현할 수 있고, 확률 값 P2는, 0 내지 255의 척도(scale) 상에서 245일 수 있다. 따라서, 확률 값 P2에 기초하는 수직적 스플릿의 확률은 매우 높다.
[0093] 몇몇 구현들에서, 확률 테이블(700)에 포함된 확률 값들은, 프레임들의 시퀀스의 프레임들의 프로세싱 동안 업데이트될 수 있다. 예를 들어, 확률 테이블(700)은, 비디오 시퀀스 또는 프레임들의 시퀀스의 처음 프레임(예컨대, 제 1 프레임)에 대해 사용될 수 있는 디폴트 확률 테이블일 수 있다. 처음 프레임에서의 블록들의 스플리팅에 대한 결과에 의존하여, 확률 테이블(700)에 포함된 확률 값들은 후속 프레임(예컨대, 제 2 프레임)의 인코딩에 대해 수정될 수 있다. 구체적인 예로서, 확률 값 P2는 블록 사이즈 A 내지 블록 사이즈 B의 블록 내의 수직적 스플릿과 연관된 확률을 표현할 수 있다. 블록 사이즈 A로부터 블록 사이즈 B까지의 제 1 프레임 내의 수직적 스플리팅의 분포가 비교적 높으면, 확률 값 P2는 제 2 프레임에 대한 블록들의 프로세싱에 대해 증가될 수 있다. 반면에, 블록 사이즈 A로부터 블록 사이즈 B까지의 제 1 프레임 내의 수직적 스플리팅의 분포가 비교적 낮으면, 확률 값 P2는 제 2 프레임에 대한 블록들의 프로세싱에 대해 감소될 수 있다.
[0094] 몇몇 구현들에서, 확률 테이블(700)에 포함된 확률 값들 중 하나 이상에 대한 변경들은, 확률 테이블(700)에 포함된 디폴트 확률 값들로부터의 차이(또는 잔차)로서 저장될 수 있다. 차이는 저장될 수 있고, 프로세싱되고 있는 블록 또는 프레임과 연관될 수 있다. 따라서, 차이는, 디코딩 동안, 디폴트 확률 값들과 함께 디코더(예컨대, 도 1a에 도시된 디코더(124))에 의해 사용될 수 있다.
[0095] 확률 값들의 수정은 각각의 프레임(또는 블록들의 그룹)의 프로세싱에 대해 수행될 수 있다. 몇몇 구현들에서, 디폴트 확률 값들은, 비디오 프레임들의 시퀀스의 제 1 프레임에 대해 처음에 사용될 수 있다. 예를 들어, 디폴트 확률 값들은 I-프레임에 대해 사용될 수 있고, I-프레임 이후에 프로세싱되는 각각의 후속 P-프레임 또는 B-프레임에 대해 확률 값들은 (디폴트 확률 값으로부터) 수정될 수 있다. (비디오 프레임들(예컨대, P-프레임들, B-프레임들)의 시퀀스와 연관된) 새로운 I-프레임이 도달되는 경우, 디폴트 확률 값들이 재-도입(re-institute)되어 새로운 I-프레임과 연관된 프레임들에 대해 다시 사용될 수 있다.
[0096] 다음은, 현재 블록의 위 및 좌측의 이웃하는 블록들의 파티션 타입들에 기초하여 현재 블록에 대한 확률 분포를 식별하기 위해 생성될 수 있는 (디폴트 확률 테이블일 수 있는) 특정한 예시적인 확률 테이블이다. 프로세싱되고 있는 블록 사이즈 및 타겟 블록 사이즈(예컨대, // 8×8 -> 4×4)가 테이블의 블록 부분들(이는, 각각이 4개의 행들 및 3개의 열들을 포함함) 위에 언급된다. 이러한 예에서, 확률 값들의 범위들은 0 내지 255 사이에 있다. 몇몇 구현들에서, 범위들은 상이할 수 있다.
// 8×8 -> 4×4
{ 199, 122, 141 }, // 위/좌측 둘 모두가 스플릿이 아님
{ 147, 63, 159 }, // 위는 스플릿이고, 좌측은 스플릿이 아님
{ 148, 133, 118 }, // 좌측은 스플릿이고, 위는 스플릿이 아님
{ 121, 104, 114 }, // 위/좌측 둘 모두가 스플릿임
// 16×16 -> 8×8
{ 174, 73, 87 }, // 위/좌측 둘 모두가 스플릿이 아님
{ 92, 41, 83 }, // 위는 스플릿이고, 좌측은 스플릿이 아님
{ 82, 99, 50 }, // 좌측은 스플릿이고, 위는 스플릿이 아님
{ 53, 39, 39 }, // 위/좌측 둘 모두가 스플릿임
// 32×32 -> 16×16
{ 177, 58, 59 }, // 위/좌측 둘 모두가 스플릿이 아님
{ 68, 26, 63 }, // 위는 스플릿이고, 좌측은 스플릿이 아님
{ 52, 79, 25 }, // 좌측은 스플릿이고, 위는 스플릿이 아님
{ 17, 14, 12 }, // 위/좌측 둘 모두가 스플릿임
// 64×64 -> 32×32
{ 222, 34, 30 }, // 위/좌측 둘 모두가 스플릿이 아님
{ 72, 16, 44 }, // 위는 스플릿이고, 좌측은 스플릿이 아님
{ 58, 32, 12 }, // 좌측은 스플릿이고, 위는 스플릿이 아님
{ 10, 7, 6 }, // 위/좌측 둘 모두가 스플릿임
[0097] 이러한 예에서, 확률은 0-255의 값들 사이에 분포될 수 있으며, 여기서, 더 높은 숫자는, 현재 블록의 현재 블록 사이즈(예컨대, 64×64, 32×32, 16×16 등), 현재 블록의 위에 이웃하는 블록의 파티션 타입, 및 현재 블록의 좌측에 이웃하는 블록의 파티션 타입에 기초하여 현재 블록에 대해 개연성 있는 파티션 타입에 대한 더 높은 확률을 나타낼 수 있다. 다양한 예들에서, 더 적은 비트들이 가능성 있는 후보들에 할당될 수 있고, 더 많은 비트들이 가능성이 낮은 후보들에 할당될 수 있다. 추가로, 몇몇 예들에서, 생성된 테이블은 전체 프레임에 적용될 수 있다.
[0098] 본 개시내용의 양상들에 따르면, 재귀적 블록 파티셔닝은 컨텍스트-기반 엔트로피 코딩과 함께, 블록 사이즈를 최적화할 때 개선된 유연성을 허용하면서 효율적인 비디오 코덱 구현을 유지한다. 다양한 예들에서, 이러한 재귀적 블록 파티셔닝 기술은, 실제의 블록 사이즈들의 코딩을 블록 파티션 타입들의 코딩으로 변환하는데 사용될 수 있고, 컨텍스트-기반 엔트로피 코딩과 함께, 이러한 기술은 개선된 코딩 성능 이득들을 제공한다.
[0099] 도 6b-6c는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 방법들을 예시하는 프로세스 흐름들이다. 특히, 도 6b는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 예시적인 방법(620)을 예시하는 프로세스 흐름이다.
[00100] 도 6b의 예에서, 동작들(622-628)은 순차적 순서로 발생하는 별개의 동작들로서 예시된다. 그러나, 다른 구현들에서는, 동작들(622-628) 중 2개 이상의 동작이, 부분적으로 또는 완전히 오버랩된 방식 또는 병렬 방식으로 발생할 수 있거나, 또는 내포적 방식 또는 루프형 방식으로 발생할 수 있거나, 또는 도시된 순서와 상이한 순서로 발생할 수 있다는 것이 인식되어야 한다. 추가로, 도 6b의 예에서 명시적으로 예시되지 않을 수 있는 부가적인 동작들이 또한 몇몇 예시적인 구현들에서 포함될 수 있지만, 다른 구현들에서는, 동작들(622-628) 중 하나 이상이 생략될 수 있다. 추가로, 몇몇 구현들에서, 방법(620)은, 도 1의 시스템(100)에서의 재귀적 블록 파티셔닝을 위한 컴퓨터-구현 방법에 대한 프로세스 흐름을 포함할 수 있다. 추가로, 본원에 설명된 바와 같이, 동작들(622-628)은, 도 1a를 참조하여 설명된 바와 같은 특성들 및 기능들을 제공하도록 컴퓨팅 디바이스(104)에 의해 실행될 수 있는 간략화된 동작 프로세스 흐름을 제공할 수 있다.
[00101] 도 6b의 예의 (622)에서, 방법(620)은, 이미지를 복수의 영역들로 분할하는 단계를 포함할 수 있다. (624)에서, 방법(620)은, 복수의 영역들의 각각의 영역에 복수의 파티션 타입들을 적용하는 단계를 포함할 수 있다. (626)에서, 방법(620)은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여, 복수의 영역들의 각각의 영역에 대한 레이트 왜곡(예컨대, 레이트 왜곡 비용)을 결정하는 단계를 포함할 수 있다.
[00102] (628)에서, 방법(620)은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여, 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하는 단계를 포함할 수 있다. (630)에서, 방법(620)은, 복수의 영역들의 각각의 영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여, 복수의 영역들의 각각의 영역을 개별적으로 인코딩하는 단계를 포함할 수 있다.
[00103] 몇몇 구현들에서, 제 1 파티션 타입은 유사한 치수의 4개의 서브-블록들을 갖는 스플릿 파티션 타입을 포함할 수 있고, 제 2 파티션 타입은 유사한 치수의 2개의 수평적으로 배열된 서브-블록들을 갖는 수평적 파티션 타입을 포함할 수 있고, 제 3 파티션 타입은 유사한 치수의 2개의 수직적으로 배열된 서브-블록들을 갖는 수직적 파티션 타입을 포함할 수 있으며, 제 4 파티션 타입은, 단일 블록을 갖는, 파티션이 없는 타입을 포함할 수 있다.
[00104] 도 6c는 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 다른 예시적인 방법(640)을 예시하는 프로세스 흐름이다.
[00105] 도 6c의 예에서, 동작들(642-648)은 순차적 순서로 발생하는 별개의 동작들로서 예시된다. 그러나, 다른 구현들에서는, 동작들(642-648) 중 2개 이상의 동작이, 부분적으로 또는 완전히 오버랩된 방식 또는 병렬 방식으로 발생할 수 있거나, 또는 내포적 방식 또는 루프형 방식으로 발생할 수 있거나, 또는 도시된 순서와 상이한 순서로 발생할 수 있다는 것이 인식되어야 한다. 추가로, 도 6c의 예에서 명시적으로 예시되지 않을 수 있는 부가적인 동작들이 또한 몇몇 예시적인 구현들에서 포함될 수 있지만, 다른 구현들에서는, 동작들(642-648) 중 하나 이상이 생략될 수 있다. 추가로, 몇몇 구현들에서, 방법(640)은, 도 1의 시스템(100)에서의 재귀적 블록 파티셔닝을 위한 컴퓨터-구현 방법에 대한 프로세스 흐름을 포함할 수 있다. 추가로, 본원에 설명된 바와 같이, 동작들(642-648)은, 도 1a를 참조하여 설명된 바와 같은 특성들 및 기능들을 제공하도록 컴퓨팅 디바이스(104)에 의해 실행될 수 있는 간략화된 동작 프로세스 흐름을 제공할 수 있다. 더 추가적으로, 동작들(642-648)은, 도 1a를 참조하여 설명된 바와 같은 특성들 및 기능들을 제공하도록 컴퓨팅 디바이스(104)에 의해 실행될 수 있는 간략화된 동작 프로세스 흐름을 제공하기 위한 도 6b의 동작들(622-630)에 연속하는 것일 수 있다.
[00106] 도 6b의 예의 (642)에서, 방법(640)은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들 중 제 1 파티션 타입에 대해, 복수의 영역들의 각각의 영역을 복수의 서브-영역들로 분할하는 단계를 포함할 수 있다. (644)에서, 방법(640)은, 복수의 서브-영역들의 각각의 서브-영역에 복수의 파티션 타입들을 재적용하는 단계를 포함할 수 있다.
[00107] (646)에서, 방법(640)은, 복수의 서브-영역들의 각각의 서브-영역에 적용된 복수의 파티션 타입들에 기초하여, 복수의 서브-영역들의 각각의 서브-영역에 대한 레이트 왜곡 비용을 결정하는 단계를 포함할 수 있다. (648)에서, 방법(640)은, 복수의 서브-영역들의 각각의 서브-영역에 적용된 복수의 파티션 타입들에 기초하여, 복수의 서브-영역들의 각각의 서브-영역에 대한 코딩 방식을 결정하는 단계를 포함할 수 있다.
[00108] 몇몇 구현들에서, 제 1 파티션 타입은 유사한 치수의 4개의 서브-블록들을 갖는 스플릿 파티션 타입을 포함할 수 있고, 제 2 파티션 타입은 유사한 치수의 2개의 수평적으로 배열된 서브-블록들을 갖는 수평적 파티션 타입을 포함할 수 있고, 제 3 파티션 타입은 유사한 치수의 2개의 수직적으로 배열된 서브-블록들을 갖는 수직적 파티션 타입을 포함할 수 있으며, 제 4 파티션 타입은, 단일 블록을 갖는, 파티션이 없는 타입을 포함할 수 있다.
[00109] 몇몇 구현들에서, 복수의 영역들의 각각의 영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여 복수의 영역들의 각각의 영역을 개별적으로 인코딩하는 것은, 복수의 서브-영역들의 각각의 서브-영역에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여 복수의 서브-영역들의 각각의 서브-영역을 개별적으로 인코딩하는 것을 포함할 수 있다.
[00110] 몇몇 구현들에서, 복수의 영역들의 각각의 영역에 대한 레이트 왜곡 비용을 결정하는 것은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 복수의 영역들의 각각의 영역에 대한 복수의 레이트 왜곡 비용들을 평가하는 것, 및 복수의 영역들의 각각의 영역에 대한 최적의 레이트 왜곡 비용을 결정하는 것을 포함할 수 있으며, 최적의 레이트 왜곡 비용은, 복수의 영역들의 각각의 영역에 대해 평가된 복수의 레이트 왜곡 비용들로부터 선택된다.
[00111] 몇몇 구현들에서, 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하는 것은, 복수의 영역들의 각각의 영역에 적용된 복수의 파티션 타입들에 기초하여 복수의 영역들의 각각의 영역에 대한 복수의 코딩 방식들을 평가하는 것, 및 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하는 것을 포함할 수 있으며, 최적의 코딩 방식은, 복수의 영역들의 각각의 영역에 대해 평가된 복수의 코딩 방식들로부터 선택된다.
[00112] 도 8은 본 개시내용의 양상들에 따른, 재귀적 블록 파티셔닝을 위한 다른 예시적인 방법(800)을 예시하는 프로세스 흐름이다.
[00113] 도 8의 예에서, 동작들(802-808)은 순차적 순서로 발생하는 별개의 동작들로서 예시된다. 그러나, 다른 구현들에서는, 동작들(802-808) 중 2개 이상의 동작이, 부분적으로 또는 완전히 오버랩된 방식 또는 병렬 방식으로 발생할 수 있거나, 또는 내포적 방식 또는 루프형 방식으로 발생할 수 있거나, 또는 도시된 순서와 상이한 순서로 발생할 수 있다는 것이 인식되어야 한다. 추가로, 도 8의 예에서 명시적으로 예시되지 않을 수 있는 부가적인 동작들이 또한 몇몇 예시적인 구현들에서 포함될 수 있지만, 다른 구현들에서는, 동작들(802-808) 중 하나 이상이 생략될 수 있다. 추가로, 몇몇 구현들에서, 방법(800)은, 도 1의 시스템(100)에서의 재귀적 블록 파티셔닝을 위한 컴퓨터-구현 방법에 대한 프로세스 흐름을 포함할 수 있다. 추가로, 본원에 설명된 바와 같이, 동작들(802-808)은, 도 1a를 참조하여 설명된 바와 같은 특성들 및 기능들을 제공하도록 컴퓨팅 디바이스(104)에 의해 실행될 수 있는 간략화된 동작 프로세스 흐름을 제공할 수 있다.
[00114] 도 8의 예의 (802)에서, 방법(800)은, 비디오 프레임을 복수의 픽셀 블록들로 분할하는 단계를 포함할 수 있다. (804)에서, 방법(800)은, 복수의 픽셀 블록들의 각각의 픽셀 블록에 복수의 파티션 타입들을 적용하는 단계를 포함할 수 있다.
[00115] (806)에서, 방법(800)은, 복수의 픽셀 블록들의 각각의 픽셀 블록에 적용된 복수의 파티션 타입들 중 제 1 파티션 타입에 대해, 제 1 파티션 타입의 각각의 픽셀 블록을 복수의 픽셀 서브-블록들로 분할하고, 복수의 픽셀 서브-블록들의 각각의 픽셀 서브-블록에 복수의 파티션 타입들을 재적용하는 단계를 포함할 수 있다. (808)에서, 방법(800)은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대한 레이트 왜곡 비용을 결정하는 단계를 포함할 수 있다.
[00116] (810)에서, 방법(800)은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 복수의 파티션 타입들에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대한 코딩 방식을 결정하는 단계를 포함할 수 있다. (812)에서, 방법(800)은, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록에 대해 결정된 레이트 왜곡 비용 및 코딩 방식에 기초하여, 각각의 픽셀 블록 및 각각의 픽셀 서브-블록을 개별적으로 인코딩하는 단계를 포함할 수 있다.
[00117] 본원에서 설명된 다양한 기술들의 구현들은, 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로 또는 이들의 결합들로 구현될 수 있다. 구현들은, 데이터 프로세싱 장치, 예컨대 프로그래밍가능 프로세서, 컴퓨터 또는 다수의 컴퓨터들에 의한 실행을 위해 또는 이들의 동작을 제어하기 위하여 컴퓨터 프로그램 물건, 즉 정보 캐리어에, 예컨대 머신-판독가능 저장 디바이스 또는 전파된 신호로 유형으로(tangibly) 구현되는 컴퓨터 프로그램으로서 구현될 수 있다. 위에 설명된 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은, 컴파일(compile)되거나 또는 해석된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있으며, 독립형 프로그램 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 비롯한 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터, 또는 하나의 사이트(site)에 있거나 또는 다수의 사이트들에 걸쳐 분산되고 그리고 통신 네트워크에 의해 상호 연결되는 다수의 컴퓨터들을 통해 실행되도록 전개될 수 있다.
[00118] 방법 단계들은 입력 데이터에 대하여 동작하여 출력을 생성함으로써 기능들을 수행하는 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능 프로세서들에 의해 수행될 수 있다. 방법 단계들은 또한, 특수목적 로직 회로, 예컨대 FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)에 의해 수행될 수 있고 장치는 특수목적 로직 회로, 예컨대 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(주문형 집적회로)로서 구현될 수 있다.
[00119] 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수목적 마이크로프로세서들 둘 모두 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 이들 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령들을 실행하기 위한 적어도 하나의 프로세서, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함할 수 있다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 광자기(magneto-optical) 디스크들 또는 광학 디스크들을 포함하거나, 또는 이들로부터 데이터를 수신하거나 또는 이들로 데이터를 전달하거나 또는 이들 둘 모두를 수행하도록 동작가능하게 커플링될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 구현하기에 적합한 정보 캐리어들은, 예로서, 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈식 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 비롯하여 모든 형태의 비-휘발성 메모리를 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 또는 특수 목적 로직 회로에 통합될 수 있다.
[00120] 사용자 상호작용을 제공하기 위해, 구현들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대 음극선관(CRT) 또는 액정 디스플레이(LCD) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 타입들의 디바이스들이 또한 사용자와의 상호작용을 제공하기 위해 사용될 수 있는데, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예컨대 시각 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 비롯하여 임의의 형태로 수신될 수 있다.
[00121] 구현들은, 예컨대 데이터 서버로서 백-엔드(back-end) 컴포넌트를 포함하거나 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하거나 또는 프론트-엔드(front-end) 컴포넌트, 예컨대 그래픽 사용자 인터페이스 또는 사용자가 구현과 상호작용하게 할 수 있는 웹 브라우저를 갖는 클라이언트 컴퓨터, 또는 그러한 백-엔드, 미들웨어 또는 프론트-엔드 컴포넌트들의 임의의 결합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 컴포넌트들은, 디지털 데이터 통신의 임의의 형태 또는 매체, 예컨대 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들과 같은 네트워크들의 예들은, 로컬 영역 네트워크(LAN) 및 광역 네트워크(WAN), 예컨대 인터넷을 포함할 수 있다.
[00122] 설명된 구현들의 특정한 특성들이 본원에서 설명된 바와 같이 예시되지만, 많은 수정들, 대체들, 변경들 및 균등물들이 이제 당업자에게 생각날 것이다. 따라서, 첨부된 청구항들이 실시예들의 범위 내에 속하는 바와 같은 모든 그러한 수정들 및 변경들을 커버하는 것으로 의도된다는 것이 이해되어야 한다.
Claims (26)
- 실행될 때 적어도 하나의 프로세서로 하여금 프로세스를 수행하게 하는 명령들을 저장하는 컴퓨터-판독가능 저장 매체로서,
상기 명령들은,
이미지를 복수의 영역들로 분할(divide)하도록 구성되는 명령들;
확률 테이블에 기초하여 상기 복수의 영역들의 각각의 영역에 복수의 파티션(partition) 타입들을 적용하도록 구성되는 명령들;
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 영역들의 각각의 영역에 대한 레이트 왜곡 비용(rate distortion cost)을 결정하도록 구성되는 명령들;
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하도록 구성되는 명령들; 및
상기 복수의 영역들의 각각의 영역에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여 상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들;
을 포함하고,
결정된 상기 코딩 방식은, 상기 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정할 때, 각 영역의 사이즈, 각 영역의 위의 제1 이웃 영역에 적용된 파티션 타입, 및 각 영역의 좌측의 제2 이웃 영역에 적용된 파티션 타입에 조건부인 확률 테이블을 이용하는 컨텍스트-기반 엔트로피 코딩(context-based entropy coding) 방식을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항에 있어서,
상기 이미지는 비디오 프레임을 포함하고, 상기 복수의 영역들은 상기 복수의 영역들의 그리드(grid)를 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항에 있어서,
상기 복수의 영역들의 각각의 영역은 n×n 픽셀들의 블록을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 3 항에 있어서,
상기 n×n 픽셀들의 블록은, 64×64 픽셀들의 블록, 32×32 픽셀들의 블록, 16×16 픽셀들의 블록, 8×8 픽셀들의 블록, 4×4 픽셀들의 블록, 및 2×2 픽셀들의 블록 중 적어도 하나를 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 확률 테이블은, 상기 복수의 파티션 타입들로부터의 제 1 파티션 타입과 연관된 확률 값 및 상기 복수의 파티션 타입들로부터의 제 2 파티션 타입과 연관된 확률 값을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 파티션 타입들은,
유사한 치수(dimension)의 4개의 서브-블록들을 갖는 스플릿(split) 파티션 타입을 포함하는 제 1 파티션 타입;
유사한 치수의 2개의 수평적으로 배열된 서브-블록들을 갖는 수평적 파티션 타입을 포함하는 제 2 파티션 타입;
유사한 치수의 2개의 수직적으로 배열된 서브-블록들을 갖는 수직적 파티션 타입을 포함하는 제 3 파티션 타입; 및
단일 블록을 갖는, 파티션이 없는(no partition) 타입을 포함하는 제 4 파티션 타입
을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들 중 제 1 파티션 타입에 대해, 상기 명령들은,
상기 복수의 영역들의 각각의 영역을 복수의 서브-영역들로 분할하도록 구성되는 명령들;
상기 복수의 서브-영역들의 각각의 서브-영역에 상기 복수의 파티션 타입들을 재적용하도록 구성되는 명령들;
상기 복수의 서브-영역들의 각각의 서브-영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 서브-영역들의 각각의 서브-영역에 대한 레이트 왜곡 비용을 결정하도록 구성되는 명령들; 및
상기 복수의 서브-영역들의 각각의 서브-영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 서브-영역들의 각각의 서브-영역에 대한 코딩 방식을 결정하도록 구성되는 명령들
을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여 상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들은, 상기 복수의 서브-영역들의 각각의 서브-영역에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여 상기 복수의 서브-영역들의 각각의 서브-영역을 개별적으로 인코딩하도록 구성되는 명령들을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역에 대한 레이트 왜곡 비용을 결정하도록 구성되는 명령들은,
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 영역들의 각각의 영역에 대한 복수의 레이트 왜곡 비용들을 평가하도록 구성되는 명령들; 및
상기 복수의 영역들의 각각의 영역에 대한 레이트 왜곡 비용을 결정하도록 구성되는 명령들
을 포함하며,
상기 레이트 왜곡 비용은 상기 복수의 영역들의 각각의 영역에 대해 평가된 상기 복수의 레이트 왜곡 비용들로부터 선택되는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들은, 상기 복수의 영역들의 각각의 영역에 대해 결정된 최적의 레이트 왜곡 비용에 기초하여 상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정하도록 구성되는 명령들은,
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들에 기초하여 상기 복수의 영역들의 각각의 영역에 대한 복수의 코딩 방식들을 평가하도록 구성되는 명령들; 및
상기 복수의 영역들의 각각의 영역에 대한 최적의 코딩 방식을 결정하도록 구성되는 명령들
을 포함하며,
상기 최적의 코딩 방식은, 상기 복수의 영역들의 각각의 영역에 대해 평가된 상기 복수의 코딩 방식들로부터 선택되는,
컴퓨터-판독가능 저장 매체. - 제 11 항에 있어서,
상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들은, 상기 복수의 영역들의 각각의 영역에 대해 결정된 상기 최적의 코딩 방식에 기초하여 상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들을 포함하는,
컴퓨터-판독가능 저장 매체. - 삭제
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 복수의 영역들의 각각의 영역을 개별적으로 인코딩하도록 구성되는 명령들은, 상기 복수의 영역들의 각각의 영역에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여, 래스터 순서(raster order)로, 각각의 영역을 비트스트림으로 개별적으로 인코딩하도록 구성되는 명령들을 포함하는,
컴퓨터-판독가능 저장 매체. - 실행될 때 적어도 하나의 프로세서로 하여금 프로세스를 수행하게 하는 명령들을 저장하는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
상기 명령들은,
비디오 프레임을 복수의 픽셀 블록들로 분할하도록 구성되는 명령들;
확률 테이블에 기초하여 상기 복수의 픽셀 블록들의 각각의 픽셀 블록에 복수의 파티션 타입들을 적용하도록 구성되는 명령들;
상기 복수의 픽셀 블록들의 각각의 픽셀 블록에 적용된 상기 복수의 파티션 타입들 중 제 1 파티션 타입에 대해, 상기 제 1 파티션 타입의 각각의 픽셀 블록을 복수의 픽셀 서브-블록들로 분할하고 그리고 상기 복수의 픽셀 서브-블록들의 각각의 픽셀 서브-블록에 상기 복수의 파티션 타입들을 재적용하도록 구성되는 명령들;
상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 상기 복수의 파티션 타입들에 기초하여 상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록에 대한 레이트 왜곡 비용을 결정하도록 구성되는 명령들;
상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록에 각각 적용 및 재적용된 상기 복수의 파티션 타입들에 기초하여 상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록에 대한 코딩 방식을 결정하도록 구성되는 명령들; 및
상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여 상기 각각의 픽셀 블록 및 상기 각각의 픽셀 서브-블록을 개별적으로 인코딩하도록 구성되는 명령들
을 포함하고,
결정된 상기 코딩 방식은, 상기 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정할 때, 각 영역의 사이즈, 각 영역의 위의 제1 이웃 영역에 적용된 파티션 타입, 및 각 영역의 좌측의 제2 이웃 영역에 적용된 파티션 타입에 조건부인 확률 테이블을 이용하는 컨텍스트-기반 엔트로피 코딩 방식을 포함하는,
컴퓨터-판독가능 저장 매체. - 제 15 항에 있어서,
상기 각각의 픽셀 블록은 n×n 픽셀들의 블록을 포함하고, 그리고
각각의 n×n 픽셀들의 블록은, 64×64 픽셀들의 블록, 32×32 픽셀들의 블록, 16×16 픽셀들의 블록, 8×8 픽셀들의 블록, 4×4 픽셀들의 블록, 및 2×2 픽셀들의 블록 중 적어도 하나를 포함하는,
컴퓨터-판독가능 저장 매체. - 제 15 항 또는 제 16 항에 있어서,
상기 복수의 파티션 타입들 중 상기 제 1 파티션 타입은, 유사한 치수의 4개의 서브-블록들을 갖는 스플릿 파티션 타입을 포함하고,
제 2 파티션 타입은, 유사한 치수의 2개의 수평적으로 배열된 서브-블록들을 갖는 수평적 파티션 타입을 포함하고,
제 3 파티션 타입은, 유사한 치수의 2개의 수직적으로 배열된 서브-블록들을 갖는 수직적 파티션 타입을 포함하며, 그리고
제 4 파티션 타입은, 단일 블록을 갖는, 파티션이 없는 타입을 포함하는,
컴퓨터-판독가능 저장 매체. - 삭제
- 시스템으로서,
적어도 하나의 프로세서 및 메모리를 포함하며,
상기 적어도 하나의 프로세서는,
프레임을 복수의 영역들로 분할하고;
상기 복수의 영역들의 각각의 영역에 복수의 파티션 타입들을 적용하고;
상기 복수의 영역들의 각각의 영역에 적용된 상기 복수의 파티션 타입들 중 적어도 하나의 파티션 타입에 대해, 확률 테이블에 기초하여, 상기 적어도 하나의 파티션 타입의 각각의 영역을 복수의 서브-영역들로 분할하고 그리고 상기 복수의 서브-영역들의 각각의 서브-영역에 상기 복수의 파티션 타입들을 재적용하고;
상기 각각의 영역 및 상기 각각의 서브-영역에 각각 적용 및 재적용된 상기 복수의 파티션 타입들에 기초하여 상기 각각의 영역 및 상기 각각의 서브-영역에 대한 레이트 왜곡 비용을 결정하고;
상기 각각의 영역 및 상기 각각의 서브-영역에 각각 적용 및 재적용된 상기 복수의 파티션 타입들에 기초하여 상기 각각의 영역 및 상기 각각의 서브-영역에 대한 코딩 방식을 결정하고;
상기 각각의 영역 및 상기 각각의 서브-영역에 대해 결정된 상기 레이트 왜곡 비용 및 상기 코딩 방식에 기초하여, 상기 각각의 영역 및 상기 각각의 서브-영역을 개별적으로 인코딩
하도록 구성되고,
결정된 상기 코딩 방식은, 상기 복수의 영역들의 각각의 영역에 대한 코딩 방식을 결정할 때, 각 영역의 사이즈, 각 영역의 위의 제1 이웃 영역에 적용된 파티션 타입, 및 각 영역의 좌측의 제2 이웃 영역에 적용된 파티션 타입에 조건부인 확률 테이블을 이용하는 컨텍스트-기반 엔트로피 코딩 방식을 포함하는,
시스템. - 제 19 항에 있어서,
상기 프레임은 제 1 프레임이고,
상기 확률 테이블은 상기 적어도 하나의 파티션 타입과 연관된 확률 값을 포함하며,
상기 적어도 하나의 프로세서는, 상기 제 1 프레임과 연관된 프로세싱에 기초하여, 제 2 프레임의 프로세싱에 대한 확률 값을 업데이트하도록 구성되는,
시스템. - 제 19 항 또는 제 20 항에 있어서,
상기 프레임은 비디오 프레임들의 시퀀스(sequence)의 제 1 프레임이고,
상기 확률 테이블은, 상기 적어도 하나의 파티션 타입과 연관된 디폴트(default) 확률 값을 포함하는,
시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/144,375 | 2013-12-30 | ||
US14/144,375 US20150189269A1 (en) | 2013-12-30 | 2013-12-30 | Recursive block partitioning |
PCT/US2014/072435 WO2015103088A1 (en) | 2013-12-30 | 2014-12-26 | Recursive block partitioning |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160104706A KR20160104706A (ko) | 2016-09-05 |
KR101941955B1 true KR101941955B1 (ko) | 2019-01-24 |
Family
ID=52440819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167021004A KR101941955B1 (ko) | 2013-12-30 | 2014-12-26 | 재귀적 블록 파티셔닝 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150189269A1 (ko) |
EP (1) | EP3090548A1 (ko) |
JP (1) | JP6342500B2 (ko) |
KR (1) | KR101941955B1 (ko) |
CN (1) | CN105960803A (ko) |
WO (1) | WO2015103088A1 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014190468A1 (en) | 2013-05-27 | 2014-12-04 | Microsoft Corporation | Video encoder for images |
TWI536811B (zh) * | 2013-12-27 | 2016-06-01 | 財團法人工業技術研究院 | 影像處理方法與系統、解碼方法、編碼器與解碼器 |
EP3120556B1 (en) | 2014-03-17 | 2021-01-13 | Microsoft Technology Licensing, LLC | Encoder-side decisions for screen content encoding |
US9641854B2 (en) * | 2014-05-19 | 2017-05-02 | Mediatek Inc. | Count table maintenance apparatus for maintaining count table during processing of frame and related count table maintenance method |
WO2016123792A1 (en) | 2015-02-06 | 2016-08-11 | Microsoft Technology Licensing, Llc | Skipping evaluation stages during media encoding |
US10085027B2 (en) * | 2015-03-06 | 2018-09-25 | Qualcomm Incorporated | Adaptive mode checking order for video encoding |
US10136132B2 (en) * | 2015-07-21 | 2018-11-20 | Microsoft Technology Licensing, Llc | Adaptive skip or zero block detection combined with transform size decision |
WO2017065422A1 (ko) * | 2015-10-12 | 2017-04-20 | 엘지전자(주) | 영상 처리 방법 및 이를 위한 장치 |
WO2017155334A1 (ko) | 2016-03-11 | 2017-09-14 | 디지털인사이트 주식회사 | 비디오 코딩 방법 및 장치 |
CN106162184B (zh) * | 2016-07-28 | 2020-01-10 | 华为技术有限公司 | 一种数据块编码方法及装置 |
JP6565885B2 (ja) * | 2016-12-06 | 2019-08-28 | 株式会社Jvcケンウッド | 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム |
CN110603811A (zh) * | 2017-02-23 | 2019-12-20 | 真实网络公司 | 视频编码***和方法中的残差变换和逆向变换 |
US11218697B2 (en) | 2017-05-26 | 2022-01-04 | Sk Telecom Co., Ltd. | Apparatus and method for video encoding or decoding supporting various block sizes |
KR102435881B1 (ko) | 2017-05-26 | 2022-08-24 | 에스케이텔레콤 주식회사 | 영상 부호화 또는 복호화하기 위한 장치 및 방법 |
EP3725074A1 (en) * | 2017-12-14 | 2020-10-21 | InterDigital VC Holdings, Inc. | Texture-based partitioning decisions for video compression |
JP7491762B2 (ja) | 2020-07-22 | 2024-05-28 | アマノ株式会社 | 駐車場管理システム、情報処理装置、情報処理方法及びプログラム |
WO2024020119A1 (en) * | 2022-07-19 | 2024-01-25 | Google Llc | Bit stream syntax for partition types |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011129672A2 (ko) | 2010-04-16 | 2011-10-20 | 에스케이텔레콤 주식회사 | 영상 부호화/복호화 장치 및 방법 |
WO2011128366A1 (en) * | 2010-04-13 | 2011-10-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Sample region merging |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003026315A1 (en) * | 2001-09-14 | 2003-03-27 | Ntt Docomo, Inc. | Coding method, decoding method, coding apparatus, decoding apparatus, image processing system, coding program, and decoding program |
WO2003043346A1 (en) * | 2001-11-16 | 2003-05-22 | Ntt Docomo, Inc. | Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system |
JP3842803B2 (ja) * | 2002-04-26 | 2006-11-08 | 株式会社エヌ・ティ・ティ・ドコモ | 信号符号化方法、信号復号方法、信号符号化装置、信号復号装置、信号符号化プログラム、及び信号復号プログラム |
US20040081238A1 (en) * | 2002-10-25 | 2004-04-29 | Manindra Parhy | Asymmetric block shape modes for motion estimation |
US20080123977A1 (en) * | 2005-07-22 | 2008-05-29 | Mitsubishi Electric Corporation | Image encoder and image decoder, image encoding method and image decoding method, image encoding program and image decoding program, and computer readable recording medium recorded with image encoding program and computer readable recording medium recorded with image decoding program |
US8446954B2 (en) * | 2005-09-27 | 2013-05-21 | Qualcomm Incorporated | Mode selection techniques for multimedia coding |
US7693219B2 (en) * | 2006-01-04 | 2010-04-06 | Freescale Semiconductor, Inc. | System and method for fast motion estimation |
US8208548B2 (en) * | 2006-02-09 | 2012-06-26 | Qualcomm Incorporated | Video encoding |
US20080126278A1 (en) * | 2006-11-29 | 2008-05-29 | Alexander Bronstein | Parallel processing motion estimation for H.264 video codec |
EP2081386A1 (en) * | 2008-01-18 | 2009-07-22 | Panasonic Corporation | High precision edge prediction for intracoding |
US8503527B2 (en) * | 2008-10-03 | 2013-08-06 | Qualcomm Incorporated | Video coding with large macroblocks |
CN102187677B (zh) * | 2008-10-22 | 2013-08-28 | 日本电信电话株式会社 | 可分级视频编码方法以及可分级视频编码装置 |
KR101567974B1 (ko) * | 2009-01-05 | 2015-11-10 | 에스케이 텔레콤주식회사 | 블록 모드 부호화/복호화 방법 및 장치와 그를 이용한 영상부호화/복호화 방법 및 장치 |
US9100656B2 (en) * | 2009-05-21 | 2015-08-04 | Ecole De Technologie Superieure | Method and system for efficient video transcoding using coding modes, motion vectors and residual information |
US20110170608A1 (en) * | 2010-01-08 | 2011-07-14 | Xun Shi | Method and device for video transcoding using quad-tree based mode selection |
WO2011127963A1 (en) * | 2010-04-13 | 2011-10-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Sample region merging |
KR101791078B1 (ko) * | 2010-04-16 | 2017-10-30 | 에스케이텔레콤 주식회사 | 영상 부호화/복호화 장치 및 방법 |
US20110310976A1 (en) * | 2010-06-17 | 2011-12-22 | Qualcomm Incorporated | Joint Coding of Partition Information in Video Coding |
AU2012205077B2 (en) * | 2011-01-06 | 2016-04-07 | Samsung Electronics Co., Ltd. | Encoding method and device of video using data unit of hierarchical structure, and decoding method and device thereof |
US10440373B2 (en) * | 2011-07-12 | 2019-10-08 | Texas Instruments Incorporated | Method and apparatus for coding unit partitioning |
CN109257597B (zh) * | 2011-11-11 | 2023-05-16 | Ge视频压缩有限责任公司 | 解码器、编码器及解码视频的方法 |
US20130301727A1 (en) * | 2012-05-14 | 2013-11-14 | Qualcomm Incorporated | Programmable and scalable integer search for video encoding |
US9219915B1 (en) * | 2013-01-17 | 2015-12-22 | Google Inc. | Selection of transform size in video coding |
-
2013
- 2013-12-30 US US14/144,375 patent/US20150189269A1/en not_active Abandoned
-
2014
- 2014-12-26 CN CN201480074562.9A patent/CN105960803A/zh active Pending
- 2014-12-26 EP EP14833433.7A patent/EP3090548A1/en not_active Withdrawn
- 2014-12-26 JP JP2016543655A patent/JP6342500B2/ja not_active Expired - Fee Related
- 2014-12-26 WO PCT/US2014/072435 patent/WO2015103088A1/en active Application Filing
- 2014-12-26 KR KR1020167021004A patent/KR101941955B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011128366A1 (en) * | 2010-04-13 | 2011-10-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Sample region merging |
WO2011129672A2 (ko) | 2010-04-16 | 2011-10-20 | 에스케이텔레콤 주식회사 | 영상 부호화/복호화 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20150189269A1 (en) | 2015-07-02 |
CN105960803A (zh) | 2016-09-21 |
JP2017507532A (ja) | 2017-03-16 |
KR20160104706A (ko) | 2016-09-05 |
JP6342500B2 (ja) | 2018-06-13 |
WO2015103088A1 (en) | 2015-07-09 |
EP3090548A1 (en) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101941955B1 (ko) | 재귀적 블록 파티셔닝 | |
US10609367B2 (en) | Low-complexity sign prediction for video coding | |
US10003792B2 (en) | Video encoder for images | |
TW201841503A (zh) | 視頻寫碼中之內濾波旗標 | |
JP2018533261A (ja) | 画像予測方法および装置 | |
JP2021516016A (ja) | 変換領域における残差符号予測のための方法および装置 | |
JP2015508617A5 (ko) | ||
CN107231557B (zh) | 用于在视频编码中的高级帧内预测的递归块分区中的智能重排的编、解码方法及装置 | |
CN115668952B (zh) | 用于视频编码的方法、装置及计算机可读存储介质 | |
CN116349225B (zh) | 视频解码方法和装置、电子设备和存储介质 | |
KR20230010259A (ko) | 사후-필터링을 위한 콘텐츠-적응형 온라인 트레이닝 방법 및 장치 | |
JP7437426B2 (ja) | インター予測方法および装置、機器、記憶媒体 | |
WO2023082107A1 (zh) | 解码方法、编码方法、解码器、编码器和编解码*** | |
CN110035288A (zh) | 对视频序列进行编码的方法、编码装置和存储介质 | |
KR20230003539A (ko) | 신경 이미지 압축에서 피처 대체를 이용한 콘텐츠 적응 온라인 트레이닝 | |
CN115769576B (zh) | 视频解码方法、视频解码设备以及计算机可读存储介质 | |
RU2777392C1 (ru) | Способ и устройство для кодирования видеоданных | |
WO2023283095A1 (en) | Systems and methods for encoding and decoding video with memory-efficient prediction mode selection |
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 |