KR100282614B1 - Motion Predictor for Low Bit Rate Video Codecs - Google Patents

Motion Predictor for Low Bit Rate Video Codecs Download PDF

Info

Publication number
KR100282614B1
KR100282614B1 KR1019980052354A KR19980052354A KR100282614B1 KR 100282614 B1 KR100282614 B1 KR 100282614B1 KR 1019980052354 A KR1019980052354 A KR 1019980052354A KR 19980052354 A KR19980052354 A KR 19980052354A KR 100282614 B1 KR100282614 B1 KR 100282614B1
Authority
KR
South Korea
Prior art keywords
data
reference block
intra
value
block
Prior art date
Application number
KR1019980052354A
Other languages
Korean (ko)
Other versions
KR20000037705A (en
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 KR1019980052354A priority Critical patent/KR100282614B1/en
Publication of KR20000037705A publication Critical patent/KR20000037705A/en
Application granted granted Critical
Publication of KR100282614B1 publication Critical patent/KR100282614B1/en

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Abstract

본 발명은 저 전송률 비디오 코덱(H.261/H.263)에 적용할 수 있는 움직임 예측기를 제안한다. 본 발명에서 사용한 완전 탐색블록 정합 알고리즘은 움직임 예측을 통해 움직임 벡터를 추출하는 방법 중 가장 정확한 방법이나, 구현할 경우 계산시간이 많이 소요되고, 하드웨어의 비용이 많이 필요하게 된다. 본 발명에서 제안하는 병렬 구조와 메모리 구조를 통하여 시스템의 효율을 최대로하여 수행 시간을 단축함과 동시에 하드웨어의 비용도 줄였다. 또한 본 움직임 예측기에는 인코딩 연산 중의 마크로 블록이 인트라/인터(Intra/Inter) 블록을 결정하는 부분을 포함하고 있다. 인트라/인터 결정 연산에는 기준블록 데이터를 위한 별도의 메모리와 연산장치 및 제어장치가 필요하게 된다. 본 발명에서는 이 부분을 움직임 예측기에 있는 기준블록 데이터를 이용하여 연산하므로써 별도의 메모리를 줄이고, 인트라/인터 결정 부분을 움직임 예측기에서 이루어지도록 하여 코덱 전체 제어기의 부담을 줄이게 하였다.The present invention proposes a motion predictor applicable to a low bit rate video codec (H.261 / H.263). The full search block matching algorithm used in the present invention is the most accurate method of extracting the motion vector through motion prediction, but when implemented, it takes a lot of computation time and high hardware cost. The parallel structure and the memory structure proposed by the present invention maximize the efficiency of the system to reduce the execution time and reduce the hardware cost. In addition, the motion predictor includes a portion in which an macro block during encoding operation determines an intra / inter block. Intra / inter decision operation requires a separate memory for the reference block data, arithmetic unit and control unit. In the present invention, this part is calculated using the reference block data in the motion predictor to reduce the extra memory, and the intra / inter decision part is performed in the motion predictor to reduce the burden on the entire codec controller.

Description

저 전송률 비디오 코덱을 위한 움직임 예측장치Motion Predictor for Low Bit Rate Video Codecs

본 발명은 저 전송률 비디오 코덱에 적용할 수 있는 움직임 예측기에 관한 것으로, 특히 기준블록의 인터/인트라 결정을 하는 부분을 움직임 예측기 내부에 두고, 탐색영역 데이터를 로드함에 있어 2포트 램을 사용하여 지역메모리의 크기를 줄이면서 연속적인 연산이 가능하도록 함으로써, 전체 비디오 코덱의 크기를 줄일 수 있도록 한 저 전송률 비디오 코덱을 위한 움직임 검출장치에 관한 것이다.The present invention relates to a motion predictor applicable to a low bit rate video codec. In particular, the present invention uses a two-port RAM to load search area data in a motion predictor with an inter / intra portion of a reference block inside the motion predictor. The present invention relates to a motion detection device for a low bit rate video codec that enables the continuous operation while reducing the size of the memory, thereby reducing the size of the entire video codec.

일반적으로 화상데이터 압축 시스템에서 영상블록의 프레임간 움직임을 보상하는 방법에 있어서, 현재블록(기준블록)과 실제적으로 동일한 정보를 갖는 한 프레임 이전 블록(탐색영역 블록)들로부터 현재 블록에 대한 움직임 벡터를 생성하고, 한 프레임 이전 블록과의 비교에 의해 발생한 현재 블록에 관한 움직임 벡터중에서 그 크기 및 방향이 현재 블록에 인접한 블록의 움직임 벡터와 가장 유사한 움직임 벡터를 검출하여 움직임을 추정하고 있다.In general, a method of compensating inter-frame motion of an image block in an image data compression system, comprising: a motion vector of a current block from a previous frame (search area block) having substantially the same information as the current block (reference block) Is generated, and motion is estimated by detecting a motion vector whose magnitude and direction are the most similar to the motion vector of a block adjacent to the current block among the motion vectors of the current block generated by comparison with the previous block.

그런데, 움직임 벡터를 생성하기 위한 탐색 영역 데이터를 한번에 로드시켜야 하므로 메모리 용량이 많이 필요하고, 움직임 벡터를 검출한 기준블록에 대하여 인트라(intra)/인터(inter) 결정을 위하여 별도의 하드웨어를 구성하여야 하므로 전체 시스템의 게이트 수가 많아지고 하드웨어가 커지는 문제점이 있다.However, since the search area data for generating the motion vector must be loaded at a time, a large memory capacity is required, and separate hardware must be configured for intra / inter determination on the reference block from which the motion vector is detected. Therefore, there is a problem that the gate count of the entire system increases and the hardware increases.

따라서, 본 발명에서는 움직임 예측 연산에 필요한 기준블록 데이터와 탐색영역 데이터를 모두 움직임 예측기의 지역 메모리(Local Memory)에 로드한 후 직접 움직임 예측 연산을 하지않고, 기준 블록은 16 x 16 한 마크로 블록을 로드하고, 탐색영역 데이터는 (탐색영역크기 x 16) 만큼을 초기에 로드한 후 연산 중에 필요한 데이터를 움직임 예측 연산에 영향을 미치지 않으면서 로드하여 지속적인 움직임 예측 연산이 가능하도록 하였다.Therefore, in the present invention, after loading both reference block data and search region data required for the motion prediction operation into the local memory of the motion predictor, the motion block does not directly perform the motion prediction operation. After loading the search area data as much as (search area size x 16), the data required during the operation was loaded without affecting the motion prediction operation to enable continuous motion prediction operation.

이는 탐색영역 데이터 저장 메모리를 2 포트 램(Two Port RAM)을 사용하여 읽기와 쓰기가 동시에 가능하도록 구현하였고, 이러한 설계는 초기에 탐색영역 데이터의 로드로 인한 시간을 줄이고, 데이터 로드 시점을 분산하므로써 전체 비디오 코덱 시스템의 외부 비디오 데이터 메모리 접근 스케슐링에 도움이 되고, 무엇보다 탐색영역 데이터를 모두 저장하는 것 보다 작은 메모리를 사용한다.This is implemented by using two-port RAM to simultaneously read and write the search area data storage memory. This design reduces the time due to the loading of the search area data and distributes the data loading time. It is helpful for scheduling external video data memory access of the entire video codec system, and above all, uses less memory than storing all search area data.

또한 비디오 코덱의 Intra/Inter 결정은 기준블록의 평균 화소값을 구하고 다시 기준 블록의 각 화소와 평균 화소값과의 차의 합을 구한 다음 움직임 벡터에서 선택된 후보 블록에서 얻은 최소 SAD값을 비교하여 해당 기준블록이 Intra인지 또는 Inter인지를 결정하는 부분이다. 이를 독립적으로 구성할 경우 기준블록을 비디오 메모리로부터 로드를 해야하고, 각각의 화소값을 읽어 그 평균값을 계산하며, 또한 평균값과 각 화소값과의 차의 절대치 값을 구해야하는 하드웨어가 필요하게된다.Intra / Inter determination of the video codec also calculates the average pixel value of the reference block, calculates the sum of the difference between each pixel of the reference block and the average pixel value, and then compares the minimum SAD values obtained from the candidate blocks selected from the motion vectors. This part determines whether the reference block is Intra or Inter. Independently configuring the hardware requires a reference block to be loaded from the video memory, reading each pixel value to calculate its average value, and calculating an absolute value of the difference between the average value and each pixel value.

본 발명에서는 이 부분을 움직임 예측기에 두어 독립적으로 구성될 경우에 비디오 코덱의 전체적인 설계에서 중복되는 기준블록의 로드에 따른 메모리, 연산을 위한 여러 덧셈기, 메모리에서 화소 데이터를 읽기 위한 주소 생성기 및 제어부분을 구성하는 하드웨어를 줄이고, 비디오 메모리에서 기준블록 데이터를 중복하여 읽지않아 시스템 전체의 메모리 대역폭을 낮추고, 추가되는 제어부분 역시 간소화하였다.In the present invention, when this part is placed independently of the motion predictor, the memory according to the load of overlapping reference blocks in the overall design of the video codec, various adders for calculation, an address generator for reading pixel data from the memory, and a control part The hardware that composes the system is reduced, the memory bandwidth of the entire system is lowered by not overlapping the reference block data in the video memory, and the added control part is also simplified.

도 1은 본 발명에 의한 움직임 예측장치의 전체적인 구조도.1 is an overall structural diagram of a motion prediction apparatus according to the present invention.

도 2는 본 발명에 의한 기준블록과 탐색영역 데이터의 구조 및 탐색영역 데이터의 슬라이스 구조도.2 is a diagram illustrating a structure of reference blocks and search area data and slice structure of search area data according to the present invention;

도 3은 본 발명의 탐색영역 데이터 저장을 위한 탐색영역 지역메모리 구조도.3 is a structure diagram of a search region local memory for storing search region data of the present invention.

도 4는 본 발명의 움직임 예측기의 연산중 데이터 흐름을 설명하기 위한 타이밍도.4 is a timing diagram for explaining the data flow during operation of the motion predictor of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Description of the code | symbol about the principal part of drawing>

100 : 지역 메모리 101 : 기준블록 데이터 메모리100: local memory 101: reference block data memory

102 : 탐색영역 데이터 메모리 110 : 움직임 예측부102: search area data memory 110: motion prediction unit

111 : 연산기 어레이 112 : 부분합 저장 및 비교기111: Operator Array 112: Subtotal Store and Comparator

113 : 벡터생성 및 인트라/인터 결정부113: vector generation and intra / inter determination unit

120 : 인트라/인터 결정정보 제공부120: intra / inter decision information provider

121 : 평균 화소값 연산부 122 : 화소값 차의 합 연산부121: average pixel value calculator 122: sum of pixel value differences calculator

130 : 제어부 131 : 상태 카운터 및 상태 제어부130: control unit 131: state counter and state control unit

132 : DMA 및 IF부 133 : 쓰기 어드레스 제어부132: DMA and IF unit 133: write address control unit

134 : 읽기 어드레스 제어부 135 : 연산기 어레이 제어부134: read address control unit 135: operator array control unit

136 : 벡터생성 제어부136: vector generation control

이하, 본 발명의 실시예를 첨부된 도면을 참조해서 상세히 설명하면 다음과 같다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에서 설계한 움직임 예측기의 전체 블록도이다.1 is an overall block diagram of a motion predictor designed in the present invention.

비디오 메모리(도시않됨)로부터 데이터를 입력받아 저장하여 현재 데이터에 대한 16 x 16 하나의 마크로 블록을 기준블록으로 로드하고, (탐색영역크기 x 16)의 탐색영역 데이터로서 로드시키는 지역 메모리(100)와, 상기 지역 메모리(100)로부터 현재 데이터인 기준블록 데이터를 입력받아 기준블록의 평균 화소값을 구하고 다시 기준 블록의 각 화소와 평균 화소값과의 차의 합을 구하여 인터/인트라 결정을 위한 정보로서 제공하는 인터/인트라 결정정보 제공부(120)와, 기준블록과 탐색영역 블록의 행단위로 입력받아 차의 절대치 합에 대한 부분합을 구하여 저장하고 부분합들을 누적하여 SAD 값들을 생성하고, 비교하여 가장 작은 SAD 값을 갖는 후보블록을 찾은 후, 현재의 SAD값과 비교하여 최소 SAD 값을 선택하고, 그 선택된 SAD값을 가지는 블록의 움직임 벡터값을 생성함과 아울러 상기 인터/인트라 결정정보 제공부에서 제공되는 현재 데이터에 따른 기준블록의 SAD값과 상기 움직임 벡터에서 선택된 후보 블록의 SAD값을 비교하여 해당 기준블록이 Intra인지 또는 Inter인지를 결정하는 움직임 벡터 예측부(110)와;Local memory 100 for receiving and storing data from a video memory (not shown) to load 16 x 16 one macroblocks for current data into a reference block and to load them as search area data of (search area size x 16). And receiving the reference block data, which is the current data, from the local memory 100 to obtain an average pixel value of the reference block, and again obtaining a sum of the difference between each pixel of the reference block and the average pixel value. The inter / intra decision information providing unit 120, which is provided as a unit, receives the sub-units of the absolute value sums of the difference between the reference block and the search area block, stores them, accumulates the sub-sums, generates SAD values, and compares them. After finding a candidate block with a small SAD value, select the minimum SAD value by comparing with the current SAD value, and then move the block having the selected SAD value. By generating a data value and comparing the SAD value of the reference block according to the current data provided by the inter / intra decision information providing unit with the SAD value of the candidate block selected from the motion vector, it is determined whether the reference block is Intra or Inter. A motion vector predictor 110 for determining;

상태 카운터 및 상태 제어부의 제어에 의거하여 상기 지역 메모리의 입/출력을 위한 어드레스와, 움직임 예측부의 부분합 연산을 위한 제어신호 및 상기 벡터 발생을 위한 제어신호 등을 제어하는 제어부(130)로 구성된다.The controller 130 is configured to control an address for input / output of the local memory, a control signal for subtotal operation of the motion prediction unit, a control signal for generating the vector, and the like under the control of the state counter and the state controller. .

상기 지역 메모리(100)는, 16 x 16의 하나의 마크로 블록 데이터를 기준블록 데이터(현재데이터)로 입력받아 저장하는 기준블록 데이터 메모리(101)와, (탐색영역크기 x 16) 탐색영역의 16개의 행으로 구성된 탐색영역 슬라이스 데이터를 입력받아 저장하고 홀수 행 데이터와 짝수 행 데이터별로 출력하는 탐색데이터 메모리(102)로 구성된다.The local memory 100 includes a reference block data memory 101 which receives one macro block data of 16 × 16 as reference block data (current data) and 16 of the search area (search area size x 16). And a search data memory 102 for receiving and storing search area slice data composed of two rows and outputting odd row data and even row data.

상기 움직임 예측부(110)는, 상기 지역 메모리(100)로부터 기준블록과 매 탐색영역 슬라이스의 홀수 행과 짝수 행을 입력받아 병렬 연산의 반복을 통하여 움직임 벡터 추출을 위한 기준블록과 후보 블록들간의 부분 차의 절대치 합(PSAD ; Partial Sum of Absolute Difference)을 연산하는 연산기 어레이(111)와, 그 연산기 어레이(111)에서 출력되는 부분 합의 누적합을 구하고 기준블록의 마지막 행과 한 슬라이스 데이터의 마지막 행에 대한 연산 값이 입력되면 한 탐색영역 슬라이스에 포함된 탐색 후보 블록들의 최종 SAD 값을 비교하여 최소의 SAD 값을 가지는 후보블록의 벡터와 해당 SAD 값을 출력하는 부분합 저장 및 비교기(112)와, 그 부분합 저장 및 비교기(112)에서 출력되는 후보블록의 SAD 값과 현재의 최소 SAD 값이 비교되어 전체 탐색영역에서 가장 작은 SAD 값과 해당 블록의 벡터값을 생성하고, 상기 인트라/인터 결정 정보 제공부(120)에서 제공되는 기준블록의 SAD값과 상기 최소 SAD값을 비교하여 해당 기준블록이 Intra인지 또는 Inter인지를 결정하는 벡터 생성 및 인트라/인터 결정부(113)로 구성된다.The motion predictor 110 receives a reference block, odd rows and even rows of every search region slice from the local memory 100, and performs a reference operation between the reference block and the candidate blocks for motion vector extraction by repeating parallel operations. The operator array 111 for calculating the partial sum of absolute difference (PSAD) and the cumulative sum of the partial sums output from the operator array 111 are obtained, and the last row of the reference block and the last of one slice data are obtained. When the operation value for the row is input, the subtotal storage and comparator 112 for comparing the final SAD values of the search candidate blocks included in one search region slice and outputting the vector and the corresponding SAD value of the candidate block having the smallest SAD value; The SAD value of the candidate block outputted from the subtotal storage and comparator 112 and the current minimum SAD value are compared to obtain the smallest SAD value and solution in the entire search area. Generating a vector value of the block and comparing the SAD value of the reference block provided by the intra / inter determination information providing unit 120 with the minimum SAD value to determine whether the reference block is Intra or Inter; It consists of the intra / inter determination part 113.

상기 인트라/인터 결정 정보 제공부(120)는, 지역 메모리(100)로부터 현재 데이터인 기준블록 데이터를 입력받아 기준블록의 평균 화소값을 구하는 평균화소값 연산부(121)와, 상기 기준 블록의 각 화소와 평균 화소값과의 차의 합을 구하는 부분합 연산부(122)로 구성되어 인터/인트라 결정을 위한 정보로서 제공하도록 구성된다.The intra / inter determination information providing unit 120 receives the reference block data which is current data from the local memory 100, and obtains an average pixel value calculator 121 for obtaining an average pixel value of the reference block, and each of the reference blocks. And a partial sum calculating unit 122 for calculating the sum of the difference between the pixel and the average pixel value, and is provided as information for inter / intra determination.

상기 제어부(130)는, 기준블록 데이터 및 탐색 영역 데이터의 입/출력과 연산 타이밍을 제어하기 위한 클럭을 카운트하는 상태 카운터 및 상태 제어부(131)와, DMA 및 IF제어부(132)와, 상기 상태 카운터 및 상태 제어부(131)의 출력에 의거하여 상기 지역메모리(100)의 쓰기 어드레스를 발생하는 쓰기 어드레스 발생기(133), 읽기 어드레스를 발생하는 읽기 어드레스 발생기(134), 상기 연산기 어레이(111)를 제어하는 연산기 어레이 제어부(135)와, 상기 벡터 생성 및 인트라/인터 결정부(113)를 제어하는 벡터발생 제어기(136)로 구성된다.The controller 130 includes a state counter and a state controller 131 for counting a clock for controlling input / output and operation timing of reference block data and search area data, a DMA and IF controller 132, and the state. The write address generator 133 for generating the write address of the local memory 100, the read address generator 134 for generating the read address, and the operator array 111 based on the output of the counter and the state controller 131. The operator array control unit 135 to control, and the vector generation controller 136 to control the vector generation and intra / inter determination unit 113.

도 2는 기준블록과 탐색영역 데이터의 모양을 나타낸 것이다.2 illustrates the shapes of the reference block and the search region data.

도 2의 기준블록 데이터는 현재의 입력 데이터로서, 모두 도 1의 기준블록 데이터 메모리(101)에 저장된다. 도 2에서 탐색영역의 16개의 행으로 구성된 부분을 탐색영역 슬라이스(221)라 한다. 도 1의 탐색영역 데이터 메모리(102)에는 한 개의 탐색영역 슬라이스가 저장된다.The reference block data of FIG. 2 is current input data, and all of them are stored in the reference block data memory 101 of FIG. In FIG. 2, a portion consisting of 16 rows of the search region is referred to as a search region slice 221. One search region slice is stored in the search region data memory 102 of FIG. 1.

본 발명의 움직임 예측부(110)는, 기준블록과 한 개의 탐색영역 슬라이스가 병렬연산의 반복을 통하여 움직임 벡터 추출연산이 이루어진다. 초기화된 데이터는 움직임 벡터의 추출을 위해 연산기 어레이(111)로 입력된다.In the motion prediction unit 110 of the present invention, a motion vector extraction operation is performed by repeating parallel operation of a reference block and one search region slice. The initialized data is input to the operator array 111 for extraction of the motion vector.

본 발명의 연산기 어레이(111)에 탐색영역 데이터는 매 탐색영역 슬라이스의 홀수 행과 짝수 행이 동시에 입력된다. 입력된 데이터에 의해 연산기 어레이(111)에서는 기준블록과 후보 블록들간의 부분 차의 절대치 합(PSAD(Partial Sum of Absolute Difference))이 부분합 저장 및 비교기(112)에 전달된다. 기준블록의 마지막 행과 한 슬라이스 데이터의 마지막 행이 입력되면 부분합 저장 및 비교기(112)에서는 한 탐색영역 슬라이스에 포함된 탐색 후보 블록들의 최종 SAD 값을 비교하여 최소의 SAD 값을 가지는 후보블록의 벡터와 해당 SAD 값을 벡터생성기 및 Intra/Inter 결정부(113)에 전달한다.Search area data is input to the operator array 111 of the present invention simultaneously with odd and even rows of every search area slice. In the operator array 111, an absolute sum (Partial Sum of Absolute Difference (PSAD)) of the partial difference between the reference block and the candidate blocks is transmitted to the partial sum storage and comparator 112 by the input data. When the last row of the reference block and the last row of one slice data are input, the subtotal storage and comparator 112 compares the final SAD values of the search candidate blocks included in one search region slice to obtain a vector of the candidate block having the minimum SAD value. And the corresponding SAD value to the vector generator and the Intra / Inter determiner 113.

이와 같은 연산이 마지막 탐색영역 슬라이스가 처리될 때 까지 반복되고 마지막 탐색영역 슬라이스 데이터가 입력되고 부분합 및 비교기(112)에서는 가장 마지막 슬라이스에서 가장 작은 SAD 값과 해당 벡터값이 벡터생성기 및 Intra/Inter 결정부(113)에 전달된다. 전달된 값은 지금까지의 최소 SAD 값과 비교되어 전체 탐색영역에서 가장 작은 SAD 값과 해당 벡터가 결정된다. 이와 같이 반복되는 기준 블록과 탐색영역 슬라이스와의 연산이 가능하도록 새로운 슬라이스 데이터가 연산중의 슬라이스 데이터가 모두 연산기 어레이(111)에 입력되기 전에 준비되어야 한다.This operation is repeated until the last search area slice is processed, the last search area slice data is input, and the subtotal and comparator 112 determines the smallest SAD value and the corresponding vector value of the last slice in the vector generator and Intra / Inter. It is transmitted to the unit 113. The passed value is compared with the minimum SAD value so far to determine the smallest SAD value and corresponding vector in the entire search area. The new slice data must be prepared before all the slice data under calculation are input to the operator array 111 so that the repeated reference block and the search region slice can be operated.

도 3은 도 1의 탐색영역 데이터 메모리로 한 개의 탐색영역 슬라이스를 저장하기 위한 탐색영역 메모리를 나타내고 있다. 도 3에서와 같이 탐색영역 데이터는 16개의 뱅크로 구성되며, 각 뱅크의 물리적 시작 주소는 탐색영역의 한 행의 최대 화소 수에 의해 정해지며, 그 데이터 폭은 16비트로 두개의 화소 데이터가 기억되므로 0, 24, 47, ..., 360이 된다. 한 뱅크에는 탐색영역 데이터의 한 행을 구성하는 데이터가 저장된다.FIG. 3 illustrates a search region memory for storing one search region slice as the search region data memory of FIG. 1. As shown in FIG. 3, the search area data is composed of 16 banks, and the physical start address of each bank is determined by the maximum number of pixels of one row of the search area, and the data width thereof is 16 bits so that two pixel data are stored. 0, 24, 47, ..., 360. One bank stores data constituting one row of search area data.

도 3에서는 탐색영역 범위는 탐색영역의 한 행에 포함된 데이터가 최대 48개가 되고, 만일 탐색영역이 이전 프레임의 가장자리일 경우는 32개가 되며, 이 경우 한 뱅크는 32개의 화소 데이터가 저장되고 나머지 뒤 부분은 데이터가 없는 상태가 된다. 이로써 초기에 로드되는 탐색영역 데이터는 움직임 예측 연산을 위한 1개의 탐색영역 슬라이스가 된다.In FIG. 3, the range of the search area is 48 data included in one row of the search area, and 32 if the search area is the edge of the previous frame. In this case, 32 pixel data are stored in one bank and the rest The latter part has no data. As a result, the search region data initially loaded becomes one search region slice for the motion prediction operation.

도 4는 상위에서 설명한 연산 과정을 데이터의 흐름으로 나타낸 것이다. 도 4에서 첫번째 탐색영역 슬라이스(221)에 해당되는 연산은 이미 초기화된 상태에서 시작된다. 즉 기준블록의 R0∼R15의 16개 행이 저장되고, 탐색영역 데이터는 탐색영역 데이터중 첫번째 슬라이스를 구성하는 S0∼S15 까지가 로드되어 각각의 뱅크(Bank)0∼뱅크(Bank)15에 한 행씩 저장된다.4 illustrates the operation process described above as a flow of data. In FIG. 4, the operation corresponding to the first search region slice 221 starts with an already initialized state. That is, 16 rows of R0 to R15 of the reference block are stored, and the search area data is loaded from S0 to S15 constituting the first slice of the search area data, so that each bank 0 to bank 15 is loaded. It is stored line by line.

기준 블록 데이터의 첫번째 행(R0)과 첫번째 탐색영역 슬라이스 데이터의 첫번째 행(S0) 데이터, 즉 Bank0 데이터가 각각 연산기 어레이(111)로 입력되고, 기준블록의 두번째 행이 입력되는 시점과 같이 탐색영역 슬라이스의 두번째 행(S1)이 입력된다. 이때 두개의 탐색영역 데이터는 각각 홀수 행과 짝수 행 데이터 경로를 통해서 연산기 어레이(111)로 입력된다. 슬라이스의 첫번째 홀수 행은 Bank0에 있는 데이터가 되고, 첫번째 짝수 행은 Bank1에 있는 데이터가 된다. Bank0 데이터가 모두 입력되고 난 다음 계속해서 같은 경로를 통해 Bank2 데이터가 입력된다. 이 시점부터 Bank0에 저장되어 있던 데이터는 더 이상 사용하지 않게 된다. 본 발명에서는 이 시점부터 다음 슬라이스(222)의 가장 마지막 행이 될 S16이 첫번째 탐색영역 슬라이스에 대한 연산이 끝날 때까지 Bank0에 로드된다.Search area as shown when the first row (R0) of the reference block data and the first row (S0) data of the slice data, that is, Bank0 data, are respectively input to the operator array 111 and the second row of the reference block is input. The second row S1 of the slice is input. In this case, the two search area data are input to the operator array 111 through odd and even row data paths, respectively. The first odd row of the slice is the data in Bank0, and the first even row is the data in Bank1. After all Bank0 data has been entered, Bank2 data is continuously entered through the same path. From this point on, the data stored in Bank0 is no longer used. In the present invention, S16, which is the last row of the next slice 222 from this point, is loaded into Bank0 until the operation for the first search region slice is completed.

도 4에서 첫번째 탐색영역 슬라이스에 대한 연산이 끝난 후 두번째 탐색영역 슬라이스(222)는 Bank1 ∼ Bank15, Bank0 데이터로 구성되고, Bank1, Bank3, ... 데이터는 홀수 행 경로를 통해서 입력되고, Bank2, Bank4, ... 데이터는 짝수 행 경로를 통해서 연산기 어레이에 입력된다.In FIG. 4, after the operation for the first search region slice is finished, the second search region slice 222 is composed of Bank1 to Bank15 and Bank0 data, and Bank1, Bank3, ... data are input through an odd row path, Bank2, Bank4, ... data is entered into the operator array via an even row path.

이와 같은 반복된 연산은 탐색영역 데이터를 구성하는 슬라이스의 개수 만큼 반복된다. 위의 설명에서와 같이 본 발명의 움직임 예측부는 연산중 데이터 로드를 통하여 연속적인 연산이 가능하여 연산기의 효율을 최대로 하였고, 탐색영역 데이터 저장을 위한 메모리를 줄였다.This repeated operation is repeated by the number of slices constituting the search area data. As described above, the motion predictor of the present invention enables continuous operation through data loading during operation, thereby maximizing the efficiency of the operator and reducing the memory for storing the search area data.

본 발명 움직임 예측부(110)로 한 기준블록에 대해서 움직임 벡터를 추출하기 위해서는 탐색영역 슬라이스의 개수만큼 기준블록을 반복해서 지역 메모리(100)에서 읽게된다. 본 발명에서는 이렇게 반복해서 기준블록을 읽는 것을 이용하여 Intra/Inter 결정 정보 제공부(120)를 움직임 예측기에 두어 해당 연산을 한다.In order to extract a motion vector from a reference block by the motion predictor 110, the reference block is repeatedly read in the local memory 100 by the number of search region slices. In the present invention, by repeatedly reading the reference block, the Intra / Inter decision information providing unit 120 is placed in the motion predictor to perform a corresponding operation.

도 1에서 첫번째 기준블록 데이터를 읽을 때 이 기준블록 데이터를Intra/Inter 결정 정보 제공부(120)에도 입력하여 기준블록의 평균화소 값 계산부(121)에서 계산하고, 두번째 기준블록을 읽을때 각 화소값과 평균 화소 값과의 차의 절대치 합 연산부(122)를 통해 연산을 하도록 설계하였다. 그런 다음 최종 움직임 예측 연산이 종료되어 움직임 벡터와 해당 벡터의 SAD 값이 결정되면, 벡터 생성 및 Intra/Inter 결정부(113)에 입력되어 해당 기준블록의 Intra/Inter 여부를 결정한다.When the first reference block data is read in FIG. 1, the reference block data is also input to the intra / inter decision information providing unit 120 to calculate the average pixel value calculation unit 121 of the reference block. The calculation is performed through the absolute sum calculator 122 of the difference between the pixel value and the average pixel value. Then, when the final motion prediction operation is completed and the SAD values of the motion vector and the corresponding vector are determined, the vector generation and the Intra / Inter determiner 113 are input to determine whether the reference block is Intra / Inter.

한편, 상기한 연산의 제어는, 제어부(130)의 상태 카운터와 상태 제어부(131)에 의해 쓰기/읽기 어드레스 발생부(133, 134)가 상기 기준 메모리(100)의 쓰기 읽기 어드레스를 발생시키고, 연산기 어레이 제어부(135)가 상기 연산기 어레이(111)의 어드레스를 제어하며, 벡터 발생 제어기(136)가 상기 벡터 발생 및 인트라/인터 결정부(113)의 벡터 발생 타이밍을 제어하게 된다.On the other hand, in the control of the above operation, the write / read address generators 133 and 134 generate the write read address of the reference memory 100 by the state counter of the controller 130 and the state controller 131, The operator array controller 135 controls the address of the operator array 111, and the vector generation controller 136 controls the vector generation timing of the vector generation and the intra / inter determination unit 113.

이상에서 상세히 설명한 바와 같이, 본 발명에서는 움직임 예측기의 움직임 예측을 위한 연산에 필요한 탐색영역 데이터를 로드함에 있어 2포트램을 사용하여 지역메모리의 크기를 줄이면서 연속적인 연산이 가능하도록 하여 전체 비디오 코덱의 크기(Gate 개수)를 줄였다.As described in detail above, in the present invention, in loading the search area data required for the motion prediction operation of the motion predictor, the entire video codec is made possible by reducing the size of the local memory by using 2 ports. Reduced the size of the number of gates.

본 발명에서는 Intra/Inter 결정 부분을 움직임 예측기 내부에 두어 중복되는 기준블록의 저장 메모리와 별도의 데이터를 메모리에서 읽기위한 주소 생성부분과 제어부분이 필요하지 않게되어 비디오 코덱 전체적인 제어를 간소화하였으며, 비디오 코덱의 크기를 줄었다.In the present invention, the Intra / Inter decision part is placed inside the motion estimator, thereby simplifying the overall control of the video codec by eliminating the need for an address generation part and a control part for reading the redundant memory and separate data from the memory. Reduced the size of the codec.

본 발명은 상위 두 방법으로 저 전송률 비디오 코덱에 적합한 움직임 예측기를 구현하였다.The present invention implements a motion predictor suitable for a low bit rate video codec using the top two methods.

Claims (6)

비디오 메모리로부터 하나의 마크로 블록에 해당하는 기준블록과, 탐색영역 블록의 데이터를 입력받아 저장하는 지역 메모리와;A reference block corresponding to one macro block from the video memory, and a local memory for receiving and storing data of the search area block; 상기 지역 메모리의 기준블록 데이터를 입력받아 평균 화소값을 구하고 각 화소와 평균 화소값의 차의 합을 구하는 인터/인트라 결정 정보 제공부와;An inter / intra decision information providing unit for receiving an average pixel value by receiving reference block data of the local memory and obtaining a sum of a difference between each pixel and the average pixel value; 기준블록과 탐색영역 블록의 행단위로 입력받아 차의 절대치 합에 대한 부분합을 구하고, 누적하여 SAD 값들을 생성하고, 비교하여 가장 작은 SAD 값을 갖는 후보블록을 한 탐색영역 슬라이스마다 찾은 후, 현재의 최소 SAD값과 비교하여 최소 SAD 값을 선택하여 벡터값을 생성함과 아울러 상기 인터/인트라 결정정보 제공부에서 제공되는 기준블록의 SAD값과 상기 최소 SAD값을 비교하여 해당 기준블록이 인트라인지 또는 인터인지를 결정하는 움직임 벡터 예측부와;After inputting the reference block and the search area block by row unit, obtain a subtotal sum of the absolute difference of the difference, accumulate SAD values, compare and find the candidate block having the smallest SAD value for each search area slice, and then The minimum SAD value is selected to be compared with the minimum SAD value to generate a vector value, and the SAD value of the reference block provided by the inter / intra decision information providing unit is compared with the minimum SAD value to determine whether the corresponding reference block is intra or A motion vector predictor for determining whether an inter-interface; 상태 카운터 및 상태 제어부의 제어에 의거하여 상기 지역 메모리의 입/출력을 위한 어드레스와, 움직임 예측부의 부분합 연산을 위한 어드레스 및 상기 벡터 발생을 위한 어드레스를 제어하는 제어부;로 구성된 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.And a controller configured to control an address for input / output of the local memory, an address for subtotal operation of the motion predictor, and an address for generating the vector under the control of a state counter and a state controller. Motion prediction device for the. 제 1 항에 있어서, 상기 지역 메모리는,The method of claim 1, wherein the local memory, 16 x 16의 하나의 마크로 블록 데이터를 기준블록 데이터로 입력받아 저장하는 기준블록 데이터 메모리와;A reference block data memory configured to receive one macro block data of 16 × 16 as reference block data; (탐색영역크기 x 16) 탐색영역의 16개의 행으로 구성된 탐색영역 슬라이스 데이터를 입력받아 저장하고 홀수 행 데이터와 짝수 행 데이터별로 출력하는 탐색데이터 메모리;로 구성된 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.(Search area size x 16) Motion prediction for a video codec, comprising: a search data memory for receiving and storing search area slice data consisting of 16 rows of a search area and outputting odd row data and even row data Device. 제 1 항에 있어서, 상기 움직임 예측부는,The method of claim 1, wherein the motion prediction unit, 상기 지역 메모리로부터 기준블록과 매 탐색영역 슬라이스의 홀수 행과 짝수 행을 입력받아 병렬 연산의 반복을 통하여 움직임 벡터 추출을 위한 기준블록과 후보 블록들간의 부분 차의 절대치 합을 연산하는 연산기 어레이와;An operator array that receives the reference block and odd and even rows of every search region slice from the local memory and calculates an absolute sum of partial differences between the reference block and candidate blocks for motion vector extraction through repetition of parallel operations; 그 연산기 어레이에서 출력되는 부분 합을 저장하고 기준블록의 마지막 행과 한 슬라이스 데이터의 마지막 행에 대한 연산 값이 입력되면 한 탐색영역 슬라이스에 포함된 탐색 후보 블록들의 최종 SAD 값을 비교하여 최소의 SAD 값을 가지는 후보블록의 벡터와 해당 SAD 값을 출력하는 부분합 저장 및 비교기와;When the partial sum output from the operator array is stored and operation values for the last row of the reference block and the last row of one slice data are input, the minimum SAD is compared by comparing the final SAD values of the candidate candidate blocks included in one search range slice. A partial sum storage and comparator for outputting a vector of a candidate block having a value and a corresponding SAD value; 그 부분합 저장 및 비교기에서 출력되는 후보블록의 SAD 값과 현재의 최소 SAD 값이 비교되어 전체 탐색영역에서 가장 작은 SAD 값과 해당 블록의 벡터값을 생성하고, 상기 인트라/인터 결정 정보 제공부에서 제공되는 기준블록의 SAD값과 상기 최소 SAD값을 비교하여 해당 기준블록이 인트라인지 또는 인터인지를 결정하는 벡터 생성 및 인트라/인터 결정부;로 구성된 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.The SAD value of the candidate block output from the subtotal storage and comparator and the current minimum SAD value are compared to generate the smallest SAD value and the vector value of the corresponding block in the entire search area, and are provided by the intra / inter decision information providing unit. And a vector generator and an intra / inter determiner for determining whether the reference block is intra or inter by comparing the SAD value of the reference block with the minimum SAD value. 제 1 항에 있어서, 상기 인트라/인터 결정 정보 제공부는,The apparatus of claim 1, wherein the intra / inter decision information providing unit comprises: 상기 지역 메모리로부터 현재 데이터인 기준블록 데이터를 입력받아 기준블록의 평균 화소값을 구하는 평균화소값 연산부와;An average pixel value calculator which receives the reference block data which is current data from the local memory and obtains an average pixel value of the reference block; 상기 기준 블록의 각 화소와 평균 화소값과의 차의 합을 구하는 부분합 연산부;로 구성되어 인터/인트라 결정을 위한 정보로서 제공하도록 구성된 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.And a partial sum calculator configured to obtain a sum of a difference between each pixel of the reference block and an average pixel value, and to provide information for inter / intra determination. 제 1 항에 있어서, 상기 기준 메모리는,The method of claim 1, wherein the reference memory, 상기 기준 메모리의 탐색영역 데이터 저장 메모리를 2 포트 램(Two Port RAM)을 사용하여 읽기와 쓰기가 동시에 가능하도록 구현하고, 움직임 예측부로 홀수/짝수 행 단위로 로드시켜 연산 중 탐색영역의 다음 한 행을 읽어 다음 연산에 사용 되어질 탐색영역 슬라이스를 구성하도록 이루어진 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.The search area data storage memory of the reference memory is implemented to be simultaneously read and written using two port RAM, and is loaded in odd / even rows by the motion predictor to perform the next one row of the search area during operation. A motion predictor for a video codec, characterized in that for configuring a search region slice to be used for the next operation. 기준블록과 탐색영역 블록의 행단위 데이터의 차의 절대치 합에 대한 부분합을 구하고, 부분합들을 누적하여 SAD 값들을 생성하고, 비교하여 가장 작은 SAD 값을 갖는 후보블록을 찾아 현재의 SAD값과 비교하여 최소 SAD 값을 선택하여 움직임 벡터값을 생성하는 움직임 예측기에 있어서,Obtain subtotals for the absolute sum of the difference between the row-by-row data of the reference block and the search area block, accumulate the subtotals to generate SAD values, compare the candidate blocks with the smallest SAD values, and compare them with the current SAD values. In the motion predictor for generating a motion vector value by selecting the minimum SAD value, 상기 기준블록 데이터의 평균 화소값을 구하고 각 화소와 평균 화소값의 차의 합을 구하여 상기 최소 SAD값과의 비교에 의거하여 상기 기준블록의 인터/인트라 결정을 하는 부분을 움직임 예측기 내부에 두어 기준블록 데이터를 움직임 예측과 인트라/인터 결정을 위한 연산에 동시에 사용하는 것을 특징으로 하는 비디오 코덱을 위한 움직임 예측장치.The average pixel value of the reference block data is obtained, the sum of the difference between each pixel and the average pixel value is obtained, and a part for making inter / intra determination of the reference block is based on the comparison with the minimum SAD value. A motion predictor for a video codec, wherein block data is simultaneously used for motion prediction and computation for intra / inter determination.
KR1019980052354A 1998-12-01 1998-12-01 Motion Predictor for Low Bit Rate Video Codecs KR100282614B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980052354A KR100282614B1 (en) 1998-12-01 1998-12-01 Motion Predictor for Low Bit Rate Video Codecs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980052354A KR100282614B1 (en) 1998-12-01 1998-12-01 Motion Predictor for Low Bit Rate Video Codecs

Publications (2)

Publication Number Publication Date
KR20000037705A KR20000037705A (en) 2000-07-05
KR100282614B1 true KR100282614B1 (en) 2001-02-15

Family

ID=19560844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980052354A KR100282614B1 (en) 1998-12-01 1998-12-01 Motion Predictor for Low Bit Rate Video Codecs

Country Status (1)

Country Link
KR (1) KR100282614B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100549919B1 (en) * 2000-12-15 2006-02-06 주식회사 케이티 Apparatuses for a Clock Cycle Reducing of VLSI
KR20030024411A (en) * 2001-09-18 2003-03-26 엘지전자 주식회사 Coding method for b picture in h.26l
KR20040039809A (en) * 2002-11-05 2004-05-12 엘지전자 주식회사 Moving picture encoder and method for coding using the same
KR100634453B1 (en) 2005-02-02 2006-10-16 삼성전자주식회사 Method for deciding coding mode about auto exposured image
KR101848078B1 (en) * 2017-04-28 2018-04-11 주식회사 마루이엔지 Scheduler for Digital Broadcast and Transmission Method of Data using thereof

Also Published As

Publication number Publication date
KR20000037705A (en) 2000-07-05

Similar Documents

Publication Publication Date Title
EP0896300B1 (en) Device and method for motion vector detection
US5838828A (en) Method and apparatus for motion estimation in a video signal
US20050238102A1 (en) Hierarchical motion estimation apparatus and method
JP4338654B2 (en) Motion vector detection apparatus and method, and image coding apparatus capable of using the motion vector detection apparatus
KR100273629B1 (en) Motion vector estimating appparatus with high speed and method of destmating motion vector
US20010028681A1 (en) Motion estimator
US20060002472A1 (en) Various methods and apparatuses for motion estimation
US4800425A (en) System for displacement vector searching during digital image analysis
US8064523B2 (en) Motion vector search apparatus
US6169766B1 (en) Method and apparatus for detecting motion vector and image coding apparatus
KR100282614B1 (en) Motion Predictor for Low Bit Rate Video Codecs
KR101014637B1 (en) Method and Apparatus for Processing Image Data and Semiconductor Storage Device
US20040247032A1 (en) Motion vector detection device and motion vector detection method
US6584212B1 (en) Apparatus for motion estimation with control part implemented by state transition diagram
US5548665A (en) Vector correlation detecting circuit
US6901027B2 (en) Apparatus for processing data, memory bank used therefor, semiconductor device, and method for reading out pixel data
KR0178302B1 (en) Motion estimation processor based on the bidirectional parallel pipe line structure
US20040120402A1 (en) Motion estimation apparatus for image data compression
KR100359091B1 (en) Motion estimation device
US6968011B2 (en) Motion vector detecting device improved in detection speed of motion vectors and system employing the same devices
WO2000064182A1 (en) Motion estimation
JP2000165883A (en) Motion vector detector
KR100926440B1 (en) Block matching motion estimation apparatus for picture coding
CN111787333B (en) Motion search method and device for video coding
WO1998030016A2 (en) Method and apparatus for half pixel sad generation

Legal Events

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

Payment date: 20071024

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee