KR100804451B1 - 1/4 quarter pixel interpolation method for imaging process and processor thereof - Google Patents

1/4 quarter pixel interpolation method for imaging process and processor thereof Download PDF

Info

Publication number
KR100804451B1
KR100804451B1 KR1020060092851A KR20060092851A KR100804451B1 KR 100804451 B1 KR100804451 B1 KR 100804451B1 KR 1020060092851 A KR1020060092851 A KR 1020060092851A KR 20060092851 A KR20060092851 A KR 20060092851A KR 100804451 B1 KR100804451 B1 KR 100804451B1
Authority
KR
South Korea
Prior art keywords
pixel
interpolation
quarter
pixels
integer
Prior art date
Application number
KR1020060092851A
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 KR1020060092851A priority Critical patent/KR100804451B1/en
Application granted granted Critical
Publication of KR100804451B1 publication Critical patent/KR100804451B1/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/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • 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/182Methods 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 a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

A quarter pixel interpolation method for image processing and a processor thereof are provided to perform horizontal interpolation and vertical interpolation by using an SIMD(Single Instruction Multiple Data) command, thereby reducing the amount of operations and accordingly increasing a data processing rate. A quarter pixel interpolation method for image processing comprises the following steps of: obtaining a first half pixel and a first quarter pixel by using information about a neighboring integer pixel(230,240) among pixels(250); obtaining a second half pixel(270) and a second quarter pixel(280,290) by using information about the pixel where horizontal interpolation is completed(260); and obtaining a third quarter pixel by using a third half pixel located in a diagonal line and a third half pixel located in a horizontal line among the third quarter pixels and the third half pixels generated after the above two steps. The above three steps are performed by an SIMD(Single Instruction Multiple Data) command supported in a processor.

Description

영상처리의 1/4 픽셀 보간 방법 및 그의 프로세서 {1/4 QUARTER PIXEL INTERPOLATION METHOD FOR IMAGING PROCESS AND PROCESSOR THEREOF}1/4 pixel interpolation method of image processing and its processor {1/4 QUARTER PIXEL INTERPOLATION METHOD FOR IMAGING PROCESS AND PROCESSOR THEREOF}

도 1a는 영상처리 장치에서 1/4 픽셀 보간을 수행할 때 각각의 픽셀의 위치에 따른 수행방법을 설명하기 위한 도면이고, 도 1b는 영상처리 장치에서 각각의 해당 모듈의 수행에 대한 성능을 분석한 도면.FIG. 1A is a diagram for describing a method of performing a pixel according to the position of each pixel when performing 1/4 pixel interpolation in the image processing apparatus, and FIG. 1B is a diagram illustrating a performance of performing a corresponding module in the image processing apparatus. One drawing.

도 2는 본 발명에 따른 1/4 픽셀 보간 방법의 수행 후 생성되는 픽셀의 구조를 개략적으로 나타낸 도면.2 is a diagram schematically illustrating a structure of a pixel generated after performing a method of quarter pixel interpolation according to the present invention.

도 3a 내지 도 3c는 가로방향 보간이 완성되어 가는 과정을 설명하기 위한 레지스터의 구조도.3A to 3C are structural diagrams of a register for explaining a process in which horizontal interpolation is completed.

도 4는 본 발명에 따른 세로방향 보간이 완성되어 가는 과정을 설명하기 위한 구조도.4 is a structural diagram illustrating a process of completing longitudinal interpolation according to the present invention.

도 5는 본 발명의 실시예에 따라 가로방향 보간과 세로 방향 보간에 의해 생성된 픽셀 정보를 상세히 나타낸 구조도.5 is a structural diagram showing pixel information generated by horizontal interpolation and vertical interpolation in detail according to an exemplary embodiment of the present invention.

도 6은 본 발명의 대각선 세로방향 보간을 통해 제3 쿼터 픽셀을 구하는 방법을 설명하기 위한 구조도.6 is a structural diagram illustrating a method of obtaining a third quarter pixel through diagonal longitudinal interpolation of the present invention.

도 7a 내지 도 7c는 본 발명의 SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간과 와 JM Reference와의 수행시간을 비교하기 위한 그래프와 표.7A to 7C are graphs and tables for comparing quarter quarter pixel interpolation using the SIMD instruction of the present invention and execution time of JM Reference.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

230, 240: 정수 픽셀 250 : 가로방향 보간230, 240: integer pixel 250: horizontal interpolation

260 : 세로방향 보간 270 : 제2 하프 픽셀260: vertical interpolation 270: second half pixel

280, 290 : 제2 쿼터 픽셀280, 290: second quarter pixel

본 발명은 영상의 시간적 중복 데이터를 제거하기 위한 데이터를 효율적으로 처리하는 1/4 픽셀 보간 방법 및 그의 프로세서에 관한 것이다.The present invention relates to a 1/4 pixel interpolation method and a processor thereof for efficiently processing data for removing temporal redundant data of an image.

일반적으로 영상 처리는 컴퓨터를 이용하여 영상 신호를 처리하는 것을 말한다. 여기서, 영상 신호와 관련하여 JPEG, MPEG, H.264와 같은 표준들은 블록 기반의 영상 압축 방식을 채택하고 있다. 이 중에서, 하나의 일례를 들면, H.264/AVC는 영상의 시간적 중복데이터를 제거하기 위해서 MC(Motion Compensation)와 ME(Motion Estimation)방법을 사용하며 이 과정에서 MV(Motion Vector)는 1/4 픽셀(Quarter-pixel) 단위의 보간 방법을 사용한다.In general, image processing refers to processing an image signal using a computer. Here, in relation to video signals, standards such as JPEG, MPEG, and H.264 employ a block-based video compression scheme. Among these, as an example, H.264 / AVC uses MC (Motion Compensation) and ME (Motion Estimation) methods to remove temporal redundant data of an image. In this process, MV (Motion Vector) is 1 /. It uses a 4-pixel interpolation method.

따라서, 영상처리의 H.264/AVC에서는 1/4 픽셀단위의 MV를 만들기 위해 영상데이터 처리에 있어서 1/4 픽셀 보간 방법을 채택하고 있다.Therefore, in H.264 / AVC of image processing, a 1/4 pixel interpolation method is adopted in image data processing to make MV of 1/4 pixel unit.

도 1a는 영상처리 장치에서 1/4 픽셀 보간을 수행할 때 각 픽셀의 위치에 따른 수행방법을 설명하기 위한 도면이고, 도 1b는 영상처리 장치에서 각각의 해당 모듈의 수행에 대한 성능을 분석한 도면이다. 여기서, 도 1a는 H.264의 표준 문서 에 나온 정수 픽셀(integer pixel)과 하프 픽셀(half pixel), 쿼터 픽셀(quarter pixel)을 정의한 내용이다. 이때, 각각의 픽셀의 위치는 전부 도시하지는 않았다.FIG. 1A is a diagram for describing a method of performing pixel interpolation according to the position of each pixel when the image processing apparatus is performed. FIG. 1B is a diagram illustrating the performance of each corresponding module in the image processing apparatus. Drawing. Here, FIG. 1A defines integer pixels, half pixels, and quarter pixels in the H.264 standard document. At this time, the position of each pixel is not shown at all.

도 1a을 참조하면, H.264에서 사용되는 픽셀은 정수 픽셀과 하프 픽셀, 쿼터 픽셀로 이루어진다. 상기 정수 픽셀은 본래의 영상을 표현하는 화소의 단위로서, H.264 표준 문서에 나와 있듯이 A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U에 위치한다. 또한, 하프 픽셀은 본래의 영상을 더욱 세밀하게 표현하고자 하는 화소의 단위로서, aa, bb, b, cc, dd, h, j, m, ee, ff, s, gg, hh에 위치한다. 또한, 쿼터 픽셀은 정수 픽셀보다 더 세분하게 영상을 표현하고자 하는 화소의 단위로서, a, c, d, e, f, g, I, k, n, p, q, r에 위치한다. Referring to FIG. 1A, a pixel used in H.264 is composed of an integer pixel, a half pixel, and a quarter pixel. The integer pixel is a unit of a pixel representing the original image, and as shown in the H.264 standard document, A, B, C, D, E, F, G, H, I, J, K, L, M, N Located at, P, Q, R, S, T, U In addition, the half pixel is a unit of a pixel to express the original image in more detail, and is located at aa, bb, b, cc, dd, h, j, m, ee, ff, s, gg, and hh. In addition, the quarter pixel is a unit of a pixel to express an image more finely than an integer pixel and is located at a, c, d, e, f, g, I, k, n, p, q, and r.

상기 정수 픽셀을 이용하여 하프 픽셀과 쿼터 픽셀이 생성됨으로써 1/4 쿼터 픽셀 보간 방법이 이루어지는데, 보다 상세하게는 하프 픽셀은 정수 픽셀을 이용하여 6탭 필터링 방법에 의해 나타낼 수 있고, 쿼터 픽셀은 6탭 필터링에 의해 만들어진 하프 픽셀과 이웃하고 있는 정수 픽셀간의 평균으로 나타낼 수 있다. 상기 하프 픽셀과 쿼터 픽셀을 구하는 방법을 H.264 표준에서 정의하고 있는 식 1로 표현할 수 있다.The quarter-pixel interpolation method is performed by generating a half pixel and a quarter pixel using the integer pixel. More specifically, the half pixel may be represented by a six-tap filtering method using an integer pixel. It can be expressed as an average between half pixels produced by 6-tap filtering and neighboring integer pixels. The method for obtaining the half pixel and the quarter pixel can be expressed by Equation 1 defined in the H.264 standard.

하프 픽셀Half pixel

b1 = (E-5F+20G+20H-5I+J), b = ((b1+16)>>5)b1 = (E-5F + 20G + 20H-5I + J), b = ((b1 + 16) >> 5)

h1 = (A-5C+20G+20M-5R+T), h = ((h1+16)>>5)h1 = (A-5C + 20G + 20M-5R + T), h = ((h1 + 16) >> 5)

쿼터 픽셀Quarter pixel

a = (G+b+1)>>1; (좌우 방향) , d = (G+h+1)>>1; (상하 방향)a = (G + b + 1) >> 1; (Left and right directions), d = (G + h + 1) >> 1; (Up and down direction)

e = (b+h+1)>>1; (좌 대각선 방향), g = (b+m+1)>>1; (우 대각선 방향) (식 1) e = (b + h + 1) >> 1; (Left diagonal direction), g = (b + m + 1) >> 1; (Right diagonal direction) (Equation 1)

상기 식 1은 하프 픽셀과 쿼터 픽셀 중 b, h의 하프 픽셀을 구하는 식과 d, g의 쿼터 픽셀을 구하는 식으로서 하나의 일례에 불과하다.Equation 1 is a formula for obtaining a half pixel of b and h and a quarter pixel of d and g among half and quarter pixels.

식 1에 의하면, b와 h는 하프 픽셀이고, d와 g는 쿼터 픽셀이며, E, F, G, H, I, J는 정수 픽셀이며, 상수인 1, -5, 20, 20, -5, 1은 대칭적인 값을 갖고 6탭 필터링에 사용되는 필터계수를 의미한다. 따라서, 상술한 식 1을 통해 하프 픽셀과 쿼터 픽셀을 구함으로써 1/4 픽셀 보간 방법이 완성된다.According to Equation 1, b and h are half pixels, d and g are quarter pixels, E, F, G, H, I, and J are integer pixels, and constants 1, -5, 20, 20, -5 , 1 means the filter coefficient used for 6-tap filtering with symmetrical values. Therefore, the quarter-pixel interpolation method is completed by obtaining the half pixel and the quarter pixel through the above-described equation (1).

하지만, 종래의 1/4 픽셀 보간 방법(Quarter-pixel interpolation)은 순차적으로 보간을 행한다. 예를 들면, 정수 픽셀인 A와 C가 위치하는 선상의 픽셀들을 보간하고, 이후 E와 H가 위치하는 선상의 픽셀들을 보간하고, 이후 R과 T가 위치하는 선상의 픽셀들을 보간한다. 따라서, 종래의 1/4 픽셀 보간 방법은 메모리의 올려놓기(load), 저장하기(store), 옮기기(mov)등의 연산 동작이 많이 발생한다.However, the conventional quarter-pixel interpolation method sequentially interpolates. For example, the pixels on the line where the integer pixels A and C are located are interpolated, the pixels on the line where E and H are positioned are interpolated, and the pixels on the line where R and T are located are interpolated. Therefore, in the conventional 1/4 pixel interpolation method, operation operations such as load, store, and move of a memory occur a lot.

또한, H.264의 영상처리에서 1/4 픽셀 보간 방법이 사용되어지는 MC(Motion Compensation)는 도 1b에서와 같이 전체 과정에서 정수 변환(Integer Transform), 엔트로피 디코딩(Entropy decoding), 디블록킹(Deblocking)등에 비해 가장 많은 연산량을 필요로 한다.In addition, MC (Motion Compensation), in which the 1/4 pixel interpolation method is used in H.264 image processing, uses integer transform, entropy decoding, and deblocking in the entire process as shown in FIG. It requires the most amount of computation compared to Deblocking.

상술한 문제점을 해결하기 위한 본 발명은 불필요한 연산량을 줄여 고속처리가 가능한 영상처리의 1/4 픽셀 보간 방법을 제공하는데 그 목적이 있다. An object of the present invention is to provide a 1/4 pixel interpolation method of image processing capable of high speed processing by reducing unnecessary computation amount.

상기 목적을 달성하기 위한 본 발명의 1/4 픽셀 보간 방법은 픽셀 중 이웃하고 있는 정수 픽셀 정보를 이용하여 제1 하프 픽셀과 제1 쿼터 픽셀을 구하는 가로방향 보간 과정과 상기 가로방향 보간 후, 상기 가로방향 보간이 완료된 픽셀 정보를 이용하여 제2 하프 픽셀과 제2 쿼터 픽셀을 구하는 세로방향 보간 과정과 상기 가로방향 보간과 세로방향 보간을 수행 후 생성되는 제3 하프 픽셀과 제3 쿼터 픽셀 중 상기 가로방향에 위치하는 상기 제3 하프 픽셀과 대각선에 위치하는 상기 제3 하프 픽셀을 이용하여 제3 쿼터 픽셀을 구하는 대각선 세로방향 보간 과정을 포함할 수 있다.The 1/4 pixel interpolation method of the present invention for achieving the above object is a horizontal interpolation process of obtaining a first half pixel and a first quarter pixel using neighboring integer pixel information among pixels, and after the horizontal interpolation, The vertical interpolation process of obtaining the second half pixel and the second quarter pixel by using the horizontal interpolation pixel information and the third half pixel and the third quarter pixel generated after the horizontal interpolation and the vertical interpolation are performed. The method may include a diagonal longitudinal interpolation process of obtaining a third quarter pixel by using the third half pixel positioned in a horizontal direction and the third half pixel disposed in a diagonal direction.

또한, 상기 제1 하프 픽셀과 제2 하프 픽셀을 구하는 식은 b = (((G+H)*4-F-I)*5+E+J+16)/32이고, h = ((G+M)*4-C-R)*5+A+T+16)/32이며 상기 b 와 h는 상기 제1 하프 픽셀과 제2 하프 픽셀의 임의의 위치이며, 상기 A, C, E, F, G, H, I, J, M, R, T는 b와 h의 이웃하고 있는 정수 픽셀의 위치이다. The equation for obtaining the first half pixel and the second half pixel is b = (((G + H) * 4-F-I) * 5 + E + J + 16) / 32, and h = ((G + M) * 4-C-R ) * 5 + A + T + 16) / 32, and b and h are arbitrary positions of the first half pixel and the second half pixel, and the A, C, E, F, G, H, I, J, M, R, T Is the position of neighboring integer pixels of b and h.

또한, 상기 가로방향 보간은 6탭 필터링을 할 수 있도록 소정의 정수 픽셀을 제1 레지스터에 저장하는 단계와 상기 제1 레지스터에 저장된 데이터를 상기 6탭 필터링 연산을 수행하여 제1 하프 픽셀을 생성하는 단계와 상기 제1 하프 픽셀과 상기 제1 하프 픽셀의 이웃하고 있는 정수 픽셀 중 임의의 정수 픽셀간의 평균값을 구하여 제1 쿼터 픽셀을 생성하는 단계를 포함할 수 있다.The horizontal interpolation may include storing a predetermined integer pixel in a first register so as to perform 6-tap filtering and generating a first half pixel by performing the 6-tap filtering operation on the data stored in the first register. And generating a first quarter pixel by obtaining an average value between any integer pixels among the integer pixels adjacent to the first half pixel and the first half pixel.

또한, 상기 세로방향 보간은 가로방향 보간 후, 상기 가로방향 보간에서 구한 픽셀 정보 중, 제1 하프 픽셀과 상기 제1 하프 픽셀과 이웃하고 있는 정수 픽셀 을 제2 레지스터에 저장하는 단계와 제2 레지스터에 저장된 데이터를 상기 6탭 필터링 연산을 수행하여 제2 하프 픽셀을 생성하는 단계와 상기 제2 하프 픽셀과 상기 제2 하프 픽셀(half pixel)의 이웃하고 있는 정수 픽셀간의 평균값을 구하여 제2 쿼터 픽셀(quarter pixel)을 생성하는 단계를 포함할 수 있다.The vertical interpolation may include storing a first half pixel and an integer pixel adjacent to the first half pixel in a second register among pixel information obtained from the horizontal interpolation after the horizontal interpolation. Generating a second half pixel by performing the six-tap filtering operation on the data stored in the second quarter pixel, and obtaining an average value between adjacent integer pixels of the second half pixel and the second half pixel. (quarter pixel) may be generated.

또한, 상기 대각선 세로방향 보간은 가로방향에 위치하는 상기 제3 하프 픽셀과 대각선에 위치한 상기 제3 하프 픽셀의 값을 제3 레지스터에 저장하는 단계와 가로방향에 위치하는 두 개의 제3 하프 픽셀의 값을 이용하여 상기 제3쿼터 픽셀의 중앙 픽셀 값을 구하는 단계와 대각선에 위치한 상기 제3 하프 픽셀의 값을 이용하여 상기 제3 쿼터 픽셀의 중앙 값을 제외한 나머지 픽셀의 값을 구하는 단계를 포함할 수 있다.In addition, the diagonal longitudinal interpolation may include storing values of the third half pixel positioned in the horizontal direction and the third half pixel positioned in the diagonal in a third register, and the two third half pixels positioned in the horizontal direction. Obtaining a center pixel value of the third quarter pixel by using a value and calculating a value of the remaining pixels other than the center value of the third quarter pixel by using a value of the third half pixel positioned diagonally. Can be.

또한, 상기 가로방향 보간과 세로 방향 보간 및 상기 대각선 세로방향 보간은 프로세서에서 지원되는 SIMD(Single Instruction Multiple Data) 명령어에 의해 수행될 수 있다.In addition, the horizontal interpolation, the vertical interpolation, and the diagonal vertical interpolation may be performed by a single instruction multiple data (SIMD) instruction supported by a processor.

또한, 상기 SIMD 명령어는 PADDW, PSLLW, PSUBW, PMULW, PADDWM, PSRLW, PUNKxx, PAVGB 명령어 중 적어도 하나 이상으로 상기 프로세서에 의해서 수행될 수 있다.The SIMD instruction may be performed by the processor with at least one of PADDW, PSLLW, PSUBW, PMULW, PADDWM, PSRLW, PUNKxx, and PAVGB instructions.

또한, 본 발명에 의한 프로세서는 픽셀 중 이웃하고 있는 정수 픽셀 정보를 이용하여 제1 하프 픽셀(half pixel)과 제1 쿼터 픽셀(quarter pixel)을 구하는 가로방향 보간 및 가로방향 보간 후, 상기 가로방향 보간이 완료된 픽셀 정보를 이용하여 제2 하프 픽셀과 제2 쿼터 픽셀을 구하는 세로방향 보간을 수행한다.In addition, the processor according to the present invention after the horizontal interpolation and the horizontal interpolation to obtain a first half pixel (first half pixel) and the first quarter pixel (quarter pixel) by using the adjacent integer pixel information of the pixel, the horizontal direction Vertical interpolation is performed to obtain a second half pixel and a second quarter pixel using the interpolated pixel information.

또한, 상기 가로방향 보간과 세로 방향 보간은 SIMD(Single Instruction Multiple Data) 명령어에 의해 수행될 수 있다.In addition, the horizontal interpolation and the vertical interpolation may be performed by a single instruction multiple data (SIMD) command.

또한, 상기 가로방향 보간과 세로방향 보간을 수행 후 생성되는 제3 하프 픽셀과 제3 쿼터 픽셀 중 가로방향에 위치하는 두 개의 상기 제3 하프 픽셀 사이와 대각선에 위치하는 두 개의 상기 제3 하프 픽셀의 사이에 존재하는 제3 쿼터 픽셀을 더 구하여 수행될 수 있다.The third half pixel and the third half pixel, which are formed after performing the horizontal interpolation and the vertical interpolation, are disposed between two third half pixels positioned in a horizontal direction and two third half pixels disposed in a diagonal direction. It may be performed by further obtaining a third quarter pixel existing between.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 보다 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention.

도 2는 본 발명에 따른 1/4 픽셀 보간 방법의 수행 후 생성되는 픽셀의 구조를 개략적으로 나타낸 도면이다.FIG. 2 is a diagram schematically illustrating a structure of a pixel generated after performing a 1/4 pixel interpolation method according to the present invention.

도 2에 도시된 바와 같이, 본 발명의 1/4 픽셀 보간 방법은 가로방향 보간과 세로방향 보간, 대각선 세로방향 보간을 포함한다.As shown in Fig. 2, the 1/4 pixel interpolation method of the present invention includes horizontal interpolation, longitudinal interpolation, and diagonal longitudinal interpolation.

가로방향 보간(250)은 x축으로 x00부터 x12까지 규칙적으로 정수 픽셀 값이 배열될 때, 두개의 정수 픽셀을 이용하여 두개의 정수 픽셀 사이에 존재하는 제1 하프 픽셀(h00 ~ h07)과 , 제1 쿼터 픽셀(q00 ~ q15)의 값을 구한다.The horizontal interpolation 250 includes the first half pixels h00 to h07 existing between two integer pixels using two integer pixels when the integer pixel values are regularly arranged on the x-axis from x00 to x12. The values of the first quarter pixels q00 to q15 are obtained.

예를 들면, x02의 정수 픽셀과 x03의 정수 픽셀을 이용하여 두 정수 픽셀 사이에 존재하는 제1 하프 픽셀(h00)을 구한다. 또한, 정수 픽셀(x02)과 제1 하프 픽셀(h00)을 이용하여 제1 쿼터 픽셀(q00)을 구한다. 또한, 정수 픽셀(x03)과 제1 하프 픽셀(h00)을 이용하여 제1 쿼터 픽셀(q01)을 구한다.For example, a first half pixel h00 existing between two integer pixels is obtained by using an integer pixel of x02 and an integer pixel of x03. Further, the first quarter pixel q00 is obtained by using the integer pixel x02 and the first half pixel h00. Also, the first quarter pixel q01 is obtained using the integer pixel x03 and the first half pixel h00.

이와 같이, x축으로 규칙적인 배열을 갖는 정수 픽셀을 이용하여 이웃하는 정수 픽셀 사이에 존재하는 제1 하프 픽셀과 제1 쿼터 픽셀을 구할 수 있다. 따라서, x축으로 나열된 제1 하프 픽셀과 제1 쿼터 픽셀을 구함으로써, 가로방향 보간이 완성된다. 이러한 가로방향 보간(250)은 왼쪽에서부터 오른쪽으로 스캐닝 되듯이 각각의 행이 동시에 수행됨으로써, 메모리의 접근(access) 횟수를 줄일 수 있다.As described above, the first half pixel and the first quarter pixel existing between neighboring integer pixels may be obtained using integer pixels having a regular arrangement on the x-axis. Therefore, the horizontal interpolation is completed by obtaining the first half pixel and the first quarter pixel arranged on the x-axis. As the horizontal interpolation 250 scans each row at the same time as scanning from left to right, the number of accesses of the memory can be reduced.

그리고, 세로방향 보간(260)은 가로방향 보간(250)이 완성된 후, 가로방향 보간이 완료된 y축으로 형성된 정수 픽셀 정보를 이용하여 제2 하프 픽셀과 제2 쿼터 픽셀을 구한다. 여기서, 가로방향 보간이 완료된 y축으로의 정수 픽셀 이란 y축으로 규칙적으로 배열된 정수 픽셀로서, 예를 들면 y축으로 y00부터 y50까지의 규칙적으로 배열된 정수 픽셀을 의미한다. 이러한 가로방향 보간에 의해 생성된 정수 픽셀(y00~y50) 정보나 제1 하프 픽셀(230, 240) 정보를 이용하여 가로방향 보간의 임의의 두행 사이에 생성될 제2 하프 픽셀과 제2 쿼터 픽셀을 구하게 된다.After the horizontal interpolation 250 is completed, the vertical interpolation 260 obtains the second half pixel and the second quarter pixel by using integer pixel information formed on the y-axis in which the horizontal interpolation is completed. Herein, the integer pixels on the y-axis in which the horizontal interpolation is completed are integer pixels regularly arranged on the y-axis, for example, the integer pixels regularly arranged on the y-axis from y00 to y50. The second half pixel and the second quarter pixel to be generated between any two rows of the horizontal interpolation using the integer pixel (y00 to y50) information or the first half pixel 230 and 240 information generated by the horizontal interpolation. Will be obtained.

예를 들면, 정수 픽셀(y00)과 정수 픽셀(y10)을 이용하여 두 정수 픽셀 사이에 존재하는 제2 하프 픽셀(270)을 구한다. 또한, 정수 픽셀(y00)과 제2 하프 픽셀(270)을 이용하여 두 픽셀 사이에 존재하는 제2 쿼터 픽셀(280)을 구할 수 있다. 또한, 정수 픽셀(y10)과 제2 하프 픽셀(270)을 이용하여 두 픽셀 사이에 존재하는 제2 쿼터 픽셀(290)을 구할 수 있다.For example, the second half pixel 270 existing between the two integer pixels is obtained by using the integer pixel y00 and the integer pixel y10. In addition, the second quarter pixel 280 existing between the two pixels may be obtained using the integer pixel y00 and the second half pixel 270. In addition, the second quarter pixel 290 existing between the two pixels may be obtained using the integer pixel y10 and the second half pixel 270.

또한, 상기 가로방향 보간이 완료된 후, 가로방향 보간에 의해 생성된 제1 하프 픽셀 중, 예컨대 y축으로 배열된 제1 하프 픽셀(230, 240)의 정보를 이용하여 두 개의 제1 하프 픽셀(230, 240) 사이에 존재하는 제2 하프 픽셀과 제2 쿼터 픽셀 을 구할 수 있다. 이러한 제2 하프 픽셀과 제2 쿼터 픽셀은 도시하지 않았으나, 세로방향 보간 영역(260)의 중앙에 위치한다. 이와 같이, 세로방향 보간(260)은 가로방향 보간이 완성된 후, 왼쪽에서부터 오른쪽으로 스캐닝 하듯이, 동시에 수행함으로써 세로방향 보간(260)이 완성된다.In addition, after the horizontal interpolation is completed, two first half pixels (eg, two first half pixels 230, 240 of the first half pixels generated by the horizontal interpolation, for example, arranged on the y-axis) are used. The second half pixel and the second quarter pixel existing between 230 and 240 may be obtained. Although not illustrated, the second half pixel and the second quarter pixel are positioned at the center of the vertical interpolation region 260. As described above, the longitudinal interpolation 260 is performed after the horizontal interpolation is completed, and the vertical interpolation 260 is completed by simultaneously performing the scanning from the left to the right.

하지만, 세로방향 보간(260)의 영역은 표시하지는 않았지만 일부 영역에 보간이 이루어지지 않게 되는데, 그 일부에는 가로방향 보간(250)과 세로방향 보간(260)을 수행 후 생성되는 제3 하프 픽셀과 제3 쿼터 픽셀의 일부를 이용하여 새로운 제3 쿼터 픽셀을 생성하는 대각선 세로방향 보간을 수행한다. 이와 같이, 가로방향 보간(250)과 세로방향 보간(260)에 의한 제1, 2 하프 픽셀을 구하는 방법과 대각선 세로방향 보간에 의한 제3 쿼터 픽셀을 구하는 방법은 이후에 설명할 도 3a 내지 도 5의 과정을 통해 보다 명확히 설명하기로 한다. 먼저 가로방향 보간에 대해 살펴보면 다음과 같다.However, although the region of the vertical interpolation 260 is not displayed, interpolation is not performed in some regions, and the third half pixel generated after the horizontal interpolation 250 and the vertical interpolation 260 is performed. A diagonal longitudinal interpolation is performed to generate a new third quarter pixel by using a portion of the third quarter pixel. As described above, the method of obtaining the first and second half pixels by the horizontal interpolation 250 and the vertical interpolation 260 and the method of obtaining the third quarter pixel by the diagonal longitudinal interpolation will be described later with reference to FIGS. The process in 5 will be explained more clearly. First, the horizontal interpolation is as follows.

도 3a 내지 도 3c는 가로방향 보간이 완성되어 가는 과정을 설명하기 위한 레지스터의 구조도이다.3A to 3C are structural diagrams of a register for explaining a process in which horizontal interpolation is completed.

가로방향 보간은 소정의 정수 픽셀을 제1 레지스터에 저장하는 단계, 제1 하프 픽셀을 생성하는 단계, 제1 쿼터 픽셀을 생성하는 단계를 포함한다.Horizontal interpolation includes storing a predetermined integer pixel in a first register, generating a first half pixel, and generating a first quarter pixel.

도 3a를 살펴보면, 본 발명에 따른 가로방향 보간은 먼저 6탭 필터링을 할 수 있도록 소정의 정수 픽셀을 제1 레지스터에 저장하는 단계를 갖는다. 상기 제1 레지스터는 xmm0부터 xmm5의 변수를 갖는 6개의 레지스터로 이루어지며, 각각의 제1 레지스터에는 8개의 정수 픽셀의 값을 갖는다. 이러한 정수 픽셀의 값은 도 2에 서 설명한 정수 픽셀이 위치하는 값이다.Referring to FIG. 3A, horizontal interpolation according to an exemplary embodiment of the present invention includes first storing a predetermined integer pixel in a first register to enable 6-tap filtering. The first register is composed of six registers having variables of xmm0 to xmm5, and each of the first registers has values of eight integer pixels. The value of the integer pixel is a value where the integer pixel described with reference to FIG. 2 is located.

즉, xmm0의 제1 레지스터에는 x00부터 x07까지의 정수 픽셀 값이 저장된다. 또한, xmm1의 제1 레지스터에는 x01부터 x08까지의 정수 픽셀 값이 저장되고, xmm2의 제1 레지스터에는 x02부터 x09까지의 정수 픽셀 값이 저장되고, xmm3의 제1 레지스터는 x03부터 x10까지의 정수 픽셀 값이 저장되고, xmm4의 제1 레지스터는 x04부터 x11까지의 정수 픽셀 값이 저장되고, xmm5의 제1 레지스터는 x05부터 x12까지의 정수 픽셀 값이 저장된다. 여기서, 상술한 정수 픽셀 값, 예컨대 x00은 x축으로 0행 0열이고, x01은 x축으로 0행 1열이고, x02는 x축으로 0행 2열이고, x12는 x축으로 0행 12열을 의미한다. 여기서, 하나의 행만 표기하였지만, 나머지 행도 상술한 방법과 동일하게 할 수 있다. 이에 따라, 도 2에서 구하고자 하는 제1 하프 픽셀과 관계된 모든 정수 픽셀 값을 제1 레지스터에 저장하게 되는 것이다.That is, an integer pixel value from x00 to x07 is stored in the first register of xmm0. In addition, an integer pixel value from x01 to x08 is stored in a first register of xmm1, an integer pixel value from x02 to x09 is stored in a first register of xmm2, and an integer pixel from x03 to x10 is stored in a first register of xmm3. The pixel value is stored, the first register of xmm4 stores integer pixel values from x04 to x11, and the first register of xmm5 stores integer pixel values from x05 to x12. Here, the above-described integer pixel value, for example, x00 is 0 rows and 0 columns on the x axis, x01 is 0 rows and 1 column on the x axis, x02 is 0 rows and 2 columns on the x axis, and x12 is 0 rows 12 on the x axis. Means heat. Here, only one line is shown, but the remaining lines can be the same as the above-described method. Accordingly, all integer pixel values related to the first half pixel to be obtained in FIG. 2 are stored in the first register.

이후, 가로방향 보간은 제1 레지스터에 저장된 정수 픽셀의 값을 6탭 필터링 연산을 수행하여 제1 하프 픽셀을 생성하는 단계를 갖는다. 6탭 필터링 연산은 제1 하프 픽셀을 구하는 식에 따라 제1 하프 픽셀을 생성하게 되는데, 제1 하프 픽셀은 다음과 같은 식 2와 같다.Thereafter, horizontal interpolation has a step of generating a first half pixel by performing a six-tap filtering operation on the value of the integer pixel stored in the first register. The six-tap filtering operation generates the first half pixel according to the equation for obtaining the first half pixel, and the first half pixel is expressed by Equation 2 below.

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

= (((E+J)-(F+I)*5+(G+H)*20)+16)/32  = (((E + J)-(F + I) * 5 + (G + H) * 20) +16) / 32

= (((G+H)*4-F-I)*5+E+J+16)/32  = (((G + H) * 4-F-I) * 5 + E + J + 16) / 32

h = ((A-5*C+20*G+20*M-5*R+T)+16)/32h = ((A-5 * C + 20 * G + 20 * M-5 * R + T) +16) / 32

= (((A+T)-(C+R)*5+(G+M)*20)+16)/32  = (((A + T)-(C + R) * 5 + (G + M) * 20) +16) / 32

= ((G+M)*4-C-R)*5+A+T+16)/32 --(식 2)  = ((G + M) * 4-C-R) * 5 + A + T + 16) / 32-(Equation 2)

상기 식 2는 앞서 설명한 식 1을 연산량을 줄이기 위해 다시 정리한 형태로서 상기 b 와 h는 제1 하프 픽셀의 위치이고, 상기 A, C, E, F, G, H, I, J, M, R, T는 b와 h의 이웃하고 있는 정수 픽셀의 위치로서, 도 1을 기초로 하여 나타낸 것이다.Equation 2 is a form in which Equation 1 described above is rearranged to reduce the amount of computation, and b and h are positions of first half pixels, and A, C, E, F, G, H, I, J, M, R and T are the positions of the adjacent integer pixels of b and h, which are shown based on FIG.

상기 식 2에서 '*4'는 곱셈이지만, 2 byte 시프트로 계산되어 연산처리된다. 반면, '*5'는 곱셈 연산에 의해 바로 처리된다. 따라서, 앞서 설명한 식 1에서는 b와 h가 곱셈(*)이 각각 4번 필요한 것을 식 2에서는 b와 h가 곱셈(*)이 각각 1번으로 줄어들었다. 따라서, 식 2는 곱셈기의 수를 줄임으로써 프로세서에 의한 데이터 처리속도를 향상시킬 수 있다.In Equation 2, '* 4' is a multiplication, but is calculated and processed by a 2-byte shift. '* 5', on the other hand, is directly processed by the multiplication operation. Therefore, in Formula 1, b and h need four multiplications (*) four times, respectively. In Equation 2, b and h multiply (*) one time each. Therefore, Equation 2 can improve the data processing speed by the processor by reducing the number of multipliers.

여기서, 식 2를 적용하여 제1 하프 픽셀을 구하기 위한 6탭 필터링의 연산 과정은 도 3b와 같다. 여기 도 3b는 일례로 식 2의 b = (((G+H)*4-F-I)*5+E+ J+16)/32를 적용한다.Here, the operation of 6-tap filtering to obtain the first half pixel by applying Equation 2 is as shown in FIG. 3B. Here, FIG. 3B applies b = (((G + H) * 4-F-I) * 5 + E + J + 16) / 32 of Formula 2 as an example.

도 3b를 살펴보면, 먼저 식 2에서 (G+H)를 적용하면, 레지스터(1)에는 x02부터 x09까지의 정수 픽셀 값이 저장된다. 또한, 레지스터(2)에는 x03부터 x10까지의 정수 픽셀 값이 저장된다. 또한, 레지스터(3)에는 xmm6=xmm2+xmm3의 연산이 수행되어 이에 해당하는 데이터 값이 저장된다. 이때, 더하기 연산은 프로세서에서 지원되는 SIMD 명령어 중 PADDW 명령어를 사용한다. 이어서, 식 2에서 (G+H)*4를 적용하면, 레지스터(4)에는 xmm6=(xmm2+xmm3)*4의 연산이 수행되어 이에 해당하는 데이터 값이 저장된다. 이때, '* 4'는 SIMD 명령어 중 PSLLW,2의 시프트 명령어 에 의해 수행된다. 이어서, 식 2에서 (G+H)*4-F을 적용하면, 레지스터(5)에는 x01부터 x08까지의 정수 픽셀 값이 저장된다. 따라서, 레지스터(6)에는 xmm6=xmm6-xmm1의 연산이 수행되어 이에 해당하는 데이터 값이 저장된다. 여기서, m00부터 m07은 x02+x03<<2 부터 x09+x10<<2까지의 연산된 데이터를 의미한다. 상기 뺄셈 연산은 PSUBW의 SIMD 명령어에 의해 수행된다.Referring to FIG. 3B, when (G + H) is first applied in Equation 2, an integer pixel value of x02 to x09 is stored in the register 1. In addition, the register 2 stores integer pixel values from x03 to x10. In addition, arithmetic of xmm6 = xmm2 + xmm3 is performed in the register 3, and the corresponding data value is stored. In this case, the addition operation uses a PADDW instruction among SIMD instructions supported by the processor. Subsequently, when (G + H) * 4 is applied in Equation 2, the operation of xmm6 = (xmm2 + xmm3) * 4 is performed in the register 4, and the corresponding data value is stored. At this time, '* 4' is performed by the shift command of PSLLW, 2 among SIMD instructions. Subsequently, when (G + H) * 4-F is applied in equation 2, the integer pixel values from x01 to x08 are stored in the register 5. Therefore, the operation of xmm6 = xmm6-xmm1 is performed in the register 6, and the corresponding data value is stored. Here, m00 to m07 means calculated data from x02 + x03 << 2 to x09 + x10 << 2. The subtraction operation is performed by the SIMD instruction of the PSUBW.

이어서, 식 2에서 (G+H)*4-F-I를 적용하면, 레지스터(7)에는 xmm4의 정수 픽셀 값이 저장될 때, 레지스터(8)에는 xmm6=xmm6-xmm4의 연산이 수행되어 이에 해당하는 데이터 값이 저장된다. 이후, 식 2에서 ((G+H)*4-F-I)* 5를 적용하면, 레지스터(9)에는 xmm6=xmm6*5의 연산이 수행되어 이에 해당하는 데이터 값이 저장된다. 이때, 곱셉 연산(*)은 PMULW의 SIMD 명령어에 의해 수행된다.Subsequently, when (G + H) * 4-F-I is applied in Equation 2, when an integer pixel value of xmm4 is stored in the register 7, an operation of xmm6 = xmm6-xmm4 is performed in the register 8, thereby correspondingly. The data value is stored. Subsequently, if ((G + H) * 4-F-I) * 5 is applied in Equation 2, the operation of xmm6 = xmm6 * 5 is performed in the register 9, and the corresponding data value is stored. At this time, the multiplication operation (*) is performed by the SIMD instruction of PMULW.

이어서, 식 2에서 ((G+H)*4-F-I)*5+E를 적용하면, 레지스터(10)에는 xmm0의 정수 픽셀 값이 저장될 때, 레지스터(11)에는 xmm6=xmm6+xmm0의 연산이 수행되어 이에 해당하는 m00+x00, m01+x01, m02+x02, m03+x03, m04+x04, m05+x05, m06+x06, m07+x07의 데이터 값이 저장된다. 이어서, 식 2에서 ((G+H)*4-F-I)*5+E+J를 적용하면, 레지스터(12)에는 xmm5의 정수 픽셀 값이 저장될 때, 레지스터(13)에는 xmm6=xmm6+xmm5의 연산이 수행되어 이에 해당하는 m00부터 m07의 데이터 값이 저장된다.Subsequently, when ((G + H) * 4-F-I) * 5 + E is applied in Equation 2, when the integer pixel value of xmm0 is stored in the register 10, the operation of xmm6 = xmm6 + xmm0 is performed in the register 11. Data values corresponding to m00 + x00, m01 + x01, m02 + x02, m03 + x03, m04 + x04, m05 + x05, m06 + x06 and m07 + x07 are stored. Subsequently, if ((G + H) * 4-F-I) * 5 + E + J is applied in Equation 2, when the integer pixel value of xmm5 is stored in the register 12, the operation of xmm6 = xmm6 + xmm5 is performed in the register 13. Data values corresponding to m00 to m07 are stored.

이어서, ((G+H)*4-F-I)*5+E+J+16을 적용하면, 레지스터(14)에는 16의 데이터 값이 저장될 때, 레지스터(15)에는 xmm6=xmm6+16의 연산이 수행되어 이에 해당하는 m00+16부터 m07+16까지의 데이터가 저장된다. 이어서, 식 2에서 ((G+ H)*4-F-I)*5+E+J+16+16)/32을 적용하면, 레지스터(16)에는 xmm6=(xmm6+16)/32의 연산이 수행됨으로써, 최종적으로 제1 하프 픽셀인 h00, h01, h02, h03, h04, h05, h06, h07의 데이터 값이 저장된다.Subsequently, if ((G + H) * 4-F-I) * 5 + E + J + 16 is applied, when 16 data values are stored in the register 14, the operation of xmm6 = xmm6 + 16 is performed in the register 15 so that the corresponding m00 + 16. To m07 + 16 are stored. Subsequently, when ((G + H) * 4-F-I) * 5 + E + J + 16 + 16) / 32 is applied in Equation 2, the operation of xmm6 = (xmm6 + 16) / 32 is performed on the register 16, thereby finally the first half pixel. The data values of h00, h01, h02, h03, h04, h05, h06, and h07 are stored.

이와 같이, 식 2에 따라 6탭 필터링을 사용하여 제1 하프 픽셀을 만드는 과정은 4칙 연산과 시프트만 사용되고, 이러한 연산을 프로세서에서 지원되는 SIMD 명령어로 처리함으로써 데이터 처리 속도가 향상된다.As such, the process of generating the first half pixel using 6-tap filtering according to Equation 2 uses only four-law operations and shifts, and the data processing speed is improved by processing these operations with SIMD instructions supported by the processor.

이후, 가로방향 보간은 상술한 제1 하프 픽셀과 제1 하프 픽셀의 이웃하고 있는 정수 픽셀간의 평균값을 구하여 제1 쿼터 픽셀을 생성하는 단계를 갖는다. 이를 도 3c에서 살펴보면, 레지스터(17)에는 도 3b에서 구한 제1 하프 픽셀의 값이 저장된다. 이어서, 레지스터(18)과 레지스터(19)에는 임의의 정수 픽셀 값이 저장된다. 예를 들면, 레지스터(18)과 레지스터(19)에는 도 3b에서 설명한 xmm2와 xmm3의 데이터 값이 저장된다. 이때, 레지스터(18, 19)에 저장되는 데이터는 앞으로 구하고자 하는 제1 쿼터 픽셀 위치의 양쪽에 위치하는 정수 픽셀 값이다. 따라서, 레지스터(18, 19)에는 구하고자 하는 제1 쿼터 픽셀의 위치에 따라 두개의 정수 픽셀 값이 이용될 수 있다.Subsequently, horizontal interpolation may include generating a first quarter pixel by obtaining an average value between the above-described first half pixel and an adjacent integer pixel of the first half pixel. Referring to FIG. 3C, the value of the first half pixel obtained in FIG. 3B is stored in the register 17. Subsequently, arbitrary integer pixel values are stored in registers 18 and 19. For example, the data values of xmm2 and xmm3 described in FIG. 3B are stored in the registers 18 and 19. At this time, the data stored in the registers 18 and 19 are integer pixel values located at both sides of the first quarter pixel position to be obtained. Therefore, two integer pixel values may be used in the registers 18 and 19 according to the position of the first quarter pixel to be obtained.

이어서, 레지스터(20)에는 SIMD 명령어 중 PUNKxx 명령어를 이용해 레지스터(17)에 저장된 제1 하프 픽셀 값과 레지스터(18)에 저장된 정수 픽셀 값을 서로 번갈아 가며 위치시켜 레지스터(17)에 저장된 제1 하프 픽셀 값과 레지스터(18)에 저장된 정수 픽셀 값이 번갈아 가며 저장된다.Subsequently, in the register 20, the first half pixel value stored in the register 17 and the integer pixel value stored in the register 18 are alternately positioned by using the PUNKxx instruction among the SIMD instructions to alternately place the first half stored in the register 17. The pixel value and the integer pixel value stored in the register 18 are alternately stored.

이어서, 레지스터(21)에는 상술한 방법과 반대로 레지스터(19)에 저장된 정 수 픽셀 값과 레지스터(17)에 저장된 제1 하프 픽셀 값을 번갈아 가며 위치시켜 저장된다.Subsequently, the register 21 alternately stores the integer pixel value stored in the register 19 and the first half pixel value stored in the register 17 in the opposite manner to the above-described method.

이에 따라, 레지스터(22)에는 레지스터(20)에 저장된 픽셀 정보와 레지스터(21)에 저장된 픽셀 정보에 대한 평균을 구하는 SIMD 명령어인 PAVGB SIMD 명령어를 이용해 제1 쿼터 픽셀의 값이 구해져 저장됨으로써, 제1 쿼터 픽셀이 완성된다. 결국, 제1 쿼터 픽셀은 제1 하프 픽셀과 제1 하프 픽셀의 이웃하고 있는 정수 픽셀간의 평균값을 구함으로써 완성되는 것이다.Accordingly, the value of the first quarter pixel is obtained and stored in the register 22 using a PAVGB SIMD instruction, which is a SIMD instruction that averages pixel information stored in the register 20 and pixel information stored in the register 21. The first quarter pixel is completed. As a result, the first quarter pixel is completed by obtaining an average value between the first half pixel and the neighboring integer pixels of the first half pixel.

도 4는 본 발명에 따른 세로방향 보간이 완성되어 가는 과정을 설명하기 위한 구조도이다.4 is a structural diagram illustrating a process of completing longitudinal interpolation according to the present invention.

본 발명에 따른 세로방향 보간은 제1 하프 픽셀과 소정의 정수 픽셀을 제2 레지스터에 저장하는 단계와 제2 하프 픽셀을 생성하는 단계와 제2 쿼터 픽셀을 생성하는 단계를 포함한다.The longitudinal interpolation according to the present invention includes storing a first half pixel and a predetermined integer pixel in a second register, generating a second half pixel, and generating a second quarter pixel.

도 4을 살펴보면, 세로방향 보간은 먼저 가로방향 보간 후, 상기 가로방향 보간에서 구한 픽셀 정보 중, 제1 하프 픽셀과 상술한 제1 하프 픽셀과 이웃하고 있는 정수 픽셀을 제2 레지스터에 저장하는 단계를 갖는다. 상기 제2 레지스터는 xmm0부터 xmm5의 변수를 갖는 6개의 레지스터로 이루어지며, 각각의 제2 레지스터에는 4개의 정수 픽셀 값과 가로방향 보간 후 생성된 4개의 제1 쿼터 픽셀 값이 번갈아 가며 저장된다.Referring to FIG. 4, in the vertical interpolation, the horizontal interpolation is first performed, and then, in the pixel information obtained from the horizontal interpolation, a first half pixel and an integer pixel neighboring the first half pixel described above are stored in a second register. Has The second register is composed of six registers having variables of xmm0 to xmm5, and each of the second registers alternately stores four integer pixel values and four first quarter pixel values generated after horizontal interpolation.

예를 들면, xmm0의 제2 레지스터에는 y00부터 y03까지의 정수 픽셀 값과 h00부터 h03까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다. 또한, xmm1의 제2 레지 스터에는 y10부터 y13까지의 정수 픽셀 값과 h10부터 h13까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다. 또한, xmm2의 제2 레지스터에는 y20부터 y23까지의 정수 픽셀 값과 h20부터 h23까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다.For example, an integer pixel value from y00 to y03 and a first half pixel value from h00 to h03 are alternately stored in the second register of xmm0. In addition, an integer pixel value from y10 to y13 and a first half pixel value from h10 to h13 are alternately stored in the second register of xmm1. In addition, an integer pixel value from y20 to y23 and a first half pixel value from h20 to h23 are alternately stored in the second register of xmm2.

또한, xmm3의 제2 레지스터에는 y30부터 y33까지의 정수 픽셀 값과 h30부터 h33까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다. 또한, xmm4의 제2 레지스터에는 y40부터 y43까지의 정수 픽셀 값과 h40부터 h43까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다. 또한, xmm5의 제2 레지스터에는 y50부터 y53까지의 정수 픽셀 값과 h50부터 h53까지의 제1 하프 픽셀 값이 번갈아 가며 저장된다.In addition, an integer pixel value from y30 to y33 and a first half pixel value from h30 to h33 are alternately stored in the second register of xmm3. In addition, an integer pixel value from y40 to y43 and a first half pixel value from h40 to h43 are alternately stored in the second register of xmm4. In addition, an integer pixel value from y50 to y53 and a first half pixel value from h50 to h53 are alternately stored in the second register of xmm5.

여기서, 상술한 정수 픽셀 값은 도 2에서 일부를 도시하였는데, 보다 구체적으로 나열하면, 예컨대 y00은 y축으로 0행 0열이고, y10은 y축으로 1행 0열이고, y20은 y축으로 2행 0열이고, y30은 y축으로 3행 0열을 의미한다. 또한, 제1 하프 픽셀 값, 예컨대 h03은 제1 하프 픽셀 0행 3열이고, h13은 제1 하프 픽셀의 1행 3열, h33은 제1 하프 픽셀 3행 3열을 의미한다.Herein, the above-described integer pixel values are partially illustrated in FIG. 2. More specifically, for example, y00 is 0 rows and 0 columns on the y axis, y10 is 1 row and 0 columns on the y axis, and y20 is the y axis. 2 rows and 0 columns, and y30 means 3 rows and 0 columns on the y axis. In addition, a first half pixel value, for example, h03 is a first half pixel 0 row and 3 columns, h13 is a first row 3 columns, and h33 is a first half pixel 3 rows and 3 columns.

이에 따라, 도 2에서 구하고자 하는 제2 하프 픽셀과 관계된 모든 정수 픽셀 픽셀의 위치에 있는 정수 픽셀 값과 제1 하프 픽셀 값을 제2 레지스터에 저장하게 되는 것이다.Accordingly, an integer pixel value and a first half pixel value at positions of all integer pixel pixels related to the second half pixel to be obtained in FIG. 2 are stored in the second register.

이후, 세로방향 보간은 제2 레지스터에 저장된 데이터를 상기 6탭 필터링 연산을 수행하여 제2 하프 픽셀을 생성한다. 이후, 상술한 제2 하프 픽셀과 상기 제2 하프 픽셀(half pixel)의 이웃하고 있는 정수 픽셀간의 평균값을 구하여 제2 쿼터 픽셀(quarter pixel)을 생성한다. 이러한 제2 하프 픽셀과 제2 쿼터 픽셀을 구하는 방법은 도 3b와 도 3c에서 설명한 방법으로 동일하게 이루어짐으로 인해 생략한다.Thereafter, vertical interpolation generates the second half pixel by performing the six tap filtering operation on the data stored in the second register. Thereafter, an average value between the above-described second half pixel and the neighboring integer pixel of the second half pixel is obtained to generate a second quarter pixel. The method of obtaining the second half pixel and the second quarter pixel is omitted because the same method is described with reference to FIGS. 3B and 3C.

한편, 상술한 방법에 의해 생성된 가로방향 보간과 세로방향 보간의 제1,2 하프 픽셀과 제1, 2 쿼터 픽셀의 구조를 살펴보면 다음과 같다.Meanwhile, the structures of the first and second half pixels and the first and second quarter pixels of the horizontal interpolation and the vertical interpolation generated by the above-described method will be described below.

도 5는 본 발명의 실시예에 따라 가로방향 보간과 세로 방향 보간에 의해 생성된 픽셀 정보를 상세히 나타낸 구조도이다.5 is a structural diagram showing pixel information generated by horizontal interpolation and vertical interpolation in detail according to an exemplary embodiment of the present invention.

도 5에서는 가로방향 보간(500, 510)과 세로방향 보간(520)에 의해 생성된 픽셀 중 일부만을 도시하였다. 즉, 여기 도 5의 1행과 5행은 정수 픽셀을 포함하여 가로방향 보간에 의해 생성된 제1 하프 픽셀(h)과 제1 쿼터 픽셀(q)을 나타내며, 2행 내지 4행은 세로방향 보간에 의해 생성된 제2 하프 픽셀(h)과 제2 쿼터 픽셀(q)을 나타낸다. In FIG. 5, only some of the pixels generated by the horizontal interpolation 500 and 510 and the vertical interpolation 520 are illustrated. That is, the first row and the fifth row of FIG. 5 represent the first half pixel h and the first quarter pixel q generated by horizontal interpolation including integer pixels, and the second through fourth rows are vertical directions. A second half pixel h and a second quarter pixel q generated by interpolation are shown.

하나의 예를 들어 생성된 과정을 설명하면, 가로방향 보간(500)은 정수 픽셀(501)과 정수 픽셀(502)을 이용하여 6탭 필터링 연산 방법을 사용하여 제1 하프 픽셀(503)이 만들어진다. 따라서, 가로방향 보간(500)은 정수 픽셀(501)과 제1 쿼터 픽셀(502)을 이용해 제1 쿼터 픽셀(504)을 만들 수 있다.As an example, a generated process is described. In the horizontal interpolation 500, the first half pixel 503 is formed using a six-tap filtering operation method using the integer pixel 501 and the integer pixel 502. . Accordingly, the horizontal interpolation 500 may make the first quarter pixel 504 using the integer pixel 501 and the first quarter pixel 502.

또한, 세로방향 보간(520) 방법에 대해 하나의 예를 들면, 세로방향 보간(520)은 도 4에서 설명한 제2 레지스터에 저장된 데이터 중 정수 픽셀(502)과 정수 픽셀(512)을 6탭 필터링 연산 방법으로 제2 하프 픽셀(523)을 만들어 낸다. 또한, 세로방향 보간(520)은 도 4에서 설명한 제2 레지스터에 저장된 데이터 중 제1 쿼터 픽셀(503)과 제1 쿼터 픽셀(513)을 6탭 필터링 연산 방법으로 제2 하프 픽셀(522)을 만들어 낸다. 따라서, 세로방향 보간(520)은 정수 픽셀(502)과 제1 하프 픽셀(523)의 평균값을 구하여 제2 쿼터 픽셀(526)을 만들 수 있다.In addition, as an example of the vertical interpolation 520 method, the vertical interpolation 520 is a six-tap filtering of the integer pixel 502 and the integer pixel 512 among the data stored in the second register described with reference to FIG. 4. The second half pixel 523 is produced by the calculation method. In addition, the vertical interpolation 520 performs a six-tap filtering operation on the first quarter pixel 503 and the first quarter pixel 513 among the data stored in the second register described with reference to FIG. 4. Make it up Accordingly, the vertical interpolation 520 may generate the second quarter pixel 526 by obtaining an average value of the integer pixel 502 and the first half pixel 523.

이와 같은 방법으로 가로방향 보간과 세로 방향 보간이 완성되지만, 일부의 세로보간 영영에는 보간이 이루어지지 않았는데(530), 그 일부에 생성되는 대각선 세로방향 보간에 대해 다음에서 살펴본다.In this way, the horizontal interpolation and the vertical interpolation are completed, but the interpolation is not performed in some of the vertical interpolation operations (530), and the diagonal longitudinal interpolation generated in the part will be described below.

도 6은 본 발명의 대각선 세로방향 보간을 통해 제3 쿼터 픽셀을 구하는 방법을 설명하기 위한 구조도이다.6 is a structural diagram illustrating a method of obtaining a third quarter pixel through diagonal longitudinal interpolation of the present invention.

여기 도 6은 도 5와 연계하여 설명한다. 도 6을 살펴보면, 본 발명은 가로방향 보간과 세로방향 보간에 의해 생성된 제1, 2 하프 픽셀을 합쳐 제3 하프 픽셀이라고 지칭하며, 가로방향에 위치하는 제3 하프 픽셀과 대각선에 위치하는 제3 하프 픽셀의 값을 제3 레지스터에 저장하는 단계를 갖는다.6 is described in connection with FIG. Referring to FIG. 6, the present invention refers to a third half pixel in which the first and second half pixels generated by the horizontal interpolation and the vertical interpolation are combined, and the third half pixel positioned in the horizontal direction and the diagonally positioned third half pixel. Storing a value of three half pixels in a third register.

예를 들면, 제3 레지스터(23)에는 h10부터 h17까지의 제3 하프 픽셀 값이 저장되고, 제3 레지스터(24)에는 1바이트(byte) 늦춰진 h11부터 h18까지의 제3 하프 픽셀 값이 저장된다. 레지스터(25)에는 제3 레지스터(23)와 제3 레지스터(24)에 저장된 제3 하프 픽셀 정보 중 대각선의 관계를 갖는 제3 하프 픽셀 값이 저장된다. 레지스터(26)에는 제3 레지스터(23)에 저장된 데이터 값과 제3 레지스터(24)에 저장된 데이터 값의 평균을 구하여 q10부터 q17까지의 제3 쿼터 픽셀 값을 만들어 낸다. 이때, 만들어지는 제3 쿼터 픽셀 중 하나를 예로 들면, 도 5에서 제3 하프 픽셀(522)과 제3 하프 픽셀(523) 사이에 존재하는 제3 쿼터 픽셀이다. 이러한 제3 쿼터 픽셀은 PAVGB의 SIMD 명령어를 수행함으로써 구할 수 있다.For example, a third half pixel value from h10 to h17 is stored in the third register 23, and a third half pixel value from h11 to h18 delayed by one byte is stored in the third register 24. do. The register 25 stores a third half pixel value having a diagonal relationship among the third half pixel information stored in the third register 23 and the third register 24. The register 26 calculates an average of the data value stored in the third register 23 and the data value stored in the third register 24 to produce a third quarter pixel value from q10 to q17. At this time, for example, one of the third quarter pixels to be made is a third quarter pixel existing between the third half pixel 522 and the third half pixel 523 in FIG. 5. This third quarter pixel can be obtained by performing a SIMD instruction of PAVGB.

레지스터(27)에는 h00, h00, h01, h01, h02, h02, h03, h03의 제3 하프 픽셀 값이 저장되며, 상기 제3 하프 픽셀은 도 5에서의 제1행에 위치하는 하프 픽셀을 말한다. 이때, 임의적으로 두 개씩 배열한다. 레지스터(28)에는 h20, h20, h21, h21, h22, h22, h23, h23의 제3 하프 픽셀 값이 저장되며, 상기 제3 하프 픽셀은 도 5에서의 제5행의 하프 픽셀의 값이다. 이때, 임의적으로 두개씩 배열한다. In the register 27, third half pixel values of h00, h00, h01, h01, h02, h02, h03, and h03 are stored, and the third half pixel refers to a half pixel located in the first row of FIG. . At this time, two randomly arranged. In the register 28, third half pixel values of h20, h20, h21, h21, h22, h22, h23, and h23 are stored, and the third half pixel is the value of the half pixel in the fifth row of FIG. At this time, two randomly arranged.

따라서, 레지스터(29)에는 레지스터(25)에 저장된 제3 하프 픽셀 값과 레지스터(27)에 저장된 제3 하프 픽셀 값의 평균을 구하여 q00부터 q07까지의 제3 쿼터 픽셀 값을 만들어 낸다. 이때, 만들어진 제3 쿼터 픽셀은 도 5에서 제2행의 제2 쿼터 픽셀(q) 사이에 생성되는 픽셀의 값이다.Accordingly, the register 29 obtains an average of the third half pixel value stored in the register 25 and the third half pixel value stored in the register 27 to generate a third quarter pixel value from q00 to q07. In this case, the created third quarter pixel is a value of a pixel generated between the second quarter pixel q of the second row in FIG. 5.

또한, 레지스터(30)에는 레지스터(25)에 저장된 제3 하프 픽셀 값과 레지스터(28)에 저장된 제3 하프 픽셀 값의 평균을 구하여 q20부터 q27까지의 제3 쿼터 픽셀 값을 만들어 낸다. 이때, 만들어진 제3 쿼터 픽셀은 도 5에서 제4행의 제2 쿼터 픽셀(q) 사이에 생성되는 픽셀의 값이다.In addition, the register 30 obtains an average of the third half pixel value stored in the register 25 and the third half pixel value stored in the register 28 to produce a third quarter pixel value from q20 to q27. In this case, the created third quarter pixel is a value of a pixel generated between the second quarter pixel q of the fourth row in FIG. 5.

결국, 레지스터(26)에 저장된 제3 쿼터 픽셀 값은 가로방향에 위치하는 제3 하프 픽셀을 이용하여 구한 값이고, 레지스터(29)와 레지스터(30)에 존재하는 제3 쿼터 픽셀 값은 대각선에 위치하는 제3 하프 픽셀 정보를 이용하여 구한 값이다.As a result, the third quarter pixel value stored in the register 26 is obtained by using a third half pixel positioned in the horizontal direction, and the third quarter pixel values existing in the register 29 and the register 30 are diagonally formed. This value is obtained using the third half pixel information located.

이러한 제3 쿼터 픽셀은 프로세서에서 지원되는 SIMD 명령어 중 PAVGB, PUNCKxx 명령어가 수행되어 생성된다.The third quarter pixel is generated by performing PAVGB and PUNCKxx instructions among SIMD instructions supported by the processor.

이에 따라, 본 발명의 1/4 쿼터 픽셀 보간 방법은 가로방향 보간과 세로방향 보간에 의한 제1, 2 쿼터 픽셀과 대각선 세로방향 보간에 의한 제3 쿼터 픽셀을 생성함으로써 완성된다. 아울러 본 발명의 영상처리를 위한 프로세서는 1/4 쿼터 픽 셀 보간 방법에 의해서 픽셀 정보의 데이터가 저장되는 제1 레지스터, 제2 레지스터, 제3 레지스터 및 그 이외의 레지스터를 포함한다. 또한 본 발명의 영상처리를 위한 프로세서는 SIMD 명령어를 제공하여 픽셀 정보를 효율적으로 연산처리를 수행할 수 있다.Accordingly, the quarter quarter pixel interpolation method of the present invention is completed by generating the first and second quarter pixels by the horizontal interpolation and the vertical interpolation and the third quarter pixels by the diagonal longitudinal interpolation. In addition, the processor for image processing of the present invention includes a first register, a second register, a third register, and other registers for storing data of pixel information by a quarter-quarter pixel interpolation method. In addition, the processor for image processing of the present invention can provide a SIMD instruction to efficiently perform pixel processing.

도 7a 내지 도 7c는 본 발명의 SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간과 와 JM Reference와의 수행시간을 비교하기 위한 그래프와 표이다.7A to 7C are graphs and tables for comparing the quarter-quarter pixel interpolation using the SIMD instruction of the present invention and the execution time of the JM Reference.

도 7a는 CIF(352×288) 영상에서 SIMD 명령어를 이용한 1/4 픽셀 보간 방법(710)과 JM Reference(700)의 평균 수행 시간을 나타내며, 도 7b는 QVGA(320×240) 영상에서 SIMD 명령어를 이용한 1/4 픽셀 보간 방법(730)과 JM Reference(720)의 평균 수행 시간을 나타낸다.FIG. 7A illustrates the average execution time of the 1/4 pixel interpolation method 710 and the JM Reference 700 using the SIMD instruction in the CIF (352 × 288) image, and FIG. 7B illustrates the SIMD instruction in the QVGA (320 × 240) image. Shows the average execution time of the 1/4 pixel interpolation method 730 and the JM Reference 720.

도 7a와 도 7b의 그래프에서와 같이, SIMD 명령어를 이용한 1/4 픽셀 보간 방법(710, 730)은 일반적인 방법인 JM Reference(700, 720)보다 평균 수행시간 면에서 처리속도가 빠름을 알 수 있다. 이를 도 7c의 표로서 정리할 수 있다. 즉, 도 7c에서와 같이, CIF 영상에서 Referenc는 0.2030의 평균 수행 시간을 가지고 있으며, SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간은 0.0115의 평균 수행 시간을 갖는다. 또한, QVGA 영상에서 Referenc는 0.1728의 평균 수행 시간을 가지며, SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간은 0.0090의 평균 수행 시간을 갖는다. 따라서, SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간은 JM Reference에서 사용되어진 방법에 비해 17배 정도 빠르게 수행될 수 있다. As shown in the graphs of FIGS. 7A and 7B, the 1 / 4-pixel interpolation methods 710 and 730 using the SIMD instruction are faster in processing time in terms of average execution time than the JM Reference 700 and 720, which is a general method. have. This can be summarized as a table of FIG. 7C. That is, as shown in FIG. 7C, Referenc has an average execution time of 0.2030 in the CIF image, and 1/4 quarter pixel interpolation using the SIMD instruction has an average execution time of 0.0115. In addition, Referenc has an average execution time of 0.1728 in the QVGA image, and quarter-quarter pixel interpolation using the SIMD instruction has an average execution time of 0.0090. Therefore, quarter-quarter pixel interpolation using SIMD instructions can be performed 17 times faster than the method used in the JM Reference.

이상에서 설명한 것과 같이, 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이며, 해당 분야에서 통상의 지식을 가진 자라면 누구나 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가 등이 가능할 것이고, 이러한 수정, 변경, 부가 등은 특허청구범위에 속하는 것으로 보아야 한다.As described above, preferred embodiments of the invention are disclosed for purposes of illustration, and any person skilled in the art may make various modifications, changes, additions, etc. within the spirit and scope of the present invention. Modifications, changes and additions should be considered to be within the scope of the claims.

상술한 바와 같이, 본 발명의 1/4 쿼터 픽셀 보간 방법은 SIMD 명령어를 이용해 가로방향 보간과 세로방향 보간을 수행함으로써, 연산량이 줄어 데이터 처리속도가 빠른 효과가 있다.As described above, the quarter quarter pixel interpolation method of the present invention performs horizontal interpolation and vertical interpolation using a SIMD instruction, thereby reducing the amount of computation and increasing the data processing speed.

또한, 본 발명의 SIMD 명령어를 이용한 1/4 쿼터 픽셀 보간은 JM Reference에서 사용되어진 방법에 비해 17배 정도 빠르게 수행되는 효과가 있다.In addition, the quarter-quarter pixel interpolation using the SIMD instruction of the present invention has the effect of performing about 17 times faster than the method used in the JM Reference.

또한, 본 발명의 1/4 쿼터 픽셀 보간 방법은 H.264/AVC의 부호화 및 복호화를 빠르게 수행할 수 있기 때문에 SIMD 명령어를 지원하는 다양한 환경에서 서비스할 수 있는 효과가 있다.In addition, the 1/4 quarter pixel interpolation method of the present invention can perform encoding and decoding of H.264 / AVC quickly, thereby serving a service in various environments supporting SIMD instructions.

Claims (10)

픽셀 단위로 표현되는 영상의 시간적 중복 데이터를 제거하기 위한 영상처리의 1/4 픽셀 보간 방법에 있어서,In a 1/4 pixel interpolation method of image processing for removing temporal redundant data of an image expressed in pixel units, 상기 픽셀 중 이웃하고 있는 정수 픽셀 정보를 이용하여 제1 하프 픽셀과 제1 쿼터 픽셀을 구하는 가로방향 보간 과정과;A horizontal interpolation process of obtaining a first half pixel and a first quarter pixel using neighboring integer pixel information among the pixels; 상기 가로방향 보간 후, 상기 가로방향 보간이 완료된 픽셀 정보를 이용하여 제2 하프 픽셀과 제2 쿼터 픽셀을 구하는 세로방향 보간 과정과;A longitudinal interpolation process of obtaining a second half pixel and a second quarter pixel by using the horizontally interpolated pixel information after the horizontal interpolation; 상기 가로방향 보간과 세로방향 보간을 수행 후 생성되는 제3 하프 픽셀과 제3 쿼터 픽셀 중 상기 가로방향에 위치하는 상기 제3 하프 픽셀과 대각선에 위치하는 상기 제3 하프 픽셀을 이용하여 제3 쿼터 픽셀을 구하는 대각선 세로방향 보간 과정을 포함하며, 상기 가로방향 보간과 세로 방향 보간 및 상기 대각선 세로방향 보간은 프로세서에서 지원되는 SIMD(Single Instruction Multiple Data) 명령어에 의해 수행되는 것을 특징으로 하는 영상처리의 1/4 픽셀 보간 방법.A third quarter by using the third half pixel positioned in the horizontal direction and the third half pixel positioned diagonally, among the third half pixel and the third quarter pixel generated after the horizontal interpolation and the vertical interpolation A diagonal longitudinal interpolation process for obtaining pixels, wherein the horizontal interpolation, the vertical interpolation, and the diagonal longitudinal interpolation are performed by a single instruction multiple data (SIMD) instruction supported by a processor. 1/4 pixel interpolation method. 제1항에 있어서,The method of claim 1, 상기 제1 하프 픽셀과 제2 하프 픽셀을 구하는 식은 The equation for obtaining the first half pixel and the second half pixel is b = (((G+H)*4-F-I)*5+E+J+16)/32 이고,b = (((G + H) * 4-F-I) * 5 + E + J + 16) / 32, h = ((G+M)*4-C-R)*5+A+T+16)/32이며,h = ((G + M) * 4-C-R) * 5 + A + T + 16) / 32. b 와 h는 상기 제1 하프 픽셀과 제2 하프 픽셀의 임의의 위치이며, 상기 A, C, E, F, G, H, I, J, M, R, T는 상기 b와 h의 이웃하고 있는 정수 픽셀의 위치인 것을 특징으로 하는 영상처리의 1/4 픽셀 보간 방법.b and h are arbitrary positions of the first half pixel and the second half pixel, and A, C, E, F, G, H, I, J, M, R, and T are neighbors of b and h. 1 / 4-pixel interpolation method of image processing, characterized in that the position of the integer pixel. 제1항에 있어서,The method of claim 1, 상기 가로방향 보간은The horizontal interpolation is 6탭 필터링을 할 수 있도록 소정의 정수 픽셀을 제1 레지스터에 저장하는 단계와;Storing a predetermined integer pixel in a first register to enable six-tap filtering; 상기 제1 레지스터에 저장된 데이터를 상기 6탭 필터링 연산을 수행하여 제1 하프 픽셀을 생성하는 단계와;Generating a first half pixel by performing the six tap filtering operation on data stored in the first register; 상기 제1 하프 픽셀과 상기 제1 하프 픽셀의 이웃하고 있는 정수 픽셀 중 임의의 정수 픽셀간의 평균값을 구하여 제1 쿼터 픽셀을 생성하는 단계를 포함하는 것을 특징으로 하는 영상처리의 1/4 픽셀 보간 방법.And generating a first quarter pixel by obtaining an average value between any integer pixel among the neighboring integer pixels of the first half pixel and the neighboring integer pixels of the first half pixel. . 제1항에 있어서,The method of claim 1, 상기 세로방향 보간은The longitudinal interpolation is 상기 가로방향 보간 후, 상기 가로방향 보간에서 구한 픽셀 정보 중, 제1 하프 픽셀과 상기 제1 하프 픽셀과 이웃하고 있는 정수 픽셀을 제2 레지스터에 저장하는 단계와;After the horizontal interpolation, storing a first half pixel and an integer pixel neighboring the first half pixel among second pixel information obtained from the horizontal interpolation in a second register; 상기 제2 레지스터에 저장된 데이터를 상기 6탭 필터링 연산을 수행하여 제2 하프 픽셀을 생성하는 단계와;Generating a second half pixel by performing the six tap filtering operation on data stored in the second register; 상기 제2 하프 픽셀과 상기 제2 하프 픽셀의 이웃하고 있는 정수 픽셀간의 평균값을 구하여 제2 쿼터 픽셀을 생성하는 단계를 포함하는 것을 특징으로 하는 영상처리의 1/4 픽셀 보간 방법.And generating a second quarter pixel by obtaining an average value between the second half pixel and a neighboring integer pixel of the second half pixel. 제1항에 있어서,The method of claim 1, 상기 대각선 세로방향 보간은 The diagonal longitudinal interpolation is 상기 가로방향에 위치하는 상기 제3 하프 픽셀과 대각선에 위치한 상기 제3 하프 픽셀의 값을 제3 레지스터에 저장하는 단계와;Storing a value of the third half pixel positioned in the horizontal direction and the third half pixel disposed in a diagonal line in a third register; 상기 가로방향에 위치하는 두 개의 제3 하프 픽셀의 값을 이용하여 상기 제3쿼터 픽셀의 중앙 픽셀 값을 구하는 단계와;Obtaining a center pixel value of the third quarter pixel using values of two third half pixels positioned in the horizontal direction; 상기 대각선에 위치한 상기 제3 하프 픽셀의 값을 이용하여 상기 제3 쿼터 픽셀의 중앙 값을 제외한 나머지 픽셀의 값을 구하는 단계를 포함하는 것을 특징으로 하는 영상처리의 1/4 쿼터픽셀 보간 방법.And calculating a value of the remaining pixels excluding the center value of the third quarter pixel by using the value of the third half pixel positioned on the diagonal line. 삭제delete 삭제delete 픽셀 단위로 표현되는 영상의 시간적 중복 데이터를 제거하는 1/4 픽셀 보간 방법이 수행하는 영상처리를 위한 프로세서에 있어서,A processor for image processing performed by a 1/4 pixel interpolation method of removing temporal redundant data of an image expressed in pixel units, 상기 픽셀 중 이웃하고 있는 정수 픽셀 정보를 이용하여 제1 하프 픽셀과 제1 쿼터 픽셀을 구하는 가로방향 보간; 및A horizontal interpolation for obtaining a first half pixel and a first quarter pixel using neighboring integer pixel information among the pixels; And 상기 가로방향 보간 후, 상기 가로방향 보간이 완료된 픽셀 정보를 이용하여 제2 하프 픽셀과 제2 쿼터 픽셀을 구하는 세로방향 보간을 수행하며, 상기 가로방향 보간 및 세로방향 보간은 프로세서에서 지원되는 SIMD(Single Instruction Multiple Data) 명령어에 의해 수행되는 것을 특징으로 하는 영상처리를 위한 프로세서.After the horizontal interpolation, vertical interpolation is performed to obtain a second half pixel and a second quarter pixel by using the pixel information on which the horizontal interpolation is completed, and the horizontal interpolation and the vertical interpolation are performed using a SIMD supported by a processor. Processor for image processing, characterized in that performed by a Single Instruction Multiple Data) command. 삭제delete 제8항에 있어서,The method of claim 8, 상기 가로방향 보간과 세로방향 보간을 수행 후 생성되는 제3 하프 픽셀과 제3 쿼터 픽셀 중 가로방향에 위치하는 두 개의 상기 제3 하프 픽셀 사이와 대각선에 위치하는 두 개의 상기 제3 하프 픽셀의 사이에 존재하는 제3 쿼터 픽셀을 더 구하여 수행되는 것을 특징으로 하는 영상처리를 위한 프로세서.Between the third half pixel generated after performing the horizontal interpolation and the vertical interpolation, between the third half pixels positioned in the horizontal direction and between the third half pixels positioned diagonally. And further obtains a third quarter pixel existing in the processor.
KR1020060092851A 2006-09-25 2006-09-25 1/4 quarter pixel interpolation method for imaging process and processor thereof KR100804451B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060092851A KR100804451B1 (en) 2006-09-25 2006-09-25 1/4 quarter pixel interpolation method for imaging process and processor thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060092851A KR100804451B1 (en) 2006-09-25 2006-09-25 1/4 quarter pixel interpolation method for imaging process and processor thereof

Publications (1)

Publication Number Publication Date
KR100804451B1 true KR100804451B1 (en) 2008-02-20

Family

ID=39382344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060092851A KR100804451B1 (en) 2006-09-25 2006-09-25 1/4 quarter pixel interpolation method for imaging process and processor thereof

Country Status (1)

Country Link
KR (1) KR100804451B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014163454A1 (en) * 2013-04-05 2014-10-09 삼성전자주식회사 Interlayer video encoding method and apparatus and interlayer video decoding method and apparatus for compensating luminance difference
KR20190091431A (en) * 2019-07-29 2019-08-06 아이디어허브 주식회사 Method and apparatus for image interpolation having quarter pixel accuracy using intra prediction modes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084366A (en) 1999-07-15 2001-03-30 Sharp Corp Image interpolation device
KR20040036902A (en) * 2001-09-17 2004-05-03 노키아 코포레이션 Method for sub-pixel value interpolation
KR20050112891A (en) * 2004-05-28 2005-12-01 삼성전자주식회사 Apparatus of image interpolation
JP2006180509A (en) 2004-12-21 2006-07-06 Stmicroelectronics Inc Method and system for fast implementation of subpixel interpolation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084366A (en) 1999-07-15 2001-03-30 Sharp Corp Image interpolation device
KR20040036902A (en) * 2001-09-17 2004-05-03 노키아 코포레이션 Method for sub-pixel value interpolation
KR20050112891A (en) * 2004-05-28 2005-12-01 삼성전자주식회사 Apparatus of image interpolation
JP2006180509A (en) 2004-12-21 2006-07-06 Stmicroelectronics Inc Method and system for fast implementation of subpixel interpolation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014163454A1 (en) * 2013-04-05 2014-10-09 삼성전자주식회사 Interlayer video encoding method and apparatus and interlayer video decoding method and apparatus for compensating luminance difference
KR20190091431A (en) * 2019-07-29 2019-08-06 아이디어허브 주식회사 Method and apparatus for image interpolation having quarter pixel accuracy using intra prediction modes
KR102111437B1 (en) 2019-07-29 2020-05-15 아이디어허브 주식회사 Method and apparatus for image interpolation having quarter pixel accuracy using intra prediction modes

Similar Documents

Publication Publication Date Title
US7653132B2 (en) Method and system for fast implementation of subpixel interpolation
EP2779647B1 (en) Image encoding method and image encoding device
US8428396B2 (en) Image interpolation method and apparatus, and method for obtaining interpolation coefficients
JP4739651B2 (en) Apparatus and method for realizing high-precision intermediate pixel high-speed search in video encoding
US9118927B2 (en) Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8135224B2 (en) Generating image data
JP2010514300A (en) Method for decoding a block of a video image
US6909750B2 (en) Detection and proper interpolation of interlaced moving areas for MPEG decoding with embedded resizing
KR100804451B1 (en) 1/4 quarter pixel interpolation method for imaging process and processor thereof
JP5464803B2 (en) Motion estimation of interlaced video images
WO2019085636A1 (en) A video image processing method and device
US20140314154A1 (en) Video encoding device, video encoding method, and program
US20100177827A1 (en) Sub-pixel generating apparatus, sub-pixel generating method and storage medium, as well as motion compensating apparatus
JP2000041260A (en) Image decoder and image decoding method
Aiyar et al. A high-performance and high-precision sub-pixel motion estimator-interpolator for real-time HDTV (8K) in MPEGH/HEVC coding
KR101368732B1 (en) Apparatus for estimating motion for h.264/avc encoder with high performance and method thereof
JP2014057198A (en) Image processor, image processing system and image processing method
JP2011249986A (en) Motion compensation apparatus
Wu et al. Combined adaptive-fixed interpolation with multi-directional filters
Zhang et al. Up-sampling oriented frame rate reduction
Aiyar et al. A 2260 GOPS high-performance and high-precision sub-pixel motion estimator-interpolator for real-time 8K UHDTV for HEVC coding in next generation wireless multimedia applications
KR100961636B1 (en) Method for motion estimating for plurality of moving picture encoding type and motion picture encoder using for the same
Zatt et al. HP422-MoCHA: a H. 264/AVC High profile motion compensation architecture for HDTV
Chang et al. Design of luma and chroma sub-pixel interpolator for H. 264 fractional motion estimation
Aiyar et al. A high-precision and highly accurate sub-pixel motion estimator-interpolator for high-performance High Efficiency Video Coding (HEVC) in next generation HDTV applications

Legal Events

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

Payment date: 20120326

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee