KR102207146B1 - 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 - Google Patents
비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 Download PDFInfo
- Publication number
- KR102207146B1 KR102207146B1 KR1020197006000A KR20197006000A KR102207146B1 KR 102207146 B1 KR102207146 B1 KR 102207146B1 KR 1020197006000 A KR1020197006000 A KR 1020197006000A KR 20197006000 A KR20197006000 A KR 20197006000A KR 102207146 B1 KR102207146 B1 KR 102207146B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- quantizer
- pixel block
- video
- pixel
- 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/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/124—Quantisation
-
- 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/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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- 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/167—Position within a video image, e.g. region of interest [ROI]
-
- 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/182—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 a pixel
-
- 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/184—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 bits, e.g. of the compressed video stream
-
- 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/186—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 a colour or a chrominance component
-
- 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/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- 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/42—Methods 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/436—Methods 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
-
- 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/42—Methods 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/439—Methods 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 cascaded computational arrangements for performing a single operation, e.g. filtering
-
- 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/48—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Analogue/Digital Conversion (AREA)
- Color Television Systems (AREA)
Abstract
비디오 압축 및 압축해제 시스템들에 대한 개선된 대역폭 제어를 제공하는 비디오 압축 및 압축해제 기법들이 개시된다. 특히, 비디오 코딩 및 디코딩 기법들은 입력 비디오를 다수의 차원들로 양자화한다. 이러한 기법들에 따르면, 픽셀 잔차(pixel residual)들이 입력 데이터의 어레이와 예측 데이터의 어레이의 비교로부터 생성될 수 있다. 픽셀 잔차들은 제1 차원에서 양자화될 수 있다. 양자화 후에, 양자화된 픽셀 잔차들은 변환 계수들의 어레이로 변환될 수 있다. 변환 계수들은 제2 차원에서 양자화되고 엔트로피 코딩될 수 있다. 디코딩 기법들은 이러한 프로세스들을 반전시킨다. 또 다른 실시예들에서, 다수의 양자화기들이 변환 스테이지의 상류에 병렬 또는 캐스케이드(cascade)로 제공될 수 있는데, 이는 압축 효율과 복원된 비디오의 품질이라는 경쟁적 이해관계의 균형을 맞추기 위한 노력으로 비디오 코더들에게 데이터를 상이한 차원들로 양자화하기 위한 더 큰 유연성을 제공한다.
Description
우선권 주장
본 발명은 2016년 8월 29일자로 출원된, 발명의 명칭이 "Multidimensional Quantization Techniques For Video Coding/Decoding Systems"인 미국 출원 제15/250,608호의 우선권의 이익을 얻으며, 이 미국 출원 전체는 참조로 본원에 통합된다.
기술분야
본 발명은 비디오 압축 및 압축해제 기법들에 관한 것으로, 보다 상세하게는 비디오 압축 및 압축해제 시스템들에 대한 개선된 대역폭 제어 및 코딩 성능을 제공하는 것에 관한 것이다.
MPEG-4 AVC/H.264, MPEG-H 파트 2/HEVC/H.265, VP9, VP10 등과 같은 현대의 비디오 압축 시스템들은, 압축을 달성하기 위한 그들의 코딩 프로세스의 일부로서, 특히 공간적 및 시간적 예측, 변환, 양자화, 인-루프(in-loop) 필터링, 및 엔트로피 인코딩을 비롯한 다양한 도구들을 채용한다. 변환 코딩은, 예측 프로세스가 수행된 후에, 특정 블록 크기의 잔차(residual) 데이터에 일반적으로 적용되어, 이러한 정보를 더 잘 역상관화하고(de-correlate) 에너지 압축을 달성한다. 변환 프로세싱 후에 생성된 계수들은 양자화되고 이어서 엔트로피 인코딩된다. 이는 단일 차원으로의 양자화를 이룬다. 균일한 양자화가 일반적으로 사용된다.
이전의 시스템들에서는 이산 코사인 변환(Discrete Cosine Transform, DCT)이 사용되었으나, 보다 최근에는 이러한 변환의 정수 근사들뿐만 아니라, 이산 사인 변환(Discrete Sine Transform, DST)의 정수 근사들도 사용된다. 월시-아다마르(Walsh-Hadamard), 하르(Haar) 등과 같은 다른 변환들이 또한 사용된다. 특히, 4x4, 8x8, 16x16, 32x32, 및 64x64 블록 예측들과 같은 예측과 변환들 둘 모두에 대한 상이한 블록 크기들이 일반적으로 사용된다. 비-제곱 변환들뿐만 아니라 형상 적응형 변환들이 또한 일부 시스템들에 의해 사용되는 한편, 변환의 적용에 앞서 잔차 데이터에 대한 적응형 컬러 공간 변환들이 또한 적용될 수 있다.
일부 시나리오들에 대해서, 특히 높은 비트레이트들/낮은 압축비들에 대해서, 블록에 대한 변환 프로세스를 스킵하는 것이 실제로 유리할 수 있고, 양자화 후에 변환 코딩보다 더 양호한 코딩 효율을 제공할 수 있다는 것이 밝혀졌다. 이러한 스킴은 HEVC에 채택되고, "Transform Skip" 코딩 모드로 명명한다. 한편, 변환 코딩 및 양자화 외에도 H.263+와 같은 일부 코덱들이 또한 변환 및 양자화를 적용하기 전에 잔차 데이터의 해상도를 감소시키는 발상을 도입한다. 디코더가 이어서 데이터를 역양자화하고, 변환된 계수들을 반전시키고, 이어서 사전정의된 보간 필터들을 사용하여 생성된 블록을 업스케일링하여 최종적으로 잔차 신호를 재구성해야 할 것이다. 이러한 잔차 신호는 이어서 예측 신호에 부가되어 최종 재구성된 블록을 생성하였다. 이어서, 추가의 인-루프 필터링이 적용될 수 있다. 이러한 코딩 모드를 "Reduced Resolution Update"("RRU") 코딩 모드로 명명하였다. 이 코딩 모드는 H.263에서 뿐만 아니라 MPEG-4 AVC/H.264 및 HEVC/H.265에서 제안되었을 때, 전체 이미지에 적용하였다.
기존의 코딩 기법들은 비디오의 인-루프 양자화를 제어하기 위해 제한된 유연성만을 제공한다. 기존의 코더들은 서브 프레임/서브 픽처 레벨에서 입력 데이터의 단일 특성만을 양자화할 수 있는데- 변환 계수들의 양자화 -, 이는 블록 또는 매크로블록 레벨에서 수행된다. 일부 유형들의 양자화는 인-루프에서 전혀 수행되지 않으며, 서브 프레임 레벨들에서 제어될 수 없다. 따라서, 본 발명자들은 비디오 코더들이 다수의 차원들을 따라 입력 이미지 데이터를 양자화하고, 서브 프레임 레벨들에서 그들 차원들에 대한 양자화 파라미터들을 선택하게 하는 코딩 기법들에 대한 필요성을 인지한다.
도 1은 본 발명의 일 실시예에 따른 비디오 전달 시스템의 단순화된 블록도이다.
도 2는 본 발명의 일 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 3은 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 4는 예시적인 픽셀 블록에 의해 도 2의 코딩 시스템 및 도 3의 디코딩 시스템에 따라 수행되는 프로세싱을 예시한다.
도 5는 본 발명의 일 실시예에 따른 디코딩 방법을 예시한다.
도 6은 본 발명의 일 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 7은 도 6의 코딩 시스템과 동작가능한 디코딩 시스템의 기능적 블록도이다.
도 8은 본 발명의 다른 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 9는 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 11은 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 12 및 도 13은 본 발명의 실시예들에 따른, 프레임들에 대한 양자화의 예시적인 선택들을 예시한다.
도 2는 본 발명의 일 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 3은 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 4는 예시적인 픽셀 블록에 의해 도 2의 코딩 시스템 및 도 3의 디코딩 시스템에 따라 수행되는 프로세싱을 예시한다.
도 5는 본 발명의 일 실시예에 따른 디코딩 방법을 예시한다.
도 6은 본 발명의 일 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 7은 도 6의 코딩 시스템과 동작가능한 디코딩 시스템의 기능적 블록도이다.
도 8은 본 발명의 다른 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 9는 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 코딩 시스템의 기능적 블록도이다.
도 11은 본 발명의 일 실시예에 따른 디코딩 시스템의 기능적 블록도이다.
도 12 및 도 13은 본 발명의 실시예들에 따른, 프레임들에 대한 양자화의 예시적인 선택들을 예시한다.
본 발명의 실시예들은 다수의 차원들을 따라 입력 비디오를 양자화하는 비디오 코딩 및 디코딩 기법들을 제공한다. 이러한 기법들에 따르면, 픽셀 잔차(pixel residual)들이 입력 데이터의 어레이와 예측 데이터의 어레이의 비교로부터 생성될 수 있다. 픽셀 잔차들은 제1 차원에서 양자화될 수 있다. 양자화 후에, 양자화된 픽셀 잔차들은 변환 계수들의 어레이로 변환될 수 있다. 변환 계수들은 제2 차원에서 양자화되고 엔트로피 코딩될 수 있다. 디코딩 기법들은 이러한 프로세스들을 반전시킨다. 또 다른 실시예들에서, 다수의 양자화기들이 변환 스테이지의 상류에 병렬 또는 캐스케이드(cascade)로 제공될 수 있는데, 이는 압축 효율과 복원된 비디오의 품질이라는 경쟁적 이해관계의 균형을 맞추기 위한 노력으로 비디오 코더들에게 데이터를 상이한 차원들로 양자화하기 위한 더 큰 유연성을 제공한다. 다양한 양자화기들에 대한 파라미터 선택이 서브-프레임 세분성(granularity)들로 이루어질 수 있다.
도 1(a)는 본 발명의 실시예에 따른 비디오 전달 시스템(100)의 단순화된 블록도를 예시한다. 시스템(100)은 네트워크를 통해 상호접속되는 복수의 단말기들(110, 150)을 포함할 수 있다. 단말기들(110, 150)은 네트워크를 통해 그들의 상대방들로의 송신을 위해 비디오 데이터를 코딩할 수 있다. 따라서, 제1 단말기(110)는 비디오 데이터를 로컬적으로 캡처하고, 비디오 데이터를 코딩하고, 코딩된 비디오 데이터를 채널을 통해 상대방 단말기(150)로 송신할 수 있다. 수신 단말기(150)는 코딩된 비디오 데이터를 수신하고, 그것을 디코딩하고, 그것을 예를 들어, 단말기(150)에서의 디스플레이 상에 로컬적으로 렌더링할 수 있다. 단말기들이 비디오 데이터의 양방향 교환에 관여하면, 단말기(150)는 비디오 데이터를 로컬적으로 캡처하고, 비디오 데이터를 코딩하고, 코딩된 비디오 데이터를 다른 채널을 통해 상대방 단말기(110)에 송신할 수 있다. 수신 단말기(110)는 단말기(150)로부터 송신된 코딩된 비디오 데이터를 수신하고, 그것을 디코딩하고, 예를 들어 그 자신의 디스플레이 상에 로컬적으로 렌더링할 수 있다. 기술된 프로세스들은 프레임 및 필드 픽처 코딩 둘 모두에서 동작할 수 있지만, 간략함을 위해, 본 논의는 일체형 프레임들과 관련하여 기법들을 설명할 것이다.
비디오 코딩 시스템(100)은 다양한 애플리케이션들에서 사용될 수 있다. 제1 애플리케이션에서, 단말기들(110, 150)은 코딩된 비디오의 실시간 양방향 교환을 지원하여 그들 사이에 화상 회의 세션을 구축할 수 있다. 다른 애플리케이션에서, 단말기(110)는 사전생성된 비디오(예를 들어, 텔레비전 또는 영화 프로그래밍)를 코딩하고, 하나 또는 종종 많은 다운로드 클라이언트들(예컨대, 단말기(150))로의 전달을 위해 코딩된 비디오를 저장할 수 있다. 따라서, 코딩되고 있는 비디오는 라이브(live)이거나 사전생성될 수 있고, 단말기(110)는 미디어 서버로서 작용하여, 일-대-일(one-to-one) 또는 일-대-다(one-to-many) 분포 모델에 따라 코딩된 비디오를 전달할 수 있다. 본 논의의 목적을 위해, 비디오의 유형 및 비디오 분포 스킴들은 달리 언급되지 않는 한 중요하지 않다.
도 1(a)에서, 단말기들(110, 150)은 스마트폰들 및 태블릿 컴퓨터들로서 각각 예시되어 있지만, 본 발명의 원리는 그렇게 제한되지는 않는다. 본 발명의 실시예들은 또한 컴퓨터들(데스크톱 컴퓨터 및 랩톱 컴퓨터 둘 모두), 컴퓨터 서버들, 미디어 플레이어들, 전용 화상 회의 장비 및/또는 전용 비디오 인코딩 장비를 이용한 애플리케이션에서 찾아진다.
네트워크는 예를 들어 유선 및/또는 무선 통신 네트워크들을 포함한, 단말기들(110, 150) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크들을 나타낸다. 통신 네트워크는 회선 교환형(circuit-switched) 또는 패킷 교환형(packet-switched) 채널들에서 데이터를 교환할 수 있다. 대표적인 네트워크들에는 원격 통신망들(telecommunications networks), 근거리 통신망들(local area networks), 광역 통신망들(wide area networks) 및/또는 인터넷이 포함된다. 본 논의의 목적을 위해, 네트워크의 아키텍처 및 토폴로지는 달리 언급되지 않는 한 본 발명의 동작에 중요하지 않다.
도 1(b)는 인코딩 단말기의 컴포넌트들을 예시하는 기능적 블록도이다. 인코딩 단말기는 비디오 소스(130), 프리프로세서(pre-processor)(135), 코딩 시스템(140), 및 송신기(150)를 포함할 수 있다. 비디오 소스(130)는 코딩될 비디오를 공급할 수 있다. 비디오 소스(130)는 로컬 환경의 이미지 데이터를 캡처하는 카메라 또는 일부 다른 소스로부터의 비디오를 저장하는 저장 디바이스로서 제공될 수 있다. 프리프로세서(135)는 코딩을 위해 비디오 데이터를 준비시키기 위해, 코딩될 비디오에 대한 신호 조절 동작들을 수행할 수 있다. 예를 들어, 프리프로세서(135)는 소스 비디오의 프레임 레이트, 프레임 해상도, 및 다른 속성들을 변경할 수 있다. 프리프로세서(135)는 또한 소스 비디오에 대한 필터링 동작들을 수행할 수 있다.
코딩 시스템(140)은 비디오에 대한 코딩 동작들을 수행하여 그의 대역폭을 감소시킬 수 있다. 전형적으로, 코딩 시스템(140)은 소스 비디오 내에서 시간적 및/또는 공간적 리던던시(redundancy)들을 활용한다. 예를 들어, 코딩 시스템(140)은 비디오 프레임 또는 필드 픽처들이 서브 유닛들(편의상 "픽셀 블록들"로 지칭됨)로 파싱되는 모션 보상형 예측 코딩을 수행할 수 있으며, 개별 픽셀 블록들은 이전에 코딩된 비디오 데이터로부터 도출되는 예측된 픽셀 블록들에 대해 차분적으로 코딩된다. 주어진 픽셀 블록은 다음과 같은 다양한 예측 코딩 모드들 중 임의의 하나에 따라서 코딩될 수 있다:
입력 픽셀 블록이 이전에 코딩/디코딩된 여러 개의 프레임들로부터의 데이터뿐만 아니라, 잠재적으로는 현재/공통 프레임으로부터의 데이터에 대해서도 차분적으로 코딩되는 다중-가설 인터-인트라 코딩.
픽셀 블록들은 또한 앞서 논의된 Transform Skip 및 RRU 코딩 모드들과 같은 다른 코딩 모드들에 따라 코딩될 수 있다.
코딩 시스템(140)은 코더(142), 디코더(143), 인-루프 필터(144), 픽처 버퍼(145), 및 예측기(146)를 포함할 수 있다. 코더(142)는 예측기(146)에 의해 공급되는 예측된 픽셀 블록 데이터를 사용하여 차분 코딩 기법들을 입력 픽셀 블록에 적용할 수 있다. 디코더(143)는 코더(142)에 의해 적용되는 차분 코딩 기법들을 기준 프레임들로 지정된 코딩된 프레임들의 서브세트로 반전시킬 수 있다. 인-루프 필터(144)는 디코더(143)에 의해 생성되는 재구성된 기준 프레임들에 필터링 기법들을 적용할 수 있다. 픽처 버퍼(145)는 예측 동작들에 사용하기 위해 재구성된 기준 프레임들을 저장할 수 있다. 예측기(146)는 픽처 버퍼에 저장된 기준 프레임들 내로부터 입력 픽셀 블록들에 대한 데이터를 예측할 수 있다.
송신기(150)는 코딩된 비디오 데이터를 채널(CH)을 통해 디코딩 단말기로 송신할 수 있다.
도 1(c)는 본 발명의 일 실시예에 따른 디코딩 단말기의 컴포넌트들을 예시하는 기능적 블록도이다. 디코딩 단말기는 채널로부터 코딩된 비디오 데이터를 수신하기 위한 수신기(160), 코딩된 데이터를 디코딩하는 비디오 디코딩 시스템(170); 포스트프로세서(post-processor)(180), 및 비디오 데이터를 소비하는 비디오 싱크(190)를 포함할 수 있다.
수신기(160)는 네트워크로부터 데이터 스트림을 수신할 수 있고, 데이터 스트림의 컴포넌트들을 단말기(200) 내의 적절한 유닛들로 라우팅할 수 있다. 비록 도 1(b) 및 도 1(c)는 비디오 코딩 및 디코딩을 위한 기능 유닛들을 예시하며, 단말기들(110, 120)은 전형적으로 비디오 및 아마도 다른 프로세싱 유닛들(도시되지 않음)과 연관되는 오디오 데이터를 위한 코딩/디코딩 시스템들을 포함할 것이다. 따라서, 수신기(160)는 코딩된 비디오 데이터를 데이터 스트림의 다른 요소들로부터 파싱하고 이를 비디오 디코더(170)로 라우팅할 수 있다.
비디오 디코더(170)는 코딩 시스템(140)에 의해 수행된 코딩 동작들을 반전시키는 디코딩 동작들을 수행할 수 있다. 비디오 디코더는 디코더(172), 인-루프 필터(173), 픽처 버퍼(174), 및 예측기(175)를 포함할 수 있다. 디코더(172)는 코딩된 프레임들에 대해, 코더(142)에 의해 적용된 차분 코딩 기법들을 반전시킬 수 있다. 인-루프 필터(144)는 디코더(172)에 의해 생성되는 재구성된 프레임 데이터에 필터링 기술을 적용할 수 있다. 예를 들어, 인-루프 필터(144)는 다양한 필터링 동작들(예컨대, 디블록킹(de-blocking), 디링잉(de-ringing) 필터링, 샘플 적응형 오프셋 프로세싱 등)을 수행할 수 있다. 필터링된 프레임 데이터는 디코딩 시스템으로부터 출력될 수 있다. 픽처 버퍼(174)는 예측 동작들에 사용하기 위해, 재구성된 기준 프레임들을 저장할 수 있다. 예측기(175)는 코딩된 비디오 데이터에 제공된 예측 기준 데이터에 따라 픽처 버퍼에 의해 저장된 기준 프레임들 내로부터 입력 픽셀 블록들에 대한 데이터를 예측할 수 있다.
포스트프로세서(180)는 재구성된 비디오 데이터를 디스플레이를 위해 조절하는 동작들을 수행할 수 있다. 예를 들어, 포스트프로세서(180)는 다양한 필터링 동작들(예컨대, 디블록킹, 디링잉 필터링 등)을 수행할 수 있으며, 이들은 코딩/디코딩 프로세스에 의해 생성되는 출력 비디오 내의 시각적 아티팩트가 보이지 않게 할 수 있다. 포스트프로세서(180)는 또한 비디오 싱크(190)의 요건들에 부합하도록 재구성된 비디오의 해상도, 프레임 레이트, 컬러 공간 등을 변경할 수 있다.
비디오 싱크(190)는 재구성된 비디오를 소비할 수 있는 디코딩 단말기에서의 다양한 하드웨어 및/또는 소프트웨어 컴포넌트들을 나타낸다. 비디오 싱크(190)는 전형적으로, 재구성된 비디오가 렌더링될 수 있는 하나 이상의 디스플레이 디바이스들을 포함할 수 있다. 대안적으로, 비디오 싱크(190)는 이후 사용을 위해 재구성된 비디오를 저장하는 메모리 시스템으로 나타낼 수 있다. 비디오 싱크(190)는 또한 재구성된 비디오 데이터를 애플리케이션 프로그램에 제공된 제어들에 따라 프로세싱하는 하나 이상의 애플리케이션 프로그램들을 포함할 수 있다. 일부 실시예들에서, 비디오 싱크는 재구성된 비디오를 디코딩 단말기와는 별개인 다른 디바이스 상의 디스플레이로 송신하는 송신 시스템을 나타낼 수 있는데; 예를 들어, 노트북 컴퓨터에 의해 생성된 재구성된 비디오가 뷰잉(viewing)을 위해 대형 평판 디스플레이로 송신될 수 있다.
인코딩 단말기 및 디코딩 단말기의 전술한 논의(도 1(b) 및 도 1(c))는 단말기(110)로부터 단말기(150)로와 같이, 단말기들 사이에서 단일 방향으로 비디오 데이터를 코딩 및 디코딩하기 위해 수행되는 동작들을 예시한다(도 1(a)). 비디오의 양방향 교환이 단말기들(110, 150)사이에서 수행되는 애플리케이션들에서, 각각의 단말기(110, 150)는 인코딩 단말기와 연관된 기능 유닛들을 가질 것이고(도 1(b)), 각각의 단말기(110, 150)는 또한 디코딩 단말기와 연관된 기능 유닛들을 가질 것이다(도 1(c)). 실제로, 소정의 애플리케이션들에서, 단말기들(110, 150)은 코딩된 비디오의 다수의 스트림들을 단일 방향으로 교환할 수 있으며, 이 경우에 단일 단말기(말하자면, 단말기(110))는 내부에 제공된 인코딩 단말기(도 1(b))의 다수의 인스턴스(instance)들을 가질 것이다. 그러한 구현예들은 본 논의와 완전히 일치한다.
도 2는 본 발명의 일 실시예에 따른 코딩 시스템(200)의 기능적 블록도이다. 시스템(200)은 픽셀 블록 코더(210), 픽셀 블록 디코더(220), 인-루프 필터 시스템(230), 예측 버퍼(240), 예측기(250), 제어기(260), 및 신택스 유닛(270)을 포함할 수 있다. 픽셀 블록 코더(210)와 픽셀 블록 디코더(220) 및 예측기(250)는 프레임의 개별 픽셀 블록들에 대해 반복적으로 동작할 수 있다. 예측기(250)는 새롭게 제시된 입력 픽셀 블록의 코딩 동안 사용하기 위한 데이터를 예측할 수 있다. 픽셀 블록 코더(210)는 예측 코딩 기법들에 의해 새로운 픽셀 블록을 코딩하고, 코딩된 픽셀 블록 데이터를 신택스 유닛(270)에 제시할 수 있다. 픽셀 블록 디코더(220)는 코딩된 픽셀 블록 데이터를 디코딩하여, 그로부터 디코딩된 픽셀 블록 데이터를 생성할 수 있다. 인-루프 필터(230)는 픽셀 블록 디코더(220)에 의해 획득된 디코딩된 픽셀 블록들로부터 어셈블된 디코딩된 프레임 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 필터링된 프레임 데이터는 예측 버퍼(240)에 저장되고 이후 수신되는 픽셀 블록의 예측의 소스로 사용될 수 있다. 신택스 유닛(270)은 조정(governing) 코딩 프로토콜을 따르는 코딩된 픽셀 블록 데이터로부터 데이터 스트림을 어셈블할 수 있다.
픽셀 블록 코더(210)는 감산기(212), 다운스케일러(213), 잔차 양자화기(214), 변환 유닛(215), 계수 양자화기(216), 및 엔트로피 코더(217)를 포함할 수 있다. 픽셀 블록 코더(210)는 감산기(212)에서 입력 데이터의 픽셀 블록들을 수용할 수 있다. 감산기(212)는 예측기(250)로부터 예측된 픽셀 블록들을 수신하고, 그로부터 입력 픽셀 블록과 예측된 픽셀 블록 사이의 차이를 나타내는 픽셀 잔차들의 어레이를 생성할 수 있다. 다운스케일러(213)는 감산기(212)로부터 출력되는 잔차 데이터에 대해 공간 해상도 감소를 수행할 수 있다. 잔차 양자화기(214)는 다운스케일러(213)로부터 출력되는 샘플 데이터의 양자화를 수행할 수 있다. 양자화기(214)는 균일하거나 불균일한 양자화기일 수 있다. 변환 유닛(215)은 잔차 양자화기(214)로부터 출력된 샘플 데이터에 변환을 적용하여 데이터를 픽셀 도메인으로부터 변환 계수들의 도메인으로 변환할 수 있다. 계수 양자화기(216)는 변환 유닛(215)에 의해 출력되는 변환 계수들의 양자화를 수행할 수 있다. 양자화기(216)는 균일하거나 불균일한 양자화기일 수 있다. 엔트로피 코더(217)는 예를 들어 가변 길이 코드 워드들에 의해 출력을 코딩함으로써 계수 양자화기의 출력의 대역폭을 감소시킬 수 있다.
동작 동안, 다운스케일러(213), 잔차 양자화기(214) 및 계수 양자화기(216)는 각각의 유닛의 동작을 조정하는 코딩 파라미터들에 따라 동작할 수 있다. 예를 들어, 다운스케일러(213)는 그의 입력 픽셀 블록에 적용하기 위한 다운스케일링의 레벨을 결정하는 해상도 양자화 파라미터(QR)에 따라 동작할 수 있다. 유사하게, 계수 양자화기(214)는 양자화기(214)에 입력된 잔차 샘플들에 적용하기 위한 양자화의 레벨을 결정하는 계수 양자화 파라미터(QSP)에 따라 동작할 수 있다. 계수 양자화기(216)는 계수 양자화기(216)에 입력되는 변환 계수들에 적용하기 위한 양자화의 레벨을 결정하는 계수 양자화 파라미터(QP)에 따라 동작할 수 있다. 이러한 양자화기들은 양자화기들이 균일하거나 불균일한 양자화기들인지 특정하는 신호 모드(MQP 및 MQR)에 따라 동작할 수 있다. 따라서, 이러한 양자화기들(213, 214, 216) 각각은 이미지 데이터의 상이한 특성들을 양자화하기 때문에 상이한 차원들에서 동작한다. 양자화된 차원들은 서로 직교할 필요는 없다. 양자화 파라미터들(QR, QSP, 및 QP)은 제어기(260)에 의해 결정될 수 있고, 코딩 시스템(200)에 의해 출력되는 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다.
일 실시예에서, 양자화 파라미터들(QR, QSP, 및 QP)은, 예를 들어 픽셀-도메인 픽셀 블록 내의 상이한 픽셀 위치들에 걸쳐 또는 변환-도메인 픽셀 블록 내의 상이한 계수 위치들에 걸쳐 변할 수 있는 다중값 양자화 파라미터들로서 그들 각각의 입력 데이터에 적용될 수 있다. 따라서, 양자화 파라미터들(QR, QSP, 및 QP)은 양자화 파라미터들의 어레이들로서 제공될 수 있다.
변환 유닛(215)은 이벤트 보증으로서 다양한 변환 모드들에서 동작할 수 있다. 예를 들어, 변환 유닛(215)은 DCT, DST, 월시-아다마르 변환, 하르 변환, 다우비치 웨이블릿(Daubechies wavelet) 변환 등을 적용하도록 선택될 수 있다. 일 실시예에서, 제어기(260)는 변환 유닛(215)에 의해 적용될 코딩 모드(M)를 선택할 수 있고, 이에 따라 변환 유닛(215)을 구성할 수 있다. 코딩 모드(M)는 또한 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다.
픽셀 블록 디코더(220)는 픽셀 블록 코더(210)의 코딩 동작들을 반전시킬 수 있다. 예를 들어, 픽셀 블록 디코더(220)는 계수 역양자화기(222), 역변환 유닛(223), 잔차 역양자화기(224), 업스케일러(225), 및 가산기(226)를 포함할 수 있다. 픽셀 블록 디코더(220)는 계수 양자화기(216)의 출력으로부터 그의 입력 데이터를 취할 수 있다. 허용가능하지만, 픽셀 블록 디코더(220)는 엔트로피 코딩이 무손실 이벤트이기 때문에 엔트로피 코딩된 데이터의 엔트로피 디코딩을 수행할 필요가 없다. 계수 역양자화기(222)는 픽셀 블록 코더(210)의 계수 양자화기(216)의 동작들을 반전시킬 수 있다. 역양자화기(222)는 디코딩된 신호(MQP)에 의해 특정된 바와 같이 균일하거나 불균일한 역양자화를 수행할 수 있다. 유사하게, 역변환 유닛(223), 잔차 역양자화기(224), 및 업스케일러(225)는 변환 유닛(215), 잔차 양자화기(214), 및 다운스케일러(213)의 동작들을 각각 반전시킬 수 있다. 그들은 픽셀 블록 코더(210) 내의 그들의 상대방들과 동일한 양자화 파라미터들(QR, QSP, 및 QP) 및 변환 모드(M)를 사용할 수 있다. 잔차 역양자화기(224)는 디코딩된 신호(MQR)에 의해 특정된 바와 같이 균일하거나 불균일한 역양자화를 수행할 수 있다. 다운스케일러(213), 잔차 양자화기(214), 및 계수 양자화기(216)의 동작들은 다양한 경우들에서 데이터를 절단할(truncate) 가능성이 있으며, 따라서 계수 역양자화기(222), 잔차 역양자화기(224) 및 업스케일러(225)에 의해 복구된 데이터는 픽셀 블록 코더(210) 내의 그들의 상대방들에 제시된 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
가산기(226)는 감산기(212)에 의해 수행되는 동작들을 반전시킬 수 있다. 가산기는 예측기(250)로부터 감산기(212)가 잔차 신호들을 생성하는 데 사용했던 것과 동일한 예측 픽셀 블록을 수신할 수 있다. 가산기(226)는 예측 픽셀 블록을 업스케일러(225)에 의해 출력되는 재구성된 잔차 값들에 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
인-루프 필터(230)는 복구된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예를 들어, 인-루프 필터(230)는 디블록킹 필터(232) 및 샘플 적응형 오프셋("SAO") 필터(233)를 포함할 수 있다. 디블록킹 필터(232)는, 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들(seams)에서의 데이터를 필터링할 수 있다. SAO 필터들은, 예를 들어, 에지 방향/형상 및/또는 픽셀/컬러 컴포넌트 레벨에 기초하여, SAO "유형"에 따라 오프셋들을 픽셀 값들에 추가할 수 있다. 인-루프 필터(230)는 제어기(260)에 의해 선택되는 파라미터들에 따라 동작할 수 있다.
예측 버퍼(240)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 상이한 유형들의 예측 데이터가 상이한 예측 모드들에 대해 예측기(250)에 이용가능하게 된다. 예를 들어, 입력 픽셀 블록에 대해, 인트라 예측은 입력 픽셀 블록이 위치되는 것과 동일한 프레임의 디코딩된 데이터로부터 예측 기준을 취한다. 따라서, 예측 버퍼(240)는 코딩될 때 각각의 프레임의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 동일한 입력 픽셀 블록에 대해, 인터 예측은 "기준 프레임들"로 지정된 이전에 코딩 및 디코딩된 프레임(들)으로부터 예측 기준을 취할 수 있다. 따라서, 예측 버퍼(240)는 이러한 디코딩된 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(250)는 잔차들을 생성하는 데 사용하기 위해 예측 데이터를 픽셀 블록 코더(210)에 공급할 수 있다. 예측기(250)는 인터 예측기(252), 인트라 예측기(253) 및 모드 결정 유닛(254)을 포함할 수 있다. 인터 예측기(252)는 코딩될 새로운 픽셀 블록을 나타내는 픽셀 블록 데이터를 수신할 수 있고, 입력 픽셀 블록을 코딩하는 데 사용하기 위해 기준 프레임(들)으로부터의 픽셀 블록 데이터에 대해 예측 버퍼(240)를 검색할 수 있다. 인터 예측기(252)는 P 모드 코딩 및 B 모드 코딩과 같은 복수의 예측 모드들을 지원할 수 있다. 인터 예측기(252)는 인터 예측 모드를 선택하고, 코딩되고 있는 입력 픽셀 블록에 가장 근접한 매치를 제공하는 예측 데이터를 공급할 수 있다. 인터 예측기(252)는 모션 벡터들과 같은 예측 기준 표시자들을 생성하여, 어느 기준 프레임들의 어느 부분(들)이 입력 픽셀 블록에 대한 예측의 소스(들)로 선택되었는지를 식별할 수 있다.
인트라 예측기(253)는 인트라(I) 모드 코딩을 지원할 수 있다. 인트라 예측기(253)는 코딩되는 픽셀 블록과 동일한 프레임으로부터의 코딩된 픽셀 블록 데이터 중에서 입력 픽셀 블록에 가장 근접한 매치를 제공하는 것을 검색할 수 있다. 인트라 예측기(253)는 또한 예측 기준 표시자들을 생성하여 프레임의 어느 부분이 입력 픽셀 블록에 대한 예측의 소스로서 선택되었는지를 식별할 수 있다.
모드 결정 유닛(254)은 입력 픽셀 블록에 적용될 최종 코딩 모드를 선택할 수 있다. 전형적으로, 모드 결정 유닛(254)은 목표 비트레이트를 고려하여 비디오가 디코딩될 때 최저 왜곡을 달성할 예측 모드를 선택한다. 코딩 모드들이 특정 채널 거동을 만족시키거나, 랜덤 액세스를 지원하는 것과 같은 코딩 시스템(200)이 준수하는 다른 정책들, 또는 데이터 리프레시 정책들을 만족시키도록 선택되는 경우 예외들이 발생할 수 있다. 모드 결정 유닛(254)은 예측 데이터를 픽셀 블록 코더(210) 및 픽셀 블록 디코더(220)로 출력할 수 있고, 선택된 예측 모드의 식별을 선택된 모드에 대응하는 예측 기준 표시자들과 함께 제어기(260)에 공급할 수 있다.
제어기(260)는 코딩 시스템(200)의 전체 동작을 제어할 수 있다. 제어기(260)는 입력 픽셀 블록들 및 또한 코딩 비트레이트 목표들 및 다른 동작 파라미터들과 같은 외부 제약들의 분석에 기초하여 픽셀 블록 코더(210) 및 예측기(250)에 대한 동작 파라미터들을 선택할 수 있다. 본 논의와 관련된 바와 같이, 다운스케일링 파라미터(QR), 잔차 양자화 파라미터(QSP), 계수 양자화기(QP), 균일하거나 불균일한 양자화기들의 사용, 및/또는 변환 모드(M)와 같은 양자화 파라미터들을 선택하는 경우, 제어기는 그러한 파라미터들을 신택스 유닛(270)에 제공할 수 있으며, 이는 그러한 파라미터들을 나타내는 데이터를 시스템(200)에 의해 출력되는 코딩된 비디오 데이터의 데이터 스트림 내에 포함할 수 있다. 제어기(260)는 또한 하나 이상의 양자화기 유닛들(이를테면, 계수 양자화기(216))에 의해 어떠한 양자화도 적용되지 않아야 한다고 결정할 수 있으며, 이 경우에 제어기(260)는 양자화기를 디스에이블시킬 수 있다. 위에서 논의된 바와 같이, 제어기(260)는 또한 변환 유닛(215)의 동작 모드를 결정할 수 있다.
논의된 바와 같이, 양자화 파라미터들(QR, QSP, 및/또는 QP)은 픽셀 블록의 모든 픽셀들에 균일하게 적용되는 단일 값들로 제공될 필요는 없으며, 대신에, 그 값들이 각각의 픽셀 위치에서 변하는 양자화 파라미터들의 각각의 어레이들로서 제공될 수 있다. 하나의 실시예에서, 각각 상이한 픽셀 위치들에서 각각의 양자화 값들을 갖는 다양한 양자화기 어레이들이 사전결정된 프로토콜에 따라 정의될 수 있고, 동작 동안, 제어기(260)는 인덱스 또는 다른 식별자를 제공함으로써 어느 어레이를 사용할지를 식별할 수 있다.
다른 실시예에서, (단일 값이거나 값들의 어레이이든 간에) 양자화 파라미터들(QR, QSP, 및/또는 QP)은 이미지 데이터의 특성들로부터 도출될 수 있다. 예를 들어, 양자화 파라미터들(QSP)은 픽셀 잔차들에 대응하는 예측 픽셀 값들의 세기에 기초하여 선택될 수 있다. 이 경우에, QSP의 값은 예측기의 세기 값에 따라 모든 픽셀에 대해 변할 수 있는데, 예를 들어, 값은 더 작은 예측기 값을 갖는 샘플보다 더 큰 예측기 값을 갖는 샘플에 대해 더 높을 수 있다. 이러한 양자화 파라미터들은 선형, 즉 스케일러, 공식을 사용하여 정의될 수 있거나, 더 복잡한 비-선형/비-균일 공식을 사용할 수 있다.
하나의 실시예에서, 양자화기는 형태 q(i,j) = fk(p(i,j), i, j)의 사전결정된 함수에 의해 표현될 수 있으며, 여기서 q는 사안이 되는 양자화기를 나타내고, i 및 j는 양자화되는 픽셀 블록 내의 값의 위치들(픽셀-도메인 값 또는 변환-도메인 값)을 나타내고, p(i,j)는 양자화되는 픽셀 세기 값을 나타내고, fk는 p, i 및 j 내지 q에 관한 함수를 나타낸다. 시그널링의 일부로서, 제어기(260)는 사용되는 함수를 식별하는 데이터, 및 각각의 함수가 동작하는 임의의 다른 데이터(예를 들어, 각각의 함수에서 수반될(at work) 수 있는 임의의 스케일러들 및 오프셋들)를 제공할 수 있다.
양자화 프로세스는 또한 룩업 테이블 형태(도시되지 않음)를 사용하여 특정될 수 있다. 룩업 테이블 형태는 룩업 테이블 내에 포함되지 않은 소정 값들의 양자화/역양자화 프로세스를 결정하기 위한 보간 기법들의 사용을 수반할 수 있다. 대안적으로, 양자화 파라미터들(QR 및/또는 QSP, QP)은 이전에 코딩된 이웃 픽셀 블록들의 양자화 파라미터들로부터 예측될 수 있다. 추가의 실시예에서, 양자화 파라미터들(QR 및/또는 QSP, QP)의 제1 세트는 코딩 시퀀스의 더 높은 레벨 구조(예를 들어, 프레임 또는 슬라이스 헤더)에서 시그널링될 수 있고, 구조의 픽셀 블록들이 코딩됨에 따라 양자화 파라미터들(QR 및/또는 QSP, QP)의 시그널링된 세트에 대한 변경들이 픽셀 블록x픽셀 블록 기준으로(pixel block-by-pixel block basis) 시그널링될 수 있다.
동작 동안, 제어기(260)는 양자화기들(213, 214, 및 216) 및 변환 유닛(215)의 동작 파라미터들을 이미지 데이터의 상이한 세분성들로 변경할 수 있으며, 픽셀 블록별 기준으로 또는 더 큰 세분성(예를 들어, 프레임별, 슬라이스별, 최대 코딩 유닛(largest coding unit, "LCU")별 또는 다른 영역)으로 변경할 수 있다. 일 실시예에서, 양자화 파라미터들은 코딩된 프레임 내에서 픽셀별 기준으로 변경될 수 있다.
추가적으로, 논의된 바와 같이, 제어기(260)는 인-루프 필터(230) 및 예측 유닛(250)의 동작을 제어할 수 있다. 그러한 제어는 예측 유닛(250)에 대한 모드 선택(람다, 테스트될 모드들, 검색 윈도우들, 왜곡 전략들 등), 및 인-루프 필터(230)에 대한 필터 파라미터들, 재정렬 파라미터들, 가중된 예측 등의 선택을 포함할 수 있다.
도 3은 본 발명의 일 실시예에 따른 디코딩 시스템(300)의 기능적 블록도이다. 디코딩 시스템(300)은 신택스 유닛(310), 픽셀 블록 디코더(320), 인-루프 필터(330), 예측 버퍼(340) 및 예측기(350)를 포함할 수 있다. 신택스 유닛(310)은 코딩된 비디오 데이터 스트림을 수신할 수 있고, 코딩된 데이터를 그의 구성 부분들로 파싱할 수 있다. 코딩 파라미터들을 나타내는 데이터는 제어기(360)에 제공될 수 있는 한편, 코딩된 잔차들을 나타내는 데이터(도 2의 픽셀 블록 코더(210)에 의해 출력된 데이터)는 픽셀 블록 디코더(320)에 제공될 수 있다. 픽셀 블록 디코더(320)는 픽셀 블록 코더(도 2)에 의해 제공되는 코딩 동작들을 반전시킬 수 있다. 인-루프 필터(330)는 재구성된 픽셀 블록 데이터를 필터링할 수 있다. 재구성된 픽셀 블록 데이터는 디스플레이를 위한 프레임들로 어셈블되고, 디코딩 시스템(200)으로부터 출력 비디오로서 출력될 수 있다. 프레임들은 또한 예측 동작들에 사용하기 위해 예측 버퍼(340)에 저장될 수 있다. 예측기(350)는 코딩된 비디오 데이터 스트림 내에 수신된 코딩 데이터에 의해 결정되는 바에 따라 예측 데이터를 픽셀 블록 디코더(320)에 공급할 수 있다.
픽셀 블록 디코더(320)는 엔트로피 디코더(321), 계수 역양자화기(322), 역변환 유닛(323), 잔차 역양자화기(324), 업스케일러(325), 및 가산기(326)를 포함할 수 있다. 엔트로피 디코더(321)는 엔트로피 코더(217)(도 2)에 의해 수행되는 프로세스들을 반전시키기 위해 엔트로피 디코딩을 수행할 수 있다. 계수 역양자화기(322)는 픽셀 블록 코더(210)(도 2)의 계수 양자화기(216)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛(323), 잔차 역양자화기(324), 및 업스케일러(325)는 변환 유닛(215), 잔차 양자화기(214), 및 다운스케일러(213)(도 2)의 동작들을 각각 반전시킬 수 있다. 그들은 양자화 파라미터들(QR, QSP, QP)뿐만 아니라, 코딩된 비디오 데이터 스트림 내에 제공되는 양자화기 모드 유형들(MQP 및 MQR)을 사용할 수 있다. 다운스케일러(213), 잔차 양자화기(214), 및 계수 양자화기(216)의 동작들은 다양한 경우들에서 데이터를 절단하기 때문에, 계수 역양자화기(322), 잔차 역양자화기(324), 및 업스케일러(325)에 의해 복구된 데이터는 픽셀 블록 코더(210)(도 2) 내의 그들의 상대방들에 제시된 입력 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
가산기(326)는 감산기(212)(도 2)에 의해 수행되는 동작들을 반전시킬 수 있다. 가산기는 코딩된 비디오 데이터 스트림 내의 예측 기준들에 의해 결정되는 바에 따라 예측기(350)로부터 예측 픽셀 블록을 수신할 수 있다. 가산기(326)는 예측 픽셀 블록을 업스케일러(325)에 의해 출력되는 재구성된 잔차 값들에 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
인-루프 필터(330)는 재구성된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예시된 바와 같이, 인-루프 필터(330)는 디블록킹 필터(332) 및 SAO 필터(333)를 포함할 수 있다. 디블록킹 필터(332)는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터들은, 예를 들어, 에지 방향/형상 및/또는 픽셀 레벨에 기초하여, SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 다른 유형들의 인-루프 필터들이 또한 유사한 방식으로 사용될 수 있다. 디블록킹 필터(332) 및 SAO 필터(333)의 동작은 이상적으로는 코딩 시스템(200)(도 2) 내의 그들의 상대방들의 동작을 모방할 것이다. 따라서, 송신 에러들 또는 다른 이상들의 부재 시, 디코딩 시스템(300)의 인-루프 필터(330)로부터 획득된 디코딩된 프레임 데이터는 코딩 시스템(200)(도 2)의 인-루프 필터(230)로부터 획득된 디코딩된 프레임 데이터와 동일할 것이며; 이러한 방식으로, 코딩 시스템(200) 및 디코딩 시스템(300)은 그들 각각의 예측 버퍼들(240, 340)에 공통 세트의 기준 픽처들을 저장해야 한다.
예측 버퍼(340)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 예측 버퍼(340)는 인트라 예측에 사용하기 위해 코딩될 때 각각의 프레임의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 예측 버퍼(340)는 또한 디코딩된 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(350)는 예측 데이터를 픽셀 블록 디코더(320)에 공급할 수 있다. 예측기(350)는 코딩된 비디오 데이터 스트림 내에 공급된 예측 기준 표시자들에 의해 결정되는 바에 따라 예측된 픽셀 블록 데이터를 공급할 수 있다.
제어기(360)는 코딩 시스템(300)의 전체 동작을 제어할 수 있다. 제어기(360)는 코딩된 비디오 데이터 스트림 내에 수신된 파라미터들에 기초하여 픽셀 블록 디코더(320) 및 예측기(350)에 대한 동작 파라미터들을 설정할 수 있다. 본 논의와 관련된 바와 같이, 이러한 동작 파라미터들은 다운스케일링 파라미터(QR), 잔차 양자화 파라미터(QSP) 및/또는 계수 양자화기(QP)와 같은 양자화 파라미터들 및 역변환 유닛(315)에 대한 동작 모드들(M)을 포함할 수 있다. 논의된 바와 같이, 수신된 파라미터들은 이미지 데이터의 다양한 세분성들로 설정될 수 있으며, 예를 들어, 픽셀 블록별 기준, 프레임별 기준, 슬라이스별 기준, LCU별 기준, 또는 입력 이미지에 대해 정의된 다른 유형들의 영역들에 기초하여 설정될 수 있다.
도 4는 예시적인 픽셀 블록에 의해 도 2의 코딩 시스템(200) 및 도 3의 디코딩 시스템(300)에 따라 수행되는 프로세싱을 예시한다. 초기에, 도 4(a)에 도시된 바와 같이, 픽셀 블록(310)은 픽셀들의 어레이(M × N)일 수 있으며, 각각은 컬러 컴포넌트당 비트 깊이(B)로 표현된다. 해상도 양자화(다운스케일링) 후에, 픽셀 블록(320)은 컬러 컴포넌트당 비트 깊이(B)를 여전히 갖는 픽셀들의 어레이(M/QFX × N/QFY)일 수 있다. 계수 양자화 후에, 픽셀 블록(330)은 변경된 비트 깊이를 갖는 픽셀들의 어레이(M/QFX × N/QFY)일 수 있다. 여기서, 샘플 값들은 샘플 정밀 양자화 값(QSP)에 의해 그들의 원래 값들로부터 제산된다. 변환 및 양자화 후에, 픽셀 블록(340)은 그 값들이 양자화 파라미터(QP)에 의해 양자화되었을 변환 계수들의 어레이(M/QFX × N/QFY)일 수 있다.
도 4(b)는 디코딩 동안 코딩된 픽셀 블록에 의해 수행되는 프로세싱을 예시한다. 초기에, 코딩된 픽셀 블록(350)은 그 값들이 도 4(a)에 도시된 양자화 파라미터(QP)에 의해 양자화될 변환 계수들의 어레이(M/QFX × N/QFY)일 수 있다. 역변환 및 양자화 후에, 픽셀 블록(360)은 그 값들이 양자화 파라미터(QP)에 의해 유도된 손실들을 갖는 픽셀 블록(330)의 값들에 대응하는 픽셀들의 어레이(M/QFX × N/QFY)일 수 있다. 샘플 정밀 양자화 후에, 픽셀 블록(370)은 양자화 파라미터(QSP)에 의해 유도된 추가 손실들을 갖긴 하지만, 컬러 컴포넌트당 비트 깊이(B)를 갖는 픽셀들의 어레이(M/QFX × N/QFY)일 수 있다. 역 해상도 양자화(업스케일링) 후에, 픽셀 블록(3870)은 각각이 컬러 컴포넌트당 비트 깊이(B)로 표현되고, 역시 코딩 손실들을 갖는 픽셀들의 어레이(M × N)일 수 있다.
도 4에 예시된 바와 같이, 도 2 및 도 3의 실시예들은 여러 차원들을 따른 이미지 데이터의 양자화를 제공한다. 이 실시예에서, 양자화는 계수 변환들의 양자화에 더하여 이미지 데이터의 해상도 및 비트 깊이에 적용될 수 있다. 따라서, 이러한 기법들은 대역폭 압축을 달성하면서도 코딩 품질을 유지하기 위해 코딩 시스템/디코딩 시스템에 더 큰 유연성을 제공한다.
도 5는 본 발명의 일 실시예에 따른 디코딩 방법(500)을 예시한다. 방법(500)은 픽셀 블록x픽셀 블록 기준으로 코딩된 비디오 데이터에 대해 동작할 수 있다. 방법(500)은 디코딩되는 픽셀 블록을 코딩하기 위해 어떤 코딩 모드(들)가 적용되었는지 결정하기 위해, 코딩된 비디오 데이터를 구비한 메타데이터를 프로세싱할 수 있다(박스 510). 방법은 코딩 모드 데이터로부터, 코딩된 픽셀 블록 잔차들이 변환 블록의 일부인지 여부를 결정할 수 있다(박스 515). 그렇다면, 방법(500)은 코딩된 비디오 데이터를 구비한 양자화 파라미터(QP)에 따라 변환 계수들을 역양자화할 수 있고(박스 520), 코딩된 비디오 데이터에 의해 식별된 변환 모드(M)에 따라 역변환을 적용할 수 있다(박스 525). 양자화 파라미터(QP) 및 변환 모드(M)는 코딩된 비디오 데이터에 의해 명시적으로 또는 암시적으로 식별될 수 있다.
박스(530)에서, 방법(500)은 박스(515)에서 존재하였거나 박스(525)에서 재구성된 잔차 데이터가 예측 데이터의 도메인 내에 있는지 여부를 결정할 수 있다. 그렇지 않다면, 방법(500)은 잔차 데이터를 픽셀 도메인인 예측 데이터의 도메인에 맵핑할 수 있다(박스 535). 그 후에, 또는 잔차 데이터가 이미 예측 데이터의 도메인 내에 있는 것으로 박스(530)에서 결정되었다면, 방법(500)은 박스들(510 내지 535)의 프로세싱에 의해 재구성된 데이터와 예측 데이터를 병합할 수 있다(박스 540).
예측 데이터의 도메인에 대한 잔차 데이터의 맵핑은 픽셀 블록의 코딩 동안 적용된 양자화 동작들을 반전시킴으로써 발생할 수 있다. 도 5는 도 2의 코딩 시스템(200)에 의해 생성된 코딩된 비디오 데이터를 디코딩할 때 채용될 수 있는 예시적인 역양자화 동작들을 예시한다. 따라서, 방법(500)은 잔차 양자화가 적용되는지 여부를 결정할 수 있고(박스 545), 그렇다면, 방법(500)은 코딩된 비디오 데이터를 구비한 파라미터들(QSP)을 사용하여 잔차 양자화를 반전시킬 수 있다(박스 550). 유사하게, 방법(500)은 다운샘플링이 적용되는지 여부(박스 555), 그리고 그렇다면, 다운샘플링이 크로마에만 적용되었는지 아니면 모든 컬러 컴포넌트들에 적용되었는지 결정할 수 있다(박스 560). 다운샘플링이 모든 컴포넌트들에 적용되었다면, 방법(500)은 재구성된 데이터의 모든 컴포넌트들을 업스케일링할 수 있다(박스 565). 다운샘플링이 크로마에만 적용되었다면, 방법(500)은 재구성된 데이터의 크로마 컴포넌트들을 업스케일링할 수 있다(박스 570). 다시, 다운스케일링을 위한 양자화 파라미터들(QR)에는 코딩된 비디오가 명시적으로 또는 암시적으로 제공될 수 있다.
도 6은 본 발명의 일 실시예에 따른 코딩 시스템(600)의 기능적 블록도이다. 시스템(600)은 픽셀 블록 코더(610), 픽셀 블록 디코더(620), 인-루프 필터 시스템들(630.1, 630.2)의 쌍, 예측 버퍼들(640.1, 640.2)의 쌍, 예측 시스템(650), 제어기(660), 및 신택스 유닛(670)을 포함할 수 있다. 이전 실시예에서와 같이, 픽셀 블록 코더(610)와 픽셀 블록 디코더(620) 및 예측 시스템(650)은 이미지 데이터의 개별 픽셀 블록들에 대해 반복적으로 동작할 수 있지만, 인-루프 필터들(630.1, 630.2) 및 예측 버퍼들(640.1, 640.2)은 더 큰 데이터 유닛들에 대해 동작할 수 있다. 예측 시스템(650)은 새로 제시된 입력 픽셀 블록의 코딩 동안 사용하기 위한 데이터를 예측할 수 있다.
픽셀 블록 코더(610)는 예측 코딩 기법들에 의해 새로운 픽셀 블록을 코딩하고, 코딩된 픽셀 블록 데이터를 신택스 유닛(670)에 제시할 수 있다. 신택스 유닛(670)은 코딩된 비디오 데이터 및 다른 소스들(도시되지 않음), 예를 들어 코딩된 오디오 데이터 및/또는 애플리케이션 데이터의 소스들로부터 송신 비트 스트림을 구축할 수 있다. 신택스 유닛(670)은 조정 코딩 프로토콜을 따르는 코딩된 픽셀 블록 데이터로부터 데이터 스트림을 어셈블할 수 있다.
픽셀 블록 디코더(620)는 코딩된 픽셀 블록 데이터를 디코딩하여 그로부터 디코딩된 픽셀 블록 데이터를 생성하는, 픽셀 블록 코더(610)에 로컬적인 디코더일 수 있다. 이 실시예에서, 픽셀 블록 디코더(620)는 디코딩된 픽셀 블록들의 2개의 버전들을 생성할 수 있다. 제1 버전은 예를 들어, 계수 샘플링을 반전시키고, 픽셀 블록 코더(610)에 의해 수행된 계수 변환 프로세스를 반전시키고, 제한된 예측 동작을 수행함으로써, 코딩된 픽셀 블록 데이터의 제한된 디코딩(편의상 "최선 노력(best effort)" 디코딩으로 지칭됨)으로부터 생성될 수 있다. 제2 버전은 예를 들어, 다운샘플링, 잔차 양자화 등을 비롯한 픽셀 블록 코더(610)에 의해 수행된 모든 코딩 프로세스들을 반전시키는 것으로부터 생성될 수 있다("전체 노력(full effort)" 디코딩). 픽셀 블록 디코더(620)는 디코딩된 픽셀 블록들의 2개의 버전들을 각각의 인-루프 필터들(630.1, 630.2)로 출력할 수 있다.
인-루프 필터들(630.1, 630.2) 및 예측 버퍼들(640.1, 640.2)은 쌍을 이루는 관계들로 제공될 수 있다. 제1 인-루프 필터(630.1) 및 예측 버퍼(640.1)는 픽셀 블록 디코더(620)에 의해 수행되는 전체 디코딩 동작들로부터 출력된 디코딩된 픽셀 블록 데이터에 대해 동작할 수 있다. 제2 인-루프 필터(630.2) 및 예측 버퍼(640.2)는 픽셀 블록 디코더(620)에 의해 수행되는 제한된 디코딩 동작들로부터 출력된 디코딩된 픽셀 블록 데이터에 대해 동작할 수 있다. 각각의 경우에, 인-루프 필터들(630.1, 630.2)은 그들 각각의 디코딩된 프레임 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 인-루프 필터들(630.1, 630.2)에 의해 생성된 필터링된 프레임 데이터는 그들의 각각의 예측 버퍼들(640.1, 640.2)에 저장될 수 있으며, 여기서 이들은 이후 수신되는 픽셀 블록들의 예측의 소스들로서 사용될 수 있다.
예측 시스템(650)은 전체 노력 디코딩과 연관된 예측 버퍼(640.1) 내에서 모션 검색을 수행함으로써 입력 픽셀 블록에 대한 예측 데이터를 생성할 수 있다. 예측 시스템(650)은 전체 노력 디코딩 프로세스들에서 사용하기 위해, 예측 데이터를 예측 버퍼(640.1)로부터 픽셀 블록 코더(610)로 그리고 픽셀 블록 디코더(620)로 출력할 수 있다. 예측 시스템(650)은 또한 최선 노력 디코딩에 사용하기 위해 대응하는 픽셀 블록을 예측 버퍼(640.2)로부터 픽셀 블록 디코더(620)로 공급할 수 있다.
픽셀 블록 코더(610)는 감산기(612), 다운스케일러(613), 잔차 양자화기(614), 변환 유닛(615), 계수 양자화기(616), 및 엔트로피 코더(617)를 포함할 수 있다. 픽셀 블록 코더(610)는 감산기(612)에서 입력 데이터의 픽셀 블록들을 수용할 수 있다. 감산기(612)는 예측 시스템(650)으로부터 예측된 픽셀 블록들을 수신하고, 그로부터 입력 픽셀 블록과 예측된 픽셀 블록 사이의 픽셀-단위의(pixel-wise) 차이를 나타내는 픽셀 잔차들의 어레이를 생성할 수 있다. 다운스케일러(613)는 감산기(612)로부터 출력되는 잔차 데이터에 대해 공간 해상도 감소를 수행할 수 있다. 잔차 양자화기(614)는 다운스케일러(613)로부터 출력되는 샘플 데이터의 양자화를 수행할 수 있다. 변환 유닛(615)은 잔차 양자화기(614)로부터 출력된 샘플 데이터에 변환을 적용하여 데이터를 픽셀 도메인으로부터 변환 계수들의 도메인으로 변환할 수 있다. 계수 양자화기(616)는 변환 유닛(615)에 의해 출력되는 변환 계수들의 양자화를 수행할 수 있다. 엔트로피 코더(617)는 예를 들어 가변 길이 코드 워드들에 의해 출력을 코딩함으로써 계수 양자화기의 출력의 대역폭을 감소시킬 수 있다.
동작 동안, 다운스케일러(613), 잔차 양자화기(614) 및 계수 양자화기(616)는 각각의 유닛의 동작을 조정하는 코딩 파라미터들에 따라 동작할 수 있다. 예를 들어, 다운스케일러(613)는 그의 입력 픽셀 블록에 적용하기 위한 다운스케일링의 레벨을 결정하는 해상도 양자화 파라미터(QR)에 따라 동작할 수 있다. 유사하게, 잔차 양자화기(614)는 잔차 양자화기(614)에 입력된 잔차 샘플들에 적용하기 위한 양자화의 레벨을 결정하는 잔차 양자화 파라미터(QSP)에 따라 동작할 수 있다. 또한 계수 양자화기(616)는 계수 양자화기(616)에 입력되는 변환 계수들에 적용할 양자화의 레벨을 결정하는 계수 양자화 파라미터(QP)에 따라 동작할 수 있다. 이전 실시예에서와 같이, 이러한 양자화기들(613, 614, 616) 각각은 그들이 이미지 데이터의 상이한 특성들을 양자화하기 때문에 상이한 차원들에서 동작하고, 양자화된 차원들은 서로 직교할 필요는 없다. 양자화 파라미터들(QR, QSP, 및 QP)은 제어기(660)에 의해 결정될 수 있고, 코딩 시스템(600)에 의해 출력되는 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다. 이러한 양자화기들은 또한 균일하거나 불균일한 방식으로 동작할 수 있다.
변환 유닛(615)은 이벤트 보증으로서 다양한 변환 모드들에서 동작할 수 있다. 예를 들어, 변환 유닛(615)은 DCT, DST, 월시-아다마르 변환, 하르 변환, 다우비치 웨이블릿 변환 등을 적용하도록 선택될 수 있다. 일 실시예에서, 제어기(660)는 변환 유닛(615)에 의해 적용될 코딩 모드(M)를 선택할 수 있고, 이에 따라 변환 유닛(615)을 구성할 수 있다. 코딩 모드(M)는 또한 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다.
픽셀 블록 디코더(620)는 픽셀 블록 코더(610)의 코딩 동작들을 반전시킬 수 있다. 예를 들어, 픽셀 블록 디코더(620)는 계수 역양자화기(622), 역변환 유닛(623), 잔차 역양자화기(624), 업스케일러(625), 및 가산기들(626.1, 626.2)의 쌍을 포함할 수 있다. 픽셀 블록 디코더(620)는 계수 양자화기(616)의 출력으로부터 그의 입력 데이터를 취할 수 있다. 허용가능하지만, 픽셀 블록 디코더(620)는 엔트로피 코딩이 무손실 이벤트이기 때문에 엔트로피 코딩된 데이터의 엔트로피 디코딩을 수행할 필요가 없다. 계수 역양자화기(622)는 픽셀 블록 코더(610)의 계수 양자화기(616)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛(623), 잔차 역양자화기(624), 및 업스케일러(625)는 변환 유닛(615), 잔차 양자화기(614), 및 다운스케일러(613)의 동작들을 각각 반전시킬 수 있다. 그들은 픽셀 블록 코더(610) 내의 그들의 상대방들과 동일한 양자화 파라미터들(QR, QSP, 및 QP) 및 변환 모드(M)를 사용할 수 있다. 다운스케일러(613), 잔차 양자화기(614), 및 계수 양자화기(616)의 동작들은 다양한 경우들에서 데이터를 절단할 가능성이 있으며, 따라서 계수 역양자화기(622), 잔차 역양자화기(624) 및 업스케일러(625)에 의해 복구된 데이터는 픽셀 블록 코더(610) 내의 그들의 상대방들에 제시된 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
가산기(626.1)는 감산기(612)에 의해 수행되는 동작들을 반전시킬 수 있다. 가산기는 예측 시스템(650)으로부터 감산기(612)가 잔차 신호들을 생성하는 데 사용했던 것과 동일한 예측 픽셀 블록을 수신할 수 있다. 가산기(626.1)는 예측 픽셀 블록을 업스케일러(625)에 의해 출력되는 재구성된 잔차 값들에 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
계수 역양자화기(622), 역변환 유닛(623), 잔차 역양자화기(624), 업스케일러(625), 및 제1 가산기(626.1)는 픽셀 블록 디코더(620)의 전체 노력 디코딩 경로를 정의할 수 있다. 전체 노력 디코딩 경로는 픽셀 블록 코더(610), 즉 감산기(612), 다운스케일러(613), 잔차 양자화기(614), 변환 유닛(615), 및 계수 양자화기(616)의 서브유닛들에 대한 상대방들로서 동작하는 디코딩 유닛들의 전체 어레이를 포함한다.
제2 가산기(626.2)는 역변환 유닛(623)으로부터 그의 입력을 취할 수 있는데, 이는 픽셀 블록 코더(610)의 코딩 단위들에 대한 상대방들의 전체 세트가 아닌 디코딩 유닛들의 세트로부터 생성된 픽셀 잔차 데이터를 나타낸다. 이와 같이, 제2 가산기(626.2)는 픽셀 블록 디코더(620)의 최선 노력 디코딩 경로를 정의한다. 제2 가산기(626.2)는 전체 노력 예측 버퍼(640.1)로부터 도출된 예측 기준들을 사용하여 최선 노력 예측 버퍼(640.2)로부터 취해지는 예측 시스템(650)으로부터의 예측 데이터를 수용한다. 즉, 예측 시스템(650)은 입력 픽셀 블록에 대한 예측 기준으로서 전체 노력 예측 버퍼(640.1)로부터 주어진 프레임으로부터 픽셀 블록을 선택하는 경우, 선택된 픽셀 블록을 감산기(612) 및 전체 노력 가산기(626.1)에 제공할 것이다. 예측 시스템(650)은 또한 최선 노력 예측 버퍼(640.2)에 저장된 것과 동일한 프레임의 동일한 위치로부터의 픽셀 블록을 제2 가산기(626.2)로 제공할 것이다.
인-루프 필터들(630.1, 630.2)은 그들 각각의 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예를 들어, 인-루프 필터들(630.1, 630.2)은 디블록킹 필터들 및 SAO 필터들(도시되지 않음)을 포함할 수 있다. 디블록킹 필터는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터들은, 예를 들어, 에지 방향/형상 및/또는 픽셀 레벨에 기초하여, SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 인-루프 필터들(630.1, 630.2)은 제어기(660)에 의해 선택되는 파라미터들에 따라 동작할 수 있다.
예측 버퍼들(640.1, 640.2)은 다른 픽셀 블록들의 이후 예측에 사용하기 위해 각각의 인-루프 필터들(630.1, 630.2)로부터의 필터링된 픽셀 데이터를 저장할 수 있다. 상이한 유형들의 예측 데이터가 상이한 예측 모드들에 대해 예측 시스템(650)에 이용가능하게 된다. 논의된 바와 같이, 입력 픽셀 블록에 대해, 인트라 예측은 입력 픽셀 블록이 위치되는 동일한 프레임의 디코딩된 데이터로부터 예측 기준을 취한다. 따라서, 예측 버퍼들(640.1, 640.2)은 각각의 프레임이 코딩될 때 그의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 동일한 입력 픽셀 블록에 대해, 인터 예측은 이전에 코딩 및 디코딩된 프레임(들) - "기준 프레임들"로 지정됨 -으로부터 예측 기준을 취할 수 있다. 따라서, 예측 버퍼들(640.1, 640.2)은 이러한 디코딩된 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측 시스템(650)은 잔차들을 생성하는 데 사용하기 위해 예측 데이터를 픽셀 블록 코더(610)에 공급할 수 있다. 예측 시스템(650)은 모드 결정 유닛(652) 및 예측 유닛들(654.1, 654.2)의 쌍을 포함할 수 있다. 모드 결정 유닛(652)은 전술한 실시예들의 인터 예측기 및 인트라 예측기를 포함할 수 있다. 따라서, 모드 결정 유닛(654)은 코딩될 새로운 픽셀 블록을 나타내는 픽셀 블록 데이터를 수신할 수 있고, 입력 픽셀 블록을 코딩하는 데 사용하기 위해 기준 프레임(들)으로부터의 픽셀 블록 데이터에 대해 전체 노력 예측 버퍼(640.1)를 검색할 수 있다. 결정 유닛(654)은 단일 목록 예측 모드 및 양방향 예측 모드와 같은 복수의 예측 모드들을 지원할 수 있다. 인터 코딩이 선택되는 경우, 모드 결정 유닛은 모션 벡터들과 같은 예측 기준 표시자들을 생성하여, 어느 기준 프레임들의 어느 부분(들)이 입력 픽셀 블록에 대한 예측의 소스(들)로 선택되었는지를 식별할 수 있다.
모드 결정 유닛(652)은 또한 인트라 (I) 모드 코딩을 지원할 수 있다. 따라서, 모드 결정 유닛(652)은 입력 픽셀 블록에 가장 근접한 매치를 제공하는 코딩되는 픽셀 블록과 동일한 프레임으로부터의 코딩된 픽셀 블록 데이터에 대해 전체 노력 예측 버퍼(640.1)를 검색할 수 있다. I 코딩이 선택되는 경우, 모드 결정 유닛(652)은 또한 예측 기준 표시자들을 생성하여, 프레임의 어느 부분이 입력 픽셀 블록에 대한 예측의 소스로서 선택되었는지를 식별할 수 있다.
논의된 바와 같이, 전형적으로, 모드 결정 유닛(654)은 비디오가 디코딩될 때 최저 왜곡을 달성할 예측 모드를 선택한다. 코딩 모드들이 랜덤 액세스를 지원하는 것과 같은 코딩 시스템(600)이 준수하는 다른 정책들, 또는 데이터 리프레시 정책들을 만족시키도록 선택되는 경우 예외들이 발생할 수 있다. 일 실시예에서, 모드 결정 유닛(654)은 전체 노력 디코딩 경로 및 최선 노력 디코딩 경로에 의해 획득된 디코딩된 비디오 데이터에 축적되는 코딩 에러들을 모니터링할 수 있다. 모드 결정 유닛은, 예를 들어, 최선 노력 디코딩 경로에서의 누적된 코딩 오류들이 사전결정된 값을 초과한다고 결정하는 경우, 그의 디폴트 예측 결정들을 변경할 수 있다.
전체 노력 예측기(654.1)는 모드 결정 유닛(652)에 의해 생성되는 예측 기준들에 의해 식별되는 전체 노력 예측 버퍼(640.1)로부터의 예측 데이터를 감산기(612) 및 전체 노력 가산기(626.1)로 제공할 수 있다. 최선 노력 예측기(654.2)는 모드 결정 유닛(652)에 의해 생성된 예측 기준들에 의해 식별되는 최상 노력 예측 버퍼(640.2)로부터의 예측 데이터를 최선 노력 가산기(626.2)로 제공할 수 있다.
제어기(660)는 코딩 시스템(600)의 전체 동작을 제어할 수 있다. 제어기(660)는 입력 픽셀 블록들 및 또한 코딩 비트레이트 목표들 및 다른 동작 파라미터들과 같은 외부 제약들의 분석에 기초하여 픽셀 블록 코더(610) 및 예측 시스템(650)에 대한 동작 파라미터들을 선택할 수 있다. 본 논의와 관련된 바와 같이, 다운스케일링 파라미터(QR), 잔차 양자화 파라미터(QSP), 계수 양자화기(QP), 및/또는 변환 모드(M)와 같은 양자화 파라미터들을 선택하는 경우, 제어기는 그러한 파라미터들을 신택스 유닛(670)에 제공할 수 있으며, 이는 시스템(600)에 의해 출력되는 코딩된 비디오 데이터의 데이터 스트림에 그들 파라미터들을 나타내는 데이터를 포함할 수 있다. 제어기(660)는 또한 하나 이상의 양자화기 유닛들(이를테면, 계수 양자화기(616))에 의해 어떠한 양자화도 적용되지 않아야 한다고 결정할 수 있으며, 이 경우에 제어기(660)는 양자화기를 디스에이블시킬 수 있다. 위에서 논의된 바와 같이, 제어기(660)는 또한 변환 유닛(615)의 동작 모드를 결정할 수 있다.
논의된 바와 같이, 양자화 파라미터들(QR, QSP, 및/또는 QP)은 픽셀 블록의 모든 픽셀들에 균일하게 적용되는 단일 값들로 제공될 필요는 없으며, 대신에, 그 값들이 각각의 픽셀 위치에서 변하는 양자화 파라미터들의 각각의 어레이들로서 제공될 수 있다. 하나의 실시예에서, 각각 상이한 픽셀 위치들에서 각각의 양자화 값들을 갖는 다양한 양자화기 어레이들이 사전결정된 프로토콜에 따라 정의될 수 있고, 동작 동안, 제어기(660)는 인덱스 또는 다른 식별자를 제공함으로써 어느 어레이를 사용할지를 식별할 수 있다.
다른 실시예에서, (단일 값이거나 값들의 어레이이든 간에) 양자화 파라미터들(QR, QSP, 및/또는 QP)은 이미지 데이터의 특성들로부터 도출될 수 있다. 예를 들어, 양자화 파라미터들(QSP)은 그들의 대응하는 예측 샘플들의 세기에 기초하여 각각의 샘플 위치에 대해 선택될 수 있으며, 예를 들어, 더 작은 예측 샘플 값에 대해서 보다 더 큰 예측 샘플 값에 대해 더 큰 양자화기 값이 선택될 수 있다. 이러한 양자화 파라미터들은 선형, 즉 스케일러, 공식을 사용하여 정의될 수 있거나, 더 복잡한 비-선형/비-균일 공식을 사용할 수 있다.
하나의 실시예에서, 양자화기는 형태 q(i,j) = fk(p(i,j), i, j)의 사전결정된 함수에 의해 표현될 수 있으며, 여기서 q는 사안이 되는 양자화기를 나타내고, i 및 j는 양자화되는 픽셀 블록 내의 값의 위치들(픽셀-도메인 값 또는 변환-도메인 값)을 나타내고, p(i,j)는 양자화되는 픽셀 세기 값을 나타내고, fk는 p, i 및 j 내지 q에 관한 함수를 나타낸다. 시그널링의 일부로서, 제어기(260)는 사용되는 함수를 식별하는 데이터, 및 각각의 함수가 동작하는 임의의 다른 데이터(예를 들어, 각각의 함수에서 작동할 수 있는 임의의 스케일러들 및 오프셋들)를 제공할 수 있다.
양자화 프로세스는 또한 룩업 테이블 형태(도시되지 않음)를 사용하여 특정될 수 있다. 룩업 테이블 형태는 룩업 테이블 내에 포함되지 않은 소정 값들의 양자화/역양자화 프로세스를 결정하기 위한 보간 기법들의 사용을 수반할 수 있다. 대안적으로, 양자화 파라미터들(QR 및/또는 QSP, QP)은 이전에 코딩된 이웃 픽셀 블록들의 양자화 파라미터들로부터 예측될 수 있다. 추가의 실시예에서, 양자화 파라미터들(QR 및/또는 QSP, QP)의 제1 세트는 코딩 시퀀스의 더 높은 레벨 구조(예를 들어, 프레임 또는 슬라이스 헤더)에서 시그널링될 수 있고, 구조의 픽셀 블록들이 코딩됨에 따라 양자화 파라미터들(QR 및/또는 QSP, QP)의 시그널링된 세트에 대한 변경들이 픽셀 블록x픽셀 블록 단위로 시그널링될 수 있다.
동작 동안, 제어기(660)는 양자화기들(613, 614, 및 616) 및 변환 유닛(615)의 동작 파라미터들을 이미지 데이터의 상이한 세분성들로 변경할 수 있으며, 픽셀 블록별 기준으로 또는 더 큰 세분성(예를 들어, 프레임별, 슬라이스별, LCU별 또는 다른 영역)으로 변경할 수 있다. 일 실시예에서, 양자화 파라미터들은 코딩된 프레임 내에서 픽셀별 기준으로 변경될 수 있다.
추가적으로, 논의된 바와 같이, 제어기(660)는 인-루프 필터들(630.1, 630.2) 및 예측 시스템(650)의 동작을 제어할 수 있다. 그러한 제어는 예측 유닛(650)에 대한 모드 선택(람다, 테스트될 모드들, 검색 윈도우들, 왜곡 전략들 등), 및 인-루프 필터들(630.1, 630.2)에 대한 필터 파라미터들, 재정렬 파라미터들, 가중된 예측 등의 선택을 포함할 수 있다.
도 6의 코딩 시스템(600)은 도 2의 실시예에 제공되는 코딩의 유연성을 제공하고, 추가적으로, 다양한 유형의 디코더들을 이용한 애플리케이션에서 찾아진다. 코딩 시스템은 송신 오류들의 부재 시에, 도 3의 디코딩 시스템(300)과 동기식으로 동작하는 방식으로 데이터를 코딩할 수 있다. 코딩 시스템(600)은 또한 바이패스 경로(327)(도 3)에 의해 표현되는, 전체 디코딩 모드와 최선 노력 모드 사이에서 동작을 교번시킬 수 있는 디코딩 시스템들(300)을 이용하여 동작할 수 있다.
도 6의 코딩 시스템(600)은 또한 성능이 덜한(less-capable) 비디오 디코더들, 예를 들어, 도 3의 디코딩 시스템(300)에 비해 잔차 역양자화기(324) 또는 업스케일러(325)를 갖지 않는 도 7에 예시된 바와 같은 디코더(720)를 갖는 비디오 디코딩 시스템(700)을 이용해 동작하는 코딩된 비디오 데이터를 생성할 수 있다. 그리고, 코딩 시스템(600)(도 6)이 최선 노력 디코딩 경로에서의 코딩 오류들의 축적을 고려하고 완화시키는 코딩 결정들을 행하면, 도 7에 예시된 것과 같은 디코딩 시스템들(700)은 통과가능한 코딩 성능을 갖는 코딩된 비디오를 디코딩할 수 있다.
도 8은 본 발명의 다른 실시예에 따른 코딩 시스템(800)의 기능적 블록도이다. 시스템(800)은 픽셀 블록 코더(810), 픽셀 블록 디코더(820), 인-루프 필터 시스템(830), 예측 버퍼(840), 예측기(850), 제어기(860), 및 신택스 유닛(870)을 포함할 수 있다. 픽셀 블록 코더(810)와 픽셀 블록 디코더(820) 및 예측기(850)는 개별 픽셀 블록들에 대해 반복적으로 동작할 수 있다. 예측기(850)는 새롭게 제시된 픽셀 블록의 코딩 동안 사용하기 위한 데이터를 예측할 수 있다. 픽셀 블록 코더(810)는 예측 코딩 기법들에 의해 새로운 픽셀 블록을 코딩하고, 코딩된 픽셀 블록 데이터를 신택스 유닛(870)에 제시할 수 있다. 픽셀 블록 디코더(820)는 코딩된 픽셀 블록 데이터를 디코딩하여, 그로부터 디코딩된 픽셀 블록 데이터를 생성할 수 있다. 인-루프 필터(830)는 픽셀 블록 디코더(820)에 의해 획득된 디코딩된 픽셀 블록들로부터 어셈블된 디코딩된 프레임 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 필터링된 프레임 데이터는 예측 버퍼(840)에 저장되고 이후 수신되는 픽셀 블록의 예측의 소스로 사용될 수 있다. 신택스 유닛(870)은 조정 코딩 프로토콜을 따르는 코딩된 픽셀 블록 데이터로부터 데이터 스트림을 어셈블할 수 있다.
픽셀 블록 코더(810)는 감산기(812), 복수의 양자화기들(813.1 내지 813.N), 변환 유닛(814), 계수 양자화기(815), 및 엔트로피 코더(816)를 포함할 수 있다. 픽셀 블록 코더(810)는 감산기(812)에서 입력 데이터의 픽셀 블록들을 수용할 수 있다. 감산기(812)는 예측기(850)로부터 예측된 픽셀 블록들을 수신하고, 그로부터 입력 픽셀 블록과 예측된 픽셀 블록 사이의 차이를 나타내는 픽셀 잔차들의 어레이를 생성할 수 있다. 양자화기들(813.1 내지 813.N) 각각은 이미지 데이터의 상이한 도메인에서 수신하는 데이터의 양자화를 수행할 수 있다. 변환 유닛(814)은 양자화기들 중 마지막 양자화기(813.N)로부터 변환 유닛에 입력되는 데이터에 변환을 적용하여 입력 데이터를 픽셀 도메인으로부터 변환 계수들의 도메인으로 변환할 수 있다. 계수 양자화기(815)는 변환 유닛(814)에 의해 출력되는 변환 계수들의 양자화를 수행할 수 있다. 엔트로피 코더(816)는 예를 들어 가변 길이 코드 워드들에 의해 출력을 코딩함으로써 계수 양자화기의 출력의 대역폭을 감소시킬 수 있다.
양자화기들(813.1 내지 813.N) 각각은 이미지 데이터의 각각의 도메인에서 수신하는 데이터의 양자화를 수행할 수 있다. 여기서 다시, 양자화된 차원들은 서로 직교할 필요는 없다. 양자화기들(813.1 내지 813.N)은 전술한 실시예들의 다운스케일러들, 및 잔차 양자화기들을 포함할 수 있다. 양자화기들은 또한 다른 유형들의 양자화기들, 예컨대 컬러 컴포넌트-특정 양자화기들, 주파수 도메인 양자화기들, 방향-특정 양자화기들(예컨대, 수평 단독, 수직 단독, 블렌딩), 밝기-특정 잔차 스케일러들 등을 포함할 수 있다. 양자화기들(813.1 내지 813.N)은 그들이 제공하는 양자화의 레벨들을 정의하는 각각의 양자화 파라미터들(Q1 내지 QN)에 따라 동작할 수 있다. 양자화 파라미터들(Q1 내지 QN)은 코딩된 비트 스트림 내에서 명시적으로 또는 암시적으로 디코딩 시스템에게 시그널링될 수 있다. 일부 시나리오들에서, 개별 양자화기들(813.1, 813.2, ..., 813.N)은 디스에이블될 수 있고, 이 경우에 그들은 그들의 입력 데이터를 변경없이 단순히 다음 양자화기로 전달할 수 있다.
변환 유닛(814)은 이벤트 보증으로서 다양한 변환 모드들에서 동작할 수 있다. 예를 들어, 변환 유닛(814)은 DCT 변환, DST 변환, 월시-아다마르 변환, 하르 변환, 다우비치 웨이블릿 변환 등을 적용하도록 선택될 수 있다. 일 실시예에서, 제어기(860)는 변환 유닛(814)에 의해 적용될 코딩 모드를 선택할 수 있고, 이에 따라 변환 유닛(814)을 구성할 수 있다. 변환 모드(M)는 또한 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다.
픽셀 블록 디코더(820)는 픽셀 블록 코더(810)의 코딩 동작들을 반전시키는 디코딩 유닛들을 포함할 수 있다. 예를 들어, 픽셀 블록 디코더(820)는 계수 역양자화기(822), 역변환 유닛(823), 복수의 역양자화기들(824.1 내지 824.N), 및 가산기(825)를 포함할 수 있다. 픽셀 블록 디코더(820)는 계수 양자화기(815)의 출력으로부터 그의 입력 데이터를 취할 수 있다. 다시, 허용가능하지만, 픽셀 블록 디코더(820)는 엔트로피 코딩이 무손실 이벤트이기 때문에 엔트로피 코딩된 데이터의 엔트로피 디코딩을 수행할 필요가 없다. 계수 역양자화기(822)는 픽셀 블록 코더(810)의 계수 양자화기(815)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛(823) 및 역양자화기들(824.1 내지 824.N)은 각각 변환 유닛(814) 및 양자화기들(813.1 내지 813.N)의 동작들을 반전시킬 수 있다. 그들은 픽셀 블록 코더(810) 내의 그들의 상대방들과 동일한 양자화 파라미터들(Q1 내지 QN) 및 변환 모드(M)를 사용할 수 있다. 양자화기들(813.1 내지 813.N) 및 계수 양자화기(815)의 동작들은 다양한 경우들에서 데이터를 절단할 가능성이 있으며, 따라서, 역양자화기들(824.1 내지 824.N)에 의해 복구된 데이터는 픽셀 블록 코더(810) 내의 그들의 상대방들에 제시된 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
가산기(825)는 감산기(812)에 의해 수행되는 동작들을 반전시킬 수 있다. 가산기는 예측기(850)로부터 감산기(812)가 잔차 신호들을 생성하는 데 사용했던 것과 동일한 예측 픽셀 블록을 수신할 수 있다. 가산기(825)는 예측 픽셀 블록을 최종 양자화기(824.1)에 의해 출력되는 재구성된 잔차 값들에 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
인-루프 필터(830)는 재구성된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예를 들어, 인-루프 필터(830)는 디블록킹 필터(832) 및 SAO 필터(833)를 포함할 수 있다. 디블록킹 필터(832)는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터(833)는, 예를 들어 에지 방향/형상 및/또는 픽셀 레벨에 기초하여 SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 인-루프 필터(830)는 제어기(860)에 의해 선택되는 파라미터들에 따라 동작할 수 있다.
예측 버퍼(840)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 상이한 유형들의 예측 데이터가 상이한 예측 모드들에 대해 예측기(850)에 이용가능하게 된다. 예를 들어, 입력 픽셀 블록에 대해, 인트라 예측은 입력 픽셀 블록이 위치되는 것과 동일한 프레임의 디코딩된 데이터로부터 예측 기준을 취한다. 따라서, 예측 버퍼(840)는 각각의 프레임이 코딩될 때 그의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 동일한 입력 픽셀 블록에 대해, 인터 예측은 이전에 코딩 및 디코딩된 프레임(들) - "기준 프레임들"로 지정됨 -으로부터 예측 기준을 취할 수 있다. 따라서, 예측 버퍼(840)는 이러한 디코딩 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(850)는 잔차들을 생성하는 데 사용하기 위해 예측 데이터를 픽셀 블록 코더(810)에 공급할 수 있다. 예측기(850)는 인터 예측기(852), 인트라 예측기(853) 및 모드 결정 유닛(854)을 포함할 수 있다. 인터 예측기(852)는 코딩될 새로운 픽셀 블록을 나타내는 픽셀 블록 데이터를 수신할 수 있고, 입력 픽셀 블록을 코딩하는 데 사용하기 위해 기준 프레임(들)으로부터의 픽셀 블록 데이터에 대해 예측 버퍼(840)를 검색할 수 있다. 인터 예측기(852)는 하나의 기준 프레임 또는 기준 프레임들의 쌍으로부터 예측 데이터를 공급하는 P 모드 코딩 및 B 모드 코딩과 같은 복수의 예측 모드들을 지원할 수 있다. 인터 예측기(852)는 인터 예측 모드를 선택하고, 코딩되고 있는 입력 픽셀 블록에 가장 근접한 매치를 제공하는 예측 데이터를 공급할 수 있다. 인터 예측기(852)는 모션 벡터들과 같은 예측 기준 표시자들을 생성하여, 어느 기준 프레임들의 어느 부분(들)이 입력 픽셀 블록에 대한 예측의 소스(들)로 선택되었는지를 식별할 수 있다.
인트라 예측기(853)는 인트라 코딩을 지원할 수 있다. 인트라 예측기(853)는 코딩되는 픽셀 블록과 동일한 프레임으로부터의 코딩된 픽셀 블록 데이터 중에서 입력 픽셀 블록에 가장 근접한 매치를 제공하는 것을 검색할 수 있다. 인트라 예측기(853)는 또한 예측 기준 표시자들을 생성하여 프레임의 어느 부분이 입력 픽셀 블록에 대한 예측의 소스로서 선택되었는지를 식별할 수 있다.
추가의 실시예에서, 예측기(850)는 입력 픽셀 블록을 코딩할 때 어떠한 예측도 수행되지 않아야 한다고 결정할 수 있다. 이러한 이벤트에서, 예측기(850)는 (감산기(812)에 어떠한 예측 데이터도 제공하지 않음으로써 효과적으로) 감산기(812)를 디스에이블할 수 있고, 감산기(812)는 픽셀 값들을 양자화기 체인(813.1 내지 813.N)에 출력할 수 있다. 양자화기들(813.1 내지 813.N)은 이러한 동작 모드에서 픽셀 잔차들보다는 오히려 픽셀 값들에 대해 동작할 것이다. 유사하게, 픽셀 블록 디코더(820)는 이러한 방식으로 코딩된 픽셀 블록을 디코딩할 때 가산기(825)를 디스에이블할 수 있다. 또한, 제어기(860)는 디코딩된 비트 스트림 내에 모드 결정 신호를 제공할 수 있으며, 이는 디코더에 의해 프로세싱될 때(도 9), 이러한 방식으로 코딩된 픽셀 블록을 디코딩할 때 디코더 내의 가산기가 또한 디스에이블되게 할 것이다.
모드 결정 유닛(854)은 입력 픽셀 블록에 적용될 최종 코딩 모드를 선택할 수 있다. 전형적으로, 모드 결정 유닛(854)은 비디오가 디코딩될 때 최저 왜곡을 달성할 예측 모드를 선택한다. 코딩 모드들이 랜덤 액세스를 지원하는 것과 같은 코딩 시스템(800)이 준수하는 다른 정책들, 또는 데이터 리프레시 정책들을 만족시키도록 선택되는 경우 예외들이 발생할 수 있다. 모드 결정 유닛(854)은 예측 데이터를 픽셀 블록 코더(810) 및 픽셀 블록 디코더(820)로 출력할 수 있고, 선택된 예측 모드의 식별을 선택된 모드에 대응하는 예측 기준 표시자들과 함께 제어기(860)에 공급할 수 있다.
제어기(860)는 코딩 시스템(800)의 전체 동작을 제어할 수 있다. 제어기(860)는 입력 픽셀 블록들 및 또한 코딩 비트레이트 목표들 및 다른 동작 파라미터들과 같은 외부 제약들의 분석에 기초하여 픽셀 블록 코더(810) 및 예측기(850)에 대한 동작 파라미터들을 선택할 수 있다. 본 논의와 관련된 바와 같이, 양자화 파라미터들(Q1 내지 QN) 및 변환 모드들(M)을 선택하는 경우, 제어기는 그러한 파라미터들을 신택스 유닛(870)에 제공할 수 있으며, 이는 그러한 파라미터들을 나타내는 데이터를 시스템(800)에 의해 출력되는 코딩된 비디오 데이터의 데이터 스트림 내에 포함할 수 있다. 제어기(860)는 또한 하나 이상의 양자화기 유닛들(이를테면, 양자화기(813.2))에 의해 어떠한 양자화도 적용되지 않아야 한다고 결정할 수 있으며, 이 경우에 제어기(860)는 양자화기(813.2)를 디스에이블시킬 수 있다. 위에서 논의된 바와 같이, 제어기(860)는 또한 변환 유닛(814)의 동작 모드를 결정할 수 있다.
다른 실시예에서, (단일 값이거나 값들의 어레이이든 간에) 양자화 파라미터들(Q1 내지 QN)은 이미지 데이터의 특성들로부터 도출될 수 있다. 예를 들어, 양자화 파라미터(Q1)는 픽셀 잔차들에 대응하는 예측 픽셀 값들의 세기에 기초하여 선택될 수 있다. 이 경우에, Q1의 값은 예측기의 세기 값에 따라 모든 픽셀에 대해 변할 수 있는데, 예를 들어, 값은 더 작은 예측기 값을 갖는 샘플보다 더 큰 예측기 값을 갖는 샘플에 대해 더 높을 수 있다. 이러한 양자화 파라미터들은 선형, 즉 스케일러, 공식을 사용하거나, 더 복잡한 비-선형/비-균일 공식을 사용하여 정의될 수 있다.
하나의 실시예에서, 양자화기는 형태 q(i,j) = fk(p(i,j), i, j)의 사전결정된 함수에 의해 표현될 수 있으며, 여기서 q는 사안이 되는 양자화기를 나타내고, i 및 j는 양자화되는 픽셀 블록 내의 값의 위치들(픽셀-도메인 값 또는 변환-도메인 값)을 나타내고, p(i,j)는 양자화되는 픽셀 세기 값을 나타내고, fk는 p, i 및 j 내지 q에 관한 함수를 나타낸다. 시그널링의 일부로서, 제어기(260)는 사용되는 함수를 식별하는 데이터, 및 각각의 함수가 동작하는 임의의 다른 데이터(예를 들어, 각각의 함수에서 작동할 수 있는 임의의 스케일러들 및 오프셋들)를 제공할 수 있다.
양자화 프로세스는 또한 룩업 테이블 형태(도시되지 않음)를 사용하여 특정될 수 있다. 룩업 테이블 형태는 룩업 테이블 내에 포함되지 않은 소정 값들의 양자화/역양자화 프로세스를 결정하기 위한 보간 기법들의 사용을 수반할 수 있다. 대안적으로, 양자화 파라미터들(Q1 내지 QN)은 이전에 코딩된 이웃 픽셀 블록들의 양자화 파라미터들로부터 예측될 수 있다. 추가의 실시예에서, 양자화 파라미터들(Q1 내지 QN)의 제1 세트는 코딩 시퀀스의 더 높은 레벨 구조(예를 들어, 프레임 또는 슬라이스 헤더)에서 시그널링될 수 있고, 구조의 픽셀 블록들이 코딩됨에 따라 양자화 파라미터들(Q1 내지 QN)의 시그널링된 세트에 대한 변경들이 픽셀 블록x픽셀 블록 기준으로 시그널링될 수 있다.
동작 동안, 제어기(860)는 양자화기들(813, 814, 및 815) 및 변환 유닛(814)의 동작 파라미터들을 이미지 데이터의 상이한 세분성들로 변경할 수 있으며, 픽셀 블록별 기준으로 또는 더 큰 세분성, 예를 들어, 프레임별, 슬라이스별, LCU별 또는 다른 영역으로 변경할 수 있다. 일 실시예에서, 양자화 파라미터들은 픽셀별 기준으로 변경될 수 있다.
추가적으로, 논의된 바와 같이, 제어기(860)는 인-루프 필터(830) 및 예측기(850)의 동작을 제어할 수 있다. 그러한 제어는 예측기(850)에 대한 모드 선택(람다, 테스트될 모드들, 검색 윈도우들, 왜곡 전략들 등), 및 인-루프 필터(830)에 대한 필터 파라미터들, 재정렬 파라미터들, 가중된 예측 등의 선택을 포함할 수 있다.
도 9는 본 발명의 일 실시예에 따른 디코딩 시스템(900)의 기능적 블록도이다. 디코딩 시스템(900)은 신택스 유닛(910), 픽셀 블록 디코더(920), 인-루프 필터(930), 예측 버퍼(940), 예측기(950), 및 제어기(960)를 포함할 수 있다. 신택스 유닛(910)은 코딩된 비디오 데이터 스트림을 수신할 수 있고, 코딩된 데이터를 그의 구성 부분들로 파싱할 수 있다. 코딩 파라미터들을 나타내는 데이터는 제어기(960)에 제공될 수 있는 한편, 코딩된 잔차들을 나타내는 데이터(도 8의 픽셀 블록 코더(810)에 의해 출력된 데이터)는 픽셀 블록 디코더(920)에 제공될 수 있다. 픽셀 블록 디코더(920)는 픽셀 블록 코더(810)(도 8)에 의해 제공되는 코딩 동작들을 반전시킬 수 있다. 인-루프 필터(930)는 재구성된 픽셀 블록 데이터를 필터링할 수 있다. 재구성된 픽셀 블록 데이터는 디스플레이를 위한 프레임들로 어셈블되고, 디코딩 시스템(900)으로부터 출력 비디오로서 출력될 수 있다. 프레임들은 또한 예측 동작들에 사용하기 위해 예측 버퍼(940)에 저장될 수 있다. 예측기(950)는 코딩된 비디오 데이터 스트림 내에 수신된 코딩 데이터에 의해 결정되는 바에 따라 예측 데이터를 픽셀 블록 디코더(920)에 공급할 수 있다.
픽셀 블록 디코더(920)는 엔트로피 디코더(921), 계수 역양자화기(922), 역변환 유닛(923), 복수의 역양자화기들(924.1 내지 924.N), 및 가산기(925)를 포함할 수 있다. 엔트로피 디코더(921)는 엔트로피 코더(816)(도 8)에 의해 수행되는 프로세스들을 반전시키기 위해 엔트로피 디코딩을 수행할 수 있다. 계수 역양자화기(922)는 픽셀 블록 코더(810)(도 8)의 계수 양자화기(815)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛(923) 및 역양자화기들(924.1 내지 924.N)은 변환 유닛(814) 및 양자화기들(813.1 내지 813.N)(도 8)의 동작들을 각각 반전시킬 수 있다. 그들은 코딩된 비디오 데이터 스트림 내에 제공되는 양자화 파라미터들(Q1 내지 QN) 및 변환 모드들(M)을 사용할 수 있다. 양자화기들(813.1 내지 813.N) 및 계수 양자화기(815)의 동작들은 다양한 경우들에서 데이터를 절단하기 때문에, 계수 역양자화기(922) 및 역양자화기들(924.1 내지 924.N)에 의해 재구성된 데이터는 픽셀 블록 코더(810)(도 8) 내의 그들의 상대방들에 제시된 입력 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
가산기(925)는 감산기(812)(도 8)에 의해 수행되는 동작들을 반전시킬 수 있다. 가산기는 코딩된 비디오 데이터 스트림 내의 예측 기준들에 의해 결정되는 바에 따라 예측기(950)로부터 예측 픽셀 블록을 수신할 수 있다. 가산기(925)는 이전 역양자화기(924.1)로부터 가산기에 입력된 재구성된 잔차 값들에 예측 픽셀 블록을 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
인-루프 필터(930)는 재구성된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예시된 바와 같이, 인-루프 필터(930)는 디블록킹 필터(932) 및 SAO 필터(933)를 포함할 수 있다. 디블록킹 필터(932)는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터들은, 예를 들어, 에지 방향/형상 및/또는 픽셀 레벨에 기초하여, SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 디블록킹 필터(932) 및 SAO 필터(933)의 동작은 이상적으로는 코딩 시스템(800)(도 8) 내의 그들의 상대방들의 동작을 모방할 것이다. 따라서, 송신 에러들 또는 다른 이상들의 부재 시, 디코딩 시스템(900)의 인-루프 필터(930)로부터 획득된 디코딩된 프레임 데이터는 코딩 시스템(800)(도 8)의 인-루프 필터(830)로부터 획득된 디코딩된 프레임 데이터와 동일할 것이며; 이러한 방식으로, 코딩 시스템(800) 및 디코딩 시스템(900)은 그들 각각의 예측 버퍼들(840, 940)에 공통 세트의 기준 픽처들을 저장해야 한다.
예측 버퍼(940)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 예측 버퍼(940)는 인트라 예측에 사용하기 위해 코딩될 때 각각의 프레임의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 예측 버퍼(940)는 또한 디코딩된 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(950)는 예측 데이터를 픽셀 블록 디코더(920)에 공급할 수 있다. 예측기(950)는 코딩된 비디오 데이터 스트림 내에 공급된 예측 기준 표시자들에 의해 결정되는 바에 따라 예측된 픽셀 블록 데이터를 공급할 수 있다.
제어기(960)는 코딩 시스템(900)의 전체 동작을 제어할 수 있다. 제어기(960)는 코딩된 비디오 데이터 스트림 내에 수신된 파라미터들에 기초하여 픽셀 블록 디코더(920) 및 예측기(950)에 대한 동작 파라미터들을 설정할 수 있다. 본 논의와 관련된 바와 같이, 이러한 동작 파라미터들은 역양자화기들(924.1 내지 924.N) 및 역변환 유닛(923)에 대한 양자와 파라미터들(Q1 내지 QN) 및 변환 모드들(M)을 포함할 수 있다. 논의된 바와 같이, 수신된 파라미터들은 이미지 데이터의 다양한 세분성들로 설정될 수 있으며, 예를 들어, 픽셀별 기준, 픽셀 블록별 기준, 프레임별 기준, 슬라이스별 기준, LCU별 기준, 또는 입력 이미지에 대해 정의된 다른 유형들의 영역들에 기초하여 설정될 수 있다.
도 8 및 도 9의 실시예들은 여러 차원들, 도 2 및 도 3의 실시예들보다 더 많은 차원들을 따른 이미지 데이터의 양자화를 제공한다. 구현예에서, 회로 설계자들은 그들의 애플리케이션들에 대해 적합한 가능한 많은 유형들의 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)을 갖는 코딩 및 디코딩 시스템들을 설계하는 것이 편리하다는 것을 알 수 있다. 코딩 시스템들 및 디코딩 시스템들의 배포자들 간의 조정이 없을 경우, 개별 코딩 시스템들 및 디코딩 시스템들이 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)의 불일치된 세트들을 가질 가능성이 있다. 그러한 상황들에서, 코딩 시스템 및 디코딩 시스템은 비디오 코딩 세션의 초기화 단계 동안 그들의 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)의 능력들을 식별하는 데이터를 교환할 수 있다. 협상을 통해, 코딩 시스템 및 디코딩 시스템은 그들이 공통으로 임의의 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)을 공유하는지 여부를 결정할 수 있다. 그렇다면, 코딩 시스템 및 디코딩 시스템은 공통으로 공유되지 않는 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)을 디스에이블시켜 그들을 통과 상태로 설정하고, 공통으로 공유되는 양자화기들(813.1 내지 813.N) 및 역양자화기들(924.1 내지 924.N)을 사용하여 비디오 코딩을 행할 수 있다. 따라서, 코딩 시스템들 및 디코딩 시스템들은 그들의 능력들이 동일하지 않더라도 본 발명에 고유한 이점들을 달성할 수 있다.
도 10은 본 발명의 다른 실시예에 따른 코딩 시스템(1000)의 기능적 블록도이다. 시스템(1000)은 픽셀 블록 코더(1010), 픽셀 블록 디코더(1020), 인-루프 필터 시스템(1030), 예측 버퍼(1040), 예측기(1050), 제어기(1060), 및 신택스 유닛(1070)을 포함할 수 있다. 픽셀 블록 코더(1010)와 픽셀 블록 디코더(1020) 및 예측기(1050)는 개별 픽셀 블록들에 대해 반복적으로 동작할 수 있다. 예측기(1050)는 새롭게 제시된 픽셀 블록의 코딩 동안 사용하기 위한 데이터를 예측할 수 있다. 픽셀 블록 코더(1010)는 여러 병렬 코딩 체인들에서 새로운 픽셀 블록을 코딩할 수 있고, 코딩된 픽셀 블록 데이터를 신택스 유닛(1070)에 제시할 수 있다. 픽셀 블록 디코더(1020)는 코딩된 픽셀 블록 데이터를 또한 병렬 디코딩 체인들에서 디코딩할 수 있고, 그로부터 디코딩된 픽셀 블록 데이터를 생성할 수 있다. 인-루프 필터(1030)는 픽셀 블록 디코더(1020)에 의해 획득된 디코딩된 픽셀 블록들로부터 어셈블된 디코딩된 프레임 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 필터링된 프레임 데이터는 예측 버퍼(1040)에 저장되고 이후 수신되는 픽셀 블록의 예측의 소스로 사용될 수 있다. 신택스 유닛(1070)은 조정 코딩 프로토콜을 따르는 코딩된 픽셀 블록 데이터로부터 데이터 스트림을 어셈블할 수 있다.
픽셀 블록 코더(1010)는 감산기(1012) 및 병렬 코딩 체인들을 포함할 수 있고, 이들 각각은 각각의 양자화기(1013.1, 1013.2, ..., 또는 1013.N), 각각의 변환 유닛(1014.1, 1014.2, ..., 또는 1014.N), 각각의 계수 양자화기(1015.1, 1015.2, ..., 또는 1015.N), 및 각각의 엔트로피 코더(1016.1, 1016.2, ..., 또는 1016.N)를 포함한다. 멀티플렉서(1017)는 엔트로피 코더(1016.1, 1016.2, ..., 또는 1016.N)의 출력들을 단일의 코딩된 비디오 스트림으로 병합할 수 있으며, 이는 픽셀 블록 코더(1010)로부터 신택스 유닛(1070)으로 출력될 수 있다.
픽셀 블록 코더(1010)는 감산기(1012)에서 입력 데이터의 픽셀 블록들을 수용할 수 있다. 감산기(1012)는 예측기(1050)로부터 예측된 픽셀 블록들을 수신하고, 그로부터 입력 픽셀 블록과 예측된 픽셀 블록 사이의 픽셀-단위의 차이를 나타내는 픽셀 잔차들의 어레이를 생성할 수 있다. 양자화기들(1013.1 내지 1013.N) 각각은 이미지 데이터의 상이한 도메인에서 수신하는 데이터의 양자화를 수행할 수 있다. 여기서 다시, 양자화된 차원들은 서로 직교할 필요는 없다. 변환 유닛들(1014.1 내지 1014.N)은 각각의 양자화기들(1013.1 내지 1013.N)로부터 변환 유닛들에 입력되는 데이터에 변환들을 적용하여 입력 데이터를 픽셀 도메인으로부터 변환 계수들의 도메인으로 변환할 수 있다. 계수 양자화기들(1015.1 내지 1015.N)은 그들 각각의 변환 유닛들(1014.1 내지 1014.N)로부터 계수 양자화기들에 입력되는 변환 계수들의 양자화들을 수행할 수 있다. 엔트로피 코더들(1016.1 내지 1016.N)은 그들 각각의 계수 양자화기들(1015.1 내지 1015.N)로부터 엔트로피 코더들에 제시되는 입력 데이터의 대역폭을 예를 들어, 가변 길이 코드 워드들에 의해 감소시켜 출력을 코딩할 수 있다.
양자화기들(1013.1 내지 1013.N) 각각은 이미지 데이터의 각각의 도메인에서 수신하는 데이터의 양자화를 수행할 수 있다. 양자화기들(1013.1 내지 1013.N)은 예를 들어, 다운스케일러들, 잔차 양자화기들, 컬러 컴포넌트-특정 양자화기들, 주파수 도메인 양자화기들, 방향-특정 양자화기들(예컨대, 수평 단독, 수직 단독, 블렌딩), 밝기-특정 잔차 스케일러들 등으로서 제공될 수 있다. 양자화기들(1013.1 내지 1013.N)은 그들이 제공하는 양자화의 레벨들을 정의하는, 제어기(1060)에 의해 공급되는 각각의 양자화 파라미터들에 따라 동작할 수 있다. 양자화 파라미터들은 코딩된 비트 스트림 내에서 명시적으로 또는 암시적으로 디코딩 시스템에게 시그널링될 수 있다. 일부 시나리오들에서, 개별 양자화기들(1013.1, 1013.2, ..., 1013.N)은 디스에이블될 수 있고, 여기서 그들은 그들의 입력 데이터를 변경없이 단순히 다음 양자화기로 전달할 수 있다. 2개 이상의 양자화기들(1013.1, 1013.2, ..., 1013.N)이 디스에이블되면, 연관된 코딩 체인들 중 일부는 그 전체가 디스에이블될 수 있다.
변환 유닛들(1014.1 내지 1014.N)은 이벤트 보증으로서 다양한 변환 모드들에서 동작할 수 있다. 예를 들어, 변환 유닛(1014)은 DCT, DST, 월시-아다마르 변환, 하르 변환, 다우비치 웨이블릿 변환 등을 적용하도록 선택될 수 있다. 또한, 변환 유닛들(1014.1 내지 1014.N)은 각각의 코딩 체인 내의 transform SKIP 모드 코딩을 적용할 때 디스에이블될 수 있다. 일 실시예에서, 제어기(1060)는 변환 유닛들(1014.1 내지 1014.N)에 의해 적용될 코딩 모드를 선택할 수 있고, 이는 체인마다 상이할 수 있으며, 제어기(1060)는 이에 따라 변환 유닛들(1014.1-1014.N)을 구성할 수 있다. 변환 모드들은 또한, 코딩된 비디오 데이터 내에 명시적으로 또는 암시적으로 시그널링될 수 있다.
픽셀 블록 디코더(1020)는 픽셀 블록 코더(1010)의 코딩 동작들을 반전시키는 디코딩 유닛들을 포함할 수 있다. 예를 들어, 픽셀 블록 디코더(1020)는 픽셀 블록 코더(1010)에서와 같이 체인들로 배열되는 계수 역양자화기들(1022.1 내지 1022.N), 역변환 유닛들(1023.1 내지 1023.N), 및 역양자화기들(1024.1 내지 1024.N)을 포함할 수 있다. 픽셀 블록 디코더(1020)는 또한 평균기(1025) 및 가산기(1026)를 포함할 수 있다.
픽셀 블록 디코더(1020)의 디코딩 체인들은 픽셀 블록 코더(1010)의 각각의 코딩 체인들의 출력들로부터 그의 입력 데이터를 취할 수 있다. 다시, 허용가능하지만, 픽셀 블록 디코더(1020)는 엔트로피 코딩이 무손실 이벤트이기 때문에 엔트로피 코딩된 데이터의 엔트로피 디코딩을 수행할 필요가 없다. 계수 역양자화기들(1022.1 내지 1022.N)은 픽셀 블록 코더(1010)의 그들의 상대방 양자화기들(1015.1 내지 1015.N)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛들(1023.1 내지 1023.N) 및 역양자화기들(1024.1 내지 1024.N)은 각각 변환 유닛들(1014.1 내지 1014.N) 및 양자화기들(1013.1 내지 1013.N)의 동작들을 반전시킬 수 있다. 그들은 픽셀 블록 코더(1010) 내의 그들의 상대방들과 동일한 양자화 파라미터들 및 변환 모드들을 사용할 수 있다. 양자화기들(1013.1 내지 1013.N) 및 계수 양자화기(1015)의 동작들은 다양한 경우들에서 데이터를 절단할 가능성이 있으며, 따라서, 계수 역양자화기들(1022.1 내지 1022.N) 및 역양자화기들(1024.1 내지 1024.N)에 의해 재구성된 잔차 데이터는 픽셀 블록 코더(1010) 내의 그들의 상대방들에 제시된 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
평균기(1025)는 다양한 디코딩 체인들의 출력들의 평균을 낼 수 있다. 상이한 코딩 체인들의 기여도들은 동일한 가중치를 받을 수 있거나, 대안적으로, 제어기(1060)에 의해 할당된 가중치들에 기초하여 가중될 수 있다. 일 실시예에서, 제어기(1060)는 상이한 체인들로부터 재구성된 데이터의 왜곡을 측정할 수 있고, 일단 평균을 내면 그러한 왜곡들을 감소시키는 평균 가중치들을 선택할 수 있다. 평균기(1025)의 출력은 재구성된 잔차 데이터로서 가산기(1026)에 입력될 수 있다.
가산기(1026)는 감산기(1012)에 의해 수행되는 동작을 반전시킬 수 있다. 가산기는 예측기(1050)로부터 감산기(1012)가 잔차 신호들을 생성하는 데 사용했던 것과 동일한 예측 픽셀 블록을 수신할 수 있다. 가산기(1026)는 예측 픽셀 블록을 평균기(1025)에 의해 출력되는 재구성된 잔차 값들에 추가할 수 있고, 재구성된 픽셀 블록 데이터를 출력할 수 있다.
인-루프 필터(1030)는 복구된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예를 들어, 인-루프 필터(1030)는 디블록킹 필터(1032) 및 SAO 필터(1033)를 포함할 수 있다. 디블록킹 필터(1032)는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터(1033)는, 예를 들어 에지 방향/형상 및/또는 픽셀 레벨에 기초하여 SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 인-루프 필터(1030)는 제어기(1060)에 의해 선택되는 파라미터들에 따라 동작할 수 있다.
예측 버퍼(1040)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 상이한 유형들의 예측 데이터가 상이한 예측 모드들에 대해 예측기(1050)에 이용가능하게 된다. 예를 들어, 입력 픽셀 블록에 대해, 인트라 예측은 입력 픽셀 블록이 위치되는 것과 동일한 프레임의 디코딩된 데이터로부터 예측 기준을 취한다. 따라서, 예측 버퍼(1040)는 각각의 프레임이 코딩될 때 그의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 동일한 입력 픽셀 블록에 대해, 인터 예측은 이전에 코딩 및 디코딩된 프레임(들) - "기준 프레임들"로 지정됨 -으로부터 예측 기준을 취할 수 있다. 따라서, 예측 버퍼(1040)는 이러한 디코딩 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(1050)는 잔차들을 생성하는 데 사용하기 위해 예측 데이터를 픽셀 블록 코더(1010)에 공급할 수 있다. 예측기(1050)는 인터 예측기(1052), 인트라 예측기(1053) 및 모드 결정 유닛(1054)을 포함할 수 있다. 인터 예측기(1052)는 코딩될 새로운 픽셀 블록을 나타내는 픽셀 블록 데이터를 수신할 수 있고, 입력 픽셀 블록을 코딩하는 데 사용하기 위해 기준 프레임(들)으로부터의 픽셀 블록 데이터에 대해 예측 버퍼(1040)를 검색할 수 있다. 인터 예측기(1052)는 하나의 기준 프레임 또는 기준 프레임들의 쌍으로부터의 예측 데이터를 공급하는, P 모드 및 B 모드와 같은 복수의 예측 모드들을 지원할 수 있다. 인터 예측기(1052)는 인터 예측 모드를 선택하고, 코딩되고 있는 입력 픽셀 블록에 가장 근접한 매치를 제공하는 예측 데이터를 공급할 수 있다. 인터 예측기(1052)는 모션 벡터들과 같은 예측 기준 표시자들을 생성하여, 어느 기준 프레임들의 어느 부분(들)이 입력 픽셀 블록에 대한 예측의 소스(들)로 선택되었는지를 식별할 수 있다.
인트라 예측기(1053)는 인트라 코딩을 지원할 수 있다. 인트라 예측기(1053)는 코딩되는 픽셀 블록과 동일한 프레임으로부터의 코딩된 픽셀 블록 데이터 중에서 입력 픽셀 블록에 가장 근접한 매치를 제공하는 것을 검색할 수 있다. 인트라 예측기(1053)는 또한 예측 기준 표시자들을 생성하여 프레임의 어느 부분이 입력 픽셀 블록에 대한 예측의 소스로서 선택되었는지를 식별할 수 있다.
모드 결정 유닛(1054)은 입력 픽셀 블록에 적용될 최종 코딩 모드를 선택할 수 있다. 전형적으로, 모드 결정 유닛(1054)은 비디오가 디코딩될 때 최저 왜곡을 달성할 예측 모드를 선택한다. 코딩 모드들이 랜덤 액세스를 지원하는 것과 같은 코딩 시스템(1000)이 준수하는 다른 정책들, 또는 데이터 리프레시 정책들을 만족시키도록 선택되는 경우 예외들이 발생할 수 있다. 모드 결정 유닛(1054)은 예측 데이터를 픽셀 블록 코더(1010) 및 픽셀 블록 디코더(1020)로 출력할 수 있고, 선택된 예측 모드의 식별을 선택된 모드에 대응하는 예측 기준 표시자들과 함께 제어기(1060)에 공급할 수 있다.
제어기(1060)는 코딩 시스템(1000)의 전체 동작을 제어할 수 있다. 제어기(1060)는 입력 픽셀 블록들 및 또한 코딩 비트레이트 목표들 및 다른 동작 파라미터들과 같은 외부 제약들의 분석에 기초하여 픽셀 블록 코더(1010) 및 예측기(1050)에 대한 동작 파라미터들을 선택할 수 있다. 본 논의와 관련된 바와 같이, 양자화기(1013.1 내지 1013.N)에 의해 사용될 양자화 파라미터들 및 변환 모드들을 선택하는 경우, 제어기는 그러한 파라미터들을 신택스 유닛(1070)에 제공할 수 있으며, 이는 그러한 파라미터들을 나타내는 데이터를 시스템(1000)에 의해 출력되는 코딩된 비디오 데이터의 데이터 스트림 내에 포함할 수 있다. 제어기(1060)는 또한 하나 이상의 양자화기 유닛들(이를테면, 계수 양자화기(1013.2))에 의해 어떠한 양자화도 적용되지 않아야 한다고 결정할 수 있으며, 이 경우에 제어기(1060)는 양자화기(1013.2)를 디스에이블시킬 수 있다. 위에서 논의된 바와 같이, 제어기(1060)는 또한 변환 유닛(1014)의 동작 모드를 결정할 수 있다.
논의된 바와 같이, 양자화 파라미터들은 픽셀 블록의 모든 픽셀들에 균일하게 적용되는 단일 값들로 제공될 필요는 없으며, 대신에, 그 값들이 각각의 픽셀 위치에서 변하는 양자화 파라미터들의 각각의 어레이들로서 제공될 수 있다. 하나의 실시예에서, 각각 상이한 픽셀 위치들에서 각각의 양자화 값들을 갖는 다양한 양자화기 어레이들이 사전결정된 프로토콜에 따라 정의될 수 있고, 동작 동안, 제어기(1060)는 인덱스 또는 다른 식별자를 제공함으로써 어느 어레이를 사용할지를 식별할 수 있다.
다른 실시예에서, (단일 값이거나 값들의 어레이이든 간에) 양자화 파라미터들은 이미지 데이터의 특성들로부터 도출될 수 있다. 예를 들어, 양자화 파라미터는 픽셀 잔차들에 대응하는 예측 픽셀 값들의 세기에 기초하여 선택될 수 있다. 이 경우에, 양자화 파라미터의 값은 예측기의 세기 값에 따라 모든 픽셀에 대해 변할 수 있는데, 예를 들어, 값은 더 작은 예측기 값을 갖는 샘플보다 더 큰 예측기 값을 갖는 샘플에 대해 더 높을 수 있다. 이러한 양자화 파라미터들은 선형, 즉 스케일러, 공식을 사용하여 정의될 수 있거나, 더 복잡한 비-선형/비-균일 공식을 사용할 수 있다.
하나의 실시예에서, 양자화기는 형태 q(i,j) = fk(p(i,j), i, j)의 사전결정된 함수에 의해 표현될 수 있으며, 여기서 q는 사안이 되는 양자화기를 나타내고, i 및 j는 양자화되는 픽셀 블록 내의 값의 위치들(픽셀-도메인 값 또는 변환-도메인 값)을 나타내고, p(i,j)는 양자화되는 픽셀 세기 값을 나타내고, fk는 p, i 및 j 내지 q에 관한 함수를 나타낸다. 시그널링의 일부로서, 제어기(260)는 사용되는 함수를 식별하는 데이터, 및 각각의 함수가 동작하는 임의의 다른 데이터(예를 들어, 각각의 함수에서 작동할 수 있는 임의의 스케일러들 및 오프셋들)를 제공할 수 있다.
양자화 프로세스는 또한 룩업 테이블 형태(도시되지 않음)를 사용하여 특정될 수 있다. 룩업 테이블 형태는 룩업 테이블 내에 포함되지 않은 소정 값들의 양자화/역양자화 프로세스를 결정하기 위한 보간 기법들의 사용을 수반할 수 있다. 대안적으로, 양자화 파라미터들은 이전에 코딩된 이웃 픽셀 블록들의 양자화 파라미터들로부터 예측될 수 있다. 추가의 실시예에서, 양자화 파라미터들의 제1 세트는 코딩 시퀀스의 더 높은 레벨 구조(예를 들어, 프레임 또는 슬라이스 헤더)에서 시그널링될 수 있고, 구조의 픽셀 블록들이 코딩됨에 따라 양자화 파라미터들의 시그널링된 세트에 대한 변경들이 픽셀 블록x픽셀 블록 기준으로 시그널링될 수 있다.
동작 동안, 제어기(1060)는 양자화기들(1013, 1014 및 1015) 및 변환 유닛(1014)의 동작 파라미터들을 이미지 데이터의 상이한 세분성들로 변경할 수 있으며, 픽셀 블록별 기준으로 또는 더 큰 세분성, 예를 들어, 프레임별, 슬라이스별, LCU별, 또는 다른 영역으로 변경할 수 있다. 일 실시예에서, 양자화 파라미터들은 픽셀별 기준으로 변경될 수 있다.
추가적으로, 논의된 바와 같이, 제어기(1060)는 인-루프 필터(1030) 및 예측기(1050)의 동작을 제어할 수 있다. 그러한 제어는 예측기(1050)에 대한 모드 선택(람다, 테스트될 모드들, 검색 윈도우들, 왜곡 전략들 등), 및 인-루프 필터(1030)에 대한 필터 파라미터들, 재정렬 파라미터들, 가중된 예측 등의 선택을 포함할 수 있다.
도 11은 본 발명의 일 실시예에 따른 디코딩 시스템(1100)의 기능적 블록도이다. 디코딩 시스템(1100)은 신택스 유닛(1110), 픽셀 블록 디코더(1120), 인-루프 필터(1130), 예측 버퍼(1140), 예측기(1150), 및 제어기(1160)를 포함할 수 있다. 신택스 유닛(1110)은 코딩된 비디오 데이터 스트림을 수신할 수 있고, 코딩된 데이터를 그의 구성 부분들로 파싱할 수 있다. 코딩 파라미터들을 나타내는 데이터는 제어기(1160)에 제공될 수 있는 한편, 코딩된 잔차들을 나타내는 데이터(도 10의 픽셀 블록 코더(1010)에 의해 출력된 데이터)는 픽셀 블록 디코더(1120)에 제공될 수 있다. 픽셀 블록 디코더(1120)는 픽셀 블록 코더(1010)(도 10)에 의해 제공되는 코딩 동작들을 반전시킬 수 있다. 인-루프 필터(1130)는 재구성된 픽셀 블록 데이터를 필터링할 수 있다. 재구성된 픽셀 블록 데이터는 디스플레이를 위한 프레임들로 어셈블되고, 디코딩 시스템(1100)으로부터 출력 비디오로서 출력될 수 있다. 프레임들은 또한 예측 동작들에 사용하기 위해 예측 버퍼(1140)에 저장될 수 있다. 예측기(1150)는 코딩된 비디오 데이터 스트림 내에 수신된 코딩 데이터에 의해 결정되는 바에 따라 예측 데이터를 픽셀 블록 디코더(1120)에 공급할 수 있다.
픽셀 블록 디코더(1120)는 엔트로피 디코더(1121), 역다중화기(1122), 복수의 계수 역양자화기들(1123.1 내지 1123.N), 복수의 역변환 유닛들(1124.1 내지 1124.N), 복수의 역양자화기들(1125.1 내지 1125.N), 평균기(1126), 및 가산기(1127)를 포함할 수 있다. 엔트로피 디코더(1121)는 엔트로피 코더(1016)(도 10)에 의해 수행되는 프로세스들을 반전시키기 위해 엔트로피 디코딩을 수행할 수 있다. 디멀티플렉서(1122)는 코딩된 비디오 데이터를 픽셀 블록 코더(1010)(도 10)의 각각의 체인들로부터 픽셀 블록 디코더(1120) 내의 대응하는 디코딩 체인들로 라우팅할 수 있다. 각각의 계수 역양자화기(1123.1, 1123.2, ..., 1123.N)는 픽셀 블록 코더(1010)(도 10)의 대응하는 계수 양자화기(1015.1, 1015.2, ..., 1015.N)의 동작들을 반전시킬 수 있다. 유사하게, 역변환 유닛들(1124.1, 1124.2, ..., 1124.N) 및 역양자화기들(1125.1, 1125.2, ..., 1125.N)은 픽셀 블록 코더(1010)(도 10)로부터의 그들의 대응하는 유닛들의 동작을 각각 반전시킬 수 있다. 그들은 코딩된 비디오 데이터 스트림 내에 제공되는 양자화 파라미터들을 사용할 수 있다. 양자화기들(1013.1 내지 1013.N) 및 계수 양자화기들(1015.1 내지 1015.N)의 동작들은 다양한 경우들에서 데이터를 절단하기 때문에, 계수 역양자화기들(1123.1, 1123.2, ..., 1123.N) 및 역양자화기들(1125.1 내지 1125.N)에 의해 재구성된 잔차 데이터는 픽셀 블록 코더(1010)(도 10) 내의 그들의 상대방들에 제시된 입력 데이터와 비교할 때 코딩 에러들을 가질 가능성이 있다.
평균기(1126)는 다양한 디코딩 체인들의 출력들의 평균을 낼 수 있다. 상이한 코딩 체인들의 기여도들은 동일한 가중치를 받을 수 있거나, 대안적으로, 제어기(1160)에 의해 할당된 가중치들 - 가중치들은 코딩된 비디오 데이터로부터 획득됨 -에 기초하여 가중될 수 있다. 평균기(1126)의 출력은 재구성된 잔차 데이터로서 가산기(1127)에 입력될 수 있다.
가산기(1127)는 감산기(1012)(도 10)에 의해 수행되는 동작들을 반전시킬 수 있다. 그것은 코딩된 비디오 데이터 스트림 내의 예측 기준들에 의해 결정되는 바에 따라 예측기(1150)로부터 예측 픽셀 블록을 수신할 수 있다. 가산기(1127)는 평균기(1126)로부터 가산기에 입력된 재구성된 잔차 값들에 예측 픽셀 블록을 추가할 수 있다.
인-루프 필터(1130)는 재구성된 픽셀 블록 데이터에 대해 다양한 필터링 동작들을 수행할 수 있다. 예시된 바와 같이, 인-루프 필터(1130)는 디블록킹 필터(1132) 및 SAO 필터(1133)를 포함할 수 있다. 디블록킹 필터(1132)는 코딩으로 인해 발생하는 픽셀 블록들 사이의 불연속성들을 감소시키기 위해 재구성된 픽셀 블록들 사이의 시임들에서의 데이터를 필터링할 수 있다. SAO 필터들은, 예를 들어, 에지 방향/형상 및/또는 픽셀 레벨에 기초하여, SAO 유형에 따라 오프셋을 픽셀 값들에 추가할 수 있다. 디블록킹 필터(1132) 및 SAO 필터(1133)의 동작은 이상적으로는 코딩 시스템(1000)(도 10) 내의 그들의 상대방들의 동작을 모방할 것이다. 따라서, 송신 에러들 또는 다른 이상들의 부재 시, 디코딩 시스템(1100)의 인-루프 필터(1130)로부터 획득된 디코딩된 프레임 데이터는 코딩 시스템(1000)(도 10)의 인-루프 필터(1030)로부터 획득된 디코딩된 프레임 데이터와 동일할 것이며; 이러한 방식으로, 코딩 시스템(1000) 및 디코딩 시스템(1100)은 그들 각각의 예측 버퍼들(1040, 1140)에 공통 세트의 기준 픽처들을 저장해야 한다.
예측 버퍼(1140)는 다른 픽셀 블록들의 이후 예측에 사용하기 위해 필터링된 픽셀 데이터를 저장할 수 있다. 예측 버퍼(1140)는 인트라 예측에 사용하기 위해 코딩될 때 각각의 프레임의 디코딩된 픽셀 블록 데이터를 저장할 수 있다. 예측 버퍼(1140)는 또한 디코딩된 기준 프레임들을 저장할 수 있다.
논의된 바와 같이, 예측기(1150)는 예측 데이터를 픽셀 블록 디코더(1120)에 공급할 수 있다. 예측기(1150)는 코딩된 비디오 데이터 스트림 내에 공급된 예측 기준 표시자들에 의해 결정되는 바에 따라 예측된 픽셀 블록 데이터를 공급할 수 있다.
제어기(1160)는 코딩 시스템(1100)의 전체 동작을 제어할 수 있다. 제어기(1160)는 코딩된 비디오 데이터 스트림 내에 수신된 파라미터들에 기초하여 픽셀 블록 디코더(1120) 및 예측기(1150)에 대한 동작 파라미터들을 설정할 수 있다. 본 논의와 관련된 바와 같이, 이러한 동작 파라미터들은 양자화 파라미터들 및 역변환 유닛(1123)에 대한 동작 모드들을 포함할 수 있다. 논의된 바와 같이, 수신된 파라미터들은 이미지 데이터의 다양한 세분성들로 설정될 수 있으며, 예를 들어, 픽셀 블록별 기준, 프레임별 기준, 슬라이스별 기준, LCU별 기준 또는 입력 이미지에 대해 정의된 다른 영역들에 기초하여 설정될 수 있다.
도 10 및 도 11의 실시예들은 여러 차원들, 도 2 및 도 3의 실시예들보다 더 많은 차원들을 따른 이미지 데이터의 양자화를 제공한다. 도 8 및 도 9의 실시예에서와 같이, 도 10 및 도 11의 코딩 시스템들 및 디코딩 시스템들은 코딩 시스템들 및 디코딩 시스템들이 동일한 양자화기 능력들을 갖지 않더라도 본 논의의 고유한 이점들을 달성할 수 있다.
또한, 도 10의 실시예는 코딩 품질 및 대역폭 전환을 평가하기 위해, 코딩 동안 특정 양자화 기법들을 테스트할 기회를 코딩 시스템에 제공한다. 코딩 후에, 도 10의 코딩 시스템(1000)은 주어진 코딩 체인의 결과들이 불량하다고 결정할 수 있다. 그와 같은 결정에 응답하여, 코딩 시스템은 각각의 코딩 체인의 가중치(W)를 0으로 설정하고, 코딩된 비디오 데이터 스트림으로부터 그 체인의 코딩된 데이터를 생략할 수 있다.
논의된 바와 같이, 전술한 실시예들의 양자화기들 및 역양자화기들의 동작은 코딩되고, 이어서 디코딩되는 각각의 픽셀 블록에 대해 재구성될 수 있다. 따라서, 단일 이미지가 다수의(a wide array of) 양자화 동작들의 대상이 될 수 있다. 도 12 및 도 13은 프레임들에 대한 양자화의 예시적인 선택들을 예시한다.
또한 논의된 바와 같이, 주어진 프레임에 대한 양자화 모드들의 선택은 상이한 세분성들로 이루어질 수 있다. 예를 들어, 코딩되는 각각의 픽셀 블록에 대해 새롭게 양자화 모드들을 선택하는 것이 편리할 수 있다. 그러나, 다른 실시예들에서, 슬라이스별 기준, LCU별 기준 또는 프레임별 기준으로 양자화 모드들을 선택하는 것이 편리할 수 있다.
전술한 논의는 코딩 시스템들, 디코딩 시스템들, 및 그들을 구현할 수 있는 기능 유닛들의 맥락에서 본 발명의 다양한 실시예들을 기술하였다. 실제로, 이러한 시스템들은 통합 비디오 카메라들(예를 들어, 카메라 인에이블드 폰들, 엔터테인먼트 시스템들 및 컴퓨터들)이 구비된 모바일 디바이스들 및/또는 화상 회의 장비 및 카메라 인에이블드 데스크톱 컴퓨터들과 같은 유선 통신 시스템들과 같은 다양한 디바이스들에 적용될 수 있다. 일부 애플리케이션들에서, 전술한 기능 블록들은 통합된 소프트웨어 시스템의 구성요소들로서 제공될 수 있는데, 여기서 블록들은 프로그램 명령어들로서 메모리에 저장되고, 일반적인 프로세싱 시스템에 의해 실행되는 컴퓨터 프로그램의 구성요소들로서 제공될 수 있다. 다른 응용예들에서, 기능 블록들은 프로세싱 시스템의 개별 회로 컴포넌트들, 예컨대, 디지털 신호 프로세서 또는 주문형 집적 회로 내의 기능 유닛들로서 제공될 수 있다. 본 발명의 또 다른 애플리케이션들은 전용 하드웨어 및 소프트웨어 컴포넌트들의 하이브리드 시스템으로서 구현될 수 있다. 더욱이, 본 명세서에 기재된 기능 블록들은 별개의 구성요소들로서 제공될 필요는 없다. 예를 들어, 도 1 내지 도 11은 별개의 유닛들로서 비디오 코더들 및 디코더들의 컴포넌트들을 예시하지만, 하나 이상의 실시예들에서, 그들 중 일부 또는 전부는 통합될 수 있고, 이들이 별개의 유닛들일 필요는 없다. 그러한 구현예의 상세사항들은 달리 위에서 언급하지 않는 한 본 발명의 동작에 중요하지 않다.
또한, 본 명세서에 예시된 도면들은 본 발명의 주제를 제시하기 위해 필요한 만큼의 세부사항만을 제공하였다. 실제로, 비디오 코더들 및 디코더들은 전형적으로, 예시된 코딩 파이프라인들 전체에 걸쳐 데이터를 저장하기 위한 버퍼들 및 통신 네트워크와 상대방 코더/디코더 디바이스와의 통신을 관리하기 위한 통신 송수신기들을 비롯한, 본 명세서에 기술된 것들 외의 기능 유닛들도 포함할 것이다. 그러한 구성요소들은 명료함을 위해 전술한 논의로부터 생략되었다.
본 발명의 여러 실시예가 본 명세서에 구체적으로 예시 및/또는 기술된다. 그러나, 본 발명의 수정 및 변형이 본 발명의 사상 및 의도된 범주로부터 벗어남이 없이 상기의 교시에 의해 그리고 첨부한 특허청구범위의 범위 내에 포함된다는 것이 인지될 것이다.
Claims (29)
- 비디오 코딩 방법으로서,
비디오 시퀀스의 디코딩된 기준 이미지 데이터로부터 예측 데이터를 생성하는 단계;
입력 데이터의 어레이와 상기 예측 데이터의 비교로부터 픽셀 잔차(pixel residual)들을 생성하는 단계;
각각의 공간 양자화 파라미터에 따라 다운스케일러로 상기 픽셀 잔차들의 공간 해상도를 감소시킴으로써 제1 양자화하는 단계;
각각의 잔차 양자화 파라미터에 따라 상기 제1 양자화된 픽셀 잔차들의 개별 샘플들을 제2 양자화하는 단계;
상기 제2 양자화된 픽셀 잔차들을 변환 계수들로 변환하는 단계;
상기 변환 계수들을 엔트로피 코딩하는 단계; 및
상기 엔트로피 코딩된 변환 계수들, 상기 공간 양자화 파라미터들 및 상기 잔차 양자화 파라미터들을 출력하는 단계
를 포함하는, 비디오 코딩 방법. - 제1항에 있어서, 상기 제1 양자화하는 단계는 상기 픽셀 잔차들의 어레이를 다운스케일링하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서, 상기 제1 양자화하는 단계는 컬러 컴포넌트에 의해 균일하게 상기 픽셀 잔차들의 어레이를 양자화하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서, 상기 제1 양자화하는 단계는 컬러 컴포넌트에 의해 불균일하게 상기 픽셀 잔차들의 어레이를 양자화하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서, 상기 제1 양자화하는 단계는 상기 픽셀 잔차들의 값들을 양자화하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서, 상기 제1 양자화하는 단계는 상기 어레이의 하나의 방향을 따라 불균일하게 상기 픽셀 잔차들의 어레이를 양자화하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서, 상기 제1 양자화하는 단계는 각자의 픽셀의 예측 값 세기에 기초하여 불균일하게 값들을 양자화하는 단계를 포함하는, 비디오 코딩 방법.
- 제1항에 있어서,
상기 변환 계수들을 제3 양자화하는 단계를 더 포함하고,
상기 변환 계수들을 엔트로피 코딩하는 단계는 상기 제3 양자화된 변환 계수들을 엔트로피 코딩하는 단계를 포함하는, 비디오 코딩 방법. - 삭제
- 제1항에 있어서, 상기 엔트로피 코딩하는 단계로부터 획득된 코딩된 데이터와 함께 상기 제1 양자와하는 단계 및 상기 제2 양자화하는 단계의 파라미터들을 채널로 송신하는 단계를 더 포함하는, 비디오 코딩 방법.
- 비디오 디코딩 방법으로서,
채널로부터 수신된 코딩된 비디오 시퀀스의 기준 이미지 데이터를 디코딩하는 단계;
상기 디코딩된 기준 이미지 데이터로부터 예측 데이터를 예측하는 단계;
상기 코딩된 비디오 시퀀스의 코딩된 비디오 데이터를 엔트로피 디코딩하여 변환 계수들을 생성하는 단계;
변환 도메인에서 상기 변환 계수들을 픽셀 도메인에서의 재구성된 잔차 데이터로 변환하는 단계;
상기 재구성된 잔차 데이터의 개별 샘플들을 각각의 제1 역양자화된 잔차 데이터로 제1 역양자화하는 단계;
업스케일러로 상기 제1 역양자화된 잔차 데이터의 공간 해상도를 증가시킴으로써 제2 역양자화하는 단계; 및
상기 제2 역양자화된 잔차 데이터로부터 그리고 상기 예측 데이터로부터 재구성된 픽셀 값들을 생성하는 단계
를 포함하는, 비디오 디코딩 방법. - 제11항에 있어서, 상기 제2 역양자화하는 단계는 상기 픽셀-도메인 값들의 어레이를 업스케일링하는 단계를 포함하는, 비디오 디코딩 방법.
- 제11항에 있어서, 상기 제2 역양자화하는 단계는 컬러 컴포넌트에 의해 상기 픽셀-도메인 값들의 어레이를 균일하게 역양자화하는 단계를 포함하는, 비디오 디코딩 방법.
- 제11항에 있어서, 상기 제2 역양자화하는 단계는 컬러 컴포넌트에 의해 상기 픽셀-도메인 값들의 어레이를 불균일하게 역양자화하는 단계를 포함하는, 비디오 디코딩 방법.
- 제11항에 있어서, 상기 제2 역양자화하는 단계는 상기 픽셀-도메인 값들의 값들을 역양자화하는 단계를 포함하는, 비디오 디코딩 방법.
- 제11항에 있어서,
상기 변환 계수들을 제3 역양자화하는 단계를 더 포함하고,
상기 변환 계수들을 변환하는 단계는 상기 제3 역양자화된 변환 계수들을 변환하는 단계를 포함하는, 비디오 디코딩 방법. - 삭제
- 제11항에 있어서, 상기 제1 역양자화하는 단계 및 상기 제2 역양자화하는 단계의 파라미터들은 채널 내에 수신되는, 비디오 디코딩 방법.
- 비디오 코더로서,
디코딩된 기준 이미지 데이터로부터 예측 데이터를 예측하기 위한 예측기;
코딩될 데이터 및 상기 예측 데이터에 대한 입력들을 각각 갖는 감산기;
상기 감산기의 출력과 통신하는 입력을 갖는 제1 양자화기 - 상기 제1 양자화기는 다운스케일러로 상기 코딩될 데이터의 공간 해상도를 감소시키도록 동작 가능함 -;
상기 제1 양자화기의 출력과 통신하는 입력을 갖는 제2 양자화기 - 상기 제2 양자화기는 다운스케일링된 잔차 값들의 개별 샘플들을 양자화하도록 동작 가능함 -;
상기 제2 양자화기의 출력과 통신하는 입력을 갖는 변환 유닛; 및
상기 변환 유닛의 출력과 통신하는 입력을 갖는 엔트로피 코더
를 포함하는, 비디오 코더. - 제19항에 있어서, 상기 제1 양자화기와 상기 변환 유닛 사이의 통신 경로에 제공되는 제3 양자화기를 더 포함하며, 상기 제3 양자화기는 상기 제1 양자화기 및 상기 제2 양자화기에 비해, 코딩될 데이터의 상이한 속성들을 양자화하도록 동작가능한, 비디오 코더.
- 제19항에 있어서, 상기 제1 양자화기, 변환 유닛, 제2 양자화기 및 엔트로피 코더는 제1 코딩 체인을 형성하고,
상기 비디오 코더는 적어도 하나의 다른 코딩 체인을 포함하며, 상기 적어도 하나의 다른 코딩 체인은:
상기 감산기의 출력과 통신하는 입력을 갖는 제3 양자화기;
상기 제3 양자화기의 출력과 통신하는 입력을 갖는 제2 변환 유닛;
상기 제2 변환 유닛의 출력과 통신하는 입력을 갖는 제4 양자화기 - 상기 제3 양자화기 및 상기 제4 양자화기는 코딩될 데이터의 상이한 속성들을 양자화하도록 동작가능함 -; 및
상기 제4 양자화기의 출력과 통신하는 입력을 갖는 제2 엔트로피 코더
를 포함하는, 비디오 코더. - 제19항에 있어서, 상기 제1 양자화기는 다운스케일러인, 비디오 코더.
- 제19항에 있어서, 상기 제1 양자화기는 컬러 컴포넌트-기반 양자화기인, 비디오 코더.
- 제19항에 있어서, 상기 감산기는 입력 픽셀 블록에 할당된 예측 모드에 기초하여 디스에이블될 수 있는, 비디오 코더.
- 비디오 디코더로서,
디코딩된 기준 이미지 데이터로부터 예측 데이터를 예측하기 위한 예측기;
코딩된 비디오 데이터에 대한 입력을 갖는 엔트로피 디코더;
상기 엔트로피 디코더의 출력과 통신하는 입력을 갖는 변환 유닛;
상기 변환 유닛의 출력과 통신하는 입력을 갖는 제1 역양자화기 - 상기 제1 역양자화기는 개별 양자화된 값들을 반전시키도록 동작 가능함 -;
상기 제1 역양자화기의 출력과 통신하는 입력을 갖는 제2 역양자화기 - 상기 제2 역양자화기는 업스케일러로 공간 해상도를 증가시키도록 동작 가능함 -; 및
상기 제2 역양자화기의 출력 및 예측 데이터에 대한 제2 입력과 통신하는 제1 입력을 갖는 가산기
를 포함하는, 비디오 디코더. - 제25항에 있어서, 상기 변환 유닛과 상기 제2 역양자화기 사이의 통신 경로에 제공되는 제3 역양자화기를 더 포함하며, 상기 제3 역양자화기는 상기 제1 역양자화기 및 상기 제2 역양자화기에 비해, 디코딩될 데이터의 상이한 속성들을 역양자화하도록 동작가능한, 비디오 디코더.
- 제25항에 있어서, 상기 엔트로피 디코더, 제1 역양자화기, 변환 유닛, 및 제2 역양자화기는 제1 디코딩 체인을 형성하고,
상기 비디오 디코더는 적어도 하나의 다른 디코딩 체인을 포함하며, 상기 적어도 하나의 다른 디코딩 체인은:
상기 코딩된 비디오 데이터에 대한 입력을 갖는 제2 엔트로피 디코더;
상기 제2 엔트로피 디코더의 출력과 통신하는 입력을 갖는 제3 역양자화기;
상기 제3 역양자화기의 출력과 통신하는 입력을 갖는 제2 변환 유닛; 및
상기 제2 변환 유닛의 출력과 통신하는 입력을 갖는 제4 역양자화기
를 포함하며, 상기 제3 역양자화기 및 상기 제4 역양자화기는 디코딩될 데이터의 상이한 속성들을 역양자화하도록 동작가능한, 비디오 디코더. - 제25항에 있어서, 상기 제2 역양자화기는 업스케일러인, 비디오 디코더.
- 제25항에 있어서, 상기 제2 역양자화기는 컬러 컴포넌트-기반 역양자화기인, 비디오 디코더.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020217001782A KR102319987B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/250,608 | 2016-08-29 | ||
US15/250,608 US11153594B2 (en) | 2016-08-29 | 2016-08-29 | Multidimensional quantization techniques for video coding/decoding systems |
PCT/US2017/044208 WO2018044441A1 (en) | 2016-08-29 | 2017-07-27 | Multidimensional quantization techniques for video coding/decoding systems |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217001782A Division KR102319987B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190030230A KR20190030230A (ko) | 2019-03-21 |
KR102207146B1 true KR102207146B1 (ko) | 2021-01-26 |
Family
ID=59523327
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217034784A KR102438062B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
KR1020217001782A KR102319987B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
KR1020227029498A KR102570859B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
KR1020197006000A KR102207146B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217034784A KR102438062B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
KR1020217001782A KR102319987B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
KR1020227029498A KR102570859B1 (ko) | 2016-08-29 | 2017-07-27 | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11153594B2 (ko) |
EP (1) | EP3488609A1 (ko) |
JP (2) | JP6780097B2 (ko) |
KR (4) | KR102438062B1 (ko) |
CN (2) | CN114222122A (ko) |
BR (1) | BR112019004035A2 (ko) |
WO (1) | WO2018044441A1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10999602B2 (en) | 2016-12-23 | 2021-05-04 | Apple Inc. | Sphere projected motion estimation/compensation and mode decision |
US11259046B2 (en) | 2017-02-15 | 2022-02-22 | Apple Inc. | Processing of equirectangular object data to compensate for distortion by spherical projections |
US10924747B2 (en) | 2017-02-27 | 2021-02-16 | Apple Inc. | Video coding techniques for multi-view video |
US11093752B2 (en) | 2017-06-02 | 2021-08-17 | Apple Inc. | Object tracking in multi-view video |
US10754242B2 (en) | 2017-06-30 | 2020-08-25 | Apple Inc. | Adaptive resolution and projection format in multi-direction video |
US20190005709A1 (en) * | 2017-06-30 | 2019-01-03 | Apple Inc. | Techniques for Correction of Visual Artifacts in Multi-View Images |
CN112236995B (zh) | 2018-02-02 | 2024-08-06 | 苹果公司 | 基于多假设运动补偿技术的视频编码、解码方法及编码器、解码器 |
US11924440B2 (en) | 2018-02-05 | 2024-03-05 | Apple Inc. | Techniques of multi-hypothesis motion compensation |
WO2019238008A1 (en) | 2018-06-11 | 2019-12-19 | Mediatek Inc. | Method and apparatus of bi-directional optical flow for video coding |
EP3834416A4 (en) | 2018-08-17 | 2022-08-17 | HFI Innovation Inc. | METHODS AND APPARATUS FOR VIDEO PROCESSING WITH BIDIRECTIONAL PREDICTION IN VIDEO CODING SYSTEMS |
US10986339B2 (en) * | 2019-02-08 | 2021-04-20 | Tencent America LLC | Method and apparatus for harmonization between transform skip mode and multiple transform selection |
KR20200143298A (ko) * | 2019-06-14 | 2020-12-23 | 한국전자통신연구원 | 양자화 행렬 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
CN116347079A (zh) | 2020-04-08 | 2023-06-27 | 日本放送协会 | 编码装置、解码装置及程序 |
JP2021177628A (ja) * | 2020-05-07 | 2021-11-11 | ブラックマジック デザイン ピーティーワイ リミテッドBlackmagic Design Pty Ltd | 変換係数処理方法 |
WO2022174478A1 (zh) * | 2021-02-22 | 2022-08-25 | 浙江大学 | 编码方法、解码方法、编码器、解码器及存储介质 |
CN115174908B (zh) * | 2022-06-30 | 2023-09-15 | 北京百度网讯科技有限公司 | 视频编码的变换量化方法、装置、设备以及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140050271A1 (en) * | 2011-04-25 | 2014-02-20 | Dolby Laboratories Licensing Corporation | Non-Linear VDR Residual Quantizer |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ZA200607434B (en) * | 2004-03-09 | 2008-08-27 | Thomson Res Funding Corp | Reduced resolution update mode for advanced video coding |
CN101371584B (zh) | 2006-01-09 | 2011-12-14 | 汤姆森特许公司 | 提供用于多视图视频编码的降低分辨率的更新模式的方法和装置 |
BRPI0915061A2 (pt) * | 2008-06-12 | 2015-10-27 | Thomson Licensing | métodos e aparelho para codificação e decodificação de vídeo com modo de atualização de profundidade de bit reduzido e modo de atualização de amostragem de croma reduzido |
JP5492206B2 (ja) | 2009-07-27 | 2014-05-14 | 株式会社東芝 | 画像符号化方法および画像復号方法、ならびに、画像符号化装置および画像復号装置 |
DE102010054967B4 (de) * | 2010-12-08 | 2014-08-28 | Schott Ag | Borfreies Universalglas und dessen Verwendung |
JP2012169762A (ja) | 2011-02-10 | 2012-09-06 | Sony Corp | 画像符号化装置と画像復号化装置およびその方法とプログラム |
JP2015508250A (ja) | 2012-01-19 | 2015-03-16 | マグナム セミコンダクター, インコーポレイテッド | 適応低解像度アップデートモードを提供するための方法および機器 |
SG10201710075SA (en) * | 2012-05-14 | 2018-01-30 | Luca Rossato | Decomposition of residual data during signal encoding, decoding and reconstruction in a tiered hierarchy |
JPWO2014050676A1 (ja) * | 2012-09-28 | 2016-08-22 | ソニー株式会社 | 画像処理装置および方法 |
GB2516022A (en) | 2013-07-05 | 2015-01-14 | Canon Kk | Method, device, and computer program for processing high bit-depth content in video encoder and decoder |
US9648332B2 (en) | 2013-10-28 | 2017-05-09 | Qualcomm Incorporated | Adaptive inter-color component residual prediction |
CN111526350B (zh) | 2014-02-25 | 2022-04-05 | 苹果公司 | 自适应视频处理 |
WO2017138352A1 (en) * | 2016-02-08 | 2017-08-17 | Sharp Kabushiki Kaisha | Systems and methods for transform coefficient coding |
-
2016
- 2016-08-29 US US15/250,608 patent/US11153594B2/en active Active
-
2017
- 2017-07-27 KR KR1020217034784A patent/KR102438062B1/ko active IP Right Grant
- 2017-07-27 KR KR1020217001782A patent/KR102319987B1/ko active IP Right Grant
- 2017-07-27 EP EP17749075.2A patent/EP3488609A1/en not_active Ceased
- 2017-07-27 WO PCT/US2017/044208 patent/WO2018044441A1/en unknown
- 2017-07-27 CN CN202210020438.0A patent/CN114222122A/zh active Pending
- 2017-07-27 JP JP2019511854A patent/JP6780097B2/ja active Active
- 2017-07-27 KR KR1020227029498A patent/KR102570859B1/ko active IP Right Grant
- 2017-07-27 BR BR112019004035A patent/BR112019004035A2/pt unknown
- 2017-07-27 KR KR1020197006000A patent/KR102207146B1/ko active IP Right Grant
- 2017-07-27 CN CN201780053103.6A patent/CN109644270B/zh active Active
-
2020
- 2020-10-14 JP JP2020173397A patent/JP7063965B2/ja active Active
-
2021
- 2021-10-04 US US17/493,607 patent/US11539974B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140050271A1 (en) * | 2011-04-25 | 2014-02-20 | Dolby Laboratories Licensing Corporation | Non-Linear VDR Residual Quantizer |
Also Published As
Publication number | Publication date |
---|---|
US11539974B2 (en) | 2022-12-27 |
JP2019528651A (ja) | 2019-10-10 |
KR102570859B1 (ko) | 2023-08-25 |
KR20210010651A (ko) | 2021-01-27 |
US20220103851A1 (en) | 2022-03-31 |
CN109644270B (zh) | 2022-01-18 |
US11153594B2 (en) | 2021-10-19 |
CN114222122A (zh) | 2022-03-22 |
KR20210134423A (ko) | 2021-11-09 |
JP6780097B2 (ja) | 2020-11-04 |
EP3488609A1 (en) | 2019-05-29 |
CN109644270A (zh) | 2019-04-16 |
KR102319987B1 (ko) | 2021-11-02 |
KR20190030230A (ko) | 2019-03-21 |
WO2018044441A1 (en) | 2018-03-08 |
KR20220123337A (ko) | 2022-09-06 |
JP7063965B2 (ja) | 2022-05-09 |
US20180063544A1 (en) | 2018-03-01 |
BR112019004035A2 (pt) | 2019-05-28 |
JP2021036676A (ja) | 2021-03-04 |
KR102438062B1 (ko) | 2022-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102207146B1 (ko) | 비디오 코딩/디코딩 시스템들을 위한 다차원 양자화 기법들 | |
US10212456B2 (en) | Deblocking filter for high dynamic range (HDR) video | |
US20180091812A1 (en) | Video compression system providing selection of deblocking filters parameters based on bit-depth of video data | |
US10567768B2 (en) | Techniques for calculation of quantization matrices in video coding | |
US20150326896A1 (en) | Techniques for hdr/wcr video coding | |
US11743457B2 (en) | Intra interpolation filter for multi-line intra prediction | |
US20110249742A1 (en) | Coupled video pre-processor and codec including reference picture filter that minimizes coding expense during pre-processing mode transitions | |
EP3909237A1 (en) | Method and apparatus for video coding | |
CN113170121A (zh) | 用于比特率减少的视频流自适应滤波 | |
CN113225558B (zh) | 平滑定向和dc帧内预测 | |
US20240171742A1 (en) | Multidimensional quantization techniques for video coding/decoding systems | |
US11758133B2 (en) | Flexible block partitioning structures for image/video compression and processing | |
KR20180113868A (ko) | 카메라 영상의 복호화 정보 기반 영상 재 부호화 방법 및 이를 이용한 영상 재부호화 시스템 | |
BR122024003514A2 (pt) | Método de decodificação de vídeo, decodificador de vídeo, e memória legível por computador | |
KR20220113537A (ko) | 비디오 코딩 방법 및 장치 | |
Erlid | MCTF and JPEG 2000 Based Wavelet Video Coding Compared to the Future HEVC Standard | |
Gomes | Statistical Reconstruction for Predictive Video Coding |
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 | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |