KR20070076672A - Algorithm for motion estimation and block partition mode - Google Patents

Algorithm for motion estimation and block partition mode Download PDF

Info

Publication number
KR20070076672A
KR20070076672A KR1020060005835A KR20060005835A KR20070076672A KR 20070076672 A KR20070076672 A KR 20070076672A KR 1020060005835 A KR1020060005835 A KR 1020060005835A KR 20060005835 A KR20060005835 A KR 20060005835A KR 20070076672 A KR20070076672 A KR 20070076672A
Authority
KR
South Korea
Prior art keywords
motion vector
search
block division
division mode
pel
Prior art date
Application number
KR1020060005835A
Other languages
Korean (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 삼성전자주식회사
Priority to KR1020060005835A priority Critical patent/KR20070076672A/en
Publication of KR20070076672A publication Critical patent/KR20070076672A/en

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/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

An algorithm for motion estimation and block partition mode decision is provided to suggest a sub-pel search order capable of calculating an SAD(Sum of the Absolute Difference) and a cost every cycle without delay. A motion vector of an integer-pel unit is searched by using information about a current macro-block and macro-blocks within a search area of a previous frame, and a block partition mode is decided while the motion vector is searched(210). It is determined whether a motion vector of a sub-pel unit is additionally searched at the decided block partition mode, and a motion vector of the sub-pel unit is searched in accordance with a result of the determination. When the motion vector of the integer-pel unit is searched and the block partition mode is decided, a plurality of sub-blocks is partitioned into a plurality of groups and a motion vector is decided by the partitioned groups, wherein a block partition mode of the groups is decided if a motion vector for at least two of the groups is decided.

Description

움직임 추정 및 블록 분할 모드 결정 알고리즘{Algorithm for motion estimation and block partition mode} Algorithm for motion estimation and block partition mode

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.BRIEF DESCRIPTION OF THE DRAWINGS In order to better understand the drawings cited in the detailed description of the invention, a brief description of each drawing is provided.

도 1은 동영상에 대한 움직임 추정 및 모드결정을 수행하는 압축기의 일부분을 나타낸다. 1 shows a part of a compressor that performs motion estimation and mode determination for a video.

도 2는 본 발명의 일 실시 예에 따른 움직임 추정 및 블록 분할 모드 결정을 위한 고속의 알고리즘에 대한 신호 흐름도(Flow Chart)이다. 2 is a signal flowchart of a fast algorithm for motion estimation and block division mode determination according to an embodiment of the present invention.

도 3에는 FSM(Finite State Machine)의 예를 나타낸다. 3 shows an example of a finite state machine (FSM).

도 4는 현재 매크로블록의 4×4 블록과 이전의 매크로블록의 4×4 블록 사이의 SAD 값을 구하는 것을 보여준다. FIG. 4 shows obtaining a SAD value between a 4x4 block of the current macroblock and a 4x4 block of the previous macroblock.

도 5는 매크로블록 안의 4×4 블록의 코스트를 계산하는 순서를 나타낸다. 5 shows a procedure for calculating the cost of a 4x4 block in a macroblock.

도 6은 도 5에 도시된 16개 매크로블록 각각의 코스트를 계산하는 단계 및 방법을 나타낸다. FIG. 6 illustrates a step and method for calculating the cost of each of the sixteen macroblocks shown in FIG. 5.

도 7은 본 발명의 다른 일 실시 예에 따른 재사용 레지스터 파일의 데이터 경로를 나타낸다. 7 illustrates a data path of a reuse register file according to another embodiment of the present invention.

도 8을 레지스터 재사용 룩업 테이블의 예이다. 8 is an example of a register reuse lookup table.

도 9는 정수 펠들과 1/2 펠들의 배치 관계를 나타낸다. 9 shows the arrangement relationship of the integer pels and the half pels.

도 10은 본 발명의 다른 일 실시 예에 따른 정수 펠 탐색영역과 셀 펠 탐색영역을 나타낸다. 10 illustrates a purified water pel search area and a cell pel search area according to another embodiment of the present invention.

도 11은 정수 펠, 1/2 펠 및 1/4 펠의 배치도이다. 11 is a layout view of the clean water pel, half pel and quarter pel.

도 12는 1/2 펠을 구하는 보간 법을 설명하기 위한 펠 배치도이다. It is a pel arrangement figure for demonstrating the interpolation method of obtaining 1/2 pel.

본 발명은 동영상 압축에 관한 것으로서, 특히, H.264에 적용할 수 있는 움직임 추정 및 블록 분할 모드 결정 알고리즘에 관한 것이다. The present invention relates to video compression, and more particularly, to a motion estimation and block partition mode determination algorithm applicable to H.264.

디지털 비디오를 소스(카메라 또는 저장된 비디오)로부터 목적지(디스플레이어)까지 전달하기 위해서는 압축(인코딩) 및 복원(디코딩)이라는 핵심 과정이 필요하다. 상기의 과정을 통해 대역폭(Bandwidth)의 부담이 되는 '원래 그대로의' 디지털 비디오는 전송이나 저장을 위해 다루기 쉬운 사이즈로 압축되고, 디스플레이하기 위하여 다시 복원된다. Delivering digital video from a source (camera or stored video) to a destination (display) requires a key process called compression (encoding) and reconstruction (decoding). Through the above process, 'raw' digital video, which is a burden of bandwidth, is compressed into a manageable size for transmission or storage, and then restored for display.

이러한 압축과 복원이라는 과정을 디지털 TV 방송과 DVD-비디오와 같은 디지털 비디오 산업을 위하여 MPEG-2로 알려진 국제표준 ISO/IEC 13818이 제정되었고, 더 뛰어난 압축도구에 대한 수요를 예상하여 2개의 압축 표준안이 개발되었는데, 바로 MPEG-4 Visual과 H.264이다. 상기 H.264 표준은 국제전기통신연합(ITU―T)에서 제정한 비디오 압축기술 표준으로, MPEG-4 AVC(Moving Picture Experts Group - Phase 4 Advanced Video Coding)이라고 하기도 한다. 상기 2개의 압축 표준안은 동일한 생성과정을 거쳤고 몇 가지 공통적인 특징을 가지고 있지만, 상당히 다른 목표를 가진다. This compression and decompression process was established by the international standard ISO / IEC 13818, known as MPEG-2, for the digital video industry such as digital television broadcasting and DVD-Video. This was developed: MPEG-4 Visual and H.264. The H.264 standard is a video compression technology standard established by the International Telecommunication Union (ITU-T) and is also called MPEG-4 Moving Picture Experts Group-Phase 4 Advanced Video Coding (AVC). The two compression standards have gone through the same process and have some common features, but with very different goals.

MPEG-4 Visual의 목표는 직사각형의 비디오 이미지에만 의존하는 한계를 극복함으로서, 화상 통신을 위한 자유롭고 유연한 구조를 제공하여 효율적인 비디오 압축 및 객체 기반 프로세싱과 같은 최상의 기능을 사용할 수 있게 하는 것이다. 이와는 반대로, H.264는 보다 실용적인 목표를 가지고 있는데, 이전의 표준안에서와 같은 직사각형의 비디오 압축을 보다 효율적이고 강력하고 실용적인 방법으로 수행하여, 시장에 널리 보급되고 있는 방송, 저장, 스트리밍과 같은 응용분야를 지원하는 것이다. The goal of MPEG-4 Visual is to overcome the limitations of relying only on rectangular video images, providing a free and flexible structure for video communications, enabling the use of the best features such as efficient video compression and object-based processing. In contrast, H.264 has a more practical goal: to perform rectangular video compression as in previous standards in a more efficient, powerful and practical way, such as broadcast, storage, and streaming, which are widely used in the market. To support the field.

H.264 표준은, 종래의 동영상 부호화 방식과 마찬가지로, 이미 부호화된 영상 프레임으로부터 움직임을 추정한 예측신호를 작성하고, 상기 영상프레임과 상기 예측신호의 차 신호(잔차신호)를 이산 코사인 변환(Discrete Cosine Transform, 이하 DCT)하여 부호화하는 움직임 보상(Motion Estimation) DCT 기술을 토대로 하고 있다. H.264 표준은, 기존 MPEG2보다 압축률이 2∼3배정도 뛰어나며, 예를 들면, MPEG2로 4Mbps(Mega bit per second) 수준의 SD(Standard Definition)급 서비스라도, H.264 표준을 적용하면 1.5Mbps로도 충분하다. H.264 표준은 1 Mbps 이하의 속도에서 DVD 수준의 고품질 비디오를 제공할 수 있기 때문에, 위성, 케이블 및 인터넷프로토콜TV(IPTV) 사업자들도 상기 H.264에 대해 관심을 기울이는 추세다. As in the conventional video encoding method, the H.264 standard generates a predictive signal that estimates motion from an already encoded video frame, and discrete cosine transforms the difference signal (residual signal) between the video frame and the predictive signal. Cosine Transform (hereinafter referred to as DCT) is based on a Motion Estimation DCT technique. The H.264 standard has two to three times better compression rate than the existing MPEG2. For example, even if the standard definition (SD) service of 4 Mbps (Mega bit per second) level in MPEG2 is applied, the H.264 standard is 1.5Mbps. Is enough. Since the H.264 standard can deliver DVD-quality high-quality video at speeds below 1 Mbps, satellite, cable and Internet Protocol TV (IPTV) operators are also interested in H.264.

도 1은 동영상에 대한 움직임 추정 및 모드결정을 수행하는 압축기의 일부분 을 나타낸다. 1 shows a part of a compressor that performs motion estimation and mode determination for a video.

도 1을 참조하면, 상기 압축기(Compressor, 100)는, 메모리(110), 제1제어블록(120), 제2제어블록(130), BSU(140), MV 제어블록(150), 모드 및 MV 결정블록(160) 및 메인 제어블록(170)을 구비한다.  Referring to FIG. 1, the compressor 100 includes a memory 110, a first control block 120, a second control block 130, a BSU 140, an MV control block 150, a mode and The MV decision block 160 and the main control block 170 are provided.

메모리(110)는, 현재의 매크로 블록(Macro-block)의 화소 데이터를 저장하는 제1메모리(111) 및 참조 탐색 영역(Reference Search Area)의 화소 데이터를 저장하는 제2메모리(112)를 구비한다. 제1제어블록(120)은, 상기 메인 제어블록(170)의 제어신호에 응답하여 상기 제1메모리(111)로부터 현재의 매크로 블록을 4×4 단위로 순서에 맞게 읽어 온다. 제2제어블록(130)은, 상기 메인 제어블록(170)의 제어신호에 응답하여 상기 제1메모리(111)로부터 참조 탐색 영역의 매크로 블록을 4×4 단위로 순서에 맞게 읽어 오며, 서브 펠 모드(Sub-pel Mode)일 때는 서브 펠 인터폴레이션(Interpolation)을 수행하는 필터의 역할을 수행한다. 여기서, 펠(pel) 은 픽셀(pixel)의 줄임 말이다. The memory 110 includes a first memory 111 that stores pixel data of a current macro-block and a second memory 112 that stores pixel data of a reference search area. do. The first control block 120 reads the current macro block in order of 4 × 4 from the first memory 111 in response to the control signal of the main control block 170. The second control block 130 reads the macro blocks of the reference search area in the order of 4x4 from the first memory 111 in order in response to the control signal of the main control block 170, and sub-pels. In the sub-pel mode, the sub-pel interpolation performs the role of a filter. Here, pel is short for pixel.

BSU(Basic Search Unit, 140)는, 제1제어블록(120) 및 제2제어블록(130)으로부터 수신된 현재의 매크로 블록 및 참조 탐색 영역이 매크로 블록에 대하여 4×4 단위의 SAD(Sum of the Absolute Difference)를 계산한다. MV 제어블록(150)은, 현재 매크로 블록의 주위에 있는 블록들의 움직임 벡터(Motion Vector)를 수신하여, 현재 매크로 블록의 움직임 벡터를 추정한 P-MV(Predicted Motion Vector)를 생성한다. 모드 결정블록(160)은, BSU(140)로부터 계산된 상기 SAD 및 상기 MV 예측블록(150)으로부터 상기 P-MV를 수신하여 최적의 MV 및 블록 분할 모드(Block Partition Mode)를 결정한다. 메인 제어블록(170)은, 상기 모드 결정블록(160)의 내부정보에 따라 상기 제1제어블록(120) 및 제2제어블록(130)의 동작을 제어한다. The Basic Search Unit (BSU) 140 includes a SAD (Sum of 4 × 4 unit) of the current macro block and the reference search area received from the first control block 120 and the second control block 130 with respect to the macro block. Calculate the Absolute Difference. The MV control block 150 receives a motion vector of blocks around the current macro block and generates a Predicted Motion Vector (P-MV) that estimates the motion vector of the current macro block. The mode decision block 160 receives the P-MV from the SAD and the MV prediction block 150 calculated from the BSU 140 to determine an optimal MV and block partition mode. The main control block 170 controls the operations of the first control block 120 and the second control block 130 according to the internal information of the mode determination block 160.

현재 H.264 움직임 추정(ME)에 대해서는 많은 연구가 이루어지고 있는데, 상기 H.264 움직임 추정에는 아래와 같은 문제점이 있다. Currently, a lot of research is being conducted on the H.264 motion estimation (ME), and the H.264 motion estimation has the following problems.

1. H.264 규격의 복잡성으로 인해 이를 구현하는 하드웨어의 사이즈가 크다. 1. Due to the complexity of the H.264 standard, the hardware that implements it is large.

2. 모든 모드 및 움직임 벡터에 대한 중간 계산결과 값을 저장하는 레지스터가 과다하게 필요하다. 2. Excessive registers are needed to store intermediate calculations for all modes and motion vectors.

3. 서브 펠 탐색을 위해 주위의 다른 펠들의 데이터를 읽기 위한 메모리 액세스가 증가한다. 3. Increased memory access to read data from other nearby pels for subpel search.

상기의 문제점을 극복하기 위하여, In order to overcome the above problems,

1. 움직임 추정 및 블록 분할 모드(Block Partition Mode) 결정을 위한 고속 알고리즘의 개발, 1. Development of Fast Algorithm for Motion Estimation and Block Partition Mode Decision,

2. 블록 분할 모드 및 움직임 벡터에 대한 중간 계산결과 값들을 저장하기 위하여 사용되는 레지스터의 수의 감소, 2. a reduction in the number of registers used to store interpolated result values for block division mode and motion vectors,

3. 서브(Sub) 펠 탐색 영역과 정수(Integer) 펠 탐색 영역의 차별화를 제안한다. 3. We propose differentiation between sub pel search area and integer pel search area.

본 발명이 이루고자 하는 기술적 과제는, 움직임 추정 및 블록 분할 모드 결정을 위한 고속의 알고리즘을 제공하는데 있다. An object of the present invention is to provide a fast algorithm for motion estimation and block division mode determination.

본 발명이 이루고자 하는 다른 기술적 과제는, 정수 펠 탐색 범위와 서브 펠 탐색 범위를 차별화시키는 방법을 제공하는데 있다. Another technical problem to be achieved by the present invention is to provide a method for differentiating the purified water pel search range and the sub-pel search range.

본 발명이 이루고자 하는 또 다른 기술적 과제는, 지연(delay) 없이 매 사이클마다 SAD 나 코스트(Cost)를 구할 수 있는 서브 펠 탐색 순서를 제공하는데 있다. Another technical problem to be achieved by the present invention is to provide a sub-pel search sequence in which SAD or cost can be obtained every cycle without delay.

상기 기술적 과제를 달성하기 위한 본 발명에 따른 움직임 추정 및 블록 분할 모드 결정 알고리즘은, 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계 및 서브 펠 단위 움직임 벡터 탐색 단계를 구비한다. According to an aspect of the present invention, a motion estimation and block division mode determination algorithm includes an integer pel unit motion vector search, a block partition mode determination step, and a sub pel unit motion vector search step.

상기 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계는, 현재의 매크로블록 및 이전 프레임의 탐색영역 내의 매크로블록들에 대한 정보를 이용하여 정수 단위의 움직임 벡터를 탐색하고, 탐색이 진행되는 도중에 블록 분할 모드를 결정한다. 상기 서브 펠 단위 움직임 벡터 탐색 단계는, 상기 정수 펠 단위 움직임벡터 탐색 및 블록 분할 모드 결정단계에서 결정된 블록 분할 모드에서, 서브 펠 단위의 움직임 벡터를 추가로 탐색하여야 하는 가를 판단하고, 판단결과에 따라 서브 펠 단위의 움직임 벡터의 탐색을 수행한다. In the step of determining the integer pel motion vector and determining the partition mode, the motion vector of the integer unit is searched using information on the macroblocks in the search area of the current macroblock and the previous frame, and the block is in the middle of the search. Determine the split mode. In the subpel unit motion vector search step, in the block partition mode determined in the integer unit unit vector search and block division mode determination step, it is determined whether the motion vector of the subpel unit should be further searched, and according to the determination result. Search for motion vectors in subpel units.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.DETAILED DESCRIPTION In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings which illustrate preferred embodiments of the present invention and the contents described in the drawings.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.

도 2는 본 발명의 일 실시 예에 따른 움직임 추정 및 블록 분할 모드 결정을 위한 고속의 알고리즘에 대한 신호 흐름도(Flow Chart)이다. 2 is a signal flowchart of a fast algorithm for motion estimation and block division mode determination according to an embodiment of the present invention.

도 2를 참조하면, 상기 고속의 알고리즘은, 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210), 서브 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(230) 및 움직임 벡터 및 블록 분할 모드 최종 결정단계(250)를 구비한다. Referring to FIG. 2, the fast algorithm includes an integer pel unit motion vector search and block division mode determination step 210, a sub pel unit motion vector search and block division mode determination step 230, and a motion vector and block division mode. A final decision step 250 is provided.

정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)는, 현재의 매크로블록 및 이전의 프레임의 탐색영역내의 매크로 블록들에 대한 정보를 이용하여, 정수단위(Integer Unit)의 움직임 벡터를 탐색하고 블록 분할 모드를 결정한다. The integer pel unit motion vector search and block division mode determination step 210 may search for a motion vector of an integer unit by using information about macroblocks in a search region of a current macroblock and a previous frame. To determine the block division mode.

서브 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(230)는, 스킵(Skip) 판단단계(235) 및 서브 펠 탐색단계(240)를 구비한다. The subpel unit motion vector search and block division mode determination step 230 includes a skip determination step 235 and a subpel search step 240.

스킵 판단단계(235)는, 제1판단단계(236), 제1스킵 판단단계(237), 제2스킵 판단단계(238), 영역 이탈 판단단계(239)를 구비한다. The skip determination step 235 includes a first determination step 236, a first skip determination step 237, a second skip determination step 238, and an area deviation determination step 239.

제1판단단계(236)는, 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)에서 결정된 블록 분할 모드가 16×16 형태인지를 판단한다. The first determination step 236 determines whether the block division mode determined in the integer pel unit motion vector search and block division mode determination step 210 is 16 × 16.

제1스킵 판단단계(237)는, 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)에서 결정된 블록 분할 모드가 16×16일 때, 예측된 움직임 벡터(P-MV)에 대한 SAD(Sum of the Absolute Difference)의 값(SAD16×16(PMV)을 스 킵 기준 값(Skip threshold Value, Th16LL)과 비교한다. 여기서, 예측된 움직임 벡터(P-MV)는 이미 계산된 주변 움직임 벡터로부터 특별한 계산 없이 용이하게 구할 수 있다. In the first skip determination step 237, when the block division mode determined in the integer pel unit motion vector search and block division mode determination step 210 is 16 × 16, the SAD for the predicted motion vector (P-MV) is determined. The value of Sum of the Absolute Difference (SAD16 × 16 (PMV)) is compared with the Skip Threshold Value (Th16 LL ), where the predicted motion vector (P-MV) is already calculated for the peripheral motion. It can be easily obtained from a vector without any special calculation.

제2스킵 판단단계(238)는, 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)에서 결정된 블록 분할 모드가 16×16이 아니거나 상기 예측된 움직임 벡터(P-MV)에 대한 SAD의 값(SAD16×16(PMV))이 상기 스킵 기준 값(Th16LL)에 비해 작거나 같지 않을 때, 해당 블록 분할 모드에 대하여 계산한 MAD(Mean of the Absolute Difference) 값과 SPME 스킵 기준 값(Sub Pel Motion Estimation Skip Threshold Value, Thb)을 비교한다. In the second skip determination step 238, the block division mode determined in the integer pel unit motion vector search and block division mode determination step 210 is not 16 × 16 or is determined for the predicted motion vector P-MV. Mean of the Absolute Difference (MAD) and SPME skip reference values calculated for the block division mode when the value of SAD (SAD16 × 16 (PMV)) is not less than or equal to the skip reference value (Th16 LL ). (Sub Pel Motion Estimation Skip Threshold Value, Thb).

영역 이탈 판단단계(239)는, 상기 MAD 값이 상기 SPME 스킵 기준 값(Thb)에 비해 작거나 같지 않을 때, SPME 탐색 영역이 구별영역의 범위에 포함되는 가를 판단한다. 상기 구별영역에 대해서는 도 10 및 도 10의 설명을 참조하면 된다. In the region deviation determining step 239, when the MAD value is not equal to or smaller than the SPME skip reference value Thb, it is determined whether the SPME search region is included in the range of the distinguished region. See the descriptions of FIGS. 10 and 10 for the distinction area.

서브 펠 탐색 단계(240)는, 상기 영역 이탈 판단단계(239)에서 판단한 결과 상기 SPME 탐색 영역이 상기 구별영역에 포함되지 않는 경우, 서브 펠에 대한 탐색을 수행한다. In the sub-pel search step 240, when the SPME search area is not included in the distinguished area as determined in the area deviation determining step 239, the sub-pel search step 240 searches.

여기서, 아래에 나열할 3가지 경우에는 서브 펠 탐색(240)을 수행하지 않는다. Here, in the three cases listed below, the subpel search 240 is not performed.

1. 제1스킵 판단단계(237)에서 판단한 결과 상기 스킵 기준 값(Th16LL)이 예측된 움직임 벡터(P-MV)의 값에 비하여 크거나 같은 경우. 1. When the skip reference value Th16 LL is greater than or equal to the value of the predicted motion vector P-MV, as determined in the first skip determination step 237.

2. 제2스킵 판단단계(238)에서 판단한 결과 SPME 스킵 기준 값(Thb)이 MAD 값 보다 크거나 같은 경우. 2. The SPME skip reference value Thb is greater than or equal to the MAD value as a result of the determination in the second skip determination step 238.

3. 상기 영역 이탈 판단단계(239)에서 판단한 결과 SPME 탐색 영역이 상기 구별영역에 포함되는 경우. 3. The SPME search region is included in the distinguished region as a result of the determination in the region deviation determining step 239.

움직임 벡터 및 블록 분할 모드 최종 결정단계(250)는, 서브 펠 탐색(240)을 수행하지 않는 것으로 판단된 상기 3가지 경우 외에 상기 서브 펠 탐색 단계(240)에서 수행되어 얻어진 서브 펠에 대한 정보를 수신한 경우, 최종 움직임 벡터(Final Motion Vector)를 결정하고 동시에 각각의 분할 블록마다 정해진 모드에 따른 예측된 움직임 벡터(P-MV)를 계산하여 MVd를 계산하며, 최종 블록 분할 모드(Final Partition mode)를 결정한다. 여기서 MVd는, MV와 P-MV의 차이 값(= MV - P-MV)을 의미하며, VLC(Variable Length Coding)를 수행하는 기능블록(미도시)에 전달된다. 상기에 사용된 스킵 기준 값(Th16LL) 및 SPME 스킵 기준 값(Thb)은 컴퓨터 모의실험 또는 경험에 의하여 임의로 정할 수 있다. The final determination step 250 of the motion vector and the block division mode may include information on the subpels obtained by performing the subpel search step 240 in addition to the three cases determined as not performing the subpel search 240. When received, the final motion vector is determined, and at the same time, MVd is calculated by calculating a predicted motion vector (P-MV) according to a predetermined mode for each partition block, and finally, a partition partition mode (Final Partition mode) Is determined. Here, MVd means a difference value between MV and P-MV (= MV-P-MV) and is transmitted to a functional block (not shown) that performs variable length coding (VLC). The skip reference value Th16 LL and the SPME skip reference value Thb used above may be arbitrarily determined by computer simulation or experience.

이하에서, 도 2에 도시된 본 발명의 일 실시 예에 따른 움직임 추정 및 블록 분할 모드 결정을 위한 알고리즘에 대한 신호 흐름도(Flow Chart)에 대하여 설명한다. Hereinafter, a signal flowchart for an algorithm for motion estimation and block division mode determination according to an embodiment of the present invention shown in FIG. 2 will be described.

정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)에서 언급된 블록 분할 모드에 대하여 설명한다. The block division mode mentioned in the integer pel unit motion vector search and block division mode determination step 210 will be described.

현재 매크로블록에 대한 움직임 벡터는 기본적으로 4×4의 블록에 대하여 결 정되는데, 경우에 따라서는 8×4, 4×8, 8×16, 16×8 및 16×16 중의 하나의 매크로 블록에 대하여 결정될 수 있다. 상기와 같이 움직임 벡터를 어떤 형태의 매크로 블록에 대응되게 할 것인가를 결정하는 것이 상술한 블록 분할 모드결정이다. 상기 블록 분할 모드 결정에는, 상기의 복수의 매크로블록 중의 어느 형태의 것도 선택하지 않고 움직임 벡터도 결정하지 않도록 하는 스킵(Skip)모드가 더 포함될 수 있다. The motion vector for the current macroblock is basically determined for a 4x4 block, which in some cases is one of 8x4, 4x8, 8x16, 16x8, and 16x16 macroblocks. Can be determined. As described above, it is the above-described block division mode decision to determine which type of macro block the motion vector corresponds to. The block division mode determination may further include a skip mode for not selecting any type of the plurality of macroblocks and determining a motion vector.

블록 분할 모드 및 움직임 벡터를 결정할 때는, 수학식 1에 표현한 코스트(Cost) 개념을 사용한다. When determining the block division mode and the motion vector, the cost concept expressed in Equation 1 is used.

Cost = SAD + λ×Rmv + αCost = SAD + λ × Rmv + α

여기서, λ는 라그랑지안 승수(Lagrangian multiplier)로서 H.264의 Qp에 대한 함수이며, Qp는 양자화계수이다. Rmv는 움직임 벡터 코딩 비트레이트(Motion Vector Coding Bit Rate)로서 예측된 움직임 벡터(P-MV)에 근접한 움직임 벡터일수록 작은 값을 가진다. α는 사용자가 자율적으로 지정할 수 있는 가중치로서 일반적으로 정수가 된다. Where λ is a Lagrangian multiplier, a function of Qp of H.264, and Qp is a quantization coefficient. Rmv is a motion vector coding bit rate, and a motion vector closer to the predicted motion vector (P-MV) has a smaller value. α is a weight that can be assigned autonomously by the user and is generally an integer.

정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계(210)에서는, 수학식 1에 표시된 코스트(Cost)의 값이 가장 적은 경우에 해당하는 움직임 벡터를 결정하고 이에 대응되는 블록 분할 모드를 예비로 결정한다. 이 때 결정 된 움직임 벡터는 정수 단위의 움직임 추정에 의하여 결정된 것이다. In the integer pel unit motion vector search and block division mode determination step 210, a motion vector corresponding to the lowest cost value shown in Equation 1 is determined and the block division mode corresponding thereto is preliminarily determined. do. The motion vector determined at this time is determined by motion estimation in integer units.

도 3에는 FSM(Finite State Machine)의 예를 나타낸다. 3 shows an example of a finite state machine (FSM).

도 3에 도시된 FSM을 적용한 움직임 추정(ME) 및 모드 결정(MD)은 메인 제어블록(170)에서 통제한다. 상기 FSM은 매크로 블록 단위로 동작하며, 복수 개의 계층적 레이어(Hierarchical layer)에서 이루어진다. The motion estimation (ME) and the mode determination (MD) applying the FSM shown in FIG. 3 are controlled by the main control block 170. The FSM operates in macroblock units and is performed in a plurality of hierarchical layers.

각 레이어에서는 4×4 단위로 SAD 값을 계산하는데, 상기 SAD 값은 BSU(140)에서 이루어진다. In each layer, SAD values are calculated in units of 4 × 4, and the SAD values are made in the BSU 140.

도 3은 계층구조 움직임 탐색기법의 예이다. 본 발명은 상기의 방법 외에 다른 정수 펠 단위 움직임 탐색방법에의 적용도 가능하다. 3 is an example of the hierarchical motion search method. The present invention can be applied to other integer pel unit motion search methods in addition to the above method.

도 4는 현재 매크로블록의 4×4 블록과 이전의 매크로블록의 4×4 블록 사이의 SAD 값을 구하는 것을 보여준다. FIG. 4 shows obtaining a SAD value between a 4x4 block of the current macroblock and a 4x4 block of the previous macroblock.

도 4를 참조하면, 현재(C) 매크로블록 및 이전(P)의 매크로블록 사이의 차이의 절대값(|C-P|)을 나타낸다. 각 매크로블록의 셀 내부에 표시된 알파벳의 아래 첨자로 표시된 숫자는 매크로블록의 셀 위치에 대응된다. 각 셀들의 차의 절대값들을 구하고 이들을 단계별로 더하여 최종적으로 SAD(4×4)의 값을 계산한다. 4, the absolute value (| C-P |) of the difference between the current (C) macroblock and the previous (P) macroblock is shown. The number indicated by the subscript of the alphabet displayed inside the cell of each macroblock corresponds to the cell position of the macroblock. The absolute values of the differences of the cells are obtained, and these are added step by step to finally calculate the value of SAD (4 × 4).

4×4 단위 움직임 벡터를 탐색할 때, 최소의 값을 가지는 SAD를 얻기 위하여, 탐색 그룹 내에서 같은 SAD 값을 가질 경우, 해당 매크로블록의 예측된 움직임 벡터(P-MV)와의 거리를 비교하여 상기 예측된 움직임 벡터(P-MV)와 가까운 거리에 있는 SAD 및 움직임 벡터(MV)를 선택한다. When searching for a 4 × 4 unit motion vector, in order to obtain the SAD having the smallest value, the distance from the predicted motion vector (P-MV) of the corresponding macroblock is compared with the same SAD value in the search group. A SAD and a motion vector MV that are close to the predicted motion vector P-MV are selected.

도 5는 매크로블록의 코스트를 계산하는 순서를 나타낸다. 5 shows a procedure for calculating the cost of a macroblock.

도 5를 참조하면, 4개의 블록을 하나의 그룹으로 묶으면, 16개의 서브블록은 4개의 그룹으로 분할되며, 임의의 한 그룹을 구성하는 각 매크로블록들의 코스트를 알파벳 Z의 방향으로 계산한다. 하나의 그룹으로 묶여진 4개의 블록은 0-3, 4-7, 8-11 및 12-15이다. Referring to FIG. 5, when four blocks are grouped into one group, 16 subblocks are divided into four groups, and the cost of each macroblock constituting any one group is calculated in the direction of the letter Z. The four blocks grouped into one group are 0-3, 4-7, 8-11 and 12-15.

도 6은 도 5에 도시된 16개 서브블록 각각의 코스트를 계산하는 단계 및 방법을 나타낸다. FIG. 6 illustrates a step and method for calculating the cost of each of the sixteen subblocks shown in FIG. 5.

도 6을 참조하면, 첫 번째 그룹에 포함된 각 서브블록들(4×4_0, 4×4_1, 4×4_2, 4×4_3)의 코스트를 Z 방향으로 계산한다. 먼저 2개의 서브블록(4×4_0, 4×4_1)에 대하여 코스트(Cost4_0, Cost4-1)를 순서대로 계산한다. 계산된 2개의 코스트(Cost4_0, Cost4-1)를 이용하여 2개의 서브블록(4×4_0, 4×4_1)들이 합쳐져서 형성할 수 있는 8×4 모드에 대한 코스트(Cost84_0)를 계산한다. 세 번째로 계산된 세 번째 서브블록(4×4_2)의 코스트(Cost4_2) 및 이미 계산된 첫 번째 서브블록(4×4_0)의 코스트(Cost4_0)를 이용하여 2개의 서브블록(4×4_0, 4×4_2)이 합쳐져서 형성할 수 있는 4×8 모드에 대한 코스트(Cost48_0)를 계산한다. 네 번째로 계산된 네 번째 서브블록(4×4_3)의 코스트(Cost4_3)와 이미 구한 세 번째 서브블록(4×4_2)의 코스트(Cost4_2)를 이용하여 2개의 서브블록(4×4_2, 4×4_3)이 합쳐져서 형성할 수 있는 8×4 모드에 대한 코스트(Cost84_1)를 구하고, 이미 구한 두 번째 서브블록(4×4_1)의 코스트(Cost4_1)를 이용하여 2개의 서브블록(4×4_1, 4×4_3)이 합쳐져서 형성할 수 있는 4×8 모드에 대한 코스트(Cost48_1)를 구하며, 4개의 코스트 전체(Cost4_0, Cost4_1, Cost4_2, Cost4_3)를 이용하여 8×8 모드에 대한 코스트(Cost88_0)를 구한다. Referring to FIG. 6, the cost of each of the subblocks 4x4_0, 4x4_1, 4x4_2, and 4x4_3 included in the first group is calculated in the Z direction. First, the costs Cost4_0 and Cost4-1 are calculated in order for the two subblocks 4x4_0 and 4x4_1. The two costs (Cost4_0 and Cost4-1) are used to calculate the cost (Cost84_0) for the 8x4 mode, which can be formed by combining two subblocks (4x4_0 and 4x4_1). Two subblocks (4x4_0, 4) using the cost (Cost4_2) of the third calculated third subblock (4x4_2) and the cost (Cost4_0) of the first subblock (4x4_0) already calculated The cost Cost48_0 for the 4x8 mode which can be formed by adding up x4_2) is calculated. Two subblocks (4 × 4_2, 4 ×) using the cost (Cost4_3) of the fourth calculated fourth block (4 × 4_3) and the cost (Cost4_2) of the third subblock (4 × 4_2) already obtained. The cost (Cost84_1) for the 8x4 mode that can be formed by combining 4_3) is obtained, and two subblocks (4x4_1, 4) are obtained by using the cost (Cost4_1) of the second subblock (4x4_1). The cost (Cost48_1) for the 4x8 mode that can be formed by combining the x4_3) is obtained, and the cost (Cost88_0) for the 8x8 mode is obtained using all four costs (Cost4_0, Cost4_1, Cost4_2, and Cost4_3). .

상기와 같은 순서에 따라 계산된 첫 번째 그룹의 4개의 서브블록에 대한 코 스트를 이용하여, 첫 번째 그룹에 포함된 4개의 서브블록에 대한 블록 분할 모드를 결정할 수 있다. The block division mode for the four subblocks included in the first group may be determined using the cost for the four subblocks of the first group calculated according to the above order.

두 번째 그룹에 포함된 서브블록들(4×4_4, 4×4_5, 4×4_6, 4×4_7)에 대하여 상기 첫 번째 그룹에서 행하였던 연산을 동일하게 수행한다면, 두 번째 그룹에 포함된 서브블록들에 대한 블록 분할 모드도 동일한 과정을 거쳐 결정할 수 있다. If the same operations performed in the first group are performed on the subblocks 4x4_4, 4x4_5, 4x4_6, and 4x4_7 in the second group, the subblocks included in the second group The block splitting mode for the same may be determined through the same process.

세 번째 그룹에 포함된 서브블록(4×4_8, 4×4_9, 4×4_10, 4×4_11) 및 네 번째 그룹에 포함된 서브블록(4×4_12, 4×4_13, 4×4_14, 4×4_15)에 대해서도 상술한 첫 번째 그룹 및 두 번째 그룹에서 행한 연산과 동일한 연산을 수행하여, 각각의 블록 분할 모드를 결정할 수 있다. Subblocks included in the third group (4 × 4_8, 4 × 4_9, 4 × 4_10, 4 × 4_11) and subblocks included in the fourth group (4 × 4_12, 4 × 4_13, 4 × 4_14, 4 × 4_15 ), The same operation as the operation performed in the first group and the second group described above may be performed to determine each block division mode.

특히, 첫 번째 그룹 및 두 번째 그룹의 최종 코스트(Cost88_0, Cost88_1)를 이용하여 16×8 모드에 대한 코스트(Cost168_0)를 계산할 수 있으며, 세 번째 그룹 및 네 번째 그룹의 최종코스트(Cost88_2, Cost88_3)를 이용하여 16×8 모드에 대한 코스트(Cost168_1)를 계산할 수 있다. 첫 번째 그룹 및 세 번째 그룹의 최종코스트(Cost88_0, Cost88_2)를 이용하여 8×16 모드에 대한 코스트(Cost816_0)를 계산할 수 있으며, 두 번째 그룹 및 네 번째 그룹의 최종코스트(Cost88_1, Cost88_3)를 이용하여 8×16 모드에 대한 코스트(Cost816_1)를 계산할 수 있다. In particular, the final cost (Cost88_0, Cost88_1) of the first group and the second group can be used to calculate the cost (Cost168_0) for the 16x8 mode, and the final cost (Cost88_2, Cost88_3) of the third and fourth group. The cost Cost168_1 for the 16 × 8 mode can be calculated using. The final cost (Cost88_0, Cost88_2) of the first group and the third group can be used to calculate the cost (Cost816_0) for 8x16 mode, and the final cost (Cost88_1, Cost88_3) of the second and fourth group. The cost Cost816_1 for the 8x16 mode can be calculated.

종래에는 상기 16개 매크로블록에 대한 연산뿐만 아니라 후술 할 서브 펠 레벨에서의 탐색이 이루어 진 후 비로소 최소 코스트를 갖는 블록 분할 모드를 결정하였기 때문에, 블록 분할 모드를 선택할 때까지는 중간 연산 결과 값을 모두 저장하여야 했다. 따라서, 상당한 개수의 레지스터(Register)가 필요하게 되므로 결국 하드웨어의 사이즈가 증가하는 원인이 된다. Conventionally, since the block division mode having the minimum cost is determined after not only the operation for the 16 macroblocks but also the subpel level to be described later, all intermediate calculation result values are selected until the block division mode is selected. Had to save. Therefore, a considerable number of registers are required, which eventually leads to an increase in the size of the hardware.

그러나, 도 6을 참조하면, 총 16개의 매크로블록 중에서 첫 번째 그룹을 형성하는 4개의 매크로블록에 대해서는, 다른 그룹의 연산 결과를 기다릴 필요 없이 예비로 블록 분할 모드를 결정할 수 있다. 또한 두 번째 그룹을 형성하는 4개의 매크로블록에 대해서도, 상기 첫 번째 그룹에서 결정된 블록 분할 모드에 관계없이, 독자적으로 블록 분할 모드를 결정할 수 있다. 계속하여, 세 번째 그룹 및 네 번째 그룹도 앞의 첫 번째 및 두 번째 그룹에서 결정된 블록 분할 모드에 관계없이 블록 분할 모드를 각각 결정할 수 있다. However, referring to FIG. 6, for the four macroblocks forming the first group of the total 16 macroblocks, the block partition mode may be preliminarily determined without waiting for the operation result of another group. In addition, even for the four macroblocks forming the second group, the block division mode can be independently determined regardless of the block division mode determined in the first group. Subsequently, the third group and the fourth group may also determine the block division mode, respectively, regardless of the block division mode determined in the first and second groups.

상기의 내용 및 도 6을 참조하면, 해당 그룹의 최종 코스트(Cost88_0, Cost8-1, Cost88_2, Cost8-3)들을 제외하고, 해당 그룹에 포함되는 4개의 매크로블록 각각에 대한 코스트 및 이들을 이용하여 연산한 코스트들의 중간 값들은 이 후의 연산에서는 더 이상 사용되지 않는다는 것을 알 수 있다. 따라서, 본 발명에서는, 해당 그룹의 최종 코스트(Cost88_0, Cost8-1, Cost88_2, Cost8-3)를 저장하는 레지스터를 제외한, 중간 값들을 저장하는 레지스터를 재 사용할 것을 제안한다. With reference to the foregoing and FIG. 6, except for the final costs (Cost88_0, Cost8-1, Cost88_2, Cost8-3) of the group, the cost for each of the four macroblocks included in the group and the calculation are performed using them. It can be seen that the median values of the ones are no longer used in subsequent computations. Accordingly, the present invention proposes to reuse a register that stores intermediate values, except for a register that stores the final cost (Cost88_0, Cost8-1, Cost88_2, Cost8-3) of the group.

도 7은 본 발명의 다른 일 실시 예에 따른 레지스터 데이터 경로를 나타낸다. 7 illustrates a register data path according to another embodiment of the present invention.

도 7을 참조하면, 상기 레지스터 데이터 경로는, 레지스터 파일(710) 및 멀티플렉서(730)를 구비한다. Referring to FIG. 7, the register data path includes a register file 710 and a multiplexer 730.

레지스터 파일(710)은, 8비트 레지스터 12개 열을 구비하는 파일(file)을 총 12개로 이루어지며, 입력되는 이전 프레임의 펠들의 데이터(Previous Pels), 보간 처리된 펠들의 데이터(Interpolated Pels), SAD 값들(SAD values) 및 움직임 벡터 값들(MVs)을 저장/출력한다. The register file 710 is composed of a total of 12 files including 12 columns of 8-bit registers. The data of the previous frame of the pels (Previous Pels) and the data of the interpolated pels (Interpolated Pels) are input. Save / output SAD values and motion vector values MVs.

멀티플렉서(730)는, 움직임 추정 상태에 대한 정보(ME state), 프로세서 카운터(Process Counter), 매크로블록 분할(Partition) 사이즈를 결정하는 매크로블록의 형태신호(mb_type) 및 서브 매크로블록 분할 사이즈를 결정하는 서브 매크로블록의 형태(sub_mb_type) 등의 정보에 응답하여, 이전 프레임의 펠들의 데이터(Previous Pels), 보간 처리된 펠들의 데이터(Interpolated Pels), SAD 값들(SAD values) 및 움직임 벡터 값들(MVs) 및 상기 레지스터 파일(710)로부터 출력되는 입력되는 이전 프레임의 펠들의 데이터(Previous Pels), 보간 처리된 펠들의 데이터(Interpolated Pels), SAD 값들(SAD values) 및 움직임 벡터 값들(MVs) 중에서 하나를 선택하여 상기 레지스터 파일(710)에 전달한다. The multiplexer 730 determines the information about the motion estimation state (ME state), a processor counter (Process Counter), a macroblock shape signal (mb_type) for determining a macroblock partition size, and a sub macroblock partition size. In response to information such as the sub macroblock type (sub_mb_type) and the like, data of a Pel of the previous frame (Previous Pels), interpolated Pels of data (Interpolated Pels), SAD values (SAD values) and motion vector values (MVs) ) And one of the Pels of the previous frame input from the register file 710, Interpolated Pels of interpolated Pels, SAD values, and motion vector values (MVs). Select to pass to the register file 710.

상기와 같이 재사용 되는 레지스터들에 입력되고 저장되는 값들은 모두 동시에 사용되지 않고 각 상태(State)에 따라 임시로 보관되는 값들이며, 이들 값들이 서로 충돌하지 않도록 하기 위하여 도 8에 예를 든 레지스터 재사용 테이블을 만들어 제어하면 된다. The values that are input and stored in the registers to be reused as described above are values that are temporarily stored according to each state without being used at the same time. In order to prevent these values from conflicting with each other, the register reuse illustrated in FIG. 8 is reused. You can do this by creating a table.

이하에서는 서브 펠에 대한 움직임 추정을 하는 단계(230)에 대하여 설명한다. Hereinafter, a step 230 of estimating the motion of the subpel will be described.

본 발명에서 제안하는 기술적 사상의 하나는, 블록 분할 모드 결정은 정수 펠 레벨에서 하고, 서브 펠 레벨에서의 탐색은 이미 결정된 블록 분할 모드에서 수행하도록 한다. 따라서, 서브 펠 레벨에서의 탐색을 하지 않아도 되는 경우가 발생 하며, 서브 펠 레벨에서의 탐색을 수행하더라도 SAD 및 코스트와 같은 중간 값들을 모두 저장하여야 하는 부담을 감소시킬 수 있기 때문에, 서브 펠 탐색을 고속으로 수행하게 할 수 있다. One of the technical ideas proposed by the present invention is that the block division mode determination is performed at the integer pel level, and the search at the sub pel level is performed in the block division mode already determined. Therefore, there is a case where the search at the subpel level does not need to occur, and even when performing the search at the subpel level, the burden of storing all intermediate values such as SAD and cost can be reduced. Can be run at high speed.

즉, 이미 결정된 블록 분할 모드에서는, 4×4 단위로 서브 펠 탐색을 할 때, 이전에 탐색된 정보를 통하여 미리 알 수 있는 이웃하는 블록의 움직임 벡터(N-MV)를 이용하면 움직임 벡터 코딩 비트레이트(Rmv)를 효율적으로 계산할 수 있다. 또한 이미 결정된 블록 분할 모드에 따라 분할된 블록 단위로 서브 펠 탐색을 수행하기 때문에 저장하여야 할 SAD 및 코스트 값들을 최소로 할 수 있다. That is, in the previously determined block division mode, when performing the subpel search in units of 4 × 4, using the motion vector (N-MV) of the neighboring block which can be known in advance through the previously searched information, the motion vector coding bit The rate Rmv can be calculated efficiently. In addition, since the subpel search is performed in units of blocks divided according to the previously determined block partitioning mode, SAD and cost values to be stored can be minimized.

H.264에서는 휘도 성분에서, 1/4 펠(또는 쿼터(quarter) 펠)단위까지 탐색함으로서, 최적의 움직임 벡터(MV)를 찾을 수 있는 확률을 증가시켰다. H.264에서의 1/4 펠은, 1/2 펠(또는 하프(half) 펠)들의 양방향 선형 보간(Bi-linear Interpolation)을 통하여 출력된다. 이 때 1/2 펠들을 구하기 위해서는 6탭 필터(Tap Filter)가 사용되기 때문에, 해당 1/2 펠을 중심으로 앞뒤 또는 상하로 3개의 펠들이 더 필요하게 된다. In H.264, searching for up to 1/4 pel (or quarter pel) units in the luminance component increases the probability of finding the optimal motion vector (MV). The quarter pels in H.264 are output via bi-linear interpolation of half pels (or half pels). In this case, since a 6-tap filter is used to obtain 1/2 pels, three more pels are required to be back and forth or up and down about the 1/2 pel.

