KR20080089624A - 고속 움직임 추정을 위한 시스템 및 방법 - Google Patents
고속 움직임 추정을 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20080089624A KR20080089624A KR1020087019010A KR20087019010A KR20080089624A KR 20080089624 A KR20080089624 A KR 20080089624A KR 1020087019010 A KR1020087019010 A KR 1020087019010A KR 20087019010 A KR20087019010 A KR 20087019010A KR 20080089624 A KR20080089624 A KR 20080089624A
- Authority
- KR
- South Korea
- Prior art keywords
- subblock
- cost
- macroblock
- lowest cost
- motion
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/57—Motion estimation characterised by a search window with variable size or shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/567—Motion estimation based on rate distortion criteria
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
현재 프레임 내의 현재 매크로블록에 대한 참조 프레임 내의 참조 매크로블록 또는 서브블록을 결정하는 고속 움직임 추정 시스템(203)은 메모리(711), 참조 매크로 블록 검색 회로(701), 서브블록 조합 검색 회로(703), 및 비교기 회로(705)를 포함한다. 참조 매크로블록 검색 회로(701)는 고속 움직임 추정 검색 패턴에 따라 참조 프레임 내의 각 매크로블록에 대하여 움직임 벡터, 복수의 차이 값, 및 비용 값을 결정하고, 움직임 벡터 및 차이 값들을 메모리(711)에 저장한다. 서브블록 조합 검색 회로(703)는 복수의 서브블록 움직임 모드들 각각에 대하여 복수의 최저 비용 서브블록 조합들 중 대응하는 것을 결정하기 위해 메모리에서 움직임 벡터 및 차이 값들을 검색한다. 비교기 회로(709)는 최저 비용 매크로블록을 결정하고 최저 비용 매크로블록과 최저 비용 서브블록 조합들 중에서 선택하여 참조 매크로블록을 결정한다.
비디오 인코딩, 프레임, 매크로블록, 서브블록
Description
본 발명은 일반적으로 비디오 인코딩에 관한 것으로, 더 구체적으로는 저 전력 소모 핸드헬드 멀티미디어 장치 및/또는 저 비트레이트(bitrate) 비디오 통신에 특히 유용한 비디오 인코더에서 움직임 추정을 위해 고속 움직임 검색을 수행하는 시스템 및 방법에 관한 것이다.
H.264라고도 알려진, AVC(Advanced Video Coding) 표준인 MPEG4(Motion Picture Experts Group)의 파트 10은, 보다 낮은 비트레이트로 또는 주어진 전송 레이트에서 향상된 비디오 품질로 비디오 신호의 송신을 가능하게 하기 위해 개발된 고급 압축 기법들을 포함한다. 이 새로운 표준은 보다 낮은 비트레이트로 보다 고품질의 스트리밍 비디오를 지원하고 또한 인터넷 기반 비디오 및 무선 애플리케이션 등을 가능하게 하기 위하여 종래의 표준의 비디오 압축 기법들보다 나은 성능을 발휘한다. 이 표준은 CODEC(인코더/디코더 쌍)을 정의하지 않고 대신에 비트스트림을 디코딩하는 방법과 함께 인코딩된 비디오 비트스트림의 구문(syntax)을 정의한다. 각 비디오 프레임은 세분(subdivide)되어 매크로블록(MB) 레벨에서 인코딩되고, 여기서 각 MB는 16x16 픽셀 블록(block of pixels)이다. MB는 또한, 보편 성의 손실 없이, 16X8, 8X16, 8X8, 8X4, 4X8, 4X4 등의 상이한 사이즈의 데이터의 서브블록들을 나타낼 수 있다. 본 명세서에서 사용될 때, "서브블록(sub-block)"이라는 용어는 16X16보다 작은 MB를 나타내기 위해 이용된다. 각 MB는 현재 프레임 내의 재구성된 MB들에 기초하여 예측 MB가 형성되는 '인트라프레임(intraframe)' 모드에서, 또는 참조 프레임들의 MB들에 기초하여 예측 MB가 형성되는 '인터프레임(interframe)' 모드에서 인코딩된다. 인트라프레임 인코딩 모드는 현재 프레임 내의 공간적 정보를 적용하고, 현재 프레임 내의 샘플들로부터 예측 MB가 형성된다. 인터프레임 인코딩 모드는 이전 및/또는 미래의 참조 프레임들로부터의 시간적 정보를 이용하여 움직임을 추정하여 예측 MB를 형성한다. 어느 쪽의 경우이든, 이전에 인코딩되고, 디코딩되고 재구성된 참조 프레임이 이용된다.
움직임 추정(ME: motion estimation)은 레이트-왜곡(R-D: rate-distortion) 이론에 의하여 양호한 비디오 압축을 성취하는 데 결정적이다. ME의 목적은 비디오 시퀀스의 프레임들 간의 시간적 중복성(temporal redundancy)을 감소시키는 것이다. ME 알고리즘은 이미지 프레임을 인코딩하기 위하여 적어도 하나의 참조 프레임을 이용하여 이미지 프레임에 대한 이미지 데이터를 예측한다. 최초의 픽셀 데이터와 대응하는 예측 픽셀 데이터 간의 산술적 차이를 취함으로써 차 이미지(difference image)가 결정된다. FSME(full search motion estimation)는 참조 프레임/프레임들 내의 미리 정해진 검색 범위 내의 각 픽셀 위치에서 움직임 검색을 수행하는 것이다. 통상적으로, 인코딩될 MB 또는 서브블록들과, 참조 프레임들 내의 대응하는 MB 또는 서브블록들 간의 최적 매치(best match)를 평가하기 위해 SAD(sum of absolute difference)가 이용된다. MB에 대하여, SAD 계산은 적어도 16x16 절대 차(absolute differences) 및 덧셈을 취한다. 만일 미리 정해진 범위 내에 N 픽셀, 예컨대, 48x48이 존재한다면, N회의 SAD 계산이 있을 것이다. 게다가, 16x8, 8x16, 8x8 등과 같은 서브블록 움직임 모드들에 대하여, ME 프로세스가 반복된다. 따라서, ME는 매우 CPU 및 메모리 위주의(CPU- and memory-bounded) 계산 집약적인(computationally intensive) 동작이지만, 수용 가능한 레이트-왜곡(rate-distortion)을 유지하면서 ME를 수행하는 간단하고 효과적인 방법을 찾아내는 것은 어려웠다. 더욱이, 전력 소모 및 채널 대역폭 제약으로 인해 무선 및 모바일 장치들에서의 가치 부가 멀티미디어 애플리케이션들(예컨대, 비디오 통신)이 제한된다. FSME 방법은 참조 CODEC(예컨대, JVM10.0)에서 구현되고, 거기서 SAD는 4x4 블록 레벨에서 계산되고 모든 7개의 움직임 모드들(16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4)에 대하여 합산된다(summed up). FSME가 모든 움직임 모드들 중에서 최적 움직임 벡터를 찾아내기 위해서는, 참조 프레임 내의 검색 범위 내의 각 픽셀 또는 서브픽셀 위치에 대하여 16개의 SAD 값들이 계산되고, 이는 그 계산량 때문에 무선 또는 모바일 애플리케이션들에서 비실용적이다. 둘째로, 저 비트레이트 통신 채널에 있어서, 8x8, 8x4, 4x8 및 4x4 등의 서브블록 모드들은 드물게 사용되므로 결과적으로 자원이 낭비된다.
인코더의 복잡성은 비디오를 이용한 멀티미디어 애플리케이션에 있어서 병목 현상이다. 이러한 현상은 특히 컴퓨팅 및 전력 자원들 및 송신 레이트가 제한되는 무선 및 모바일 장치들에서 두드러지게 나타난다. 수용 가능한 인코딩 효율 및 시 각적 품질을 제공하면서 자원들을 절약하기 위해 속도를 증대하고 계산을 감소시킴으로써 인터프레임 인코딩 프로세스를 능률화하는 것이 요망된다.
본 발명의 이익, 특징, 및 이점은 다음의 설명, 및 첨부 도면들에 관련하여 더 잘 이해될 것이다.
도 1은 본 발명의 일 실시예에 따라 구현된 인코더를 포함하는 비디오 시스템의 간략화 블록도이다.
도 2는 본 발명의 예시적인 실시예에 따라 구현된 도 1의 인코더의 간략화 블록도이다.
도 3은 참조 프레임으로부터의 정보를 이용한 인터프레임 인코딩을 이용하여 인코딩될 현재 프레임의 현재 MB를 예시하는 표상적(figurative) 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따라 고속 움직임 검색을 실행하기 위한 도 2의 ME 회로의 동작을 예시하는 순서도이다.
도 5는 예시적인 움직임 벡터들 및 8X8 SAD 값들을 보여주는 예시적인 참조 MB 및 예시적인 코로케이트된(collocated) MB를 예시하는 블록도이다.
도 6은 본 발명의 예시적인 실시예에 따라 움직임 벡터 및 8X8 SAD 값들을 저장하기 위한 테이블에 관한 도면이다.
도 7은 본 발명의 예시적인 실시예에 따라 고속 움직임 추정을 수행하기 위한 도 2의 ME 회로의 일부의 블록도이다.
다음의 설명은 이 분야의 통상의 기술자가 특정 응용 및 그 요건들의 상황 내에서 제공된 대로 본 발명을 실시하고 이용할 수 있게 하기 위해 제공된다. 그러나, 바람직한 실시예에 대한 다양한 변경들이 이 분야의 기술자에게는 명백할 것이고, 여기서 정의되는 일반 원리들은 다른 실시예들에 적용될 수 있다. 그러므로, 본 발명은 여기서 도시되고 설명된 특정 실시예들에 제한되어서는 안 되고, 여기서 개시된 원리들 및 신규 특징들과 일관성 있는 가장 폭넓은 범위가 주어져야 할 것이다.
도 1은 본 발명의 일 실시예에 따라 구현된 인코더(102)를 포함하는 비디오 시스템(100)의 간략화 블록도이다. 인코더(102)를 포함하는 송신기(101)의 입력에 비디오 정보가 제공된다. 인코더(102)는 그 비디오 정보를 적절한 비디오 표준(예컨대, MPEG-4, H.264 등)에 따라 인코딩하고 송신기(101)는 그 정보를 그것이 예정되어 있는 대상(targeted) 매체들 또는 매체에 따라 더 처리한다. 비디오 정보는 입력 비트스트림 IBS로서 채널(103)을 통하여 송신되어 출력 비트스트림 OBS로서 디코더(106)를 포함하는 수신기(105)에 제공된다. 예시적인 구성에서, 채널(103)은 무선 매체 등의 제약된 대역폭을 갖는 매체이다. 송신기(101)는 비디오 정보를 비트스트림 또는 RTP 패킷들 등의 내로 캡슐화(encapsulate)한다. 각 패킷은 비디오 프레임의 하나 또는 그 이상의 매크로블록을 포함한다. 인코더(102)는 아래에서 더 설명되는 바와 같이 본 발명의 실시예에 따라 고속 움직임 추정을 수행하도록 구성된다. 채널(103) 및 수신기(105)의 추가 상세는 본 발명의 충분하고 완전한 이해를 위해 불필요하므로 제공되지 않는다.
도 2는 본 발명의 예시적인 실시예에 따라 구현된 인코더(102)의 간략화 블록도이다. 프레임 저장소(201)는 인코딩을 위한 현재 프레임 F를 움직임 추정(ME) 회로(203)의 한 입력, 인트라프레임 예측 회로(205)의 한 입력, 결합기(combiner)(207)(예컨대, 가산기 또는 감산기 등)의 양의 입력, 움직임 보상(MC: motion compensation) 회로(211)의 한 입력, 및 모드 판정 회로(213)의 입력에 제공한다. 다른 프레임 저장소(209)는 참조 프레임(REF F)을 ME 회로(203)의 다른 입력 및 MC 회로(211)의 다른 입력에 제공한다. 프레임 저장소(209)는 인코딩을 위해 이용되는 참조 프레임 REF F를 포함하여 하나 또는 그 이상의 이전에 인코딩되고, 디코딩되고 재구성된 프레임들을 포함한다. ME 회로(203)는 그의 출력에서 움직임 추정 정보를 제공하고, 그 출력은 MC 회로(211)의 다른 입력 및 모드 판정 회로(213)의 다른 입력에 연결되어 있다. MC 회로(211)는 움직임 보상된 예측 정보(예컨대, 인터프레임 예측 MB) MC를 선택자 스위치(215)의 제1 입력 단자 S1에 제공한다. 선택자 스위치(215)는 입력 단자 S1 및 S2, 제어 입력 단자 C 및 선택된 입력을 그의 출력으로서 제공하는 공통 단자 CP를 갖는 SPDT(single-pole, double-throw)로서 예시되어 있다. 인트라프레임 예측 회로(205)는 인트라프레임 예측 정보(예컨대, 인트라프레임 예측 MB) IP를 모드 판정 회로(213)의 입력 및 스위치(215)의 입력 단자 S2에 제공한다. 모드 판정 회로(213)는 모드 판정 선택 신호 MSEL을 MC(움직임 보상된 인터프레임 MB) 또는 IP(인트라프레임 예측 MB) 간에 선택하기 위한 스위치(215)의 제어 단자 C에 제공하는 출력을 갖는다.
스위치(215)의 CP 단자는 기호 P로서 도시된 선택된 예측 MB를 결합기(207) 의 음의 입력, 및 도시된 실시예에서 가산기인 다른 결합기(217)의 양의 입력에 제공한다. 결합기(207)는 선택된 예측 MB P를 현재 프레임 F의 현재 MB로부터 감산하여 기호 R로서 예시된 나머지 MB를 변환 회로(219)의 입력에 제공한다. 변환 회로(219)는 이산 코사인 변환(DCT: discrete cosine transform) 등의 블록 변환을 수행하고, 기호 B로서 예시된 그 변환 결과를 출력한다. 변환 결과 B는 양자화 회로(221)에 제공되고, 양자화 회로(211)는 기호 X로서 예시된 양자화된 변환 계수들을 출력한다. X 변환 계수들은 엔트로피 인코드 회로(225)의 입력에 제공되고, 엔트로피 인코드 회로(255)는 채널(106)을 통한 송신을 위한, 그렇지 않다면 저장을 위한 압축된 비트스트림을 제공한다.
X 계수들은 역양자화 회로(227)의 입력에 제공되고, 역양자화 회로(227)는 기호 B'로서 예시된 추정 변환 정보(estimated transformed information)를 출력하고, 이것은 변환 결과 B의 추정된 또는 재구성된 버전을 나타낸다. 추정 변환 정보 B'는 역변환 회로(229)의 입력에 제공되고, 역변환 회로(229)는 기호 R'로서 예시된 추정 나머지 정보(estimation residual information)를 출력하고, 이것은 나머지 MB R의 재구성된 버전을 나타낸다. 재구성된 나머지 MB R'은 결합기(217)의 다른 양의 입력에 제공된다. 도시된 실시예에서, 결합기(217)는 R'에 P를 가산하여 필터링되지 않은 재구성된 MB를 생성하고, 이 MB는 재구성된 프레임 정보 RF의 일부가 된다. 재구성된 프레임 정보 RF는 인트라프레임 예측 회로(205)의 다른 입력 및 디블로킹(deblocking) 필터 회로(231)에 제공된다. 디블로킹 필터(231)는 (예컨대, H.264 사양에 따라) 재구성된 프레임 RF 정보를 필터링하고 그 필터링된 재구성된 프레임들을 RF 저장소(233)에 제공한다. RF 저장소(233)로부터의 하나 또는 2개의 이전에 인코딩되고 디코딩된 프레임들이 당업자들에게 알려진 바와 같이 인코딩할 목적으로 참조 프레임들로서 역할을 하기 위해 프레임 저장소(209)에 제공된다.
인코더(102)는 또한 양자화 파라미터(QP: quantization parameter)를 제공하는 레이트 컨트롤러(235)를 포함하는 것으로 도시되어 있다. QP는 ME 회로(203), 모드 판정 회로(213), 양자화 회로(221), 역양자화 회로(227), 및 디블로킹 필터 회로(231)를 포함하는, 인코더의 각종 회로들에 제공되어 그들에 의해 이용된다. QP는 아래에서 더 설명되는 바와 같이 움직임 모드 바이어스(motion mode bias)를 조정할 목적으로 ME 회로(203)에 제공되는 것으로 도시되어 있다.
본 발명은 인터프레임 인코딩에 이용되는 ME 회로(203)에 의해 수행되는 움직임 추정에 관한 것이다. 움직임 추정은 현재 프레임에서 인코딩되고 있는 현재 MB에 가장 근접하게 매칭하는 참조 프레임 내의 참조 MB를 검색하는 것을 수반한다. 참조 MB는 (단일 움직임 벡터를 갖는) 단일 참조 MB 또는 집합적으로 참조 MB를 형성하는 (다수의 움직임 벡터를 갖는) 함께 조합된 다수의 서브블록들의 형태로 된 것일 수 있다. 서브블록 조합들은, 예를 들면, 16X8 움직임 모드에 대한 2개의 16X8 서브블록, 8X16 움직임 모드에 대한 2개의 8X16 서브블록, 또는 8X8 움직임 모드에 대한 4개의 8X8 서브블록을 포함한다. 참조 MB로서 이용되는 임의의 서브블록 조합을 형성하는 서브블록들은 검색 패턴에서 MB들의 임의의 조합으로부터 선택될 수 있고 반드시 연속된(contiguous) 것은 아니다. 일 실시예에서는, 먼 저 정수 검색을 수행하여 정수 참조 MB를 찾아내고 그 후 참조 MB를 ME 회로(203) 내에서 ½ 또는 ¼ 펠(pel; 화소(picture element) 또는 픽셀(pixel))까지 보간(interpolate)하여 보다 정확한 참조 정보를 성취한다. 대안적으로는, 정수 검색을 서브픽셀 검색과 조합할 수 있고 또는 검색 자체를 움직임 추정 동안에 서브픽셀 레벨에서 수행할 수도 있다. ME 회로(203)는 하나 또는 그 이상의 움직임 벡터를 MC 회로(211)에 제공하고, MC 회로(211)는 계산된 움직임 벡터(들)를 이용하여 참조 프레임으로부터 인터프레임 예측 블록을 형성한다.
도 3은 참조 프레임(303)으로부터의 정보를 이용한 인터프레임 인코딩을 이용하여 인코딩될 현재 프레임(301)의 현재 MB를 도시하는 표상적 블록도이다. 현재 프레임(301) 내의 현재 MB는 "C"로 표기되어 있고 인코딩될 현재 프레임(301) 내의 다음 MB이다. 참조 프레임(303)은 CL로 표기된 코로케이트된(collocated) MB를 포함하고, 이것은 현재 프레임(301) 내의 현재 MB의 위치와 참조 프레임(303) 내의 동일한 상대적 위치에 위치한다. 현재 MB를 인코딩하기 위하여, ME 회로(203)는 현재 MB를 재구성하는 데 이용되는 적합한 참조 MB를 찾아내기 위해 참조 프레임(303)의 미리 정해진 검색 영역(305) 내에서 검색을 수행한다. FSME 방법에서는, 최소 SAD 값을 갖는 참조 MB를 찾아서 참조 프레임(303) 전체를 포함하기까지의 큰 검색 영역(305)이 검색된다. 검색 영역(305) 내에는 R로 표기된 제1 예시적 참조 MB가 도시되어 있다. 또 다른 예시적 참조 MB는 R1 및 R2로 표기된 2개의 16X8 서브블록을 포함하는 서브블록 조합으로서 도시되어 있다. SAD 값은 현재 프레임(301)으로부터 현재 MB 간의 전형적인 왜곡 측정치(distortion measure) 이고 검색 영역(305) 내에서 참조 MB를 선택하는데 이용된다. 현재 MB의 각 펠과 선택된 참조 MB의 대응 펠 간의 차이들의 절대값들을 함께 합산하여 선택된 MB와 관련된 SAD를 계산한다. 그 후 SAD 값을 움직임 모드 및 움직임 벡터들의 코딩 비용만큼 바이어스(bias)시킨다. 약간 바이어스된(small biased) SAD 값은 양호한 블록 매치(보다 작은 왜곡)를 의미하는 반면 크게 바이어스된(large biased) SAD 값은 불량한 블록 매치(보다 큰 왜곡)에 대응한다. 예를 들면, 대체로 직사각형 형상의 검색 영역에서, 참조 프레임(303)의 검색 영역(305) 내의 가장 상좌측 MB가 제1 SAD 값에 대한 시작 MB이고, 그 후 검색 영역의 상부 행 전체가 완료될 때까지 1펠씩 수평으로 전진하면서 다음 MB를 선택한다. 그 후 검색은 수직으로 1펠 아래쪽으로 전진하는 것을 제외하고 다시 검색 영역(305)의 가장 좌측으로 가서 시작되고, 그 후 검색은 다음 행에 대하여 한 번에 1펠씩 수평으로 우측으로 전진하면서 계속된다.
(참조 CODEC에 대하여 설명된 것과 같은) FSME는 계산 집약적이고 시간이 걸리는 소모적인 검색이고 멀티미디어 핸드헬드 장치 및/또는 저대역폭 응용을 포함한 많은 애플리케이션에 적합하지 않다. 그러한 제한된 계산 능력 및 대역폭 애플리케이션에서는, 검색을 줄이고 현재 MB를 인코딩하는 상대적 비용을 고려하는 것이 요망된다. 인코딩의 비용은 선택된 참조 MB와 관련된 각 움직임 벡터(MV)를 인코딩하는 비용과 조합된 SAD를 고려한다. 각 MV는 코로케이트된 MB에 관련하여 참조 프레임(303) 내의 선택된 참조 MB(서브블록 조합의 서브블록)의 위치를 정의하는 X, Y 성분들 또는 좌표들의 순서화된 쌍이다. 당업자라면 이해하는 바와 같이 X 좌표는 좌측에서 우측으로 증가하고 Y 좌표는 상부에서 하부로 증가한다. R로 표기된 참조 블록은 검색 영역(305) 내에서 움직임 벡터(307)에 의해 정의된 코로케이트된 블록과 관련한 위치에 도시되어 있다. 움직임 벡터(307)는 코로케이트된 MB의 상좌측 펠과 참조 MB의 상좌측 펠 사이에 정의된다. X, Y 좌표들은, X=0 및 Y=0로 정의되는, 코로케이트된 MB의 상좌측 펠과 관련된다. 따라서, X 값은 코로케이트된 MB에 관련한 R 참조 MB의 수평 변위를 정의하고 Y 값은 수직 변위를 정의한다. 당업자라면 이해하는 바와 같이, 참조 MB의 움직임 벡터를 인코딩하는 비용은 현재 MB에 대한 미디언 MB에 관련하여 결정된다. 참조 MB의 움직임 벡터가 미디언 MV에 근접할수록, 움직임 벡터에 대하여 인코딩하는 비용은 더 낮아진다. 인코딩의 비용은, 각 미디언 MV와 참조 MB의 대응하는 움직임 벡터(들) 간의 차이에 기초하는, 선택된 참조 MB의 움직임 벡터(들)를 인코딩하는 비용과 조합된 SAD 값으로서 결정된다. 따라서, 비교적 작은 SAD를 갖는 참조 MB가 코로케이트된 MB로부터 비교적 멀리 있는 경우에 그것의 움직임 벡터를 인코딩하는 비교적 높은 비용이 있다면 그러한 참조 MB는 기각(reject)될 수 있다. 약간 더 큰 SAD를 가지면서도 코로케이트된 MB에 상당히 더 근접한 참조 MB는 그것의 MB를 인코딩하는 데 보다 적은 비용을 갖고, 따라서 보다 작은 전체 비용을 가질 수 있다.
본 발명의 실시예에 따른 고속 ME 검색 방법에서는, 다수의 잠재적 시작 MB들이 검사되고 인코딩에 관하여 최소 비용 값을 갖는 것이 선택된다. 그 후 그 선택된 시작 MB에서 시작하여 선택된 검색 패턴에 따라 고속 검색이 수행된다. 일 실시예에서, 잠재적 시작 MB들은 코로케이트된 MB, (그의 MV를 인코딩하는 데 최저 비용을 갖고 잠재적으로 비교적 낮은 SAD를 갖기 때문에) 미디언 MV와 관련된 시작 MB, 및 이웃 및 인접 매크로블록들 각각의 움직임 벡터와 관련된 시작 MB들 각각을 포함한다. 당업자라면 이해하는 바와 같이, 현재 프레임(301)은, 현재 MB의 바로 위쪽에 있고 "T"로 표기된 상부 MB, 그 상부 MB의 바로 우측에 있고 "TR"로 표기된 상부 우측 MB, 현재 MB의 바로 좌측에 있고 "L"로 표기된 좌측 MB, 및 상부 MB의 바로 좌측에 있고 "TL"로 표기된 상부 좌측 MB를 포함하여, 현재 MB에 인접하거나 이웃한 몇몇 MB들을 포함한다. TR 매크로블록이 이용 가능하지 않다면, 그 TR 블록 대신 TL MB가 이용된다는 것을 제외하고 T, L 및 TR 이웃 MB들의 움직임 벡터들이 통상적으로 고려된다.
일단 시작 MB가 선택되면, 검색은 미리 정해진 검색 패턴에 따라 16X16 MB들을 검사하는 것으로 시작된다. 본 발명은 어떤 특정 검색 방법 또는 패턴에도 제한되지 않는다. 이는 몇몇 방법 및 패턴이 알려져 있고 고려되기 때문이다. 본 발명의 일 실시예에서는, 예를 들면, 수브라마니얀 등(Subramaniyan et al.)의 명의로 2005년 8월 5일에 발행된 "Method And Apparatus For Performing High Quality Fast Predictive Motion Search"라는 표제의 미국 특허 6,925,123호에서 도시되고 설명된 것에 따라 나선형 검색(spiral search) 패턴이 선택되며, 모든 의도와 목적을 위해서 참조로서 본 명세서에 통합된다. 지그재그 패턴, 다이아몬드 패턴 등의 대안적인 검색 패턴들이 고려된다.
도 4는 본 발명의 예시적인 실시예에 따라 고속 움직임 검색을 실행하기 위한 ME 회로(203)의 동작을 도시하는 순서도이다. 순서도는 재구성된 참조 프레 임(303)으로부터의 참조 정보를 이용하여 각 MB의 인트라프레임 인코딩을 판정하기 위해 수행된다. 제1 블록 401에서는, 움직임 모드 값 MODE가 "널(NULL)"로(또는 다르게는 0 또는 임의의 다른 초기값으로) 초기화된다. 다음 블록 403에서는, 움직임 검색을 수행하기 위한 다음 움직임 모드를 선택하도록 MODE 값이 증가되거나 또는 업데이트된다. 움직임 모드들은 16X16, 16X8, 8X16 및 8X8의 순서로 수행된다. 일 실시예에서, 본 발명은 표준에 따라 추가 움직임 모드들 8X4, 4X8 및 4X4를 고려한다. 그러나, 전술한 바와 같이, 이들 추가 모드들은 상당한 양의 계산, 복잡도 및 대역폭을 추가하며 따라서 통상적으로는 무시된다. 일 실시예에서, 모드 값은 제로(0)로 초기화되고 움직임 모드들을 통해 나아가기 위해 1씩 증가되는 플래그 값이고, 여기서 1의 모드 값은 16X16에 대한 것이고, 2는 16X8에 대한 것이고, 3은 8X16에 대한 것이고, 4는 8X8에 대한 것이다. 또한 블록 403에서는, 현재 MB에 대한 비용 값 J가 제로(0)로 초기화되고 움직임 벡터 인덱스 값 M이 1로 설정된다.
다음 블록 405에서는, 비용 값 J가 현 움직임 모드에 대한 레이트-왜곡(R-D) 모드 바이어스만큼 증가된다. 일 실시예에서는, 16X16 움직임 모드에 대한 제1 반복(iteration)에 대하여, 모드 바이어스는 비용 효율성 때문에 최저의 것으로, 즉 하나의 움직임 벡터만으로 설정된다. 당업자라면 이해하는 바와 같이 16X8 및 8X16 움직임 모드들은 각각 (각 MB마다) 2개의 서브블록을 필요로 하고 따라서 양의 바이어스 값을 갖는다. 8X8 움직임 모드는 MB마다 4개의 서브블록을 갖고 따라서 최대의 모드 바이어스를 갖는다. 일 실시예에서, 16X16, 16X8, 8X16 및 8X8에 대한 바이어스 값들은 모드 정보를 인코딩하는 데 필요한 총 비트 수, 예컨대, 각각, 1, 3, 3, 및 5에 따라 결정되고, 총 비트 수는 레이트 컨트롤러(도시되지 않음)로부터의 양자화 파라미터(QP)에 의해 더 가중된다. 다음 블록 407에서는, 표준에 따라 결정되는 현재 모드 및 서브블록 방위(sub-block orientation)에 대하여 미디언 MV가 결정된다. 미디언 MV는, 당업자라면 이해하는 바와 같이 이웃 MB들의 움직임 벡터들에 기초하고 그 미디언 MV에서 벗어나는 각 움직임 벡터를 인코딩하는 비용을 판정하는 데 있어서 비교 목적으로 이용된다. 서브블록 방위는 MB 내의 서브블록의 상대적 위치를 나타낸다. 아래에서 더 설명되는 바와 같이, 16X16 움직임 모드에 대하여, 16X8 및 8X16 움직임 모드의 상위/하위 또는 좌측/우측 서브블록들의 쌍의 각각에 대하여 각각, 그리고, 8X8 움직임 모드의 4개의 서브블록들의 각각에 대하여 개별 미디언 MV가 결정된다.
다음 블록 409에서는, 움직임 모드가 16X16인지가 문의된다. 순서도의 제1 반복에서는, 제1 움직임 모드가 16X16이고 따라서 동작은 블록 409로부터 블록 437로 진행한다. 블록 437에서는, 참조 프레임(303) 내의 복수의 잠재적 시작 MB들 중의 각 시작 MB에 대하여 SAD 값 및 대응하는 움직임 벡터가 결정된다. 전술한 바와 같이, 본 발명에 따른 일 실시예에서의 잠재적 시작 MB들은 코로케이트된 MB, 미디언 MV와 관련된 시작 MB, 및 이웃 MB들(T, TR 및 L 또는 TL, T 및 L)의 각각의 움직임 벡터와 관련된 시작 MB들의 각각을 포함한다. 또한, 각 잠재적 시작 MB에 대하여 비용 값 COST가 결정되고, 여기서 COST 값은 각 잠재적 시작 MB에 대하여 SAD 값과 대응하는 움직임 벡터를 인코딩하는 비용을 조합하여 결정된다.
각 시작 MB에 대한(및 그 후 각 참조 MB에 대한) 16X16 SAD 값은 모든 256 펠 차이 값들의 절대값들을 합산함으로써 바로 결정될 수 있다. 다른 실시예에서, 각 16X16 MB는 4개의 8X8 서브블록들로 분할되고 각 8X8 서브블록에 대하여 SAD 값이 결정된다. 도 5는 예시적인 움직임 벡터들 및 8X8 SAD 값들을 보여주는 예시적인 참조 MB(503) 및 예시적인 코로케이트된 MB(501)를 도시하는 블록도이다. 도시된 바와 같이, 참조 MB(503)는 4개의 동일 사이즈의 8X8 서브블록들로 분할된다. 상좌측 서브블록에 대한 값 SAD1, 상우측 서브블록에 대한 값 SAD2, 하좌측 서브블록에 대한 값 SAD3, 및 하우측 서브블록에 대한 값 SAD4를 포함하여, 각각에 대해 SAD 값이 계산된다. 4개의 8X8 SAD 값을 계산하는 것의 이점은 이 8X8 SAD 값들로부터 다른 움직임 모드들 16X16, 16X8, 및 8X16에 대한 SAD 값들이 도출될 수 있다는 것이다. 하나의 16X16 SAD 값은 모든 4개의 8X8 SAD 값, 또는, SAD16X16 = SAD1 + SAD2 + SAD3 + SAD4로 계산된다. 2개의 16X8 SAD 값은, SAD116X8 = SAD1 + SAD2 및 SAD216X8 = SAD3 + SAD4로서 계산된다. 2개의 8X16 SAD 값은, SAD18X16 = SAD1 + SAD3 및 SAD28X16 = SAD2 + SAD4로서 계산된다. 그리고 물론 8X8 SAD 값들은 이미 결정되었다.
대안 실시예에서는, 모든 SAD 값들이 펠 차이 값들로부터 도출될 수 있기 때문에, 4개의 8X8 SAD 값 대신에 MB의 256개 차이 값들이 저장된다. 펠 차이 값들을 저장하는 잠재적 이익은, 바람직하다고 간주된다면 8X8, 4X8 및 4X4 SAD 값들을 계산할 수 있다는 것이다. 그러나, 8X8 움직임 모드에서 중단함으로써 최대의 효율이 성취된다고 판정되었다. 그리고 4개의 8X8 SAD 값을 저장하는 것은 256개 펠 차이 값을 저장하는 것보다 메모리를 현저히 덜 소비한다. 다른 실시예에서는, 16개의 4X4 SAD 값을 결정하고 저장하는 것이 고려된다. 이는 표준에 따른 모든 움직임 모드들이 결정될 수 있기 때문이다.
움직임 벡터는 참조 MB가 현재 MB에 관련하여 갖는 평행이동(translation)의 양이므로, 각 서브블록은 일부 움직임 벡터들이 상이한 참조점(reference point)을 갖는 것을 제외하고는 16X16 참조 MB와 동일한 움직임 벡터를 갖는다. 도시된 바와 같이, 코로케이트된 MB(501)의 상좌측 펠은 X, Y 좌표 0, 0과 관련된 참조점(505)이다. 선택된 참조 MB(503)의 움직임 벡터는 코로케이트된 MB의 위치에 관련한 그 참조 MB의 위치이다. 도시된 바와 같이, 참조 MB(503)는 점(507)에서 그의 상좌측 펠을 갖는다. 움직임 벡터(509)는 점들(505 및 507) 사이에 묘사되어 (0, 0) 위치에 있는 코로케이트된 MB(501)에 관련하여 참조 MB(503)를 위치 지정(locate)한다. 움직임 벡터(509)는 16X16 MB, 상위 16X8 서브블록, 좌측 8X16 서브블록, 및 상좌측 8X8 서브블록에 대하여 동일하다. 제2 움직임 벡터(511)는 하좌측 8X8 서브블록의 상좌측 펠을 포인팅하고, 이것은 코로케이트된 MB의 (0, 8) 위치에 관련한 하좌측 8X8 서브블록 및 하위 16X8 서브블록에 대한 움직임 벡터이다. 제3 움직임 벡터(513)는 상우측 8X8 서브블록의 상좌측 펠을 포인팅하고, 이것은 코로케이트된 MB의 (8, 0) 위치에 관련한 상좌측 8X8 서브블록 및 우측 8X16 서브블록에 대한 움직임 벡터이다. 제4 움직임 벡터(515)는 하우측 8X8 서브블록 의 상좌측 펠을 포인팅하고, 이것은 코로케이트된 MB의 (8, 8) 위치에 관련한 하우측 8X8 서브블록에 대한 움직임 벡터이다. 도 5에서 예시된 바와 같이, 움직임 벡터들(509, 511, 513 및 515)은 동일하다. 이는 상이한 기점(origin)을 참조한다 하더라도 상대적 움직임이 동일하기 때문이다. 아래에서 더 설명되는 바와 같이, 16X16 모드에 대한 움직임 벡터(509)는 비용을 결정하는 목적으로 이용될 수 있고, 참조점은 참조 프레임(303) 내의 서브블록을 위치 지정하는 목적으로 도출된다.
다시 도 4의 블록 437을 참조하면, 각 잠재적 시작 MB에 대하여 SAD 값, 움직임 벡터값 및 대응하는 COST 값이 결정된다. 다음 블록 439에서는, 최저 COST 값을 갖는 시작 MB가 선택되고 그 움직임 벡터 및 8X8 SAD 값들이 테이블에 저장된다. 도 6은 본 발명의 예시적인 실시예에 따라 움직임 벡터 및 8X8 SAD 값들을 저장하기 위한 테이블(600)에 관한 도면이다. 테이블(600)의 각 행은 1부터 검색 MB들의 정수 개수 "P"까지의 위치 값, 각 검색 MB에 대한 대응하는 16X16 움직임 벡터, 및 대응하는 4개의 8X8 SAD 값들을 저장한다. 4개의 SAD 값들은 상좌측(UL) SAD, 상우측(UR) SAD, 하좌측(LL) SAD, 하우측(LR) SAD를 포함한다. 제1 행은 블록 439에서 선택된 시작 MB에 대한 움직임 벡터 및 SAD 값들을 저장하고, 각각 MV1 및 SAD1, SAD2, SAD3 및 SAD4로 도시되어 있다.
다음 블록 441에서, 선택된 시작 MB에 대한 COST 값은 최소 비용 변수 값 JMIN으로서 저장되고, MODE 값은 모드 값 MD로서 저장되고, 선택된 시작 MB에 대한 대응하는 MV는 MVM으로서 저장되며, 아래 첨자 "M"은 블록 403에서 처음에 1로 설정 된 움직임 벡터 인덱스 값 M이다. 16X16 움직임 모드에 대해서는, 단 하나의 MV만이 변수 값 MV1로서 저장된다. 16X8 및 8X16 모드들에 대해서는, 2개의 움직임 변수 MV1 및 MV2로서 저장되고 8X8 모드에 대해서는, 4개의 움직임 변수 MV1, MV2, MV3 및 MV4가 저장된다. MD 값은 지금까지 최저 비용 참조 MB가 발견되는 움직임 모드를 지시하고, 그것은 블록 441에서 기본 값(default)으로 16X16 모드이다. JMIN, MD 및 MVM 변수 값들은 테이블(600)에 저장된 값들과는 별도로 저장되고, 현재 MB를 인코딩하는 데 이용되는 최저 비용 참조 MB를 식별하는 데 이용된다. 최저 비용 시작 MB는 처음에는 최저 비용 참조 MB로서 식별되고, 이것은 움직임 검색 동안에 더 낮은 비용 참조 MB(또는 서브블록 조합)가 식별되는 경우에는 변화한다.
다음 블록 443에서는, JMIN이 미리 정해진 저 비용 임계값 TH와 비교된다. 임계값 TH는 비디오 복잡도 및 레이트-왜곡에 기초하여 설정된다. 16X16 움직임 모드 검색 동안의 언제든, 검색 참조 MB의 COST가 임계값 TH 이하가 될 정도로 충분히 작다면, 고속 ME 검색 프로세스가 완료되고 움직임 보상을 위하여 참조 MB의 움직임 벡터가 선택된다. 만일 블록 443에서 JMIN이 TH보다 크다고 판정되면, 동작은 블록 445로 진행하고 거기서는 미리 정해진 검색 패턴에 따라 또 다른 검색 MB가 존재하는지가 검색된다. 만일 그 검색 패턴에 따라 또 다른 검색 MB가 정의된다면, 동작은 블록 447로 진행하고 거기서는 다음 검색 MB에 대하여 8X8 SAD들, 16X16 SAD, 움직임 벡터 및 COST 값들이 결정된다. COST는 잠재적 시작 MB들 각각에 대해서와 유사한 방법으로 16X16 모드에 대한 미디언 MB에 비교된 16X16 움직임 벡터 및 16X16 SAD에 기초하여 결정된다. 16X16 움직임 벡터 및 4개의 8X8 SAD들은 다음 블록 449에서 테이블(600)의 다음 행에 저장된다. 다음 블록 451에서는, 다음 검색 MB에 대한 새로운 COST 값이 JMIN보다 작은지가 문의된다. 만일 그 새로운 COST가 JMIN보다 작다면, 동작은 블록 445로 되돌아가서 검색 패턴에 따라 또 다른 검색 MB가 있는지를 판정하고 현재 검색 MB는 기각된다. 만일 새로운 COST가 현재 검색 MB에 대한 JMIN보다 작다면, 동작은 다시 블록 441로 진행하고 거기서는 JMIN, MD 및 MV1 값들이 현재 검색 MB의 COST 값, MODE 값 및 움직임 벡터로 업데이트된다. 이런 식으로, 동작은 블록 441과 블록 451 사이에서 루프(loop)하고 테이블(600)은 각 MB에 대한 16X16 움직임 벡터 및 8X8 SAD 값들로 채워진다. 테이블(600)에서 도시된 바와 같이, 제2 행은 제2 검색 MB에 대한 값들 MV2 및 SAD5-SAD8을 저장하고 제3 검색 MB에 대해서는 MV3 및 SAD9-SAD12을 저장하고, 계속해서 검색 패턴 내의 P개 검색 MB들 중 마지막에 대한 MVP 및 SAD4P -3-SAD4P까지 저장하게 되며, 8X8 SAD 값들의 총수는 4P이다. 루프 동안에, JMIN 및 MV1은 16X16 움직임 모드에 대한 최저 비용 참조 MB를 식별하도록 업데이트된다. 그리고 JMIN이 줄곧 임계값 TH 이하이면, 루프는 종료하고 마지막 MB에 대한 움직임 벡터가 움직임 보상을 위해 이용된다.
만일 임계값 TH에 도달되지 않으면, 테이블(600) 전체가 검색 패턴 내의 각 MB에 대한 16X16 움직임 벡터 및 4개의 8X8 SAD 값들로 채워진다. 블록 445에서 움직임 검색이 완료된 것으로 판정되면, 동작은 블록 403으로 되돌아가서 다음 움직임 모드를 선택하고, J를 다시 0으로 재설정하고, 움직임 벡터 인덱스 값 M을 다시 1로 재설정한다. 16X16 뒤의 다음 움직임 모드는 16X8이고, 블록 405에서 비용 변수 J는 R-D 모드 바이어스로 업데이트된다. 상위 16X8 서브블록에 대한 미디언 MV는 다음 블록 407에서 업데이트된다. 아래에서 더 설명되는 바와 같이, 최저 비용 상위 16X8 서브블록이 먼저 결정되고 그 후에 최저 비용 하위 16X8 서브블록이 결정되고 그 후 그 2개의 16X8 블록들의 비용이 함께 더해져서 16X8 움직임 모드에 대한 총 비용이 결정된다. 움직임 모드는 더 이상 16X16이 아니기 때문에, 작은 블록 409 뒤의 블록 411로 진행한다. 블록 411에서는, 테이블(600)로부터의 SAD 및 움직임 벡터가 제1 상위 16X8 서브블록에 대한 COST 값과 함께 결정된다. 도 5를 참조하여, 만일 참조 MB(503)가 시작 MB이면, 제1 상위 16X8 서브블록은 참조 MB(503)의 상위 2개의 8X8 블록들이다. 따라서 상위 16X8 SAD 값은 테이블(600)로부터 SAD1 및 SAD2를 더함으로써 결정되거나, SAD116X8 = SAD1 + SAD2이고, 제1 상위 16X8 서브블록에 대한 움직임 벡터는 테이블(600)로부터 MV1이다. 제1 상위 16X8 서브블록에 대한 COST는, 블록 407에서 결정된 16X8 미디언 MV에 기초하여 결정되는, MV1의 인코딩 비용과 조합된 SAD116X8 값이다.
다음 블록 413에서는, 비용 변수 K가 제1 상위 16X8 서브블록의 COST 값과 같게 설정되고, 제1 반복에서 TMV1인, 임시 움직임 벡터 변수 TMVM이, 제1 반복에서 MV1인, 테이블(600)로부터의 MV 값으로 업데이트된다. 다음 블록 415에서는, 다음 상위 16X8 서브블록에 대하여 테이블(600)로부터의 SAD 및 움직임 벡터가 결정된다. 제1 반복에서, 다음 상위 16X8 서브블록에 대한 SAD 값은 SAD216X8 = SAD5 + SAD6이고, 움직임 벡터는 MV2이다. COST는 전술한 바와 동일한 방법으로 결정된다. 다음 블록 417에서는, 새로운 COST 값이 K와 비교되어 제2 상위 16X8 블록이 제1 상위 16X8 블록에 대하여 더 낮은 인코딩 비용을 갖는지가 판정된다. 만일 그렇지 않다면, 동작은 다음 블록 419로 진행하고 거기서는 테이블(600)에 또 다른 상위 16X8 검색 블록이 있는지가 문의된다. 만일 그렇다면, 동작은 블록 415로 진행하고 거기서는 전술한 바와 마찬가지로 다음 상위 16X8 서브블록에 대하여 SAD 및 움직임 벡터값들이 결정된다. 만일 새로운 COST가 K보다 작다고 블록 417에서 판정되면, 동작은 대신 블록 413으로 되돌아가고 거기서는 K 및 TMVM(제1 반복에서 TMVM = TMV1) 값들이 현 상위 16X8 서브블록의 새로운 비용 및 MV 값들로 업데이트된다. 이런 식으로, 동작은 테이블(600)의 처음 4개의 열(column) 동안 블록 413과 블록 419 사이에서 루프하여 상위 16X8 서브블록에 대한 최저 비용을 결정한다. 루프는 일단 테이블(600) 내의 움직임 벡터들에 관하여 모든 서브블록들을 방문하면 종료한다.
마지막 상위 16X8 서브블록의 비용이 결정된 후에, 동작은 다시 블록 421로 진행하고 거기서는 J 값이 비용 변수 K만큼 증가된다. 이 시점에서, K는 테이블(600)에서 발견된 최저 비용 상위 16X8 서브블록의 비용이다. 다음 블록 423에서는, 16X8 움직임 모드가 완료되었는지가 판정된다. 최저 비용 상위 16X8 서브블 록만이 결정되었으므로, 16X8 움직임 모드는 완료되지 않았고 동작은 블록 425로 진행하고 거기서는 움직임 벡터 인덱스 값 M이 증분되거나 또는 다르게는 (제2 반복에서 M=2가 되도록) 1만큼 증가된다. 그 후 동작은 블록 407로 되돌아가고 거기서는 하위 16X8 서브블록에 대한 미디언 MV가 결정된다. 그 후 동작은 블록 411로 진행하고 거기서는 테이블(600)로부터의 SAD 및 움직임 벡터가 제1 하위 16X8 서브블록에 대한 COST 값과 함께 결정된다. 제1 하위 16X8 SAD 값은 테이블(600)로부터의 SAD3 및 SAD4를 더함으로써 결정되고, 제1 하위 16X8 서브블록에 대한 움직임 벡터는 테이블(600)로부터 MV1이다. 그것은 상대적 값이고 참조점은 하위 16X8 서브블록에 대한 것이기 때문에, MV1은 바로 이용될 수 있다는 것에 유의한다. 제1 하위 16X8 서브블록에 대한 COST는, 블록 407에서 발견된 하위 16X8 미디언 MV에 기초하여 결정되는, 대응 움직임 벡터의 비용과 함께 조합된 SAD3 + SAD4이다.
그 후 동작은 하위 16X8 서브블록에 대하여 블록들 413-419 사이에서 루프하도록 진행한다. 블록 413에서 K 값은 최저 비용 하위 16X8 서브블록의 비용으로 업데이트되고 대응하는 임시 움직임 벡터는 TMV2로서 저장된다. SAD 정보는 테이블(600)의 가장 우측 2개의 열들을 이용하여 계산되고 움직임 벡터 정보는 전술한 바와 같이 테이블(600)의 제2 열 내의 16X16 움직임 벡터들로부터 도출되는 것을 제외하고, 동작은 전술한 바와 실질적으로 동일하다. 최저 비용 하위 16X8 서브블록이 발견된 후에, 동작은 블록 421로 진행하고, 거기서는 비용 변수 J가 K만큼 증가된다. 이 경우, J는 전술한 바와 같이 상위 16X8 서브블록의 비용 및 16X8 모드 에 대한 R-D 모드 바이어스로 이미 업데이트되었다(블록 405에서). 따라서, 16X8 모드에 대한 제2 반복에서의 블록 421 후에, J 값은 16X8 움직임 모드에 대한 조합된 상위 및 하위 16X8 서브블록에 대한 총 비용을 반영한다. 그 후 동작은 16X8 움직임 모드가 완료되었으므로 블록 427로 진행하고, 블록 427에서는 J가 JMIN보다 작은지가 문의된다. 이 시점에서, JMIN은 16X16 움직임 모드에 대한 최저 비용 16X16 참조 MB의 비용이라는 점을 상기하자. 만일 2개의 최저 비용 16X8 서브블록의 총 비용이 하나의 16X16 참조 MB의 비용보다 작다면, 동작은 블록 429로 진행하고 거기서는 JMIN이 J 값으로 업데이트되고, MD가 모드 값으로 업데이트되고, MVM 값들 각각이 대응하는 TMVM 값으로 업데이트된다. 16X8 움직임 모드는 최저 비용 상위 및 하위 16X8 서브블록들을 포인팅하거나 또는 다른 방법으로 그것들을 식별하는 2개의 움직임 벡터들 MV1 및 MV2를 포함한다. 블록 429에서 JMIN, MD 및 MVM 값들이 업데이트된 후에, 동작은 블록 431로 진행하여 업데이트된 JMIN과 임계값 TH를 비교한다. 만일 JMIN이 TH 이하이면, 검색은 완료된다. 만일 J가 JMIN보다 작지 않은 것으로 블록 427에서 판정되거나 또는 JMIN이 TH 이하가 아닌 것으로 블록 431에서 판정되면, 동작은 블록 433으로 진행하고 거기서는 고려할 움직임 모드가 더 있는지가 문의된다.
16X16 및 16X8 움직임 모드들이 완료된 후, 동작은 블록 403으로 되돌아가서 8X16인 다음 움직임 모드를 선택한다. 다시, J는 0으로 재설정되고 M은 1로 설정된다. 다음 블록 405에서는, J가 8X16 모드에 대한 R-D 바이어스만큼 증가된다. 블록 407-425는 전술한 16X8 모드의 경우와 실질적으로 동일한 방식으로 8X16 모드에 대하여 실행된다. 주요 차이점은 최저 비용 상위 및 하위 16X8 서브블록들을 검색하는 것이 아니라, 루프를 다시 2회 실행하여 최저 비용 좌측 및 우측 8X16 서브블록들을 검색한다는 것이다. 참조 MB(503)에 관련하여, 제1 좌측 8X16 서브블록에 대한 SAD 값은 SAD1 및 SAD3을 더함으로써 결정되고 제1 우측 서브블록에 대한 SAD 값은 SAD2 및 SAD4를 더함으로써 결정된다. 따라서, 8X16 모드에 대한 루프의 제1 반복에서는, 각 좌측 SAD 값에 대하여 LL SAD에 UL SAD가 더해지고, 8X16 모드에 대한 루프의 제2 반복에서는, 각 우측 SAD 값에 대하여 LR SAD에 UR SAD가 더해진다. 각 움직임 벡터는 전술한 바와 같이 16X16 움직임 벡터들 MV1-MVP 중 대응하는 것으로부터 도출된다. 최저 비용 좌측 및 우측 8X16 서브블록들이 식별되고 블록 421에서 J가 8X16 움직임 모드의 총 비용으로 설정된 후에, J는 다시 블록 427에서 JMIN과 비교된다. 만일 J가 JMIN보다 작은 것으로 블록 427에서 판정되면, 8X16 움직임 모드의 총 비용은 16X16 또는 16X8 모드들의 비용보다 작고 전술한 바와 같이 블록 429에서 JMIN, MD 및 MVM 값들이 업데이트된다. 새로운 JMIN은 블록 431에서 TH와 비교되어 임계값에 도달하였는지가 판정된다. 만일 J가 JMIN보다 작지 않거나 또는 JMIN이 TH보다 크다면, 동작은 블록 433으로 진행하고 거기서는 고려할 움직임 모드가 더 있는지가 문의된다.
16X16, 16X8 및 8X16 움직임 모드들이 완료된 후에, 동작은 블록 403으로 되돌아가서 8X8인 다음 움직임 모드를 선택한다. 다시 J는 0으로 재설정되고 M은 1 로 설정된다. 다음 블록 405에서는, J가 8X8 모드에 대한 R-D 모드 바이어스만큼 증가된다. 블록들 407-425는 전술한 16X8 및 8X16 모드들의 경우와 실질적으로 동일한 방식으로 8X8 모드에 대하여 실행된다. 주요 차이점은 루프의 2회의 실행에서 2개의 서브블록을 검색하는 것이 아니라, 루프를 4회 실행하여 최저 비용 UL, UR, LL 및 LR 8X8 서브블록들을 검색한다는 것이다. 참조 MB(503)에 관련하여, UL 8X8 서브블록에 대한 SAD 값은 SAD1이고, UR 8X8 서브블록에 대한 SAD 값은 SAD2이고, LL 8X8 서브블록에 대한 SAD 값은 SAD3이고, LR 8X8 서브블록에 대한 SAD 값은 SAD4이다. 따라서, 8X8 모드에 대한 루프의 제1 반복에서는, UL 8X8 서브블록들의 비용이 비교되고, 제2 반복에서는, UR 8X8 서브블록들의 비용이 비교되고, 제3 반복에서는, LL 8X8 서브블록들의 비용이 비교되고, 제4 반복에서는, LR 8X8 서브블록들의 비용이 비교된다. 움직임 벡터들은 전술한 바와 같이 16X16 움직임 벡터들로부터 도출된다. 4개의 최저 비용 8X8 서브블록들이 식별되고 블록 421에서 J가 8X8 움직임 모드의 총 비용으로 설정된 후에, J는 다시 블록 427에서 JMIN과 비교된다. 만일 J가 JMIN보다 작다면, 8X8 움직임 모드의 총 비용은 16X16, 16X8 및 8X16 모드들 중 어떤 것의 비용보다도 작고 블록 429에서 JMIN, MD 및 MVM 값들이 업데이트된다. 이 경우 최저 비용 8X8 서브블록들을 식별하는 데 이용되는 4개의 MVM 값들 MV1-MV4가 있다는 것에 유의한다. 새로운 JMIN은 블록 431에서 다시 TH와 비교되어 임계값에 도달하였는지가 판정된다. 만일 J가 JMIN보다 작지 않거나 또 는 JMIN이 TH보다 크다면, 동작은 블록 433으로 진행하고 거기서는 고려할 움직임 모드가 더 있는지가 문의된다.
8X8 움직임 모드가 완료된 후에 또는 검색들 중의 임의의 검색 동안에 TH에 도달하면, 동작은 완료되고 MVM 및 MV 값들에 의해 식별된 참조 MB가 움직임 보상을 위한 참조 MB로서 이용된다. 참조 MB는 16X16 움직임 모드로부터의 하나의 16X16 MB 또는 다른 모드들에 대한 서브블록 조합이다. 서브블록 조합들은 각각 16X8 또는 8X16 모드들로부터의 16X8 또는 8X16 서브블록들의 쌍, 또는 8X8 모드로부터의 4개의 상이한 8X8 서브블록들을 포함한다. MVM 값들 및 저장된 MD 값은 인터프레임 인코딩을 위한 참조 MB로서 이용될 하나의 MB 또는 서브블록 조합을 식별하기에 충분하다.
도 7은 본 발명의 예시적인 실시예에 따라 고속 움직임 추정을 수행하기 위한 ME 회로(203)의 일부 블록도이다. 참조 MB 검색 회로(701)는 인코딩될 현재 MB를 식별하는 다른 정보와 함께 현재 프레임 F 및 참조 프레임 REF F를 수신한다. 참조 MB 검색 회로(701)는 서브블록 메모리 검색 회로(703), SAD 계산기 회로(705), 미디언 MV 및 MV 비용 계산기 회로(707), 비교기 회로(709), 및 메모리(711)에 연결되어 있다. 메모리(711)는 ROM(read-only memory) 또는 RAM(random access memory) 장치 또는 레지스터 등의 임의의 조합으로서 구현되고 본 발명의 실시예에 따른 고속 움직임 검색의 프로세스 동안에 이용되는 테이블(600) 및 변수들(713)을 저장한다. 변수들(713)은, 예를 들면, 도 4에 관련하여 위에서 설명된 MODE, MD, J, M, K, COST, JMIN, TMVM, MVM, BIAS, TH 및 QP 값들을 포함한다.
참조 MB 검색 회로(701)는 일반적으로 참조 MB(303)의 선택된 검색 영역(305) 내의 선택된 검색 경로에 따라 각 잠재적 시작 MB에 대하여 및 각 16X16 MB에 대하여 8X8 SAD들, 16X16 SAD, 움직임 벡터들 및 대응하는 비용들을 계산하기 위한 블록들 437 및 447의 기능들의 수행을 제어한다. 참조 MB 검색 회로(701)는 또한 움직임 벡터 및 8X8 SAD 값들을 테이블(600)에 저장하기 위한 블록들 439 및 449의 기능들을 수행한다. SAD 값들은 SAD 계산기 회로(705)에 의해 결정된다. 일 실시예에서, 예를 들면, 참조 MB 검색 회로(701)는 검색 MB의 움직임 벡터를 전달하고 SAD 계산기 회로(705)는 대응하는 16X16 SAD 및 8X8 SAD 값들을 계산한다. 미디언 MV 및 MV 비용 계산기 회로(707)는 각 MB 및 서브블록에 대한 미디언 MV, 움직임 벡터 및 움직임 벡터 인코딩 비용을 결정한다. 참조 MB 검색 회로(701)는 그 SAD 및 MV 비용 정보를 현재 MB를 인코딩하는 비용을 결정하는 데 이용한다.
서브블록 메모리 검색 회로(703)는 블록들 411-433 중 특정 블록(예컨대, 블록 411, 415)에서 설명된 바와 같이 각 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하기 위한 움직임 벡터 및 SAD 정보를 테이블(600)에서 검색한다. 서브블록 메모리 검색 회로(703)는 움직임 벡터 비용을 결정하기 위해 미디언 MV 및 MV 비용 계산기(707)를 이용하고 테이블(600)로부터의 적절한 8X8 SAD 값들을 더하여 각 서브블록의 대응하는 비용을 결정하고, 그 후 최저 비용 서브블록들을 함께 더한다. 서브블록 메모리 검색 회로(703)는 또한 블록 405에서 설명된 바와 같이 적절한 움직임 모드에 따른 적절한 모드 바이어스를 더한다.
비교기 회로(709)는 일반적으로 JMIN, MD 및 MVM 값들이 최저 비용 참조 MB 또는 서브블록 조합으로 업데이트되는 것을 보증한다. 특히, 참조 MB 검색 회로(701)가 각 시작 MB의 비용을 결정한 후에, 비교기 회로(709)는 블록 441에서 설명된 바와 같이 JMIN, MD 및 MVM 값들을 초기화하거나 또는 다른 방법으로 업데이트한다. 비교기 회로(709)는 또한 검색 패턴에서 각각의 다음 MB에 대하여 블록 451에서 설명된 바와 같이 JMIN과 각각의 새로운 COST 값을 비교하고 만일 새로운 비용이 JMIN보다 작다면 블록 441에서 JMIN, MD 및 MVM 값들을 적절히 업데이트한다. 비교기 회로(709)는 블록 443에서 설명된 바와 같이 JMIN과 임계값들을 더 비교하고 만일 언제든지 임계값이 성취되면, 현재 MB가 인트라프레임 인코딩을 위한 참조 MB로서 선택된다. 테이블(600)이 완료된 후에 그리고 임계값이 성취되지 않으면, 비교기 회로(709)는 블록들 427, 429 및 431을 수행하여 서브블록 메모리 검색 회로(703)에 의해 결정된 각 새로운 서브블록 조합의 비용을 현재 저장된 JMIN 값 및 임계값과 비교한다. 다시, 새로운 COST 값이 현재의 JMIN 값보다 작을 때는 언제나 JMIN, MD 및 MVM 값들이 그에 따라서 업데이트되고, 임계값이 성취되면 새로운 서브블록 조합이 참조 MB로서 선택된다.
본 발명의 일 실시예에 따라 현재 프레임 내의 현재 매크로블록에 대한 참조 프레임 내의 참조 매크로블록을 결정하는 고속 움직임 추정 방법은, 고속 움직임 추정 패턴에 따라 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 차이 값, 및 비용 값을 결정하는 단계, 각 매크로블록에 대하여 비용 값들을 비교하고 움직임 벡터 데이터, 움직임 모드 및 현재의 최저 비용 매크로블록의 비용 값을 선택하는 단계, 각 매크로블록에 대하여 복수의 서브블록들 각각에 대한 차이 값 및 적어도 하나의 대응하는 움직임 벡터를 결정하고 저장 정보로서 저장하는 단계, 저장 정보를 검색하고 최저 비용 서브블록 조합을 결정하는 단계, 최저 비용 서브블록 조합의 비용 값을 현재의 최저 비용 매크로블록의 비용 값과 비교하는 단계, 최저 비용 서브블록 조합과 현재의 최저 비용 매크로블록 중 하나를 참조 매크로블록으로서 선택하는 단계를 포함한다.
방법은 복수의 잠재적 시작 매크로블록들의 상대적 비용을 비교하는 단계, 최저 비용 시작 매크로블록을 상기 참조 프레임 내의 매크로블록들 중 제1 매크로블록으로서 선택하는 단계, 및 선택된 시작 매크로블록에 관하여 고속 움직임 추정 검색 패턴을 결정하는 단계를 포함할 수 있다. 방법은 현재 매크로블록과 참조 프레임 내의 매크로블록 간의 화소들(picture elements)의 SAD(sum of absolute difference)를 결정하는 단계를 포함할 수 있다. 방법은 움직임 벡터 예측에 관련하여 매크로블록의 움직임 벡터를 인코딩하는 비용을 결정하고 움직임 벡터를 인코딩하는 비용을 차이 값에 더하는 단계를 포함할 수 있다.
방법은 각 서브블록 움직임 모드에 대하여 서브블록 움직임 모드 바이어스를 조합하는 단계를 더 포함할 수 있다. 방법은 움직임 벡터 데이터, 움직임 모드 및 현재의 최저 비용 매크로블록을 식별하는 비용 값을 선택하는 단계 후에 현재의 최저 비용 매크로블록의 비용을 미리 정해진 임계값과 비교하는 단계, 최저 비용 서브블록 조합과 현재의 최저 비용 매크로블록 중 하나를 선택하는 단계 후에 현재의 최저 비용 매크로블록의 비용을 미리 정해진 임계값과 비교하여 현재의 최저 비용 매크로블록을 업데이트하는 단계, 및 현재의 최저 비용 매크로블록의 비용이 상기 미리 정해진 임계값 이하인 때는 언제든지 현재의 최저 비용 매크로블록을 참조 매크로블록으로서 선택하는 단계를 더 포함할 수 있다.
보다 구체적인 실시예에서, 방법은 상기 참조 프레임 내의 매크로블록을 위치 지정(locating)하는 움직임 벡터를 저장하는 단계, 및 위치 지정된 매크로블록에 대한 4개의 8X8 SAD 값들을 결정하고 저장하는 단계를 포함한다. 이 실시예에서, 방법은 각 매크로블록에 대하여 제1 미디언 MV에 관련하여 상위 16X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 상위 8X8 SAD 값들의 쌍을 더하는 단계, 최저 비용 상위 16X8 서브블록을 결정하는 단계, 각 매크로블록에 대하여 제2 미디언 MV에 관련하여 하위 16X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 하위 8X8 SAD 값들의 쌍을 더하는 단계, 최저 비용 하위 16X8 서브블록을 결정하는 단계, 및 상위 최저 비용 16X8 서브블록의 비용을 하위 최저 비용 16X8 서브블록의 비용과 조합하는 단계를 더 포함할 수 있다. 방법은 또한 각 매크로블록에 대하여 제1 미디언 MV에 관련하여 좌측 8X16 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 좌측 8X8 SAD 값들의 쌍을 더하는 단계, 최저 비용 좌측 8X16 서브블록을 결정하는 단계, 각 매크로블록에 대하여 제2 미디언 MV에 관련하여 우측 8X16 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 우측 8X8 SAD 값들의 쌍을 더하는 단계, 최저 비용 우측 8X16 서브블록을 결정하는 단계, 및 좌측 최저 비용 8X16 서브블록의 비용을 우측 최저 비용 8X16 서브블록의 비용과 조합하는 단계를 더 포함할 수 있다. 방법은 각 매크로블록에 대하여 제1 미디언 MV에 관련하여 상좌측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계, 최저 비용 상좌측 8X8 서브블록을 결정하는 단계, 각 매크로블록에 대하여 제2 미디언 MV에 관련하여 상우측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계, 최저 비용 상우측 8X8 서브블록을 결정하는 단계, 각 매크로블록에 대하여 제3 미디언 MV에 관련하여 하좌측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계, 최저 비용 하좌측 8X8 서브블록을 결정하는 단계, 각 매크로블록에 대하여 제4 미디언 MV에 관련하여 하우측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계, 최저 비용 하우측 8X8 서브블록을 결정하는 단계, 및 상좌측, 상우측, 하좌측 및 하우측 8X8 서브블록들의 비용들을 조합하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따라 현재 프레임 내의 현재 매크로블록에 대한 참조 프레임 내의 참조 매크로블록을 결정하는 고속 움직임 추정 시스템은 메모리, 참조 매크로 블록 검색 회로, 서브블록 조합 검색 회로, 및 비교기 회로를 포함한다. 참조 매크로블록 검색 회로는 고속 움직임 추정 검색 패턴에 따라 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 복수의 차이 값, 및 비용 값을 결정하고, 움직임 벡터 및 차이 값들을 메모리에 저장한다. 서브블록 조합 검색 회로는 복수의 서브블록 움직임 모드들 각각에 대하여 복수의 최저 비용 서브블록 조합들 중 대응하는 것을 결정하기 위해 메모리에서 움직임 벡터 및 차이 값들을 검색한다. 비교기 회로는 최저 비용 매크로블록을 결정하고 최저 비용 매크로 블록과 최저 비용 서브블록 조합들 중에서 선택하여 참조 매크로블록을 결정한다.
비교기 회로는 복수의 잠재적 시작 매크로블록들의 상대적 비용을 비교하고, 최저 비용 시작 매크로블록을 참조 프레임 내의 매크로블록들 중 제1 매크로블록으로서 선택할 수 있다. 이 경우 참조 매크로블록 검색 회로는 최저 비용 시작 매크로블록에서 시작하여 고속 움직임 추정 검색 패턴을 개시한다. 참조 매크로블록 검색 회로는 SAD 계산 회로를 포함할 수 있다. 참조 매크로블록 검색 회로는 움직임 벡터 예측 및 계산 회로를 포함할 수 있다. 참조 매크로블록 검색 회로는 참조 프레임 내의 매크로블록들 각각에 대하여 4개의 8X8 SAD 값들을 결정하고 메모리에 저장하도록 구현될 수 있다.
서브블록 조합 검색 회로는 최저 비용 상위 16X8 서브블록 및 최저 비용 하위 16X8 서브블록을 결정하여 16X8 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하고, 최저 비용 좌측 8X16 서브블록 및 최저 비용 우측 8X16 서브블록을 결정하여 8X16 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하고, 최저 비용 상좌측 8X8 서브블록, 최저 비용 상우측 8X8 서브블록, 최저 비용 하좌측 8X8 서브블록, 최저 비용 하우측 8X8 서브블록을 결정하여 8X8 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하도록 구현될 수 있다.
서브블록 조합 검색 회로는 서브블록 움직임 모드들 각각에 대하여 대응하는 서브블록 움직임 모드 바이어스를 조합하도록 구현될 수 있다. 비교기 회로는 각 매크로블록 및 최저 비용 서브블록 조합들 각각의 비용 값을 미리 정해진 임계값과 비교하고 어떤 하나의 매크로블록 또는 서브블록 조합의 비용 값이 미리 정해진 임 계값을 성취하면 그 매크로블록 또는 서브블록을 참조 매크로블록으로서 선택하도록 구현될 수 있다.
본 발명의 일 실시예에 따른 비디오 인코더는 제1 및 제2 메모리, 감산 회로, 변환 및 양자화 회로, 역변환 및 역양자화 회로, 가산기, 움직임 보상 회로, 디블록(deblock) 필터 및 움직임 추정 회로를 포함한다. 제1 메모리는 현재 프레임을 저장하고 제2 메모리는 참조 프레임을 저장한다. 감산 회로는 인터프레임 예측 정보를 수신하는 마이너스 입력(negative input), 현재 프레임 정보를 수신하는 플러스 입력(positive input), 및 나머지(residual) 정보를 제공하는 출력을 갖는다. 변환 및 양자화 회로는 감산 회로의 출력에 연결된 입력 및 양자화된 변환 계수들을 제공하는 출력을 갖는다. 역변환 및 역양자화 회로는 변환 및 양자화 회로의 출력에 연결된 입력 및 재구성된 나머지 정보를 제공하는 출력을 갖는다. 가산기는 인터프레임 예측 정보를 수신하는 제1 입력, 역변환 및 역양자화 회로의 출력에 연결된 제2 입력, 및 재구성된 프레임 정보를 제공하는 출력을 갖는다. 디블록 필터는 가산기의 출력에 연결된 입력 및 제2 메모리에 저장할 필터링된 재구성된 프레임 정보를 제공하는 출력을 갖는다. 움직임 보상 회로는 참조 프레임 내의 참조 매크로블록의 적어도 하나의 참조 움직임 벡터를 수신하는 입력, 및 인터프레임 예측 정보를 제공하는 출력을 갖는다. 움직임 추정 회로는 현재 프레임을 수신하는 제1 입력, 참조 프레임을 수신하는 제2 입력 및 참조 프레임에 대한 적어도 하나의 참조 움직임 벡터를 제공하는 출력을 갖는다.
비디오 인코더의 움직임 추정 회로는 제3 메모리, 참조 매크로블록 검색 회 로, 서브블록 조합 검색 회로, 및 비교기 회로를 포함한다. 참조 매크로블록 검색 회로는 고속 움직임 추정 검색 패턴에 따라 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 복수의 차이 값들, 및 비용 값을 결정하고, 움직임 벡터 및 차이 값들을 제3 메모리에 저장한다. 서브블록 조합 검색 회로는 상기 제3 메모리를 검색하여 복수의 서브블록 움직임 모드들 각각에 대하여 최저 비용 서브블록 조합을 찾아낸다. 비교기 회로는 최저 비용 매크로블록을 결정하고 최저 비용 매크로블록과 최저 비용 서브블록 조합들 중에서 선택하여 참조 매크로블록의 적어도 하나의 참조 움직임 벡터를 결정한다.
일 실시예에서, 참조 매크로블록 검색 회로는 고속 움직임 추정 검색 패턴에 따라 참조 프레임 내의 각 매크로블록에 대하여 16X16 움직임 벡터 및 4개의 8X8 SAD 값들을 제3 메모리에 저장하고, 서브블록 조합 검색 회로는 제3 메모리를 스캔하여 16X8 움직임 모드에 대한 최저 비용 서브블록 조합, 8X16 움직임 모드에 대한 최저 비용 서브블록 조합, 및 8X8 움직임 모드에 대한 최저 비용 서브블록 조합을 찾아낸다.
이상에서 본 발명의 특정 실시예들을 제시하고 설명하였지만, 당업자라면, 본 명세서의 교시에 기초하여, 본 발명 및 그의 보다 광범위한 양태들에서 벗어나지 않고서 추가의 변경들 및 수정들이 이루어질 수 있다는 것을 인지할 것이고, 따라서, 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 있는 모든 그러한 변경들 및 수정들을 그 청구항들의 범위 안에 포함할 것이다.
Claims (20)
- 현재 프레임 내의 현재 매크로블록에 대한 참조 프레임 내의 참조 매크로블록을 결정하는 고속 움직임 추정 방법으로서,고속 움직임 추정 검색 패턴(fast motion estimation search pattern)에 따라 상기 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 차이 값, 및 비용 값을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 비용 값들을 비교하고 움직임 벡터 데이터, 움직임 모드 및 현재의 최저 비용 매크로블록의 비용 값을 선택하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 복수의 서브블록들 각각에 대한 차이 값 및 적어도 하나의 대응하는 움직임 벡터를 결정하고 저장 정보로서 저장하는 단계와,복수의 서브블록 움직임 모드들 각각에 대하여, 상기 저장 정보를 검색하여 최저 비용 서브블록 조합을 결정하고, 상기 최저 비용 서브블록 조합의 비용 값을 상기 현재의 최저 비용 매크로블록의 비용 값과 비교하는 단계와,상기 최저 비용 서브블록 조합과 상기 현재의 최저 비용 매크로블록 중 하나를 상기 참조 매크로블록으로서 선택하는 단계를 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서,복수의 잠재적 시작 매크로블록들의 상대적 비용을 비교하는 단계와,최저 비용 시작 매크로블록을 상기 참조 프레임 내의 복수의 매크로블록들 중 제1 매크로블록으로서 선택하는 단계와,상기 선택된 시작 매크로블록에 관하여 상기 고속 움직임 추정 검색 패턴을 결정하는 단계를 더 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서, 복수의 매크로블록들 각각에 대한 차이 값을 결정하는 상기 단계는 상기 현재 매크로블록과 상기 참조 프레임 내의 매크로블록 간의 화소들(picture elements)의 SAD(sum of absolute difference)를 결정하는 단계를 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서, 복수의 매크로블록들 각각에 대한 비용 값을 결정하는 상기 단계는 움직임 벡터 예측에 관련하여 매크로블록의 움직임 벡터를 인코딩하는 비용을 결정하고 상기 움직임 벡터를 인코딩하는 비용을 상기 차이 값에 더하는 단계를 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서, 복수의 서브블록 각각에 대한 차이 값 및 적어도 하나의 대응하는 움직임 벡터를 저장 정보로서 저장하는 상기 단계는,상기 참조 프레임 내의 매크로블록을 위치 지정(locating)하는 움직임 벡터를 저장하는 단계와,상기 위치 지정된 매크로블록에 대한 4개의 8X8 SAD(sum of absolute difference) 값들을 결정하고 저장하는 단계를 포함하는 고속 움직임 추정 방법.
- 제5항에 있어서, 복수의 서브블록 움직임 모드들 각각에 대하여 상기 저장 정보를 검색하고 최저 비용 서브블록 조합을 결정하는 상기 단계는,상기 복수의 매크로블록들 각각에 대하여, 제1 미디언(median) MV에 관련하여 상위 16X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 상위 8X8 SAD 값들의 쌍을 더하는 단계와,최저 비용 상위 16X8 서브블록을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 제2 미디언 MV에 관련하여 하위 16X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 하위 8X8 SAD 값들의 쌍을 더하는 단계와,최저 비용 하위 16X8 서브블록을 결정하는 단계와,상기 상위 최저 비용 16X8 서브블록의 비용을 상기 하위 최저 비용 16X8 서브블록의 비용과 조합하는 단계를 더 포함하는 고속 움직임 추정 방법.
- 제5항에 있어서, 복수의 서브블록 움직임 모드들 각각에 대하여 상기 저장 정보를 검색하고 최저 비용 서브블록 조합을 결정하는 상기 단계는,상기 복수의 매크로블록들 각각에 대하여, 제1 미디언 MV에 관련하여 좌측 8X16 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 좌측 8X8 SAD 값들의 쌍을 더하는 단계와,최저 비용 좌측 8X16 서브블록을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 제2 미디언 MV에 관련하여 우측 8X16 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하고 우측 8X8 SAD 값들의 쌍을 더하는 단계와,최저 비용 우측 8X16 서브블록을 결정하는 단계와,상기 좌측 최저 비용 8X16 서브블록의 비용을 상기 우측 최저 비용 8X16 서브블록의 비용과 조합하는 단계를 포함하는 고속 움직임 추정 방법.
- 제5항에 있어서, 복수의 서브블록 움직임 모드들 각각에 대하여 상기 저장 정보를 검색하고 최저 비용 서브블록 조합을 결정하는 상기 단계는,상기 복수의 매크로블록들 각각에 대하여, 제1 미디언 MV에 관련하여 상좌측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계와,최저 비용 상좌측 8X8 서브블록을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 제2 미디언 MV에 관련하여 상우측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계와,최저 비용 상우측 8X8 서브블록을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 제3 미디언 MV에 관련하여 하좌측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계와,최저 비용 하좌측 8X8 서브블록을 결정하는 단계와,상기 복수의 매크로블록들 각각에 대하여, 제4 미디언 MV에 관련하여 하우측 8X8 서브블록에 대한 움직임 벡터를 인코딩하는 비용을 결정하는 단계와,최저 비용 하우측 8X8 서브블록을 결정하는 단계와,상기 상좌측, 상우측, 하좌측 및 하우측 8X8 서브블록들의 비용들을 조합하는 단계를 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서, 상기 복수의 서브블록 움직임 모드들 각각에 대하여 서브블록 움직임 모드 바이어스를 조합하는 단계를 더 포함하는 고속 움직임 추정 방법.
- 제1항에 있어서,움직임 벡터 데이터, 움직임 모드 및 현재의 최저 비용 매크로블록을 식별하는 비용 값을 선택하는 상기 단계 후에 상기 현재의 최저 비용 매크로블록의 비용을 미리 정해진 임계값과 비교하는 단계와,상기 최저 비용 서브블록 조합과 상기 현재의 최저 비용 매크로블록 중 하나 를 선택하는 상기 단계 후에 상기 현재의 최저 비용 매크로블록의 비용을 상기 미리 정해진 임계값과 비교하여 상기 현재의 최저 비용 매크로블록을 업데이트하는 단계와,상기 현재의 최저 비용 매크로블록의 비용이 상기 미리 정해진 임계값 이하인 때는 언제는 상기 현재의 최저 비용 매크로블록을 상기 참조 매크로블록으로서 선택하는 단계를 더 포함하는 고속 움직임 추정 방법.
- 현재 프레임 내의 현재 매크로블록에 대한 참조 프레임 내의 참조 매크로블록을 결정하는 고속 움직임 추정 시스템으로서,메모리와,고속 움직임 추정 검색 패턴에 따라 상기 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 복수의 차이 값, 및 비용 값을 결정하고, 상기 움직임 벡터 및 상기 복수의 차이 값들을 상기 메모리에 저장하는 참조 매크로 블록 검색 회로와,복수의 서브블록 움직임 모드들 각각에 대하여 복수의 최저 비용 서브블록 조합들 중 대응하는 것을 결정하기 위해 상기 메모리에서 상기 움직임 벡터 및 상기 복수의 차이 값들을 검색하는 서브블록 조합 검색 회로와,최저 비용 매크로블록을 결정하고 상기 최저 비용 매크로블록과 상기 최저 비용 서브블록 조합들 중에서 선택하여 상기 참조 매크로블록을 결정하는 비교기 회로를 포함하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 비교기 회로는 복수의 잠재적 시작 매크로블록들의 상대적 비용을 비교하고, 최저 비용 시작 매크로블록을 상기 참조 프레임 내의 복수의 매크로블록들 중 제1 매크로블록으로서 선택하고, 상기 참조 매크로블록 검색 회로는 상기 최저 비용 시작 매크로블록에서 시작하여 상기 고속 움직임 추정 검색 패턴을 개시하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 참조 매크로블록 검색 회로는 SAD(sum of absolute difference) 계산 회로를 포함하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 참조 매크로블록 검색 회로는 움직임 벡터 예측 및 계산 회로를 포함하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 참조 매크로블록 검색 회로는 상기 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 4개의 8X8 SAD 값들을 결정하고 상기 메모리에 저장하는 고속 움직임 추정 시스템.
- 제15항에 있어서, 상기 서브블록 조합 검색 회로는 최저 비용 상위 16X8 서 브블록 및 최저 비용 하위 16X8 서브블록을 결정하여 16X8 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하고, 최저 비용 좌측 8X16 서브블록 및 최저 비용 우측 8X16 서브블록을 결정하여 8X16 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하고, 최저 비용 상좌측 8X8 서브블록, 최저 비용 상우측 8X8 서브블록, 최저 비용 하좌측 8X8 서브블록, 최저 비용 하우측 8X8 서브블록을 결정하여 8X8 움직임 모드에 대한 최저 비용 서브블록 조합을 결정하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 서브블록 조합 검색 회로는 상기 복수의 서브블록 움직임 모드들 각각에 대하여 복수의 서브블록 움직임 모드 바이어스들 중 대응하는 것을 조합하는 고속 움직임 추정 시스템.
- 제11항에 있어서, 상기 비교기 회로는 상기 복수의 매크로블록들 각각 및 상기 복수의 최저 비용 서브블록 조합들 각각의 비용 값을 상기 미리 정해진 임계값과 비교하고, 대응하는 비용 값이 상기 미리 정해진 임계값을 성취하면 매크로블록 또는 서브 블록 조합을 상기 참조 매크로블록으로서 선택하는 고속 움직임 추정 시스템.
- 비디오 인코더로서,현재 프레임을 저장하는 제1 메모리와,참조 프레임을 저장하는 제2 메모리와,인터프레임 예측 정보를 수신하는 마이너스 입력(negative input), 현재 프레임 정보를 수신하는 플러스 입력(positive input), 및 나머지(residual) 정보를 제공하는 출력을 갖는 감산 회로와,상기 감산 회로의 상기 출력에 연결된 입력 및 양자화된 변환 계수들을 제공하는 출력을 갖는 변환 및 양자화 회로와,상기 변환 및 양자화 회로의 상기 출력에 연결된 입력 및 재구성된 나머지 정보를 제공하는 출력을 갖는 역변환 및 역양자화 회로와,상기 인터프레임 예측 정보를 수신하는 제1 입력, 상기 역변환 및 역양자화 회로의 상기 출력에 연결된 제2 입력, 및 재구성된 프레임 정보를 제공하는 출력을 갖는 가산기와,상기 가산기의 상기 출력에 연결된 입력 및 상기 제2 메모리에 저장할 필터링된 재구성된 프레임 정보를 제공하는 출력을 갖는 디블록(deblock) 필터와,상기 참조 프레임 내의 참조 매크로블록의 적어도 하나의 참조 움직임 벡터를 수신하는 입력 및 상기 인터프레임 예측 정보를 제공하는 출력을 갖는 움직임 보상 회로와,상기 현재 프레임을 수신하는 제1 입력, 상기 참조 프레임을 수신하는 제2 입력 및 상기 참조 프레임에 대한 적어도 하나의 참조 움직임 벡터를 제공하는 출력을 갖는 움직임 추정 회로를 포함하고,상기 움직임 추정 회로는,제3 메모리;고속 움직임 추정 검색 패턴에 따라 상기 참조 프레임 내의 복수의 매크로블록들 각각에 대하여 움직임 벡터, 복수의 차이 값들, 및 비용 값을 결정하고, 상기 움직임 벡터 및 상기 복수의 차이 값들을 상기 제3 메모리에 저장하는 참조 매크로블록 검색 회로;상기 제3 메모리를 검색하여 복수의 서브블록 움직임 모드들 각각에 대하여 최저 비용 서브블록 조합을 찾아내는 서브블록 조합 검색 회로; 및최저 비용 매크로블록을 결정하고 상기 최저 비용 매크로블록과 상기 복수의 최저 비용 서브블록 조합들 중에서 선택하여 상기 참조 매크로블록의 적어도 하나의 참조 움직임 벡터를 결정하는 비교기 회로를 포함하는 비디오 인코더.
- 제19항에 있어서,상기 참조 매크로블록 검색 회로는, 상기 고속 움직임 추정 검색 패턴에 따라 상기 참조 프레임 내의 상기 복수의 매크로블록들 각각에 대하여 16X16 움직임 벡터 및 4개의 8X8 SAD(sum of absolute difference) 값들을 상기 제3 메모리에 저장하고,상기 서브블록 조합 검색 회로는 상기 제3 메모리를 스캔하여 16X8 움직임 모드에 대한 최저 비용 서브블록 조합, 8X16 움직임 모드에 대한 최저 비용 서브블록 조합, 및 8X8 움직임 모드에 대한 최저 비용 서브블록 조합을 찾아내는 비디오 인코더.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/325,066 US7693219B2 (en) | 2006-01-04 | 2006-01-04 | System and method for fast motion estimation |
US11/325,066 | 2006-01-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080089624A true KR20080089624A (ko) | 2008-10-07 |
Family
ID=38224388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087019010A KR20080089624A (ko) | 2006-01-04 | 2006-11-22 | 고속 움직임 추정을 위한 시스템 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7693219B2 (ko) |
KR (1) | KR20080089624A (ko) |
WO (1) | WO2007120286A2 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140053053A (ko) * | 2010-05-26 | 2014-05-07 | 주식회사 뉴라텍 | 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치 |
KR101432779B1 (ko) * | 2009-12-11 | 2014-08-25 | 에스케이텔레콤 주식회사 | 움직임 보상 프레임의 선택적 필터링을 이용한 영상 부호화/복호화 방법 및 장치와 그를 위한 인터 예측 방법 및 장치 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330060B1 (en) | 2003-04-15 | 2016-05-03 | Nvidia Corporation | Method and device for encoding and decoding video image data |
US8660182B2 (en) * | 2003-06-09 | 2014-02-25 | Nvidia Corporation | MPEG motion estimation based on dual start points |
US8000392B1 (en) | 2004-02-27 | 2011-08-16 | Vbrick Systems, Inc. | Phase correlation based motion estimation in hybrid video compression |
US8731071B1 (en) | 2005-12-15 | 2014-05-20 | Nvidia Corporation | System for performing finite input response (FIR) filtering in motion estimation |
US7843995B2 (en) * | 2005-12-19 | 2010-11-30 | Seiko Epson Corporation | Temporal and spatial analysis of a video macroblock |
US8265145B1 (en) * | 2006-01-13 | 2012-09-11 | Vbrick Systems, Inc. | Management and selection of reference frames for long term prediction in motion estimation |
US8724702B1 (en) * | 2006-03-29 | 2014-05-13 | Nvidia Corporation | Methods and systems for motion estimation used in video coding |
US20070274396A1 (en) * | 2006-05-26 | 2007-11-29 | Ximin Zhang | Complexity adaptive skip mode estimation for video encoding |
KR100763917B1 (ko) * | 2006-06-21 | 2007-10-05 | 삼성전자주식회사 | 고속으로 움직임을 추정하는 방법 및 장치 |
KR101228109B1 (ko) * | 2006-07-24 | 2013-01-31 | 삼성전자주식회사 | 움직임 예측장치 및 방법과 이를 채용하는 영상 부호화장치및 방법 |
US8660380B2 (en) | 2006-08-25 | 2014-02-25 | Nvidia Corporation | Method and system for performing two-dimensional transform on data value array with reduced power consumption |
US8213509B2 (en) * | 2006-10-06 | 2012-07-03 | Calos Fund Limited Liability Company | Video coding on parallel processing systems |
US8929448B2 (en) * | 2006-12-22 | 2015-01-06 | Sony Corporation | Inter sub-mode decision process in a transcoding operation |
KR100834443B1 (ko) * | 2007-02-27 | 2008-06-04 | 삼성전자주식회사 | 비디오 코덱을 위한 메모리 구조 및 메모리 액세스 방법 |
EP1988502A1 (en) * | 2007-05-04 | 2008-11-05 | Deutsche Thomson OHG | Method and device for retrieving a test block from a blockwise stored reference image |
US8756482B2 (en) | 2007-05-25 | 2014-06-17 | Nvidia Corporation | Efficient encoding/decoding of a sequence of data frames |
US9118927B2 (en) | 2007-06-13 | 2015-08-25 | Nvidia Corporation | Sub-pixel interpolation and its application in motion compensated encoding of a video signal |
US8873625B2 (en) | 2007-07-18 | 2014-10-28 | Nvidia Corporation | Enhanced compression in representing non-frame-edge blocks of image frames |
JP2009055291A (ja) * | 2007-08-27 | 2009-03-12 | Oki Electric Ind Co Ltd | 動き検出回路 |
US8743972B2 (en) * | 2007-12-20 | 2014-06-03 | Vixs Systems, Inc. | Coding adaptive deblocking filter and method for use therewith |
WO2009094349A1 (en) * | 2008-01-22 | 2009-07-30 | Dolby Laboratories Licensing Corporation | Adaptive motion information cost estimation with dynamic look-up table updating |
US20090323810A1 (en) * | 2008-06-26 | 2009-12-31 | Mediatek Inc. | Video encoding apparatuses and methods with decoupled data dependency |
US20100074336A1 (en) * | 2008-09-25 | 2010-03-25 | Mina Goor | Fractional motion estimation engine |
US8666181B2 (en) | 2008-12-10 | 2014-03-04 | Nvidia Corporation | Adaptive multiple engine image motion detection system and method |
KR100958177B1 (ko) * | 2009-01-22 | 2010-05-14 | 주식회사 코아로직 | 영상의 부호화 방법 및 장치 |
KR101418101B1 (ko) | 2009-09-23 | 2014-07-16 | 에스케이 텔레콤주식회사 | 저주파수 성분을 고려한 영상 부호화/복호화 방법 및 장치 |
US9357228B2 (en) * | 2010-05-27 | 2016-05-31 | The Hong Kong University Of Science And Technology | Motion estimation of images |
WO2012097376A1 (en) | 2011-01-14 | 2012-07-19 | General Instrument Corporation | Spatial block merge mode |
GB2487777B (en) * | 2011-02-04 | 2015-01-07 | Canon Kk | Method and device for motion estimation in a sequence of images |
CN102868889A (zh) * | 2011-07-06 | 2013-01-09 | 乐金电子(中国)研究开发中心有限公司 | 帧间图像视频编解码的运动矢量预测方法及视频编解码器 |
KR20130050405A (ko) * | 2011-11-07 | 2013-05-16 | 오수미 | 인터 모드에서의 시간 후보자 결정방법 |
US9531990B1 (en) | 2012-01-21 | 2016-12-27 | Google Inc. | Compound prediction using multiple sources or prediction modes |
US8737824B1 (en) * | 2012-03-09 | 2014-05-27 | Google Inc. | Adaptively encoding a media stream with compound prediction |
US9185414B1 (en) | 2012-06-29 | 2015-11-10 | Google Inc. | Video encoding using variance |
US9286285B1 (en) | 2012-10-30 | 2016-03-15 | Google Inc. | Formula editor |
US10372808B1 (en) | 2012-12-12 | 2019-08-06 | Google Llc | Passing functional spreadsheet data by reference |
US9628790B1 (en) | 2013-01-03 | 2017-04-18 | Google Inc. | Adaptive composite intra prediction for image and video compression |
US9374578B1 (en) | 2013-05-23 | 2016-06-21 | Google Inc. | Video coding using combined inter and intra predictors |
JP2015015595A (ja) * | 2013-07-04 | 2015-01-22 | 富士通株式会社 | 動画像符号化装置、符号化モード判定方法及び符号化プログラム |
US9311289B1 (en) | 2013-08-16 | 2016-04-12 | Google Inc. | Spreadsheet document tab conditional formatting |
US9609343B1 (en) | 2013-12-20 | 2017-03-28 | Google Inc. | Video coding using compound prediction |
US20150189269A1 (en) * | 2013-12-30 | 2015-07-02 | Google Inc. | Recursive block partitioning |
US9959265B1 (en) | 2014-05-08 | 2018-05-01 | Google Llc | Populating values in a spreadsheet using semantic cues |
CN104185029B (zh) * | 2014-08-18 | 2017-09-29 | 北京君正集成电路股份有限公司 | 一种运动估计中确定运动矢量代价的方法及装置 |
GB2543492B (en) | 2015-10-16 | 2021-11-10 | Digital Barriers Services Ltd | Data Compression |
US11062180B2 (en) * | 2018-07-18 | 2021-07-13 | Shenzhen Malong Technologies Co., Ltd. | Complexity-based progressive training for machine vision models |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7450641B2 (en) * | 2001-09-14 | 2008-11-11 | Sharp Laboratories Of America, Inc. | Adaptive filtering based upon boundary strength |
DE60220047T2 (de) | 2001-05-29 | 2008-01-10 | Koninklijke Philips Electronics N.V. | Verfahren und einrichtung zum verbergen von fehlern |
US6865227B2 (en) | 2001-07-10 | 2005-03-08 | Sony Corporation | Error concealment of video data using motion vector data recovery |
CN1669322A (zh) | 2002-07-15 | 2005-09-14 | 诺基亚有限公司 | 用于视频序列中错误隐藏的方法 |
US6944224B2 (en) | 2002-08-14 | 2005-09-13 | Intervideo, Inc. | Systems and methods for selecting a macroblock mode in a video encoder |
US6922492B2 (en) * | 2002-12-27 | 2005-07-26 | Motorola, Inc. | Video deblocking method and apparatus |
US7471724B2 (en) * | 2003-06-23 | 2008-12-30 | Vichip Corp. Limited | Method and apparatus for adaptive multiple-dimensional signal sequences encoding/decoding |
JP4968726B2 (ja) | 2003-06-25 | 2012-07-04 | トムソン ライセンシング | インターフレームのための高速モード決定符号化 |
KR100597397B1 (ko) * | 2003-11-06 | 2006-07-07 | 삼성전자주식회사 | 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치 |
US7830961B2 (en) * | 2005-06-21 | 2010-11-09 | Seiko Epson Corporation | Motion estimation and inter-mode prediction |
US8879635B2 (en) * | 2005-09-27 | 2014-11-04 | Qualcomm Incorporated | Methods and device for data alignment with time domain boundary |
KR100723861B1 (ko) * | 2005-11-04 | 2007-05-31 | 한국전자통신연구원 | 고속 움직임 예측을 위한 고속 모드 검색 장치 및 방법 |
-
2006
- 2006-01-04 US US11/325,066 patent/US7693219B2/en not_active Expired - Fee Related
- 2006-11-22 WO PCT/US2006/061176 patent/WO2007120286A2/en active Application Filing
- 2006-11-22 KR KR1020087019010A patent/KR20080089624A/ko not_active Application Discontinuation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101432779B1 (ko) * | 2009-12-11 | 2014-08-25 | 에스케이텔레콤 주식회사 | 움직임 보상 프레임의 선택적 필터링을 이용한 영상 부호화/복호화 방법 및 장치와 그를 위한 인터 예측 방법 및 장치 |
KR20140053053A (ko) * | 2010-05-26 | 2014-05-07 | 주식회사 뉴라텍 | 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치 |
KR101539178B1 (ko) * | 2010-05-26 | 2015-07-24 | 뉴라컴 인코포레이티드 | 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치 |
KR101539179B1 (ko) * | 2010-05-26 | 2015-07-24 | 뉴라컴 인코포레이티드 | 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치 |
Also Published As
Publication number | Publication date |
---|---|
US7693219B2 (en) | 2010-04-06 |
WO2007120286A3 (en) | 2008-10-16 |
US20070153897A1 (en) | 2007-07-05 |
WO2007120286A2 (en) | 2007-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7693219B2 (en) | System and method for fast motion estimation | |
KR101521336B1 (ko) | 비디오 코딩을 위한 템플릿 매칭 | |
US8995527B2 (en) | Block type signalling in video coding | |
KR100957316B1 (ko) | 멀티미디어 코딩을 위한 모드 선택 기술 | |
KR101075377B1 (ko) | 인터레이스형 비디오의 최신 양방향 예측 코딩 | |
JP2019080321A (ja) | ビデオコーディングのための適応的な動きベクトル分解シグナリング | |
WO2011002813A1 (en) | Video coding based on first order prediction and pre-defined second order prediction mode | |
WO2005022920A1 (en) | Method and apparatus for encoding hybrid intra-inter coded blocks | |
CN114339218A (zh) | 图像编码方法、图像编码装置、电子设备和可读存储介质 | |
JP2012151576A (ja) | 画像符号化方法、画像符号化装置、画像復号方法及び画像復号装置 | |
CA2706711C (en) | Method and apparatus for selecting a coding mode | |
US20150103909A1 (en) | Multi-threaded video encoder | |
Hsu et al. | Fast reference frame selection method for motion estimation in JVT/H. 264 | |
Chiu et al. | Self-derivation of motion estimation techniques to improve video coding efficiency | |
KR100939280B1 (ko) | 다중 참조 프레임을 이용한 비디오 부호화 방법 및 그방법이 기록된 컴퓨터로 판독 가능한 기록매체 | |
KR20070061214A (ko) | 저비용 움직임 추정 장치 및 움직임 추정 방법 | |
JP5946980B1 (ja) | 画像復号化方法 | |
JP6181242B2 (ja) | 画像復号化方法 | |
JP5951915B2 (ja) | 画像復号化方法 | |
JP5750191B2 (ja) | 画像復号化方法 | |
JP2015111925A (ja) | 画像符号化方法、画像符号化装置、画像復号方法及び画像復号装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |