KR100982156B1 - 역이산 코사인 변환의 계산 중의 에러 감소 - Google Patents

역이산 코사인 변환의 계산 중의 에러 감소 Download PDF

Info

Publication number
KR100982156B1
KR100982156B1 KR1020087031691A KR20087031691A KR100982156B1 KR 100982156 B1 KR100982156 B1 KR 100982156B1 KR 1020087031691 A KR1020087031691 A KR 1020087031691A KR 20087031691 A KR20087031691 A KR 20087031691A KR 100982156 B1 KR100982156 B1 KR 100982156B1
Authority
KR
South Korea
Prior art keywords
coefficients
matrix
butterfly structure
vector
transform
Prior art date
Application number
KR1020087031691A
Other languages
English (en)
Other versions
KR20090016732A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38624012&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100982156(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20090016732A publication Critical patent/KR20090016732A/ko
Application granted granted Critical
Publication of KR100982156B1 publication Critical patent/KR100982156B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Discrete Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

고정 소수점 계산을 이용한 이산 코사인 변환의 계산 중에 라운딩 에러를 감소시키는 기술이 기재되어 있다. 이들 기술에 따르면, 역이산 코사인 변환에서, 계수의 벡터는, 고정 소수점 수에 대해 일련의 버터플라이 구조 연산을 이용하여 계산된다. 다음에, 중심점 바이어스 값 및 보완 바이어스 값이 스케일링된 계수의 행렬의 DC 계수에 가산된다. 다음에, 그 결과적인 스케일링된 계수의 행렬에 대해 역이산 코사인 변환이 적용된다. 그런 다음, 그 결과적인 행렬에서의 값이 우측-시프팅되어, 픽셀 성분값의 행렬을 도출한다. 본 명세서에 기재된 바와 같이, DC 계수에 대한 보완 바이어스 값의 가산은 이 우측-시프팅에 기인하는 라운딩 에러를 감소시킨다. 그 결과, 이들 기술을 이용하여 압축해제된 디지털 미디어 파일의 최종 버전은 디지털 미디어 파일의 오리지널 버전을 보다 근접하게 닮을 수도 있다.
고정 소수점 연산, 라운딩 에러, 이산 코사인 변환, 시간적 디코딩, 공간적 디코딩, 중심점 바이어스

Description

역이산 코사인 변환의 계산 중의 에러 감소{REDUCTION OF ERRORS DURING COMPUTATION OF INVERSE DISCRETE COSINE TRANSFORM}
본 출원은, 2006 년 6 월 26 일자로 출원된 미국가출원 제 60/816,697 호, 2006 년 8 월 30 일자로 출원된 미국가출원 제 60/841,362 호, 2006 년 9 월 25 일자로 출원된 미국가출원 제 60/847,194 호, 2006 년 10 월 16 일자로 출원된 미국가출원 제 60/829,669 호, 및 2006 년 12 월 11 일자로 출원된 미국가출원 제 60/869,530 호의 이점을 주장하는데, 이들의 전체 내용은 본 명세서에 참조로서 포함되어 있다.
기술분야
본 개시물은 컴퓨터 그래픽스 및 멀티미디어에 관한 것이고, 특히 그래픽스, 이미지, 및 비디오 정보의 압축에 관한 것이다.
배경기술
고해상도 이미지 및 비디오가 비교적 콤팩트한 파일 또는 데이터 스트림으로서 저장 또는 송신되는 것을 허용하기 위해서, 다수의 기존의 이미지 및 비디오 코딩 표준은 압축 기술을 이용한다. 이러한 코딩 표준은, JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group)-1, MPEG-2, MPEG-4 파트 2, H.261, H.263, 및 다른 이미지 또는 비디오 코딩 표준을 포함한다.
다수의 이들 표준에 따르면, 비디오 프레임은 "공간적 (spatial)" 인코딩을 이용하여 압축된다. 이들 프레임은 오리지널 프레임 (즉, i-프레임) 일 수도 있고, 또는 모션 보상을 이용하는 시간적 (temporal) 인코딩 프로세스에 의해 발생된 잔여 프레임 (residual frame) 일 수도 있다. 공간적 인코딩 중에, 프레임은 동등한 크기의 픽셀 블록으로 쪼개진다. 예를 들어, 압축되지 않은 프레임은 8×8 픽셀 블록의 세트로 쪼개질 수도 있다. 각 픽셀 블록에 있어서, 픽셀 성분은 픽셀 성분값의 행렬로 분리된다. 예를 들어, 각 픽셀 블록은 Y 픽셀 성분값의 행렬, U 픽셀 성분값의 행렬, 및 V 픽셀 성분값의 행렬로 분할될 수도 있다. 이 실시예에 있어서, Y 픽셀 성분값은 휘도 (luminance) 값을 나타내고, U 픽셀 성분값 및 V 픽셀 성분값은 색차 (chrominance) 값을 나타낸다.
또한, 공간적 인코딩 중에, 인코딩되고 있는 프레임에서의 픽셀 성분값의 행렬 각각에 대해 순이산 코사인 변환 (FDCT) 이 적용된다. 이상적인 1-차원 FDCT 는:
Figure 112008089582576-pct00001
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고, 계수 c 는,
Figure 112008089582576-pct00002
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 FDCT 는 공식:
Figure 112008089582576-pct00003
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고,
Figure 112008089582576-pct00004
Figure 112008089582576-pct00005
로 주어지고, c(k) 는 1-차원 경우에서와 같이 정의된다.
계수의 행렬은, 픽셀 성분값의 블록이 FDCT 를 이용하여 변환되는 경우에 생성된다. 그런 다음, 이 계수의 행렬은 양자화되고, 예를 들어 허프만 코드 또는 산술 코드 (arithmetic code) 를 이용하여 인코딩될 수도 있다. 비디오 비트스트림은, 압축되지 않은 일련의 비디오 프레임에서의 일련의 비디오 프레임의 픽셀 성분값의 블록 모두에 대해 이 프로세스를 수행한 합성 결과를 나타낸다.
압축되지 않은 비디오 프레임은, 이 프로세스를 반전시킴으로써 비디오 비트스트림으로부터 도출될 수도 있다. 특히, 이 비트스트림에서의 계수의 행렬 각각은 압축해제되고, 압축해제된 값은 역양자화되어, 변환된 계수의 행렬을 도출한다. 그런 다음, 픽셀 성분값의 행렬을 도출하기 위해서 변환된 계수의 행렬 각각에 대해 역이산 코사인 변환 ("IDCT") 이 적용된다. 이상적인 1-차원 IDCT 는:
Figure 112008089582576-pct00006
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고, 계수 c 는,
Figure 112008089582576-pct00007
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 IDCT 는 다음의 공식으로 정의된다:
Figure 112008089582576-pct00008
.
그런 다음, 그 결과적인 픽셀 성분값의 행렬은 픽셀 블록으로 재조립되고, 이들 픽셀 블록은 재조립되어, 디코딩된 프레임을 형성한다. 디코딩된 프레임이 i-프레임인 경우에는, 이 프레임은 현재 완전히 디코딩된다. 그러나, 압축되지 않은 프레임이 예측 프레임 (predictive frame) 또는 양방향-예측 프레임 (bi-predictive frame) 인 경우에는, 디코딩된 프레임은 단지 디코딩된 잔여 프레임이다. 디코딩된 프레임과 연관된 모션 벡터를 이용하여 복원된 프레임을 구성한 다음, 이 복원된 프레임을 디코딩된 잔여 프레임에 부가함으로써, 완성된 프레임이 발생된다.
이상적인 환경 하에서는, FDCT 를 이용하여 픽셀 성분값의 블록을 인코딩하거나 IDCT 를 이용하여 픽셀 성분값의 블록을 디코딩함으로써 정보가 손실되지 않는다. 그 결과, 이들 이상적인 환경 하에서, 비디오 프레임의 디코딩된 버전은 비디오 프레임의 오리지널 버전과 동일하다. 그러나, FDCT 또는 IDCT 의 컴퓨팅은 계산상 어려울 수도 있는데, 그 이유는 FDCT 및 IDCT 의 계산이 실수 및 상당 수의 승산 연산의 이용을 수반하기 때문이다. 이러한 이유로, FDCT 및 IDCT 에 이용된 실수는 제한된 정밀도의 수 (limited precision number) 를 이용하여 빈번하게 근사된다. 제한된 정밀도의 수를 이용하여 실수값을 나타내는 것으로부터 라운딩 에러가 기인한다. 또한, 양자화 및 역양자화가 부가적인 에러에 기여할 수도 있다.
압축 및 압축해제 프로세스에서의 에러는, 압축되지 않은 오리지널 프레임과 압축되지 않은 최종 프레임 사이에 현저한 차이를 야기할 수도 있다. 예를 들어, 압축되지 않은 최종 프레임에서의 컬러는 압축되지 않은 오리지널 프레임에서의 컬러와 상이할 수도 있다. 또한, 인코더의 IDCT 구현과 디코더의 IDCT 구현 사이의 불일치에 의해 야기된 에러는 예측된 프레임의 시퀀스의 인코딩 및 디코딩 중에 누산될 수도 있다. 이들 누산된 에러는 통상적으로 "IDCT 드리프트" 로 언급된다.
개 요
고정 소수점 계산을 이용하여 역이산 코사인 변환의 계산에 근사하는 기술이 기재되어 있다. 이들 기술에 따르면, 스케일링된 계수의 행렬은, 인코딩된 계수의 행렬에서의 계수와 스케일 인수 (scale factor) 를 승산함으로써 발생된다. 다음에, 스케일링된 계수의 행렬의 DC 계수에 대해 중심점 바이어스 값 (midpoint bias value) 및 보완 바이어스 값 (supplemental bias value) 을 가산함으로써, 바이어싱된 계수의 행렬이 발생된다. 그런 다음, 그 결과적인 바이어 싱된 계수의 행렬에 일 변환을 적용하는데 고정 소수점 연산이 이용된다. 그런 다음, 그 결과적인 행렬에서의 값이 우측-시프팅되어, 픽셀 성분값의 행렬을 도출한다. 그런 다음, 픽셀 성분값의 행렬이 결합되어, 픽셀의 행렬을 생성한다. 이들 기술에 의해 발생된 픽셀의 행렬은 이상적인 역이산 코사인 변환 ("IDCT") 을 이용하여 압축해제된 픽셀의 행렬을 근접하게 닮을 수도 있다.
일 양태에 있어서, 일 방법은, 변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 단계를 포함한다. 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이다. 또한, 이 방법은, 미디어 프리젠테이션 유닛으로 하여금 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 출력하도록 하는 단계를 포함한다. 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며, 포지티브 차이들 및 네거티브 차이들은 대략 동등한 크기이다.
또다른 양태에 있어서, 일 디바이스는, 변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들에 대해 일련의 버터플라이 구조 연산들을 이용하는 역방향 변환 모듈을 포함한다. 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용 하여 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이다. 미디어 프리젠테이션 유닛은, 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 프리젠테이션할 수 있다. 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며, 포지티브 차이들 및 네거티브 차이들은 대략 동등한 크기이다.
또다른 양태에 있어서, 일 디바이스는, 변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들에 대해 일련의 버터플라이 구조 연산들을 이용하는 수단을 포함한다. 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이다. 미디어 프리젠테이션 유닛은, 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 프리젠테이션할 수 있다. 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며, 포지티브 차이들 및 네거티브 차이들은 대략 동등한 크기이다.
또다른 양태에 있어서, 컴퓨터 판독가능 매체는 명령들을 포함한다. 실행되는 경우, 명령들은, 프로세서가, 변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들에 대해 일련의 버터플라이 구조 연산들을 이용하게 한다. 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이다. 또한, 명령들은, 프로세서가, 미디어 프리젠테이션 유닛으로 하여금 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 출력하도록 하게 한다. 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며, 포지티브 차이들 및 네거티브 차이들은 대략 동등한 크기이다.
몇몇 경우에, 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있는데, 이 컴퓨터 프로그램 제품은 제조자에게 판매되고/되거나 일 디바이스에 사용될 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있고, 몇몇 경우에는 포장재도 포함할 수도 있다.
하나 이상의 실시예의 상세가 아래의 상세한 설명 및 첨부 도면에 설명되어 있다. 본 발명의 다른 특징, 목적 및 이점은, 상세한 설명, 도면 및 특허청구범위로부터 자명할 것이다.
도면의 간단한 설명
도 1 은 미디어 파일을 인코딩 및 디코딩하는 예시적인 디바이스를 도시한 블록도이다.
도 2 는 인코딩 모듈의 예시적인 상세를 도시한 블록도이다.
도 3 은 디코딩 모듈의 예시적인 상세를 도시한 블록도이다.
도 4 는 인코딩 모듈의 예시적인 동작을 도시한 흐름도이다.
도 5 는 디코딩 모듈의 예시적인 동작을 도시한 흐름도이다.
도 6 은 역이산 코사인 변환 ("IDCT") 모듈의 예시적인 상세를 도시한 블록도이다.
도 7 은 IDCT 모듈의 예시적인 동작을 도시한 흐름도이다.
도 8 은 순이산 코사인 변환 ("FDCT") 모듈의 예시적인 상세를 도시한 블록도이다.
도 9 는 FDCT 모듈의 예시적인 동작을 도시한 흐름도이다.
도 10 은 제 1 예시적인 1-차원 변환을 도시한 흐름도이다.
도 11 은 제 2 예시적인 1-차원 변환을 도시한 흐름도이다.
도 12 는 IDCT 모듈에 의해 이용되는 예시적인 스케일링 1-차원 변환을 도시한 흐름도이다.
상세한 설명
도 1 은 미디어 파일을 인코딩 및 디코딩하는 예시적인 디바이스 (2) 를 도시한 블록도이다. 디바이스 (2) 는, 퍼스널 컴퓨터, 모바일 무선전화기, 서버, 네트워크 어플라이언스, 차량에 통합된 컴퓨터, 비디오 게이밍 플랫폼, 휴대용 비디오 게임 디바이스, 컴퓨터 워크스테이션, 컴퓨터 키오스크, 디지털 사이니지 (digital signage), 메인프레임 컴퓨터, 텔레비전 셋탑 박스, 네트워크 전화기, PDA (Personal Digital Assistant), 비디오 게임 플랫폼, 모바일 미디어 플레이어, 홈 미디어 플레이어, 디지털 비디오 프로젝터, 퍼스널 미디어 플레이어 (예를 들어, iPod), 또는 또다른 타입의 전자 디바이스를 포함할 수도 있다.
디바이스 (2) 는, 미디어 데이터를 발생시키는 미디어 소스 (4) 를 포함할 수도 있다. 미디어 소스 (4) 는, 이미지 데이터를 캡처하는 디지털 비디오 또는 스틸 포토 카메라를 포함할 수도 있다. 미디어 소스 (4) 는 디바이스 (2) 에 내장될 수도 있고, 또는 주변 디바이스로서 디바이스 (2) 에 부착될 수도 있다. 또한, 미디어 소스 (4) 는, 오디오 데이터를 레코딩하는 마이크로폰을 포함할 수도 있다. 미디어 소스 (4) 는 미디어 데이터를 프로세서 (6) 로 제공할 수도 있다. 프로세서 (6) 는 디지털 신호 프로세서 ("DSP"), 마이크로프로세서, 또는 일부 다른 타입의 집적 회로를 포함할 수도 있다.
프로세서 (6) 가 미디어 소스 (4) 로부터 미디어 데이터를 수신하는 경우, 인코딩 모듈 (8) 은 미디어 데이터를 인코딩할 수도 있다. 인코딩 모듈 (8) 은 프로세서 (6) 에 의해 실행되는 소프트웨어를 포함할 수도 있다. 대안적으로, 인코딩 모듈 (8) 은, 미디어 데이터를 인코딩하는 프로세서 (6) 내의 전문 하드웨어를 포함할 수도 있다. 또다른 대안에 있어서, 인코딩 모듈 (8) 은, 미디어 데이터를 인코딩하는 소프트웨어와 하드웨어의 임의의 조합을 포함할 수도 있다.
인코딩 모듈 (8) 은 미디어 저장소 (10) 에 인코딩된 미디어 데이터를 저장할 수도 있다. 미디어 저장소 (10) 는 플래시 메모리, RAM (Random Access Memory), 하드디스크 드라이브, 또는 일부 다른 타입의 휘발성 또는 비휘발성 데이터 저장 유닛을 포함할 수도 있다.
디코딩 모듈 (12) 은 미디어 저장소 (10) 로부터 인코딩된 미디어 데이터를 취득할 수도 있다. 디코딩 모듈 (12) 은 프로세서 (6) 에 의해 실행되는 소프트웨어를 포함할 수도 있다. 대안적으로, 디코딩 모듈 (12) 은, 인코딩된 미디어 데이터를 디코딩하는 프로세서 (6) 내의 전문 하드웨어를 포함할 수도 있다. 또다른 대안에 있어서, 디코딩 모듈 (12) 은, 인코딩된 미디어 데이터를 디코딩하도록 협력하는 소프트웨어와 하드웨어의 조합을 포함할 수도 있다.
디바이스 (2) 에서의 프리젠테이션 드라이버 (13) 는 미디어 프리젠테이션 유닛 (14) 으로 하여금 디코딩 모듈 (12) 에 의해 디코딩된 미디어 데이터를 프리젠테이션하도록 한다. 예를 들어, 미디어 프리젠테이션 유닛 (14) 은, 이미지 또는 비디오 미디어 데이터를 프리젠테이션하는 컴퓨터 모니터를 포함할 수도 있다. 또다른 실시예에 있어서, 미디어 프리젠테이션 유닛 (14) 은, 오디오 미디어 데이터를 프리젠테이션하는 오디오 출력 디바이스 (예를 들어, 스피커) 를 포함할 수도 있다. 미디어 프리젠테이션 유닛 (14) 은 디바이스 (2) 에 통합될 수도 있고, 또는 주변 디바이스로서 유선 링크 또는 무선 링크를 통해 디바이스 (2) 에 접속될 수도 있다. 프리젠테이션 드라이버 (13) 는, 미디어 프리젠테이션 유닛 (14) 으로 하여금 미디어 데이터를 프리젠테이션하도록 하는 디바이스 드라이버나 다른 소프트웨어, 하드웨어나 펌웨어 유닛, 또는 일부 다른 메커니즘을 포함할 수도 있다.
또한, 디바이스 (2) 는 네트워크 인터페이스 (16) 를 포함할 수도 있다. 네트워크 인터페이스 (16) 는 유선 링크 또는 무선 링크를 통한 디바이스 (2) 와 컴퓨터 네트워크 사이의 통신을 용이하게 할 수도 있다. 예를 들어, 네트워크 인터페이스 (16) 는 디바이스와 모바일 전화 네트워크 사이의 통신을 용이하게 할 수도 있다. 디바이스 (2) 는 네트워크 인터페이스 (16) 를 통해 미디어 파일을 수신할 수도 있다. 예를 들어, 디바이스 (2) 는, 네트워크 인터페이스 (16) 를 통해 사진, 비디오 클립, 스트리밍 비디오 (예를 들어, 텔레비전, 비디오 회의, 영화), 오디오 클립 (예를 들어, 호출음 (ringtone), 노래, MP3 파일), 스트리밍 오디오 (예를 들어, 디지털 라디오 방송국, 음성 통화 등) 를 수신할 수도 있다. 네트워크 인터페이스 (16) 가 미디어 파일 또는 비디오 비트스트림을 수신하는 경우, 네트워크 인터페이스 (16) 는 미디어 저장소 (10) 에 미디어 파일 또는 비디오 비트스트림을 저장할 수도 있다.
비디오 신호는 픽처의 시퀀스에 관하여 설명될 수도 있는데, 이는 프레임 (전체 픽처), 또는 필드 (예를 들어, 프레임의 홀수 라인 또는 짝수 라인 중 어느 하나를 포함하는 픽처) 를 포함한다. 또한, 각 프레임 또는 필드는 프레임 또는 필드의 하위부분 또는 2 개 이상의 슬라이스를 포함할 수도 있다. 본 명세서에 이용된 바와 같이, 단독으로 또는 다른 단어와 협력하여, "프레임" 이라는 용어는 픽처, 프레임, 필드, 또는 이들의 슬라이스를 언급할 수도 있다.
인코딩 모듈 (8) 이 일련의 비디오 프레임을 인코딩하는 경우, 인코딩 모듈 (8) 은 비디오 프레임 중 하나를 "i-프레임" 으로 선택함으로써 시작할 수도 있다. 예를 들어, 인코딩 모듈 (8) 은 모든 8 번째 프레임을 i-프레임으로서 선택할 수도 있다. i-프레임은, 다른 프레임을 참조하지 않는 프레임이다. i-프레임을 선택한 이후에, 인코딩 모듈 (8) 은 "공간적 인코딩" 을 이용하여 i-프레임을 인코딩한다. 또한, 인코딩 모듈 (8) 은 "시간적 인코딩" 을 이용하여 나머지 프레임을 인코딩할 수도 있다.
공간적 인코딩을 이용하여 프레임을 인코딩하기 위해서, 인코딩 모듈 (8) 은 프레임 데이터를 픽셀 블록으로 쪼갤 수도 있다. 예를 들어, 인코딩 모듈 (8) 은, 프레임 데이터를, 폭이 8 개의 픽셀이며 높이가 8 개의 픽셀인 픽셀 블록으로 쪼갤 수도 있다 (즉, 각 픽셀 블록은 64 개의 픽셀을 포함함). 그런 다음, 인코딩 모듈 (8) 은 각 픽셀 블록에서의 픽셀의 픽셀 성분값을 분리된 픽셀 성분값의 행렬로 분리할 수도 있다. 픽셀의 픽셀 성분값은, 픽셀의 양상 (appearance) 을 특성화하는 값이다. 예를 들어, 각 픽셀은 Y 픽셀 성분값, Cr 픽셀 성분값, 및 Cb 픽셀 성분값을 특정할 수도 있다. Y 픽셀 성분값은 픽셀의 휘도를 나타내고, Cr 픽셀 성분값은 픽셀의 레드 색차를 나타내고, Cb 픽셀 성분값은 픽셀의 블루 색차를 나타낸다. 이 실시예에 있어서, 인코딩 모듈 (8) 이 픽셀 블록의 픽셀 성분값을 분리하는 경우, 인코딩 모듈 (8) 은 Y 픽셀 성분값의 행렬, Cr 픽셀 성분값의 행렬, 및 Cb 픽셀 성분값의 행렬을 획득할 수도 있다.
픽셀 성분값을 픽셀 성분값의 행렬로 분리한 이후에, 인코딩 모듈 (8) 은 픽셀 성분값의 행렬 각각에 대한 변환된 계수의 행렬을 발생시킨다. 인코딩 모듈 (8) 은, 먼저 픽셀 성분값의 행렬에서의 픽셀 성분값을 좌측-시프팅시켜 조정된 계 수의 행렬을 발생시킴으로써, 픽셀 성분값의 행렬에 대한 변환된 계수의 행렬을 발생시킬 수도 있다. 그런 다음, 인코딩 모듈 (8) 은 고정 소수점 연산을 이용하여, 반복적으로 조정된 계수의 행렬에 1-차원 변환을 적용함으로써, 계수의 행렬을 발생시킨다. 몇몇 구현에 있어서, 그런 다음, 인코딩 모듈 (8) 은, 스케일 인수의 세트로 변환된 계수의 행렬을 스케일링함으로써, 변환된 계수의 행렬을 발생시킬 수도 있다. 이들 스케일 인수 각각은 정수값이다. 스케일 인수는, 1-차원 변환 내의 인수가 단순 유리수를 이용하여 근사될 수도 있는 방식으로 선택되었다. 스케일링을 이용하지 않는 구현에 있어서, 이 변환을 적용함으로써 발생된 계수의 행렬은 변환된 계수의 행렬이다.
변환된 계수의 행렬에서의 각 계수는, 인코딩된 계수의 행렬에 대해 이상적인 2-차원 순이산 코사인 변환 ("FDCT") 을 적용함으로써 생성되는 값의 행렬에서의 대응하는 값에 근사한다. 이상적인 1-차원 FDCT 는:
Figure 112008089582576-pct00009
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고, 계수 c 는,
Figure 112008089582576-pct00010
(여기서, 1 ≤ k ≤ N-1)
로 주어진다.
이상적인 2-차원 FDCT 는 공식:
Figure 112008089582576-pct00011
으로 정의되고, 여기서 s 는 N 개의 오리지널 값의 어레이이고, t 는 N 개의 변환된 값의 어레이이고,
Figure 112008089582576-pct00012
Figure 112008089582576-pct00013
로 주어지고, c(k) 는 1-차원 경우에서와 같이 정의된다.
변환된 계수의 행렬을 도출한 이후에, 인코딩 모듈 (8) 은, 변환된 계수의 행렬에서의 계수를 양자화함으로써 양자화된 계수의 행렬을 발생시킨다. 변환된 계수의 양자화는, 변환된 계수의 행렬에서의 고주파 계수와 연관된 정보의 양을 감소시킬 수도 있다. 양자화된 계수의 행렬을 발생시킨 이후에, 인코딩 모듈 (8) 은 양자화된 계수의 행렬에 엔트로피 인코딩 방식을 적용할 수도 있다. 예를 들어, 인코딩 모듈 (8) 은 이 양자화된 계수의 행렬에서의 양자화된 계수에 허프만 인코딩 방식을 적용할 수도 있다. 인코딩 모듈 (8) 이 양자화된 계수의 행렬 각각에 엔트로피 인코딩 방식을 적용하는 경우, 인코딩 모듈 (8) 은 비디오 비트스트림의 일부로서 인코딩된 행렬을 출력할 수도 있다.
시간적 인코딩을 이용하여 프레임을 인코딩하기 위해서, 인코딩 모듈 (8) 은 프레임을 "매크로블록" 으로 분할할 수도 있다. 이용되는 코딩 표준에 종속하여, 이들 매크로블록은 고정 또는 가변 크기일 수도 있고, 중복 또는 비중복될 수도 있다. 예를 들어, 각 매크로블록은 16×16 픽셀 블록일 수도 있다. 프레임에서의 각 매크로블록에 대해, 인코딩 모듈 (8) 은 하나 이상의 기준 프레임에 서의 소스 매크로블록을 식별하려고 시도할 수도 있다. 코딩 표준에 종속하여, 기준 프레임은 i-프레임, 예측 프레임, 또는 양방향-예측 프레임일 수도 있다. 인코딩 모듈 (8) 이 기준 프레임에서의 소스 매크로블록을 식별할 수 있는 경우에는, 인코딩 모듈 (8) 은 매크로블록에 대한 모션 벡터를 기록한다. 모션 벡터는, 식별된 소스 매크로블록에 관한 매크로블록의 수평 변위를 나타내는 x 값, 및 식별된 소스 매크로블록에 관한 매크로블록의 수직 변위를 나타내는 y 값을 포함한다. 인코딩 모듈 (8) 이 매크로블록에 대한 소스 매크로블록을 식별할 수 없는 경우에는, 인코딩 모듈 (8) 에는 매크로블록에 대한 모션 벡터를 기록하는 것이 요구되지 않을 수도 있다. 다음에, 인코딩 모듈 (8) 은 "복원된" 프레임을 발생시킨다. 복원된 프레임은, 현재의 프레임에 대해 기록된 모션 벡터에 따라 기준 프레임으로부터 매크로블록을 이동시키는 것으로부터 기인한 프레임을 포함한다. 복원된 프레임을 발생시킨 이후에, 인코딩 모듈 (8) 은, 복원된 프레임의 각 픽셀에서의 픽셀 성분값을 현재의 프레임의 대응 픽셀에서의 대응 픽셀 성분값으로부터 감산하여, "잔여" 프레임을 야기한다. 그런 다음, 인코딩 모듈 (8) 은 엔트로피 인코딩 방식을 이용하여, 현재의 프레임의 매크로블록에 대한 모션 벡터를 압축한다. 또한, 인코딩 모듈 (8) 은 전술한 공간적 인코딩 기술을 이용하여, 잔여 프레임을 압축한다.
디코딩 모듈 (12) 은 인코딩 모듈 (8) 과 유사하지만 반전하여 프로세스를 수행할 수도 있다. 예를 들어, 공간적 디코딩 프로세스를 수행하기 위해서, 디코딩 모듈 (12) 은 인코딩된 비디오 비트스트림에서의 양자화된 계수의 인코딩된 행렬 각각에 대해 엔트로피 디코딩 방식을 적용할 수도 있다. 그런 다음, 디코딩 모듈 (12) 은 각각의 양자화된 계수의 행렬에서의 계수를 역양자화함으로써, 각각의 양자화된 계수의 행렬에 대해 역양자화된 계수의 행렬을 발생시킬 수도 있다. 각각의 역양자화된 계수의 행렬에 대해, 디코딩 모듈 (12) 은 역양자화된 계수의 행렬을 스케일링함으로써 스케일링된 계수의 행렬을 발생시킨다.
스케일링된 계수의 행렬을 발생시킨 이후에, 디코딩 모듈 (12) 은, 이 행렬의 DC 계수에 대해 중심점 바이어스 값 및 보완 바이어스 값을 가산함으로써 바이어싱된 계수의 행렬을 발생시킨다. 이 행렬의 DC 계수는, 이 행렬에서의 다른 계수의 평균값과 동등한 계수이다. 통상적으로, DC 계수는 이 행렬의 좌측 최상부 코너에 있는 계수이다. 보다 상세하게 후술하는 바와 같이, DC 계수에 대한 바이어스 값의 가산은, 디코딩 모듈 (12) 이 행렬의 각 행 및 열에 대해 역이산 코사인 변환 인수 분해 (factorization) 를 적용함으로써 생성된 값을 우측-시프팅시키는 경우에 라운딩 에러를 감소시킬 수도 있다. 이들 라운딩 에러는, 이들 우측-시프트가 계산상 보다 고비용의 제산 연산을 대신하고, 고정 소수점 연산에서의 우측 시프트 연산이 항상 제산 연산과 동일한 결과를 생성하지는 않는다는 사실에 기인할 수도 있다.
디코딩 모듈 (12) 이 바이어싱된 계수의 행렬을 발생시킨 이후에, 디코딩 모듈 (12) 은 고정 소수점 연산을 이용하여, 바이어싱된 계수의 행렬에 대한 변환된 계수의 행렬을 발생시킨다. 디코딩 모듈 (12) 은, 반복적으로 바이어싱된 계수의 행렬에 대해 1-차원 변환을 적용함으로써 변환된 계수의 행렬을 발생시킨다. 예를 들어, 디코딩 모듈 (12) 은, 바이어싱된 계수의 행렬의 각 행 벡터에 대해 1-차원 변환을 적용함으로써 중간 계수의 행렬을 발생시킬 수도 있다. 이 실시예에 있어서, 그런 다음, 디코딩 모듈 (12) 은, 중간 계수의 행렬에서의 각 열 벡터에 대해 1-차원 변환을 적용함으로써 변환된 계수의 행렬을 발생시킬 수도 있다.
디코딩 모듈 (12) 은 일련의 "버터플라이 구조 연산" 을 이용하여 이러한 1-차원 변환을 적용할 수도 있다. 일반적으로, "버터플라이 구조 연산" 은, 제 1 입력값과 제 1 상수를 승산함으로써 제 1 중간값이 생성되고, 제 1 입력값과 제 2 상수를 승산함으로써 제 2 중간값이 생성되고, 제 2 입력값과 제 1 상수를 승산함으로써 제 3 중간값이 생성되고, 제 2 입력값과 제 2 상수를 승산함으로써 제 4 중간값이 생성되고, 제 1 중간값과 제 3 중간값을 가산함으로써 제 1 출력값이 생성되고, 제 2 중간값과 제 4 중간값의 음수를 가산함으로써 제 2 출력값이 생성되는 연산을 언급한다. 버터플라이 연산에 있어서, 상수는 1 을 포함하여 임의의 유리수 또는 무리수일 수도 있다. 예시적인 버터플라이 구조 연산이 도 10, 도 11 및 도 12 의 실시예에 예시된 변환에 도시되어 있다.
수를 나타내는데 이용가능한 비트의 수가 제한된 시스템에 있어서, 버터플라이 구조 연산에서 무리 상수에 의한 승산을 수행하는 것은 비실용적일 수도 있다. 이러한 이유로, 디코딩 모듈 (12) 은, 무리 상수에 근사하는 유리 분수와 값을 승산함으로써 무리 상수에 의한 승산에 근사할 수도 있다. 유리 분수와 값을 효율적으로 승산하기 위해서, 디코딩 모듈 (12) 은 유리 분수의 분자와 이 값을 승 산한 다음, 그 결과적인 값을 유리 분수의 분모의 log2 만큼 우측-시프팅시킬 수도 있다. 전술한 바와 같이, 우측-시프트 연산은 라운딩 에러를 야기할 수도 있는데, 그 이유는 고정 소수점 연산에서의 우측-시프트 연산이 항상 대응하는 제산 연산과 동등한 결과를 생성하지는 않기 때문이다.
보다 상세하게 후술하는 바와 같이, 디코딩 모듈 (12) 은 라운딩 에러를 감소시키기 위해서 일부 유리 분수에서 음의 분자를 이용할 수도 있다. 음의 분자의 이용은, 값의 우측-시프팅 이전에 중심점 바이어스 값을 가산할 필요성을 제거할 수도 있다. 이는 유리할 수도 있는데, 그 이유는 중심점 바이어스 값의 가산이 역이산 코사인 변환의 적용에 불필요한 복잡도를 부가할 수도 있기 때문이다.
디코딩 모듈 (12) 이 변환된 계수의 행렬을 발생시킨 경우, 디코딩 모듈 (12) 은, 역양자화된 계수의 행렬의 계수를 스케일링함으로써 부가된 비트의 수에 이 변환을 적용함으로써 부가된 비트의 수를 더한 것과 동등한 포지션의 수만큼 변환된 계수의 행렬에서의 각 계수를 우측-시프팅시킴으로써, 조정된 계수의 행렬을 발생시킨다. 그런 다음, 디코딩 모듈 (12) 은, 조정된 계수의 행렬에서의 계수를 클리핑 (clipping) 함으로써 클리핑된 계수의 행렬을 발생시킬 수도 있다. 조정된 계수의 행렬에서의 계수의 클리핑은 조정된 계수를 변경하여, 이들은 픽셀 성분값에 대해 허용된 범위 내에 있게 된다. 그에 따라, 클리핑된 계수의 행렬은 픽셀 성분값의 행렬로서 특성화될 수도 있다.
픽셀 성분값의 행렬을 발생시킨 이후에, 디코딩 모듈 (12) 은, 픽셀 성분값의 행렬을 픽셀 블록에 대한 다른 픽셀 성분값을 저장하는 행렬과 결합함으로써 픽셀 블록을 발생시킬 수도 있다. 다음에, 디코딩 모듈 (12) 은 픽셀 블록을 비디오 프레임으로 결합할 수도 있다.
예측 프레임을 디코딩하기 위해서, 디코딩 모듈 (12) 은 전술한 공간적 디코딩 기술을 이용하여, 예측 프레임에 대한 잔여 이미지에서의 양자화된 계수의 행렬을 디코딩할 수도 있다. 또한, 디코딩 모듈 (12) 은 엔트로피 디코딩 방식을 이용하여, 예측 프레임의 모션 벡터를 디코딩할 수도 있다. 다음에, 디코딩 모듈 (12) 은, 모션 벡터에 따라 예측 프레임의 기준 프레임의 매크로블록을 "이동" 시킴으로써 복원된 프레임을 발생시킬 수도 있다. 복원된 프레임을 발생시킨 이후에, 디코딩 모듈 (12) 은 디코딩된 잔여 프레임의 각 픽셀에서의 픽셀 성분값을 복원된 프레임의 대응하는 픽셀에서의 대응하는 픽셀 성분값에 가산한다. 이 가산 결과가 복원된 예측 프레임이다.
본 개시물에 기재된 기술은 몇몇 이점을 제공할 수도 있다. 예를 들어, 이산 코사인 변환 및 역이산 코사인 변환의 계산 중의 라운딩 에러의 감소는 이미지 데이터에서의 가시 에러 (visible error) 를 감소시킬 수도 있고, 오디오 데이터에서의 가청 에러 (audible error) 를 감소시킬 수도 있다. 또한, 이들 기술이 고정 소수점 계산에 적용될 수도 있기 때문에, 이들 기술은, 모바일 전화기, PDA (Personal Digital Assistant), 및 퍼스널 미디어 플레이어와 같은 보다 소형이며 보다 덜 복잡한 디바이스에 적용될 수도 있다. 특히, 이들 기술은, IEEE (Institute of Electrical and Electronics Engineers) 표준 1180 에 의해 특정된 정밀도 요건에 따르면서, 가수 부분에서의 매우 제한된 비트의 수 (예를 들어, 3 비트) 를 갖는 고정 소수점 수를 이용하여 적용될 수도 있는데, 이 표준의 전체 내용은 본 명세서에 참조로서 포함되어 있다. 또한, 이들 기술은, ITU-T (International Telecommunication Union Standardization Sector) 권고 H.261, H.263, H.264, T.81 (JPEG) 뿐만 아니라, ISO (International Organization for Standardization)/MEC MPEG (Moving Pictures Experts Group)-1, MPEG-2, 및 MPEG-4 파트 2 미디어 포맷을 포함한 포맷에 적용될 수도 있다.
도 2 는 인코딩 모듈 (8) 의 예시적인 상세를 도시한 블록도이다. 인코딩 모듈 (8) 은 "모듈" 세트를 포함할 수도 있다. 이들 모듈은 인코딩 모듈 (8) 의 소프트웨어 명령들의 서브세트를 포함할 수도 있다. 대안적으로, 이들 모듈은 특수-목적 하드웨어를 포함할 수도 있다. 또다른 대안에 있어서, 이들 모듈은 소프트웨어 명령들 및 특수-목적 하드웨어를 포함할 수도 있다.
도 2 의 실시예에 예시된 바와 같이, 인코딩 모듈 (8) 은, 인코딩 모듈 (8) 이 비디오 프레임을 i-프레임으로서 처리하는지, 예측 프레임으로서 처리하는지, 또는 양방향-예측 프레임으로서 처리하는지를 제어하는 프레임 제어 모듈 (20) 을 포함한다. 예를 들어, 인코딩 모듈 (8) 이 비디오 프레임을 수신하는 경우, 프레임 제어 모듈 (20) 은, 이 비디오 프레임이 i-프레임, 예측 프레임, 또는 양방향-예측 프레임이라고 이 비디오 프레임과 연관된 비트스트림 플래그가 나타내는지 여부를 판정할 수도 있다. 프레임 제어 모듈 (20) 이, 이 비디오 프레임이 i- 프레임이라고 비트스트림 플래그가 나타낸다고 판정하는 경우에는, 프레임 제어 모듈 (20) 은 이 비디오 프레임으로 하여금 비디오 프레임에 대해 즉시 공간적 인코딩을 수행하는 모듈 세트에 의해 처리되도록 할 수도 있다. 한편, 이 비디오 프레임이 예측 프레임 또는 양방향-예측 프레임이라고 프레임 제어 모듈 (20) 이 판정하는 경우에는, 프레임 제어 모듈 (20) 은 이 비디오 프레임으로 하여금 시간적 인코딩을 수행하는 모듈 세트에 의해 처리되도록 할 수도 있다.
인코딩 모듈 (8) 은, 비디오 프레임에 공간적 인코딩을 적용하기 위한 일련의 모듈을 포함한다. 이들 모듈은, 블록 스플리터 모듈 (22), 성분 추출 모듈 (24), 순방향 변환 모듈 (26), 양자화 모듈 (28), 및 엔트로피 인코딩 모듈 (30) 을 포함한다. 블록 스플리터 모듈 (22) 은 미디어 소스 (4), 네트워크 인터페이스 (16) 또는 또다른 소스로부터 인코딩되지 않은 비디오 프레임을 수신할 수도 있다. 블록 스플리터 모듈 (22) 이 인코딩되지 않은 비디오 프레임을 수신하는 경우, 블록 스플리터 모듈 (22) 은 이 비디오 프레임을 픽셀 블록으로 분리할 수도 있다. 블록 스플리터 모듈 (22) 은 픽셀 블록을 성분 추출 모듈 (24) 로 제공할 수도 있다.
성분 추출 모듈 (24) 이 픽셀 블록을 수신하는 경우, 성분 추출 모듈 (24) 은 각 픽셀의 픽셀 성분값을 상이한 컬러 포맷으로 변환할 수도 있다. 예를 들어, 성분 추출 모듈 (24) 은 각 픽셀을 레드-그린-블루 (RGB) 컬러 포맷으로부터 YCrCb 컬러 포맷으로 변환할 수도 있다. 블록에서의 픽셀을 상이한 컬러 포맷으로 변환한 이후에, 성분 추출 모듈 (24) 은 블록에서의 픽셀의 픽셀 성분값을 픽 셀 성분값의 행렬로 분리할 수도 있다. 예를 들어, 성분 추출 모듈 (24) 은 일 픽셀 블록으로부터 Y 값의 행렬, Cr 값의 행렬, 및 Cb 값의 행렬을 추출할 수도 있다. Y 값은 픽셀의 휘도를 특정하고, Cr 값은 픽셀의 레드 색차를 특정하고, Cb 값은 픽셀의 블루 색차를 특정한다. 성분 추출 모듈 (24) 이 픽셀 성분값의 행렬을 추출한 경우, 성분 추출 모듈 (24) 은 이들 행렬 각각을 개별적으로 순방향 변환 모듈 (26) 로 제공할 수도 있다.
순방향 변환 모듈 (26) 이 픽셀 성분값의 행렬을 수신하는 경우, 순방향 변환 모듈 (26) 은 변환된 계수의 행렬을 발생시킨다. 이 변환된 계수의 행렬에서의 각 계수는, 이상적인 순이산 코사인 변환을 이용하여 픽셀 성분값의 행렬을 변환함으로써 생성되는 계수에 근사한다.
순방향 변환 모듈 (26) 은 고정 소수점 연산을 이용하여, 픽셀 성분값의 행렬에 1-차원 변환을 적용한다. 고정 소수점 연산을 이용하는 것은 몇몇 상황에서 유리할 수도 있다. 예를 들어, 모바일 전화기와 같은 소형의 디바이스는, 부동 소수점 연산을 수행하는데 요구되는 부동 소수점 유닛을 포함하지 않을 수도 있다. 순방향 변환 모듈 (26) 은, 픽셀 성분값 각각을 좌측-시프팅시킴으로써 스케일링된 계수의 행렬을 발생시키는 프로세스를 시작할 수도 있다. 예를 들어, 순방향 변환 모듈 (26) 은, 1-차원 변환을 적용하는 경우에 순방향 변환 모듈 (26) 이 이용하는 수의 고정 소수점 표현 (fixed-point representations of numbers) 의 정밀도의 비트의 수 (즉, 가수 비트의 수) 에 이 변환을 적용하는 것으로부터 기인하는 변환된 계수를 스케일링함으로써 제거된 정밀도의 비트의 수를 더한 것만큼 픽셀 성분값 각각을 좌측-시프팅시킴으로써, 조정된 계수의 행렬을 발생시킬 수도 있다. 픽셀 성분값 각각을 좌측-시프팅시킨 이후에, 순방향 변환 모듈 (26) 은 조정된 계수의 행렬의 행 벡터 각각에 대해 이 변환을 수행할 수도 있다. 조정된 계수의 행렬의 행 벡터 각각에 대해 이산 코사인 변환을 수행하는 것은 중간 계수의 행렬을 발생시킨다. 다음에, 순방향 변환 모듈 (26) 은 중간 계수의 행렬의 열 벡터 각각에 대해 이 변환을 수행할 수도 있다. 중간 계수의 행렬의 열 벡터 각각에 대해 변환을 수행하는 것은 변환된 계수의 행렬을 야기시킨다.
변환된 계수의 행렬을 발생시킨 이후에, 순방향 변환 모듈 (26) 은 상이한 스케일 인수로 변환된 계수의 행렬의 상이한 위치에서의 변환된 계수를 스케일링한다. 후술하는 바와 같이, 디코딩 모듈 (12) 은 역방향 변환의 적용시 이들 스케일 인수의 역수를 이용할 수도 있다. 순방향 변환 모듈 (26) 이 스케일 인수로 변환된 계수를 스케일링하는 것을 완료한 경우, 순방향 변환 모듈 (26) 은 그 결과적인 스케일링된 계수의 행렬을 양자화 모듈 (28) 로 출력할 수도 있다.
양자화 모듈 (28) 이 순방향 변환 모듈 (26) 로부터 이 스케일링된 계수의 행렬을 수신하는 경우, 양자화 모듈 (28) 은 스케일링된 계수를 양자화할 수도 있다. 양자화 모듈 (28) 은, 이용되는 코딩 표준에 종속하여 각종 방식으로 스케일링된 계수를 양자화할 수도 있다. 예를 들어, MPEG-4 파트 2 표준에 따르면, 양자화 모듈 (28) 은 다음의 양자화 행렬을 이용하여, i-프레임에 대한 스케일링된 계수의 행렬에서의 계수를 양자화할 수도 있다.
Figure 112008089582576-pct00014
또한, 이 실시예에 있어서, 양자화 모듈 (28) 은 다음의 양자화 행렬을 이용하여, 예측 프레임 또는 양방향-예측 프레임에 대한 스케일링된 계수의 행렬에서의 계수를 양자화할 수도 있다.
Figure 112008089582576-pct00015
양자화 모듈 (28) 이 양자화된 계수의 행렬을 발생시킨 이후에, 엔트로피 인코딩 모듈 (30) 은 엔트로피 인코딩 방식을 이용하여 양자화된 계수의 행렬을 압축할 수도 있다. 엔트로피 인코딩 방식을 이용하여 양자화된 계수의 행렬을 압축하기 위해서, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수를 이 계수의 지그재그 패턴을 취함으로써 벡터로 구성할 수도 있다. 다시 말하면, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 2-차원 행렬에서의 양자화된 계수 모두를 예측가능하게 양자화된 계수의 1-차원 벡터로 배열할 수도 있다. 그런 다음, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 벡터에 대해 허프만 코딩 또는 산술 코딩과 같은 엔트로피 인코딩 방식을 적용할 수도 있다.
또한, 인코딩 모듈 (8) 은 비디오 프레임의 시간적 인코딩을 수행하기 위한 하나 이상의 모듈을 포함한다. 도 2 의 실시예에 예시된 바와 같이, 인코딩 모듈 (8) 은 모션 추정 모듈 (32), 복원된 프레임 발생 모듈 (34), 및 잔여 프레임 발생 모듈 (36) 을 포함한다. 모션 추정 모듈 (32) 은 현재의 비디오 프레임에서의 각 매크로블록에 대한 기준 이미지에서의 소스 매크로블록을 식별하려고 시도한다. 모션 추정 모듈 (32) 은, 현재의 프레임에서의 매크로블록과 유사한 픽셀을 포함하는 기준 이미지에서의 매크로블록을 탐색함으로써, 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하려고 시도할 수도 있다. 모션 추정 모듈 (32) 은, 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하기 위해서 상이한 코딩 표준에 따른 상이한 크기의 영역을 탐색할 수도 있다. 예를 들어, 모션 추정 모듈 (32) 은, 폭이 32 개의 픽셀이며 높이가 32 개의 픽셀의 픽셀 영역 내에서 소스 매크로블록을 탐색할 수도 있는데, 여기서 현재의 매크로블록은 탐색 영역의 중심에 있다. 모션 추정 모듈 (32) 이 현재의 프레임에서의 매크로블록에 대한 소스 매크로블록을 식별하는 경우, 모션 추정 모듈 (32) 은 현재의 프레임에서의 매크로블록에 대한 모션 벡터를 계산한다. 현재의 프 레임에서의 매크로블록에 대한 모션 벡터는, 식별된 소스 매크로블록과 현재의 프레임의 매크로블록 사이의 수평 위치에서의 차이를 나타내는 x 값을 특정한다. 모션 추정 모듈 (32) 이 모션 벡터를 계산하였거나 현재의 프레임에서의 각 매크로블록에 대한 소스 매크로블록을 식별할 수 없었던 이후에, 모션 추정 모듈 (32) 은 현재의 프레임에 대해 계산된 모션 벡터를 복원된 프레임 발생 모듈 (34) 로 제공할 수도 있다.
복원된 프레임 발생 모듈 (34) 은 모션 벡터 및 기준 프레임을 이용하여, 복원된 프레임을 발생시킬 수도 있다. 복원된 프레임 발생 모듈 (34) 은, 기준 프레임에서의 소스 매크로블록에 대해 현재의 프레임에서의 각 매크로블록에 대한 모션 벡터를 적용함으로써 복원된 프레임을 발생시킬 수도 있다. 사실상, 복원된 프레임 발생 모듈 (34) 은 프레임을 생성하는데, 이 프레임에서 기준 프레임의 매크로블록은 현재의 프레임의 대응하는 모션 벡터에 의해 표시된 위치로 "이동" 되었다.
잔여 프레임 발생 모듈 (36) 은, 복원된 프레임에서의 픽셀 성분값을 현재의 프레임에서의 대응하는 픽셀 성분값으로부터 감산함으로써 잔여 프레임을 발생시킬 수도 있다. 일반적으로, 잔여 프레임은, 복원된 프레임 또는 현재의 프레임 중 어느 하나보다 적은 정보를 포함한다. 잔여 프레임 발생 모듈 (36) 이 잔여 프레임을 발생시킨 이후에, 잔여 프레임 발생 모듈 (36) 은, 잔여 프레임을 공간적으로 인코딩하는 프로세스를 시작하기 위해서 이 잔여 프레임을 블록 스플리터 모듈 (22) 로 제공한다. 또한, 모션 추정 모듈 (32) 은, 모션 벡터를 압축하기 위해 서 현재의 프레임에 대한 모션 벡터를 엔트로피 인코딩 모듈 (30) 로 제공할 수도 있다. 잔여 프레임이 공간적으로 인코딩되고, 엔트로피 인코딩 모듈 (30) 이 모션 벡터를 인코딩한 이후에, 스트림 출력 모듈 (38) 은 공간적으로 인코딩된 잔여 프레임 및 인코딩된 모션 벡터를 비디오 비트스트림의 일부로서 포맷팅할 수도 있다.
도 3 은 디코딩 모듈 (12) 의 예시적인 상세를 도시한 블록도이다. 디코딩 모듈 (12) 은 엔트로피 디코딩 모듈 (44), 역양자화 모듈 (46), 역방향 변환 모듈 (48), 픽셀 복원 모듈 (50), 프레임 버퍼 (51), 블록 결합기 모듈 (52), 프레임 제어 모듈 (53), 기준 프레임 저장 모듈 (54), 복원된 프레임 발생 모듈 (56), 및 예측 프레임 발생 모듈 (58) 을 포함할 수도 있다. 이들 모듈의 일부 또는 전부는 디코딩 모듈 (12) 의 소프트웨어 명령들의 서브세트를 포함할 수도 있다. 대안적으로, 이들 모듈의 일부 또는 전부는 특수-목적 하드웨어 또는 펌웨어를 포함할 수도 있다. 또다른 대안에 있어서, 이들 모듈은 소프트웨어 명령들 및 특수-목적 하드웨어 또는 펌웨어를 포함할 수도 있다.
디코딩 모듈 (12) 이 비디오 프레임을 포함한 비트스트림을 수신하는 경우, 엔트로피 디코딩 모듈 (44) 은 비디오 프레임에서의 양자화된 계수의 행렬에 대해 엔트로피 디코딩 방식을 적용할 수도 있다. 비트스트림은, 이 비트스트림에서의 양자화된 계수의 행렬에 어떤 엔트로피 디코딩 방식을 적용할지를 엔트로피 디코딩 모듈 (44) 에 나타내는 값을 포함할 수도 있다. 또한, 엔트로피 디코딩 모듈 (44) 은 동일하거나 상이한 엔트로피 디코딩 방식을 적용하여, 비디오 프레임 의 모션 벡터를 디코딩할 수도 있다.
엔트로피 디코딩 모듈 (44) 이 비디오 파일에서의 양자화된 계수의 행렬에 대해 엔트로피 디코딩 방식을 적용한 이후에, 역양자화 모듈 (46) 은 양자화된 계수의 행렬 각각에서의 계수를 역양자화할 수도 있다. 코딩 표준에 종속하여, 역양자화 모듈 (46) 은 각종 방식으로 이들 계수를 역양자화할 수도 있다. 예를 들어, MPEG-4 파트 2 표준에 따르면, 역양자화 모듈 (46) 은 2 가지 상이한 방식으로 전술한 2 개의 양자화 행렬을 이용할 수도 있다. 첫번째로, 역양자화 모듈 (46) 은 이들 양자화 행렬을 이용하여, H.263 스타일 역양자화를 수행할 수도 있다. H.263 스타일 역양자화에 있어서, 역양자화 모듈 (46) 은 다음과 같이 양화자된 값
Figure 112008089582576-pct00016
으로부터 복원된 계수
Figure 112008089582576-pct00017
을 획득하는데:
Figure 112008089582576-pct00018
Figure 112008089582576-pct00019
,
이고, 이는
Figure 112008089582576-pct00020
에 의한 단 1 회의 승산을 수반한다.
두번째로, 역양자화 모듈 (46) 은 이들 양자화 행렬을 이용하여, MPEG-1/2 스타일 역양자화를 수행할 수도 있다. MPEG-1/2 스타일 역양자화에 있어서, 역양자화 모듈 (46) 은 부가적인 가중 행렬
Figure 112008089582576-pct00021
을 이용하는데, 여기서 w 는 어떤 가중 행렬이 이용되고 있는지를 나타내고:
Figure 112008089582576-pct00022
여기서,
Figure 112008089582576-pct00023
이다.
역방향 변환 모듈 (48) 이 역양자화된 계수의 행렬을 수신하는 경우, 역방향 변환 모듈 (48) 은 픽셀 성분값의 행렬을 발생시킨다. 상세하게 후술하는 바와 같이, 역방향 변환 모듈 (48) 은, 먼저 역양자화된 계수의 행렬에서의 각 계수를 스케일링하고, 이 행렬의 DC 계수에 바이어스 값을 가산하고, 일련의 1-차원 이산 코사인 변환을 적용하고, 그 결과적인 값을 우측-시프팅시키고, 우측-시프팅된 값을 클리핑한 다음, 클리핑된 값을 출력함으로써, 픽셀 성분값의 행렬을 발생시킨다.
역방향 변환 모듈 (48) 이 픽셀 성분값의 행렬을 출력한 이후에, 픽셀 복원 모듈 (50) 은, 픽셀 성분값의 행렬과 비디오 프레임 내의 등가의 위치와 연관된 픽셀 성분값의 행렬을 결합함으로써 픽셀의 행렬을 발생시킬 수도 있다. 예를 들어, 픽셀 복원 모듈 (50) 은 역방향 변환 모듈 (48) 로부터 Y 픽셀 성분값의 행렬, Cb 픽셀 성분값의 행렬, 및 Cr 픽셀 성분값의 행렬을 수신할 수도 있다. 이들 3 개의 행렬 각각은 단일 8×8 픽셀 블록에 대한 픽셀 성분을 포함할 수도 있다. 픽셀 각각은 Y 픽셀 성분값, Cb 픽셀 성분값, 및 Cr 픽셀 성분값을 포함할 수도 있다. 픽셀의 행렬을 발생시킨 이후에, 픽셀 복원 모듈 (50) 은 픽셀 블록을 블록 결합기 모듈 (52) 로 제공할 수도 있다.
블록 결합기 모듈 (52) 이 픽셀 블록을 수신하는 경우, 블록 결합기 모듈 (52) 은, 블록 결합기 모듈 (52) 이 비디오 프레임에서의 픽셀 블록의 일부 또는 전부를 수신할 때까지 픽셀 블록을 버퍼링할 수도 있다. 하나 이상의 픽셀 블록을 수신한 이후에, 블록 결합기 모듈 (52) 은 픽셀 블록을 비디오 프레임으로 결합할 수도 있고, 비디오 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다. 비디오 프레임은, 미디어 프리젠테이션 유닛 (14) 에 디스플레이될 때까지 프레임 버퍼 (51) 에 저장될 수도 있다. 또한, 블록 결합기 모듈 (52) 은 비디오 프레임을 프레임 저장 모듈 (54) 로 출력할 수도 있다. 프레임 저장 모듈 (54) 에서의 비디오 프레임은 예측 프레임 및 양방향-예측 프레임의 복원을 위해 기준 프레임으로서 이용될 수도 있다. 또한, 프레임 저장 모듈 (54) 에서의 비디오 프레임은, 예측 프레임 및 양방향-예측 프레임의 복원에 이용되는 잔여 프레임일 수도 있다.
예측 프레임 또는 양방향-예측 프레임을 복원하기 위해서, 디코딩 모듈 (12) 은 복원된 프레임 발생 모듈 (56) 을 포함한다. 복원된 프레임 발생 모듈 (56) 은 엔트로피 디코딩 모듈 (44) 로부터 디코딩된 모션 벡터를 수신한다. 또한, 복원된 프레임 발생 모듈 (56) 은 프레임 저장 모듈 (54) 로부터 현재의 프레임의 기준 프레임을 취득한다. 그런 다음, 복원된 프레임 발생 모듈 (56) 은 매크로블록을 기준 프레임에서의 그 위치로부터 모션 벡터에 의해 표시된 위치로 "이동" 시킨다. 복원된 프레임은 이와 같이 매크로블록을 이동시키는 것으로부터 기인한다. 복원된 프레임 발생 모듈 (56) 이 복원된 프레임을 발생시킨 이후에, 복원된 프레임 발생 모듈 (56) 은 복원된 프레임을 예측 프레임 발생 모듈 (58) 로 제공한다.
예측 프레임 발생 모듈 (58) 이 일시 프레임 (temporary frame) 을 수신하는 경우, 예측 프레임 발생 모듈 (58) 은 프레임 저장 모듈 (54) 로부터 현재의 프레임에 대한 잔여 프레임을 취득할 수도 있다. 잔여 프레임을 취득한 이후에, 예측 프레임 발생 모듈 (58) 은 복원된 프레임 및 잔여 프레임의 각 픽셀에서의 대응하는 컬러 성분값을 부가할 수도 있다. 복원된 비디오 프레임은 이 부가로부터 기인한다. 다음에, 예측 프레임 발생 모듈 (58) 은 미디어 프리젠테이션 유닛 (14) 상의 결과적인 디스플레이를 위해 이 복원된 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다.
도 4 는 인코딩 모듈 (8) 의 예시적인 동작을 도시한 흐름도이다. 도 4 에 설명된 동작이 순차적인 방식으로 설명되어 있지만, 이 동작이 파이프라인 방식으로 수행될 수도 있다는 것이 주목되어야 한다.
초기에, 인코딩 모듈 (8) 은 인코딩되지 않은 비디오 프레임의 시퀀스를 수신한다 (60). 예를 들어, 인코딩 모듈 (8) 은 미디어 소스 (4) 로부터 픽셀 세트의 형태로 인코딩되지 않은 프레임의 시퀀스를 수신할 수도 있다. 인코딩 모듈 (8) 이 인코딩되지 않은 프레임의 시퀀스를 수신하는 경우, 인코딩 모듈 (8) 에서의 프레임 제어 모듈 (20) 은, 인코딩되지 않은 프레임의 시퀀스에서의 현재의 프레임이 i-프레임으로서 인코딩되어야 하는지 또는 예측 프레임이나 양방향-예측 프레임으로서 인코딩되어야 하는지를 판정할 수도 있다 (62).
현재의 프레임이 i-프레임으로서 인코딩되어야 한다고 프레임 제어 모듈 (20) 이 판정하는 경우에는, 인코딩 모듈 (8) 에서의 블록 스플리터 모듈 (22) 은 현재의 프레임을 픽셀 블록으로 분할할 수도 있다 (64). 예를 들어, 인코딩 모듈 (8) 에서의 블록 스플리터 모듈 (22) 은 현재의 프레임을 2×2, 4×4, 또는 8×8 픽셀 블록으로 분할할 수도 있다.
현재의 프레임을 픽셀 블록으로 분할한 이후에, 성분 추출 모듈 (24) 은 픽셀 블록 각각에서 픽셀 성분값을 분리할 수도 있다 (66). 그 결과, 각 픽셀 블록에 대한 픽셀 성분값의 3 개의 블록, 즉 픽셀의 휘도를 나타내는 Y 값의 블록, 픽셀의 블루 색차를 나타내는 Cb 값의 블록, 및 픽셀의 레드 색차를 나타내는 Cr 값의 블록이 존재할 수도 있다.
그런 다음, 인코딩 모듈 (8) 에서의 순방향 변환 모듈 (26) 은 픽셀 성분값의 행렬 각각에 대한 스케일링된 계수의 행렬을 발생시킬 수도 있다 (68). 이들 스케일링된 계수의 행렬에서의 계수는, 각각의 픽셀 성분값의 행렬에 대해 이상적인 2-차원 순이산 코사인 변환을 이용함으로써 생성되는 값들의 근사치이다.
순방향 변환 모듈 (26) 이 픽셀 성분값의 행렬 각각에 대한 스케일링된 계수의 행렬을 발생시킨 이후에, 인코딩 모듈 (8) 에서의 양자화 모듈 (28) 은 스케일링된 계수의 행렬 각각에서의 계수를 양자화할 수도 있다 (70). 일단 양자화 모듈 (28) 이 스케일링된 계수의 행렬 각각에서의 계수를 양자화하면, 엔트로피 인코딩 모듈 (30) 은 양자화된 계수의 행렬 각각에 대해 엔트로피 인코딩 프로세스를 수행할 수도 있다 (72). 예를 들어, 인코딩 모듈 (8) 은 양자화된 계수의 행렬 각각에 대해 산술 인코딩 방식 또는 허프만 인코딩 방식을 적용할 수도 있다. 엔트로피 인코딩 프로세스는 데이터를 더 압축한다. 그러나, 엔트로피 인코딩 프로세스는 정보의 손실을 야기하지는 않는다. 양자화된 계수의 행렬 각각에 대해 엔트로피 인코딩 프로세스를 수행한 이후에, 인코딩 모듈 (8) 에서의 스트림 출력 모듈 (38) 은 비디오 프레임의 시퀀스에 대한 비트스트림에 대해 양자화된 계수의 인코딩된 행렬을 부가할 수도 있다 (74). 스트림 출력 모듈 (38) 이 비트스트림에 이 인코딩된 행렬을 부가한 이후에, 프레임 제어 모듈 (20) 은, 현재의 프레임이 프레임 시퀀스의 최종 비디오 프레임인지 여부를 판정할 수도 있다 (76). 현재의 프레임이 프레임 시퀀스의 최종 프레임인 경우에는 (76 의 "예"), 인코딩 모듈 (8) 은 프레임 시퀀스의 인코딩을 완료하였다 (78). 한편, 현재의 프레임이 프레임 시퀀스의 최종 프레임이 아닌 경우에는 (76 의 "아니오"), 인코딩 모듈 (8) 은 루프백하여, 새로운 현재의 프레임이 i-프레임으로서 인코딩되어야 하는지 여부를 판정할 수도 있다 (62).
현재의 프레임이 i-프레임으로서 인코딩되지 않아야 하는 경우에는 (62 의 "아니오"), 인코딩 모듈 (8) 에서의 모션 추정 모듈 (32) 은 현재의 프레임을 매크로블록 세트로 분할할 수도 있다 (80). 다음에, 모션 추정 모듈 (32) 은 현재의 프레임에서의 매크로블록 각각에 대한 하나 이상의 기준 프레임에서의 소스 매크로블록을 식별하려고 시도할 수도 있다 (82). 그런 다음, 모션 추정 모듈 (32) 은, 모션 추정 모듈 (32) 이 소스 매크로블록을 식별할 수 있었던 현재의 프레임에서의 매크로블록 각각에 대한 모션 벡터를 계산할 수도 있다 (84). 모션 추정 모듈 (32) 이 모션 벡터를 계산한 이후에, 복원된 프레임 발생 모듈 (34) 은 이 모션 벡터를 이용하여, 기준 프레임에서의 식별된 매크로블록을 모션 벡터에 의 해 표시된 위치로 "이동" 시킴으로써 복원된 프레임을 발생시킨다 (86). 그런 다음, 잔여 프레임 발생 모듈 (36) 은, 복원된 프레임에서의 픽셀 성분값을 현재의 프레임에서의 대응하는 픽셀 성분값으로부터 감산함으로써, 현재의 프레임에 대한 잔여 프레임을 발생시킬 수도 있다 (88). 잔여 프레임 발생 모듈 (36) 이 잔여 프레임을 발생시킨 이후에, 엔트로피 인코딩 모듈 (30) 은 엔트로피 인코딩 방식을 이용하여, 현재의 프레임에 대한 모션 벡터를 인코딩할 수도 있다 (90). 또한, 잔여 프레임에 대해 단계 66 내지 단계 74 를 적용함으로써, 잔여 프레임에 대해 공간적 인코딩을 적용할 수도 있다.
도 5 는 디코딩 모듈 (12) 의 예시적인 동작을 도시한 흐름도이다. 도 5 에 설명된 동작이 순차적인 방식으로 설명되어 있지만, 이 동작이 파이프라인 방식으로 수행될 수도 있다는 것이 주목되어야 한다.
초기에, 디코딩 모듈 (12) 은 인코딩된 비디오 프레임을 수신한다 (100). 인코딩된 비디오 프레임을 수신한 이후에, 디코딩 모듈 (12) 에서의 엔트로피 디코딩 모듈 (44) 은 인코딩된 프레임 내의 데이터 블록에 대해 엔트로피 디코딩 프로세스를 수행할 수도 있다 (102). 엔트로피 디코딩 모듈 (44) 은, 프레임을 인코딩하는데 이용된 엔트로피 인코딩 프로세스와 등가의 엔트로피 디코딩 프로세스를 수행할 수도 있다. 예를 들어, 인코딩 모듈 (8) 이 프레임을 인코딩하는데 허프만 인코딩을 이용한 경우, 엔트로피 디코딩 모듈 (44) 은 프레임을 디코딩하는데 허프만 디코딩을 이용한다. 프레임에서의 각 데이터 블록에 대해 엔트로피 디코딩 프로세스를 적용한 결과, 엔트로피 디코딩 모듈 (44) 은 양자화된 계 수의 행렬 세트를 생성하였다.
다음에, 디코딩 모듈 (12) 에서의 역양자화 모듈 (46) 은 양자화된 계수의 행렬 각각에서의 계수를 역양자화할 수도 있다 (104). 양자화된 계수의 행렬에서의 각 계수를 역양자화한 이후에, 디코딩 모듈 (12) 에서의 역방향 변환 모듈 (48) 은 픽셀 성분값의 행렬을 발생시킨다 (106). 픽셀 성분값의 행렬 중 하나에서의 픽셀 성분값은, 이상적인 2-차원 역이산 코사인 변환을 이용하여 양자화된 계수의 행렬 중 하나를 변환함으로써 생성되는 대응하는 값의 근사치이다.
역방향 변환 모듈 (48) 이 이 계수의 행렬 각각에 대한 픽셀 성분값의 행렬을 컴퓨팅한 경우, 디코딩 모듈 (12) 에서의 픽셀 복원 모듈 (50) 은 픽셀 블록을 생성하기 위해서 픽셀 성분값의 적절한 행렬을 결합할 수도 있다 (108). 예를 들어, 디코딩 모듈 (12) 은, YCrCb 픽셀 블록을 생성하기 위해서 Y 값의 블록과 연관된 Cr 값의 블록 및 연관된 Cb 값의 블록을 결합할 수도 있다. 픽셀 복원 모듈 (50) 이 픽셀 블록을 생성한 이후에, 블록 결합기 모듈 (52) 은 픽셀 블록을 비디오 프레임으로 재결합할 수도 있다 (110).
다음에, 디코딩 모듈 (12) 에서의 프레임 제어 모듈 (53) 은, 현재의 프레임이 i-프레임인지 여부를 판정할 수도 있다 (112). 현재의 프레임이 i-프레임인 경우에는 (112 의 "예"), 블록 결합기 모듈 (52) 은 비디오 프레임을 프레임 버퍼 (51) 로 출력할 수도 있다 (114). 한편, 현재의 프레임이 i-프레임이 아닌 경우에는 (즉, 현재의 프레임이 예측 프레임이거나 양방향-예측 프레임인 경우에는) (112 의 "아니오"), 엔트로피 디코딩 모듈 (44) 은 엔트로피 디코딩 방식을 이용하여, 현재의 프레임의 모션 벡터를 디코딩한다 (116). 다음에, 복원된 프레임 발생 모듈 (56) 은 프레임 저장 모듈 (54) 에서의 하나 이상의 기준 프레임 및 디코딩된 모션 벡터를 이용하여, 복원된 프레임을 발생시킨다 (118). 그런 다음, 예측 프레임 발생 모듈 (58) 은 블록 결합기 모듈 (52) 에 의해 발생된 프레임 및 복원된 프레임을 이용하여, 예측 프레임을 발생시킬 수도 있다 (120).
도 6 은 역방향 변환 모듈 (48) 의 예시적인 상세를 도시한 블록도이다. 도 6 의 실시예에 예시된 바와 같이, 역방향 변환 모듈 (48) 은 입력 모듈 (140) 을 포함할 수도 있다. 입력 모듈 (140) 은 역양자화 모듈 (46) 로부터 일 계수의 행렬을 수신할 수도 있다. 예를 들어, 입력 모듈 (140) 은, 계수의 행렬을 저장하는 디바이스 (2) 의 메모리 모듈에서의 위치를 표시하는 포인터를 수신할 수도 있다. 대안적으로, 입력 모듈 (140) 은, 계수의 행렬을 저장하는 내부 데이터 구조체를 포함할 수도 있다.
입력 모듈 (140) 이 역양자화된 계수의 행렬을 수신하는 경우, 입력 모듈 (140) 은 이 역양자화된 계수의 행렬을 역방향 변환 모듈 (48) 에서의 스케일링 모듈 (142) 로 제공할 수도 있다. 스케일링 모듈 (142) 은, 역양자화된 계수의 행렬에서의 각 계수를 스케일링함으로써 스케일링된 계수의 행렬을 발생시킨다. 스케일링 모듈 (142) 은, 수의 고정 소수점 표현을 나타내도록 역방향 벡터 변환 모듈 (146) 에 의해 이용된 가수 비트의 수만큼 각 계수를 좌측-시프팅시킴으로써, 역양자화된 계수의 행렬에서의 계수를 스케일링할 수도 있다. 가수 비트는, 소수점 (radix point) 의 우측으로의 비트이다 (즉, 수의 분수부). 이와 같이, 스케일링 모듈 (142) 은 역양자화된 계수의 행렬에서의 계수의 표현을 가수 비트의 적절한 수를 갖는 고정 소수점 표현으로 효과적으로 변환한다. 예를 들어, 역방향 벡터 변환 모듈 (146) 이 3 가수 비트를 포함한 고정 소수점 수를 이용하는 경우, 스케일링 모듈 (142) 은, 3 개의 포지션만큼 역양자화된 계수의 행렬에서의 계수 각각을 좌측-시프팅시킴으로써 스케일링된 계수의 행렬을 발생시킨다.
스케일링 모듈 (142) 이 스케일링된 계수의 행렬을 발생시킨 이후에, 계수 바이어싱 모듈 (144) 은, 스케일링된 계수의 행렬의 DC 계수에 대해 중심점 바이어스 값 및 보완 바이어스 값을 가산함으로써, 바이어싱된 계수의 행렬을 발생시킬 수도 있다. 전술한 바와 같이, 스케일링된 계수의 행렬의 DC 계수는 통상적으로 이 행렬의 좌측 최상부 위치에 있는 계수이다. 일반적으로, DC 계수는 행렬에서의 다른 계수의 평균값을 나타낸다.
보완 바이어스 값은, 포지티브 에러 및 네거티브 에러로 하여금, 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 하는 값이다. 예를 들어, 보완 바이어스 값은, DC 계수가 음수가 아닌 경우에는 0 과 동등하며, DC 계수가 음수인 경우에는 -1 과 동등한 부호-적응형 (sign-adaptive) 바이어스 값일 수도 있다. 16-비트 프로세서에서 DC 계수에 대해 부호-적응형 바이어스 값을 가산하기 위해서, 계수 바이어싱 모듈 (144) 은 다음의 공식을 이용할 수도 있다:
[공식 1]
Figure 112008089582576-pct00024
.
[공식 1] 에 있어서, 중심점 바이어스를 제공하도록 항 (1 << (P+2)) 이 가산된다. P 는, 역방향 벡터 변환 모듈 (146) 에 의해 수행되는 변환에서 이용된 고정 소수점 가수 비트 (즉, 소수점의 우측으로의 비트) 의 수를 나타내는 상수이다. 수 2 가 P 에 가산되는데, 그 이유는 우측-시프트 모듈 (148) 이 (P+3) 만큼 모든 계수를 우측-시프팅시킬 수도 있기 때문이고, 여기서 수 '3' 은, 역이산 코사인 변환을 수행함으로써 부가된 정밀도의 비트로부터 비롯된다. 이 점을 부연하기 위해서, 1 을 (P+2) 만큼 좌측-시프팅시킴으로써 수 x 가 발생되고, x 를 (P+3) 만큼 우측-시프팅시킴으로써 수 z 가 발생되는 경우, z=1/2 이다. (다르게 말하면,
Figure 112008089582576-pct00025
이다). 따라서, DC 계수에 (1 << (P+2)) 을 가산하는 것은, DC 계수에 (1 << (P+3))/2 를 가산하는 것과 등가이다.
[공식 1] 에 있어서, 항
Figure 112008089582576-pct00026
은 15 개의 포지션만큼 16-비트 DC 계수를 우측으로 시프팅시킨다. 나머지 1 비트는, DC 계수의 부호를 나타낸다. 예를 들어, DC 계수가 0b1111 1100 0011 0101 이었다고 가정한다. 이 실시예에 있어서, 부호 확장 (sign extension) 을 이용하여, DC 계수를 15 개의 포지션만큼 우측으로 시프팅시키면, 0b1111 1111 1111 1111 (십진법, -1) 의 값이 된다. 유사하게, DC 계수가 0b0111 1111 1111 1111 인 경우, DC 계수를 15 개의 포지션만큼 우측으로 시프팅시키면, 0b0000 0000 0000 0000 (십진법, 0) 의 값이 된다.
또다른 실시예에 있어서, 보완 바이어스 값은 디더링 (dithering) 바이어스 값일 수도 있다. 디더링 바이어스 값은, -1 또는 0 과 동등한 값이다. 16-비트 프로세서에서 DC 계수에 부호-디더링 바이어스 값을 가산하기 위해서, IDCT 모듈 (48) 은 다음의 공식을 이용할 수도 있다:
[공식 2]
Figure 112008089582576-pct00027
.
[공식 2] 에 있어서, P 는
Figure 112009005796561-pct00028
에서의 가수 비트의 수를 나타낸다. 항 (1 << (P+2)) 은 중심점 바이어스를 가산한다. 항
Figure 112009005796561-pct00029
은, IDCT 모듈 (48) 이 의사 랜덤에 기초하여 -1 또는 0 을 선택한다는 것을 나타낸다.
또한, 계수 바이어싱 모듈 (144) 은, 스케일링된 계수의 행렬에서의 AC 계수 각각에 대해 중심점 바이어스 값 및 보완 바이어스 값을 가산할 수도 있다. 행렬의 AC 계수는, 이 행렬에서 DC 계수 이외의 모든 계수이다. AC 계수 각각에 대해 중심점 바이어스 값 및 보완 바이어스 값을 가산하는 것은 라운딩 에러를 더 감소시킬 수도 있다.
계수 바이어싱 모듈 (144) 이 바이어싱된 계수의 행렬을 발생시킨 이후에, 역방향 벡터 변환 모듈 (146) 은, 고정 소수점 연산을 이용하여 반복적으로 바이어싱된 계수의 행렬에 1-차원 변환을 적용함으로써, 변환된 계수의 행렬을 발생시킨다. 예를 들어, 역방향 벡터 변환 모듈 (146) 은, 고정 소수점 연산을 이용하여 바이어싱된 계수의 행렬에서의 계수의 각 행 벡터에 대해 1-차원 변환을 적용함으로써, 중간 값의 행렬을 발생시킬 수도 있다. 다음에, 역방향 벡터 변환 모 듈 (146) 은, 고정 소수점 연산을 이용하여 중간 값의 행렬에서의 각 열 벡터에 대해 1-차원 변환을 적용함으로써, 변환된 계수의 행렬을 컴퓨팅할 수도 있다. 예시적인 1-차원 변환이 아래의 도 10 및 도 11 에 예시되어 있다.
역방향 벡터 변환 모듈 (146) 이 변환된 계수의 행렬을 발생시킨 이후에, 우측-시프트 모듈 (148) 은, 스케일링 중에 또한 변환의 적용 중에 부가된 비트의 수와 동등한 포지션의 수만큼 변환된 계수의 행렬에서의 계수 각각을 우측-시프팅시킴으로써 조정된 계수의 행렬을 발생시킬 수도 있다. 예를 들어, 변환을 적용하는 것이 부가적인 3 비트를 야기하고, 계수를 스케일링하는 것이 부가적인 3 비트를 부가하는 경우, 우측-시프트 모듈 (148) 은 6 (3+3) 개의 포지션만큼 계수 각각을 우측-시프팅시킬 수도 있다.
우측-시프트 모듈 (148) 은 2b 로 계수 각각을 제산하는 대체물로서 이 우측-시프트를 수행할 수도 있는데, 여기서 b 는, 스케일링 중에 스케일링 모듈 (142) 에 의해 계수의 가수 부분에 부가된 비트의 수에 역방향 벡터 변환 모듈 (146) 에 의해 부가된 부가적인 비트의 수를 더한 것과 동등하다. 소스 이미지 데이터와 결과 이미지 데이터 사이의 차이는, xn/2b 와 xn >> b 사이의 차이로 인해 발생할 수도 있는데, 여기서 xn 은 위치 n 에 있는 행렬에서의 계수이다. 이들 차이의 일부는, 고정 소수점 연산의 제한된 정밀도에 있어서, (xn >> b) 이 xn 의 모든 값에 대해 (xn/2b) 와 동등하지 않다는 사실에 기인한 라운딩 에러로 인해 발생할 수 도 있다. 예를 들어, 인코딩 모듈 (8) 은 16 비트의 고정 소수점 수, xn = 63 (이진법으로, 0000 0000 0011 1111), 및 b = 6 을 이용할 수도 있다. 이 실시예에 있어서, 0000 0000 0011 1111 을 16 개의 포지션만큼 우측으로 시프팅시키면, 0000 0000 0000 0000 의 이진수가 된다. 그에 따라, 63 >> 6 = 0 이다. 한편, 63/26 = 63/64 = 0.984375 이다. 0 과 0.984 사이의 차이는, 소스 이미지와 결과 이미지 사이의 가시 차이를 야기할 수도 있다.
DC 계수에 바이어스 값을 가산하는 것은 라운딩 에러로 인한 차이를 감소시킨다. 예를 들어, 계수 바이어싱 모듈 (144) 은 xn 에 중심점 바이어스 값 c 를 가산할 수도 있다. 중심점 바이어스 값 c 는 2b/2 = 2(b-1) 과 동등할 수도 있다. 예를 들어, b = 6 인 경우, c = 26/2 = 64/2 = 32 이다. 이 실시예에 있어서, xn = 63 인 경우, 63 + 32 = 95 (0b0000 0000 0101 1111) 이다. 95 를 6 개의 포지션만큼 우측-시프팅시킨 것 = 1 (이진법으로, 0b0000 0000 0000 0001) 이다. 중심점 바이어스 값을 가산한 이후에 생성된 값 1 은, 중심점 바이어스 값을 가산하지 않고 생성된 값 0 보다 0.984375 의 정확한 값에 더 근접한다.
중심점 바이어스 값 c 를 가산하는 것에 부가하여, 계수 바이어싱 모듈 (144) 은 또한 DC 계수에 보완 바이어스 값을 가산할 수도 있다. 예를 들어, 계수 바이어싱 모듈 (144) 은 부호 적응형 바이어스 값 d(xn) 을 가산할 수도 있다. 부호-적응형 바이어스 값 d(xn) 은, xn 이 음수인 경우에는 -1 과 동등할 수도 있고, xn 이 음수가 아닌 경우에는 0 과 동등할 수도 있다. 부호-적응형 바이어스 값 d(xn) 을 가산하는 것은, 부호-적응형 바이어스 값 d(xn) 이 없는 값보다 양호한 근사치인 값을 야기할 수도 있다. 예를 들어, 부호-적응형 바이어스 값 d(xn) 없이, 함수 (xn + c) >> b 는 0 에 대해 대칭적이지 않다. 예를 들어, xn = 32, b = 6, c = 32 인 경우, (xn + c) >> b = 1 이다. 그러나, xn = -32, b = 6, c = 32 인 경우, (xn + c) >> b = 0 이다. 이러한 0 에 대한 대칭성의 결여는, 연속적인 예측 비디오 프레임을 계산하는 경우에 점진적으로 보다 큰 에러를 야기할 수도 있다. 또한, xn >> b 와 xn/2b 사이의 차이는, xn 이 0 보다 작은 경우보다 xn 이 0 보다 큰 경우에 더 크다. 또한, 이는 에러를 생성할 수도 있다.
부호-적응형 바이어스 값 d(xn) 은 이들 문제점을 정정할 수도 있다. 예를 들어, xn = 32, b = 6, c = 32 이면, d(xn) = 0 이라고 가정한다. 그에 따라, (xn + c + d(xn)) >> b = 1 이다. 이하, xn = -32, b = 6, c = 32 이면, d(xn) = -1 이라고 가정한다. 그에 따라, (xn + c + d(xn)) >> b = -1 이다. 이 실시예는, 함수 (xn + c + d(xn)) >> b 이 0 에 대해 대칭이고, xn 이 0 보다 작 은 경우보다 xn 이 0 보다 큰 경우에 보다 큰 차이를 생성하지 않는다는 것을 나타낸다.
대안적인 구현에 있어서, 계수 바이어싱 모듈 (144) 은 부호-적응형 바이어스 값 d 를 가산하는 대신에 디더링 바이어스 값 e 를 가산할 수도 있다. 계수 바이어싱 모듈 (144) 이 DC 계수에 디더링 바이어스 값 e 를 가산하는 경우, 계수 바이어싱 모듈 (144) 은, 의사 랜덤에 기초하여 e 의 값이 되도록 값 0 또는 값 -1 중 어느 하나를 선택할 수도 있다. 디더링 바이어스 값 e 의 값을 선택하기 위해서, 계수 바이어싱 모듈 (144) 은 다음의 명령들을 포함할 수도 있다.
Figure 112008089582576-pct00030
다수의 비디오 인코딩 표준은, 화상 집합 ("GOP": Group Of Pictures) 으로서 공지된 것을 이용한다. GOP 는, GOP 내의 i-프레임 및/또는 다른 예측 프레 임이나 양방향-예측 프레임을 참조하는 예측 프레임 및/또는 양방향-예측 프레임의 세트 및 i-프레임을 포함한다. 예를 들어, 미디어 파일은 계수 행렬의 세트를 이용하여 인코딩되는 i-프레임을 포함할 수도 있다. 비디오 시퀀스를 생성하기 위해서, 디코딩 모듈 (12) 은 이 i-프레임에 기초하여 예측 프레임을 생성할 수도 있다. i-프레임을 디코딩함으로써 야기된 에러는, i-프레임에 기초한 예측 프레임에 반영된다. 또한, 예측 프레임을 디코딩함으로써 야기된 에러는 다음의 예측 프레임에 통합된다. 프레임을 디코딩함으로써 야기된 에러가 0 에 대해 대칭적이지 않거나 보다 큰 포지티브 또는 네거티브 크기를 갖는 경우, 이들 에러는 연속적인 예측 프레임에서의 픽셀 성분값의 값을 신속하게 증가시키거나 감소시킬 수도 있다. 예를 들어, 에러가 보다 큰 포지티브 에러를 갖는 경향이 있는 경우, 이들 에러는 연속적인 예측 프레임에서 합산되어, 정확한 픽셀 성분값보다 높은 픽셀 성분값을 야기할 수도 있다. 그 결과, GOP 내의 연속적인 예측 프레임에서의 픽셀은 부적절하게 컬러 또는 휘도를 변경할 수도 있다. 이는 드리프트 에러로서 공지되어 있다. 너무 심각한 드리프트 에러를 회피하기 위해서, i-프레임으로부터 단지 제한된 개수의 프레임만이 발생될 수 있다. 라운딩으로 인해, 에러는, 보다 큰 정밀도를 갖는 수를 이용하여 변환을 수행하는 경우보다 제한된 가수 비트의 수 (예를 들어, 3 가수 비트) 를 갖는 고정 소수점 수를 이용하여 변환을 수행하는 경우에 크기가 더 클 수도 있다. 그에 따라, 드리프트 에러는 제한된 가수 비트의 수를 갖는 고정 소수점 수를 이용하여 변환을 수행하는 경우에 특히 문제가 있을 수도 있다.
의사 랜덤에 기초하여 디더링 바이어스 값 e 의 값을 선택하는 것은, 각 예측 프레임이 동등하게 보다 큰 포지티브 크기를 갖는 에러 또는 보다 큰 네거티브 크기를 갖는 에러를 가질 가능성이 있다는 것을 의미한다. 따라서, GOP 내에서, 포지티브 에러 및 네거티브 에러는 크기에 있어서 동등한 경향이 있고, 0 에 대해 대칭이 되는 경향이 있다. 포지티브 에러 및 네거티브 에러가 평균하여 0 에 대해 대칭이고, 또한 포지티브 에러 및 네거티브 에러가 평균하여 크기에 있어서 동등하기 때문에, 이들 에러가 후속 예측 프레임에 전달되어 과대화될 (exaggerated) 가능성은 없다. 이는, 포지티브 크기를 갖는 에러가 또다른 프레임에서 네거티브 크기를 갖는 에러를 제거할 가능성이 있고, 또한 네거티브 크기를 갖는 에러가 또다른 프레임에서 포지티브 크기를 갖는 에러를 제거할 가능성이 있기 때문이다. 그에 따라, 디더링 바이어스 값이 에러를 0 에 대해 대칭이 되게 하는 경향이 있고, 또한 포지티브 에러 및 네거티브 에러를 크기에 있어서 동등하게 하는 경향이 있기 때문에, GOP 전체에 걸쳐 보다 적은 드리프트 에러가 존재할 가능성이 있다. 이러한 이유로, 보다 큰 픽처가 GOP 에 포함될 수 있다. 보다 큰 픽처가 GOP 에 포함될 수 있기 때문에, 전체 비디오 시퀀스는 양호한 압축 레이트를 가질 수도 있다. 마찬가지로, 부호-적응형 바이어스 값을 가산하는 것은, 크기에 있어서 동등한 경향이 있으며 0 에 대해 대칭이 되는 경향이 있는 각 프레임 내의 에러를 야기한다. 그 결과, 이들 에러는 후속 예측 프레임에 전달되어 과대화되지 않는다.
우측-시프트 모듈 (148) 이 계수를 우측-시프팅시킨 이후에, 클리핑 모듈 (150) 은 계수를 픽셀 성분값의 최대 허용가능한 범위로 제한하기 위해서 이 계수를 "클리핑" 할 수도 있다. 예를 들어, 통상적인 JPEG 이미지에 있어서, 컬러 성분값은 -256 내지 255 의 범위에 있을 수도 있다. 계수의 행렬이 270 과 동등한 계수를 포함한 경우, 클리핑 모듈 (150) 은 이 계수를 255 로 감소시킴으로써 이 계수를 최대 허용가능한 범위로 제한한다. 클리핑 모듈 (150) 이 계수의 클리핑을 완료한 이후에, 이들 계수는 픽셀 성분값을 나타낼 수도 있다. 클리핑 모듈 (150) 이 행렬에서의 계수의 클리핑을 완료하는 경우, 클리핑 모듈 (150) 은 클리핑된 계수의 행렬을 출력 모듈 (152) 로 제공할 수도 있다.
출력 모듈 (152) 이 (이하 픽셀 성분값인) 계수의 행렬을 수신하는 경우, 출력 모듈 (152) 은 픽셀 성분값의 행렬을 픽셀 복원 모듈 (50) 로 출력할 수도 있다.
도 7 은 역방향 변환 모듈 (48) 의 예시적인 동작을 도시한 흐름도이다. 초기에, 입력 모듈 (140) 은 역양자화된 계수의 행렬을 수신한다 (170). 입력 모듈 (140) 이 역양자화된 계수의 행렬을 수신하는 경우, 스케일링 모듈 (142) 은 역양자화된 계수의 행렬에서의 각각의 값을 스케일링함으로써, 스케일링된 계수의 행렬을 발생시킬 수도 있다 (172). 예를 들어, 스케일링 모듈 (142) 은, 역양자화된 계수의 행렬에서의 각 계수와 스케일 인수의 행렬에서의 동등한 위치의 값을 승산하는 연산을 수행할 수도 있다.
스케일링 모듈 (142) 이 스케일링된 계수의 행렬을 발생시킨 이후에, 계수 바이어싱 모듈 (144) 은 스케일링된 계수의 행렬의 DC 계수에 대해 중심점 바이어 스 값 및 보완 바이어스 값을 가산함으로써, 바이어싱된 계수의 행렬을 발생시킬 수도 있다 (174). 계수 바이어싱 모듈 (144) 이 바이어싱된 계수의 행렬의 DC 계수에 바이어스 값을 가산한 이후에, 역방향 벡터 변환 모듈 (146) 은, 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (176). 초기에, 행 카운터는 0 으로 설정될 수도 있다. 최대 행 카운터는, 계수의 행렬에서의 행의 수와 동등한 고정값 (static value) 일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 행을 갖는 경우, 최대 행 카운터는 8 과 동등하다.
행 카운터가 최대 행 카운터 미만인 경우에는 (176 의 "예"), 역방향 벡터 변환 모듈 (146) 은 고정 소수점 연산을 이용하여, 행 카운터에 의해 표시된 계수의 행렬의 행 벡터에 대해 1-차원 변환을 적용할 수도 있다 (178). 역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 행 벡터에 대해 변환을 적용하는 경우, 역방향 벡터 변환 모듈 (146) 은 이 계수의 행 벡터에서의 오리지널 계수를 중간 계수의 벡터로 대체할 수도 있다. 역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 행 벡터에 대해 변환을 적용한 이후에, 역방향 벡터 변환 모듈 (146) 은 행 카운터를 증분시킬 수도 있다 (180). 그런 다음, 역방향 벡터 변환 모듈 (146) 은 루프백하여, 다시 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (176).
행 카운터가 최대 행 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (176 의 "아니오"), 역방향 벡터 변환 모듈 (146) 은, 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (182). 초기에, 열 카운터는 0 으로 설정될 수도 있다. 최대 열 카운터는, 계수의 행렬에서의 열의 수와 동등한 고정값일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 열을 포함하는 경우, 최대 열 카운터는 8 과 동등하다.
열 카운터가 최대 열 카운터 미만인 경우에는 (182 의 "예"), 역방향 벡터 변환 모듈 (146) 은 열 카운터에 의해 표시된 중간 계수의 행렬의 열 벡터에 대해 1-차원 변환을 적용할 수도 있다 (184). 역방향 벡터 변환 모듈 (146) 이 중간 계수의 행렬의 열 벡터에 대해 변환을 적용하는 경우, 역방향 벡터 변환 모듈 (146) 은 이 열 벡터에서의 중간 계수를 변환된 계수의 벡터로 대체한다.
역방향 벡터 변환 모듈 (146) 이 이 계수의 행렬의 열 벡터에 대해 변환을 적용한 이후에, 역방향 벡터 변환 모듈 (146) 은 열 카운터를 증분시킬 수도 있다 (186). 그런 다음, 역방향 벡터 변환 모듈 (146) 은 루프백하여, 다시 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (182).
열 카운터가 최대 열 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (182 의 "아니오"), 우측-시프트 모듈 (148) 은 행렬에서의 변환된 계수 각각을 우측-시프팅시킬 수도 있다 (188). 우측-시프트 모듈 (148) 이 계수를 우측-시프팅시키는 경우, 우측-시프트 모듈 (148) 은 특정 개수의 포지션만큼 이 계수를 우측으로 시프팅시킬 수도 있다. 행렬에서의 제 2 중간 계수 각각을 우측-시프팅시킨 결과가 조정된 값의 행렬이다. 우측-시프트 모듈 (148) 이 변환된 계수 각각을 우측-시프팅시킨 이후에, 클리핑 모듈 (150) 은, 조정된 계수가 픽셀 성분값의 적절한 범위 내에 있다는 것을 보증하기 위해서 이 조정된 계수를 클리핑할 수도 있다 (190). 예를 들어, 클리핑 모듈 (150) 은, 조정된 계수가 -256 내지 255 의 범위 내에 있다는 것을 보증하기 위해서 이 조정된 계수를 클리핑할 수도 있다. 클리핑 모듈 (150) 이 조정된 계수의 클리핑을 완료하는 경우, 출력 모듈 (152) 은 그 결과적인 픽셀 성분값의 행렬을 출력할 수도 있다 (192).
도 8 은 순방향 변환 모듈 (26) 의 예시적인 상세를 도시한 블록도이다. 도 8 의 실시예에 예시된 바와 같이, 순방향 변환 모듈 (26) 은, 성분 추출 모듈 (24) 로부터 픽셀 성분값의 행렬을 수신하는 입력 모듈 (210) 을 포함한다. 입력 모듈 (210) 이 픽셀 성분값의 행렬을 수신하는 경우, 입력 모듈 (210) 은 픽셀 성분값의 행렬을 좌측-시프트 모듈 (212) 로 제공할 수도 있다. 좌측-시프트 모듈 (212) 은, 순방향 변환을 수행하는 동안에 순방향 벡터 변환 모듈 (214) 이 이용한 값에 이용된 가수 비트의 수에서 순방향 변환을 수행함으로써 제거된 가수 비트의 수를 뺀 것만큼 픽셀 성분값의 행렬에서의 픽셀 성분값 모두를 좌측으로 시프팅시킬 수도 있다. 예를 들어, 순방향 변환을 수행하는 동안에 값에 10 가수 비트가 이용되고, 순이산 코사인 변환을 수행함으로써 3 가수 비트가 제거되는 경우에는, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 7 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 또다른 실시예에 있어서, 순방향 변환을 수행하는 동안에 값에 3 가수 비트가 이용되고, 순방향 변환을 수행함으로써 3 가수 비트가 제거되는 경우에는, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 0 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다.
좌측-시프트 모듈 (212) 이 픽셀 성분값을 시프팅시킨 이후에, 순방향 벡터 변환 모듈 (214) 은 픽셀 성분값의 행렬에서의 각 열 벡터에 대해 순방향 변환을 적용하여, 중간 값의 행렬을 생성할 수도 있다. 다음에, 순방향 벡터 변환 모듈 (214) 은 중간 값의 행렬에서의 각 행 벡터에 대해 순방향 변환을 적용하여, 변환된 계수의 행렬을 생성할 수도 있다. 순방향 벡터 변환 모듈 (214) 이 벡터에 순방향 변환을 적용하는 경우, 순방향 벡터 변환 모듈 (214) 은 아래의 도 12 에서 설명된 순방향 변환을 적용할 수도 있다. 아래의 도 12 에서 설명된 변환은 도 11 에서 설명된 변환의 역이라는 것에 주목하라.
순방향 벡터 변환 모듈 (214) 이 변환된 계수의 행렬을 생성한 이후에, 스케일링 모듈 (216) 은 변환된 계수의 행렬에서의 각 변환된 계수에 대해 스케일 인수를 적용할 수도 있다. 스케일링 모듈 (216) 은, 역방향 변환 모듈 (48) 에서의 스케일링 모듈 (142) 에 의해 이용된 스케일 인수의 역수를 적용할 수도 있다. 예를 들어, 변환의 효율을 개선하기 위해서 변환으로부터 하나 이상의 값이 인수분해된 경우, 이들 값은 스케일 인수의 행렬의 기초가 될 수도 있다. 변환된 계수의 행렬에서의 계수는, 이들 값과 계수를 승산함으로써 정정될 수도 있다.
라운딩 에러를 감소시키기 위해서, 순방향 변환 모듈 (26) 에서의 계수 바이어싱 모듈 (218) 은 스케일링된 계수의 행렬에서의 계수에 대해 중심점 바이어스 값 및 보완 바이어스 값을 가산할 수도 있다. 스케일링된 계수의 행렬에서의 계수에 대해 부호-적응형 바이어스 값 또는 디더링 바이어스 값을 가산하는 것은, 역방향 변환 모듈 (48) 에서의 계수 바이어싱 모듈 (144) 이 부호-적응형 바이어스 값 또는 디더링 바이어스 값을 가산하는 경우와 유사한 효과를 갖는다. 즉, 계수에 대한 바이어스 값의 가산은 포지티브 에러 및 네거티브 에러로 하여금 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 한다. 이들 에러는, 제 1 크기만큼 스케일링된 계수의 행렬에서의 계수의 제한된 정밀도의 고정 소수점 표현을 우측-시프팅시키는 것으로부터 기인한 값과, 정밀도를 고려하지 않고, 2(제 1 크기) 로 스케일링된 계수의 행렬에서의 계수를 제산하는 것으로부터의 결과 사이의 차이를 나타낸다.
계수 바이어싱 모듈 (218) 이 바이어싱된 계수의 행렬을 발생시킨 이후에, 순방향 변환 모듈 (26) 에서의 우측-시프트 모듈 (220) 은 바이어싱된 계수의 행렬에서의 계수를 우측-시프팅시킴으로써, 출력 계수의 행렬을 발생시킬 수도 있다. 우측-시프트 모듈 (220) 은, 바이어싱된 계수의 행렬의 계수에서의 가수 비트의 수에 변환을 수행함으로써 계수에 부가된 비트의 수를 더한 것만큼 바이어싱된 계수의 행렬에서의 각 계수를 우측-시프팅시킬 수도 있다.
다음의 수학식은, 계수 바이어싱 모듈 (218) 이 부호-적응형 바이어스 값을 가산하는 경우에, 변환된 계수의 행렬에 대한 스케일링 모듈 (216), 계수 바이어싱 모듈 (218), 및 우측-시프트 모듈 (220) 의 영향을 요약하는데:
Figure 112008089582576-pct00031
여기서, v = 0..7, u = 0..7 이고,
Figure 112008089582576-pct00032
는 스케일 인수의 행렬에서의 엔트리이고, F 는 스케일링된 계수의 행렬이고, F' 는 변환된 계수의 행렬이고, P 는 변환된 계수의 행렬에서의 계수의 가수 비트의 수를 나타내고, Q 는 변환을 적용함 으로써 변환된 계수의 행렬에서의 계수에 부가된 비트의 수를 나타낸다.
다음의 수학식은, 계수 바이어싱 모듈 (218) 이 디더링 바이어스 값을 가산하는 경우에, 변환된 계수의 행렬에 대한 스케일링 모듈 (216), 계수 바이어싱 모듈 (218), 및 우측-시프트 모듈 (220) 의 영향을 요약하는데:
Figure 112008089582576-pct00033
여기서, v = 0 … 7, u = 0 … 7 이고,
Figure 112008089582576-pct00034
는 스케일 인수의 행렬에서의 엔트리이고, F 는 스케일링된 계수의 행렬이고, F' 는 변환된 계수의 행렬이다.
스케일링 모듈 (216) 이 스케일링된 계수의 행렬을 발생시킨 이후에, 출력 모듈 (222) 은 이 계수의 행렬을 양자화 모듈 (28) 로 출력할 수도 있다.
도 9 는 순방향 변환 모듈 (26) 의 예시적인 동작을 도시한 흐름도이다. 초기에, 입력 모듈 (210) 은 픽셀 성분값의 행렬을 수신한다 (230). 입력 모듈 (210) 이 픽셀 성분값의 행렬을 수신하는 경우, 좌측-시프트 모듈 (212) 은 픽셀 성분값의 행렬에서의 각각의 값을 좌측-시프팅시킴으로써 조정된 계수의 행렬을 발생시킬 수도 있다 (232). 예를 들어, 좌측-시프트 모듈 (212) 은 계수 모두를 10 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 이 실시예에 있어서, 순방향 벡터 변환 모듈 (214) 이, 수가 분수 부분에서 10 비트를 이용하여 인코딩되는 고정 소수점 연산을 이용할 수도 있기 때문에, 좌측-시프트 모듈 (212) 은 계수 모두를 10 개의 포지션만큼 좌측으로 시프팅시킬 수도 있다. 따라서, 계수를 10 개의 포지션만큼 좌측으로 시프팅시킴으로써, 좌측-시프트 모듈 (212) 은 픽셀 성분값을 10 가수 비트를 갖는 고정 소수점 수로 효과적으로 변환한다.
조정된 계수의 행렬에서의 각 픽셀 성분값을 좌측-시프팅시킨 이후에, 순방향 벡터 변환 모듈 (214) 은, 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (234). 초기에, 열 카운터는 0 으로 설정될 수도 있다. 최대 열 카운터는, 조정된 계수의 행렬에서의 열의 수와 동등한 고정값일 수도 있다. 예를 들어, 조정된 계수의 행렬이 8 개의 열을 갖는 경우, 최대 열 카운터는 8 과 동등하다.
열 카운터가 최대 열 카운터 미만인 경우에는 (234 의 "예"), 순방향 벡터 변환 모듈 (214) 은 열 카운터에 의해 표시된 열 벡터에 대해 1-차원 순방향 변환을 컴퓨팅할 수도 있다 (236). 순방향 벡터 변환 모듈 (214) 이 조정된 계수의 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅하는 경우, 순방향 벡터 변환 모듈 (214) 은 열 벡터에서의 오리지널 조정된 계수를 중간 계수로 대체한다. 순방향 벡터 변환 모듈 (214) 이 조정된 계수의 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅한 이후에, 순방향 벡터 변환 모듈 (214) 은 열 카운터를 증분시킬 수도 있다 (238). 그런 다음, 순방향 벡터 변환 모듈 (214) 은 루프백하여, 다시 열 카운터가 최대 열 카운터 미만인지 여부를 판정할 수도 있다 (234).
열 카운터가 최대 열 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (234 의 "아니오"), 순방향 벡터 변환 모듈 (214) 은, 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (240). 초기에, 행 카운터는 0 으로 설정될 수도 있다. 최대 행 카운터는, 계수의 행렬에서의 행 벡터의 수와 동등한 고정값일 수도 있다. 예를 들어, 계수의 행렬이 8 개의 행을 포함하는 경우, 최대 행 카운터는 8 과 동등하다.
행 카운터가 최대 행 카운터 미만인 경우에는 (240 의 "예"), 순방향 벡터 변환 모듈 (214) 은 행 카운터에 의해 표시된 행 벡터에 대해 1-차원 이산 코사인 변환을 컴퓨팅할 수도 있다 (242). 순방향 벡터 변환 모듈 (214) 이 이미 행렬의 열 벡터에 대해 순방향 변환을 컴퓨팅했기 때문에, 이하 계수의 행렬은 중간 계수를 포함한다. 순방향 벡터 변환 모듈 (214) 이 중간 계수의 행 벡터에 대해 순방향 변환을 컴퓨팅하는 경우, 순방향 벡터 변환 모듈 (214) 은 행 벡터에서의 중간 계수를 변환된 계수로 대체한다.
순방향 벡터 변환 모듈 (214) 이 계수의 행렬의 행 벡터에 대해 이산 코사인 변환을 컴퓨팅한 이후에, 순방향 벡터 변환 모듈 (214) 은 행 카운터를 증분시킬 수도 있다 (244). 그런 다음, 순방향 벡터 변환 모듈 (214) 은 루프백하여, 다시 행 카운터가 최대 행 카운터 미만인지 여부를 판정할 수도 있다 (240).
행 카운터가 최대 행 카운터 미만이 아닌 경우에는 (즉, 이상인 경우에는) (240 의 "아니오"), 스케일링 모듈 (216) 은 변환된 계수의 행렬에서의 각 변환된 계수를 스케일링할 수도 있다 (246). 스케일링 모듈 (216) 이 스케일링된 계수의 행렬을 발생시킨 이후에, 계수 바이어싱 모듈 (218) 은 스케일링된 계수의 행렬에서의 계수에 대해 하나 이상의 바이어스 값을 가산함으로써 바이어싱된 계수의 행렬을 발생시킬 수도 있다 (248). 예를 들어, 계수 바이어싱 모듈 (218) 은 스케일링된 계수의 행렬에서의 각 계수에 대해 중심점 바이어스 값 및 부호-적응형 또는 디더링 보완 바이어스 값을 가산할 수도 있다. 다음에, 우측-시프트 모듈 (220) 은 바이어싱된 계수의 행렬에서의 각 계수를 우측-시프팅시킬 수도 있다 (250). 우측-시프트 모듈 (220) 은, 계수 각각에서의 가수 비트의 수에 변환을 적용함으로써 계수에 부가된 비트의 수를 더한 것만큼 각 계수를 우측-시프팅시킴으로써 조정된 계수의 행렬을 발생시킬 수도 있다. 우측-시프트 모듈 (220) 이 조정된 계수의 행렬을 발생시킨 이후에, 출력 모듈 (222) 은 그 결과적인 조정된 계수의 행렬을 출력할 수도 있다 (252).
도 10 은 제 1 예시적인 1-차원 변환 (260) 을 도시한 도면이다. 도 10 의 실시예에 예시된 바와 같이, 변환 (260) 은 입력값으로서 X0 내지 X7 을 취할 수도 있다. 값 X0 내지 X7 은 입력 계수 행렬의 하나의 행 또는 열의 계수를 나타낼 수도 있다. 변환 (260) 은 값 x0 내지 x7 을 출력할 수도 있다. 값 X0 내지 X7 이 입력 계수 행렬에서의 계수의 행에서의 값인 경우에는, 값 x0 내지 x7 은 중간값의 행을 나타낼 수도 있다. 값 X0 내지 X7 이 계수의 열에서의 값인 경우에는, 값 x0 내지 x7 은 시프팅된 픽셀 성분값의 열을 나타낼 수도 있다. 도 10 의 실시예에 예시된 바와 같이, "+" 심볼을 포위한 원은 가산 연산을 나타내고, "X" 심볼을 포위한 원은 승산 연산을 나타낸다. 문자/숫자 조합은, 일 값이 승산되는 값을 나타낸다. 예를 들어, 라인 x2 상에서, "A1" 심볼이 "X" 심볼을 포위한 원 위에 위치된다. 이는, 라인 X2 상의 값이 값 A1 과 승산된다는 것을 나타낸다.
변환 (260) 은 "버터플라이 구조 연산" 의 세트를 포함한다. "버터플라이 구조 연산" 은 소프트웨어 또는 하드웨어 구조일 수도 있는데, 여기서 제 1 입력값 x 와 제 1 인수 C 를 승산하여 제 1 중간값을 생성하고, 제 2 입력값 y 와 제 2 인수 S 를 승산하여 제 2 중간값을 생성한 다음, 제 1 중간값과 제 2 중간값을 가산함으로써, 제 1 출력값 u 가 계산된다. 이러한 보다 복잡한 "버터플라이 구조 연산" 에 있어서, 제 2 입력값 y 와 제 1 인수 C 를 승산하여 제 3 중간값을 생성하고, 제 1 입력값 x 와 제 2 인수 S 를 승산하여 제 4 중간값을 생성한 다음, 제 4 중간값으로부터 제 3 중간값을 감산함으로써, 제 2 출력값 v 가 계산될 수도 있다. 다음의 공식은, "버터플라이 구조 연산" 의 수학적 결과를 요약한다:
Figure 112008089582576-pct00035
버터플라이 구조 연산 (264) 은 변환 (260) 에 이용된 일 버터플라이 구조 연산을 나타낸다. 버터플라이 구조 연산은, 제 1 입력값으로부터 제 2 입력값으로 및 제 2 입력값으로부터 제 1 입력값으로의 값의 크로스오버 때문에 버터플라이 구조 연산이 2 개의 "날개" 를 갖는 것처럼 보인다는 사실로 인해 이러한 명칭을 갖는다.
변환 (260) 에 이용된 바와 같이, 제 1 인수 C 및 제 2 인수 S 는 무리수일 수도 있다. 예를 들어, C 는
Figure 112008089582576-pct00036
와 동등할 수도 있고, S 는
Figure 112008089582576-pct00037
와 동등할 수도 있다. 역방향 벡터 변환 모듈 (146) 이 16-비 트 레지스터에서 고정 소수점 연산을 이용할 수도 있기 때문에, 또한 C 및 S 가 빈번하게 무리값이기 때문에, 입력값 x 및 y 와 C 및 S 를 승산하는 것은 계산상 불편할 수도 있다. 이러한 이유로, 역방향 벡터 변환 모듈 (146) 은 C 및 S 에 대한 유리수 근사치를 이용할 수도 있다. 이들 정수 근사치는 (C'/2j) 및 (S'/2k) 의 형태일 수도 있고, 여기서 C' 및 S' 는 C 및 S 의 "정수화 (integerized)" 버전이고, j 및 k 는 정수이다. 예를 들어,
Figure 112008089582576-pct00038
이라 하자. 이 실시예에 있어서, 역방향 벡터 변환 모듈 (146) 은, C' = 2217 및 j = 12 를 이용하여
Figure 112008089582576-pct00039
에 근사할 수도 있는데, 그 이유는 2217/212 = 0.541259766 이고,
Figure 112008089582576-pct00040
이기 때문이다. 이 실시예에 있어서, 0.5411961 이 대략적으로 0.541259766 과 동등하다는 것은 명백하다. 따라서, 다음의 형태:
Figure 112008089582576-pct00041
의 계산은, 다음의 형태:
Figure 112008089582576-pct00042
의 계산으로 대체될 수도 있다.
이들 계산을 보다 단순화하기 위해서, 2j 및 2k 에 의한 제산 연산은 j 및 k 개의 포지션만큼 비트 단위의 (bitwise) 우측 시프트 연산으로 대체될 수도 있는데, 이는 ">>" 을 이용하여 다음과 같이 표시된다:
Figure 112008089582576-pct00043
그러나, DC 계수에 바이어스 값을 가산하는 것에 관하여 전술한 바와 같이, 제산 연산을 비트 단위의 우측 시프트 연산으로 대체하는 것은, u' 와 u'' 및 v' 와 v'' 사이의 차이를 야기할 수도 있다. 이들 계산에서 항에 중심점 바이어스 값을 가산하는 것은, u' 와 u'' 및 v' 와 v'' 사이의 차이를 감소시킬 수도 있다. 중심점 바이어스 값이 가산되는 경우, 계산은 다음의 형태를 취할 수도 있다:
Figure 112008089582576-pct00044
Figure 112008089582576-pct00045
중심점 바이어스 값의 가산이 u 및 u'' 와 v 및 v'' 사이의 차이보다 작은 u 및 u''' 와 v 및 v''' 사이의 차이를 야기할 수도 있지만, 중심점 바이어스 값의 가산은 버터플라이 구조 연산에 대해 계산 복잡도를 부가할 수도 있다. 또한, 중심점 바이어스 값의 가산은, 16-비트 레지스터에서 고정 소수점 연산을 이용하는 경우에 u''' 및 v''' 의 계산을 비실용적으로 할 수도 있다. 중심점 바이어스 값의 가산이 우측 시프트 이전에 일어나고, 그 결과 레지스터 오버플로우를 야기할 수도 있기 때문에, 중심점 바이어스 값의 가산은 u''' 및 v''' 의 계산을 비실용적으로 할 수도 있다.
Figure 112008089582576-pct00046
Figure 112008089582576-pct00047
사이의 평균 차이는 대략 0 이다. 다시 말하면, 값 x 및 y 모두에 대한 값 (v'' - v) 모두의 평균은 대략 0 과 동등하다. 또한,
Figure 112008089582576-pct00048
Figure 112008089582576-pct00049
사이의 평균 차이도 대략 0 이다. 이는, v'' 및 v''' 가 항상 대략 동등하기 때문이다. j 가 k 와 동등한 경우, 중심점 바이어스 값이, 감산에 의해 제거되기 때문에, v'' 및 v''' 는 항상 대략 동등하고:
Figure 112008089582576-pct00050
여기서, m 은 중심점 바이어스 값을 나타낸다. 이 실시예가 예시된 바와 같이, j 가 k 와 동등한 경우에 (m/2j) 로부터 (m/2k) 를 감산하는 것은 중심점 바이어스값 m 을 제거한다. v 와 v'' 사이의 평균 차이가 대략 0 이기 때문에, 역방향 벡터 변환 모듈 (146) 은, 고의로 v''' 대신에 v'' 을 계산함으로써 발생된 값으로 포지티브 또는 네거티브 바이어스를 도입하지 않고, 또한 v'' 및 v''' 가 대략 동등하기 때문에, 역방향 벡터 변환 모듈 (146) 은 v''' 대신에 v'' 을 이용할 수도 있다.
또한,
Figure 112008089582576-pct00051
Figure 112008089582576-pct00052
Figure 112008089582576-pct00053
사이의 평균 차이도 대략 0 과 동등하다. 동시에,
Figure 112008089582576-pct00054
Figure 112008089582576-pct00055
사이의 차이는 대략 0 과 동등하지는 않다. 오히려, u 와 u'' 사이의 평균 차이는 -1/2 이다. 따라서, u'' 및 u''' 는 대략 동등하지 않다. j 가 k 와 동등한 경우에도, 중심점 바이어스 값이 제거되지 않기 때문에, u'' 및 u''' 는 대략 동등하지 않다:
Figure 112008089582576-pct00056
u'' 가 u''' 와 대략 동등하지 않기 때문에, u'' 가 u''' 대신에 이용되지 않을 수도 있다. u''' 대신에 u'' 를 이용하려는 시도는, u 와의 상당한 차이를 야기할 수도 있다.
모든 계산에 중심점 바이어스 값을 가산하는 것과 연관된 복잡도 및 오버플로우 이슈를 회피하기 위해서, 다음의 공식이 u''' 및 u'' 대신에 이용될 수도 있다:
Figure 112008089582576-pct00057
u'''' 에서 S' 의 음수 버전이 이용되고,
Figure 112008089582576-pct00058
이 감산된다는 것을 제외하고, u'''' 은 u'' 와 동등하다. u''' 와 같이, u'''' 은 중심점 바이 어스 값을 가산하지 않는다. 그러나, u''' 와 달리, u'''' 와 u 사이의 차이는 약 0 을 중심으로 한다. u'''' 와 u 사이의 차이가 약 0 을 중심으로 하기 때문에, 라운딩 에러는 후속 버터플라이 구조 연산의 적용을 통해 확대되지 않는다. 이러한 이유로, 역방향 벡터 변환 모듈 (146) 은 u'''' 을 이용하여, 버터플라이 구조 연산에서 u 를 계산할 수도 있다. 이러한 이유로, j 가 k 와 동등한 경우, 변환 (260) 을 적용하기 위해서 역방향 벡터 변환 모듈 (146) 에 의해 이용된 버터플라이 구조 연산은 다음의 형태를 가질 수도 있다:
Figure 112008089582576-pct00059
그러므로, 이러한 타입의 버터플라이 구조 연산에 의해 발생된 결과와, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과 사이의 차이는 약 0 을 중심으로 하며, 1 이하의 포지티브 또는 네거티브 크기를 갖는다.
대안적으로, j 가 k 와 동등한 경우, 역방향 벡터 변환 모듈 (146) 은, 버터플라이 구조 연산의 말단으로 우측 시프트가 연기된 버터플라이 구조 연산을 이용할 수도 있다:
Figure 112008089582576-pct00060
Figure 112008089582576-pct00061
버터플라이 구조 연산의 말단으로의 우측 시프트의 연기는, 버터플라이 구조 연산을 수행하는데 필요한 시프트 연산의 총 수를 감소시킬 수도 있고, 정확성을 향상시킬 수도 있다. 또한, 가장 최신의 16-비트 단일 명령 복수 데이터 ("SIMD") 프로세서 및 디지털 신호 프로세서 상에서 이용가능한 4-방향 승산-누산 명령들이 효율적으로
Figure 112008089582576-pct00062
Figure 112008089582576-pct00063
를 컴퓨팅하는데 이용될 수도 있다.
승산 연산은, 가산, 감산, 및 비트 단위의 시프트 연산에 비해 계산상 고비용이 소요될 수도 있다. 이러한 이유로, 승산 연산과 동일한 효과를 갖는 일련의 가산, 감산, 및 비트 단위의 시프트 연산을 이용하는 것이 보다 단순할 수도 있다. 예를 들어, C' = 2217 이라고 가정한다. 이 실시예에 있어서,
Figure 112008089582576-pct00064
은 다음의 단계로 대체될 수도 있다:
Figure 112008089582576-pct00065
이 실시예에 있어서, x2, x3 및 x4 는 중간값이다. 이를 예시하기 위해서, x = 1 인 실시예를 고려하라:
Figure 112008089582576-pct00066
이 실시예에 있어서, 1*2217 = 2217 이고, x =1 인 경우에 이 시퀀스 연산에 의해 생성된 값은 2217 이다.
다음의 표는, 역방향 벡터 변환 모듈 (146) 이 상수 인수 A1, A2, B1, B2, C1, C2, D1 및 D2 에 이용할 수도 있는 정수값 근사치의 예시적인 세트를 요약한다.
Figure 112008089582576-pct00067
변환 (260) 에 이용된 예시적인 상수 인수 근사치
표 1 에 있어서, "정수값" 열에서의 값은, 212 = 4096 으로 제산되는 경우에 "오리지널 값" 열에서의 값에 근사한다. 예를 들어, 2217/4096 = 0.541259766 이고,
Figure 112008089582576-pct00068
이다. 유사하게, 5352/4096 = 1.30664062 이고,
Figure 112008089582576-pct00069
이다. "다음의 곱을 컴퓨팅하기 위한 알고리즘" 열에서의 공식은, 역방향 벡터 변환 모듈 (146) 이 대응하는 정수값에 의한 승산 연산 대신에 이용할 수도 있는 방법을 요약한다.
도 11 은 제 2 예시적인 변환 (270) 을 도시한 도면이다. 도 10 에서와 같이, 값 X0, X1, X2, X3, X4, X5, X6, 및 X7 은 입력 계수를 나타내고, 값 x0, x1, x2, x3, x4, x5, x6, 및 x7 은 출력값을 나타낸다. "+" 심볼을 포위한 원 다음에 라인과 연관된 값은, 이 원으로 향하는 화살표와 연관된 값을 가산한 결과이다. "x" 심볼을 포위한 원 다음에 라인과 연관된 값은, 이 원을 통과하는 라인과 연관된 값과, 이 원의 옆에 위치된 계수를 승산한 결과이다. 화살표 옆의 심볼 "-" 은 이 화살표와 연관된 값의 음수화 (negation) 를 나타낸다. 예를 들어, 값 "10" 이 "-" 심볼 이전에 화살표와 연관되는 경우, 값 "-10" 이 "-" 심볼 이후에 이 화살표와 연관된다. 또한, 감산 및 음수화된 계수를 이용하여 라운딩 에러를 감소시키는 전술한 기술이 변환 (270) 에서 이용될 수도 있다는 것이 주목되어야 한다.
변환 (270) 에 있어서,
Figure 112008089582576-pct00070
,
Figure 112008089582576-pct00071
,
Figure 112008089582576-pct00072
,
Figure 112008089582576-pct00073
,
Figure 112008089582576-pct00074
, 및
Figure 112008089582576-pct00075
의 값이 유리 분수를 이용하여 근사될 수도 있다. 예를 들어,
Figure 112008089582576-pct00076
,
Figure 112008089582576-pct00077
,
Figure 112008089582576-pct00078
,
Figure 112008089582576-pct00079
,
Figure 112008089582576-pct00080
, 및
Figure 112008089582576-pct00081
의 값은 아래의 표 2 에 열거된 정수 근사치를 이용하여 근사될 수도 있다.
Figure 112008089582576-pct00082
변환 (270) 에 이용된 예시적인 상수값 근사치
표 2 에 있어서, "정수 근사치" 열에서의 값은, "오리지널 값" 열에서의 값의 정수화 버전을 나타낸다. 예를 들어,
Figure 112008089582576-pct00083
이고, 8867/16384 = 0.54119873046875 이다. 표 2 의 "다음의 곱을 컴퓨팅하기 위한 알고리즘" 열에서의 수학식은, 역방향 벡터 변환 모듈 (146) 이 "정수 근사치" 열에서의 값에 의한 승산 연산 대신에 이용할 수도 있는 알고리즘을 나타낸다.
도 12 는 순방향 벡터 변환 모듈 (214) 에 의해 이용될 수도 있는 예시적인 변환 (280) 을 도시한 흐름도이다. 도 12 에 있어서, 값 X0, X1, X2, X3, X4, X5, X6, 및 X7 은 출력 계수를 나타내고, 값 x0, x1, x2, x3, x4, x5, x6, 및 x7 은 입력값을 나타낸다. 또한, 감산 및 음수화된 계수를 이용하여 라운딩 에러를 감소시키는 전술한 기술이 변환 (280) 에서 이용될 수도 있다는 것이 주목되어야 한다.
도 12 의 실시예에 있어서,
Figure 112008089582576-pct00084
,
Figure 112008089582576-pct00085
,
Figure 112008089582576-pct00086
,
Figure 112008089582576-pct00087
,
Figure 112008089582576-pct00088
, 및
Figure 112008089582576-pct00089
의 값은 유리 분수를 이용하여 근사될 수도 있다. 예를 들어,
Figure 112008089582576-pct00090
,
Figure 112008089582576-pct00091
,
Figure 112008089582576-pct00092
,
Figure 112008089582576-pct00093
,
Figure 112008089582576-pct00094
, 및
Figure 112008089582576-pct00095
의 값은 표 2 에 열거된 정수 근사치를 이용하여 근사될 수도 있다.
본 명세서에 기재된 기술은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 모듈 또는 컴포넌트로서 기재된 임의의 특징은 집적 논리 디바이스에 함께 또는 상호운용가능한 이산 논리 디바이스로서 개별적으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이들 기술은, 실행시, 전술한 방법 중 하나 이상을 수행하는 명령들을 포함한 컴퓨터 판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 매체는, 포장재를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 매체는, SDRAM (Synchronous Dynamic RAM) 과 같은 RAM (Random Access Memory), ROM (Read Only Memory), NVRAM (Non-Volatile RAM), EEPROM (Electrically Erasable Programmable ROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수도 있다. 부가적으로 또는 대안적으로, 이들 기술은, 명령들 또는 데이터 구조체의 형태로 코드를 반송 또는 통신하며, 컴퓨터에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
코드는, 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 다른 등가의 집적 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수도 있다. 따라서, 본 명세서에 이용된 바와 같은 "프로세서" 라는 용어는, 임의의 전술한 구조체 또는 본 명세서에 기재된 기술의 구현에 적합한 임의의 다른 구조체를 언급할 수도 있다. 또한, 몇몇 양태에 있어서, 본 명세서에 기재된 기능성은, 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈이나 하드웨어 모듈 내에 제공될 수도 있고, 또는 결합된 비디오 인코더-디코더 (CODEC) 에 통합될 수도 있다.
본 발명의 각종 실시형태가 전술되었다. 이들 실시형태 및 다른 실시형태는 다음의 특허청구범위의 범위 내에 있다.

Claims (61)

  1. 역이산 코사인 변환의 계산 방법으로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 단계로서, 상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들인, 상기 일련의 버터플라이 구조 연산들을 이용하는 단계; 및
    미디어 프리젠테이션 유닛으로 하여금 상기 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 출력하도록 하는 단계를 포함하고,
    상기 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며,
    상기 역이산 코사인 변환의 계산 방법은,
    입력 계수들의 행렬에서의 각 계수를 스케일링함으로써, 스케일링된 계수들의 행렬을 발생시키는 단계;
    상기 스케일링된 계수들의 행렬의 DC 계수에 대해 하나 이상의 바이어스 값들을 가산함으로써, 상기 소스 계수들의 벡터를 포함하는 바이어싱된 계수들의 행렬을 발생시키는 단계;
    상기 바이어싱된 계수들의 행렬에서의 각 행 벡터에 대해 상기 변환을 적용하는데 고정 소수점 수들에 대해 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 중간 계수들의 행렬을 발생시키는 단계;
    상기 중간 계수들의 행렬에서의 각 열 벡터에 대해 상기 변환을 적용하는데 고정 소수점 수들에 대해 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 변환된 계수들의 행렬을 발생시키는 단계; 및
    제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들을 우측-시프팅시킴으로써, 픽셀 성분값들의 행렬을 발생시키는 단계를 더 포함하는, 역이산 코사인 변환의 계산 방법.
  2. 역이산 코사인 변환의 계산 방법으로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 단계로서, 상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들인, 상기 일련의 버터플라이 구조 연산들을 이용하는 단계를 포함하고,
    상기 일련의 버터플라이 구조 연산들을 이용하는 단계는,
    Figure 112010023831237-pct00222
    의 형태의 버터플라이 구조 연산을 수행하는 단계를 포함하고,
    여기서, u 및 v 는 결과적인 고정 소수점 수들이고,
    C, S, k 및 k' 는 상수 정수들이고,
    x 및 y 는 고정 소수점 변수들이고,
    Figure 112010023831237-pct00223
    Figure 112010023831237-pct00224
    은 무리 상수들의 유리수 근사치들인, 역이산 코사인 변환의 계산 방법.
  3. 제 2 항에 있어서,
    상기 소스 계수들의 벡터는, 8 개의 계수들 x0, x1, x2, x3, x4, x5, x6 및 x7 로 구성되고,
    상기 변환된 계수들의 벡터는, 8 개의 계수들 z0, z1, z2, z3, z4, z5, z6 및 z7 로 구성되고,
    상기 버터플라이 구조 연산을 수행하는 단계는,
    x = x0, y = x4, C = 1, S = 1, u = x0', 및 v = x4' 인 제 1 버터플라이 구조 연산을 수행하는 단계;
    x = x2, y = x6, C =
    Figure 112010023831237-pct00225
    , S =
    Figure 112010023831237-pct00226
    , u = x6', 및 v = x2' 인 제 2 버터플라이 구조 연산을 수행하는 단계;
    x = x7, y = x1, C = 1, S = 1, u = x7', 및 v = x1' 인 제 3 버터플라이 구조 연산을 수행하는 단계;
    x =
    Figure 112010023831237-pct00227
    , y = x5, C = 1, S = 1, u = x1'', 및 v = x5' 인 제 4 버터플라이 구조 연산을 수행하는 단계;
    x =
    Figure 112010023831237-pct00228
    , y = x3, C = 1, S = 1, u = x7'', 및 v = x3' 인 제 5 버터플라이 구조 연산을 수행하는 단계;
    x = x0', y = x6', C = 1, S = 1, u = x0'', 및 v = x6'' 인 제 6 버터플라이 구조 연산을 수행하는 단계;
    x = x4', y = x2', C = 1, S = 1, u = x4'', 및 v = x2'' 인 제 7 버터플라이 구조 연산을 수행하는 단계;
    x = x1'', y = x7'', C =
    Figure 112010023831237-pct00229
    , S =
    Figure 112010023831237-pct00230
    , u = x1''', 및 v = x7''' 인 제 8 버터플라이 구조 연산을 수행하는 단계;
    x = x3', y = x5', C =
    Figure 112010023831237-pct00231
    , S =
    Figure 112010023831237-pct00232
    , u = x5'', 및 v = x3'' 인 제 9 버터플라이 구조 연산을 수행하는 단계;
    x = x0'', y = x7''', C = 1, S = 1, u = z0, 및 v = z7 인 제 10 버터플라이 구조 연산을 수행하는 단계;
    x = x4'', y = x5'', C = 1, S = 1, u = z1, 및 v = z6 인 제 11 버터플라이 구조 연산을 수행하는 단계;
    x = x2'', y = x3'', C = 1, S = 1, u = z2, 및 v = z5 인 제 12 버터플라이 구조 연산을 수행하는 단계; 및
    x = x6'', y = x1''', C = 1, S = 1, u = z3, 및 v = z4 인 제 13 버터플라이 구조 연산을 수행하는 단계를 포함하는, 역이산 코사인 변환의 계산 방법.
  4. 제 3 항에 있어서,
    Figure 112010023831237-pct00233
    ,
    Figure 112010023831237-pct00234
    ,
    Figure 112010023831237-pct00235
    ,
    Figure 112010023831237-pct00236
    ,
    Figure 112010023831237-pct00237
    , 및
    Figure 112010023831237-pct00238
    는 각각 무리값들
    Figure 112010023831237-pct00239
    ,
    Figure 112010023831237-pct00240
    ,
    Figure 112010023831237-pct00241
    ,
    Figure 112010023831237-pct00242
    ,
    Figure 112010023831237-pct00243
    , 및
    Figure 112010023831237-pct00244
    의 근사치들인, 역이산 코사인 변환의 계산 방법.
  5. 제 4 항에 있어서,
    Figure 112010023831237-pct00245
    = 8867/16384,
    Figure 112010023831237-pct00246
    = 21407/16384,
    Figure 112010023831237-pct00247
    = 5681/4096,
    Figure 112010023831237-pct00248
    = 565/2048,
    Figure 112010023831237-pct00249
    = 9633/8192,
    Figure 112010023831237-pct00250
    = 12873/16384 인, 역이산 코사인 변환의 계산 방법.
  6. 제 2 항에 있어서,
    상기 일련의 버터플라이 구조 연산들을 이용하는 단계는, 상기 일련의 버터플라이 구조 연산들에서 승산 연산들을 수행함으로써 생기는 값들에 근사하는 결과적인 값들을 생성하는 일련의 시프트, 가산, 및 감산 연산들을 이용하는 단계를 포함하는, 역이산 코사인 변환의 계산 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 바이어싱된 계수들의 행렬을 발생시키는 단계는, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 중심점 바이어스 값을 가산하는 단계를 포함하고,
    상기 중심점 바이어스 값은 2(P+T-1) 과 동등하고, 여기서 P 는 상기 제 1 크기와 동등하고, T 는 상기 변환을 수행함으로써 부가된 비트들의 수인, 역이산 코사인 변환의 계산 방법.
  9. 제 8 항에 있어서,
    상기 바이어싱된 계수들의 행렬을 발생시키는 단계는, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 보완 바이어스 값을 가산하는 단계를 포함하고,
    상기 DC 계수에 대한 상기 보완 바이어스 값의 가산은, 포지티브 에러들 및 네거티브 에러들로 하여금, 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 하고,
    상기 포지티브 에러들 및 네거티브 에러들은, 상기 제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들로서 제한된 정밀도를 가지는 고정 소수점으로 표현된 계수들을 우측-시프팅시키는 것으로부터 기인한 값들과, 정밀도를 고려하지 않고, 2P (여기서, P 는 상기 제 1 크기와 동등함) 로 상기 변환된 계수들의 행렬에서의 계수들을 제산하는 것으로부터의 결과들 사이의 차이들을 나타내는, 역이산 코사인 변환의 계산 방법.
  10. 제 9 항에 있어서,
    상기 보완 바이어스 값은, 상기 DC 계수가 음수인 경우에는 -1 과 동등하고, 상기 DC 계수가 음수가 아닌 경우에는 0 과 동등한, 역이산 코사인 변환의 계산 방법.
  11. 제 9 항에 있어서,
    의사 랜덤에 기초하여, -1 또는 0 중 어느 하나와 동등한 값을 선택하는 단계를 더 포함하고,
    상기 DC 계수에 대해 보완 바이어스 값을 가산하는 단계는, 상기 선택된 값을 가산하는 단계를 포함하는, 역이산 코사인 변환의 계산 방법.
  12. 제 1 항에 있어서,
    상기 스케일링된 계수들의 행렬을 발생시키는 단계는, 제 2 크기만큼 상기 입력 계수들의 행렬에서의 각 계수를 좌측-시프팅시키는 단계를 포함하고,
    상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용하는 단계는, 상기 변환된 계수들의 행렬에서의 각 계수로 하여금 제 3 크기만큼 측정된 정밀도의 추가의 비트들의 수를 포함하도록 하고,
    상기 제 1 크기는 상기 제 2 크기에 상기 제 3 크기를 더한 크기와 동등한, 역이산 코사인 변환의 계산 방법.
  13. 제 12 항에 있어서,
    상기 제 2 크기는, 상기 변환을 적용하는 동안에 이용된 상기 고정 소수점 수들의 가수 비트들의 수와 동등한, 역이산 코사인 변환의 계산 방법.
  14. 제 13 항에 있어서,
    상기 제 2 크기는 3 이고,
    상기 입력 계수들의 행렬이 주어지는 경우, 상기 픽셀 성분값들은 IEEE (Institute of Electrical and Electronics Engineers) 1180 표준의 정밀도 요건들을 만족시키는, 역이산 코사인 변환의 계산 방법.
  15. 제 1 항에 있어서,
    상기 픽셀 성분값들의 행렬에서의 픽셀 성분값들을 포함하는 픽셀들을 구성하는 단계; 및
    디스플레이 유닛으로 하여금 상기 픽셀들을 디스플레이하도록 하는 단계를 더 포함하는, 역이산 코사인 변환의 계산 방법.
  16. 제 1 항에 있어서,
    상기 고정 소수점 수들은 16-비트 고정 소수점 수들인, 역이산 코사인 변환의 계산 방법.
  17. 역이산 코사인 변환의 계산을 위한 디바이스로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 역방향 변환 모듈을 포함하고,
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    미디어 프리젠테이션 유닛은, 상기 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 프리젠테이션할 수 있고,
    상기 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며,
    상기 역이산 코사인 변환의 계산 디바이스는,
    입력 계수들의 행렬에서의 각 계수를 스케일링함으로써, 스케일링된 계수들의 행렬을 발생시키는 스케일링 모듈;
    상기 스케일링된 계수들의 행렬의 DC 계수에 대해 하나 이상의 바이어스 값들을 가산함으로써, 상기 소스 계수들의 벡터를 포함하는 바이어싱된 계수들의 행렬을 발생시키는 계수 바이어싱 모듈로서, 상기 역방향 변환 모듈은, 상기 바이어싱된 계수들의 행렬에서의 각 행 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 중간 계수들의 행렬을 발생시키고, 또한 상기 역방향 변환 모듈은, 상기 중간 계수들의 행렬에서의 각 열 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 변환된 계수들의 행렬을 발생시키는, 상기 계수 바이어싱 모듈; 및
    제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들을 우측-시프팅시킴으로써, 픽셀 성분값들의 행렬을 발생시키는 우측-시프트 모듈을 더 포함하고,
    또는, 상기 중간 계수들의 행렬을 발생시키거나 상기 변환된 계수들의 행렬을 발생시키는 상기 역방향 변환 모듈은, 상기 소스 계수들의 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  18. 역이산 코사인 변환의 계산을 위한 디바이스로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 역방향 변환 모듈을 포함하고,
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    상기 역방향 변환 모듈에 의해 수행되는 상기 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산은,
    Figure 112010023831237-pct00251
    의 형태이고,
    여기서, u 및 v 는 결과적인 고정 소수점 수들이고,
    C, S, k 및 k' 는 상수 정수들이고,
    x 및 y 는 고정 소수점 변수들이고,
    Figure 112010023831237-pct00252
    Figure 112010023831237-pct00253
    은 무리 상수들의 유리수 근사치들인, 역이산 코사인 변환의 계산을 위한 디바이스.
  19. 제 18 항에 있어서,
    상기 소스 계수들의 벡터는, 8 개의 계수들 x0, x1, x2, x3, x4, x5, x6 및 x7 로 구성되고,
    상기 변환된 계수들의 벡터는, 8 개의 계수들 z0, z1, z2, z3, z4, z5, z6 및 z7 로 구성되고,
    상기 역방향 변환 모듈은,
    x = x0, y = x4, C = 1, S = 1, u = x0', 및 v = x4' 인 제 1 버터플라이 구조 연산을 수행하고;
    x = x2, y = x6, C =
    Figure 112010023831237-pct00254
    , S =
    Figure 112010023831237-pct00255
    , u = x6', 및 v = x2' 인 제 2 버터플라이 구조 연산을 수행하고;
    x = x7, y = x1, C = 1, S = 1, u = x7', 및 v = x1' 인 제 3 버터플라이 구조 연산을 수행하고;
    x =
    Figure 112010023831237-pct00256
    , y = x5, C = 1, S = 1, u = x1'', 및 v = x5' 인 제 4 버터플라이 구조 연산을 수행하고;
    x =
    Figure 112010023831237-pct00257
    , y = x3, C = 1, S = 1, u = x7'', 및 v = x3' 인 제 5 버터플라이 구조 연산을 수행하고;
    x = x0', y = x6', C = 1, S = 1, u = x0'', 및 v = x6'' 인 제 6 버터플라이 구조 연산을 수행하고;
    x = x4', y = x2', C = 1, S = 1, u = x4'', 및 v = x2'' 인 제 7 버터플라이 구조 연산을 수행하고;
    x = x1'', y = x7'', C =
    Figure 112010023831237-pct00258
    , S =
    Figure 112010023831237-pct00259
    , u = x1''', 및 v = x7''' 인 제 8 버터플라이 구조 연산을 수행하고;
    x = x3', y = x5', C =
    Figure 112010023831237-pct00260
    , S =
    Figure 112010023831237-pct00261
    , u = x5'', 및 v = x3'' 인 제 9 버터플라이 구조 연산을 수행하고;
    x = x0'', y = x7''', C = 1, S = 1, u = z0, 및 v = z7 인 제 10 버터플라이 구조 연산을 수행하고;
    x = x4'', y = x5'', C = 1, S = 1, u = z1, 및 v = z6 인 제 11 버터플라이 구조 연산을 수행하고;
    x = x2'', y = x3'', C = 1, S = 1, u = z2, 및 v = z5 인 제 12 버터플라이 구조 연산을 수행하고; 및
    x = x6'', y = x1''', C = 1, S = 1, u = z3, 및 v = z4 인 제 13 버터플라이 구조 연산을 수행함으로써, 상기 일련의 버터플라이 구조 연산들을 수행하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  20. 제 19 항에 있어서,
    Figure 112010023831237-pct00262
    ,
    Figure 112010023831237-pct00263
    ,
    Figure 112010023831237-pct00264
    ,
    Figure 112010023831237-pct00265
    ,
    Figure 112010023831237-pct00266
    , 및
    Figure 112010023831237-pct00267
    는 각각 무리값들
    Figure 112010023831237-pct00268
    ,
    Figure 112010023831237-pct00269
    ,
    Figure 112010023831237-pct00270
    ,
    Figure 112010023831237-pct00271
    ,
    Figure 112010023831237-pct00272
    , 및
    Figure 112010023831237-pct00273
    의 근사치들인, 역이산 코사인 변환의 계산을 위한 디바이스.
  21. 제 20 항에 있어서,
    Figure 112010023831237-pct00274
    = 8867/16384,
    Figure 112010023831237-pct00275
    = 21407/16384,
    Figure 112010023831237-pct00276
    = 5681/4096,
    Figure 112010023831237-pct00277
    = 565/2048,
    Figure 112010023831237-pct00278
    = 9633/8192,
    Figure 112010023831237-pct00279
    = 12873/16384 인, 역이산 코사인 변환의 계산을 위한 디바이스.
  22. 제 19 항에 있어서,
    상기 역방향 변환 모듈은, 상기 일련의 버터플라이 구조 연산들에서 승산 연산들을 수행함으로써 생기는 값들에 근사하는 결과적인 값들을 생성하는 일련의 시프트, 가산, 및 감산 연산들을 이용하여, 상기 일련의 버터플라이 구조 연산들을 수행하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  23. 삭제
  24. 제 17 항에 있어서,
    상기 계수 바이어싱 모듈은, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 중심점 바이어스 값을 가산하고,
    상기 중심점 바이어스 값은 2(P+T-1) 과 동등하고, 여기서 P 는 상기 제 1 크기와 동등하고, T 는 상기 변환을 수행함으로써 부가된 비트들의 수인, 역이산 코사인 변환의 계산을 위한 디바이스.
  25. 제 17 항에 있어서,
    상기 계수 바이어싱 모듈은, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 보완 바이어스 값을 가산하고,
    상기 DC 계수에 대한 상기 보완 바이어스 값의 가산은, 포지티브 에러들 및 네거티브 에러들로 하여금, 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 하고,
    상기 포지티브 에러들 및 네거티브 에러들은, 상기 제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들로서 제한된 정밀도를 가지는 고정 소수점으로 표현된 계수들을 우측-시프팅시키는 것으로부터 기인한 값들과, 정밀도를 고려하지 않고, 2P (여기서, P 는 상기 제 1 크기와 동등함) 로 상기 변환된 계수들의 행렬에서의 계수들을 제산하는 것으로부터의 결과들 사이의 차이들을 나타내는, 역이산 코사인 변환의 계산을 위한 디바이스.
  26. 제 25 항에 있어서,
    상기 보완 바이어스 값은, 상기 DC 계수가 음수인 경우에는 -1 과 동등하고, 상기 DC 계수가 음수가 아닌 경우에는 0 과 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  27. 제 25 항에 있어서,
    상기 계수 바이어싱 모듈은, 의사 랜덤에 기초하여, -1 또는 0 중 어느 하나와 동등한 값을 선택하고,
    상기 계수 바이어싱 모듈은, 상기 선택된 값을 상기 보완 바이어스 값으로서 가산하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  28. 제 17 항에 있어서,
    상기 스케일링 모듈은, 제 2 크기만큼 상기 입력 계수들의 행렬에서의 각 계수를 좌측-시프팅시킴으로써, 상기 입력 계수들의 행렬에서의 각 계수를 스케일링하고,
    상기 역방향 변환 모듈은, 상기 변환된 계수들의 행렬에서의 각 계수로 하여금 제 3 크기만큼 측정된 정밀도의 추가의 비트들의 수를 포함하도록 하고,
    상기 제 1 크기는 상기 제 2 크기에 상기 제 3 크기를 더한 크기와 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  29. 제 28 항에 있어서,
    상기 제 2 크기는, 상기 변환을 적용하는 동안에 이용된 상기 고정 소수점 수들의 가수 비트들의 수와 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  30. 역이산 코사인 변환의 계산을 위한 디바이스로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 수단을 포함하고,
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    미디어 프리젠테이션 유닛은, 상기 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 프리젠테이션할 수 있고,
    상기 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며,
    상기 역이산 코사인 변환의 계산 디바이스는,
    입력 계수들의 행렬에서의 각 계수를 스케일링함으로써, 스케일링된 계수들의 행렬을 발생시키는 수단;
    상기 스케일링된 계수들의 행렬의 DC 계수에 대해 하나 이상의 바이어스 값들을 가산함으로써, 상기 소스 계수들의 벡터를 포함하는 바이어싱된 계수들의 행렬을 발생시키는 수단;
    상기 바이어싱된 계수들의 행렬에서의 각 행 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 중간 계수들의 행렬을 발생시키는 수단;
    상기 중간 계수들의 행렬에서의 각 열 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 변환된 계수들의 행렬을 발생시키는 수단; 및
    제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들을 우측-시프팅시킴으로써, 픽셀 성분값들의 행렬을 발생시키는 수단을 더 포함하고,
    상기 중간 계수들의 행렬을 발생시키는 수단 또는 상기 변환된 계수들의 행렬을 발생시키는 수단 중 어느 하나는, 상기 소스 계수들의 벡터에 대해 상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용하는 수단을 포함하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  31. 역이산 코사인 변환의 계산을 위한 디바이스로서,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하는 수단을 포함하고,
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    상기 일련의 버터플라이 구조 연산들을 이용하는 수단은, 버터플라이 구조 연산을 수행하는 수단의 세트를 포함하고,
    상기 버터플라이 구조 연산을 수행하는 수단 각각은,
    Figure 112010023831237-pct00280
    의 형태의 버터플라이 구조 연산을 수행하는 수단을 포함하고,
    여기서, u, v, x 및 y 는 고정 소수점 수들이고,
    x 및 y 는 입력값들이고, u 및 v 는 출력값들이고,
    C, S 및 k 는 정수들인, 역이산 코사인 변환의 계산을 위한 디바이스.
  32. 제 31 항에 있어서,
    상기 소스 계수들의 벡터는, 8 개의 계수들 x0, x1, x2, x3, x4, x5, x6 및 x7 로 구성되고,
    상기 변환된 계수들의 벡터는, 8 개의 계수들 z0, z1, z2, z3, z4, z5, z6 및 z7 로 구성되고,
    상기 버터플라이 구조 연산을 수행하는 수단의 세트는,
    x = x0, y = x4, C = 1, S = 1, u = x0', 및 v = x4' 인 제 1 버터플라이 구조 연산을 수행하는 수단;
    x = x2, y = x6, C =
    Figure 112010023831237-pct00281
    , S =
    Figure 112010023831237-pct00282
    , u = x6', 및 v = x2' 인 제 2 버터플라이 구조 연산을 수행하는 수단;
    x = x7, y = x1, C = 1, S = 1, u = x7', 및 v = x1' 인 제 3 버터플라이 구조 연산을 수행하는 수단;
    x =
    Figure 112010023831237-pct00283
    , y = x5, C = 1, S = 1, u = x1'', 및 v = x5' 인 제 4 버터플라이 구조 연산을 수행하는 수단;
    x =
    Figure 112010023831237-pct00284
    , y = x3, C = 1, S = 1, u = x7'', 및 v = x3' 인 제 5 버터플라이 구조 연산을 수행하는 수단;
    x = x0', y = x6', C = 1, S = 1, u = x0'', 및 v = x6'' 인 제 6 버터플라이 구조 연산을 수행하는 수단;
    x = x4', y = x2', C = 1, S = 1, u = x4'', 및 v = x2'' 인 제 7 버터플라이 구조 연산을 수행하는 수단;
    x = x1'', y = x7'', C =
    Figure 112010023831237-pct00285
    , S =
    Figure 112010023831237-pct00286
    , u = x1''', 및 v = x7''' 인 제 8 버터플라이 구조 연산을 수행하는 수단;
    x = x3', y = x5', C =
    Figure 112010023831237-pct00287
    , S =
    Figure 112010023831237-pct00288
    , u = x5'', 및 v = x3'' 인 제 9 버터플라이 구조 연산을 수행하는 수단;
    x = x0'', y = x7''', C = 1, S = 1, u = z0, 및 v = z7 인 제 10 버터플라이 구조 연산을 수행하는 수단;
    x = x4'', y = x5'', C = 1, S = 1, u = z1, 및 v = z6 인 제 11 버터플라이 구조 연산을 수행하는 수단;
    x = x2'', y = x3'', C = 1, S = 1, u = z2, 및 v = z5 인 제 12 버터플라이 구조 연산을 수행하는 수단; 및
    x = x6'', y = x1''', C = 1, S = 1, u = z3, 및 v = z4 인 제 13 버터플라이 구조 연산을 수행하는 수단을 포함하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  33. 제 32 항에 있어서,
    Figure 112010023831237-pct00289
    ,
    Figure 112010023831237-pct00290
    ,
    Figure 112010023831237-pct00291
    ,
    Figure 112010023831237-pct00292
    ,
    Figure 112010023831237-pct00293
    , 및
    Figure 112010023831237-pct00294
    는 각각 무리값들
    Figure 112010023831237-pct00295
    ,
    Figure 112010023831237-pct00296
    ,
    Figure 112010023831237-pct00297
    ,
    Figure 112010023831237-pct00298
    ,
    Figure 112010023831237-pct00299
    , 및
    Figure 112010023831237-pct00300
    의 근사치들인, 역이산 코사인 변환의 계산을 위한 디바이스.
  34. 제 33 항에 있어서,
    Figure 112010023831237-pct00301
    = 8867/16384,
    Figure 112010023831237-pct00302
    = 21407/16384,
    Figure 112010023831237-pct00303
    = 5681/4096,
    Figure 112010023831237-pct00304
    = 565/2048,
    Figure 112010023831237-pct00305
    = 9633/8192,
    Figure 112010023831237-pct00306
    = 12873/16384 인, 역이산 코사인 변환의 계산을 위한 디바이스.
  35. 제 31 항에 있어서,
    상기 일련의 버터플라이 구조 연산들을 이용하는 수단은, 상기 일련의 버터플라이 구조 연산들에서 승산 연산들을 수행함으로써 생기는 값들에 근사하는 결과적인 값들을 생성하는 일련의 시프트, 가산, 및 감산 연산들을 이용하여, 상기 일련의 버터플라이 구조 연산들을 수행하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  36. 삭제
  37. 제 30 항에 있어서,
    상기 바이어싱된 계수들의 행렬을 발생시키는 수단은, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 중심점 바이어스 값을 가산하는 수단을 포함하고,
    상기 중심점 바이어스 값은 2(P+T-1) 과 동등하고, 여기서 P 는 상기 제 1 크기와 동등하고, T 는 상기 변환을 수행함으로써 부가된 비트들의 수인, 역이산 코사인 변환의 계산을 위한 디바이스.
  38. 제 30 항에 있어서,
    상기 바이어싱된 계수들의 행렬을 발생시키는 수단은, 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 보완 바이어스 값을 가산하는 수단을 포함하고,
    상기 DC 계수에 대한 상기 보완 바이어스 값의 가산은, 포지티브 에러들 및 네거티브 에러들로 하여금, 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 하고,
    상기 포지티브 에러들 및 네거티브 에러들은, 상기 제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들로서 제한된 정밀도를 가지는 고정 소수점으로 표현된 계수들을 우측-시프팅시키는 것으로부터 기인한 값들과, 정밀도를 고려하지 않고, 2P (여기서, P 는 상기 제 1 크기와 동등함) 로 상기 변환된 계수들의 행렬에서의 계수들을 제산하는 것으로부터의 결과들 사이의 차이들을 나타내는, 역이산 코사인 변환의 계산을 위한 디바이스.
  39. 제 38 항에 있어서,
    상기 보완 바이어스 값은, 상기 DC 계수가 음수인 경우에는 -1 과 동등하고, 상기 DC 계수가 음수가 아닌 경우에는 0 과 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  40. 제 38 항에 있어서,
    의사 랜덤에 기초하여, -1 또는 0 중 어느 하나와 동등한 값을 선택하는 수단을 더 포함하고,
    상기 DC 계수에 대해 보완 바이어스 값을 가산하는 수단은, 상기 선택된 값을 상기 보완 바이어스 값으로서 가산하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  41. 제 30 항에 있어서,
    상기 스케일링된 계수들의 행렬을 발생시키는 수단은, 제 2 크기만큼 상기 입력 계수들의 행렬에서의 계수들 각각을 좌측-시프팅시킴으로써, 상기 입력 계수들의 행렬에서의 각 계수를 스케일링하는 수단을 포함하고,
    상기 변환을 적용하는데 상기 일련의 버터플라이 구조 연산들을 이용하는 수단은, 상기 변환된 계수들의 행렬에서의 각 계수로 하여금 제 3 크기만큼 측정된 정밀도의 추가의 비트들의 수를 포함하도록 하고,
    상기 제 1 크기는 상기 제 2 크기에 상기 제 3 크기를 더한 크기와 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  42. 제 41 항에 있어서,
    상기 제 2 크기는, 상기 변환을 적용하는 동안에 이용된 상기 고정 소수점 수들의 가수 비트들의 수와 동등한, 역이산 코사인 변환의 계산을 위한 디바이스.
  43. 제 42 항에 있어서,
    상기 제 2 크기는 3 이고,
    상기 입력 계수들의 행렬이 주어지는 경우, 상기 픽셀 성분값들은 IEEE (Institute of Electrical and Electronics Engineers) 1180 표준의 정밀도 요건들을 만족시키는, 역이산 코사인 변환의 계산을 위한 디바이스.
  44. 제 30 항에 있어서,
    상기 픽셀 성분값들의 행렬에서의 픽셀 성분값들을 포함하는 픽셀들을 구성하는 수단; 및
    디스플레이 유닛으로 하여금 상기 픽셀들을 디스플레이하도록 하는 수단을 더 포함하는, 역이산 코사인 변환의 계산을 위한 디바이스.
  45. 제 30 항에 있어서,
    상기 고정 소수점 수들은 16-비트 고정 소수점 수들인, 역이산 코사인 변환의 계산을 위한 디바이스.
  46. 역이산 코사인 변환의 계산을 위한 명령들을 포함하는, 컴퓨터 판독가능 매체로서,
    상기 명령들은, 프로세서에 의해 실행되는 경우, 상기 프로세서가,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하게 하고;
    미디어 프리젠테이션 유닛으로 하여금 상기 변환된 계수들의 벡터에서의 변환된 계수들에 기초하여 가청 또는 가시 신호들을 출력하도록 하게 하고,
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    상기 일련의 버터플라이 구조 연산들 중 하나의 버터플라이 구조 연산에 의해 발생된 결과들과, 무한의 정밀도 연산을 이용하여 등가의 버터플라이 구조 연산에 의해 발생되는 결과들 사이의 차이들은, 0 을 중심으로 하며,
    상기 명령들은 또한 상기 프로세서가,
    입력 계수들의 행렬에서의 각 계수를 스케일링함으로써, 스케일링된 계수들의 행렬을 발생시키게 하고;
    상기 스케일링된 계수들의 행렬의 DC 계수에 대해 하나 이상의 바이어스 값들을 가산함으로써, 상기 소스 계수들의 벡터를 포함하는 바이어싱된 계수들의 행렬을 발생시키게 하고;
    상기 바이어싱된 계수들의 행렬에서의 각 행 벡터에 대해 상기 변환을 적용하는데 고정 소수점 수들에 대해 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 중간 계수들의 행렬을 발생시키게 하고;
    상기 중간 계수들의 행렬에서의 각 열 벡터에 대해 상기 변환을 적용하는데 고정 소수점 수들에 대해 상기 일련의 버터플라이 구조 연산들을 이용함으로써, 변환된 계수들의 행렬을 발생시키게 하고;
    제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들을 우측-시프팅시킴으로써, 픽셀 성분값들의 행렬을 발생시키게 하는, 컴퓨터 판독가능 매체.
  47. 역이산 코사인 변환의 계산을 위한 명령들을 포함하는, 컴퓨터 판독가능 매체로서,
    상기 명령들은, 프로세서에 의해 실행되는 경우, 상기 프로세서가,
    변환된 계수들의 벡터를 발생시키기 위해서 소스 계수들의 벡터에 대해 일 변환을 적용하는데 고정 소수점 수들 (fixed-point numbers) 에 대해 일련의 버터플라이 구조 연산들을 이용하게 하고;
    상기 변환된 계수들의 벡터에서의 변환된 계수들은, 이상적인 역이산 코사인 변환을 이용하여 상기 소스 계수들의 벡터를 변환함으로써 생성되는 값들의 근사치들이고,
    상기 프로세서가 상기 일련의 버터플라이 구조 연산들을 이용하게 하는 명령들은, 상기 프로세서가,
    Figure 112010023831237-pct00307
    의 형태의 버터플라이 구조 연산을 수행하게 하고,
    여기서, u 및 v 는 결과적인 고정 소수점 수들이고,
    C, S, k 및 k' 는 상수 정수들이고,
    x 및 y 는 고정 소수점 변수들이고,
    Figure 112010023831237-pct00308
    Figure 112010023831237-pct00309
    은 무리 상수들의 유리수 근사치들인, 컴퓨터 판독가능 매체.
  48. 제 47 항에 있어서,
    상기 소스 계수들의 벡터는, 8 개의 계수들 x0, x1, x2, x3, x4, x5, x6 및 x7 로 구성되고,
    상기 변환된 계수들의 벡터는, 8 개의 계수들 z0, z1, z2, z3, z4, z5, z6 및 z7 로 구성되고,
    상기 프로세서가 상기 일련의 버터플라이 구조 연산들을 이용하게 하는 명령들은, 상기 프로세서가,
    x = x0, y = x4, C = 1, S = 1, u = x0', 및 v = x4' 인 제 1 버터플라이 구조 연산을 수행하게 하고;
    x = x2, y = x6, C =
    Figure 112010023831237-pct00310
    , S =
    Figure 112010023831237-pct00311
    , u = x6', 및 v = x2' 인 제 2 버터플라이 구조 연산을 수행하게 하고;
    x = x7, y = x1, C = 1, S = 1, u = x7', 및 v = x1' 인 제 3 버터플라이 구조 연산을 수행하게 하고;
    x =
    Figure 112010023831237-pct00312
    , y = x5, C = 1, S = 1, u = x1'', 및 v = x5' 인 제 4 버터플라이 구조 연산을 수행하게 하고;
    x =
    Figure 112010023831237-pct00313
    , y = x3, C = 1, S = 1, u = x7'', 및 v = x3' 인 제 5 버터플라이 구조 연산을 수행하게 하고;
    x = x0', y = x6', C = 1, S = 1, u = x0'', 및 v = x6'' 인 제 6 버터플라이 구조 연산을 수행하게 하고;
    x = x4', y = x2', C = 1, S = 1, u = x4'', 및 v = x2'' 인 제 7 버터플라이 구조 연산을 수행하게 하고;
    x = x1'', y = x7'', C =
    Figure 112010023831237-pct00314
    , S =
    Figure 112010023831237-pct00315
    , u = x1''', 및 v = x7''' 인 제 8 버터플라이 구조 연산을 수행하게 하고;
    x = x3', y = x5', C =
    Figure 112010023831237-pct00316
    , S =
    Figure 112010023831237-pct00317
    , u = x5'', 및 v = x3'' 인 제 9 버터플라이 구조 연산을 수행하게 하고;
    x = x0'', y = x7''', C = 1, S = 1, u = z0, 및 v = z7 인 제 10 버터플라이 구조 연산을 수행하게 하고;
    x = x4'', y = x5'', C = 1, S = 1, u = z1, 및 v = z6 인 제 11 버터플라이 구조 연산을 수행하게 하고;
    x = x2'', y = x3'', C = 1, S = 1, u = z2, 및 v = z5 인 제 12 버터플라이 구조 연산을 수행하게 하고;
    x = x6'', y = x1''', C = 1, S = 1, u = z3, 및 v = z4 인 제 13 버터플라이 구조 연산을 수행하게 하는, 컴퓨터 판독가능 매체.
  49. 제 48 항에 있어서,
    Figure 112008089582576-pct00192
    ,
    Figure 112008089582576-pct00193
    ,
    Figure 112008089582576-pct00194
    ,
    Figure 112008089582576-pct00195
    ,
    Figure 112008089582576-pct00196
    , 및
    Figure 112008089582576-pct00197
    는 각각 무리값들
    Figure 112008089582576-pct00198
    ,
    Figure 112008089582576-pct00199
    ,
    Figure 112008089582576-pct00200
    ,
    Figure 112008089582576-pct00201
    ,
    Figure 112008089582576-pct00202
    , 및
    Figure 112008089582576-pct00203
    의 근사치들 인, 컴퓨터 판독가능 매체.
  50. 제 49 항에 있어서,
    Figure 112008089582576-pct00204
    = 8867/16384,
    Figure 112008089582576-pct00205
    = 21407/16384,
    Figure 112008089582576-pct00206
    = 5681/4096,
    Figure 112008089582576-pct00207
    = 565/2048,
    Figure 112008089582576-pct00208
    = 9633/8192,
    Figure 112008089582576-pct00209
    = 12873/16384 인, 컴퓨터 판독가능 매체.
  51. 제 47 항에 있어서,
    상기 프로세서가 상기 일련의 버터플라이 구조 연산들을 이용하게 하는 명령들은, 상기 프로세서가, 승산 연산들을 수행함으로써 생기는 값들에 근사하는 결과적인 값들을 생성하는 일련의 시프트, 가산, 및 감산 연산들을 이용하여, 상기 일련의 버터플라이 구조 연산들에서 값들을 승산하게 하는, 컴퓨터 판독가능 매체.
  52. 삭제
  53. 제 46 항에 있어서,
    상기 프로세서가 상기 바이어싱된 계수들의 행렬을 발생시키게 하는 명령들은, 상기 프로세서가 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 중심점 바이어스 값을 가산하게 하고,
    상기 중심점 바이어스 값은 2(P+T-1) 과 동등하고, 여기서 P 는 상기 제 1 크기와 동등하고, T 는 상기 변환을 수행함으로써 부가된 비트들의 수인, 컴퓨터 판독가능 매체.
  54. 제 46 항에 있어서,
    상기 프로세서가 상기 바이어싱된 계수들의 행렬을 발생시키게 하는 명령들은, 상기 프로세서가 상기 스케일링된 계수들의 행렬의 DC 계수에 대해 보완 바이어스 값을 가산하게 하고,
    상기 DC 계수에 대한 상기 보완 바이어스 값의 가산은, 포지티브 에러들 및 네거티브 에러들로 하여금, 평균하여 크기에 있어서 동등하도록 하며, 평균하여 0 에 대해 대칭이 되도록 하고,
    상기 포지티브 에러들 및 네거티브 에러들은, 상기 제 1 크기만큼 상기 변환된 계수들의 행렬에서의 계수들로서 제한된 정밀도를 가지는 고정 소수점으로 표현된 계수들을 우측-시프팅시키는 것으로부터 기인한 값들과, 정밀도를 고려하지 않고, 2P (여기서, P 는 상기 제 1 크기와 동등함) 로 상기 변환된 계수들의 행렬에서의 계수들을 제산하는 것으로부터의 결과들 사이의 차이들을 나타내는, 컴퓨터 판독가능 매체.
  55. 제 54 항에 있어서,
    상기 보완 바이어스 값은, 상기 DC 계수가 음수인 경우에는 -1 과 동등하고, 상기 DC 계수가 음수가 아닌 경우에는 0 과 동등한, 컴퓨터 판독가능 매체.
  56. 제 54 항에 있어서,
    상기 명령들은 또한 상기 프로세서가, 의사 랜덤에 기초하여, -1 또는 0 중 어느 하나와 동등한 값을 선택하게 하고,
    상기 프로세서가 상기 DC 계수에 대해 상기 보완 바이어스 값을 가산하게 하는 명령들은, 상기 프로세서가 상기 선택된 값을 상기 보완 바이어스 값으로서 가산하게 하는, 컴퓨터 판독가능 매체.
  57. 제 46 항에 있어서,
    상기 프로세서가 상기 스케일링된 계수들의 행렬을 발생시키게 하는 명령들은, 상기 프로세서가 제 2 크기만큼 상기 입력 계수들의 행렬에서의 각 계수를 좌측-시프팅시키게 하고,
    상기 프로세서가 상기 일련의 버터플라이 구조 연산들을 이용하게 하는 명령들은, 상기 변환된 계수들의 행렬에서의 각 계수로 하여금 제 3 크기만큼 측정된 정밀도의 추가의 비트들의 수를 포함하게 하고,
    상기 제 1 크기는 상기 제 2 크기에 상기 제 3 크기를 더한 크기와 동등한, 컴퓨터 판독가능 매체.
  58. 제 57 항에 있어서,
    상기 제 2 크기는, 상기 변환을 적용하는 동안에 이용된 상기 고정 소수점 수들의 가수 비트들의 수와 동등한, 컴퓨터 판독가능 매체.
  59. 제 58 항에 있어서,
    상기 제 2 크기는 3 이고,
    상기 입력 계수들의 행렬이 주어지는 경우, 상기 픽셀 성분값들은 IEEE (Institute of Electrical and Electronics Engineers) 1180 표준의 정밀도 요건들을 만족시키는, 컴퓨터 판독가능 매체.
  60. 제 46 항에 있어서,
    상기 명령들은 또한 상기 프로세서가,
    상기 픽셀 성분값들의 행렬에서의 픽셀 성분값들을 포함하는 픽셀들을 구성하게 하고;
    디스플레이 유닛 상에 상기 픽셀들을 디스플레이하게 하는, 컴퓨터 판독가능 매체.
  61. 제 46 항에 있어서,
    상기 고정 소수점 수들은 16-비트 고정 소수점 수들인, 컴퓨터 판독가능 매체.
KR1020087031691A 2006-06-26 2007-06-26 역이산 코사인 변환의 계산 중의 에러 감소 KR100982156B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US81669706P 2006-06-26 2006-06-26
US60/816,697 2006-06-26
US84136206P 2006-08-30 2006-08-30
US60/841,362 2006-08-30
US84719406P 2006-09-25 2006-09-25
US60/847,194 2006-09-25
US82966906P 2006-10-16 2006-10-16
US60/829,669 2006-10-16
US86953006P 2006-12-11 2006-12-11
US60/869,530 2006-12-11

Publications (2)

Publication Number Publication Date
KR20090016732A KR20090016732A (ko) 2009-02-17
KR100982156B1 true KR100982156B1 (ko) 2010-09-14

Family

ID=38624012

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087031503A KR101013344B1 (ko) 2006-06-26 2007-06-25 이산 코사인 변환의 계산 중의 에러 감소
KR1020087031691A KR100982156B1 (ko) 2006-06-26 2007-06-26 역이산 코사인 변환의 계산 중의 에러 감소

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020087031503A KR101013344B1 (ko) 2006-06-26 2007-06-25 이산 코사인 변환의 계산 중의 에러 감소

Country Status (10)

Country Link
US (2) US8385424B2 (ko)
EP (2) EP2035958A2 (ko)
JP (3) JP5086343B2 (ko)
KR (2) KR101013344B1 (ko)
CN (2) CN102007489B (ko)
BR (1) BRPI0712984A2 (ko)
CA (2) CA2653692C (ko)
IN (1) IN2014MN01239A (ko)
TW (2) TWI382767B (ko)
WO (2) WO2008002881A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8571340B2 (en) * 2006-06-26 2013-10-29 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8385424B2 (en) * 2006-06-26 2013-02-26 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US8300698B2 (en) * 2006-10-23 2012-10-30 Qualcomm Incorporated Signalling of maximum dynamic range of inverse discrete cosine transform
US8819095B2 (en) * 2007-08-28 2014-08-26 Qualcomm Incorporated Fast computation of products by dyadic fractions with sign-symmetric rounding errors
US8731062B2 (en) * 2008-02-05 2014-05-20 Ntt Docomo, Inc. Noise and/or flicker reduction in video sequences using spatial and temporal processing
US9378751B2 (en) * 2008-06-19 2016-06-28 Broadcom Corporation Method and system for digital gain processing in a hardware audio CODEC for audio transmission
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
NO332205B1 (no) * 2008-12-30 2012-07-30 Cisco Systems Int Sarl Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
JP2013524730A (ja) * 2010-04-12 2013-06-17 クゥアルコム・インコーポレイテッド 幾何学的動き区分のための固定小数点実装形態
US9185422B2 (en) * 2010-07-15 2015-11-10 Qualcomm Incorporated Variable localized bit-depth increase for fixed-point transforms in video coding
CN103125116A (zh) 2010-09-28 2013-05-29 三星电子株式会社 视频编码方法和装置以及解码方法和装置
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
US20120183048A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with multiple clipping
US9807395B2 (en) 2011-01-18 2017-10-31 Dolby International Ab Video decoder with reduced dynamic range transform with inverse transform shifting memory
AU2016219700B2 (en) * 2011-01-18 2018-06-28 Dolby International Ab Video decoder with reduced dynamic range transform with inverse transform shifting memory
US20120183047A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with inverse transform clipping
US20120183045A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform including clipping
KR20120098499A (ko) * 2011-02-25 2012-09-05 삼성전자주식회사 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치
US9326001B2 (en) * 2011-03-22 2016-04-26 International Business Machines Corporation Scalable image distribution in virtualized server environments
US9407917B2 (en) * 2011-06-30 2016-08-02 Samsung Electronics Co., Ltd. Video encoding method with bit depth adjustment for fixed-point conversion and apparatus therefor, and video decoding method and apparatus therefor
CN107493475B (zh) * 2011-12-15 2019-05-17 寰发股份有限公司 量化电平截取装置及方法
WO2013086724A1 (en) 2011-12-15 2013-06-20 Mediatek Singapore Pte. Ltd. Method of clippling transformed coefficients before de-quantization
JP6480186B2 (ja) * 2012-01-19 2019-03-06 ヴィド スケール インコーポレイテッド ビデオコーディング量子化およびダイナミックレンジ制御のシステムおよび方法
US9131210B2 (en) 2012-03-16 2015-09-08 Texas Instruments Incorporated Low-complexity two-dimensional (2D) separable transform design with transpose buffer management
WO2013175736A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
JP6179813B2 (ja) 2012-05-25 2017-08-16 サン パテント トラスト 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置および画像符号化復号装置
PL2858354T3 (pl) 2012-05-25 2023-05-02 Sun Patent Trust Sposób kodowania obrazów wideo, sposób dekodowania obrazów wideo, urządzenie do kodowania obrazów wideo, urządzenie do dekodowania obrazów wideo oraz urządzenie do kodowania-dekodowania obrazów wideo
CN103650498B (zh) 2012-06-04 2018-01-05 太阳专利托管公司 运动图像解码方法及运动图像解码装置
KR20130137951A (ko) * 2012-06-08 2013-12-18 한국전자통신연구원 초고해상도 영상 코덱을 위한 역변환 방법
US8806489B2 (en) 2012-07-05 2014-08-12 International Business Machines Corporation Virtual machine image distribution network
US9648332B2 (en) * 2013-10-28 2017-05-09 Qualcomm Incorporated Adaptive inter-color component residual prediction
JP6102707B2 (ja) * 2013-12-05 2017-03-29 Nttエレクトロニクス株式会社 デジタル符号化装置
US9516345B2 (en) 2014-03-17 2016-12-06 Qualcomm Incorporated Systems and methods for low complexity forward transforms using mesh-based calculations
US9432696B2 (en) 2014-03-17 2016-08-30 Qualcomm Incorporated Systems and methods for low complexity forward transforms using zeroed-out coefficients
US10057587B2 (en) * 2015-01-31 2018-08-21 Qualcomm Incorporated Coding escape pixels for palette mode coding
KR101644039B1 (ko) * 2015-06-11 2016-07-29 에스케이텔레콤 주식회사 고정소수점 연산 방법 및 고정소수점 연산 장치
MX2022006797A (es) 2019-12-06 2022-09-12 Fraunhofer Ges Forschung Intraprediccion basada en matriz con ajustes de modo global.
EP3849089A1 (en) * 2020-01-09 2021-07-14 Microsoft Technology Licensing, LLC Encoding for data recovery in storage systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990087552A (ko) * 1996-03-05 1999-12-27 피터 엔. 데트킨 멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터시스템

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3120605A (en) * 1959-09-02 1964-02-04 Technion Res & Dev Foundation General purpose transistorized function generator
US3982112A (en) * 1974-12-23 1976-09-21 General Electric Company Recursive numerical processor
CA2332407C (en) * 1989-01-27 2002-03-05 Dolby Laboratories Licensing Corporation Method for defining coding information
US5129015A (en) 1990-04-19 1992-07-07 Ricoh Company Ltd. Apparatus and method for compressing still images without multiplication
DE9016732U1 (ko) 1990-12-11 1992-04-09 Robert Bosch Gmbh, 7000 Stuttgart, De
US5122875A (en) 1991-02-27 1992-06-16 General Electric Company An HDTV compression system
RU2096955C1 (ru) 1991-03-01 1997-11-27 Е.И.Дюпон Де Немур Энд Компани Вододиспергируемая гранулированная пестицидная композиция, получаемая методом экструзии, и способ ее получения
JPH0530470A (ja) * 1991-07-19 1993-02-05 Sony Corp デイジタルビデオ信号の記録および/または再生方法
US5285402A (en) 1991-11-22 1994-02-08 Intel Corporation Multiplyless discrete cosine transform
US5539836A (en) 1991-12-20 1996-07-23 Alaris Inc. Method and apparatus for the realization of two-dimensional discrete cosine transform for an 8*8 image fragment
TW224553B (en) 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
EP0648051B1 (en) * 1993-03-31 1999-02-03 Sony Corporation Signal processor
JP2816295B2 (ja) * 1993-05-21 1998-10-27 鐘紡株式会社 離散コサイン変換方法および離散コサイン変換回路
RU2122295C1 (ru) 1994-04-29 1998-11-20 Виктор Павлович Дворкович Способ покадрового сжатия изображений
US6549666B1 (en) 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US5701263A (en) 1995-08-28 1997-12-23 Hyundai Electronics America Inverse discrete cosine transform processor for VLSI implementation
US6026183A (en) 1995-10-27 2000-02-15 Texas Instruments Incorporated Content-based video compression
JP3302870B2 (ja) * 1995-12-11 2002-07-15 三菱電機株式会社 センサのバイアス誤差推定装置
US5825927A (en) 1996-01-16 1998-10-20 Hitachi America, Ltd. Methods and apparatus for encoding video data in a manner that is well suited for decoding by regular or downconverting decoders
US6020838A (en) 1996-12-23 2000-02-01 National Instruments Corporation System and method for generating a sigma-delta correction circuit using matrix calculation of linearity error correction coefficients
EP0956703B1 (de) 1997-01-31 2001-09-19 Siemens Aktiengesellschaft Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes
TW376628B (en) 1997-05-06 1999-12-11 Holtek Semiconductor Inc Method of accelerating JPEG quantization calculation in image compression
US6134270A (en) 1997-06-13 2000-10-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
JP3524747B2 (ja) 1998-01-30 2004-05-10 三洋電機株式会社 離散コサイン変換回路
WO1999039303A1 (en) 1998-02-02 1999-08-05 The Trustees Of The University Of Pennsylvania Method and system for computing 8x8 dct/idct and a vlsi implementation
TW395135B (en) 1998-03-03 2000-06-21 Nat Science Council A high throughput and regular architecture of 2-D 8x8 DCT/IDCT using direct form
US6539058B1 (en) * 1998-04-13 2003-03-25 Hitachi America, Ltd. Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
US6310919B1 (en) 1998-05-07 2001-10-30 Sarnoff Corporation Method and apparatus for adaptively scaling motion vector information in an information stream decoder
US6792149B1 (en) 1998-05-07 2004-09-14 Sarnoff Corporation Method and apparatus for resizing an image frame including field-mode encoding
KR20000013653A (ko) 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
EP0990992A3 (de) 1998-09-28 2002-02-13 Siemens Aktiengesellschaft Diskreter/invers-diskreter Cosinus-Transformationsvorrichtung und Anordnung
GB2347038A (en) 1999-02-18 2000-08-23 Nokia Mobile Phones Ltd A video codec using re-transmission
US6167092A (en) 1999-08-12 2000-12-26 Packetvideo Corporation Method and device for variable complexity decoding of motion-compensated block-based compressed digital video
US6529634B1 (en) 1999-11-08 2003-03-04 Qualcomm, Inc. Contrast sensitive variance based adaptive block size DCT image compression
KR100683380B1 (ko) 2000-02-21 2007-02-15 주식회사 팬택앤큐리텔 영상 압축 부호화를 위한 변환 및 역변환 방법 및 장치
JP2001318910A (ja) 2000-02-29 2001-11-16 Sony Corp 逆離散コサイン変換装置
DE10116204A1 (de) 2000-08-12 2002-02-21 Bosch Gmbh Robert Verfahren zur ganzzahligen Approximation von Transformationskoeffizienten sowie Coder und Decoder
KR100357689B1 (ko) 2000-11-13 2002-10-19 삼성전자 주식회사 일관된 화질을 가지는 실시간 가변 비트율 엠펙 비디오전송 시스템
US6859815B2 (en) 2000-12-19 2005-02-22 Koninklijke Philips Electronics N.V. Approximate inverse discrete cosine transform for scalable computation complexity video and still image decoding
US6873655B2 (en) 2001-01-09 2005-03-29 Thomson Licensing A.A. Codec system and method for spatially scalable video data
US6799192B1 (en) 2001-01-09 2004-09-28 Apple Computer, Inc. Method and apparatus for inverse discrete cosine transform
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
JP2002374531A (ja) 2001-06-15 2002-12-26 Victor Co Of Japan Ltd 復号装置
US7082450B2 (en) 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6909753B2 (en) 2001-12-05 2005-06-21 Koninklijke Philips Electronics, N.V. Combined MPEG-4 FGS and modulation algorithm for wireless video transmission
US7007055B2 (en) 2002-03-12 2006-02-28 Intel Corporation Method of performing NxM Discrete Cosine Transform
US20030215011A1 (en) 2002-05-17 2003-11-20 General Instrument Corporation Method and apparatus for transcoding compressed video bitstreams
US7379956B2 (en) 2002-07-14 2008-05-27 Apple Inc. Encoding and decoding data arrays
KR100376060B1 (en) 2002-10-25 2003-03-17 Humax Co Ltd Method and system for re-setting image size using inverse discrete cosine transform
US7792891B2 (en) 2002-12-11 2010-09-07 Nvidia Corporation Forward discrete cosine transform engine
CN1326397C (zh) * 2003-06-02 2007-07-11 杭州高特信息技术有限公司 一种dct快速变换结构
TWI224931B (en) 2003-07-04 2004-12-01 Mediatek Inc Scalable system for inverse discrete cosine transform and method thereof
TWI257054B (en) 2003-09-03 2006-06-21 Mediatek Inc Rapid and low cost of inverse discrete cosine transform system and method thereof
CN1856997A (zh) 2003-09-24 2006-11-01 德州仪器公司 8×8变换及量化
GB0323038D0 (en) 2003-10-02 2003-11-05 Koninkl Philips Electronics Nv Method and apparatus for improved inverse transform calculation
JP3951036B2 (ja) 2003-11-27 2007-08-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的小数点方式、動的小数点演算方法、並びに2次元逆離散コサイン変換方法及びその装置
US20050196055A1 (en) 2004-03-04 2005-09-08 Sheng Zhong Method and system for codifying signals that ensure high fidelity reconstruction
US7730116B2 (en) 2004-12-14 2010-06-01 Stmicroelectronics, Inc. Method and system for fast implementation of an approximation of a discrete cosine transform
US8571340B2 (en) 2006-06-26 2013-10-29 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8385424B2 (en) * 2006-06-26 2013-02-26 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US8300698B2 (en) 2006-10-23 2012-10-30 Qualcomm Incorporated Signalling of maximum dynamic range of inverse discrete cosine transform

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990087552A (ko) * 1996-03-05 1999-12-27 피터 엔. 데트킨 멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터시스템

Also Published As

Publication number Publication date
CN102007489B (zh) 2014-04-23
KR20090016732A (ko) 2009-02-17
WO2008002881A2 (en) 2008-01-03
US8385424B2 (en) 2013-02-26
CA2653693C (en) 2013-07-23
JP5661836B2 (ja) 2015-01-28
IN2014MN01239A (ko) 2015-07-03
WO2008002881A3 (en) 2011-01-06
CN102007489A (zh) 2011-04-06
WO2008002897A2 (en) 2008-01-03
US20070297504A1 (en) 2007-12-27
CN102016829B (zh) 2015-10-14
TWI373255B (en) 2012-09-21
JP2010505154A (ja) 2010-02-18
CA2653692A1 (en) 2008-01-03
TW200814738A (en) 2008-03-16
BRPI0712984A2 (pt) 2012-04-03
CA2653693A1 (en) 2008-01-03
JP2010501911A (ja) 2010-01-21
KR101013344B1 (ko) 2011-02-14
EP2035959B1 (en) 2020-06-17
TW200814792A (en) 2008-03-16
EP2035959A2 (en) 2009-03-18
TWI382767B (zh) 2013-01-11
JP5269782B2 (ja) 2013-08-21
JP2013211011A (ja) 2013-10-10
EP2035958A2 (en) 2009-03-18
WO2008002897A3 (en) 2011-01-06
CN102016829A (zh) 2011-04-13
KR20090027670A (ko) 2009-03-17
US20070299897A1 (en) 2007-12-27
US8606023B2 (en) 2013-12-10
JP5086343B2 (ja) 2012-11-28
CA2653692C (en) 2013-07-30

Similar Documents

Publication Publication Date Title
KR100982156B1 (ko) 역이산 코사인 변환의 계산 중의 에러 감소
KR100963458B1 (ko) 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
RU2439682C2 (ru) Уменьшение ошибок во время вычисления обратного дискретного косинусного преобразования
KR100963459B1 (ko) 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
RU2496139C2 (ru) Эффективные аппроксимации с фиксированной запятой прямого и обратного дискретных косинусных преобразований
BRPI0712997A2 (pt) redução de erros durante computação de transformada de co-seno discreta inversa

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: 20130830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 9