도 9는 정수 펠들과 1/2 펠들의 배치 관계를 나타낸다. 9 shows the arrangement relationship of the integer pels and the half pels.

도 9를 참조하면, 타원 안의 화살표가 지시하는 1/2 펠(b)을 계산하기 위하여 상기 1/2 펠(b)을 중심으로 좌우로 3개씩의 정수 펠(검은 사각형)에 대한 정보가 필요하기 때문에 탐색 영역이 ±3으로 늘어나게 된다. Referring to Figure 9, in order to calculate the 1/2 pel (b) indicated by the arrow in the ellipse, information about three integer pels (black squares), each of which is about 3 1/2 pels (b), is needed. As a result, the search range is increased to ± 3.

일반적으로 탐색 영역에 포함된 펠들에 대한 정보는 16의 배수로 SDRAM으로부터 읽어온다. 그런데, 점선으로 표시된 영역(AREA)의 외부에 있는 펠들에 대한 정보는 워드(word)가 정렬이 되지 않은 펠 단위로 읽어야 하기 때문에, 이에 대한 버스 대역폭(Bus Bandwidth)의 사용 효율성이 크게 감소되는 단점이 있다. In general, information about the pels included in the search area is read from the SDRAM in multiples of 16. However, since the information on the pels outside the area indicated by the dotted line must be read in units of pels in which words are not aligned, the use efficiency of bus bandwidth is greatly reduced. There is this.

따라서, 본 발명에서는 정수 펠 단위의 탐색영역과 서브 펠 단위의 탐색영역을 다르게 하여 이러한 문제를 해결하였으며, 이탈 영역 판단 단계(239)에서 이를 판단한다. Accordingly, in the present invention, the problem is solved by differentiating the search region of the integer pel unit and the search region of the sub pel unit, and it is determined in the departure region determination step 239.

도 10은 본 발명의 다른 일 실시 예에 따른 구별영역을 나타낸다. 10 illustrates a distinguishing area according to another embodiment of the present invention.

도 10을 참조하면, 빗금이 쳐진 구별영역은 정수 펠 탐색에는 사용되지만 서브 펠 탐색에는 사용되지 않는 영역이다. 즉, 상기 구별영역에서는 서브 펠 탐색을 생략(Skip)한다. 본 발명에서는 정수 펠 탐색에는 ±16으로 하는 반면에, 서브 펠 탐색에는 ±13으로 하기 때문에, 1/2 펠을 6탭 필터링 하기 위한 ±3 펠들이 모두 ±16의 정수 펠 탐색 영역 안에 들어오게 함으로써, 메모리 대역폭을 높였다. Referring to Fig. 10, the hatched distinction area is an area used for the constant pel search but not for the sub pel search. In other words, the subpel search is skipped in the distinguished area. In the present invention, it is ± 16 for the integer pel search, but ± 13 for the subpel search, so that all ± 3 pels for 6-tap filtering the 1/2 pel are placed within the integer pel search area of ± 16. Increasing memory bandwidth.

±14, ±15, 및 ±16의 펠의 경우에는 큰 움직임이 예상되기 때문에 일반적으로 이에 대응되는 움직임 벡터는 클 것이다. 상기 영역에서는, 정수 펠 탐색만을 통하여 압축하고 이를 복원하여 재생시킨 화질과 서브 펠 탐색을 더 포함하는 탐색을 통하여 압축하고 이를 복원하여 재생시킨 화질의 차이가 거의 없다는 사실은 일반적으로 알려져 있다. 또한 하나의 화면 내에서 탐색 영역의 경계선 근처의 움직임 벡터(MV)가 일반적으로 많지 않다는 사실에 근거하여 상기 구별영역에서는 서브 펠에 대한 연산을 수행하지 않을 것을 제안한다. 본 발명에서는 영역 이탈 판단단계(239)에서 이를 판단한다. 서브 펠 탐색영역이 상기 구별영역 만큼 감소되더라도 화질에 거의 영향을 주지 않는 다는 것은, 당업자라면 누구나 쉽게 컴퓨터 모의 실 험을 통하여 검증할 수 있으므로 상세한 설명은 생략한다. For pels of ± 14, ± 15, and ± 16, large motion is expected, so the corresponding motion vector will generally be large. In this region, it is generally known that there is almost no difference in the image quality compressed and restored by retrieving and reproducing the water purge only through the search and further including the subpel search. In addition, based on the fact that the motion vector (MV) near the boundary of the search area is generally not large in one screen, it is proposed not to perform the operation on the subpel in the distinct area. In the present invention, it is determined in the region deviation determination step 239. Even if the subpel search area is reduced by the distinguished area, the image quality has little effect on the image quality, and thus a detailed description thereof will be omitted since a person skilled in the art can easily verify through computer simulation.

상기와 같이 서브 펠 탐색영역을 감소시킴으로써, 서브 펠 탐색 시 연산의 중간 결과 값을 저장하여야 하는 메모리(110)의 사이즈가 감소될 수 있고 계산 량도 그만큼 감소된다. By reducing the subpel search area as described above, the size of the memory 110 to store the intermediate result value of the operation during the subpel search can be reduced and the amount of calculation is also reduced.

또한 서브 펠에서의 움직임 탐색 수행시간을 줄이기 위해, 정수 펠에서 정해진 모드에 대하여 분할된 블록 별로 MAD를 구하고 이 값들을 스킵 기준 값(THb)과 비교하여 SPME를 수행하지 않을 수 있도록 하였다(237). In addition, in order to reduce the execution time of the motion search in the sub-pel, the MAD is calculated for each block divided for the mode determined in the integer pel, and the values are not compared with the skip reference value (THb) so that the SPME may not be performed (237). .

본 발명에서는, 상기 서브 펠 탐색 단계(240)에서 수행하며, 매 클럭(clock)마다 SAD 및 코스트를 구할 수 있도록 하는 서브 펠에서의 움직임 탐색 순서도 제안한다. The present invention also proposes a motion search sequence in the subpel, which is performed in the subpel search step 240 so that the SAD and the cost can be obtained every clock.

도 11은 정수 펠, 1/2 펠 및 1/4 펠의 배치도이다. 11 is a layout view of the clean water pel, half pel and quarter pel.

도 11을 참조하면, 검은 색으로 표시된 부분(IP, NW, N, NE, WN, EN, W, E, WS, ES, S, SE)이 정수 펠이고, H로 시작하는 부분이 1/2 펠이며, F로 시작하는 부분이 1/4 펠이다. Referring to FIG. 11, the portions marked in black (IP, NW, N, NE, WN, EN, W, E, WS, ES, S, SE) are integer pels, and the portion starting with H is 1/2. Pel, quarter starting with F.

매 클럭 사이클마다 시간 지연 없이 코스트를 구하기 위해, To get the cost without time delay every clock cycle,

1. 정수 펠(IP)과 동일한 열(row)에 있는 1/2 펠들(H3, H4), 1/4 펠들(F18, F19, F20, F21) 및 상기 정수 펠(IP)의 순서로 탐색하고, 1. Search in the order of 1/2 pellets (H3, H4), 1/4 pellets (F18, F19, F20, F21) and the purified water pellet (IP) in the same row as the purified water pellet (IP) ,

2. 상기 정수 펠(IP)의 주변에 배치된 나머지 1/2 펠들 중, 상기 정수 펠(IP)의 상부에 있는 1/2 펠들(H0, H1, H2) 및 하부에 있는 1/2 펠들(H5, H6, H7)의 순서로 탐색하며, 2. Among the remaining 1/2 pels disposed around the purified water pel IP, the 1/2 pels (H0, H1, H2) at the top of the purified water pel (IP) and the half pels at the bottom ( H5, H6, H7) in order,

3. 상기 정수 펠(IP)의 상부에 있는 나머지 1/4 펠들로부터 하부에 있는 1/4 펠들의 순서(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, f39)로 탐색한다. 3. The order of the fourth quarters at the bottom (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, from the remaining quarters at the top of the integer fel) (IP) F11, F12, F13, F14, F15, F16, F17, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, f39) Navigate to.

상기의 순서로 서브 펠들을 탐색하면, 클럭의 매 사이클마다 서브 펠들의 코스트를 추출할 수 있어 클럭의 사용이 효율적이 된다. 상기와 같은 정수 펠(IP)을 중심으로 ±0.75 영역 내의 서브 펠에 대한 코스트를 조사하여 가장 작은 탐색 포인트를 최종 움직임 벡터로 선정한다. If the subpels are searched in the above order, the cost of the subpels can be extracted at every cycle of the clock, thereby making the use of the clock more efficient. The smallest search point is selected as the final motion vector by investigating the cost of the subpel within the area of ± 0.75 centered on the integer pel (IP).

도 12는 1/2 펠을 구하는 보간 법을 설명하기 위한 펠 배치도이다. It is a pel arrangement figure for demonstrating the interpolation method of obtaining 1/2 pel.

도 12를 참조하면, 빗금 친 정수 펠들 사이에 위치하는 1/2 펠들을 구하기 위해서는, 6탭 FIR(Finite Impulse Response) 필터를 사용한다. 예를 들어, 1/2 펠 b는, 여섯 개의 수평 방향 정수 펠들(E, F, G, H, I, J)로부터 수학식 2와 같이 계산된다. Referring to FIG. 12, a six-tap Finite Impulse Response (FIR) filter is used to obtain 1/2 pels located between hatched water purification pels. For example, 1/2 pel b is calculated from equation (6) from six horizontal integer pels (E, F, G, H, I, J).

b=round((E - 5F + 20G + 20H -5I +J)/32)b = round ((E-5F + 20G + 20H -5I + J) / 32)

마찬가지로, 1/2 펠 h는 A, C, G, M, R, T를 필터링하여 보간된다. Likewise, 1/2 pel h is interpolated by filtering A, C, G, M, R, T.

모든 1/2 펠이 구해지면, 정수 펠 및 상기 1/2 펠 사이에 위치하는 1/4 펠을 구한다. 1/4 펠은, 자신의 좌우 또는 상하에 있는 정수 펠 및 1/2 펠을 보간하여 구한다. 그런데, 수학식 2에 나타난 바와 같이, 서브 펠 b의 값에 대응되는 비트가 상당히 크기 때문에, 이를 이용하여 1/4 펠을 구할 때 소비전력이 많이 소모된다. Once all 1/2 pels have been found, find the 1/4 pel located between the purified pelvis and the 1/2 pel. The 1/4 pel is obtained by interpolating the purified water pels and the 1/2 pels on their left, right, or top and bottom sides. However, as shown in Equation 2, since the bit corresponding to the value of the sub pel b is quite large, when consuming a quarter pel using this it consumes a lot of power.

본 발명에서는, 상기 서브 펠 탐색 단계(240)에서, 상기 1/4 펠을 구하기 위하여 수학식 2에 표현된 연산의 결과 값을 그대로 사용하지 않고, 이를 클램핑(Clamping)하거나 정규화하여(Normalize) 사용할 것을 제안한다. 1/2 펠의 값을 클램핑 하거나 정규화한 값으로 계산하여 얻은 1/4 펠의 값과 클램핑 또는 정규화하지 않은 1/2 펠의 값을 그대로 사용하여 구한 1/4 펠의 값이 거의 동일하다는 것은 컴퓨터 모의 실험을 통하여 쉽게 확인할 수 있다. 따라서, 상기의 1/2 펠의 값을 클램핑하거나 정규화하여 사용하는 경우, 재생되는 화질에는 거의 영향을 주지 않으면서도 연산 량을 최대로 감소시키는 효과를 얻을 수 있다. In the present invention, in the sub-pel search step 240, to obtain the quarter pel, the result value of the operation expressed in Equation 2 is not used as it is, but clamped or normalized to be used. Suggest that. The fact that the value of the quarter pel obtained by clamping or normalizing the value of the half pel and the quarter pel obtained by using the value of the half fel that is not clamped or normalized is almost the same. This can be easily confirmed through computer simulation. Therefore, when clamping or normalizing the value of the 1/2 pel, it is possible to obtain the effect of maximally reducing the amount of calculation without affecting the image quality to be reproduced.

이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다. As described above, optimal embodiments have been disclosed in the drawings and the specification. Although specific terms have been used herein, they are used only for the purpose of describing the present invention and are not intended to limit the scope of the present invention as defined in the claims or the claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

상술한 바와 같이 본 발명에 따른 움직임추정 및 블록 분할 모드 결정 알고리즘은, 재생 시 화질을 많이 열화시키지 않으면서도 고속 및 저 전력으로 동작할 수 있는 하드웨어의 구현을 가능하게 하는 장점이 있다. As described above, the motion estimation and block division mode determination algorithm according to the present invention has an advantage of enabling hardware to be operated at high speed and low power without much deterioration in image quality during reproduction.

Claims (15)

현재의 매크로블록 및 이전 프레임의 탐색영역 내의 매크로블록들에 대한 정보를 이용하여 정수 단위의 움직임 벡터를 탐색하고, 탐색이 진행되는 도중에 블록 분할 모드를 결정하는 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계; 및 Integer pel unit motion vector search and block partition mode that searches for a motion vector in integer units using information on macroblocks in a search region of a current macroblock and a previous frame, and determines a block partition mode during the search. Determination step; And 상기 정수 펠 단위 움직임벡터 탐색 및 블록 분할 모드 결정단계에서 결정된 블록 분할 모드에서, 서브 펠 단위의 움직임 벡터를 추가로 탐색하여야 하는 가를 판단하고, 판단결과에 따라 서브 펠 단위의 움직임 벡터의 탐색을 수행하는 서브 펠 단위 움직임 벡터 탐색 단계를 구비하는 것을 특징으로 하는 움직임추정 및 블록 분할 모드 결정 알고리즘. In the block division mode determined in the step of searching the motion vector of the integer pel unit and determining the block division mode, it is determined whether the motion vector of the sub pel unit should be further searched, and the motion vector of the sub pel unit is searched according to the determination result. Motion estimation and block division mode determination algorithm. 제1항에 있어서, 상기 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계는, The method of claim 1, wherein the integer pel unit motion vector search and block division mode determination step, 상기 현재의 서브블록의 크기를 4×4라 할 때, 결정되는 상기 블록 분할 모드는 8×4, 4×8, 8×16, 16×8 및 16×16의 블록 분할 형태 중의 하나의 블록 분할 형태에 대응되는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. When the size of the current subblock is 4 × 4, the block partitioning mode determined is one block division among 8 × 4, 4 × 8, 8 × 16, 16 × 8, and 16 × 16 block division types. A motion estimation and block division mode determination algorithm according to a shape. 제2항에 있어서, 상기 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결 정단계는, The method of claim 2, wherein the integer pel unit motion vector search and the block division mode determination step include: 복수 개의 서브블록을 복수 개의 그룹으로 분할하고 그 분할된 그룹 별로 움직임 벡터를 결정하는데, 이 때 적어도 2개의 분할된 그룹에 대한 움직임 벡터가 결정되면 각 그룹들 사이의 블록 분할 모드는 결정되는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. The plurality of subblocks are divided into a plurality of groups and a motion vector is determined for each of the divided groups. In this case, if a motion vector for at least two divided groups is determined, the block division mode between the groups is determined. Motion estimation and block division mode determination algorithm. 제3항에 있어서, 상기 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계는, The method of claim 3, wherein the integer pel unit motion vector search and block division mode determination step, 상기 분할 된 그룹 중 한 그룹의 움직임벡터가 결정되는 과정에 사용되는 저장장치의 일부를 나머지 다른 그룹의 움직임벡터를 결정하는 과정에서 재 사용하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. And a portion of the storage device used in the process of determining the motion vector of one of the divided groups is reused in the process of determining the motion vector of the other group. 제4항에 있어서, 상기 정수 펠 단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계는, The method of claim 4, wherein the integer pel unit motion vector search and block division mode determination step include: 재 사용되는 저장장치의 데이터가 서로 충돌하지 않도록 하기 위하여, 재사용이 가능한 저장장치의 위치, 펠들에 대한 일반적인 정보 및 SPME(Sub Pel Motion Estimation)에 대한 정보를 가지고 있는 재사용 룩업 테이블(Reuse Lookup Table)을 참조하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. Reuse Lookup Table with Reusable Storage Locations, General Information on Pellets, and Sub Pel Motion Estimation (SPME) to ensure that data from reusable storage does not conflict with each other. A motion estimation and block division mode determination algorithm, characterized in that for referring to. 제1항에 있어서, 상기 서브 펠 단위 움직임 벡터 탐색 단계는, The method of claim 1, wherein the subpel unit motion vector search step comprises: 서브 펠단위 움직임벡터 탐색을 수행할 것인가를 판단하는 스킵 판단단계; 및 A skip determination step of determining whether to perform subpel unit motion vector search; And 상기 스킵 판단단계에서 서브 펠단위 움직임벡터를 탐색하여야 한다고 판단한 경우, 서브 펠단위 움직임벡터 탐색을 수행하는 서브 펠 탐색단계를 구비하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. And a subpel search step of searching for a subpel motion vector, when the skip determination step determines that a subpel motion vector is to be searched. 제6항에 있어서, 상기 스킵 판단단계는, The method of claim 6, wherein the skip determination step, 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계에서 결정된 블록 분할 모드가 16×16인지를 판단하는 제1판단단계; A first determination step of determining whether the block division mode determined in the integer pel unit motion vector search and block division mode determination step is 16 × 16; 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계에서 결정된 블록 분할 모드가 16×16일 때, 예측된 움직임 벡터(P-MV)에 대한 SAD(Sum of the Absolute Difference)의 값을 스킵 기준 값(Skip threshold Value, Th16LL)과 비교하는 제1스킵 판단단계; When the block division mode determined in the integer pel unit motion vector search and block division mode determination step is 16 × 16, a skip reference value of SAD (Sum of the Absolute Difference) for the predicted motion vector (P-MV) is skipped. A first skip determination step of comparing a skip threshold value (Th16 LL ); 상기 정수 펠단위 움직임 벡터 탐색 및 블록 분할 모드 결정단계에서 결정된 블록 분할 모드가 16×16이 아니거나 상기 제1스킵 판단단계에서 판단한 결과 예측된 움직임 벡터(P-MV)에 대한 SAD의 값이 스킵 기준 값(Th16LL)에 비해 작거나 같지 않을 때, 해당 블록 분할 모드에 대하여 계산한 MAD(Mean of the Absolute Difference) 값과 SPME 스킵 기준 값(Sub Pel Motion Estimation Skip Threshold Value, Thb)을 비교하는 제2스킵 판단단계; 및 The block division mode determined in the integer pel unit motion vector search and block division mode determination step is not 16 × 16 or the value of SAD for the predicted motion vector (P-MV) is skipped as a result of the determination in the first skip determination step. Compares the Mean of the Absolute Difference (MAD) value and the SPME Skip Threshold Value (Thb) calculated for the block division mode when it is not smaller than or equal to the reference value (Th16 LL ). A second skip determination step; And 상기 MAD 값이 상기 SPME 스킵 기준 값(Thb)에 비해 작거나 같지 않을 때, SPME 탐색 영역이 구별영역의 범위에 포함되는 가를 판단하는 영역 이탈 판단단계를 구비하며, When the MAD value is not less than or equal to the SPME skip reference value (Thb), and the area deviation determination step of determining whether the SPME search area is included in the range of the distinction area, 상기 구별영역은, 상기 정수 펠단위 탐색영역 및 상기 서브 펠단위 탐색영역과의 차이 영역이고, The distinction area is a difference area between the integer pel unit search area and the sub pel unit search area, 상기 영역 이탈 판단단계의 판단결과, SPME 탐색영역이 상기 구별영역에 포함되지 않는 경우에는 상기 서브 펠 탐색 단계를 수행하도록 하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. And a subpel search step is performed if the SPME search area is not included in the distinguished area. 제7항에 있어서, The method of claim 7, wherein 상기 정수 펠단위 탐색영역은 상기 서브 펠단위 탐색영역에 비하여 상대적으로 큰 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. The integer pel unit search region is larger than the sub pel unit search region, the motion estimation and block partition mode determination algorithm. 제8항에 있어서, 상기 구별영역은, The method of claim 8, wherein the distinction region, 3개의 정수 펠단위의 폭을 가지는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. A motion estimation and block division mode determination algorithm having a width of three integer pel units. 제6항에 있어서, 상기 서브 펠 탐색단계는, The method of claim 6, wherein the subpel search step, 1/2 펠에 대한 데이터를 해당 1/2 펠의 상하 또는 좌우의 3개씩의 정수 펠에 대한 데이터를 H.264 표준에서 권고하는 수학식에 적용하여 구하며, The data for 1/2 pel is obtained by applying the data for three integer pels in the top, bottom, left and right sides of the corresponding half pel to the equation recommended in H.264 standard. 상기의 수학식에 의하여 구해진 1/2 펠 데이터를 클램핑하거나 정규화시켜 그 사이즈를 감소시킨 후, 1/4 펠에 대한 데이터를 생성하는데 사용하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. And a half pel data obtained by the above equation is clamped or normalized to reduce its size, and then used to generate data for a quarter pel. 제6항에 있어서, 상기 서브 펠 탐색단계는, The method of claim 6, wherein the subpel search step, 먼저, 정수 펠과 동일한 열에 있는 1/2 펠들, 1/4 펠들, 상기 정수 펠의 순서로 탐색하고, First, search in the order of 1/2 pels, 1/4 pels, said purified water pel in the same row as the purified water pel, 이어서, 상기 정수 펠의 주변에 위치하는 나머지 1/2 펠들을 탐색하며, Subsequently, the remaining 1/2 pels located around the water purification pel are searched for, 마지막으로, 나머지 1/4 펠들을 탐색하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. Finally, the motion estimation and block division mode determination algorithm characterized by searching the remaining quarter pels. 제11항에 있어서, The method of claim 11, 상기 정수 펠의 주변에 위치하는 나머지 1/2 펠들을 탐색할 때 상기 정수 펠의 상부에 있는 1/2 펠들 및 하부에 있는 1/2 펠들의 순서로 탐색하고, When searching for the remaining 1/2 pels located in the vicinity of the purified water pel, search in the order of 1/2 pels in the upper part and 1/2 pels in the bottom, 상기 나머지 1/4 펠들을 탐색할 때 상기 정수 펠의 상부에 있는 1/4펠들로부터 하부에 있는 1/4 펠들의 순서로 탐색하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. And searching for the remaining quarter pels in order from the quarter pels at the top of the integer pels to the quarter pels at the bottom. 제12항에 있어서, The method of claim 12, 상기 서브 펠들에 대한 탐색은, 상기 정수 펠들 사이의 거리를 1이라고 할 때, 해당 정수 펠을 중심으로 ±0.75의 범위내의 서브 펠들에 대하여 수행하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. The search for the subpels is performed on the subpels within a range of ± 0.75 around the integer pels when the distance between the integer pels is 1, and the motion estimation and block division mode determination algorithm. 제1항에 있어서, The method of claim 1, 상기 서브 펠 단위 움직임 벡터 탐색 단계의 결과에 응답하여 최종 움직임 벡터를 결정하고 동시에 각각의 분할 블록마다 정해진 블록 분할 모드에 따른 예측된 움직임 벡터를 계산하고, 상기 최종 움직임 벡터와 상기 예측된 움직임 벡터의 차이 값을 계산하고 및 최종 블록 분할 모드를 결정하는 움직임 벡터 및 블록 분할 모드 최종 결정단계를 더 구비하는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘. A final motion vector is determined in response to a result of the subpel unit motion vector search step, and at the same time, a predicted motion vector according to a predetermined block partition mode is calculated for each partition block, and the final motion vector and the predicted motion vector are calculated. And a motion vector and a block division mode final decision step of calculating a difference value and determining a final block division mode. 제14항에 있어서, 상기 최종 움직임 벡터, 상기 최종 블록 분할 모드 및 상기 차이 값은, The method of claim 14, wherein the final motion vector, the last block division mode, and the difference value are: VLC(Variable Length Coding)를 수행하는 기능블록에 전달되는 것을 특징으로 하는 움직임 추정 및 블록 분할 모드 결정 알고리즘.A motion estimation and block division mode determination algorithm, which is delivered to a functional block that performs variable length coding (VLC).
KR1020060005835A 2006-01-19 2006-01-19 Algorithm for motion estimation and block partition mode KR20070076672A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060005835A KR20070076672A (en) 2006-01-19 2006-01-19 Algorithm for motion estimation and block partition mode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060005835A KR20070076672A (en) 2006-01-19 2006-01-19 Algorithm for motion estimation and block partition mode

Publications (1)

Publication Number Publication Date
KR20070076672A true KR20070076672A (en) 2007-07-25

Family

ID=38501455

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060005835A KR20070076672A (en) 2006-01-19 2006-01-19 Algorithm for motion estimation and block partition mode

Country Status (1)

Country Link
KR (1) KR20070076672A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100963748B1 (en) * 2008-04-23 2010-06-14 브로드밴드미디어주식회사 Method and set-top box for performing skip function in download and play type iptv service
KR20140068741A (en) * 2012-11-27 2014-06-09 연세대학교 산학협력단 Method and Apparatus for image encoding
KR20140135279A (en) * 2013-05-14 2014-11-26 한국전자통신연구원 Apparatus for skipping fractional motion estimation in high efficiency video coding and method thereof
US9684943B2 (en) 2013-05-28 2017-06-20 Samsung Electronics Co., Ltd. Multi core graphic processing device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100963748B1 (en) * 2008-04-23 2010-06-14 브로드밴드미디어주식회사 Method and set-top box for performing skip function in download and play type iptv service
KR20140068741A (en) * 2012-11-27 2014-06-09 연세대학교 산학협력단 Method and Apparatus for image encoding
KR20140135279A (en) * 2013-05-14 2014-11-26 한국전자통신연구원 Apparatus for skipping fractional motion estimation in high efficiency video coding and method thereof
US9684943B2 (en) 2013-05-28 2017-06-20 Samsung Electronics Co., Ltd. Multi core graphic processing device

Similar Documents

Publication Publication Date Title
TWI706670B (en) Generalized mvd resolutions
US8761258B2 (en) Enhanced block-based motion estimation algorithms for video compression
US20080159400A1 (en) Method and apparatus for predicting motion vector using global motion vector, encoder, decoder, and decoding method
EP1993292A1 (en) Dynamic image encoding method and device and program using the same
KR20160106617A (en) Adaptive motion vector resolution signaling for video coding
KR20080089624A (en) System and method for fast motion estimation
CN104363457A (en) Image processing device and method
WO2011064673A1 (en) Method of and apparatus for encoding video frames, method of and apparatus for decoding video frames
CN101325710A (en) Motion refinement engine with a plurality of cost calculation methods for use in video encoding and methods for use therewith
WO2010069113A1 (en) Video processing method and apparatus with residue prediction
CN112771860A (en) Affine limitation for worst-case bandwidth reduction in video coding
CN101325709A (en) Motion refinement engine with selectable partitionings for use in video encoding and methods for use therewith
KR20070076672A (en) Algorithm for motion estimation and block partition mode
KR100723840B1 (en) Apparatus for motion estimation of image data
TWI809200B (en) Restrictions for the worst-case bandwidth reduction in video coding
Ta et al. High performance fractional motion estimation in h. 264/avc based on one-step algorithm and 8× 4 element block processing
US20160156905A1 (en) Method and system for determining intra mode decision in h.264 video coding
Lin et al. Fast sub-pixel motion estimation and mode decision for H. 264
US20130170565A1 (en) Motion Estimation Complexity Reduction
KR100986992B1 (en) Fast Inter Mode Decision Method in H.264 Encoding
Hsu et al. Fast reference frame selection method for motion estimation in JVT/H. 264
RU2787885C2 (en) Method and equipment for mutual prediction, bit stream and non-volatile storage carrier
KR20080065898A (en) Method for processing images
Nalluri A fast motion estimation algorithm and its VLSI architecture for high efficiency video coding
KR20240089262A (en) Motion compensation for out-of-bounds conditions in video coding

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination