KR101065520B1 - 라인-기반 비디오 레이트 제어 및 압축 - Google Patents

라인-기반 비디오 레이트 제어 및 압축 Download PDF

Info

Publication number
KR101065520B1
KR101065520B1 KR1020097014217A KR20097014217A KR101065520B1 KR 101065520 B1 KR101065520 B1 KR 101065520B1 KR 1020097014217 A KR1020097014217 A KR 1020097014217A KR 20097014217 A KR20097014217 A KR 20097014217A KR 101065520 B1 KR101065520 B1 KR 101065520B1
Authority
KR
South Korea
Prior art keywords
pass
line
low
video
active line
Prior art date
Application number
KR1020097014217A
Other languages
English (en)
Other versions
KR20090096516A (ko
Inventor
펠릭스 씨. 페르난데스
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20090096516A publication Critical patent/KR20090096516A/ko
Application granted granted Critical
Publication of KR101065520B1 publication Critical patent/KR101065520B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods 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 scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/37Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability with arrangements for assigning different transmission priorities to video input data or to video coded data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

라인-기반 비디오 압축을 위한 방법이 제시된다. 상기 방법은 고롬(Golomb) 코딩 성능을 향상시키기 위해 산술 코더의 기본 엘리먼트들을 포함한다. 라인-기반 압축을 위해 상기 방법에서의 동작들을 인버팅함으로써, 대응하는 디코더가 획득될 수 있다. 상기 방법은 또한 양자화된 데이터로부터 예측 나머지들을 생성하기 위해 발견적-구현(heuristic-driven) 방법을 제공하며, 여기서 예측은 최대 상관의 방향으로 이루어지며 그 결과 각각의 어레이 엘리먼트에서 이러한 방향을 특정하는 추가적인 데이터를 디코더로 제공할 필요가 없게 된다. 또한, 라인-기반 비디오 레이트 제어를 위한 방법이 제시된다. 라인-기반 비디오 레이트 제어 방법은 패킷별 기준 및 라인별 기준을 포함하는, 시스템 운용 파라미터들을 변경하기 위한 시스템 피드백을 포함한다.

Description

라인-기반 비디오 레이트 제어 및 압축{LINE-BASED VIDEO RATE CONTROL AND COMPRESSION}
본 발명은 일반적으로 무선 통신에 관한 것이며, 더욱 상세하게는, 무선 비디오 데이터 통신을 위한 라인-기반 레이트 제어에 관한 것이다.
초-광대역(UWB) 무선 통신은 전례없는 높은 레이트들에서의 데이터 전송을 가능하게 한다. 고-화질(high-definition) 비디오 포맷들은 이제 이전에 가능했던 것보다 더 낮은 압축 비율(ratio)들에서 전송될 수 있기 때문에, 비디오 전송은 이러한 높은 레이트들로부터 이득을 얻게 된다. 종래의 시스템들은 프레임-기반 또는 블록-기반 압축 방식들에 의존하며, 이러한 압축 방식들은 두 개의 넓은 카테고리들로 구분된다.
특정된 용량을 가지는 채널을 통해 비디오를 전송하기 위해, 스케일가능하지 않은(non-scalable) 레이트-제어 방법들은 평균 비트 레이트가 채널 용량에 근접하도록 비디오 프레임들의 블록들을 압축하는 양자화 파라미터들을 선택하기 위해 복잡한 발견적 방법론(heuristics)을 이용한다. 그러나, 순간적인(instantaneous) 비트 레이트들은 채널 용량을 크게 초과할 수 있기 때문에, 이러한 방법들은 데이터 손실을 방지하기 위해 큰 버퍼들을 사용한다.
비디오가 스케일가능한 레이트 제어를 통해 전송될 때, 각각의 비디오 프레임 또는 블록은 스케일가능한(또는 내장되는) 비트 스트림으로 코딩되며, 이러한 비트 스트림은 순간적인 비트 레이트가 결코 채널 용량을 초과하지 않는다는 것을 보장하기 위해 임의의 포인트에서 절단(truncate)될 수 있다. 그러나, 이러한 방법들은 복잡한, 멀티패스(multipass), 비트 평면-지향(plane-oriented) 프로세싱이 스케일가능한 비트 스트림을 생성할 수 있도록 전체 프레임 또는 블록을 버퍼링하기 위한 충분한 메모리를 사용한다.
전형적으로, 비디오 레이트-제어 방법들은 주어진 레이트에 대한 왜곡을 최소화함으로써 품질을 최적화하기 위해 레이트-왜곡 이론을 적용한다. 실제적으로, 프레임-기반 및 블록-기반 비디오 코더들은 레이트-강제된(rate-constrained) 왜곡 최소화를 위해 멀티패스 방법들 또는 비용이 비싼 검색들을 이용한다.
프레임-기반 및 블록-기반 시스템들과 대조적으로, 제안되는 라인-기반(line-based) 레이트 제어는 버퍼 상태 및 채널 용량과 같은 가변적인 시스템 조건들에 대하여 라인별(line-by-line) 기준으로 비디오 압축을 적응시킨다. 무선 비디오 시스템들이 프레임- 및 블록-기반에서 라인-기반 레이트 제어로 바뀔 때, 가변적인 채널 용량 하에서 버퍼 오버플로우(overflow)없이 최대 비디오 품질이 획득되도록 라인-기반 레이트 제어를 위한 최소한의 양자화 파라미터들을 결정하는 것이 기술적으로 요구된다.
이미지/비디오 인코더는 일반적으로 두 개의 컴포넌트들, 압축 엔진 및 레이트 제어를 포함한다. 레이트 제어는 인코더가 내장된 시스템으로부터 입력들을 수신하고 그 다음에 상기 시스템에 의해 출력 비트스트림이 전송될 수 있도록 압축 엔진의 동작을 제어하는 파라미터들을 생성한다. 본 발명에 따른 일 실시예는 낮은-복잡도(low-complexity), 저비용(low-cost) 레이트 제어를 위한 방법을 제공한다.
기본(underlying) 시스템으로부터 다음의 피드백을 수신하는 이미지/비디오 인코더를 고려하도록 한다:
(a) 초기 스루풋(throughput) 추정,
(b) 패킷 크기,
(c) 패킷 재-전송 피드백,
(d) 다가올 비디오-디스에이블(disabled) 시간 슬롯들에 대한 통지, 및
(e) 전송-버퍼 포화도(fullness).
본 발명의 다른 실시예는 패킷별(packet-by-packet) 기준으로, 레이트 제어를 통해, 동작 포인트를 적응적으로 변경하기 위해 위에서-언급된 피드백을 사용함으로써 디코딩된 이미지/비디오 품질을 향상시키기 위한 저-비용, 펌웨어-구현가능한 방법을 제공한다.
다른 변형에서, 이미지/비디오 인코더는 기본 시스템으로부터 다음의 피드백을 수신한다:
(a) 초기 스루풋 추정,
(b) 압축된 라인 크기,
(c) 패킷 재-전송 피드백,
(d) 다가올 비디오-디스에이블 시간 슬롯들에 대한 통지, 및
(e) 전송-버퍼 포화도.
이러한 대안적인 실시예는 라인별(line-by-line) 기준으로, 레이트 제어를 통해, 동작 포인트를 적응적으로 변경하기 위해 위에서-언급된 피드백을 사용함으로써 디코딩된 이미지/비디오 품질을 향상시키기 위한 저-비용, (펌웨어와 반대되는) 하드웨어-구현가능한 방법을 제공한다.
위에서 논의된 바와 같이, 이미지/비디오 인코더는 일반적으로 두 개의 컴포넌트들, 압축 엔진 및 레이트 제어를 포함한다. 레이트 제어는 인코더가 내장되는 시스템으로부터 입력들을 수신하고 그 다음에 출력 비트스트림이 상기 시스템에 의해 전송될 수 있도록 압축 엔진의 동작을 제어하는 파라미터들을 생성한다. 상기 인코더에 대응하는 디코더는 상기 비트스트림으로부터 원시(raw) 이미지/비디오 데이터가 재구성되도록 압축 엔진의 동작들을 인버팅(invert)하는 압축-해제(de-compression) 엔진을 포함한다. 본 발명의 일 실시예는 낮은-복잡도, 저-비용, 라인-기반 압축 엔진을 위한 방법을 제공한다. 이러한 압축 엔진에서의 동작들을 인버팅함으로써, 대응하는 디코더가 획득된다.
본 발명의 추가적인 실시예는 더 높은 무손실(lossless) 및 손실(lossy) 압축 비율들을 출력하는 라운딩(rounding) 방법을 포함한다. 웨이브렛(wavelet) 변환들은 종종 이미지/비디오 데이터를 무-상관(de-correlate)시키기 위해 사용되며 그리하여 무손실 및 손실 압축 비율들을 증가시킨다. 구현 비용을 낮추기 위해, 라운딩 동작들은 웨이브렛 변환들의 정수 버전들을 구현하기 위해 사용된다.
이미지/비디오 인코더는 더 긴 코드들이 원래의 데이터의 에지(edge)들에 대응하는 더 큰 고역 통과 계수들로 할당되는 엔트로피 코딩이 뒤따르는 멀티-해상도(multi-resolution) 변환을 이용한다. 본 발명의 다른 실시예는 압축 비율을 증가시키기 위한 방법을 제공한다.
본 발명의 추가적인 실시예는 향상된 왜곡-추정 정확도를 위한 방법을 제공한다. 웨이브렛-변환 기반 압축 엔진을 가지는 이미지/비디오 인코더에서, 레이트 제어는 웨이브렛-도메인 왜곡들로부터 픽셀-도메인 왜곡들을 추정한다. 불행하게도, 라운딩 잡음으로 인하여, 낮은-복잡도, 정수 웨이브렛 변환이 사용될 때 픽셀-도메인 왜곡 추정의 정확도는 낮아진다.
압축 엔진이 강한 수직 및/또는 수평 상관을 포함하는 로컬화된 영역들을 가지는 양자화된 2차원 어레이를 인코딩하는 이미지/비디오 인코더에서, 예측 나머지(prediction residual)들이 각각의 어레이 엘리먼트에 대한 최대 상관의 방향으로 생성된다면 더 높은 압축 비율이 획득될 수 있다. 본 발명의 일 실시예는 양자화된 데이터로부터 예측 나머지들을 생성하기 위해 발견적-구현(heuristic-driven) 방법을 제공한다. 상기 발견적 방법은 최대 상관의 방향으로 예측을 수행하며 그 결과 각각의 어레이 엘리먼트에서 이러한 방향을 특정하는 추가적인 데이터를 디코더로 제공할 필요가 없게 된다.
이러한 인코더를 위한 레이트 제어는 모든 양자화 레벨들에서 인코딩된 어레이에 대한 비트 소비(consumption)를 예측한다. 본 발명의 추가적인 실시예는 다양한 특정된 양자화 레벨들에서 엔트로피-코딩된 나머지들의 정확한 비트 소비를 예측하기 위한 낮은-복잡도 방법을 제공한다.
이미지/비디오 인코더에서, 압축 엔진은 비트스트림을 생성하기 위한 엔트로피 인코더를 포함한다. 고롬(Golomb) 코드들은 효율적, 낮은-복잡도, 저-비용의 엔트로피 코더를 구현하기 위해 사용될 수 있다. 본 발명의 일 실시예는 이미지/비디오 인코더들에 대한 고롬(Golomb) 코드들을 생성하기 위한 감소된-비용의 방법을 제공한다. 이러한 방법의 역(inverse)은 대응하는 이미지/비디오 디코더에 대한 엔트로피 디코딩 프로세스를 구체화한다. 또한, 산술 코더의 기본 엘리먼트들은 고롬(Golomb)-코딩 성능을 향상시키기 위해 사용될 수 있다.
본 발명의 양상들은 다음의 상세한 설명 및 도면들로부터 가장 양호하게 이해될 것이다.
도 1은 본 발명의 일 실시예가 구현될 수 있는 전형적인 무선 비디오 시스템의 블록 다이어그램이다.
도 2는 본 발명의 일 실시예에 따른 비디오 프레임의 포맷을 도시한다.
도 3은 본 발명의 일 실시예에 따른 비디오 프레임의 각각의 라인의 RGB 컴포넌트들에 대한 데이터 플로우를 도시하는 블록 다이어그램을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 고역 통과(highpass) 서브밴드 또는 저역 통과(lowpass) 서브밴드 예측 나머지(residual)로부터 유도된 정수와 관련된 지수적-고롬(Golomb) 코드를 정의하는 프로세스를 나타내는 플로우차트이다.
도 5는 본 발명의 일 실시예에 따른 패킷화기들의 쌍을 도시한다.
도 6은 본 발명의 일 실시예에 따른 버퍼 오버플로우 없이 최소한의 왜곡에 대하여 비디오 인코딩을 최적화하도록 제어 출력들을 생성하기 위해 비디오 레이트 제어가 사용하는 입력들을 도시한다.
도 7은 최적의 저역 통과 양자화 설정들을 결정하기 위해 수평 블랭킹(blanking) 주기 동안 실행되는 프로세스를 나타내는 플로우차트를 도시한다.
도 8은 라인의 저역 통과 부분의 코딩된 길이의 계산을 나타내는 플로우차트를 도시한다.
도 9는 라인의 저역 통과 부분으로부터의 제곱된 에러의 계산을 나타내는 플로우차트를 도시한다.
도 10은 최적의 고역 통과 양자화 설정들을 결정하기 위해 수평 블랭킹 주기 동안 실행되는 프로세스를 나타내는 플로우차트를 도시한다.
도 11은 라인의 고역 통과 부분의 코딩된 길이의 계산을 나타내는 플로우차트를 도시한다.
도 12는 라인의 고역 통과 부분으로부터의 제곱된 에러의 계산을 나타내는 플로우차트를 도시한다.
도 13은 최적화된 저역 통과 서브밴드 레이트 계산을 위한 프로세스를 나타낸다.
도 14는 모든 양자화-레벨들 하에서 저역 통과-서브밴드 엔트리 x에 대한 나머지 코드-길이들의 최적화된 계산을 위한 OptimizedLPrates 절차(procedure)를 나타낸다.
도 15는 현재 행으로부터의 저역 통과-서브밴드 엔트리를 현재 저역 통과-서브밴드 행으로부터의 x의 양자화되지 않은 좌측-이웃(left-neighbor)과 더하기 위한 절차를 나타낸다.
도 16은 양자화 입력 추정들에 대한 정정 절차를 도시한다.
도 17은 픽셀들이 양자화된 후에 픽셀들 간의 거리들을 결정하는 절차를 도시한다.
도 18은 특정한 양자화 레벨에서 저역 통과-서브밴드 엔트리 x에 대응하는 나머지를 계산하기 위한 절차를 도시한다.
도 19는 JPEG-2000 이미지 압축 표준에 의해 정의되는 floor(x'+2)를 사용하는 르갈(LeGall)-(5,3) 웨이브렛 변환의 정수 구현을 위한 라운딩 방법을 도시한다.
도 20은 본 발명의 일 실시예에 따른 fix(x'+2)를 사용하는 르갈(LeGall)-(5,3) 웨이브렛 변환의 정수 구현을 위한 라운딩 방법을 도시한다.
도 21은 비디오 레이트 제어 신호들을 위해 사용되는 압축 비율들의 곡선을 도시한다.
도 22는 본 발명의 일 실시예에 따른 향상된 비디오 레이트 제어를 위한 펌웨어-구현 방법을 나타내는 플로우차트이다.
도 23은 본 발명의 일 실시예에 따른 향상된 비디오 레이트 제어를 위한 하드웨어-구현 방법을 나타내는 플로우차트이다.
도 24는 레지스터에 있는 사용되지 않은 바이트들을 클립(clip)하기 위해 사용되는 클립 함수를 나타낸다.
도 25는 도 7에 도시된 프로세스에 대한 대안으로서, 최적의 저역 통과 양자화 설정들을 결정하기 위해 수평 블랭킹 주기 동안 실행되는 프로세스를 나타내는 플로우차트를 도시한다.
도 26은 도 10에 도시된 프로세스에 대한 대안으로서, 최적의 고역 통과 양자화 설정들을 결정하기 위해 수평 블랭킹 주기 동안 실행되는 프로세스를 나타내는 플로우차트를 도시한다.
도 1은 본 발명의 일 실시예가 구현될 수 있는 전형적인 무선 비디오 시스템의 블록 다이어그램이다. 비디오 데이터 스트림은 무선으로 비디오 소스(100)로부터 비디오 싱크(110)(예를 들어, 컴퓨터 모니터, 텔레비전 등)로 전달된다. 무선 비디오 입력 디바이스(101) 및 출력 디바이스(111)는 무선 접속을 제공한다.
도 2는 본 발명의 일 실시예에 따른 비디오 프레임의 포맷을 도시한다. 각각의 비디오 포맷은 액티브(active) 및 블랭킹(blanking) 라인들로 구성된다. 각각의 액티브 라인은 액티브 및 블랭킹 픽셀들로 구성된다. 비디오 프레임의 액티브 비디오 섹션 동안에 데이터가 디스플레이되고 이러한 데이터는 적색, 녹색 및 청색(RGB)의 3개의 컴포넌트들 또는 YUV 4:2:2 포맷으로 구성된다. (YUV 컬러(color) 모델에서, Y는 휘도(luminance) 신호를 나타내고, U 및 V는 컬러-차이 신호들을 나타낸다.)
도 3은 본 발명의 일 실시예에 따른 비디오 프레임의 각각의 라인의 RGB 컴포넌트들에 대한 데이터 플로우를 도시하는 블록 다이어그램을 나타낸다. RGB-대-YUV 블록(302)은 각각의 픽셀에 대한 적색, 녹색 및 청색 컴포넌트들을 4:4:4 포맷의 대응하는 YUV 컴포넌트들로 매핑하기 위해 컬러-공간 변환을 이용한다. 바이패스(bypass) 제어(301)가 어서트(assert)되면, RGB-대-YUV 블록(302)은 바이패스된다.
선택 YUV 제어(303)는 YUV 포맷 변환 블록(304)이 바이패스되는지 여부 또는 저역 통과 필터들 및 다운샘플러들이 YUV 4:4:4 포맷을 YUV 4:2:2 또는 YUV 4:1:1 포맷으로 변환할 것인지 여부를 결정한다.
YUV 포맷 변환 블록(304)에 의해 생성된 YUV 컴포넌트들은 개별적인 웨이브렛 변환들 306(Y), 307(U) 및 308(V)을 통과한다. SelectTfm 제어(305)는 도브쉬(Daubechies)-(7,9) 또는 르갈(LeGall)-(5,3) 웨이브렛 변환들의 2-레벨 정수 버전들이 각각의 컬러-컴포넌트에 대한 저역 통과 및 고역 통과 서브밴드들을 생성하기 위해 사용되는지 여부를 결정한다. 주어진 라인에 대하여, 2-레벨 웨이브렛 변환들이 사용되기 때문에, 저역 통과(높은 우선순위) 웨이브렛 계수들의 수는 라인에 있는 픽셀들의 25%를 구성하며, 고역 통과(낮은 우선순위) 웨이브렛 계수들은 상기 라인에 있는 픽셀들의 75%를 구성한다.
Y-컴포넌트에 대하여, 저역 통과 서브밴드는 LpY로 표시되고, 고역 통과 서브밴드는 HpY로 표시된다. 유사하게, U 및 V 컴포넌트들에 대한 대응하는 서브밴드들은 각각 LpU, HpU, LpV, HpV로 표시된다. 주어진 라인에 대한 LpY, HpY, LpU, HpU, LpV, HpV 서브밴드들은 RAM(309)에 저장되며, RAM(309)은 이러한 서브밴드들에 대한 최적 양자화 설정들을 결정하기 위해 주어진 라인에 대한 모든 서브밴드들로의 비디오 레이트 제어 액세스를 제공한다.
웨이브렛 변환들이 완료되면, 비디어 레이트 제어는 (아래에서 보다 상세하게 설명되는) 각각의 서브밴드들 LpY, HpY, LpU, HpU, LpV, HpV에 대한 최적 양자화 레벨들 qLY, qHY, qLU, qHU, qLV, qHV을 결정한다. 서브밴드 계수들 및 양자화 레벨들의 각각의 쌍들(예를 들어, LpY/qLY, HpY/qHY 등)은 양자화기들(310-315)로 제공되며, 양자화기들은 다음의 프로세스에 의해 양자화된 계수 xq를 계산한다:
Figure 112009041416627-pct00001
위의 의사코드(pseudocode)는 xq를 획득하기 위해 양자화기가 우측 시프팅에 의해 x의 q개의 최하위(least significant) 비트들을 제거하는 것을 보여준다. 더 짧은 엔트로피 코드들을 획득하기 위해, 음수들이 0을 향해 라운딩되도록 xq의 음수 값들은 증가된다.
양자화 후에, 엔트로피 코더들은 대부분의 샘플들이 0 주위에 클러스터링되는 지수적으로 분포된(exponentially distributed) 데이터에 대한 짧은 코드들을 최적으로 출력하기 때문에 상기 데이터는 지수적 분포에 적합(fit)하도록 조절(condition)된다.
양자화된 고역 통과 서브밴드들 HpY', HpU', HpV'는 이미 지수적으로 분포되어 있어 조절할 필요가 없다. ("Noise Removal via Bayesian Wavelet Coding", E. P. Simoncelli, E. H. Adelson, Proceedings of 3rd IEEE international Conference on Image Processing, Vol. 1, pp. 379-382, September 1996을 참조하도록 하며, 상기 문헌의 내용은 여기에 참조로서 통합된다.)
양자화된 저역 통과 서브밴드들 LpY', LpU', LpV'에 대하여, 본 발명의 실시예는 각각 지수적으로 분포된 예측 나머지들 ResY, ResU, ResV를 생성하기 위해 예측 프로세스 316, 317, 318을 적용한다. 이러한 예측 프로세스는 이전 픽셀 라인의 저역 통과 섹션을 사용한다. 표 1은 양자화된 LP 서브밴드의 행(row) n 및 행 n-1을 도시한다.
Figure 112009041416627-pct00002
다음의 입력들에 대하여, 출력은 행 n의 각각의 양자화된 엔트리 xq에 대한 LP 나머지, dx를 포함한다:
1) 양자화된 LP 서브밴드의 행 n 및 행 n-1,
2) Qn, Qn-1: 각각 행 n 및 행 n-1에 대한 양자화 레벨들,
유의: 행 1은 양자화된 LP 서브밴드의 첫번째 행이기 때문에, 행 0 및 Q0은 정의되지 않으며 그러므로 아래에서 사용되지 않는다.
3) 예측 모드: 인터-라인(inter-line) 예측 또는 인트라-라인(intra-line) 예측.
유의: 동일한 예측 모드가 행 n에 있는 모든 엔트리들에 적용된다.
인터-라인 예측은 행 n을 예측하기 위해 행 n-1의 사용을 포함한다. (명백하게, 이러한 모드는 n=1에 대하여 유효하지 않다.) 이러한 예측 프로세스에서, 행 n-1 엔트리들은 스케일링되며 그 결과 이들은 행 n 엔트리들과 동일한 양자화 레벨을 가진다. 다음의 4가지 경우들을 고려하도록 한다:
경우 1: n>1, m>1, Q n -1 >= Q n
aq = aq << (Qn-1 ― Qn),
bq = bq << (Qn-1 ― Qn),
경우 2: n>1, m>1, Q n -1 < Q n
aq = aq >> (Qn-1 ― Qn),
bq = bq >> (Qn-1 ― Qn),
경우 3: n>1, m=1, Q n -1 >= Q n
bq = bq << (Qn-1 ― Qn),
경우 4: n>1, m>1, Q n -1 < Q n
bq = bq >> (Qn-1 ― Qn),
행 n-1 엔트리들을 적절하게 스케일링한 후에, 다음의 예측 프로세스가 xq에 대응하는 나머지 dx를 생성하기 위해 사용된다:
경우들 1 및 2에 대하여:
Figure 112009041416627-pct00003
경우들 3 및 4에 대하여, dx = xq ― bq.
인트라-라인 예측에 대하여, 행 n-1은 행 n을 예측하는데 사용되지 않는다. n=1에 대하여 이러한 예측 모드는 필수적이며 행 n-1과 독립적으로 행 n을 코딩하고자 할 때 n>1에 대하여 또한 선택될 수 있다. 인터-라인 예측과 다르게, 인트라-라인 예측은 스케일링을 필요로 하지 않는다. xq에 대응하는 나머지 dx는 다음과 같은 2가지 경우들에 따라 획득된다:
경우 5: m>1: dx = xq ― cq,
경우 6: m=1: dx = xq.
예측 프로세스를 따라서, 나머지들 ResY, ResU, ResV 및 고역 통과 서브밴드들 HpY', HpU', HpV'는 이제 지수적으로 분포된다. 이것은 본 발명의 일 실시예가 엔트로피 코더들 310-324에서 극히 단순하고, 효과적인 지수적-고롬(Golomb) 코드들을 사용할 수 있도록 한다. (지수적-고롬(Golomb) 코드들에 대한 설명을 위해, "A Compression Method for Clustered Bit-Vectors", J. Teuhola, Information Processing Letters, Vol. 7, pp. 308-311, October 1978을 참조하도록 하며, 상기 문헌의 내용은 여기에 참조로서 통합된다.)
종래 기술들은 웨이브렛-계수 런 렝스(runlength)들을 인코딩하기 위해 지수적-고롬(Golomb) 코드들을 사용한다. ("Generalized Golomb Codes and Adaptive Coding of Wavelet-Transformed Image Subbands", A. Kiely, and M. Klimesh, IPN PR 42-154, Jet-Propulsion Laboratory, California Institute of Technology, April-June 2003, pp. 1-14, August 15, 2003을 참조하도록 한다.) 반면에, 본 발명의 일 실시예는 고역 통과 서브밴드들 및 저역 통과 서브밴드 예측 나머지들을 인코딩하기 위해 이러한 코드들을 사용한다. 단순한 예측 나머지들을 사용하여 지수적-고롬(Golomb) 코딩을 위한 데이터를 조절하는 것은 (아래에서 설명되는) 비디오 레이트-제어를 위한 효율적이고, 정확한 레이트-추정 기법을 획득하도록 한다.
도 4는 고역 통과 서브밴드 또는 저역 통과 서브밴드 예측 나머지로부터 유도된 정수 X와 관련된 지수적-고롬(Golomb) 코드 G를 정의하는 프로세스를 나타내는 플로우차트이다. 제 1 단계는 정수 X의 부호(sign)를 결정하는 것이다(단계 401).
X=0이면, 고롬(Golomb) 코드는 1로 설정된다(G=1)(단계 402). 양수 X(>0)에 대하여, B는 1 비트만큼 좌측으로 시프트된 X의 이진 표현이다(단계 403). 음수 X(<0)에 대하여, 절차(procedure)는 X의 절대값이 B를 생성하는 것은 제외하고는 유사하며, B의 최하위 비트가 설정된다(단계 404).
L은 B를 진행하는 리딩(leading) 제로들의 개수이며, floor(log2B)에 의해 정의된다(단계 405). L은 B의 비트 길이보다 작다.
그러므로, 양수 또는 음수 정수 X에 대하여, 고롬(Golomb) 코드 G는 B가 뒤따르는 L개의 리딩 제로들을 포함하며, B는 1로 설정된 최상위(most significant) 비트를 가지는 이진 형태로 표현된다.
지수적-고롬(Golomb) 코딩 프로세스를 설명하기 위해, 다음의 리스트는 코딩 길이들과 함께 X∈[-10, 10]에 대한 고롬(Golomb) 코드들을 나타낸다:
X=-10, G=000010101, 길이=9
X=-9, G=000010011, 길이=9
X=-8, G=000010001, 길이=9
X=-7, G=0001111, 길이=7
X=-6, G=0001101, 길이=7
X=-5, G=0001011, 길이=7
X=-4, G=0001001, 길이=7
X=-3, G=00111, 길이=5
X=-2, G=00101, 길이=5
X=-1, G=011, 길이=3
X=0, G=1, 길이=1
X=1, G=010, 길이=3
X=2, G=00100, 길이=5
X=3, G=00110, 길이=5
X=4, G=0001000, 길이=7
X=5, G=0001010, 길이=7
X=6, G=0001100, 길이=7
X=7, G=0001110, 길이=7
X=8, G=000010000, 길이=9
X=9, G=000010010, 길이=9
X=10, G=000010100, 길이=9
본 발명의 일 실시예에서의 고롬(Golomb) 코드 구현은 임의의 계산을 요구하지 않기 때문에 대단히 효율적이다. 특히, floor(log2B)가 위에서 설명된 실시예에서 L을 간결하게 정의하기 위해 사용되더라도, 다른 실시예는 최상위 비트 및 그리하여 B의 비트 길이를 찾기 위해 단순한 로직을 사용한다.
최종적으로, 도 3으로 돌아가서, 본 발명의 일 실시예는 엔트로피-코딩된 ResY, ResU, ResV, HpY', HpU', HpV' 데이터를 HiPriY, HiPriU, HiPriV, LoPriY, LoPriU, LoPriV로 표시한다.
도 5는 본 발명의 일 실시예에 따른 패킷화기(packetizer)들의 쌍을 도시한다. 개별적인 패킷화기들(501, 502)은 HiPriY, HiPriU, HiPriV를 높은-우선순위 패킷들로 누적시키고 LoPriY, LoPriU, LoPriV를 낮은-우선순위 패킷들로 누적시킨다. 우선순위는 나머지 데이터를 포함하는 패킷들이 고역 통과 서브밴드들을 포함하는 패킷들보다 더 큰 보호를 제공받도록 정해진다. 하나의 라인으로부터의 나머지 데이터는 다음 라인의 인터-라인 예측에서 사용되기 때문에, 나머지 데이터 손실은 에러들이 후속하는 라인으로 전달되도록 할 수 있다. 반면에, 주어진 라인에 대한 고역 통과 데이터는 다른 라인들에 독립적이기 때문에, 고역 통과 데이터 손실은 후속하는 라인들에 영향을 주지 않는다. 패킷화기들은 전형적으로 하나보다 많은 라인으로부터의 데이터를 하나의 패킷을 패키한다는 것을 유의하도록 한다.
도 3에 도시된 라인-기반 인코더의 동작의 키 컴포넌트는 가변적인 채널 용량 하에서 버퍼 오버플로우 없이 최대 비디오 품질을 획득하는데 필요한 각각의 라인에 대한 최소한의 양자화 파라미터들(qLY, qHY, qLU, qHU, qLV, qHV)을 결정하는 비디오 레이트-제어(VRC) 방법이다. 본 발명의 일 실시예는 작은 버퍼들 및 싱글패스(singlepass) 스캔을 사용하며, 큰 버퍼들 및 복잡한 검색들을 수반하는 멀티패스, 비트 평면-지향 방식들을 사용하는 종래의 프레임-기반 또는 블록-기반 기법들보다 상당히 낮은 복잡도를 제공한다.
도 6은 본 발명의 일 실시예에 따른 버퍼 오버플로우 없이 최소한의 왜곡에 대하여 비디오 인코딩을 최적화하도록 제어 출력들을 생성하기 위해 VRC가 사용하는 입력들을 도시한다. 본 발명의 선호되는 실시예에서, VRC는 하드웨어로 구현된다. 타이밍 관점에서, 주어진 라인에 대한 액티브 픽셀들이 사용가능하기 바로 전에, 매체 액세스 제어기(MAC)는 maxLsize(601) 및 maxHsize(602)를 특정하며, 이들 각각은 현재 라인의 저역 통과 부분 및 고역 통과 부분에 대한 최대 인코딩된 라인 크기들을 표시한다.
이러한 최대 라인 크기들은 물리 계층(PHY)에 의해 제공되는 채널 용량 추정으로부터 용이하게 계산된다. maxLsize 및 maxHsize는 특정된 최대 라인 크기들에 대하여 양호한 압축 결과들을 제공하는 바이패스(603), SelectYUV(604) 및 SelectTfm(605) 값들을 특정하는 표로 인덱싱한다.
주어진 라인에 대한 액티브 픽셀들이 사용가능하게 되면, 이들은 선택된 바이패스(603), SelectYUV(604) 및 SelectTfm(605) 값들을 사용하여 인코더를 통해 클로킹(clocked)된다. VRC(600)는 LpY, HpY, LpU, HpU, LpV, HpV 서브밴드들이 (도 3에 도시된) RAM에 저장되어 있을 때 상기 서브밴드들을 샘플링한다. 동시에, VRC(600)는 양자화 값들의 모든 허용가능한 조합들에 대하여 레이트 및 왜곡 정보를 컴파일하기 위해 서브밴드 샘플들을 사용한다. 라인에 대한 마지막 액티브 픽셀에 후속하는 수평 블랭킹 주기가 시작되고 바로 이후에(도 2 참조), 레이트 및 왜곡 정보는 각각 양자화 값들의 모든 허용가능한 조합들에 대한 높은-우선순위 및 낮은-우선순위 인코딩된 라인 크기들 및 제곱된 에러들로서 사용가능하다.
소수의 클록 사이클들 내에, VRC(600)는 모든 qHY, qHU, qHV 조합들에 대응하는 높은-우선순위 인코딩된 라인 크기들의 싱글패스 스캔을 수행한다. 이러한 스캔 동안, VRC(600)는 maxHsize보다 작은 인코딩된 라인 크기들과 관련된 qHY, qHU, qHV 조합들을 고려한다. 스캔이 완료된 후에, qHY, qHU, qHV는 최소 제곱 에러를 가지는 고려된 조합으로 설정된다. 제어 값들 qLY, qLU, qLV는 수평 블랭킹 주기가 끝나기 전에 유사하게 결정된다.
양자화기들은 이제 RAM에 있는 완료된 LpY, HpY, LpU, HpU, LpV 및 HpV 서브밴드들의 양자화를 개시하기 위해 최적 양자화 설정들 qHY, qHU, qHV, qLY, qLU 및 qLV를 사용할 수 있다. 이러한 타이밍 스케줄은 다음 라인에 대한 서브밴드 샘플들이 저장될 필요가 있기 전에 적절한 RAM 공간이 비워지도록 보장한다.
VRC에 대한 다음의 설명을 단순화하기 위해, qHY, qHU, qHV는 세트 {0, 2, 4, 6}으로 제한되고 qLY, qLU, qLV는 세트 {0, 1, 2, 3}으로 제한될 것이다. 경험적(empirical) 증거는 또한 qHU가 통상적으로 qHV와 동일하고 qLU가 통상적으로 qLV와 동일하다는 것을 알려준다. 그러므로, 본 논의를 위해, VRC 방법은 HpU, HpV로부터 qHUV를 결정하고 그 다음에 qHU=qHV=qHUV로 설정함으로써 단순화될 수 있다. 유사하게, qLUV는 LpU, LpV로부터 획득된다. 마지막 단계는 qLU=qLV=qLUV로 설정하는 것이다.
이러한 제한들은 훌륭한 결과들을 산출하며 선호되는 실시예에서 구현될 수 있다. 그러나, 위의 요건들은 본 발명에 따른 대안적인 실시예들에서는 요구되지 않는다.
도 7은 최적 저역 통과 양자화 설정들을 결정하기 위해 수평 블랭킹 주기 동안 실행되는 프로세스를 나타내는 플로우차트를 도시한다. 이러한 양자화 설정 (qLY, qLUV)은 i,j={0, 1, 2, 3}에 대하여 입력들 maxLsize RL ij 및 DL ij로부터 획득된다. 첨자 i는 Y에 대한 양자화 레벨들을 표시하며, j는 UV에 대한 양자화 레벨들을 표시한다. RL은 레이트들을 나타내며, DL은 왜곡들을 나타낸다. 그러므로, RL ij은 LpY 서브밴드가 i 비트들에 의해 양자화되고 LpU, LpV 서브밴드들이 j 비트들에 의해 양자화될 때 라인의 저역 통과 부분의 코딩된 길이를 표시한다. 유사하게, DL ij은 LpY 서브밴드가 i 비트들에 의해 양자화되고 LpU, LpV 서브밴드들이 j 비트들에 의해 양자화될 때 라인의 저역 통과 부분으로부터의 제곱 에러를 표시한다.
단계 701은 최소 왜곡을 큰 값으로 초기화한다. 본 실시예에서, 양자화 레벨들 qLY 및 qLUV는 15로 설정된다. 단계 702, 703은 4개의 qLY 양자화 레벨들 및 4개의 qLUV 양자화 레벨들을 통해 순환하는 네스트 루프(nested loop)를 개시한다. 그러므로, qLY 및 qLUV의 모든 16개의 조합들이 네스트 루프에서 검사된다.
16개의 조합들 각각에 대하여, 단계 704는 현재 라인의 저역 통과 부분의 코딩된 길이가 양자화 레벨들의 특정한 조합에 대한 maxLsize보다 작은지 여부를 결정한다. 그렇지 않다면, 다음 조합이 검사된다.
상기 저역 통과 부분이 maxLsize보다 작으면, 단계 705는 상기 조합과 관련된 왜곡이 이미 마주친 것들 중 가장 작은 왜곡인지 여부를 결정한다. 그렇지 않다면, 다음 조합이 검사된다.
상기 조합과 관련된 왜곡이 이미 마주친 것들 중 가장 작은 왜곡이면, 단계 706은 qLY 및 qLUV에 상기 양자화 조합을 저장한다. 상기 왜곡이 지금까지 마주친 것들 중 가장 작은 왜곡이기 때문에, 변수 minD는 현재 양자화 조합과 관련된 DL ij를 유지하도록 업데이트된다. 네스트 루프가 완료되면, qLY 및 qLUV는 최소 왜곡을 가지는 maxLsize보다 작은 저역 통과 서브밴드를 인코딩하는 상기 양자화 조합을 유지한다.
그러나, 단계 707에서 qLY가 여전히 15를 유지한다고 결정하면, 단계 706은 결코 실행되지 않았으며, 이는 모든 양자화 조합들에 대하여, 단계 704에서 코딩된 저역 통과 서브밴드 길이가 허용가능한 최대치, maxLsize보다 크다고 결정하였다는 것을 의미한다. 이러한 경우에, 16개의 양자화 조합들은 허용가능한 최대치보다 작은 라인을 인코딩하기에 불충분하다.
예측 프로세스를 고려할 때, maxLsize 내에서 저역 통과 서브밴드를 인코딩하기 위해 조합 qLY=qLUV=15는 보장될 수 없다는 것을 유의하도록 한다. 그러므로, 현재 라인은 전송되지 않는다. 대신에, 단계 708은 디코더가 현재 라인을 이전 라인으로 교체하도록 하기 위해 제어 비트를 설정한다.
도 25 및 26은 수평 블랭킹 주기 동안 최적 저역 통과 양자화 설정들을 결정하기 위해 도 7에서의 플로우차트 대신에 사용될 수 있는 대안적인 플로우차트를 도시한다. 상기 대안적인 플로우차트는 아래에서 설명되는 바와 같이 압축된 라인의 시각 품질이 직접 제어될 수 있도록 하기 때문에, 도 7의 프로세스보다 향상된 것이다.
단계 2501은 meetsRateMinUnAcceptableMse, meetsRateMaxAcceptableMseQy, meetsRateMinAcceptableMseQy가 각각 큰 양수값으로 초기화되는 반면에, meetsRateMaxAcceptableMse를 큰 음수값으로 초기화한다. 단계 2502는 4개의 qLY 양자화 레벨들 및 4개의 qLUV 양자화 레벨들을 통해 순환하는 네스트 루프를 개시한다. 그러므로, 모두 16개의 qLY 및 qLUV의 조합들이 네스트 루프에서 검사된다.
16개의 조합들 각각에 대하여, 단계 2503은 현재 라인의 저역 통과 부분의 코딩된 길이가 qLY 및 qLUV의 특정한 양자화-레벨 조합(QLC)에 대한 maxLsize보다 큰지 여부를 결정한다. 그렇다면, 현재의 QLC는 허용가능한 최대치를 초과한 것이기 때문에 또는 다시 말하면 원하는 비트레이트 요건이 현재 QLC에 의해 충족되지 않을 것이기 때문에 다음 QLC가 검사된다.
저역 통과 부분이 maxLsize보다 크지 않으면, 단계 2504는 QLC와 관련된 왜곡이 acceptableLpMse보다 큰지 여부를 결정한다. 그렇다면, 현재 QLC는 원하는 비트레이트 요건을 만족하지만 관련된 왜곡이 허용가능하지 않게 크다는 것을 의미한다. 이러한 경우에, 단계 2505는 현재 QLC가, 비트레이트 요건을 만족하지만 허용가능하지 않은 큰 왜곡들을 가지는, 이미 마주친 모든 QLC들 중 가장 작은 왜곡을 가지는지 여부를 테스트한다. 그렇다면, 단계 2508은 meetsRateMinUnAcceptableMseQy, meetsRateMinUnAcceptableMseQuv 및 meetsRateMinUnAcceptableMse에 현재 QLC 및 이와 관련된 왜곡을 저장한다.
단계 2504가 QLC와 관련된 왜곡이 허용가능하게 작다고 결정하면, 단계 2506은 현재 QLC가, 비트레이트 요건을 만족하고 허용가능하게 작은 왜곡들을 가지는, 모든 QLC들 중 가장 큰 왜곡을 가지는지 여부를 테스트한다. 그렇다면, 단계 2507은 meetsRateMaxAcceptableMseQy, meetsRateMaxAcceptableMseQuv 및 meetsRateMaxAcceptableMse에 현재 QLC 및 이와 관련된 왜곡을 저장한다. 단계 2504, 2505, 2506, 2507, 2508은 원하는 비트레이트를 충족시키는 모든 QLC들 중 관련된 왜곡이 acceptableLpMse에 가장 근접한 QLC가 meetsRateMinUnAcceptableMseQy, meetsRateMinUnAcceptableMseQuv 또는 meetsRateMaxAcceptableMseQy, meetsRateMaxAcceptableMseQuv에 저장되도록 보장할 것이다.
단계 2502에 의해 개시된 네스트 루프들이 완료된 후에, 모든 QLC들은 검사되었고 제어는 도 26의 단계 2601로 전달된다. 이러한 단계는 임의의 QLC가 허용가능한 왜곡를 가지며 비트레이트를 충족시키는지 여부를 결정한다. 그렇다면(meetsRateMaxAcceptableMseQy가 7F...F와 동일하지 않으면), QLy 및 QLuv에서, 단계 2602는 acceptableLpMse에 가장 근접한 왜곡을 가지며 비트레이트를 충족시키는 QLC를 리턴한다. 그러나, 단계 2601이 허용가능한 왜곡을 가지며 비트레이트를 충족시키는 QLC가 존재하지 않는다고 결정하면(meetsRateMaxAcceptableMseQy가 7F...F와 동일하면), 그 다음에 단계 2603은 임의의 QLC가 허용가능하지 않은 큰 왜곡을 가지며 비트레이트를 만족시키는지 여부를 체크한다. 그렇다면(meetsRateMinUnAcceptableMseQy가 7F...F와 동일하지 않으면), 그 다음에 QLy 및 QLuv에서, 단계 2604는 acceptableLpMse에 가장 근접한 왜곡을 가지면 비트레이트를 충족하는 QLC를 리턴한다. 최종적으로, 단계 2603이 허용가능하지 않은 큰 MSE를 가지며 비트레이트를 충족하는 QLC가 존재하지 않는다고 결정하면(meetsRateMinUnAcceptableMseQy가 7F...F와 동일하면), 모든 QLC들이 비트레이트 요건을 초과한다는 것을 알 수 있다. 이러한 경우에, 단계 2605는 단계 708에서 이루어진 바와 같이 디코더가 현재 라인을 이전 라인으로 교체하도록 하기 위해 제어 비트를 설정한다.
도 8은 라인의 저역 통과 부분의 코딩된 길이 (RL ij)의 계산을 나타내는 플로우차트이다. 본 실시예에서, Y-양자화 레벨은 i={0, 1, 2, 3}이고, UV-양자화 레벨은 j={0, 1, 2, 3}이다. 액티브 픽셀들이 웨이브렛 변환을 통해 클로킹되고 RAM으로 기록되면, RL ij의 16개의 값들은 이들이 각각 LpY, LpU, LpV 서브밴드들에서 사용가능하게 될 때 웨이브렛 계수들 wy, wu, wv로부터 병렬적으로 누산된다.
단계 801에서, 모든 16개의 RL ij의 레지스터들은 0으로 초기화된다. 단계 802는 저역 통과 서브밴드 LpY에 있는 각각의 웨이브렛 계수 wy가 도 3의 RAM(309)에 기록되고 있을 때 레이트 계산이 상기 계수를 고려한다는 것을 의미한다.
단계 803은 모든 4개의 Y-양자화 레벨들이 고려된다는 것을 설명하며, 단계 804는 각각의 Y-양자화 레벨에 대하여 고롬(Golomb) 코드-길이 Ry가 wy에 적용되는 양자화, LP-예측 및 고롬(Golomb)-코딩 프로세스들에 의해 정의되는 바와 같이 계산된다는 것을 설명한다.
단계들 805 및 806은 상이한 UV-양자화 레벨들 및 동일한 Y-양자화 레벨과 관련된 4개의 레이트 레지스터들이 Ry에 의해 모두 업데이트된다는 것을 설명한다.
하드웨어 구현에서, 단계 806의 모든 16개의 인스턴스들과 같이, 단계 804의 모든 4개의 인스턴스들은 병렬로 실행된다.
단계들 807 내지 811은 단계들 802 내지 806에 있는 대응 서브밴드들과 병렬적으로 LpU 서브밴드에 대하여 유사하게 실행된다. 유사하게, 단계들 812 내지 816은 LpV 서브밴드에 적용된다.
도 9는 라인의 저역 통과 부분으로부터의 제곱 에러 (DL ij)의 계산을 나타내는 플로우차트이다. Y-양자화 레벨은 i={0, 1, 2, 3}이고, UV-양자화 레벨은 j={0, 1, 2, 3}이다. DL ij의 16개의 값들은 이들이 각각 LpY, LpU, LpV 서브밴드들에서 사용가능하게 될 때 웨이브렛 계수들 wy, wu, wv로부터 병렬적으로 누산된다.
단계 901에서, 모든 16개의 DL ij 레지스터들은 0으로 초기화된다. 단계 902, 903은 저역 통과 서브밴드 LpY에 있는 각각의 웨이브렛 계수 wy가 도 3의 RAM(309)에 기록되고 있을 때 왜곡 추정이 상기 계수의 절대값을 고려한다는 것을 의미한다.
단계 904는 모든 4개의 Y-양자화 레벨들이 고려된다는 것을 설명하며, 단계 905는 각각의 Y-양자화 레벨에 대하여 관련된 웨이브렛-도메인 왜곡은 상기 Y-양자화 레벨에서 절단된 비트들의 십진(decimal) 값과 동일하다는 것을 설명한다. 그러나, 목표는 웨이브렛-도메인 왜곡보다는 픽셀-도메인 왜곡을 최소화하는 것이기 때문에, 단계 906는 상기 왜곡을 제곱하며, 이는 제곱된 웨이브렛-도메인 왜곡들이 거의-직교적인 웨이브렛 변환들에 대하여 제곱된 픽셀-도메인 왜곡들을 근사화하기 때문이다. ("Wavelets and Filter Banks" by G. Strang and T. Nguyen, Wellesley Cambridge Press, 1996을 참조하도록 한다.)
다음으로, 단계들 907 및 908은 상이한 UV-양자화 레벨들 및 동일한 Y-양자화 레벨과 관련된 4개의 왜곡 레지스터들이 모두 Dy에 의해 업데이트된다.
하드웨어 구현에서, 단계 908의 모든 16개의 인스턴스들과 같이, 단계들 905 및 906의 모든 4개의 인스턴스들은 병렬로 실행된다.
단계들 909 내지 915은 단계들 902 내지 908에 있는 대응 서브밴드들과 병렬적으로 LpU 서브밴드에 대하여 유사하게 실행된다. 유사하게, 단계들 916 내지 922는 LpV 서브밴드에 적용된다.
도 10은 m,n={0, 2, 4, 6}에 대하여 입력들 maxLsize, RL mn, DL mn으로부터 최적의 고역 통과 양자화 설정들 qHY, qHUV를 결정하기 위해 수평 블랭킹 주기 동안 실행되는 프로세스를 설명하는 플로우차트이다. 첨자 m은 Y-양자화 레벨을 표시하며, n은 UV-양자화 레벨을 표시한다. RH는 레이트들을 나타내고, DH는 왜곡들을 나타낸다. 그리하여, RH mn은 HpY 서브밴드가 m개의 비트들에 의해 양자화되고 HpU, HpV 서브밴드들은 n개의 비트들에 의해 양자화될 때 라인의 고역 통과 부분의 코디된 길이를 표시한다. 유사하게, DH mn은 HpY 서브밴드가 m개의 비트들에 의해 양자화되고 HpU, HpV 서브밴드들은 n개의 비트들에 의해 양자화될 때 라인의 고역 통과 부분으로부터의 제곱 에러를 표시한다.
단계들 1001 내지 1006은 도 7의 단계들 701 내지 706과 유사하다. 그러나, 상기 프로세스에서, maxHsize 타켓을 충족하는 양자화 조합이 존재하지 않는다면 상기 프로세스는, 이러한 경우에서 명백하게 maxHsize 타겟을 충족할, 디폴트 qHY=qHUV=15 설정을 사용할 수 있기 때문에, 단계 707과 유사한 단계는 필요하지 않다.
도 7의 프로세스와 대조적으로, 고역 통과 인코딩은 예측 프로세스를 수반하지 않는다. 그러므로, 양자화 조합 qHY=qHUV=15는 모든 고역 통과 서브밴드 엔트리들이 0이 되도록 할 것이다. 그리하여, 디코더가 qHY=qHUV=15에 대응하는 모두-제로(all-zero) 고역 통과 서브밴드를 생성하도록 하는 하나의 제어 비트를 가지는 모두-제로 고역 통과 서브밴드를 전송함으로써 인코더는 maxHsize 타겟을 충족시킬 것이기 때문에 이러한 조합으로 진행하는 것으로 충분하다.
도 27 및 28은 수평 블랭킹 주기 동안 최적 고역 통과 양자화 설정들을 결정하기 위해 도 10의 플로우차트 대신에 사용될 수 있는 대안적인 플로우차트이다. 상기 대안적인 플로우차트는 압축된 라인의 시각 품질이 직접 제어되도록 허용하기 때문에 도 10의 프로세스보다 향상된 것이다. 이러한 대안적인 플로우차트는 시각 품질에 대한 직접 제어를 통해 최적의 저역 통과 양자화 설정들을 결정하기 위한 대안적인 프로세스를 구체화하였던 도 25 및 26의 플로우차트와 정확하게 유사하다는 것을 유의하도록 한다. 도 27 및 28의 대안적인 플로우차트는 각각 압축된 라인의 고역 통과 부분의 허용가능한 크기 및 허용가능한 왜곡을 특정하는 입력 파라미터들 maxHsize 및 acceptableHpMse를 사용한다. 도 25 및 26에 있는 단계들과 정확하게 유사한 단계들을 통해 진행한 후에, 상기 프로세스는 원하는 비트레이트 요건을 충족하고 허용가능한 임계치 acceptableHpMse에 가장 근접한 왜곡을 가지는 qHY 및 qHUV 양자화-레벨 조합을 리턴한다. 이러한 양자화-레벨 조합이 존재하지 않는다면(meetsRateMaxAcceptableMseQy가 7F...F와 동일하고 meetsRateMinUnAcceptableMseQy가 7F...F와 동일하면), 도 10을 설명하면서 이전에 언급한 바와 같이, 단계 2805는 qHY=qHUV=15로 설정한다.
도 25, 26, 27, 28의 대안적인 프로세스들은 시각 품질이 직접 제어되도록 허용한다는 것을 상기하도록 한다. 특히, 특정된 임계치들 acceptableLpMse 및 acceptableHpMse는 필요하다면 양자화 레벨들이 상승하도록 하며, 그 결과 결과적인 왜곡이 특정된 임계치들에 접근하도록 한다. 이제 이러한 임계치들이 잘 알려진 피크 신호 대 잡음비(PSNR) 품질 메트릭에 대응하도록 어떻게 이러한 임계치들을 결정하는지를 설명하도록 한다.
PSNR 품질 메트릭은 다음과 같이 정의된다:
PSNR (dB) = 10 log102552/(MSEperPixel) (1)
("Video Coding ― An Introduction to Standard Codecs" by M. Ghanbaru, IEE 9999, Pg. 19를 참조하도록 한다.) 여기서, MSEperPixel은 픽셀 당 평균 제곱 에러이다. 그러므로,
MSEperPixel = 65025(PSNR/10)-10 (2)
totMSEperLine = (numPixelPerLine)(MSEperPixel) (3)
totMSEperLine = (numPixelPerLine)(65025)(PSNR/10)-10 (4)
여기서, numPixelPerLine 및 totMSEperLine은 각각 라인 당 픽셀들의 개수 및 라인에 있는 모든 픽셀들에 대한 전체 평균 제곱 에러이다. 수학식 (4)로부터, 특정된 PSNR 품질과 관련된 전체 평균 제곱 에러를 계산할 수 있다. 이제, 근사적으로 직교적인 웨이브렛 변환이 입력 라인들을 저역 통과 서브밴드 및 고역 통과 서브밴드로 분할하기 위해 사용된다면, 그 다음에
totMSEperLine = acceptableLpMse + acceptableHpMse (5)
여기서, acceptableLpMse 및 acceptableHpMse는 각각 저역 통과 서브밴드 및 고역 통과 서브밴드에서 허용가능한 평균 제곱 에러들이다. 경험적 결과들은 acceptableHpMse가 acceptableLpMse보다 100배 내지 1000배 큰 범위에 있을 때 양호한 품질이 획득된다는 것을 보여준다. 그리하여, 수학식 (4) 및 (5)를 결합하면,
(numPixelPerLine)(65025)(PSNR/10)-10 =
acceptableLpMse + R(acceptableLpMse) (6)
여기서, 100<R<1000이다. 그리하여, 특정된 왜곡 임계치들은 다음과 같이 PSNR 품질 메트릭과 직접적으로 관련된다:
(numPixelPerLine)(65025)(PSNR/10)-10(R+1)-1 = acceptableLpMse (7)
(numPixelPerLine)(65025)(PSNR/10)-10R(R+1)-1 = acceptableHpMse (8)
최종적으로, 상이한 동작 모드들을 가능하게 하기 위해 PSNR 품질 메트릭이 어떻게 사용될 수 있는지를 설명하도록 한다. 채널 조건들이 양호하다고 예상되고 비디오 컨텐트가 용이하게 압축가능하다고 예상되면, 그 다음에 뛰어난 품질을 출력하는 PSNR= 40 dB에 대한 acceptableLpMse 및 acceptableHpMse를 획득할 수 있다. 대안적으로, PSNR = 무한대(infinity)로 설정함으로써, acceptableLpMse = acceptableHpMse = 0을 획득한다. 이러한 경우에, 가장 낮은 왜곡들을 가지는 양자화-레벨 조합들이 항상 선택되기 때문에, 도 25, 26, 27, 28의 대안적인 프로세스의 동작은 도 7 및 10의 동작과 동일하다. 그러나, 실제 동작에서, 채널 조건들은 종종 악화되고 비디오 컨텐트는 압축이 어려울 수 있다. 결과적으로, acceptableLpMse 및 acceptableHpMse를 획득하기 위해 조금 낮은 PSNR, 대략 35 dB를 사용하는 것이 신중하다. 이러한 설정을 통해, 용이하게 압축가능한 라인들은 통상적으로 낮은 양자화 레벨들에서 낮은 평균 제곱 에러들을 가지기 때문에, 양자화 설정들이 용이하게 압축가능한 라인들에 대하여 조금 높더라도 시각 품질은 여전히 양호하다. 그리하여, PSNR = 35 dB와 관련된 acceptableLpMse 및 acceptableHpMse의 보다 큰 값들은 보다 높은 양자화들이 35 dB와 관련된 허용가능한 임계치들에 대한 왜곡을 증가시키도록 할 것이다. 도 23의 향상된 비디오 레이트 제어에 대한 하드웨어-구현 방법과 결합될 때, 이러한 동작 모드는 다음과 같은 이유로서 우수한 성능을 나타낸다. 용이하게 압축가능한 라인들이 오면, 보다 높은 양자화 레벨들은 보다 작은 압축된 라인 크기들을 유도한다. 그러므로, 단계 2306은 더 많은 사용되지 않는 바이트들을 레지스터 unused_bytes_accumulator로 할당한다. 그리하여 압축하기 어려운 다음 라인들은 낮은 양자화 레벨들을 사용할 가능성이 크며 unused_bytes_accumulator는 고갈될 가능성이 적기 때문에 양호한 시각 품질을 가진다.
도 11은 라인의 고역 통과 부분의 코딩된 길이 (RH mn)의 계산을 설명하는 플로우차트를 도시한다. Y-양자화 레벨은 m={0, 2, 4, 6}이고, UV-양자화 레벨은 n={0, 2, 4, 6}이다. 액티브 픽셀들이 웨이브렛 변환을 통해 클로킹되면, RH mn의 16개의 값들은 이들이 각각 HpY, HpU, HpV 서브밴드들에서 사용가능하게 될 때 웨이브렛 계수들 wy, wu, wv로부터 병렬적으로 누산된다.
단계 1101 내지 1116은 각각 도 8의 단계들 801 내지 816과 유사하다. 고역 통과-서브밴드 인코딩은 도 3에 대하여 위에서 설명된 바와 같은 예측을 사용하지 않기 때문에, 주요한 차이점은 단계들 1104, 1109 및 1114가 예측 프로세스를 수반하지 않는다는 점이다.
도 12는 라인의 고역 통과 부분으로부터의 제곱 에러 (DH mn)의 계산을 설명하는 플로우차트를 도시한다. Y-양자화 레벨은 m={0, 2, 4, 6}이고, UV-양자화 레벨은 n={0, 2, 4, 6}이다.
이러한 예에서, DH mn의 16개의 값들은 이들이 각각 HpY, HpU, HpV 서브밴드들에서 사용가능하게 될 때 도브쉬(Daubechies)-(7,9) 레벨-1 웨이브렛 계수들 wy, wu, wv 및 레벨-2 웨이브렛 계수들 wwy, wwu, wwv로부터 병렬적으로 누산된다. 도브쉬(Daubechies)-(7,9)에 대하여, 레벨-2 계수들은 레벨-1 계수들과 관련하여 3/4만큼 스케일링된다. 이러한 스케일링은 도브쉬(Daubechies)-(7,9) 웨이브렛-도메인 제곱 왜곡들이 픽셀-도메인 제곱 왜곡들을 근사화하기 위해 사용된다. 르갈(LeGall)-(5,3) 변환에 대하여, 이러한 스케일링은 불필요하다.
도 12의 상세한 프로세스는 도 9의 프로세스와 유사하다. 단계 1201은 모든 16개의 고역 통과 왜곡 레지스터들을 0으로 초기화한다. 단계들 1202 내지 1208은 도브쉬(Daubechies)-(7,9) 레벨-1 웨이블렛 계수들 wy에 대하여 동작하고 단계들 902 내지 908과 유사하며, 차이점은 단계 1206에서의 4에 의한 스케일링이다.
wwy, 도브쉬(Daubechies)-(7,9) 레벨-2 웨이브렛 계수들에 대하여, 단계들 1209 내지 1215는 단계 1213에서 레벨-2 웨이블렛-도메인 왜곡을 3에 의해 스케일링한다는 점을 제외하고는 단계들 1202 내지 1208과 유사하다. 그리하여, 단계들 1206 및 1213은 레벨-1 계수들과 관련하여 3/4만큼 레벨-2 계수들을 스케일링한다.
단계들 1216 내지 1229는 HpU 서브밴드에 대하여 동작하며 단계들 1202 내지 1215와 유사하다. 유사하게, 단계들 1230 내지 1243은 HpV 서브밴드에 대하여 동작하며 단계들 1216 내지 1229와 유사하다.
르갈(LeGall)-(5,3) 변환에 대하여 스케일링은 불필요하기 때문에, 도 12는 또한 다음의 변형들을 이용하여 이러한 웨이브렛 변환 하에서 왜곡 추정을 위해 사용될 수 있다. 단계들 1206 및 1213은 "Dy=(Dy)2"으로 변경된다. 단계들 1220 및 1227은 "Du=(Du)2"으로 변경된다. 단계들 1234 및 1241은 "Dv=(Dv)2"으로 변경된다.
다음의 설명은 저역 통과 서브밴드 레이트 계산의 복잡도를 줄이는 최적화에 관한 것이다. 이전에 계산에 대하여, 예측 프로세스는 각각의 양자화 레벨에서 반복되기 때문에, 저역 통과 레이트 계산은 고역 통과 레이트 계산보다 복잡하다.
이러한 반복의 영향을 이해하기 위해, 위에서 사용된 예측 프로세스에 대한 표시는 an, bn, cn 및 xn이 각각 n개의 비트들에 의한 a, b, c 및 x의 양자화들을 표시하도록 수정될 수 있다. a0, b0, c0 및 x0은 원래의 양자화되지 않은 값들 a, b, c 및 x를 나타냄을 유의하도록 한다.
상기 프로세스는 다음과 같이 정의함으로써 시작된다:
dn(p,q) = pn ― qn, 여기서 p,q∈{a,b,c,x}
양자화-레벨(QL) n에 대한 예측 프로세스 동안, 제 1 단계는 dn(a,c), dn(a,b)를 계산하는 것이며 그 다음에 다음과 같이 minn을 정의한다.
minn = bn, 만약 |dn(a,c)|≤|dn(a,b)|이면,
= cn, 그렇지 않으면
여기서, minn은 QLn에서 최소-거리에 있는 이웃(neighbor)이다.
최종적으로, QLn 나머지는 다음과 같이 정의된다:
dxn = d(xn, minn)
이전에, dxn의 코드-길이는 모든 QLn에 대하여 dn(a,c), dn(a,b), minn 및 dxn을 평가함으로써 재-계산되었다. 이러한 평가들은 각각 14-비트까지의 길이를 가질 수 있는 an, bn, cn 및 xn 간의 2번의 보수(complement) 덧셈들을 포함한다.
다음의 최적화는 통상적으로 단지 d0(a,c), d0(a,b), min0 및 dx0을 평가할 필요가 있다는 것을 증명한다. 이로부터 dn(a,c), dn(a,b), minn 및 dxn이 n>0에 대하여 도출될 수 있다. 상기 도출들은 2-비트 수들에 의한 덧셈들을 포함하며 그리하여 저역 통과 서브밴드 레이트 계산의 복잡도를 줄인다.
도 13은 최적화된 저역 통과 서브밴드 레이트 계산을 위한 프로세스를 도시한다. 이러한 절차는 도 8에 도시된 절차의 변형이며 아래에서 설명되는 OptimizedLPrates 절차에 따라 이루어진다.
도 14의 플로우차트는 0부터 N까지의 모든 양자화-레벨들 하에서 저역 통과-서브밴드 엔트리 x에 대한 나머지 코드-길이들의 최적화된 계산을 위한 OptimizedLPrates 절차를 설명한다. 상기 프로세스는 다음과 같은 입력들을 사용한다:
ㆍ x, 현재 행으로부터의 저역 통과-서브밴드 엔트리,
ㆍ an, bn, 이전 저역 통과 서브밴드 행으로부터의 x의 양자화된 좌측-상위 및 상위 이웃들,
ㆍ c, 현재 저역 통과-서브밴드 행으로부터의 x의 양자화되지 않은 좌측-이웃,
ㆍ prevQL, 이전 저역 통과 서브밴드 행에서 an 및 bn를 양자화시키기 위해 사용되는 양자화 레벨,
ㆍ 행(row), 열(col), 저역 통과 서브밴드에 있는 x의 좌표들
ㆍ N, 현재 행에 대한 최대 양자화 레벨.
상기 프로세스로부터의 출력은 1부터 N까지의 모든 양자화 레벨들 하에서 x에 대응하는 나머지에 대한 코드 길이들을 포함하는 벡터 codeLengths이다. 처음에, 단계 1401은 x가 저역 통과 서브밴드의 제 1 행 및 제 1 열에 있는지 여부를 결정한다. 그렇다면, 모든 양자화 레벨들에서 임의의 이웃들로부터의 예측 없이 나머지는 x의 양자화된 값으로부터 직접 획득된다.
그러므로, 단계들 1403, 1404는 QLn에 의해 우측 시프트된 x의 고롬(Golomb) 코드 길이로서 QLn에서의 코드 길이를 계산한다. 고롬(Golomb) 코드 길이는 최상위 비트의 위치를 결정하는 단순한 로직에 의해 획득될 수 있음을 상기하도록 한다. 단계 1402는 0부터 N까지의 모든 양자화 레벨들 하에서 x의 코드 길이들을 획득하기 위해 단계들 1403, 1404가 반복되도록 한다.
단계 1401이 x가 저역 통과 서브밴드의 제 1 행 및 제 1 열에 위치하지 않는다고 결정하면, 단계 1406은 x가 저역 통과 서브밴드의 제 1 행에 위치하는지 여부를 체크한다. 그렇다면, 모든 양자화 레벨들에 대하여, 나머지는 x의 양자화된 값과 x의 양자화된 좌측-이웃 cn으로부터 예측될 것이다.
단계 1407은 ―c를 x에 더하고 d0(x,c)로부터 dn(x,c)을 도출하기 위해 사용되는 계산으로부터의 캐리(carry)들뿐만 아니라 d0(x,c)를 획득하기 위해 도 15에 도시된 덧셈 절차를 인보크(invoke)한다.
다음으로, 단계들 1408 내지 1411의 루프는 0부터 N까지의 모든 양자화 레벨들 하에서 x에 대응하는 나머지의 코드 길이들을 계산한다. d0(x,c)로부터 dn(x,c)를 유도하기 위해, 단계 1409는 QLn에 의해 d0(x,c)를 우측 시프트하고, 단계 1410은 정정항(correction term)을 부가함으로써 dn(x,c)를 정정하기 위해 도 16의 applyCorrection 절차를 인보크한다.
도 16의 applyCorrection 절차는 다음과 같은 입력들을 사용한다:
ㆍ p, q, 정수들,
ㆍ QLn, 양자화 레벨,
ㆍ dn(p,q), QLn에서 p로부터 q의 추정된 거리. 이러한 추정은 단순히 QLn만큼 d0(p,q)를 우측 시프트함으로써 계산된다고 가정하며, d0(p,q)는 덧셈 절차(도 15)를 p 및 ―q에 적용함으로써 획득된다.
ㆍ carries, 이전에 설명된 d0(p,q)의 계산에서 덧셈 절차로부터 획득되는 캐리들의 벡터.
applyCorrection 절차로부터의 출력들은 다음과 같다:
ㆍ dn(p,q), QLn에서 p로부터 q의 정정된 거리 추정치. 이러한 정정된 거리 추정치는 pn으로부터 qn을 감산함으로써 획득될 수 있다. 그러나, 이러한 감산은 2개의 14-비트 수의 덧셈을 포함하며 그리하여 단순히 2-비트 정정항을 dn(p,q)로 더하는 제안된 방법보다 비용이 높다.
ㆍ codeLen, dn(p,q)의 고롬(Golomb) 코드 길이,
ㆍ correction, 입력 dn(p,q)로 부가되는 정정항.
처음에, 단계 1601은 correction을 0으로 초기화한다. 더 짧은 엔트로피 코드들을 얻기 위해 양자화 프로세스는 특정한 음수들을 다르게 처리한다는 것을 상기하도록 한다. 입력 추정치를 정정하기 위해, 상기 프로세스는 p(단계 1602) 및 ―q(단계 1604)가 양자화 프로세스에 의해 상이하게 처리될 것인지를 검출함으로써 이를 수행하며, 그에 따라 단계들 1603 및 1605가 정정항을 업데이트한다.
단계 1606은 입력 추정치 dn(p,q)이 qn 및 pn의 생성에서 버려질 최하위 비트들로부터의 캐리를 포함하는지 여부를 결정한다. 그렇다면, 상기 캐리는 pn에서 qn로의 직접적인 감산에 존재하지 않을 것이기 때문에 상기 캐리는 정정항으로 통합되어야 한며(단계 1607), 이는 이러한 양자화된 값들은 캐리를 생성할 최하위 비트들을 가지지 않을 것이기 때문이다.
최종적으로, 단계 1608은 정정된 거리 추정치를 얻기 위해 2-비트 정정항을 입력 추정치 dn(p,q)에 부가한다. 정정된 추정치의 고롬(Golomb) 코드 길이가 또한 계산된다.
도 14로 돌아와서, 단계 1412는 x0이 제 1 열에 위치하나 제 1 행에 위치하지 않는지 여부를 결정한다. 그렇다면, 모든 양자화 레벨들에 대하여, 나머지는 x의 양자화된 값 및 x의 양자화된 상위-이웃 bn으로부터 예측된다. 이러한 경우에, 단계 1413는 먼저 x로부터의 거리를 계산하기 위해 사용되는 풀-정확도(full-precision) b를 얻기 위해 bn을 좌측 시프트시킨다. 그 다음에, 단계들 1413 내지 1418은 c 대신에 b가 사용되는 점을 제외하고는 단계들 1407 내지 1410과 유사한 동작들을 수행한다.
단계 1412가 x0이 제 1 행에도 위치하지 않고 제 1 열에도 위치하지 않는다고 결정하면, 모든 양자화 레벨들에 대하여, 나머지는 x의 양자화된 값 및 x의 양자화된 상위-이웃 bn 또는 x의 양자화된 좌측-이웃 cn으로부터 예측된다.
이러한 경우에, 단계 1419는 먼저 QL0에서 x로부터의 거리를 계산하기 위해 사용되는 풀-정확도 값들을 얻기 위해 an 및 bn을 좌측 시프트시킨다. 다음으로, 단계 1420은 양자화되지 않은 엔트리들 x, a, b, c로부터 계산된 나머지와 관련된 데이터를 수집하기 위해 getUnquantData 절차(도 17 참조)를 이용한다.
단계들 1421, 1423의 루프는 getUnquantData 절차에 의해 리턴된 데이터로부터 QLn에서의 나머지에 대한 코드 길이를 획득하기 위해 derivePostQuantResidual 절차(단계 1422 및 도 18)를 반복한다.
(아래에서 설명되는) derivePostQuantResidual 절차에 의한 dxn의 코드-길이의 효율적인 결정을 가능하게 하기 위해, 도 17에 도시된 getUnquantData 절차는 양자화된 서브밴드 엔트리 x뿐만 아니라, 각각 상위-좌측 및 좌측의 x-이웃들 a, b, c를 수신하여, 다음의 데이터를 출력한다:
ㆍ d0(a,b) 및 d0(a,c), b 및 c의 a-거리들 및, abCarries 및 acCarries, 이러한 계산들로부터의 각각의 캐리 벡터들,
ㆍ d0(x,b) 및 d0(x,c), b 및 c의 x-거리들 및, xbCarries 및 xcCarries, 이러한 계산들로부터의 각각의 캐리 벡터들,
ㆍ min0, {b, c}로부터 선택된 a의 가장 인접한 이웃. b 및 c가 a로부터 등거리(equidistant)이면, c는 타이-브레이커(tie-braker)로서 선택된다,
ㆍ tie0은 b, c가 a로부터 등거리에 있는지 여부를 나타낸다. 그렇다면 1로 설정된다. 그렇지 않으면 0으로 설정된다,
ㆍ oppSides는 b 및 c가 번호 라인 상에서 a의 반대쪽에 위치하는지 여부를 나타낸다. 그렇다면 1로 설정된다. 그렇지 않으면 0으로 설정된다,
ㆍ constMinC는 c가 모든 양자화 레벨들에서 가장 인접한 a-이웃을 유지할 것인지 여부를 나타낸다. 그렇다면 1로 설정된다. 그렇지 않으면 0으로 설정된다,
ㆍ diffDist0은 d0(a,b) 및 d0(a,c) 간의 차이이고, diffDistCarries는 diffDist0의 계산에서 생성된 캐리들이다.
먼저, 단계 1701은 양자화되지 않은 a-거리들 d0(a,b) 및 d0(a,c)뿐만 아니라 관련된 캐리들 abCarries, acCarries를 계산하기 위해 도 15로부터의 덧셈 절차를 인보크한다. 이러한 단계는 또한 constMinC, oppSides 및 tie0을 0으로 초기화한다.
단계 1702는 d0(a,b) 및 d0(a,c)의 부호들을 검사한다. 이러한 부호들이 상이하면, b 및 c는 번호 라인 상에서 a의 반대쪽에 위치한다. 단계 1703은 이러한 정보를 저장하기 위해 oppSides를 설정한다. 다음으로, 1704는 d0(a,b) 및 d0(a,c) 간의 차이뿐만 아니라 diffDist0의 계산에서 생성된 캐리들인 diffDistCarries를 계산하기 위해 상기 덧셈 절차를 인보크한다.
단계(1705)는 b,c가 a의 반대쪽에 있는지를 결정한다. 반대쪽에 있다면, 단계(1706)는 b 및 c가 a로부터 등거리에 있는지를 검사한다. 등거리에 있다면, 단계(1707)는 tie0를 설정하고 타이-브레이커, c를 min0에 할당한다.
단계(1706)가 b 및 c가 a로부터 등거리에 있지 않다고 결정하면, 단계(1708)는 diffDist0 및 d0(a,c)의 부호들을 검사한다. 이러한 부호들이 동일하면, c는 a에 보다 근접하고 min0는 c로 설정된다(단계 1709). 부호들이 동일하지 않으면, b가 a에 보다 근접하고 단계(1710)에서 b에는 b가 할당된다.
단계(1705)로 돌아가서, b,c가 a의 동일측에 위치하면, 단계들(1715 내지 1719)은 단계들(1706 내지 1710)과 유사한 로직을 사용하여 tie0 및 min0를 설정한다. 로직에서의 실질적인 차이는 단계들(1708 및 1717)에서의 부호 테스트이다. 부호 극성들은 b,c가 a의 동일측에 있는지 아니면 반대쪽에 있는지 여부에 종속적이기 때문에, 이러한 테스트는 상이하다.
단계들(1707, 1709, 1710, 1716, 1718 또는 1719) 중 임의의 단계 후에, 변수들 min0 및 tie0는 적절하게 설정되고, getUnquantData 절차는 각각의 캐리 벡터들인 xbCarries 및 xcCarries뿐만 아니라, b 및 c의 x-거리들인 d0(x,b) 및 d0(x,c)을 계산하기 위해서 도 15로부터의 덧셈 절차를 호출하는 단계들(1711 및 1714)에서 종료된다.
단계(1712)가 b,c가 a의 동일측에 존재한다고 결정하면 d0(x,c)는 계산될 필요가 없고 양자화 전의 가장 근접한 a-이웃은 타이-브레이킹 선택임을 유의하도록 한다. 이것은 우측 시프팅에 의한 양자화가 순서-보존(order-preserving) 맵임을 기술하는 순서-보존 특성의 결과이다.
따라서, 임의의 정수들 x,y 및 자연수 n에 대해서,
Figure 112009041416627-pct00004
이다.
구체적으로, 이것은 상술한 조건하에서, 모든 양자화 레벨들에서, a,b,c의 상대적인 순서(ordering)가 동일하게 유지되거나 또는 b,c가 a로부터 등거리가 되도록 악화(degenerate)되는 것을 의미한다. 어떤 경우이던지 간에, c는 타이-브레이킹 선택이므로, 가장 근접한 a-이웃은 c이고, 따라서 모든 양자화 레벨들에서 동일하게 유지된다. 따라서, 단계(1713)는 이러한 상황을 표시하기 위해 constMinC를 설정한다.
도 18은 getUnquantData 절차에 의해 제공되는 데이터에 기반하여 특정된 QLn에서 저역 통과-서브밴드 엔트리 x에 대응하는 나머지(residual)를 계산하기 위한 derivePostQuantResidual 절차를 도시한다.
다음 입력들이 사용된다.
- d0(a,b)및 d0(a,c) (b 및 c의 a 거리들) 및 abCarries 및 acCarries (이러한 계산들로부터의 각각의 캐리 벡터들),
- d0(x,b) 및 d0(x,c)(b 및 c의 x-거리들) 및 xbCarries 및 xcCarries (이러한 계산들로부터의 각각의 캐리 벡터들)
- {b,c}로부터 선택된 min0(a의 가장 근접한 이웃). b 및 c가 a로부터 등거리이면, c가 타이-브레이커로서 선택된다.
- tie0는 b,c가 a로부터 등거리인지 여부를 나타낸다. 등거리이면, 1로 설정된다. 등거리가 아니면, 0으로 재설정된다.
- oppSides는 번호 라인 상에서 b 및 c가 a의 반대쪽에 있는지 여부를 나타낸다. 반대쪽에 있으면 1로 설정된다. 반대쪽에 있지 않으면 oppSides = 0으로 설정된다.
- constMinC는 c가 모든 양자화 레벨들에서 가장 근접한 a-이웃으로 유지될 것인지 여부를 나타낸다. 유지되면 1로 설정된다. 유지되지 않으면 0으로 재설정된다.
- diffDist0은 d0(a,b) 및 d0(a,c) 사이의 차이이며, diffDistCarries는 diffDist0의 계산에서 생성된 캐리들이다.
- QLn (특정된 양자화 레벨).
이러한 입력들은 다음 출력들을 생성하는데 사용된다:
- dxn (특정된 QLn에서 저역 통과-서브밴드 엔트리 X에 대응하는 나머지)
- codeLength (dxn의 고롬(Golomb) 코드 길이)
단계(1800)는 constMinC를 먼저 검사하여 모든 양자화 레벨들에서 c가 가장 근접한 a-이웃이 되도록 보장되는지를 결정한다. 보장되면, QLn에서, 나머지는 bn으로부터 예측될 것이다. 이는 직접적인 감산 없이, d0(x,b)를 우측으로 시프트하고 도 16의 applyCorrection 절차를 인보크함으로써 단계(1805)에서 이뤄진다.
단계(1800)에서 c가 가장 근접한 a-이웃이 되도록 보장되지 않는다고 결정하면, 단계(1801)는 양자화되지 않은 a-거리들을 우측으로 시프트하고 그 결과들을 수정하여 양자화 데이터의 직접적인 감산 없이 양자화 후에 a-거리들을 획득한다. 양자화 후의 이러한 a-거리들로부터, 상기 절차는 먼저 양자화 후의 가장 근접한 a-이웃, minn을 결정한다.
단계(1802)가 dn(a,b) 및 dn(a,c)의 절대값들이 동일하다고 결정하면, bn 및 cn은 an으로부터 등거리이다. 이러한 경우, 단계(1803)는 타이-브레이커, c를 minn에 할당한다. 그렇지 않으면, bn 및 cn은 an으로부터 등거리가 아니다.
단계(1802)가 a-거리들이 양자화 후에 동일하지 않다고 결정하면, 단계(1807)는 b 및 c가 a의 동일측에 존재하고 양자화 전에 가장 근접한 a-이웃 결정 동안 어떠한 타이도 발생하지 않았다고 결정하고, 그리고 나서 양자화 후의 가장 근접한 a-이웃이 변경되지 않고 따라서 min0이 minn에 할당된다(단계 1808). 이는 이전에 언급한 순서-보존 특성의 다른 결과이다.
그러나 단계(1807)에서 테스트가 실패하면, 2개의 가능성들이 존재한다: 1) 양자화 전에 계산된 a-거리들이 동일하지 않았고, 이들은 지금 동일하지 않음, 또는 2) 양자화 전에, b 및 c는 a의 반대쪽에 위치하였음. 첫 번째 경우, 처리는 가장 근접한 a-이웃을 명시적으로 결정하여야 하는데, 왜냐하면 양자화되지 않은 데이터로부터 이것이 타이-브레이킹 선택이라고 가정될 수 없기 때문이다. 두 번째 경우, 순서-보존은 양자화 후에 변경되지 않은 가장 근접한 a-이웃을 보장하기에 충분하지 않다. 따라서, 이 경우에도, 가장 근접한 a-이웃이 명시적으로 결정된다.
어떤 경우이던지, 가장 근접한 a-이웃은 dn(a,c)로부터 dn(a,b)를 감산하지 않고 효율적으로 결정될 수 있다. 이를 달성하기 위해서, 단계(1809)는 양자화되지 않은 픽셀들로부터 계산된 a-거리들 사이의 차이인 diffDist0를 우측으로 시프트하고, dn(a,c)로부터 dn(a,b) 사이의 차이의 추정치를 획득한다. 이러한 추정치는 단계(1801)로부터 정정 인자들 corrAc 및 corrAb를 먼저 더함으로써 정확한 값 diffDistn로 정정된다. 그리고 나서, d0(a,c)-d0(a,b)로부터의 버려진 최하위 비트들이 풀-정확도 diffDist0 계산에서 캐리를 생성하는 경우(단계 1810), diffDistn은 감소된다(단계 1811).
단계(1810) 후에, diffDistn은 양자화 후의 a-거리들 사이의 차이를 포함한다. 단계(1812)가 이러한 차이가 0이라고 결정하면, bn, cn은 an으로부터 등거리이고, 단계(1813)는 c, 타이-브레이킹 선택을 minn에 할당한다. 이러한 차이가 0이 아니면, bn, cn은 an의 반대쪽에 위치하므로, dn(a,b) 및 diffDistn의 부호들은 bn 또는 cn이 가장 근접한 an-이웃인지 여부를 알려준다(단계 1814). 따라서, 단계(1815) 또는 단계(1816)는 정정 값을 minn에 할당한다.
마지막으로, 단계들(1803, 1808, 1813, 1815, 또는 1816) 중 임의의 단계 후에, 결과는 minn, 양자화 후의 가장 근접한 an-이웃이다. 프로세스는 이제 직접 감산을 사용하지 않고, minn으로부터의 예측에 의해 xn에 대응하는 나머지를 유도할 수 있다.
구체적으로, 단계(1804)가 minn이 c라고 결정하면, 단계(1805)는 codeLength에서 dxn 및 dxn의 고롬(Golomb) 코드 길이를 획득하기 위해 d0(x,b)를 우측으로 시프트하고 applyCorrection 절차(도 16)를 인보크한다. minn이 b이면, 단계(1806)는 d0(x,b) 대신에 d0(x,c)를 사용하여 동일한 동작들을 수행한다.
도 14의 OptimizedLPrates 절차의 장점을 보여주기 위해서, 다음의 예는 {0,...,N-1}의 n에 대한 각 QLn에 대해 반복되어야 하는 최적화되지 않은 예측 처리와 이를 비교한다.
가산기를 (m+n)-가산기로서 m,n 비트들의 입력 비트폭을 가지고 표시하면, QLn에서, 최적화되지 않은 프로세스는 4개의 [(N-n)+(N-n)] 가산기들을 포함한다. 따라서, {0,...,N-1}의 n에 대한 전체 예측 처리는 다음의 가산기들 각각 4개씩을 포함할 것이다: (1+1)-가산기, (2+2)-가산기, (3+3)-가산기, ..., (N+N)-가산기.
대조적으로, 도 14에서, 단계들(1403, 1404, 1407, 1413, 1416, 및 1417)은 단계들(1412 및 1420)에 포함된 로직을 공유하기 위해 멀티플렉서들을 사용할 수 있다. 따라서, 단계들(1412 및 1420)에 대한 하드웨어 요건들을 분석하면 충분하다.
도 17의 getUnQuantData 절차는 4개의 (N+N)-가산기들을 포함한다(단계들 1701, 1702, 1704, 1711 및 1714). QLn에서, 도 18로부터의 derivePostQuantResidual 절차는 4개의 [(N-n)+(N-n)]-가산기들을 포함한다(단계들 1801, 1809, 1805, 1806).
따라서, {0,...,N-1} 내의 n을 가지는 모든 QLn에 대해, 최적화된 프로세스는 5개의 (N+N)-가산기들 및 다음의 가산기들 각각 4개씩을 포함한다:(1+1)-가산기, (2+2)-가산기, (3+2)-가산기,...,((N-1)+2)-가산기. 직렬인 가산기들이 두 구현예들 모두에 사용된다고 가정하면, (N+N)-가산기는 (N+2) 가산기보다 4N-8개 더 많은 게이트들을 가진다. N=14에 대해, 최적화된 구현예는 1320개의 게이트들을 포함하는 반면, 비최적화된 구현예는 2296개의 게이트들을 포함한다. 따라서, 상기 최적화는 논리 게이트들에 있어서 적어도 42.51%의 절감을 제공한다.
다음은 도 9 및 도 12에 도시되는 바와 같이, 라인의 저역 통과 및 고역 통과 부분에 대한 왜곡 추정치들을 개선하는 방법을 설명한다. 이들 왜곡들이 실제로 웨이브렛(wavelet)-도메인 왜곡들임을 상기하라.
상기 웨이브렛 변환들의 정수 구현예들은 대략적으로 직교하며, 그 결과 웨이브렛-도메인 왜곡들은 실제 픽셀-도메인 왜곡들과 대략적으로 동일하다("Optimal Quantized Lifting Coefficients for the 9/7 Wavelet" ― S.Barua, K.A.Kotteri, A.E.Bell and J.E.Carletta, Proceedings of the 2004 IEEE International Conference on Acoustics, Speech and Signal Processing 참조). 그러나, 웨이브렛 역변환의 정수 구현에 의해 발생되는 라운딩 잡음은 도 9 및 도 12에서 계산된 웨이브렛-도메인 잡음 추정치들의 정확도를 감소시킨다.
이러한 문제점을 완화시키기 위해, 상기 라운딩 잡음이 웨이브렛 계수들의 최하위 비트(LSB)들에 주로 영향을 미침을 관찰해야 하는데, 왜냐하면 이들 웨이브렛 계수들의 최하위 비트들이 정수 웨이브렛 역변환에서 라운딩되는 비트들이기 때문이다. 따라서, 디코딩 프로세스 동안, 본 발명의 실시예는, 웨이브렛 역변환 바로 직전에, 상기 웨이브렛 계수들을 N 비트들(N = 1, 2 또는 3)만큼 좌측 시프트함으로써 역양자화된 웨이브렛 계수들을 균일하게 스케일링한다. 이는 N개의 LSB들을 0으로 설정하고, 정수 웨이브렛 역변환에서 라운딩 잡음을 억제하여, 상기 웨이브렛-도메인 왜곡 추정치의 정확도를 향상시킨다. 역-웨이브렛 변환 이후, 재구성된 픽셀들은 균일한 스케일링을 인버팅하기 위해 N 비트들만큼 우측 시프트되어야 한다.
향상된 왜곡-추정 정확도는, {3,4,5,6,7}에서 qHpY를 가지는 도브쉬(Daubechies)-(7,9) 및 르갈(LeGall)-(5,3) 웨이브렛 변환들을 위해, 스케일링을 통해 그리고 스케일링 없이, 표준 모바일 비디오 시퀀스의 제 1 프레임의 각각의 라인 상에서 Y-컴포넌트 왜곡-추정 퍼센트(percentage) 에러를 측정함으로써 확인되었다. 다음으로, 평균 및 최대 퍼센트 에러들이 전체 라인들에 대해 계산되었다. 표 2는 퍼센트 에러들에서의 표로 작성된(tabulated) 감소치들을 도시한다.
Figure 112009041416627-pct00005
상기 표에서 보여지는 바와 같이, 스케일링은 왜곡-추정 에러들을, 특히 더 낮은 양자화 레벨들에서, 감소시키며, 여기서 라운딩 잡음이 양자화 잡음보다 우세한 경향이 있다.
후속하는 방법은 도 3에 도시된 엔트로피 인코더들(319-324)의 성능을 개선시키기 위해 사용된다. 이들 엔트로피 인코더들이 데이터가 지수적으로 분포된다고 가정하는 간단하고 효율적인 고롬(Golomb) 코드들을 사용하여 구현되었음을 상기하라. 산술 인코더들은 데이터의 실제 분포가 알려져 있는 경우에 고롬(Golomb) 인코딩보다 더 높은 압축 비율들을 달성한다("Elements of Information Theory" ― T. Cover and J. Thomas, Wiley 1991, Pg. 104. 참조).
종래 기술에서, 산술 인코더들 및 디코더들은 데이터 분포의 추정치들을 사용한다. 이들 추정치들은 보통 균일 분포로 초기화되고 실제적인 분포를 향해 점진적으로 수렴한다. 상기 수렴은 느리기 때문에, 달성된 평균 압축 비율은 고롬(Golomb) 코더로부터의 압축 비율보다 훨씬 더 낫지는 않다. 실제로, 우월한 성능을 획득하기 위해, 산술 인코더들은 통상적으로, 계산상 복잡한 컨텍스트-적응적(context-adaptive) 방법들을 이용한다(예를 들어, "Study of final committee draft of joint video specification ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC" ― T. Wiegand, Dec. 2002, Awaji MPEG Meeting 참조). 그러나, 아래에 설명되는 방법은 산술 인코딩이 고롬(Golomb) 코드들에 기초하여 엔트로피 인코더의 성능을 개선하기 위해 어떻게 사용될 수 있는지를 도시한다.
제 1 라인 상에서, 상기 인코더는 위에서 설명된 바와 같이, 상기 라인을 인코딩하기 위해 고롬(Golomb) 코딩을 사용한다. 따라서, 디코더는 이러한 라인을 디코딩하기 위해 고롬(Golomb) 디코딩을 사용한다. n>l인 라인 n 상에서, 상기 인코더는 라인 n상에서의 데이터 분포의 추정치로서, 라인(n-1)의 히스토그램을 계산한다. 이러한 추정치는 Ba 비트들을 사용하는 라인 n의 산술 인코딩을 위해 사용된다.
병렬적으로, 상기 인코더는 또한 Bg 비트들을 사용하는 라인 n의 고롬(Golomb) 인코딩을 생성한다. Ba < Bg인 경우, 상기 인코더는 제어 비트를 설정하고 라인 n의 산술 인코딩을 전송한다. 그렇지 않으면 제어 비트가 리셋되고 상기 라인의 고롬(Golomb) 인코딩이 전송된다.
대응적으로, 라인 n에 대해, 상기 디코더는 상기 인코더에 의해 전송된 제어 비트를 검사한다. 이러한 비트가 설정되면, 디코더는 라인 n의 산술 디코딩에 대한 추정된 분포로서 라인(n-1)의 히스토그램을 사용한다. 제어 비트가 리셋되면 디코더는 라인 n을 복원하기 위해 고롬(Golomb) 디코딩을 적용한다.
이러한 방식에 의해 달성된 압축 비율은 고롬(Golomb) 인코더로부터의 압축 비율보다 항상 크거나 같다. 실제적으로, 라인(n-1)의 히스토그램은 라인 1의 분포에 대해 통상적으로 양호한 추정치이며, 이는 비디오 데이터가 수직 축을 따라 크게(highly) 상관되기 때문이다. 상관도는 수직 에지들에서는 감소하지만, 이들 라인들에서, 인코더는 고롬(Golomb) 인코딩으로 자동으로 스위칭할 것이다.
후속하는 최적화는 도 5에 설명된 낮은-우선순위 패킷들에서의 비트들의 개수를 감소시킨다. 이들 패킷들이 도 3에서의 양자화된 고역 통과 채널들 HpY, HpU, HpV을 엔트로피 인코딩함으로써 획득됨을 상기하라. 해당 데이터가 지수적으로 분포되어 웨이브렛 계수들의 다수가 제로 근처에서 클러스터화되는 반면 소수가 큰 값을 가진다면, 고롬(Golomb) 코더는 양호하게 동작한다. 이러한 큰 계수들은 긴(long) 고롬(Golomb) 코드들 및 그리하여 더 낮은 압축 비율을 가질 것이다.
고역 통과 채널들 HpY, HpU, HpV 에서의 큰 웨이브렛 계수들은 각각의 Y, U, V 채널들에서의 대응 위치들에서의 수직 에지들에 대응한다. 이들 수직 에지들은 또한 개별적인 저역 통과 채널들 LpY, LpU, LpV 에서의 불연속성들을 초래한다. 따라서, 수직 에지 검출기를 사용하여 상기 저역 통과 채널들을 처리함으로써, 상기 고역 통과 채널들에서의 수직 에지들이 예측될 수 있다("Digital Image Processing using Matlab" by R. Gonzalez, R. Woods and S. Eddins, Prentice Hall 2004" 참조). 상기 고역 통과 채널들로부터의 상기 예측된 수직 에지들의 감산은 수직 에지들이 억제되는 나머지 고역 통과 채널들을 생성한다. 따라서, 나머지 고역 통과 채널들은 더 적은 큰-값의 웨이브렛 계수들을 가지며, 결과적인 낮은-우선순위 패킷들은 더 작은 수의 비트들을 소비한다.
이들 낮은 우선순위 패킷들을 디코딩하기 위해, 상기 디코더는 먼저 상기 나머지 고역 통과 채널들 뿐 아니라 LpY, LpU 및 LpV 채널들을 디코딩한다. 다음으로, 상기 LpY, LpU 및 LpV 채널들은 수직 에지 검출기에 의해 처리되며, 예측된 수직 에지들이 상기 나머지 고역 통과 채널들에 부가되어 고역 통과 채널들 HpY, HpU 및 HpV을 획득한다. 그 다음에 디코딩 프로세스는 이전에 설명된 바와 같이 계속된다.
다음은 도 3에서의 르갈(LeGall)-(5,3) 웨이브렛 변환의 정수 구현을 위한 새로운 라운딩 방법에 대하여 설명한다. JPEG-2000 이미지 압축 표준에서 정의된 바와 같이, 르갈(LeGall)-(5,3) 웨이브렛 변환의 업데이트 단계는 floor(x + 0.5)를 사용하여 x를 라운딩하는데, 여기서 x는 0.25의 정수배이며 floor(y)는 실수 y보다 작은 가장 큰 정수를 리턴시킨다(Equation 16 in "An Overview of the JPEG-2000 Still Image Compression Standard" by M. Rabbani and R. Joshi, Signal Processing: Image Communication 17 (2002) 3-48 참조). [-0.5,0.5) 내의 x의 값들은 floor(x + 0.5)에 의해 0으로 매핑된다. 하드웨어 구현에 있어서, x 및 0.5는 이들에 4를 곱함으로써 정수들로 변환되어 x' = 4x 및 2 = 4*0.5를 획득할 것이다. 이러한 표현에 의해, 도 19는 JPEG-2000 이미지 압축 표준에서 정의된 바와 같이 floor(x'+2)가 어떻게 구현되는지를 도시한다.
이제, fix(x + 0.5)에 의해 설명된 라운딩 방법을 고려하도록 하며, 여기서 fix(y)는 y에 가장 가까운 정수를 리턴시키며, 이는 또한 y와 0 사이에 있다. (-1.5,0.5) 내의 x 값들은 fix(x + 0.5)에 의해 0으로 매핑됨을 살펴보라. 하드웨어 구현에 있어서, x 및 0.5는 이들에 4를 곱함으로써 정수들로 변환되어 x' = 4x 및 2 = 4*0.5를 획득할 것이다. 이러한 표현에 의해, 도 20은 fix(x' + 2)가 구현되는 방법을 도시한다. 역 웨이브렛 변환(inverse wavelet transform)에서, 도 20은 보통의 역 리프팅(lifting) 절차에 의해 쉽게 리버스(reverse)된다.
도 20은 1만큼의 추가적인 가산뿐만 아니라 합계(sum)에 대한 추가적인 부호 체크를 포함하고 있다. 그러나 이전에 설명된 바와 같이, floor(x+0.5)가 [-0.5, 0.5)를 제로로 매핑하는 것에 반하여, fix(x+0.5)는 (-1.5, 0.5)를 제로(zero)로 매핑한다. 따라서 floor(x+0.5)가 값들 {-0.5, ―0.25, 0, 0.25}을 제로로 매핑하는 것에 반하여, fix(x+0.5)는 값들 {-1.25, ―1.0, ―0.75, ―0.5, ―0.25, 0, 0.25}를 제로로 매핑한다. 도 4의 엔트로피 인코더가 가장 짧은 길이(length)-1 코드를 제로 값들로 할당한 것을 상기하도록 한다. 따라서 업데이트 단계 이후의 라운딩을 위한 JPEG-2000 floor(x+0.5)를 사용하는 웨이브렛 변환은 4개의 값들을 길이-1 코드로 매핑할 것이다. 반면에, 제안된 fix(x+0.5) 라운딩은 7개의 값들을 길이-1 코드로 매핑할 것이다. fix(x+0.5) 라운딩은 더 많은 값들을 길이-1의 가장 짧은 엔트로피 코드로 매핑하기 때문에, fix(x+0.5) 라운딩을 통한 웨이브렛 변환을 이용하는 손실 없는 인코딩은 JPEG-2000 floor(x+0.5) 라운딩을 사용한 웨이브렛 변환보다 더 큰 압축 비율들을 제공한다.
표 3은 이러한 예상(expectation)을 확인한다. 제 1 열(column)은 fix(x+0.5) 라운딩을 이용하여 손실 없이 압축된 38개의 상이한 이미지들에 대한 압축 비율들을 보여주고, 제 2 열은 floor(x+0.5) 라운딩이 사용될 때 획득되는 압축 비율들을 보여준다. 모든 38개의 이미지들에 대해, fix(x+0.5) 라운딩은 floor(x+0.5) 라운딩보다 더 큰 압축 비율들을 제공한다. 위에서 지적한 바와 같이, floor(x+0.5) 라운딩과 비교되는 fix(x+0.5) 라운딩에 대한 추가적인 하드웨어 비용은 매우 작다. fix(x+0.5) 라운딩으로부터의 이익은 데드존(deadzone) 양자화(quantization) 효과로 인한 것이 아니라는 것이 강조되어야 한다("Video Coding ― An Introduction to Standard Codecs" by M. Ghanbari, IEE 1999, Pg. 26을 참조하도록 한다). 특히, 데드존은 양자화기(quantizer)의 제로-빈 폭을 증가시키기 위해 손실 코딩에서 사용된다. 그러나 fix(x+0.5) 라운딩은 웨이브렛 변환에서 발생하고, 양자화기를 사용하지 않는 손실 없는 코딩에서조차도 장점을 제공한다.
Figure 112009041416627-pct00006
최종적인 최적화는 비디오 레이트-제어 성능을 개선하기 위한 방법을 고려한다. 위에서의 도 6에 대한 설명은 maxLsize(601), maxHsize(602), ByPass(603), SelectYuv(604) 및 SelectTfm(605)가 이러한 제어 신호들의 값들을 제공하는 표로 인덱싱하기 위해 채널-용량 추정치를 이용함으로써 획득된다는 것을 나타낸다. 실제적으로, 채널-용량 추정치들은 종종 신뢰할 수 없으며, 강건함(robustness)은 비디오 레이트 제어를 위해 직접적으로 채널-용량 추정치들을 사용하지 않음으로써 개선될 수 있다.
인덱스(index) 저역 통과 CR 고역 통과 CR SelectYuv SelectTfm 바이패스(ByPass) 최악-케이스(worst-Case) CR들
1 1 1 4:4:4 L53 1 1
2 1 2 4:4:4 L53 0 1.6
3 1 3 4:4:4 L53 0 2
4 1 2 4:2:2 L53 0 2.4
5 1 3 4:2:2 L53 0 3
6 1 2 4:1:1 L53 0 3.2
7 1 3 4:1:1 L53 0 4
8 1 4 4:1:1 L53 0 4.571428571
9 1 5 4:1:1 L53 0 5
10 1.5 6 4:1:1 L79 0 6.857142857
11 1.5 7 4:1:1 L79 0 7.304347826
12 1.5 8 4:1:1 L79 0 7.68
상기 방법을 설명하기 위해 표 4는 비디오 레이트 제어 신호들을 위한 12개의 설정들을 보여준다. 저역 통과 CR 및 고역 통과 CR은 저역 통과 및 고역 통과 서브밴드들에 대한 타겟팅된 압축 비율들을 지칭한다. 이러한 양들은 다음과 같이 maxLsize 및 maxHsize에 관련되며,
maxLsize = uncompressed_lowpass_subband_size/LowpassCR,
maxHsize = uncompressed_highpass_subband_size/HighpassCR,
여기서 압축되지 않은 서브밴드 크기들은 입력 해상도(resolution) 및 저역 통과 및 고역 통과 서브밴드 크기들 사이의 1 대 3 비율을 사용하여 직접적으로 계산될 수 있다.
최악-케이스(Worst-Case) CR들 열은, YUV 포맷뿐만 아니라 저역 통과 및 고역 통과 압축 비율들을 고려함으로써, 주어진 설정들을 이용하여 획득되는 최소의 압축 비율을 보여준다. 이러한 최악-케이스 CR들은 임의의 피크 신호-대-잡음비(PSNR) 값들을 가지는, 도 21의 곡선(2160) 상의 포인트들(2161 내지 2172)에 의해 도시된다. 그러나 실제의 이미지들이 상기 12개의 설정들을 사용하여 처리될 때, 압축 비율들 및 PSNR들은 통상적으로 최악-케이스 곡선 보다 더 위에 있다. 예를 들어, 표준 모바일 이미지에 대해, 포인트들(2141 내지 2152)에 의해 표현된 상기 12개의 설정들은 도 21에서 곡선 (2140)을 생성한다. 유사하게, 12개의 설정들을 gfx(포인트들 2121 내지 2132) 및 wq 이미지들(포인트들 2101 내지 2112)에 적용하는 것은 도 21에서 각각 곡선(2120 및 2100)을 형성한다. 곡선(2100)은 곡선(2140)과 연관된 이미지보다 훨씬 압축하기 쉬운 이미지에 대응하고; 그러므로 곡선(2100) 상의 포인트들은 곡선(2140) 상의 대응하는 포인트들보다 더 높은 PSNR들 및 CR들을 가진다.
다음의 예는 상기의 비디오 레이트 제어 방법을 설명하고 SXGA 비디오(1024x768@60Hz)가 전송된다고 가정한다. 이러한 비디오 포맷은 1132 Mbps의 로(raw) 비트레이트를 요구한다. 전송이 시작하면, MAC으로부터의 스루풋 추정치는 525 Mbps이다. 따라서, 최초의 CR은 1132/525 = 2.16보다 커야한다.
최악-케이스 CR들로부터, 설정 #4는 최초 CR보다 큰 가장 작은 최악-케이스 CR을 획득하기 위해 요구된다. 그러나, 비디오 컨텐트가 gfx 이미지와 유사한 경우, 설정 #4는 시스템이 도 21의 gfx 곡선(2120) 상의 포인트(2124)에서 동작하도록 할 것이다. 그러므로, 평균 CR은 3.5보다 클 것이며, 이는 최초 CR=2.16보다 훨씬 크다.
압축된 비디오 패킷들의 크기를 모니터링함으로써, 본 발명의 실시예는 이러한 조건을 검출할 수 있고, 상기 컨텐트가 압축하기에 상대적으로 용이하기 때문에 압축이 필요한 것보다 더 높게 이루어진 것을 알 수 있다. 이러한 조건을 검출하면, 설정 인덱스는 3으로 감소하여, 그 결과 CR>3인 gfx 곡선(2120) 상의 포인트(2123)에서 동작한다. 본 발명의 실시예는 초과-압축된 조건을 반복적으로 검출하고, CR>2.5인 gfx 곡선(2120) 상의 포인트(2120)에 도달할 때까지 설정 인덱스를 계속해서 감소시킨다. CR이 최초의 CR보다 더 크도록 보장하면서, gfx 곡선(2120) 상의 포인트(2124)에서 포인트(2121)로 이동하는 것은 PSNR을 약 38dB에서 약 57dB로 증가시킨다.
앞선 설명은 압축된 패킷들의 실제 크기에 대한 피드백을 이용하는 PSNR의 개선을 커버한다. 본 발명의 다른 실시예에서, 다른 피드백이 무선 전송 이전에 패킷들을 홀드하고 있는 전송 버퍼에서 오버플로우(overflow)들을 방지하기 위해 채널 조건들의 변경에 대응하기 위해 이용될 수 있다.
만약 수신기가 모든 패킷들을 확인 응답하도록 요청된다면, 확인 응답되지 않은 패킷들은 재-전송될 수 있다. 전송 버퍼는 재-전송들 동안 드레인(drain)되지 않기 때문에, 재-전송들 동안, 설정 인덱스는 CR을 증가시키고 버퍼 오버플로우를 방지하기 위해 증가될 수 있다. WiMedia MAC 규격은 비디오 전송이 디스에이블링되는 협상된(negotiated) 타임 슬롯들을 허용한다("WiMedia MAC 0.99 RC1" by Multiband OFDM Alliance Special Interest Group, 2005를 참조하도록 한다). 이러한 타임 슬롯들은 미리 알려져 있기 때문에, 설정 인덱스가 또한 이러한 타임 슬롯들 전에, 이러한 타임 슬롯들 동안에, 그리고 바로 직후에 증가될 수 있다. 다시, 이러한 동작은 전송 버퍼가 디스에이블링된 타임 슬롯들 동안 드레인하지 않기 때문에 버퍼 오버플로우를 방지할 것이다. 마지막으로, 설정 인덱스는 버퍼 포화도(fullness)가 예를 들어 버퍼 용량의 65%와 같이 미리-정의된 임계치를 초과할 때마다 버퍼 오버플로우를 방지하기 위해 증가될 수 있다. 재-전송들, 디스에이블링된 타임 슬롯들 및 버퍼 포화도와 관련한 피드백이 없다면, 레이트-제어 방법은, 초과-압축(over-compression)이 검출되는 이전에 설명된 동작으로 되돌아가며(revert) 설정 인덱스는 최초의 CR 보다 높은 지점에서 동작하면서 PSNR을 증가시키기 위해 감소된다.
도 22는 본 발명의 일 실시예에 따른 개선된 비디오 레이트 제어를 위한 펌웨어로 구현되는 방법을 설명하는 순서도이다. 이러한 방법은 초과-압축을 검출함으로써 레이트 제어 성능을 개선하기 위해 압축된 패킷 크기에 대한 피드백을 이용한다.
도 22에 묘사된 프로세스는 XGA 비디오(1024x768@60Hz)를 전송하는 예를 통해 설명될 수 있다. 이러한 비디오 포맷은 1132 Mbps의 로(raw) 비트레이트를 필요로 한다. 전송이 시작될 때, 시스템은 MAC으로부터 525 Mbps의 스루풋 추정치를 획득한다. 따라서 최초의 CR은 1132/525 = 2.16 보다 커야한다(단계 2201). 최악-케이스 CR들로부터, 설정 #4는 최초의 CR보다 큰 가장 작은 최악-케이스 CR을 획득하기 위해 선택된다(단계 2202). 다음 비디오 패킷은 설정 #4에서 동작하는 레이트 제어를 통해 생성된다(단계 2203).
만약 비디오 컨텐트가 gfx 이미지와 유사하다면, 설정 #4는 시스템이 도 21의 gfx 곡선(2120) 상의 포인트(2124)에서 동작하도록 할 것이다. 따라서 평균 CR은 3.5보다 커야하며, 이는 최초의 CR=2.16보다 훨씬 크다. 압축된 비디오 패킷들의 크기를 모니터링함으로써(단계 2204), 컨텐츠가 비교적 용이하게 압축되기 때문에 압축이 필요 이상으로 높아진다는 것을 확인하기 위해서 이러한 상태가 검출될 수 있다(단계 2205). 이러한 상태를 검출하면, 시스템은 CR > 3 을 가지는 gfx 곡선(2120) 상의 포인트(2123)에서 동작하기 위해서 설정 인덱스를 3으로 감소시킨다(단계 2206).
프로세스는 초과-압축된 상태들을 반복적으로 검출할 것이고(단계 2207), 도 21에서 CR > 2.5를 가지는 gfx 곡선(2120) 상의 포인트(2121)에 도달할 때까지 설정 인덱스를 계속 감소시킬 것이다(단계 2208). gfx 곡선(2120) 상의 포인트(2124)로부터 포인트(2121)로의 이동은 CR이 최초의 CR보다 크게 유지되도록 보장하면서 PSNR을 약 38 dB로부터 약 57 dB로 증가시킨다.
도 23은 본 발명의 일 실시예에 따라 향상된 비디오 레이트 제어에 대한 대안적인, 하드웨어-구현된 방법을 도시하는 흐름도이다. 이러한 방법은 압축된 라인 크기에 대한 피드백을 사용하여 초과-압축을 검출한다. 하드웨어 구현은 보다 신속한 응답을 보장하고, 그에 따라 전술한 펌웨어 구현보다 양호한 성능을 보장한다.
레지스터 unused_bytes_accumulator를 클리어링(clear)함으로써 프로세스가 시작된다(단계 2301). XGA 예를 다시 참조하면, 525 Mbps 채널을 통한 전송을 지속하기 위해서, 목표 CR은 2.16이 되어야 한다(단계 2302). 따라서, 이상적으로, 각각의 라인은 최대 1024*3/2.16 = 1423 bytes를 점유하여야 한다.
전송이 시작될 때, 시스템은 최악-케이스 CR = 2.4를 보장하는 설정 #4를 선택한다(단계 2303). 이러한 설정은 4:2:2 데이터, 저역통과 CR = 1, 및 고역통과 CR = 2로 비디오 레이트 제어를 동작시키며 이것은 다음을 의미한다.
Figure 112009041416627-pct00007
제 1 라인은 특정된 maxLsize 및 maxHsize 레이트-제어 파라미터들을 사용하여 인코딩되고(단계 2304), 이후 Lsize 및 Hsize는 압축된 라인의 저역통과 및 고역통과 서브밴드들의 실제 크기들을 표시한다(단계 2305). 이러한 예에서, Lsize = 300 및 Hsize = 400 bytes로 가정하면, 다음과 같다.
Figure 112009041416627-pct00008
이것은 압축된 라인이 최대 허용가능한 크기를 580 bytes만큼 미달한다는 것을 나타낸다. 다시 말해서, 상기 라인은 설정 #4와 연관된 최대 1280 bytes를 위반하지 않고, 그것이 실제 사용했던 bytes보다 580 bytes 더 많이 사용할 수 있었다. 따라서, 단계 2306에서, 시스템은 이러한 미사용된 580 bytes를 레지스터 unused_bytes_accumulator에 할당하고, 그 결과 이들은 후속적인 라인들에 의해 회수(reclaim)될 수 있다. 단계 2307은 도 24에서 정의된 클립 함수를 이용하여 unused_bytes_accumulator를 32 Kbytes로 클리핑(clip)한다.
다음으로, 시스템은 로 설정하고(단계 2308),
Figure 112010016596158-pct00010
로 설정한다(단계 2309). 그 결과, 다음 라인이 단계 2304에서 인코딩될 때, 비디오 레이트 제어는 상기 라인이 다음과 같이 사용하도록 허용할 것이다:
저역통과 서브밴드들에 대하여,
Figure 112009041416627-pct00011
, 그리고
고역통과 서브밴드들에 대하여,
Figure 112009041416627-pct00012
이전 라인들로부터 미사용된 bytes의 일부를 회수함에 의해 이러한 라인에 대한 효율적인 최대 라인 크기들이 증가하므로, 비디오 레이트 제어는 이러한 라인에 대한 덜 엄격한 양자화 설정들을 선택할 수 있다. 이것은 보다 양호한 시각적인 품질을 달성한다.
525 Mbps 미만의 순간적인(instantaneous) 대역폭 요구들을 출력하는, 2.4 보다 큰 CR을 가지는 라인들로부터 미사용된 bytes가 회수되기 때문에, 525 Mbps의 스루풋 제한은 시간이 경과하여도 위반되지 않는다. 이러한 미사용된 bytes는 525 Mbps보다 큰 순간적인 대역폭 요구들을 출력하는, 더 낮은 CR들로 압축될 수 있는 후속적인 라인들에 할당된다. 그러나, 시스템은 라인이 허용가능한 최대 크기 즉,
Figure 112010016596158-pct00013
보다 작도록 하는 미사용된 bytes들을 회수하므로, 평균 대역폭 요건은 525 Mbps보다 낮도록 보장된다. (1280 bytes은 525 Mbps의 스루풋을 보장하는 1423 byte 제한보다 작음을 상기하도록 한다.)
실제적으로, 높은-우선순위 및 낮은-우선순위 패킷들이 전송 전에 전송 버퍼 상에 배치되기 때문에, 일부 라인들 상에서 순간적으로 525 Mbps의 대역폭을 초과하는 것은 심각한 문제가 아니다. 패킷들이 도달하는 평균 레이트가 525 Mbps를 초과하지 않는다면, 충분히 큰 버퍼는 오버플로우(overflow) 없이, 525 Mbps의 일정한 레이트로 드레인될 수 있다.
이전의 설명은 충분히 큰 전송 버퍼가 이용가능한 경우, 순간적인 큰 대역폭 요구들이 버퍼 오버플로우를 생성하지 않을 것임을 나타낸다. 큰 버퍼들과 연관된 비용을 줄이기 위해서, 본 발명의 일 실시예는 다음의 기술들을 사용하여 저가의 적절한-크기의 버퍼를 통해 버퍼의 오버플로우를 방지한다.
1) 설정 #4 는 1132/2.4 = 472 Mbps의 스루풋에 대응하는 CR = 2.4에서 동작한다. 따라서, 회수되는 bytes는 순간적으로 대역폭 요구들이 472 Mbps를 초과할 수 있더라도 평균 대역폭 요구들이 472 Mbps가 되도록 할 것이다. 그러나, 순간적인 대역폭 요구들이 버퍼 오버플로우를 생성하는 일정한 시간 기간을 넘어서 525 Mbps를 초과할 가능성은 거의 없다.
2) 단계 2307은 도 24에서 정의된 클립 함수를 이용하여 unused_bytes_accumulator를 32 Kbytes로 클리핑한다. 상기 레지스터를 32 Kbytes로 포화(saturate)시킴으로써, 본 발명의 일 실시예는 미사용된 bytes를 회수할 수 있는 연속적인 라인들의 수에 대한 상한 값(upper bound)을 설정한다. 따라서, 525 Mbps를 초과하는 순간적인 대역폭 요구들을 가지는 연속적인 라인들의 수는 상한으로 제한된다. 이것은 버퍼 오버플로우의 확률을 감소시킨다.
3) 단계들 2308 및 2309는
Figure 112010016596158-pct00014
Figure 112010016596158-pct00015
를 256 bytes 및 768 bytes로 각각 클리핑한다. 이것은 최대 압축된 라인 크기를 maxLsize + 256 + maxHsize + 768 = 2304 bytes의 상한으로 제한하며, 이는 2304*8*768*60 = 849 Mbps의 순간적인 대역폭 요구에 대응한다. 순간적인 대역폭 요구가 525 Mbps를 초과할 때마다 849 Mbps의 상한으로 제한되므로, 버퍼 오버플로우가 발생할 가능성이 적어진다.
전술한 펌웨어 및 하드웨어 방법들은 압축된 패킷 또는 라인 크기에 관한 피드백에 기초하여 비주얼 품질 향상들을 커버한다. 그러나, 다른 피드백이 무선 전송 전에 패킷들을 홀딩하는 전송 버퍼에서의 오버플로우들을 방지하기 위한 채널 상태의 변경에 반응하기 위해 사용될 수 있다.
만약 수신기가 모든 패킷들을 확인 응답하도록 요청된다면, 확인 응답되지 않은 패킷들은 재-전송될 수 있다. 전송 버퍼는 재-전송들 동안 드레인되지 않기 때문에, 재-전송들 동안, 설정 인덱스는 CR을 증가시키고 버퍼 오버플로우를 방지하기 위해 증가될 수 있다.
WiMedia MAC 규격은 비디오 전송이 디스에이블링되는 협상된 타임 슬롯들을 허용한다("WiMedia MAC 0.99 RC1" by Multiband OFDM Alliance Special Interest Group, 2005를 참조하도록 한다). 이러한 타임 슬롯들은 미리 알려져 있기 때문에, 설정 인덱스가 또한 이러한 타임 슬롯들 전에, 이러한 타임 슬롯들 동안에, 그리고 바로 직후에 증가될 수 있다. 다시, 이러한 동작은 전송 버퍼가 디스에이블링된 타임 슬롯들 동안 드레인하지 않기 때문에 버퍼 오버플로우를 방지할 것이다.
마지막으로, 설정 인덱스는 버퍼 포화도가 버퍼 용량의 65%와 같이 미리-정의된 임계치를 초과할 때마다 버퍼 오버플로우를 방지하기 위해 증가될 수 있다. 재-전송들, 디스에이블링된 타임 슬롯들 및 버퍼 포화도와 관련한 피드백이 없다면, 레이트-제어 방법은, 초과-압축이 검출되는 이전에 설명된 동작으로 되돌아가며 설정 인덱스는 최초의 CR 보다 높은 지점에서 동작하면서 PSNR을 증가시키기 위해 감소된다.
본 발명의 실시예들이 상세하게 설명되었지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 사상 및 범위를 벗어나지 않고 다양한 변화들, 치환들 및 변경들이 이루어질 수 있다는 것을 이해해야 할 것이다.

Claims (28)

  1. 비디오 레이트 제어를 위한 방법으로서,
    비디오 프레임의 제 1 액티브 라인을 수신하는 단계;
    상기 제 1 액티브 라인과 연관된 액티브 비디오 데이터에 대한 다수의 양자화 파라미터들을 결정하는 단계;
    코딩 시스템에 상기 다수의 양자화 파라미터들을 제공하는 단계 ― 인코딩된 제 1 액티브 라인의 비디오 레이트가 최대 비디오 레이트를 초과하지 않도록 상기 제 1 액티브 라인의 적어도 일부를 인코딩하기 위해 상기 다수의 양자화 파라미터들이 사용됨 ― ; 및
    상기 제1 액티브 라인과 상이한, 상기 비디오 프레임의 제 2 액티브 라인을 수신하는 단계
    를 포함하며, 상기 제 1 액티브 라인과 연관된 액티브 비디오 데이터에 대한 다수의 양자화 파라미터들을 결정하는 단계는 상기 비디오 프레임의 상기 제 2 액티브 라인의 수평 블랭킹(blanking) 부분 동안 적어도 부분적으로 수행되는, 비디오 레이트 제어 방법.
  2. 제 1 항에 있어서,
    상기 제 1 액티브 라인을 수신하는 단계는, 상기 제 1 액티브 라인의 저역-통과(low-pass) 부분을 수신하는 단계 및 상기 제 1 액티브 라인의 고역-통과(high-pass) 부분을 수신하는 단계를 포함하는, 비디오 레이트 제어 방법.
  3. 제 2 항에 있어서,
    상기 제 1 액티브 라인과 연관된 액티브 비디오 데이터에 대한 다수의 양자화 파라미터들을 결정하는 단계는, 상기 제 1 액티브 라인의 상기 저역-통과 부분에 대한 적어도 하나의 저역-통과 양자화 파라미터를 결정하는 단계 및 상기 제 1 액티브 라인의 상기 고역-통과 부분에 대한 적어도 하나의 고역-통과 양자화 파라미터를 결정하는 단계를 포함하는, 비디오 레이트 제어 방법.
  4. 제 3 항에 있어서,
    상기 제 1 액티브 라인의 상기 고역-통과 부분에 대한 고역-통과 최대 인코딩된 라인 크기를 수신하는 단계 및 상기 제 1 액티브 라인의 상기 저역-통과 부분에 대한 저역-통과 최대 인코딩된 라인 크기를 수신하는 단계를 더 포함하며,
    상기 제 1 액티브 라인의 상기 저역-통과 부분에 대한 상기 저역-통과 양자화 파라미터를 결정하는 단계는 상기 제 1 액티브 라인의 상기 저역-통과 부분의 저역-통과 코딩된 길이가 상기 저역-통과 최대 인코딩된 라인 크기보다 작은지 여부를 비교하는 단계를 포함하며,
    상기 제 1 액티브 라인의 상기 고역-통과 부분에 대한 상기 고역-통과 양자화 파라미터를 결정하는 단계는 상기 제 1 액티브 라인의 상기 고역-통과 부분의 고역-통과 코딩된 길이가 상기 고역-통과 최대 인코딩된 라인 크기보다 작은지 여부를 비교하는 단계를 포함하는, 비디오 레이트 제어 방법.
  5. 제 1 항에 있어서, 상기 다수의 최적 양자화 파라미터들을 결정하는 단계는,
    상기 제 1 액티브 라인에 대한 비트 레이트 요구를 수신하는 단계;
    초기 스루풋(throughput) 추정을 수신하는 단계;
    초기 압축 비율을 결정하는 단계;
    상기 초기 압축 비율보다 큰 제 2 압축 비율을 결정하는 단계; 및
    초과-압축(over-compression)을 검출하는 단계
    를 포함하는, 비디오 레이트 제어 방법.
  6. 제 5 항에 있어서,
    압축된 비디오 패킷 크기를 수신하는 단계를 더 포함하며,
    상기 초과-압축을 검출하는 단계는 상기 수신된 압축된 비디오 패킷 크기를 모니터링하는 단계를 포함하는, 비디오 레이트 제어 방법.
  7. 제 5 항에 있어서,
    압축된 라인 크기를 수신하는 단계를 더 포함하며,
    상기 초과-압축을 검출하는 단계는 상기 압축된 라인 크기를 모니터링하는 단계를 포함하는, 비디오 레이트 제어 방법.
  8. 제 5 항에 있어서, 상기 초과-압축을 검출하는 단계는,
    실제 인코딩된 저역-통과 라인 크기를 결정하는 단계;
    실제 인코딩된 고역-통과 라인 크기를 결정하는 단계;
    상기 실제 인코딩된 저역-통과 라인 크기를 이전에 인코딩된 저역-통과 라인 크기와 비교하는 단계; 및
    상기 실제 인코딩된 고역-통과 라인 크기를 이전에 인코딩된 고역-통과 라인 크기와 비교하는 단계
    를 포함하는, 비디오 레이트 제어 방법.
  9. 제 8 항에 있어서,
    상기 이전에 인코딩된 저역-통과 라인 크기는 최대 인코딩된 저역-통과 라인 크기를 포함하고, 상기 이전에 인코딩된 고역-통과 라인 크기는 최대 인코딩된 고역-통과 라인 크기를 포함하는, 비디오 레이트 제어 방법.
  10. 제 2 항에 있어서,
    상기 제 1 액티브 라인의 상기 저역-통과 부분과 연관된 저역-통과 픽셀 도메인 왜곡을 추정하는 단계; 및
    상기 제 1 액티브 라인의 상기 고역-통과 부분과 연관된 고역-통과 픽셀 도메인 왜곡을 추정하는 단계
    를 더 포함하는, 비디오 레이트 제어 방법.
  11. 제 10 항에 있어서,
    고역-통과 변환 계수를 제공하는 단계; 및
    저역-통과 변환 계수를 제공하는 단계
    를 더 포함하며,
    상기 저역-통과 픽셀 도메인 왜곡을 추정하는 단계는, 상기 저역-통과 변환 계수를 스케일링(scaling)하는 단계 및 저역-통과 역 변환을 수행한 후에 상기 스케일링을 인버팅(inverting)하는 단계를 포함하고,
    상기 고역-통과 픽셀 도메인 왜곡을 추정하는 단계는, 상기 고역-통과 변환 계수를 스케일링하는 단계 및 고역-통과 역 변환을 수행한 후에 상기 스케일링을 인버팅하는 단계를 포함하는, 비디오 레이트 제어 방법.
  12. 제 2 항에 있어서,
    적어도 하나의 양자화 레벨에 대한 데이터를 예측함으로써 상기 제 1 액티브 라인의 상기 저역-통과 부분의 저역-통과 코딩된 길이를 결정하는 단계를 더 포함하는, 비디오 레이트 제어 방법.
  13. 제 12 항에 있어서,
    상기 적어도 하나의 양자화 레벨에 대한 상기 데이터의 예측은 상기 제 1 액티브 라인의 상기 저역-통과 부분의 인접 부분(neighbor)에 기반한 예측을 포함하는, 비디오 레이트 제어 방법.
  14. 라인 기반 비디오 압축을 위한 방법으로서,
    비디오 프레임의 라인에 기반하여 비디오 포맷을 선택하는 단계;
    상기 비디오 프레임의 상기 라인에 기반하여 웨이브렛(wavelet) 변환을 선택하는 단계;
    상기 선택된 웨이브렛 변환에 기반하여 상기 비디오 프레임의 상기 라인의 저역-통과 및 고역-통과 부분들을 제공하는 단계;
    상기 비디오 프레임의 상기 라인의 상기 저역-통과 및 고역-통과 부분들에 대한 양자화 파라미터들을 수신하는 단계; 및
    상기 양자화 파라미터들을 상기 비디오 프레임의 상기 라인의 상기 저역-통과 및 고역-통과 부분들에 적용하는 단계
    를 포함하는, 라인 기반 비디오 압축 방법.
  15. 제 14 항에 있어서,
    지수적 분포(exponential distribution)에 적합(fit)하도록 상기 저역-통과 부분을 조절(condition)하는 단계; 및
    상기 생성된 상기 저역-통과 및 고역-통과 부분들을 인코딩하는 단계
    를 더 포함하는, 라인 기반 비디오 압축 방법.
  16. 제 14 항에 있어서,
    상기 비디오 포맷은 RGB 및 YUV 포맷 중 하나를 포함하는, 라인 기반 비디오 압축 방법.
  17. 제 16 항에 있어서,
    상기 YUV 포맷은 4:4:4, 4:2:2 및 4:1:1 포맷 중 하나를 포함하는, 라인 기반 비디오 압축 방법.
  18. 제 14 항에 있어서,
    상기 웨이브렛 변환을 선택하는 단계는 도브쉬(Daubechies)-(7,9) 및 르갈(LeGall)-(5,3) 웨이브렛 변환들 중 하나를 선택하는 단계를 포함하는, 라인 기반 비디오 압축 방법.
  19. 제 14 항에 있어서,
    상기 웨이브렛 변환을 선택하는 단계는 미리 결정된 이미지 압축 표준을 이용하는 상기 웨이브렛 변환을 선택하는 단계를 포함하는, 라인 기반 비디오 압축 방법.
  20. 제 19 항에 있어서,
    상기 웨이브렛 변환을 선택하는 단계는 상기 미리 결정된 이미지 압축 표준을 이용하는 상기 웨이브렛 변환보다 큰 압축 비율을 제공하기 위해 라운딩(rounding) 방법을 이용하여 상기 웨이브렛 변환을 선택하는 단계를 포함하는, 라인 기반 비디오 압축 방법.
  21. 제 15 항에 있어서,
    상기 인코딩하는 단계는 상기 비디오 프레임의 상기 라인에 기반하여 산술 코딩 및 고롬(Golomb) 코딩 사이에서 선택적으로 스위칭하는 인코더를 사용하는 단계를 포함하는, 라인 기반 비디오 압축 방법.
  22. 제 21 항에 있어서,
    인코딩은 산술 없이 구현된 고롬(Golomb) 인코더의 사용을 포함하는, 라인 기반 비디오 압축 방법.
  23. 제 14 항에 있어서,
    상기 고역-통과 부분의 수직 에지(edge)를 예측하는 단계; 및
    상기 고역-통과 부분의 상기 수직 에지를 억제(suppress)함으로써 나머지 고역-통과 부분을 획득하는 단계
    를 더 포함하며, 인코딩은 상기 나머지 고역-통과 부분의 인코딩을 포함하는, 라인 기반 비디오 압축 방법.
  24. 제 23 항에 있어서,
    상기 고역-통과 부분의 수직 에지를 예측하는 단계는 수직 에지 검출기를 사용하여 상기 저역-통과 부분을 프로세싱하는 단계를 포함하며,
    상기 고역-통과 부분의 상기 수직 에지의 억제는 상기 고역-통과 부분으로부터 상기 예측된 수직 에지를 감산(subtract)하는 것을 포함하는, 라인 기반 비디오 압축 방법.
  25. 제 14 항에 있어서,
    적어도 하나의 고역-통과 웨이브렛 계수를 생성하는 단계; 및
    적어도 하나의 저역-통과 웨이브렛 나머지(residue)를 생성하는 단계를 더 포함하는, 라인 기반 비디오 압축 방법.
  26. 제 25 항에 있어서,
    적어도 하나의 고역-통과 웨이브렛 계수를 인코딩하는 단계; 및
    적어도 하나의 저역-통과 웨이브렛 나머지를 인코딩하는 단계를 더 포함하는, 라인 기반 비디오 압축 방법.
  27. 제 26 항에 있어서,
    상기 적어도 하나의 고역-통과 웨이브렛 계수의 인코딩은 고롬(Golomb) 인코딩을 포함하는, 라인 기반 비디오 압축 방법.
  28. 제 26 항에 있어서,
    상기 적어도 하나의 저역-통과 웨이브렛 나머지의 인코딩은 고롬(Golomb) 인코딩을 포함하는, 라인 기반 비디오 압축 방법.
KR1020097014217A 2006-12-07 2007-12-07 라인-기반 비디오 레이트 제어 및 압축 KR101065520B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US86907106P 2006-12-07 2006-12-07
US60/869,071 2006-12-07

Publications (2)

Publication Number Publication Date
KR20090096516A KR20090096516A (ko) 2009-09-10
KR101065520B1 true KR101065520B1 (ko) 2011-09-19

Family

ID=39493099

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097014217A KR101065520B1 (ko) 2006-12-07 2007-12-07 라인-기반 비디오 레이트 제어 및 압축

Country Status (6)

Country Link
US (2) US8208554B2 (ko)
EP (1) EP2103147A4 (ko)
JP (2) JP5221557B2 (ko)
KR (1) KR101065520B1 (ko)
CN (1) CN101755464B (ko)
WO (1) WO2008070843A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8355434B2 (en) * 2005-01-10 2013-01-15 Qualcomm Incorporated Digital video line-by-line dynamic rate adaptation
WO2006090334A2 (en) * 2005-02-28 2006-08-31 Nxp B.V. New compression format and apparatus using the new compression format for temporarily storing image data in a frame memory
WO2008070843A2 (en) 2006-12-07 2008-06-12 Qualcomm Incorporated Line-based video rate control and compression
US7825835B2 (en) * 2008-12-15 2010-11-02 Nvidia Corporation Method and system for encoded video compression
US8798140B2 (en) * 2009-01-27 2014-08-05 Nvidia Corporation Encoding video frames in a video encoder
US8259816B2 (en) * 2009-03-12 2012-09-04 MIST Innovations, Inc. System and method for streaming video to a mobile device
US8767820B2 (en) * 2009-11-11 2014-07-01 Dell Products, Lp Adaptive display compression for wireless transmission of rendered pixel data
JP5665508B2 (ja) * 2010-11-30 2015-02-04 キヤノン株式会社 画像処理装置及び方法、並びにプログラム及び記憶媒体
JP5101728B1 (ja) * 2011-05-12 2012-12-19 シャープ株式会社 出力システムおよび表示システム
WO2013058542A1 (ko) 2011-10-17 2013-04-25 주식회사 케이티 영상 부호화/복호화 방법 및 그 장치
KR20150054554A (ko) * 2013-11-12 2015-05-20 삼성전자주식회사 영상 처리장치 및 방법
EP3185554A1 (en) * 2015-12-21 2017-06-28 Alcatel Lucent Devices for video encoding and reconstruction with adaptive quantization
CN114710677B (zh) * 2022-01-12 2023-07-18 华芯算科学技术(苏州)有限公司 图像压缩方法、装置、存储介质及终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020008133A (ko) * 1999-03-26 2002-01-29 존 비. 메이슨 유한 알파벳 데이터의 비손실 적응 인코딩
KR20020064803A (ko) * 2000-09-12 2002-08-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 비디오 코딩 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193003A (en) * 1989-08-15 1993-03-09 Sony Corporation Apparatus for decoding digital video data with small memory requirement
JP3251002B2 (ja) 1989-08-15 2002-01-28 ソニー株式会社 画像データの受信装置及び方法
US5682152A (en) 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US6366614B1 (en) * 1996-10-11 2002-04-02 Qualcomm Inc. Adaptive rate control for digital video compression
US6157746A (en) * 1997-02-12 2000-12-05 Sarnoff Corporation Apparatus and method for encoding wavelet trees generated by a wavelet-based coding method
JPH10336682A (ja) 1997-04-02 1998-12-18 Canon Inc 符号化装置及び方法及び方法を記憶した記憶媒体
EP0899960A3 (en) * 1997-08-29 1999-06-09 Canon Kabushiki Kaisha Digital signal coding and decoding
US6256350B1 (en) * 1998-03-13 2001-07-03 Conexant Systems, Inc. Method and apparatus for low cost line-based video compression of digital video stream data
US6215907B1 (en) * 1998-06-26 2001-04-10 Fisher-Rosemont Systems, Inc. Recursive on-line wavelet data compression technique for use in data storage and communications
KR100327368B1 (ko) * 1998-07-10 2002-03-06 구자홍 영상 부호화 및 복호화 방법
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
KR100295228B1 (ko) 1998-10-13 2001-07-12 윤종용 통합테스트시스템과그를이용한통합테스트공정수행방법
TW444495B (en) * 1998-10-15 2001-07-01 Winbond Electronics Corp Digital video process method and multi-purpose data process method
US6973127B1 (en) * 1999-12-23 2005-12-06 Xvd Corporation Apparatus and method for memory saving wavelet based video coding
JP4372327B2 (ja) * 2000-09-18 2009-11-25 株式会社メガチップス 画像符号化装置および画像符号化方法並びに復号化装置および復号化方法
US6891974B1 (en) * 2001-01-08 2005-05-10 Microsoft Corporation System and method providing improved data compression via wavelet coefficient encoding
US7062445B2 (en) 2001-01-26 2006-06-13 Microsoft Corporation Quantization loop with heuristic approach
AU2003272833A1 (en) * 2002-09-17 2004-04-08 Vladimir Ceperkovic Fast codec with high compression ratio and minimum required resources
US7912291B2 (en) * 2003-11-10 2011-03-22 Ricoh Co., Ltd Features for retrieval and similarity matching of documents from the JPEG 2000-compressed domain
KR100664932B1 (ko) 2004-10-21 2007-01-04 삼성전자주식회사 비디오 코딩 방법 및 장치
US7477789B2 (en) * 2004-11-24 2009-01-13 Pixart Imaging Inc. Video image capturing and displaying method and related system
US8355434B2 (en) * 2005-01-10 2013-01-15 Qualcomm Incorporated Digital video line-by-line dynamic rate adaptation
JP4822396B2 (ja) * 2005-03-29 2011-11-24 株式会社メガチップス 画像強調装置
WO2008070843A2 (en) 2006-12-07 2008-06-12 Qualcomm Incorporated Line-based video rate control and compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020008133A (ko) * 1999-03-26 2002-01-29 존 비. 메이슨 유한 알파벳 데이터의 비손실 적응 인코딩
KR20020064803A (ko) * 2000-09-12 2002-08-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 비디오 코딩 방법

Also Published As

Publication number Publication date
WO2008070843A9 (en) 2008-08-28
JP2012085313A (ja) 2012-04-26
CN101755464A (zh) 2010-06-23
US8208554B2 (en) 2012-06-26
CN101755464B (zh) 2012-07-11
US20080137737A1 (en) 2008-06-12
US8165203B2 (en) 2012-04-24
US20080137738A1 (en) 2008-06-12
WO2008070843A2 (en) 2008-06-12
JP5425865B2 (ja) 2014-02-26
EP2103147A2 (en) 2009-09-23
KR20090096516A (ko) 2009-09-10
WO2008070843A3 (en) 2008-10-09
JP5221557B2 (ja) 2013-06-26
JP2010512692A (ja) 2010-04-22
EP2103147A4 (en) 2011-01-19

Similar Documents

Publication Publication Date Title
KR101065520B1 (ko) 라인-기반 비디오 레이트 제어 및 압축
US9961356B2 (en) Image encoding and decoding apparatus and method
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
US7653129B2 (en) Method and apparatus for providing intra coding frame bit budget
EP2258113B1 (en) Fast macroblock delta qp decision
KR102342660B1 (ko) 디스플레이 스트림 압축을 위한 서브스트림 멀티플렉싱
KR101263813B1 (ko) 듀얼 패스 인코딩에서 주사 모드의 선택을 위한 방법 및 장치
US9131249B2 (en) Apparatus for encoding moving images to minimize an amount of generated code
EP3284257B1 (en) Quantization parameter (qp) calculation for display stream compression (dsc) based on complexity measure
WO2012042646A1 (ja) 動画像符号化装置、動画像符号化方法、動画像符号化用コンピュータプログラム、動画像復号装置及び動画像復号方法ならびに動画像復号用コンピュータプログラム
JP6464192B2 (ja) ディスプレイストリーム圧縮(dsc)のための平坦度検出のためのシステムおよび方法
JP4985645B2 (ja) 画像データ圧縮装置、圧縮方法及びプログラム並びに画像データ復元装置、復元方法及びプログラム
JP2018515016A (ja) 表示ストリーム圧縮のための複雑領域検出
US20060159181A1 (en) Method for encoding and decoding video signal
US20050036548A1 (en) Method and apparatus for selection of bit budget adjustment in dual pass encoding
US20060133488A1 (en) Method for encoding and decoding video signal
KR20040110290A (ko) 영상신호의 사각영역 부분선택 화질개선 방법

Legal Events

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

Payment date: 20140828

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee