KR20080046238A - 비디오 인코딩을 위한 다차원 인접 블록 예측 - Google Patents

비디오 인코딩을 위한 다차원 인접 블록 예측 Download PDF

Info

Publication number
KR20080046238A
KR20080046238A KR1020087008581A KR20087008581A KR20080046238A KR 20080046238 A KR20080046238 A KR 20080046238A KR 1020087008581 A KR1020087008581 A KR 1020087008581A KR 20087008581 A KR20087008581 A KR 20087008581A KR 20080046238 A KR20080046238 A KR 20080046238A
Authority
KR
South Korea
Prior art keywords
block
video block
video
motion
motion vector
Prior art date
Application number
KR1020087008581A
Other languages
English (en)
Other versions
KR100955152B1 (ko
Inventor
카이 왕
나렌드라나쓰 말라야쓰
라그하벤드라 씨. 나가라즈
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20080046238A publication Critical patent/KR20080046238A/ko
Application granted granted Critical
Publication of KR100955152B1 publication Critical patent/KR100955152B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

설명된 모션 추정 기술 및 비디오 인코딩 장치(들)는 현재 비디오 블록에 대한 정밀한 모션 추정 파라미터들을 생성하기 위해 두 개의 2차원 파이프라인을 사용한다. 2차원 파이프라인은, 정밀한 모션 벡터들, 모션 벡터 예측자들, 및 현재 비디오 블록의 모드 결정의 생성 이전에, 현재 비디오 블록과 동일한 열 상의 선행 비디오 블록을 포함하는 관련된 인접 비디오 블록들의 미리 계산된 모션 추정 파라미터들을 사용한다. 2차원 파이프라인의 사용은 모션 벡터들의 계산에서 이전에 사용가능하지 않았던 인접 비디오 블록들로부터의 정밀한 모션 벡터 예측을 가능하게 한다. 3개의 엔진들은 2차원 파이프라인, 인출 엔진, 정수 탐색 엔진, 및 비율 및 공간 탐색 엔진에서 사용될 수도 있다. 인출 엔진 및 비율 및 공간 탐색 엔진은 하나의 행에서 동작하지만, 정수 탐색 엔진은 다른 행에서 동작한다.

Description

비디오 인코딩을 위한 다차원 인접 블록 예측{MULTI-DIMENSIONAL NEIGHBORING BLOCK PREDICTION FOR VIDEO ENCODING}
본 출원은 2005년 9월 22일 출원되었고, 본 출원의 양수인에게 양도된 미국 가출원 번호 60/719,891을 우선권으로 청구하며, 상기 출원은 본 명세서에 참조된다. 본 발명은 디지털 비디오 프로세싱에 관한 것이며, 특히 비디오 시퀀스들의 인코딩에 관한 것이다.
디지털 비디오 설비들은 디지털 텔레비젼들, 디지털 직접 방송 시스템들, 무선 통신 장치들, 개인용 디지털 보조기들(PDAs), 랩탑 컴퓨터들, 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 장치들, 셀룰러 또는 위성 라디오 전화들 등을 포함하는 광범위한 장치들에 통합될 수 있다. 디지털 비디오 장치들은 전체 모션 비디오 시퀀스들을 생성, 변경, 전송, 저장, 기록 및 플레이에 있어서 통상의 아날로그 비디오 시스템들에 비해 현저한 개선점을 제공할 수 있다.
다수의 상이한 비디오 인코딩 표준들이 인코딩 디지털 비디오 시퀀스들에 대해 구축되었다. 예를 들어, 동영상 전문가 그룹(MPEG)은 MPEG-1, MPEG-2 및 MPEG-4를 포함하는 다수의 표준을 개발하였다. 다른 표준들은 국제 전기통신 연합(ITU) H.263 표준, 캘리포니아 쿠퍼티노의 애플 컴퓨터에 의해 개발된 QuickTimeTM 기술, 와싱톤 레드몬드의 마이크로소프트사에 의해 개발된 Video for WindowsTM, 인텔사에 의해 개발된 IndeoTM, 와싱톤 세틀의 리얼 네트워크사의 RealVideoTM, SuperMac 사에 의해 개발된 CinepakTM를 포함한다. ITU H.264 표준 및 다수의 특허 표준을 포함하여 새로운 표준들이 계속 출현하고 개발되고 있다.
많은 비디오 인코딩 표준은 압축 방식으로 데이터를 인코딩함으로써 비디오 시퀀스들의 향상된 전송율을 가능하게 한다. 압축은 비디오 프레임들의 효율적인 전송을 위한 송신에 필요한 데이터의 전체 양을 감소시킬 수 있다. 예를 들어, 대부분의 비디오 인코딩 표준들은 압축 없이 달성될 수 있는 것보다 더 좁은 대역폭을 통한 비디오 및 이미지 전송을 용이하게 하도록 의도된 그래픽 및 비디오 압축 기술을 이용한다.
예를 들어, MPEG 표준들 및 ITU H.263 및 ITU H.264 표준들은 인터 프레임(inter-frame) 압축을 제공하기 위해, 일시적 또는 인터 프레임 상관으로서 언급되는, 연속한 비디오 프레임들 사이의 유사점을 이용하는 비디오 인코딩 기술을 지원한다. 인터 프레임 압축 기술들은 비디오 프레임들의 픽셀 기반 표현들을 모션 표현들로 변환시킴으로써 프레임들에 걸친 데이터 중복을 활용한다. 게다가, 소정의 비디오 인코딩 기술들은 비디오 프레임들을 추가로 압축하기 위해, 공간 또는 인트라 프레임(intra-frame) 상관으로 불리는, 프레임들 내의 유사점을 이용할 수 도 있다.
압축을 지원하기 위해, 디지털 비디오 장치는 디지털 비디오 시퀀스들을 압축하기 위한 인코더, 및 디지털 비디오 시퀀스들을 압축해제하기 위한 디코더를 포함한다. 많은 경우, 인코더 및 디코더는 비디오 이미지들의 시퀀스를 한정하는 프레임들 내에서 픽셀들의 블록들 상에서 동작하는 통합된 인코더/디코더(코덱)를 형성한다. 예를 들어, 국제 전기 통신 연합(ITU) H.264 표준에서, 인코더는 통상적으로 16×16 픽셀 어레이들을 포함할 수도 있는 "매크로블록(MB)"으로서 불리는 비디오 블록들로 전송될 비디오 프레임을 분할한다. ITU H.264 표준은 16×16 비디오 블록들, 16×8 비디오 블록들, 8×16 비디오 블록들, 8×8 비디오 블록들, 8×4 비디오 블록들, 4×8 비디오 블록들 및 4×4 비디오 블록들을 지원한다. 다른 표준들은 상이한 크기의 비디오 블록들을 지원할 수도 있다.
비디오 프레임의 각각의 비디오 블록에 대해, 인코더는 "최적 예측 블록"으로 불리는 가장 유사한 비디오 블록을 식별하기 위해 하나 이상의 직전 비디오 프레임들(또는 연속한 프레임들)의 유사한 크기의 비디오 블록들을 탐색한다. 현재 비디오 블록을 다른 프레임들의 비디오 블록들과 비교하는 프로세스는 일반적으로 모션 추정으로 불린다. 일단 "최적 예측 블록"이 비디오 블록에 대해 식별되면, 인코더는 현재 비디오 블록과 최적 예측 블록 사이의 차이를 인코딩할 수 있다. 현재 비디오 블록과 최적 예측 블록 사이의 차이들을 인코딩하는 이러한 프로세서는 모션 보상으로 불리는 프로세스를 포함한다. 모션 보상은 인코딩될 현재 비디오 블록과 최적 예측 블록 사이의 차를 나타내는 차이 블록(difference block)을 생성하는 프로세스를 포함한다. 모션 보상은 일반적으로 모션 벡터를 이용하여 최적 예측 블록을 인출하고, 이어 차이 블록을 생성하기 위해 입력 블록으로부터 최적 예측 블록을 감산하는 동작으로 불린다.
모션 보상이 차이 블록을 생성한 후, 일련의 추가 인코딩 단계들이 차이 블록을 인코딩하기 위해 통상적으로 실행된다. 이러한 추가의 인코딩 단계들은 사용되고 있는 인코딩 표준에 의존할 수도 있다. 예를 들어, MPEG4 컴플라이언트(compliant) 인코더들에서, 추가의 인코딩 단계들은 8×8 이산 코사인 변환, 이어 스칼라 양자화, 이어 래스터-지그재그 리오더링, 이어, 런 렝스(run-length) 인코딩, 이어 호프만 인코딩을 포함할 수도 있다. 인코딩된 차이 블록은 이전의 프레임(또는 연속한 프레임) 중 어떤 비디오 블록이 인코딩을 위해 사용되는 지를 나타내는 모션 벡터와 함께 전송될 수 있다. 디코더는 모션 벡터 및 인코딩된 차이 벡터를 수신하고, 비디오 시퀀스들을 재구성하기 위해 수신된 정보를 디코딩한다.
인코딩 프로세스를 간략화하고 개선하는 것이 매우 바람직하다. 이를 위해, 다양한 인코딩 기술들이 개발되었다. 모션 벡터가 비디오 인코딩에서 가장 계산 집약적인 프로세스들 중 하나이기 때문에, 모션 추정에 대한 개선은 비디오 인코딩 프로세스에서 현저한 개선을 제공할 수 있다.
모션 벡터들의 계산에서 더욱 효율적이고 정밀한 방식들을 찾는 것이 바람직하다. 본 발명은 비디오 인코딩을 개선할 수 있는 모션 추정 기술들에 관한 것이다. 특히, 본 발명은 프레임에서 비디오 블록들을 프로세싱하는 비통상적인 방식들을 프로세싱한다. 모션 추정을 개선하는 기술들이 이하에서 설명된다. 일 실시예에서, 현재의 비디오 블록에 대한 정밀한 모션 추정 파라미터들을 생성하기 위해 2차원 파이프라인을 사용하는 모션 추정이 개시된다. 2차원 파이프라인은 정밀한 모션 추정 파라미터들의 생성에 앞서, 현재의 비디오 블록과 동일한 행 상의 선행 비디오 블록을 포함하는 관련된 인접 비디오 블록들의 미리 계산된 모션 추정 파라미터들을 이용한다. 모션 추정 파라미터들은 예를 들어, 모션 벡터들, 모션 벡터 예측자들 및 모션 결정이다. 개시된 모션 추정 기술들은 픽셀들을 인출하기 위한 엔진/모듈, 정수 픽셀 탐색을 실행하는 엔진/모듈, 및 핑퐁 방식으로 적어도 두 개의 비디오 블록 행에 대해 세밀한 비율 및 공간 탐색을 실행하는 엔진/모듈을 파이프라이닝함으로써 인코딩을 개선할 수 있다. 핑 부분 동안, 첫 번째 블록 상에서 다른 비디오 블록이 프로세싱되고 있는 반면, 첫 번째 블록 행으로부터 두 개의 비디오 블록들이 프로세싱된다. 퐁 부분 동안, 첫 번째 블록 행 상에서 다른 비디오 블록이 프로세싱되는 반면, 두 번째 블록 행으로부터 두 개의 비디오 블록들이 프로세싱된다. 이러한 핑-퐁 방식의 프로세싱은 정수 탐색 엔진/모듈로 하여금, 비율 및 공간 엔진/모듈이 모든 이웃 비디오 블록의 프로세싱을 종료한 후에만 획득될 수 있는 정확한 모션 벡터 예측자(MVP)로 인해 더욱 정밀한 모션 벡터 관련 비용을 계산 및 출력하게 한다. MVP는 원하는 모션 벡터의 조기 추정이며, 통상적으로 인접 비디오 블록들에 대해 미리 계산된 모션 벡터들에 기초하여 계산된다. 단지 하나의 비디오 블록 행이 연속적으로 프로세싱되는 기술에서, MVP들은 실제 값이 아닌 추정일 수도 있다. 추정만을 사용하는 것은 모션 추정에서 사용될 수 있는 정확성을 제한한다. 개시된 기술을 이용하는 장점 중 하나는 모션 추정을 계산하는데 있어서 모든 더 정밀한 해상도 실제 값들을 사용하는 것이다. 다른 장점은 2차원 파이프라인의 사용이 다른 행의 부분들을 프로세싱하기 전에 프로세싱될 하나의 전체 행을 대기하는 필요성의 문제를 해결한다는 것이다. 이와 같이, 2차원 파이프라인을 사용한 핑퐁 방식에서의 프로세싱은 통신 버스 상에서 대역폭을 감소시킨다. 탐색 영역을 업데이트하기 위한 외부 메모리에 대한 리프레시의 회수는 또한 현저히 감소할 수도 있다.
본 발명의 실시예는 왜곡 측정의 계산을 목적으로 한다. 실시예들은 인코딩될 현재의 비디오 블록에 인접한 비디오 블록들에 대해 미리 계산된 모션 벡터들에 기초하여 모션 벡터 예측자를 계산하는 단계, 및 현재의 비디오 블록을 인코딩하기 위해 사용된 예측 비디오 블록에 대한 탐색에서 모션 벡터 예측자를 사용하는 단계를 포함한다. 실시예들은 왜곡 측정의 계산을 최소화하기 위해 모든 실제 모션 벡터를 이용하는 방법을 추가로 기술한다.
설명된 다른 여러 기술들은 하드웨어, 소프트웨어, 펌웨어 또는 소정의 이들 조합으로 디지털 비디오 장치에서 구현될 수도 있다. 만일 소프트웨어에서 구현시, 기술들은, 실행될 때 하나 이상의 설명된 인코딩 기술들을 실행하는 프로그램 코드를 포함하는 컴퓨터 판독 가능 매체에 관련될 수도 있다. 다양한 실시예들의 추가의 세부 설명은 첨부된 도면 및 설명과 함께 기술된다. 다른 특징, 목적 및 장점은 상세한 설명, 도면 및 청구항으로부터 명백할 것이다.
도1A는 소스 디지털 비디오 장치가 인코딩된 비트스트림을 수신 디지털 비디오 장치로 전송하는 시스템의 예를 도시한 블록도이다.
도1B는 실시예에서 설명된 바와 같이 사용될 수 있는 두 개의 코덱들의 블록도이다.
도2는 도1A 또는 도1B에 도시된 디지털 비디오 장치에서 사용될 수도 있는 기본적인 디지털 비디오 인코더의 예시적인 블록도이다.
도3은 이미지의 두 개의 부분 행의 예시도이다.
도4는 모션 추정 및 모션 벡터 예측이 두 개의 비디오 블록 행에 대해 행해질 수도 있게 하는 프로세스를 설명한 흐름도의 예이다.
도5는 부분 이미지 행에 대해 적용된 ME 파이프라인의 예시도이다.
도6은 두 개의 부분 이미지 행에 대해 적용된 ME 파이프라인의 예시도이다.
본 실시예는 비디오 인코딩을 개선하기 위해 사용될 수 있는 모션 추정 기술들을 지원하는 모션 벡터들(MVs) 및 모션 벡터 예측자들(MVPs)을 계산하기 위한 다차원 기술들을 설명한다. 비록 상기 기술들이 모션 추정을 위한 전체 프로세스의 환경에서 일반적으로 설명되지만, 하나 이상의 기술들이 다양한 상황에서 개별적으로 사용될 수도 있음이 이해될 것이다. MVP는 예를 들어, 기록된 인접한 비디오 블록들의 모션 벡터들의 중간값으로서, 인접한 비디오 블록들에 대해 미리 계산된 모션 벡터들에 기초하여 통상적으로 계산된다. 그러나 모션 벡터들의 평균 또는 이웃 비디오 블록들 또는 가능하게는 더 복잡한 수학적 함수와 같은, 다른 수학적 함수들이 MVP를 계산하기 위해 선택적으로 사용될 수 있다.
도1A는 소스 장치(112a)rk 인코딩된 비트 스트림을 통신 링크(113)를 통해 수신 장치(114a)로 전송하는 시스템(100)의 예를 도시하는 블록도이다. 소스 장치(112) 및 수신 장치(114a)는 모두 디지털 비디오 장치들일 수도 있다. 특히, 소스 장치(112a)는 MPEG-4 표준, ITU H.263 표준, ITU H.264 표준, 또는 비디오 인코딩에서 모션 추정을 이용하는 소정의 다양한 다른 표준들과 부합하는 비디오 데이터를 인코딩한다. 시스템(100)의 장치들(112a, 114a) 중 하나 또는 모두는 비디오 인코딩 프로세스를 개선하기 위해, 이하에서 더욱 상세하게 설명되는 바와 같은, 모션 추정 및 보상 기술들을 구현한다.
통신 링크(113)는 무선 링크, 물리적 통신 라인, 광섬유, 로컬 영역 네트워크와 같은 패킷 기반 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크, 공중 전화 교환망(PSTN), 또는 데이터를 전송할 수 있는 소정의 다른 통신 링크를 포함할 수도 있다. 통신 링크(113)는 CD, DVD 등과 같은 저장 매체에 결합될 수도 있다. 따라서, 통신 링크(113)는 소정의 적절한 통신 매체, 또는 가능하게는 소스 장치(112a)로부터 수신 장치(114a)로 비디오 데이터를 전송하기 위해, 상이한 네트워크들 및 링크들의 집합을 나타낸다.
소스 장치(112a)는 비디오 시퀀스들을 캡쳐하고, 메모리(116)에서 캡쳐된 시퀀스들을 저장하기 위해 비디오 카메라와 같은 비디오 캡쳐 장치(115)를 포함할 수 도 있다. 비디오 시퀀스들은 디스플레이(117) 상에서 보여질 수도 있다. 특히, 비디오 캡쳐 장치(115)는 전하 결합 소자(CCD), 전하 주입 소자, 광다이오드의 배열, 상보형 금속 산화물 반도체(CMOS) 소자, 또는 비디오 이미지들 또는 디지털 비디오 시퀀스들을 캡쳐할 수 있는 소정의 다른 광 감지 소자를 포함할 수도 있다.
또 다른 예로서, 비디오 캡쳐 장치(115)는 예를 들어, 텔레비젼, 비디오 카세트 레코더, 캠코더, 또는 다른 비디오 장치로부터 아날로그 비디오 데이터를 디지털 비디오 데이터로 변환시키는 비디오 변환기일 수도 있다. 소정의 실시예에서, 소스 장치(112a)는 통신 링크(115)를 통해 실시간 비디오 시퀀스들을 전송하도록 구성될 수도 있다. 이 경우, 수신 장치(114)는 실시간 비디오 시퀀스들을 수신하고 비디오 시퀀스를 사용자에게 디스플레이할 수도 있다. 택일적으로, 소스 장치(112a)는 비디오데이터 파일들로서, 즉 비 실시간으로, 수신 장치(114a)에 전송되는 비디오 시퀀스들을 캡쳐 및 인코딩할 수도 있다. 따라서, 소스 장치(112a) 및 수신 장치(114a)는 예를 들어, 모바일 무선 네트워크에서, 비디오 클립 플레이백, 비디오 메일, 또는 비디오 컨퍼런싱과 같은 애플리케이션들을 지원할 수도 있다. 장치(112a 및 114a)는 도1A에서 특정하여 설명되지 않은 다양한 다른 엘리먼트를 포함할 수도 있다.
더욱이, 소스 장치(112a)는 비디오 데이터를 인코딩 및 전송할 수 있는 소정의 디지털 비디오 장치일 수도 있다. 소스 장치(112a)는 또한 시퀀스들을 인코딩하기 dln한 비디오 인코더(118), 및 인코딩된 비트 스트림을 통신 링크(115)를 통해 소스 장치(114a)로 전송하는 송신기(120)일 수도 있다. 비디오 인코더(118)는 예를 들어, 다양한 하드웨어, 소프트웨어 또는 펌웨어, 또는 설명된 바와 같이, 비디오 인코딩 기술들을 제어하기 위해 프로그램 가능한 소프트웨어 모듈들을 실행하는 하나 이상의 디지털 신호 프로세서(DSP)일 수도 있다. 관련된 메모리 및 로직 회로는 비디오 인코딩 기술들을 제어하는데 있어서 DSP를 지원하도록 제공될 수도 있다. 설명되겠지만, 비디오 인코더(118)는, 만일 모션 벡터 예측자(MVP)들의 정밀한 값들이 사용될 경우, 더욱 우수하게 동작할 수도 있다.
수신 장치(114a)는 비디오 데이터를 수신 및 디코딩할 수 있는 소정의 디지털 비디오 장치의 형태를 취할 수도 있다. 예를 들어, 수신 장치(114a)는 중간 매개 링크들, 라우터들, 다른 네트워크 설비 등을 통해 송신기(120)로부터 인코딩된 디지털 비디오 시퀀스들을 수신하는 수신기(122)를 포함할 수도 있다. 수신 장치(114a)는 또한 비트스트림을 디코딩하기 위한 비디오 디코더(124), 및 디코딩된 비트스트림의 시퀀스들을 사용자에게 디스플레이하는 디스플레이 장치(126)를 포함할 수도 있다. 그러나 소정의 실시예에서, 수신 장치(114a)는 통합된 디스플레이 장치(114a)를 포함하지 않을 수도 있다. 이러한 경우, 수신 장치(114a)는 예를 들어, 텔레비젼 또는 모니터와 같은 개별 디스플레이 장치를 구동시키기 위해 수신된 비디오 데이터를 디코딩하는 수신기로서 동작할 수도 있다.
소스 장치(112a) 및 수신 장치(114a)에 대한 장치들의 예는 컴퓨터 네트워크, 워크스테이션 또는 다른 데스크탑 계산 장치들에 위치된 서버들, 및 랩탑 컴퓨터들 또는 개인용 디지털 보조기들(PDAs)과 같은 모바일 계산 장치들을 포함한다. 다른 예들은 디지털 텔레비젼 방송 위성들 및 디지털 텔레비젼과 같은 수신 장치 들, 디지털 카메라, 디지털 비디오 카메라 또는 다른 디지털 기록 장치들, 비디오 설비를 갖춘 모바일 전화들과 같은 디지털 비디오 전화들, 비디오 설비들을 갖는 직접 양방향 통신 장치들, 다른 무선 비디오 장치들 등을 포함한다.
소정의 경우, 소스 장치(112b) 및 수신 장치(114b)는 디지털 비디오 데이터를 인코딩 및 디코딩하기 위해, 도1B에 도시된 바와 같이 인코더/디코더(CODEC)를 포함할 수도 있다. 특히, 소스 장치(112a) 및 수신 장치(114a)는 송신기들 및 수신기들은 물론 메모리 및 디스플레이들을 포함할 수도 있다. 이하에서 제시된 많은 인코딩 기술들은 인코더를 포함하는 디지털 비디오 장치의 환경에서 기술된다. 그러나 인코더는 CODEC의 일부를 형성할 수도 있음을 이해해야 한다. 이 경우, CODEC는 하드웨어, 소프트웨어, DSP, 마이크로프로세서, 주문형 집적회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA), 개별 하드웨어 컴포넌트들, 또는 이들의 다양한 조합들에서 구현될 수도 있다.
소스 장치(112a) 또는 소스 장치(112b) 내의 비디오 인코더(118)는 비디오 데이터를 인코딩하기 위해 비디오 프레임들의 시퀀스 내에서 픽셀들의 블록들 상에서 동작한다. 예를 들어, 비디오 인코더(118)는 전송될 비디오 프레임이 (비디오 블록들로 불리는) 픽셀들의 블록들로 분할되는 모션 추정 및 모션 보상 기술들을 실행할 수도 있다. 설명을 위해, 비디오 블록들은 소정 크기의 블록들을 포함할 수도 있으며, 주어진 비디오 시퀀스 내에서 변화할 수도 있다. 예로서, ITU H.264 표준은 16×16 비디오 블록들, 16×8 비디오 블록들, 8×16 비디오 블록들, 8×8 비디오 블록들, 8×4 비디오 블록들, 4×8 비디오 블록들 및 4×4 비디오 블록들을 지원한다. 비디오 인코딩에서 더 작은 비디오 블록들의 사용은 인코딩에서 더욱 우수한 압축을 생성할 수 있으며, 더 높은 레벨의 디테일(detail)을 포함하는 비디오 프레임의 위치들을 위해 특정하게 사용될 수도 있다.
비디오블록의 각각의 픽셀은 예를 들어, 8비트인 n 비트 값으로 표현될 수도 있으며, 이는 크로미넌스(chrominamce) 및 휘도(luminance)의 값에서 색 및 강도와 같은 픽셀의 시각적 특성들을 한정한다. 그러나 모션 추정은, 인간의 시각이 색도보다는 휘도의 변화에 더욱 민감하기 때문에, 종종 휘도 성분에 대해서만 실행된다. 결론적으로, 모션 추정을 위해, 전체 n 비트 값은 주어진 픽셀에 대한 휘도를 정량화할 수도 있다. 그러나 이러한 설명의 원리는 픽셀의 포맷에 한정되지 않으며, 간단한 수 비트 픽셀 포맷들 또는 더욱 복잡한 많은 비트 픽셀 포맷에 사용하기 위해 확장될 수도 있다.
비디오 프레임에서 각각의 비디오 블록의 경우, 소스 장치(112a 또는 112b)의 비디오 인코더(118)는 예측 비디오 블록으로 불리는 유사한 비디오 블록을 한정하기 위해 이미 송신된 하나 이상의 선행 비디오 프레임들(또는 연속한 비디오 프레임들)에 대해 메모리(116)에 저장된 비디오 블록들을 탐색함으로써 모션 추정을 실행한다. 소정의 경우, 예측 비디오 블록은, 비록 이러한 설명이 아래 사항에 한정되는 것은 아니지만, 선행 또는 연속한 비디오 프레임으로부터 "최적 예측 블록"을 포함할 수도 있다. 비디오 인코더(118)는 인코딩될 현재 비디오 블록과 최적 예측 블록 사이의 차이들의 나타내는 차이 블록을 생성하기 위해 모션 보상을 실행한다. 모션 보상은 일반적으로 모션 벡터를 이용하여 최적 예측 블록을 인출하고, 이어 차이 블록을 생성하기 위해 입력 블록으로부터 최적 예측 블록을 감산하는 동작과 관련한다.
모션 보상 프로세스가 차이 블록을 생성한 후, 일련의 추가 인코딩 단계들이 차이 블록을 인코딩하기 위해 통상적으로 실행된다. 이러한 추가 인코딩 단계들은 사용되는 인코딩 표준에 의존할 수도 있다.
일단 인코딩되면, 인코딩된 차이 블록은, 인코딩을 위해 사용되었던 선행 프레임(또는 연속한 프레임)으로부터 비디오 블록을 식별하는 모션 벡터 또는 인코딩된 모션 벡터와 함께 송신될 수 있다. 이러한 방식에서, 독립적인 픽쳐로서 각각의 프레임을 인코딩하는 대신, 비디오 인코더(118)는 인접한 프레임들 사이의 차이를 인코딩한다. 이러한 기술들은 비디오 시퀀스의 각각의 프레임을 정밀하게 표현하기 위해 요구되는 데이터의 양을 현저히 감소시킬 수 있다.
비록 모션 벡터들에 대한 다른 포맷이 사용될 수도 있지만, 모션 벡터는 인코딩되고 있는 비디오 블록의 상부 좌측 코너와 관련하여 픽셀 위치를 한정할 수도 있다. 모션 벡터들을 이용하여 비디오 블록들을 인코딩함으로써, 비디오 데이터의 스트림들의 전송을 위한 필요한 대역폭이 현저하게 감소될 수 있다.
소정의 경우, 비디오 인코더(118)는 인터 프레임 인코딩 외에, 인트라 프레임(intra-frame) 인코딩을 지원할 수 있다. 인트라 프레임 인코딩은 비디오 프레임들을 추가로 포함하기 위해, 공간 또는 인트라 프레임 상관으로 불리는, 프레임들 내의 유사점을 이용한다. 인트라 프레임 압축은 통상적으로 개별 코사인 변환(DCT) 인코딩과 같은 스틸 이미지들을 보상하기 위해 텍스쳐 인코딩에 기초한다. 인트라 프레임 압축은 인터 프레임 압축과 관련하여 종종 사용되지만, 소정의 구현에서 대안으로 사용될 수도 있다.
수신 장치(114a)의 수신기(122)는 모션 추정에서 사용된 최적의 예측 블록과 인코딩되는 비디오 블록 사이의 인코딩된 차이들을 나타내는 인코딩된 차이 블록들 및 모션 벡터들의 형태로 인코딩된 비디오 데이터를 수신할 수도 있다. 그러나 소정의 경우, 모션 벡터들을 전송하는 대신, 모션 벡터들과 MVP 사이의 차이가 전송된다. 소정의 경우, 디코더(124)는 디스플레이 장치(126)를 통해 사용자에게 디스플레이를 위해 비디오 시퀀스들을 생성하도록 비디오 디코딩을 실행할 수 있다. 수신 장치(114)의 디코더(124)는 도1B에 도시된 바와 같이 인코더/디코더(CODEC)로서 구현될 수도 있다. 상기 경우, 소스 장치(112b) 및 수신 장치(114b)는 디지털 비디오 시퀀스들을 인코딩, 송신, 수신 및 디코딩할 수도 있다.
도2는 도1A 또는 도1B의 장치에 사용될 수도 있는 비디오 인코더의 예를 도시한다. 비디오 시퀀스로부터의 프레임들 또는 프레임들의 일부는 CODEC(24)의 일부일 수도 있는 비디오 인코더(118) 내부의 입력 프레임 버퍼(242)에 배치될 수도 있다. 입력 프레임 버퍼(242)로부터의 입력 프레임은 블록들(상기 비디오 블록들은 소정의 크기일 수도 있지만, 표준 제곱 비디오 블록 크기들은 4×4, 8×8, 또는 16×16 임)로 분석될 수도 있으며 비디오 블록 버퍼(243)로 전송될 수도 있다. 비디오 블록 버퍼(243)는 통상적으로 비디오 블록을 감산기(244)로 전송한다. 감산기(244)는 스위치(246)의 출력으로부터 비디오 블록 x 를 감산한다. 스위치(246)는 인코딩의 인트라 코딩과 인터 코딩 예측 사이에서 스위칭할 수도 있다. 만일 스위치(246)가 인터 코딩 예측 모드를 이네이블하면, x와 차이(이전 또는 연속한) 프레임으로부터의 비디오 블록의 최종 차이는 텍스쳐 인코더(247)를 통해 압축된다. 만일 스위치(246)가 인트라 코딩 예측 모드를 이네이블하면, x와 동일한 프레임의 이전 비디오 블록으로부터의 예측된 값의 최종 차이는 텍스쳐 인코더(247)를 통해 압축된다.
텍스쳐 인코더(247)는 픽셀 도메인으로부터 공간 주파수 도메인으로 입력 x(비디오 블록 또는 차이 블록)를 변환시키는 DCT 블록(248)을 갖는다. 공간 주파수 도메인에서, 데이터는 DCT 블록 계수들에 의해 표현된다. DCT 블록 계수들은 비디오 블록에서 검출되는 공간 주파수들의 수 및 정도(degree)를 나타낸다. DCT가 계산된 후, DCT 블록 계수들은 "블록 양자화"로 알려진 프로세스에서 양자화기(250)에 의해 양자화될 수도 있다. (비디오 블록 또는 차이 비디오 블록 중 하나로부터 유래한)DCT 블록 계수들의 양자화는 블록으로부터 공간 중복의 부분을 제거한다. 이러한 "블록 양자화" 프로세스 동안, 추가의 공간 중복이 양자화된 DCT 블록 계수들을 임계치와 비교함으로써 종종 제거될 수도 있다. 이러한 비교는 양자화기(250) 또는 다른 블록(미도시) 내에서 발생된다. 만일 양자화된 DCT 블록 계수의 크기가 임계치보다 작으면, 계수는 폐기되거나 제로 값으로 설정된다.
블록 양자화 후, 최종 출력은 두 개의 개별 구조들; (1) 텍스쳐 디코더(265), 및 (2) 엔트로피 인코더(255)로 전송될 수도 있다. 텍스쳐 디코더(265)는 코딩 예측 모드로 사용될 재구성된 비디오 블록 또는 프레임의 생성을 지원하는 역 양자화(266)를 포함한다. 엔트로피 인코더(255)는 송신 또는 저장을 위해 비트 스트림을 생성한다. 엔트로피 인코더(255)는 블록 양자화된 출력을 수신하고 가변 길이 코더(VLC)(258)에 의한 더욱 효율적인 인코딩을 위해 이를 리오더링하는 스캐너(256)를 포함할 수도 있다. VLC(258)는 인코딩된 비트 스트림을 생성하기 위해 런 렝스 및 호프만 코딩 기술들을 사용할 수도 있다. 인코딩된 비트스트림은 출력 버퍼(260)로 전송된다. 비트스트림은 레이트 제어기(262)로 전송될 수도 있다. 기본 품질을 유지하면서, 레이트 제어기(262)는 양자화기(250)에 의해 사용된 품질 비트들의 수를 예정(budget)한다. 엔트로피 인코딩은 압축의 비손실 형태로 고려된다. 비손실 압축은 인코딩되는 데이터가 만일 인코딩된 데이터가 손상되지 않고 엔트로피 디코더에 의해 디코딩될 경우 동일하게 복구될 수 있음을 의미한다. 엔트로피 인코더(255)는 비손실 압축을 실행한다.
손실 압축은 인코딩된 입력이 손상되지 않을지라도, 인코딩의 결과로서, 입력 x가 x의 동일한 사본을 생성하지 않을 것을 의미한다. 재구성된 입력은 자신의 정보 중 "손실" 부분을 갖는다. 텍스쳐 인코더(247)는 손실 압축을 실행한다. 전형적인 비디오 인코더(118)는 일반적으로 인터 코딩 및 인트라 코딩 예측 모드들의 보상을 지원하기 위해 로컬 텍스쳐 디코더(265)를 갖는다. 역양자화기(266), 역 DCT(268) 및 가산기(269)로 전송되는 스위치(246)의 출력은 텍스쳐 인코더(247)의 출력을 디코딩하고 텍스쳐 인코더(247)로 제공되는 입력 x를 재구성하도록 서로 동작한다. 재구성된 입력 y는 x와 유사하게 보이지만 정확하게 x는 아니다. 일반적인 비디오 "디코더"는 통상적으로 역양자화기(266)의 기능, 역 DCT(68), 가산기(269)로 제공되는 스위치의 출력을 포함한다.
재구성된 입력은 메모리 버퍼(281)로 전송될 수도 있다. 내부 메모리 버퍼(281)는 두 개의 메모리 버퍼들, (1) 재구성된 새로운 프레임 버퍼(282); 및 (2) 재구성된 구 프레임 버퍼(284)일 수도 있다. 재구성된 새로운 프레임 버퍼(282)는 현재 프로세싱된 재구성된 프레임(또는 부분 프레임)을 저장한다. 재구성된 구 프레임 버퍼(284)는 과거에 프로세싱된 재구성된 프레임을 저장한다. 과거에 프로세싱된 재구성된 프레임은 (재구성된) 기준 프레임으로 사용된다. 재구성된 기준 프레임은 입력 프레임 버퍼(242)에서 현재 프레임 이전 또는 이후인 프레임일 수도 있다. 현재 프레임(또는 현재 프레임으로부터의 비디오 블록) 또는 현재 프레임과 재구성된 기준 프레임(또는 차이 블록으로부터의 비디오 블록) 사이의 차이들은 "현재" 인코딩되는 것이다. 현재 프레임이 인코딩을 종료한 후 그리고 입력 프레임 버퍼(242)로부터의 입력에서 다음 프레임이 인코딩되도록 인출되기 전, 재구성된 구 프레임 버퍼(284)는 재구성된 새로운 프레임 버퍼(282)의 콘텐츠를 갖는 사본으로 업데이트된다.
재구성된 새로운 프레임 버퍼(282)는 공간 예측기(286)에서 사용되도록 수신된 재구성된 비디오 블록을 사용할 수도 있다. 재구성된 구 프레임 버퍼(284)는 과거에 프로세싱된 재구성된 비디오 블록을 MEC(모션 추정 및 보상 블록)(287)로 전송한다. MEC 블록은 모션 추정기(288) 및 모션 보상기(290)를 포함한다. 모션 추정기(288)는 인코딩되는 프레임이 아닌 다른 프레임들로부터의 차이들을 보상하기 위해 모션 보상기(290)에 의해 사용될 수도 있는 모션 벡터들(MV)(292) 및 모션 벡터 예측들(294)을 생성한다. MV들(292)은 또한 엔트로피 인코더(255)에 의해 사 용될 수도 있다. ITU H.264와 같은 소정의 표준에서, 공간 예측기(286)의 출력은 인트라 프레임 예측 모드에서 사용되며 감산기(244) 및 가산기(269)로 피드백된다. MPEG-4 또는 JPEG와 같은 소정의 표준에서, 어떠한 공간 예측기(286)도 존재하지 않는다.
도3은 소정의 이미지 또는 프레임의 두 개의 공간 블록 행들을 도시한다. 예로서, 블록 행 N-1 및 N을 블록 행3 및 블록 행4라고 하자. 블록 행3(330)에는, 9개의 비디오 블록이 존재한다. 설명을 위해, 16×16 블록들이 실시예의 설명을 위해 사용될 수도 있다. 따라서, 매크로블록들(MBs)(331-339)은 행3(330)에 있으며, 행4(340)에는 9개의 MB들(341-349)이 존재한다. M 번째 매크로블록과 관련한 위치 및 블록 행 번호를 보여주는 MB들이 도시된다. M은 현재 매크로블록을 의미한다. 통상적으로 블록 행3은 블록 행4 전에 프로세싱된다. 이러한 실시예에서, 블록 행을 프로세싱하는 것은 행3(330) 및 행4(340)에 묘사된 것과 같은 매크로블록들의 행을 프로세싱하는 것을 의미한다. 일반적으로, 이는 소정 크기의 비디오 블록 행의 프로세싱을 의미한다.
H.264, MPEG-4, 및 H.263 등과 같은 다양한 표준에서 매크로블록(MB)(345)과 관련한 모션 벡터들을 계산할 때, 이웃한 MB(344), MB(335), 및 MB(336)(또는 MB(336)이 이용불가능할 경우, MB(334))의 모션 벡터들 및 MB 모드의 이전 정보를 갖는 것은 바람직할 수도 있다. 예를 들어, H.264에서, P-프레임에 대한 인터 모드들은 인터 16×16, 인터 16×8, 인터 8×16, 인터 8×8일 수 있다. 만일 인터 8×8 모드인 경우, 추가의 파티션이 인터 8×4, 인터 4×8, 또는 인터 4×4 모드들 을 선택하도록 구성될 수도 있다. 모드는 이들의 타입(인터)뿐만 아니라 크기에 의존한다. 인트라 모드 및 스킵 모드가 존재할 수 있다. 비록 스킵 모드를 호출하는 다른 조건이 존재할지라도, 스킵 모드를 호출하는 하나의 조건은 MV가 MVP와 동일할 때이다.
예를 들어, 모션 추정은 통상적으로 비디오 인코딩의 소정의 다른 프로세싱보다 더 많은 양의 계산 리소스들을 필요로 한다. 이러한 이유로, 계산 복잡도를 감소시킬 수 있고, 압축율을 향상시키는데 도움을 줄 수 있는 방식으로 모션 추정을 실행하는 것이 매우 바람직하다. 개시된 모션 추정 기술들은 다수의 공간 해상도들에서 탐색을 실행하는 탐색 방식을 이용함으로써 이러한 목적들을 촉진시킬 수도 있으며, 그로 인해 정확도에서 소정의 손실 없이 계산 복잡도를 감소시킨다. 게다가, 왜곡 측정으로도 알려진, 인코딩 모션 벡터들의 비용을 포함하는 비용 함수가 제안된다. 모션 추정기는 또한 비디오 인코딩의 정확도를 개선하기 위해 탐색 공간의 다수의 후보 위치들을 사용할 수도 있으며, 다수의 후보들 주위의 탐색 영역은 프로그램 가능할 수도 있으며, 결국 프로세스를 프레임율 및 픽쳐 크기로 스케일링 가능하게 한다. 끝으로, 모션 추정기는 예를 들어, 4×8 비디오 블록들, 8×4 비디오 블록들, 8×8 비디오 블록들, 8×16 비디오 블록들, 8×16 비디오 블록들, 16×8 비디오 블록들 등과 같은 다양한 큰 블록 형상들에 대한 비용을 획득하기 위해, 많은 소형의 정사각형 비디오 블록들, 예를 들어, 4×4 비디오 블록들에 대한 비용 함수들을 결합할 수도 있다. 많은 연산 및 계산을 위해, 모션 벡터 예측자(MVP)는 모션 벡터 예측자로부터 벗어나는 모션 벡터들에 대한 비용 팩터를 부가하도록 사용된다. MVP는 또한 추가의 초기 모션 벡터를 제공할 수도 있는데, 이는 특히 다단계 탐색의 높은 해상도 단계들에서 탐색들을 한정하기 위해 사용될 수도 있다. 적어도 부분적으로 모션 벡터 예측 값들에 의존하는 왜곡 측정 값들의 계산은 비용 팩터의 일부이다. 왜곡 측정 값들은 상이한 모션 벡터들을 인코딩할 필요가 있는 비트들의 수를 양자화하는데 도움을 줄 수도 있다.
도4는 모션 추정이 프레임 전체에서 어떻게 행해지는 지의 프로세스를 설명하는 흐름도이다. 우선 셋업 절차(400)가 개시된다. 셋업의 일부로서, 기준(과거 또는 미래) 프레임은 메모리로 로딩(402)된다. 예를 들어, 메모리는 로컬 메모리 또는 오프 메모리 후보 RAM일 수도 있다. 이어 현재 프레임은 메모리로 로딩(404)된다. 예를 들어, 메모리는 로컬 메모리 또는 오프 메모리 인코딩 RAM의 일부일 수도 있다. 이는 블록 행에서 현재의 매크로블록 M의 선택에 선행된다. 이어 탐색 공간이 현재 매크로블록 M 주위에서 식별(460)된다. 일단 탐색 공간이 기준 프레임(408)으로부터 식별되면, 현재 프레임(410)에서 두 개의 비디오 블록행에 대한 2-D 스테이지 파이프 라인을 프로세싱하는 동작이 행해진다. 이는 1-D 스테이지 파이프라인을 통해 한번에 하나의 비디오 블록 행의 프로세싱만을 고려하는 현재 기술에 비해 진보적이다. 각각의 2-D 단계 파이프 라인 동작이 행해진 후, 결정 블록(412)은 두 개의 블록 행들의 마지막에 도달했는 지를 체크한다. 만일 두 블록 행들의 마지막에 도달하지 않으면(아니오), 기준 프레임에서 탐색 공간이 리프레시(414)되며, 현재의 프레임(410)에서 두 블록 행들에 대한 2-D 스테이지 파이프라인의 프로세싱이 계속된다. 만일 두 블록 행들의 마지막에 도달하면(예), 다른 체크가 결정 블록(416)에 의해 실행된다. 결정 블록(416)은 현재 프레임에서 최종 두 블록 행들의 마지막인지를 체크한다. 만일 현재 프레임에서 마지막 두 블록 행들의 마지막이 아니면(아니오), 다음 두 블록 행들(418)로의 증가 동작이 행해지며, 현재 프레임(410)에서 두 블록 행들에 대한 2-D 스테이지 파이프라인의 프로세싱이 계속된다. 만일 현재 프레임에서 최종 두 블록 행들의 마지막이면(예), 현재 프레임의 프로세싱이 종료한다.
모션 추정(ME)은 적어도 두 개의 엔진에 의해 비디오 블록을 프로세싱하는 것을 포함한다. 제1 엔진은 인출 엔진(FE)이며, 인코딩될 메모리로부터 비디오 블록들을 인출할 수도 있다. 제2 엔진은 왜곡을 최소화하는 유사한 매칭 블록을 탐색하기 위해 왜곡 메트릭을 이용한다. 제2 엔진은 정수 탐색 엔진(ISE)이며, 계층적 탐색을 사용할 수도 있으며, 탐색은 진행됨에 따라 더 세밀한 해상도로 실행된다. 비율 및 공간 탐색 엔진(FSE)인, 제3 엔진이 존재할 수도 있는데, 이는 왜곡을 최소화하는 유사한 매칭 블록을 탐색하기 위해 더 세밀한 해상도 탐색을 이용할 수도 있다. FSE는 시작 포인트로서 제2 엔진의 결과를 이용하거나 이용하지 않을 수도 있다. 예로든 목적을 위해, 모션 추정 기술의 개시는 3개의 엔진, 즉 인출 엔진(FE), 정수 탐색 엔진(ISE), 및 비율 및 공간 탐색 엔진(FSE)으로 행해진다. 이러한 3개의 엔진들은 연속한 방식으로 비디오 블록을 프로세싱한다. 통상적으로, 프로세싱의 지연을 최소화하기 위해, 3개의 엔진들은 3개의 스테이지에 대해 파이프라이닝된다. 즉, FE, ISE 및 FSE는 3개의 스테이지 파이프라인에서 모두 동시에 동작한다. 예를 들어, 스테이지 1 동안, FE는 메모리로부터 현재의 매크로블 록(M)을 인출하며, 동시에 매크로블록(M-1)의 코너의 정수 픽셀 앵커 포인트에 위치된 ISE는 기준(과거 또는 미래) 프레임으로부터 최적으로 부합하는 매크로블록을 탐색하기 위해 시도한다. 여전히, FE 및 ISE 엔진들과 동시에 동작하는 스테이지 1동안, 매크로블록(M-2)에서 부분적인 픽셀 앵커 포인트에 위치된 FSE는 기준(과거 또는 미래) 프레임으로부터 최적으로 부합하는 매크로블록을 탐색하기 위해 시도한다. 모션 벡터를 생성하기 위해 하나의 비디오 블록의 완전한 프로세싱을 완료하기 위해 3개의 스테이지가 필요하다. 3개의 스테이지의 마지막에서, 3개의 인출들, 실행된 3개의 정수 탐색들 및 실행된 3개의 비율 및 공간 탐색들을 가질 것이다. 통상적으로, 1차원(1D)의 3개의 스테이지 파이프라인은 하나의 비디오 블록 행에 대해 연속적으로 동작한다. 전체 비디오 블록 행이 완전하게 프로세싱되기 전까지 어떠한 프로세싱도 제2 블록에서 발생하지 않는다.
도5는 1D인 3개의 스테이지 파이프라인의 개념을 설명한 도면이다. 도시된 바와 같이, 행3(330)의 대부분은 프로세싱되고 있다. 도5의 상부 좌측 코너에서, 3개의 엔진 중 두 개는 3, M-3 MB 파이프라인(520)의 스테이지 1(501) 동안 구동하고 있다. FE는 매크로블록 3, M-3(322) 상에서 동작하며, ISE는 매크로블록 3, M-4(331) 상에서 동작한다. 3, M-3 MB 파이프라인(520)의 스테이지 2(502) 및 3, M-3 MB 파이프라인(520)의 스테이지 3(503)은, FSE가 3, M-3 MB(매크로블록)(332) 상에서 완료된 후 모션 벡터들의 생성을 완료한다. 앞서 설명한 바와 같이, 각각의 스테이지에서, 인출, 정수 탐색, 및 비율 및 공간 탐색이 실행된다. 3, M-4 매크로블록(331)의 초기 인출을 제외하고, 도3의 행3(330)에서 모든 매크로블록들(MB) 은 도5에서 프로세싱된다. 1-D 파이프라인들(521-527)의 경우, 다음 파이프라인의 스테이지1은 언제나 이전의 파이프라인의 스테이지2이다. 다음 파이프라인의 스테이지2는 이전의 파이프라인의 스테이지3이다. 따라서, 스테이지(502-510)는 어떤 파이프라인이 현재 동작하는 지에 의존하여, 파이프라인에서 스테이지1, 스테이지2 또는 스테이지 3일 수도 있다. 일반적으로, 1D 파이프라인을 이용하여 N 매크로블록들(즉, 비디오 블록들)을 프로세싱하는 것은 N+2 스테이지들을 필요로 한다.
주어진 매크로블록의 경우, 1D 파이프라인 기술은 현재의 ISE가 자신의 이익을 위해 이전의 모션 블록의 FSE 결과를 이용하지 않게 강제한다. 예를 들어, FE가 인코딩 데이터를 인출하고 MB(335)를 위해 메모리를 업데이트할 때, ISE는 MB(334)을 위해 정수 탐색을 실행하고, FSE는 MB(333)을 위해 비율 탐색 및 공간 추정을 실행한다. 1D 파이프라인이 갖는 고유한 문제는 ISE가 자신의 좌측에 이웃한 MB의 모드들 및 최종 모션 벡터들(MVs)DMF 알지 못하며, 결국 모션 벡터 예측자들(MVPs)의 정밀한 추정을 획득할 수 없다는 것이다. 그 결과, 모션 벡터 보상은 약간 오프될 수도 있다. 따라서, 1D 파이프라인 기술을 이용함으로써, (MV들을 생성하는) 모션 추정 및 (MVP들을 생성하는) 모드 결정 사이의 상호 의존성이 존재한다.
모션 추정과 모션 결정 사이의 상호 의존성을 해결하는 모션 추정 기술은 도6에 도시된다. 도6은 모든 관련된 이웃 MB 모드들 및 MB들의 ISE 선행 정보를 허용하는 모션 추정 기술인, 3 스테이지 2차원 파이프라인을 도시하는 도면의 예이다. 도6에서, 두 개의 비디오 블록 행들은 핑퐁 방식으로 프로세싱된다. 핑 부분 동안, 제1 비디오 블록 행으로부터 두 개의 비디오 블록이 프로세싱되며, 동시에 다른 비디오 블록 행에 대한 프로세싱이 발생한다. 퐁 부분 동안, 제1 비디오 블록 상에서 다른 비디오 블록이 프로세싱되는 반면, 제2 비디오 블록 행으로부터 두 개의 비디오 블록이 프로세싱된다.
도6의 상부 좌측 코너에는 3, M-0 MB 2D 파이프라인(621)의 스테이지1(601)이 도시된다. FSE가 매크로블록 3, M-1(334)에서 동작하는 동안, FE는 매크로블록 3, M-0 335 상에서 동작하며, ISE는 매크로블록 4, M-3(342) 상에서 동작한다. 3, M-0 MB 2D 파이프라인(621)의 스테이지2(602) 동안, FSE가 매크로블록 4, M-3(342) 상에서 동작하는 반면, FE는 매크로블록 4, M-2(343) 상에서 동작하고, ISE는 매크로블록 3, M-0(335) 상에서 동작한다. 3, M-0 MB 2D 파이프라인(621)의 스테이지3(603) 동안, FSE가 매크로블록 3, M-0(335) 상에서 동작하는 반면, FE는 매크로블록 3, M+1(336) 상에서 동작하고, ISE는 매크로블록 4, M-2(243) 상에서 동작한다. 3, M-0 MB 2D 파이프라인(61)의 완료 후, FSE 이후의 모션 벡터들의 생성은 3, M-0 MB(335) 상에서 완료된다. 스테이지(602-609)는 2D 파이프라인(622-627)을 완료하기 위해 전술한 바와 같이 사용될 수도 있다. 모든 "핑/퐁"-도6참조-은 하나의 행 상에서 FE/FSE 동작을 표현하는 반면, ISE는 다른 행에 존재한다. 핑퐁이라는 용어는 행들 사이의 역할의 스위칭과 관련된다. 예를 들어, "핑" 동안, FE/FSE는 행3 상에서 동작하며, ISE는 행4 상에서 동작한다. "퐁" 동안, FE/FSE는 행4 상에서 동작하며, ISE는 행3 상에서 동작한다.
2D 파이프라인을 사용하는 장점은 적어도 두 개의 상이한 행들로부터의 두 개의 매크로블록들이지만 근접한(본 예에서는 수평 위치) 매크로블록들이 탐색 영역의 대부분을 공유할 수도 있다는 것이다. 퐁은 핑으로부터의 탐색 영역을 재사용할 수 있기 때문에, 더 적은 인출들이 필요할 것이다. 이러한 핑퐁 방식에서의 프로세싱은 통신 버스 상에서의 대역폭을 감소시킨다. 탐색 영역을 업데이트하기 위한 외부 메모리에 대한 리프레시의 회수도 또한 현저하게 감소할 수도 있다. 탐색 영역을 업데이트하기 위한 외부 메모리에 대한 리프레시의 회수도 또한 현저히 감소될 수도 있다.
게다가, 매크로블록(345)은 관련된 이웃 매크로블록들(344, 335, 및 334)(또는 만일 334가 이용불가능한 경우 336)로부터 모드 결정을 이용할 수 있다. 모드 결정의 사용은 관련된 이웃 매크로블록들 각각으로부터의 모션 벡터 예측자가 모션 벡터의 정밀한 추정의 생성을 지원할 수도 있음을 의미한다. 2D 핑퐁 파이프라인 없이, 이웃한 매크로블록(344)으로부터의 정밀한 모션 벡터 예측자는 매크로블록(345)의 모션 벡터 생성의 계산에서 이용가능하지 않을 수도 있다. 따라서, 2차원 파이프라인은 모션 추정 비디오 블록과 모드 결정 사이의 상호 의존성을 해결한다.
다수의 실시예가 설명되었다. 상기 기술은 모션 추정을 향상시킴으로써 비디오 인코딩을 개선할 수도 있다. 상기 기술은 하드웨어, 소프트웨어, 펌웨어 또는 소정의 이들의 조합으로 구현될 수도 있다. 만일 소프트웨어로 구현될 경우, 기술은 비디오 시퀀스들을 인코딩하는 장치에서 실행될 때, 하나 이상의 전술한 방법들을 실행하는 프로그램 코드를 포함하는 컴퓨터 판독 가능 매체와 관련된다. 이러한 경우, 컴퓨터 판독 가능 매체는 동기식 동적 RAM(SDRAM), ROM, 비휘발성 RAM(NVRAM), EEPROM, 플래시 메모리 등과 같은 RAM을 포함할 수도 있다.
프로그램 코드는 컴퓨터 판독 가능 명령들의 형태로 메모리에 저장될 수도 있다. 이러한 경우, DSP와 같은 프로세서는 설명된 기술 중 하나 이상을 실행하기 위해 메모리에 저장된 명령들을 실행할 수도 있다. 소정의 경우, 상기 기술들은 인코딩 프로세스를 가속화하기 위해 모션 추정기와 같은 다양한 하드웨어 컴포넌트를 호출하는 DSP에 의해 실행될 수도 있다. 다른 경우, 비디오 인코더는 마이크로프로세서, 하나 이상의 ASIC, 하나 이상의 필드 프로그램 가능 게이트 어레이들(FPGA), 또는 소정의 다른 하드웨어-소프트웨어 조합으로 구현될 수도 있다. 다양한 실시예들이 아래의 청구항의 사상 내에 있다.

Claims (28)

  1. 정밀한 모션 벡터들, 모션 벡터 예측자들, 및 현재 비디오 블록에 대한 모드 결정을 생성하기 위해 2차원 파이프라인을 이용하는 모션 추정기를 갖는 장치로서,
    상기 2차원 파이프라인은, 상기 정밀한 모션 벡터의 생성에 앞서 상기 현재 비디오 블록과 동일한 비디오 블록 행 상의 선행 비디오 블록, 모션 벡터 예측자, 및 현재 비디오 블록의 모드 결정을 포함하는 관련된 이웃 비디오 블록들의 모드 결정 계산들, 모션 벡터 예측자들, 및 완료된 모션 벡터들을 이용하는,
    2차원 파이프라인을 이용하는 모션 추정기를 갖는 장치.
  2. 제1항에 있어서,
    정수 탐색 엔진이 일 비디오 블록 행 상에서 동작하는 동안, 상기 2차원 파이프라인은 다른 비디오 블록 행상에서 동작하는 비율 공간 탐색 엔진 및 인출 엔진을 이용하는 것을 특징으로 하는 2차원 파이프라인을 이용하는 모션 추정기를 갖는 장치.
  3. 제1항에 있어서,
    상기 2차원 파이프라인은 상기 파이프라인에서 적어도 두 스테이지들에서의 프로세싱을 포함하는 것을 특징으로 하는 2차원 파이프라인을 이용하는 모션 추정기를 갖는 장치.
  4. 제1항에 있어서,
    상기 비디오 블록은 매크로블록, 8×8 블록, 8×4 블록, 4×8 블록, 4×4 블록 또는 2×2 블록인 것을 특징으로 하는 2차원 파이프라인을 이용하는 모션 추정기를 갖는 장치.
  5. 모션 추정기를 포함하는 장치에서, 현재 비디오 블록에 대한 정밀한 모션 추정 파라미터들을 생성하기 위해 2차원 파이프라인 프로세싱을 실행하는 방법으로서,
    상기 2차원 파이프라인 프로세싱은 현재 비디오 블록의 정밀한 모션 추정 파라미터들의 생성에 앞서 상기 현재 비디오 블록과 동일한 비디오 블록 행 상의 선행 비디오 블록을 포함하는, 이웃 비디오 블록들의 미리 계산된 모션 추정 파라미터들을 식별하는 단계를 포함하는,
    2차원 파이프라인 프로세싱을 실행하는 방법.
  6. 제5항에 있어서,
    상기 모선 추정 파라미터들은 상기 현재 비디오 블록으로부터의 모션 벡터, 상기 현재 비디오 블록과 관련된 모션 벡터 예측자들, 및 모드 결정인 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 방법.
  7. 제5항에 있어서,
    상기 2차원 파이프라인 프로세싱은, 정수 탐색 엔진이 일 비디오 블록 행상에서 동작하는 동안, 다른 비디오 블록 행상에서 동작하는 비율 공간 탐색 엔진 및 인출 엔진을 이용하는 단계를 포함하는 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 방법.
  8. 제5항에 있어서,
    상기 2차원 파이프라인 프로세싱은 상기 파이프라인에서 적어도 두 스테이지를 포함하는 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 방법.
  9. 제5항에 있어서,
    상기 비디오 블록은 매크로블록, 8×8 블록, 8×4 블록, 4×8 블록, 4×4 블록 또는 2×2 블록인 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 방법.
  10. 현재 비디오 블록에 대한 정밀한 모션 추정 파라미터들을 생성하기 위해 2차원 파이프라인 프로세싱을 실행하는 수단을 포함하는 모션 추정기를 갖는 장치로서,
    상기 2차원 파이프라인 프로세싱은, 현재 비디오 블록의 정밀한 모션 추정 파라미터들의 생성에 앞서, 상기 현재 비디오 블록과 동일한 비디오 블록 행상에서 선행 비디오 블록을 포함하는, 관련된 이웃 비디오 블록들의 미리 계산된 모션 추정 파라미터들을 식별하는 수단을 갖는,
    2차원 파이프라인 프로세싱을 실행하는 수단을 포함하는 모션 추정기를 갖는 장치.
  11. 제10항에 있어서,
    상기 모션 추정 파라미터들은 상기 현재 비디오 블록으로부터의 모션 벡터, 상기 현재 비디오 블록과 관련된 모션 벡터 예측자들, 및 모드 결정인 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 수단을 포함하는 모션 추정기를 갖는 장치.
  12. 제10항에 있어서,
    상기 2차원 파이프라인 프로세싱은, 정수 탐색 엔진이 일 비디오 블록 행상에서 동작하는 동안, 다른 비디오 블록 행상에서 동작하는 비율 공간 탐색 엔진 및 인출 엔진을 이용하는 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 수단을 포함하는 모션 추정기를 갖는 장치.
  13. 제10항에 있어서,
    상기 2차원 파이프라인 프로세싱은 상기 파이프라인에서 적어도 두 스테이지를 포함하는 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 수단을 포 함하는 모션 추정기를 갖는 장치.
  14. 제10항에 있어서,
    상기 비디오 블록은 매크로블록, 8×8 블록, 8×4 블록, 4×8 블록, 4×4 블록 또는 2×2 블록인 것을 특징으로 하는 2차원 파이프라인 프로세싱을 실행하는 수단을 포함하는 모션 추정기를 갖는 장치.
  15. 실행될 때, 현재 비디오 블록에 대한 모션 벡터를 생성하는 명령들이 저장된 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은,
    현재 비디오 블록에 대한 정밀한 모션 추정 파라미터들을 생성하기 위해 2차원 파이프라인 프로세싱을 실행하기 위한 명령들의 세트를 포함하며, 상기 2차원 파이프라인 프로세싱은 상기 현재 비디오 블록의 정밀한 모션 추정 파라미터들의 생성에 앞서, 상기 현재 비디오 블록과 동일한 행상에서 선행 비디오 블록을 포함하는 이웃한 비디오 블록들의 미리 계산된 모션 추정 파라미터들을 식별하는 명령들을 더 포함하는,
    컴퓨터 프로그램 제품.
  16. 제15항에 있어서,
    상기 모션 추정 파라미터들은 상기 현재 비디오 블록으로부터의 모션 벡터, 상기 현재 비디오 블록과 관련된 모션 벡터 예측자들, 및 모드 결정인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  17. 제15항에 있어서,
    상기 2차원 파이프라인 프로세싱은, 정수 탐색 엔진이 일 비디오 블록 행상에서 동작하는 동안, 다른 비디오 블록 행상에서 동작하는 비율 공간 탐색 엔진 및 인출 엔진의 사용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  18. 제15항에 있어서,
    상기 2차원 파이프라인 프로세싱은 상기 파이프라인에서 적어도 두 스테이지를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  19. 제15항에 있어서,
    상기 비디오 블록은 매크로블록, 8×8 블록, 8×4 블록, 4×8 블록, 4×4 블록 또는 2×2 블록인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  20. 비디오 인코딩 방법으로서,
    인코딩될 현재 비디오 블록에 인접한 비디오 블록들에 대해 미리 계산된 모션 벡터들에 기초하여 모션 벡터 예측자를 계산하는 단계;
    상기 현재 비디오 블록을 인코딩하기 위해 사용된 예측 블록에 대한 탐색에 서 상기 모션 벡터 예측자를 이용하는 단계; 및
    2차원 파이프라인을 이용하여 적어도 두 개의 비디오 블록 행들을 프로세싱함으로써 적어도 하나의 모션 벡터와 적어도 하나의 모션 벡터 예측자를 계산하는 단계를 포함하는,
    비디오 인코딩 방법.
  21. 제20항에 있어서,
    인코딩될 상기 현재 비디오 블록과 상기 최적 예측 블록 사이의 차이들을 나타내는 차이 블록을 생성하는 단계를 더 포함하는 것을 특징으로 하는 비디오 인코딩 방법.
  22. 제21항에 있어서,
    적어도 부분적으로 상기 모션 벡터 예측 값에 의존하는 왜곡 측정 값들을 계산하는 단계를 포함하는 상기 현재 비디오 블록을 인코딩하는데 사용되는 예측 비디오 블록에 대해 모션 벡터를 식별하는 단계를 더 포함하는 것을 특징으로 하는 비디오 인코딩 방법.
  23. 제22항에 있어서,
    상기 왜곡 측정 값들은 상이한 모션 벡터들을 인코딩하는데 필요한 비트들의 수를 정량화하는 것을 특징으로 하는 비디오 인코딩 방법.
  24. 제20항에 있어서,
    상기 현재 비디오 블록을 인코딩하기 위해 사용되는 상기 최적 예측 블록에 대한 상기 모션 벡터를 식별하기 위해 상이한 공간 해상도로 스테이지들에서 탐색들을 실행하는 단계를 더 포함하는 것을 특징으로 하는 비디오 인코딩 방법.
  25. 제20항에 있어서,
    상기 2차원 파이프라인은, 정수 탐색 엔진이 다른 비디오 블록 행상에서 동작하는 동안, 다른 비디오 블록 상에서 동작하는 비율 공간 탐색 엔진 및 인출 엔진을 이용하는 단계를 포함하는 것을 특징으로 하는 비디오 인코딩 방법.
  26. 비디오 인코딩 장치로서,
    상이한 모션 벡터들과 관련된 데이터의 양에 적어도 부분적으로 의존하는 왜곡 측정 값들을 계산하는 단계를 포함하는 현재 비디오 블록을 인코딩하기 위해 사용된 최적 예측 블록에 대한 모션 벡터를 식별하는 모션 추정기;
    인코딩될 상기 현재 비디오 블록과 상기 예측 비디오 블록 사이의 차이들을 나타내는 차이 블록을 생성하는 모션 보상기; 및
    적어도 두 개의 비디오 블록 행들에 대해 2차원 파이프라인을 사용함으로써 적어도 하나의 모션 벡터 및 적어도 하나의 모션 벡터 예측자의 계산을 포함하는,
    비디오 인코딩 장치.
  27. 제26항에 있어서,
    상기 모션 추정기는 상기 현재 비디오 블록을 인코딩하기 위해 사용된 상기 최적 예측 블록에 대한 상기 모션 벡터를 식별하도록 개별 공간 해상도들로 스테이지들에서 탐색들을 실행하는 것을 특징으로 하는 비디오 인코딩 장치.
  28. 제26항에 있어서,
    상기 비디오 인코딩 장치는 인코딩될 상기 현재 비디오 블록에 인접한 비디오 블록들에 대해 미리 계산된 모션 벡터들에 기초하여 모션 벡터 예측자를 계산하며, 상기 모션 벡터 예측자 값은 상기 스테이지들 중 적어도 하나에서 탐색을 한정하고 상기 왜곡 측정 값들을 계산하기 위해 사용되는 것을 특징으로 하는 비디오 인코딩 장치.
KR1020087008581A 2005-09-22 2006-09-22 비디오 인코딩을 위한 다차원 인접 블록 예측 KR100955152B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US71989105P 2005-09-22 2005-09-22
US60/719,891 2005-09-22
US11/533,745 2006-09-20
US11/533,745 US8761259B2 (en) 2005-09-22 2006-09-20 Multi-dimensional neighboring block prediction for video encoding

Publications (2)

Publication Number Publication Date
KR20080046238A true KR20080046238A (ko) 2008-05-26
KR100955152B1 KR100955152B1 (ko) 2010-04-28

Family

ID=37810755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008581A KR100955152B1 (ko) 2005-09-22 2006-09-22 비디오 인코딩을 위한 다차원 인접 블록 예측

Country Status (7)

Country Link
US (1) US8761259B2 (ko)
EP (1) EP1958448B1 (ko)
JP (1) JP2009510845A (ko)
KR (1) KR100955152B1 (ko)
CN (1) CN101305615B (ko)
AT (1) ATE518372T1 (ko)
WO (1) WO2007038357A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060120612A1 (en) * 2004-12-08 2006-06-08 Sharath Manjunath Motion estimation techniques for video encoding
US7683910B2 (en) * 2006-06-29 2010-03-23 Microsoft Corporation Strategies for lossy compression of textures
KR100827093B1 (ko) * 2006-10-13 2008-05-02 삼성전자주식회사 영상 부호화 방법 및 장치
JP4898415B2 (ja) * 2006-12-19 2012-03-14 キヤノン株式会社 動画像符号化装置及び動画像符号化方法
US8127233B2 (en) * 2007-09-24 2012-02-28 Microsoft Corporation Remote user interface updates using difference and motion encoding
US8619877B2 (en) * 2007-10-11 2013-12-31 Microsoft Corporation Optimized key frame caching for remote interface rendering
US8121423B2 (en) * 2007-10-12 2012-02-21 Microsoft Corporation Remote user interface raster segment motion detection and encoding
US8106909B2 (en) * 2007-10-13 2012-01-31 Microsoft Corporation Common key frame caching for a remote user interface
EP2051530A2 (en) * 2007-10-17 2009-04-22 Electronics and Telecommunications Research Institute Video encoding apparatus and method using pipeline technique with variable time slot
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
KR101364195B1 (ko) 2008-06-26 2014-02-21 에스케이텔레콤 주식회사 움직임벡터 부호화/복호화 방법 및 그 장치
KR101522850B1 (ko) * 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
TWI404422B (zh) * 2010-04-14 2013-08-01 Himax Tech Ltd 階層式動作估計的方法與系統
KR20120016991A (ko) * 2010-08-17 2012-02-27 오수미 인터 프리딕션 방법
CN105592317B (zh) 2010-09-24 2018-08-28 太阳专利托管公司 图像解码方法及图像解码装置
AU2012216026B2 (en) * 2011-02-10 2016-04-28 Sun Patent Trust Moving picture coding method, moving picture coding apparatus, moving picture decoding method, moving picture decoding apparatus, and moving picture coding and decoding apparatus
TWI586155B (zh) * 2011-09-28 2017-06-01 Jvc Kenwood Corp A motion picture decoding apparatus, a motion picture decoding method, and a recording medium
CN102339592A (zh) * 2011-09-29 2012-02-01 中山大学 一种基于lcd控制器的显存压缩方法
TWI523497B (zh) * 2011-11-10 2016-02-21 Sony Corp Image processing apparatus and method
US20130235926A1 (en) * 2012-03-07 2013-09-12 Broadcom Corporation Memory efficient video parameter processing
US9277222B2 (en) * 2012-05-14 2016-03-01 Qualcomm Incorporated Unified fractional search and motion compensation architecture across multiple video standards
US8787689B2 (en) * 2012-05-15 2014-07-22 Omnivision Technologies, Inc. Apparatus and method for correction of distortion in digital image data
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
CN103327340B (zh) * 2013-06-20 2016-06-15 华为技术有限公司 一种整数搜索方法及装置
US9292899B2 (en) 2013-09-25 2016-03-22 Apple Inc. Reference frame data prefetching in block processing pipelines
US9224186B2 (en) 2013-09-27 2015-12-29 Apple Inc. Memory latency tolerance in block processing pipelines
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9715559B2 (en) * 2014-03-17 2017-07-25 Qualcomm Incorporated Hash-based encoder search for intra block copy
US10715818B2 (en) * 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US10602174B2 (en) 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US20200014945A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application acceleration
US20200014918A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application accelerator
US10291925B2 (en) * 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
US11025913B2 (en) 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US20190222858A1 (en) * 2019-03-26 2019-07-18 Intel Corporation Optimal out of loop inter motion estimation with multiple candidate support
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414469A (en) * 1991-10-31 1995-05-09 International Business Machines Corporation Motion video compression system with multiresolution features
GB9519923D0 (en) 1995-09-29 1995-11-29 Philips Electronics Nv Motion estimation for predictive image coding
US5652625A (en) * 1996-06-19 1997-07-29 United Microelectronics Corp. Multi-stage pipeline architecture for motion estimation block matching
JPH1023413A (ja) 1996-07-03 1998-01-23 Fuji Xerox Co Ltd 符号化装置
US6023296A (en) * 1997-07-10 2000-02-08 Sarnoff Corporation Apparatus and method for object based rate control in a coding system
US6690833B1 (en) * 1997-07-14 2004-02-10 Sarnoff Corporation Apparatus and method for macroblock based rate control in a coding system
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
CN1147159C (zh) 1999-04-27 2004-04-21 三星电子株式会社 实时运动图像编码的高速运动估计方法及其装置
TW550953B (en) 2000-06-16 2003-09-01 Intel Corp Method of performing motion estimation
CN1156168C (zh) * 2001-01-12 2004-06-30 北京航空航天大学 快速视频运动估计方法
WO2003041326A2 (en) * 2001-11-09 2003-05-15 Matsushita Electric Industrial Co., Ltd. Moving picture coding method and apparatus
JP4130783B2 (ja) * 2002-04-23 2008-08-06 松下電器産業株式会社 動きベクトル符号化方法および動きベクトル復号化方法
US7817717B2 (en) * 2002-06-18 2010-10-19 Qualcomm Incorporated Motion estimation techniques for video encoding
US6925123B2 (en) * 2002-08-06 2005-08-02 Motorola, Inc. Method and apparatus for performing high quality fast predictive motion search
US7555044B2 (en) * 2002-10-04 2009-06-30 General Instrument Corporation Frequency coefficient scanning paths for coding digital video content
JP4289126B2 (ja) 2003-11-04 2009-07-01 ソニー株式会社 データ処理装置およびその方法と符号化装置
KR101160640B1 (ko) 2003-12-30 2012-06-28 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리 방법
JP3879741B2 (ja) 2004-02-25 2007-02-14 ソニー株式会社 画像情報符号化装置および画像情報符号化方法
JP4577048B2 (ja) 2004-03-11 2010-11-10 パナソニック株式会社 画像符号化方法、画像符号化装置および画像符号化プログラム
US7606427B2 (en) * 2004-07-08 2009-10-20 Qualcomm Incorporated Efficient rate control techniques for video encoding
JP4145275B2 (ja) * 2004-07-27 2008-09-03 富士通株式会社 動きベクトル検出・補償装置
US20060120612A1 (en) * 2004-12-08 2006-06-08 Sharath Manjunath Motion estimation techniques for video encoding
US7813432B2 (en) * 2004-12-30 2010-10-12 Intel Corporation Offset buffer for intra-prediction of digital video
US9172973B2 (en) * 2005-04-01 2015-10-27 Broadcom Corporation Method and system for motion estimation in a video encoder
US7852940B2 (en) * 2005-10-20 2010-12-14 Qualcomm Incorporated Scalable motion estimation for video encoding
US8208548B2 (en) * 2006-02-09 2012-06-26 Qualcomm Incorporated Video encoding

Also Published As

Publication number Publication date
JP2009510845A (ja) 2009-03-12
WO2007038357A3 (en) 2007-05-18
EP1958448A2 (en) 2008-08-20
WO2007038357A2 (en) 2007-04-05
EP1958448B1 (en) 2011-07-27
CN101305615A (zh) 2008-11-12
KR100955152B1 (ko) 2010-04-28
CN101305615B (zh) 2011-06-08
ATE518372T1 (de) 2011-08-15
US20070110160A1 (en) 2007-05-17
US8761259B2 (en) 2014-06-24

Similar Documents

Publication Publication Date Title
KR100955152B1 (ko) 비디오 인코딩을 위한 다차원 인접 블록 예측
KR100964515B1 (ko) 비디오 인코딩을 위한 비-정수 픽셀 공유
US8582652B2 (en) Method and apparatus for selecting a coding mode
KR100739281B1 (ko) 움직임 추정 방법 및 장치
JP2008523724A (ja) 動画像符号化のための動き推定技術
US20060120455A1 (en) Apparatus for motion estimation of video data
US20090274213A1 (en) Apparatus and method for computationally efficient intra prediction in a video coder
KR20040036943A (ko) 화상 부호화 장치, 화상 부호화 방법, 화상 복호 장치,화상 복호 방법, 및 통신 장치
US20090274211A1 (en) Apparatus and method for high quality intra mode prediction in a video coder
US8194740B2 (en) Apparatus and method for compression-encoding moving picture
KR100602148B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
KR100617598B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
US20130170565A1 (en) Motion Estimation Complexity Reduction
KR100757832B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
KR100757831B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
KR100757830B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
KR100757829B1 (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
WO2008097104A1 (en) Method for pixel prediction with low complexity
KR20070063479A (ko) 1/4픽셀 움직임 벡터를 이용한 동영상 압축방법
JP4061505B2 (ja) 画像符号化装置および方法
KR101037070B1 (ko) 전역탐색기법에 의한 고속 움직임 예측 방법

Legal Events

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

Payment date: 20130329

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee