KR100672376B1 - Motion compensation method - Google Patents

Motion compensation method Download PDF

Info

Publication number
KR100672376B1
KR100672376B1 KR1020050004560A KR20050004560A KR100672376B1 KR 100672376 B1 KR100672376 B1 KR 100672376B1 KR 1020050004560 A KR1020050004560 A KR 1020050004560A KR 20050004560 A KR20050004560 A KR 20050004560A KR 100672376 B1 KR100672376 B1 KR 100672376B1
Authority
KR
South Korea
Prior art keywords
blockpos
block
refposul
refposlr
blocksize
Prior art date
Application number
KR1020050004560A
Other languages
Korean (ko)
Other versions
KR20060083665A (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 KR1020050004560A priority Critical patent/KR100672376B1/en
Publication of KR20060083665A publication Critical patent/KR20060083665A/en
Application granted granted Critical
Publication of KR100672376B1 publication Critical patent/KR100672376B1/en

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B13/00Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates
    • F03B13/12Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy
    • F03B13/14Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy
    • F03B13/16Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem"
    • F03B13/18Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore
    • F03B13/1845Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom slides relative to the rem
    • F03B13/1855Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom slides relative to the rem where the connection between wom and conversion system takes tension and compression
    • F03B13/186Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom slides relative to the rem where the connection between wom and conversion system takes tension and compression the connection being of the rack-and-pinion type
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B63SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
    • B63BSHIPS OR OTHER WATERBORNE VESSELS; EQUIPMENT FOR SHIPPING 
    • B63B35/00Vessels or similar floating structures specially adapted for specific purposes and not otherwise provided for
    • B63B35/28Barges or lighters
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B13/00Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates
    • F03B13/12Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy
    • F03B13/14Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy
    • F03B13/16Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem"
    • F03B13/18Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore
    • F03B13/1805Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom is hinged to the rem
    • F03B13/181Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom is hinged to the rem for limited rotation
    • F03B13/1815Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using wave energy using the relative movement between a wave-operated member, i.e. a "wom" and another member, i.e. a reaction member or "rem" where the other member, i.e. rem is fixed, at least at one point, with respect to the sea bed or shore and the wom is hinged to the rem for limited rotation with an up-and-down movement
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B17/00Other machines or engines
    • F03B17/02Other machines or engines using hydrostatic thrust
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F05INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
    • F05BINDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
    • F05B2220/00Application
    • F05B2220/30Application in turbines
    • F05B2220/32Application in turbines in water turbines
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F05INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
    • F05BINDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
    • F05B2240/00Components
    • F05B2240/90Mounting on supporting structures or systems
    • F05B2240/93Mounting on supporting structures or systems on a structure floating on a liquid surface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E10/00Energy generation through renewable energy sources
    • Y02E10/20Hydro energy
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E10/00Energy generation through renewable energy sources
    • Y02E10/30Energy from the sea, e.g. using wave energy or salinity gradient

Abstract

본 발명은 하나의 매크로 블록이 움직임 보상을 위해 적어도 한 개 이상의 서브 블록으로 분할된 디지털 영상의 움직임 보상 방법에 관한 것이다. 특히 본 발명은 하나의 매크로 블록 내 각 서브 블록별로 그 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표값과 그 참조 블록의 크기를 구하는 단계와, 상기 참조 블록의 좌상단 좌표값과 크기 정보를 이용하여 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 구하는 단계와, 상기 단계에서 구한 사각 영역을 한번에 페치하여 하나의 매크로 블록에 대한 움직임 보상을 수행하는 단계를 포함하여 이루어진다. 따라서 본 발명은 움직임 보상시 매크로블록당 움직임 벡터의 수와 상관없이 메모리 접근 횟수를 줄일 수 있다.The present invention relates to a motion compensation method of a digital image in which one macro block is divided into at least one subblock for motion compensation. In particular, the present invention is to obtain the upper left coordinate value of the reference block and the size of the reference block of the reference block referenced by each sub block in one macro block, and using the upper left coordinate value and size information of the reference block Obtaining a rectangular region union of the reference blocks of the pictures referred to by the sub-blocks in the macroblock, and fetching the rectangular region obtained in the step at a time to perform motion compensation on one macroblock. . Therefore, the present invention can reduce the number of memory accesses in motion compensation regardless of the number of motion vectors per macroblock.

움직임 보상, 참조 블록Motion compensation, reference block

Description

움직임 보상 방법{Motion compensation method}Motion compensation method

도 1의 (a) 내지 (h)는 H.264에서 다양한 크기의 움직임 보상을 위한 매크로 블록의 분할 예를 보인 일반적인 도면1 (a) to (h) is a general diagram showing an example of segmentation of macro blocks for motion compensation of various sizes in H.264

도 2는 H.264에서 움직임 보상을 위해 하나의 매크로 블록을 5개의 서브 블록으로 분할한 예를 보인 도면2 illustrates an example of dividing one macro block into five sub blocks for motion compensation in H.264

도 3은 도 2와 같이 분할된 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합의 사각 영역을 구한 본 발명의 도면FIG. 3 is a diagram illustrating a rectangular region of a union of reference blocks of a picture referred to by motion vectors in a divided macroblock as shown in FIG. 2; FIG.

본 발명은 움직임 보상 방법에 관한 것으로서, 특히 매크로 블록이 다수개의 움직임 벡터를 가질 때 메모리 접근 횟수를 줄이도록 하는 움직임 보상 방법에 관한 것이다. The present invention relates to a motion compensation method, and more particularly, to a motion compensation method for reducing the number of memory accesses when a macro block has a plurality of motion vectors.

동영상 혹은 정지영상을 압축 부호화하기 위한 다양한 기술들과 표준안들이 제시되고 있으며, 동영상 혹은 정지영상을 압축 부호화하기 위한 표준안들에서는 보다 효율적이고 높은 성능으로 영상을 압축 부호화하는 것을 궁극의 목적으로 두고 있다.Various techniques and standards for compressing video or still images have been proposed. The standards for compressing video and still images have the ultimate purpose of compressing and encoding video with more efficient and higher performance.

현재 동영상 혹은 정지영상 등의 영상 부호화에 관련된 표준안으로 MPEG-2, MPEG-4, VC-9 및 H.264 등이 제안되었거나 채택되고 있다.Currently, MPEG-2, MPEG-4, VC-9, and H.264 have been proposed or adopted as standards related to video encoding of moving pictures or still images.

특히 동영상 정보의 압축에 사용되어지는 최근의 코덱들은 시간축으로 정보량을 압축하기 위해서 움직임 벡터를 이용한 움직임 보상을 하고 있다. 이러한 움직임 보상은 블록 사이즈가 작아질수록 코딩되어 전송되어져야 하는 에러 정보가 작아져서 효율적이 된다.In particular, recent codecs used for compressing video information compensate for motion using motion vectors to compress the amount of information on the time axis. This motion compensation is efficient because the smaller the block size, the smaller the error information to be coded and transmitted.

상기 움직임 보상 과정은 화면을 일정한 크기의 매크로 블록 또는 서브 블록 단위로 나누고, 각 단위 블록마다 움직임 벡터를 구하고 이를 이용하여 움직임 보상을 수행하여 참조 블록을 얻는 것이다. 그리고 현 블록과 움직임 보상에 의해 얻어진 참조 블록 간 차이만을 부호화한 후 움직임 벡터와 함께 전송함으로써, 데이터 량을 크게 줄일 수 있다. 즉 이러한 움직임 보상 방법은 프레임 간에 존재하는 중복성을 제거하여 압축 효율을 높일 수 있다. The motion compensation process divides a screen into macroblocks or subblocks of a predetermined size, obtains a motion vector for each unit block, and performs motion compensation using the same to obtain a reference block. The amount of data can be greatly reduced by encoding only the difference between the current block and the reference block obtained by motion compensation and then transmitting the motion vector together with the motion vector. In other words, the motion compensation method can increase compression efficiency by removing redundancy existing between frames.

도 1의 (a) 내지 (h)는 16x16 크기를 가지는 매크로 블록을 다양한 크기의 움직임 보상을 위해 더 작은 단위의 서브 블록들로 분할하는 예를 보이고 있다. 도 1의 (a)는 16x16 크기의 매크로 블록을 보이고 있다. 도 1의 (b)는 도 1의 (a)의 매크로 블록을 수평 방향으로 분할한 예를 보이고, 도 1의 (c)는 수직 방향으로 분할한 예를 보이며, 도 1의 (d)는 수평과 수직으로 각각 분할한 예이다. 즉 도 1의 (a)의 매크로 블록이 도 1의 (d)와 같이 4개의 서브 블록으로 분할된다. 1 (a) to (h) show an example of dividing a macroblock having a size of 16 × 16 into subblocks of smaller units for motion compensation of various sizes. Figure 1 (a) shows a macroblock of size 16x16. FIG. 1B shows an example of dividing the macroblock of FIG. 1A in the horizontal direction, FIG. 1C shows an example of dividing the macro block in the vertical direction, and FIG. This is an example of splitting vertically and vertically. That is, the macro block of FIG. 1A is divided into four sub blocks as shown in FIG. 1D.

도 1의 (e)는 도 1의 (d)의 4개의 서브 블록 중 하나를 나타낸다. 도 1의 (f)는 도 1의 (e)의 서브 블록을 수평 방향으로 분할한 예를 보이고, 도 1의 (g)는 수직 방향으로 분할한 예를 보이며, 도 1의 (h)는 수평과 수직으로 각각 분할한 예이다. 즉 도 1의 (a)의 매크로 블록이 도 1의 (h)와 같이 16개의 서브 블록으로 분할된다. FIG. 1E illustrates one of four subblocks of FIG. 1D. FIG. 1F shows an example of dividing the sub-block of FIG. 1E in the horizontal direction, FIG. 1G shows an example of dividing the sub block in the vertical direction, and FIG. This is an example of splitting vertically and vertically. That is, the macro block of FIG. 1A is divided into 16 sub blocks as shown in FIG. 1H.

그리고 움직임 보상 단위는 압축 표준에 따라 도 1의 (a) 내지 (h)의 하나가 되며, 각 블록당 하나의 움직임 벡터가 있게 된다. The motion compensation unit is one of (a) to (h) of FIG. 1 according to the compression standard, and there is one motion vector for each block.

예를 들어, 도 1의 (d)와 같이 8x8 서브 블록 단위로 움직임 보상을 하려면 4개의 움직임 벡터를 가지게 된다. 그리고 도 1의 (h)와 같이 4x4 서브 블록 단위로 움직임 보상을 하려면 16개의 움직임 벡터를 가지게 된다. For example, as shown in (d) of FIG. 1, four motion vectors are provided to compensate for motion in units of 8 × 8 subblocks. In addition, as shown in (h) of FIG. 1, the motion compensation is performed in units of 4 × 4 subblocks and has 16 motion vectors.

즉 기존 MPEG-1, MPEG-2의 경우 도 1의 (a)와 같이 16x16 크기를 가지는 매크로 블록당 움직임 보상을 수행하므로 1개의 움직임 벡터를 가진다. 그리고 MPEG-4, VC-9의 경우, 도 1의 (a) 내지 (d)와 같이 4개까지의 움직임 벡터를 가진다. 또한 H.264의 경우는 16개까지의 움직임 벡터를 가지게 된다.That is, in the case of the conventional MPEG-1 and MPEG-2, as shown in FIG. In the case of MPEG-4 and VC-9, up to four motion vectors are provided as shown in FIGS. 1A to 1D. In addition, H.264 has up to 16 motion vectors.

이때 움직임 보상을 위해서는 움직임 벡터를 이용하여 메모리 내 참조 픽처(Reference Picture)로부터 영상을 페치(fetch) 해 와야 하는데, 매크로 블록당 움직임 벡터의 수가 많아지는 경우 각 페치되어지는 블록의 사이즈는 작아지지만 페치 횟수는 증가하게 된다.At this time, to compensate for motion, images must be fetched from a reference picture in memory by using a motion vector. When the number of motion vectors per macro block increases, the size of each fetched block becomes small but fetches. The number is increased.

일반적으로 참조 픽처는 외부 메모리에 위치하게 된다. 그러므로 이러한 경우 메모리 접근때마다 오버헤드(Overhead)를 가지게 되는 문제점이 있게 된다. In general, the reference picture is located in the external memory. Therefore, in this case, there is a problem in that there is an overhead in each memory access.

본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 매크로 블록이 다수개의 움직임 벡터를 가질 때 메모리 접근 횟수를 줄이도록 하는 움직임 보상 방법을 제공하는데 있다.SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and an object of the present invention is to provide a motion compensation method for reducing the number of memory accesses when a macro block has a plurality of motion vectors.

상기 목적을 달성하기 위하여, 본 발명에 따른 움직임 보상 방법은, In order to achieve the above object, the motion compensation method according to the present invention,

하나의 매크로 블록이 움직임 보상을 위해 적어도 한 개 이상의 서브 블록으로 분할된 디지털 영상의 움직임 보상 방법에 있어서, In the motion compensation method of a digital image in which one macro block is divided into at least one sub block for motion compensation,

(a) 하나의 매크로 블록 내 각 서브 블록별로 그 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표값과 그 참조 블록의 크기를 구하는 단계;(a) obtaining a coordinate value of an upper left corner of a reference block of a picture referenced by the subblock and the size of the reference block for each subblock in one macroblock;

(b) 상기 참조 블록의 좌상단 좌표값과 크기 정보를 이용하여 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역의 합집합 부분을 구하는 단계; 및obtaining a union of the rectangular regions of the reference blocks of the reference blocks of the pictures referred to by the sub-blocks in the macro block using the upper left coordinate values and the size information of the reference block; And

(c) 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 한번에 페치하여 하나의 매크로 블록에 대한 움직임 보상을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 한다.(c) fetching a rectangular region union of the reference blocks of the pictures referred to by the sub-blocks in the macro block at a time to perform motion compensation on one macro block.

상기 (a) 단계는 상기 각 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표 값은 그 서브 블록의 움직임 벡터로 구하는 것을 특징으로 한다.In the step (a), the upper left coordinate value of the reference block of the picture referred to by each sub block is obtained as a motion vector of the sub block.

본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.Other objects, features and advantages of the present invention will become apparent from the following detailed description of embodiments taken in conjunction with the accompanying drawings.

이하 상기의 목적을 구체적으로 실현할 수 있는 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 설명한다. 이때 도면에 도시되고 또 이것에 의해서 설 명되는 본 발명의 구성과 작용은 적어도 하나의 실시예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention that can specifically realize the above object will be described. At this time, the configuration and operation of the present invention shown in the drawings and described by it will be described as at least one embodiment, by which the technical spirit of the present invention and its core configuration and operation is not limited. .

본 발명은 하나의 매크로 블록이 가지는 서브 블록들, 즉 움직임 벡터들이 참조하는 픽처의 참조 블록들의 사각(square) 영역 합집합 부분을 구함으로써, 이 영역을 DMA 등을 이용하여 한번에 페치하도록 하는 데 있다. The present invention is to fetch a single region using a DMA or the like by obtaining a square region union of sub-blocks of one macro block, that is, reference blocks of pictures referenced by motion vectors.

즉, 전술한 바와 같이 하나의 매크로 블록은 움직임 보상을 위해 적어도 한 개 이상의 서브 블록으로 분할된다. 그리고 그 매크로 블록에는 분할된 서브 블록의 수만큼 움직임 벡터가 존재하게 된다. That is, as described above, one macro block is divided into at least one sub block for motion compensation. In the macroblock, motion vectors exist as many as the number of divided subblocks.

이때 하나의 매크로 블록 내 움직임 보상을 위해 분할된 서브 블록들이 참조하는 픽쳐의 참조 블록들의 합집합 부분은 다음 pseudo code에 의해 구한다.In this case, the union of the reference blocks of the pictures referred to by the divided subblocks for motion compensation in one macroblock is obtained by the following pseudo code.

for (i=0; i<NumBlocks; i++) {for (i = 0; i <NumBlocks; i ++) {

if (i==0) {if (i == 0) {

RefPosUL.x = BlockPos[i].x;RefPosUL.x = BlockPos [i] .x;

RefPosUL.y = BlockPos[i].y;RefPosUL.y = BlockPos [i] .y;

RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1;

RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1;

} else {} else {

if (BlockPos[i].x < RefPosUL.x) RefPosUL.x = BlockPos[i].x;if (BlockPos [i] .x <RefPosUL.x) RefPosUL.x = BlockPos [i] .x;

if (BlockPos[i].y < RefPosUL.y) RefPosUL.y = BlockPos[i].y;if (BlockPos [i] .y <RefPosUL.y) RefPosUL.y = BlockPos [i] .y;

if ((BlockPos[i].x + BlockSize[i].x - 1) > RefPosLR.x);if ((BlockPos [i] .x + BlockSize [i] .x-1)> RefPosLR.x);

RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1;

if ((BlockPos[i].y + BlockSize[i].y - 1) > RefPosLR.y);if ((BlockPos [i] .y + BlockSize [i] .y-1)> RefPosLR.y);

RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1;

}}

}}

상기 pseudo code에서 각 변수의 뜻은 다음과 같다. Meaning of each variable in the pseudo code is as follows.

NumBlocks : 매크로블록이 가지는 하위 서브 블록의 수 NumBlocks : Number of lower subblocks of macroblock

RefPosUL.x RefPosUL.y : 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합 영역의 좌상단 좌표 RefPosUL.x RefPosUL.y : Coordinates of the upper left corner of the union of reference blocks of pictures referenced by motion vectors in a macro block

RefPosLR.x RefPosLR.y : 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합 영역의 우하단 좌표 RefPosLR.x RefPosLR.y : Lower right coordinate of the union of reference blocks of pictures referenced by motion vectors in one macro block

BlockPos.x BlockPos.y : 하나의 매크로 블록 내 움직임 벡터들 중 하나의 움직임 벡터가 참조하는 픽쳐의 참조 블록의 좌상단 좌표 BlockPos.x BlockPos.y : Coordinates of the upper left corner of the reference block of the picture referenced by one of the motion vectors in one macro block

H.264 표준에서 움직임 벡터가 소수점 값을 가지는 경우 BlockPos.x BlockPos.y로 (참조 포인터- 2)의 값이 설정되어진다.In the H.264 standard, when the motion vector has a decimal point, the value of (reference pointer-2) is set to BlockPos.x BlockPos.y .

BlockSize.x BlockSize.y : 하나의 매크로 블록 내 움직임 벡터들 중 하나의 움직임 벡터가 참조하는 픽쳐에서 읽어들일 참조 블록의 크기 BlockSize.x BlockSize.y : Size of the reference block to be read from the picture referenced by one of the motion vectors in one macro block

상기 H.264 표준에서 움직임 벡터가 소수점 값을 가지는 경우 BlockSize.x BlockSize.y에 5 픽셀이 더 필요하다.In the H.264 standard, when the motion vector has a decimal point value, 5 pixels are required for BlockSize.x BlockSize.y .

도 2는 상기 H.264 표준에서 다양한 크기의 움직임 보상을 위한 매크로 블록의 분할 예를 보인 것으로서, 하나의 매크로 블록이 2개의 4x8 서브 블록(0,1), 3개의 8x8 서브 블록(2,3,4)으로 분할된 예이다. FIG. 2 shows an example of splitting a macroblock for motion compensation of various sizes in the H.264 standard, in which one macroblock includes two 4x8 subblocks (0,1) and three 8x8 subblocks (2,3). Is divided into 4).

이 경우 하나의 매크로 블록에는 5개의 움직임 벡터가 존재하게 된다. In this case, five motion vectors exist in one macroblock.

도 3은 도 2와 같이 분할된 각 서브 블록에서 참조하는 픽쳐의 참조 블록들과 움직임 벡터의 예를 보인 것으로서, 각 참조 블록의 크기와 움직임 벡터를 상기된 pseudo code에 적용하여 하나의 매크로 블록이 가지는 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합의 사각 영역을 구하여 굵은 실선으로 표시하고 있다. 상기 움직임 벡터 값은 참조 블록의 좌상단 좌표를 나타낸다. 3 illustrates an example of reference blocks and a motion vector of a picture referred to in each of the divided subblocks as shown in FIG. 2, by applying a size and a motion vector of each reference block to the above-described pseudo code. The rectangular regions of the union of the reference blocks of the pictures referred to by the motion vectors are obtained and displayed in bold solid lines. The motion vector value represents the upper left coordinate of the reference block.

도 2의 경우는 하나의 매크로 블록이 다섯 개의 서브 블록으로 분할되었으므로 상기 pseudo code에서 Numblocks는 5이고, i 값은 0부터 4까지 증가된다. In the case of FIG. 2, since one macroblock is divided into five subblocks, Numblocks is 5 in the pseudo code, and an i value is increased from 0 to 4.

상기 i 값은 하나의 매크로 블록 내 움직임 보상을 위해 분할된 서브 블록들의 인덱스를 나타낸다. The i value represents an index of sub-blocks divided for motion compensation in one macro block.

먼저, 상기 도 2의 매크로 블록에서 i 값이 0인 서브 블록이 참조하는 픽쳐 내 참조 블록의 좌상단 좌표(즉, 움직임 벡터 값)와 블록 크기로 상기 RefPosUL.x, RefPosUL.y, RefPosLR.x, 및 RefPosLR.y 값을 초기화한다. First, in the macroblock of FIG. 2, the RefPosUL.x, RefPosUL.y, RefPosLR.x, RefPosUL.x, RefPosUL.y, RefPosUL.y, RefPosUL.y, RefPosLR.x, And RefPosLR.y value.

즉, 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합의 사각 영역의 좌상단 x 좌표 값 RefPosUL.x은 i가 0인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 x 좌표값 BlockPos[0].x으로 설정되고, 상기 참조 블록들의 합집합의 사각 영역의 좌상단 y 좌표 값 RefPosUL.y은 i가 0인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 y 좌표값 BlockPos[0].y으로 설정된다. That is, the upper left x coordinate value RefPosUL.x of the rectangular region of the union of the reference blocks of the pictures referred to by the motion vectors in one macro block, RefPosUL.x, is the upper left x coordinate value BlockPos [of the reference block of the picture referred to by the subblock whose i is 0. Is set to 0] .x, and the upper left y coordinate value RefPosUL.y of the rectangular area of the union of the reference blocks is the upper left y coordinate value BlockPos [0] .y of the reference block of the picture referenced by the sub-block i is 0. Is set.

그리고 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 합집합의 우하단 x 좌표 값 RefPosLR.x은 i가 0인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 x 좌표값 BlockPos[0].x에 그 참조 블록의 수평 크기 BlockSize[0].x - 1을 더한 값으로 설정된다. 또한 상기 참조 블록들의 합집합의 사각 영역의 우하단 y 좌표 값 RefPosLR.y은 i가 0인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 y 좌표값 BlockPos[0].y에 그 참조 블록의 수직 크기 BlockSize[0].y - 1을 더한 값으로 설정된다.The lower right x coordinate value RefPosLR.x of the union of the reference blocks of the pictures referred to by the motion vectors in one macro block is the upper left x coordinate value BlockPos [0] of the reference block of the picture referred to by the subblock whose i is zero. It is set to x plus the horizontal size of the reference block, BlockSize [0] .x-1. In addition, the lower right y coordinate value RefPosLR.y of the rectangular area of the union of the reference blocks is the vertical size of the reference block at the upper left y coordinate value BlockPos [0] .y of the reference block of the picture referred to by the subblock whose i is 0. BlockSize [0] .y-set to 1 plus

그리고 i를 1 증가시킨 후 i=1인 서브 블록의 움직임 벡터와 상기 서브 블록이 참조하는 픽쳐의 참조 블록의 크기가 상기 pseudo code 조건을 만족하면 상기 RefPosUL.x, RefPosUL.y, RefPosLR.x, 및 RefPosLR.y 값을 갱신한다.After increasing i by 1, if the motion vector of the subblock i = 1 and the size of the reference block of the picture referenced by the subblock satisfy the pseudo code condition, the RefPosUL.x, RefPosUL.y, RefPosLR.x, And RefPosLR.y value.

즉, i가 1인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 x 좌표 값 BlockPos[1].x이 상기 참조 블록들의 합집합의 사각 영역의 좌상단 x 좌표 값RefPosUL.x보다 작으면 상기 RefPosUL.x 값을 BlockPos[1].x 값으로 갱신한다(RefPosUL.x = BlockPos[1].x). That is, if the upper left x coordinate value BlockPos [1] .x of the reference block of the picture referenced by the subblock i is 1 is smaller than the upper left x coordinate value RefPosUL.x of the rectangular region of the union of the reference blocks, the RefPosUL.x. Update the value to the value BlockPos [1] .x (RefPosUL.x = BlockPos [1] .x).

마찬가지로 i가 1인 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 y 좌표 값 BlockPos[1].y이 상기 참조 블록들의 합집합의 사각 영역의 좌상단 y 좌표 값 RefPosUL.y보다 작으면 상기 RefPosUL.y 값을 BlockPos[1].y 값으로 갱신한다(RefPosUL.y = BlockPos[1].y). Similarly, if the upper left y coordinate value BlockPos [1] .y of the reference block of the picture referenced by the subblock i is 1 is smaller than the upper left y coordinate value RefPosUL.y of the rectangular region of the union of the reference blocks, the RefPosUL.y value Is updated to the value BlockPos [1] .y (RefPosUL.y = BlockPos [1] .y).

그리고 i가 1인 서브 블록이 참조하는 픽쳐의 참조 블록의 BlockPos[1].x+ BlockSize[1].x이 상기 참조 블록들의 합집합의 사각 영역의 우하단 x 좌표 값RefPosLR.x보다 크면 상기 RefPosLR.x 값을 BlockPos[1].x + BlockSize[1].x - 1 값으로 갱신한다(RefPosLR.x = BlockPos[1].x + BlockSize[1].x - 1). RefPosLR if BlockPos [1] .x + BlockSize [1] .x of the reference block of the picture referred to by the subblock of which i is 1 is larger than the right bottom x coordinate value RefPosLR.x of the rectangular region of the union of the reference blocks. Update the value of x to the value BlockPos [1] .x + BlockSize [1] .x-1 (RefPosLR.x = BlockPos [1] .x + BlockSize [1] .x-1).

마찬가지로 i가 1인 서브 블록이 참조하는 픽쳐의 참조 블록의 BlockPos[1].y + BlockSize[1].y이 상기 참조 블록들의 합집합 부분의 우하단 y 좌표값 RefPosLR.y보다 크면 상기 RefPosLR.y 값을 BlockPos[1].y + BlockSize[1].y -1 값으로 갱신한다(RefPosLR.y = BlockPos[1].y + BlockSize[1].y - 1). Similarly, if BlockPos [1] .y + BlockSize [1] .y of the reference block of the picture referenced by the subblock with i equal to 1 is larger than the lower right y coordinate value RefPosLR.y of the union of the reference blocks, the RefPosLR.y Update the value to the value BlockPos [1] .y + BlockSize [1] .y -1 (RefPosLR.y = BlockPos [1] .y + BlockSize [1] .y-1).

이러한 과정을 하나의 매크로 블록에서 분할된 모든 서브 블록에 대해 순차적으로 수행하면 도 3과 같이 상기 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합이 구해진다. These processes When sequentially performed on all sub-blocks divided in one macro block, as shown in FIG. 3, a rectangular region union of reference blocks of pictures referred to by motion vectors in the macro block is obtained.

그리고 움직임 보상시 하나의 매크로 블록 내 서브 블록 단위로 참조 블록을 불러오는 것이 아니라 하나의 매크로 블록에 대해서는 분할되는 서브 블록의 수에 관계없이 상기 참조 픽쳐들의 사각 영역 합집합을 DMA 등을 이용하여 한번에 불러오면 된다. In case of motion compensation, instead of calling reference blocks in units of sub-blocks in one macro block, a rectangular region union of the reference pictures is called at a time by using DMA, regardless of the number of sub-blocks divided for one macro block. do.

따라서 본 발명은 H.264/MPEG-4/VC-9/MPEG-2에서의 움직임 보상시 사용되어 질 수 있으며, 매크로 블록당 움직임 벡터의 수와 상관없이 메모리 접근 횟수를 줄일 수 있다.Therefore, the present invention can be used for motion compensation in H.264 / MPEG-4 / VC-9 / MPEG-2, and the number of memory accesses can be reduced regardless of the number of motion vectors per macroblock.

본 발명에 따른 하나의 매크로블록이 가지는 움직임 벡터들이 참조하는 픽쳐(Reference Picture)의 참조 블록들의 사각 영역 합집합을 구하는 알고리즘은 하드웨어(Hardware)로도 구현되어질 수 있다.An algorithm for obtaining a rectangular region union of reference blocks of a picture referenced by motion vectors of one macroblock according to the present invention may also be implemented in hardware.

그리고 이렇게 구해진 하나의 매크로블록이 참조하는 영역이 읽어들일 수 있는 메모리 버퍼의 사이즈보다 클 때는 서브 파티션되어져 읽어들일 수 있다.When the area referred to by the macroblock thus obtained is larger than the size of the memory buffer that can be read, the macroblock may be subpartitioned and read.

한편, 본 발명에서 사용되는 용어(terminology)들은 본 발명에서의 기능을 고려하여 정의 내려진 용어들로써 이는 당분야에 종사하는 기술자의 의도 또는 관례 등에 따라 달라질 수 있으므로 그 정의는 본 발명의 전반에 걸친 내용을 토대로 내려져야 할 것이다. On the other hand, the terms used in the present invention (terminology) are terms defined in consideration of the functions in the present invention may vary according to the intention or practice of those skilled in the art, the definitions are the overall contents of the present invention It should be based on.

본 발명을 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가지 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속한다. The present invention is not limited to the above-described embodiments, and can be modified by those skilled in the art as can be seen from the appended claims, and such modifications are within the scope of the present invention.

상기에서 설명한 본 발명에 따른 움직임 보상 방법에 의하면, 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 구하고, 상기 매크로 블록의 움직임 보상시 사각 영역을 한 번만 페치함으로써, 매크로블록당 움직임 벡터의 수와 상관없이 메모리 접근 횟수를 줄일 수 있다.According to the motion compensation method according to the present invention described above, by obtaining the rectangular region union of the reference blocks of the pictures referred to by the motion vectors in one macro block, and fetching the rectangular region only once in the motion compensation of the macro block, The number of memory accesses can be reduced regardless of the number of motion vectors per macroblock.

이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.Those skilled in the art will appreciate that various changes and modifications can be made without departing from the spirit of the present invention.

따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다. Therefore, the technical scope of the present invention should not be limited to the contents described in the embodiments, but should be defined by the claims.

Claims (7)

하나의 매크로 블록이 움직임 보상을 위해 적어도 한 개 이상의 서브 블록으로 분할된 디지털 영상의 움직임 보상 방법에 있어서, In the motion compensation method of a digital image in which one macro block is divided into at least one sub block for motion compensation, (a) 하나의 매크로 블록 내 각 서브 블록별로 그 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표값과 그 참조 블록의 크기를 구하는 단계; 및(a) obtaining a coordinate value of an upper left corner of a reference block of a picture referenced by the subblock and the size of the reference block for each subblock in one macroblock; And (b) 상기 참조 블록의 좌상단 좌표값과 크기 정보를 이용하여 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 구하는 단계를 포함하여 이루어지는 것을 특징으로 하는 움직임 보상 방법.and (b) obtaining a rectangular region union of the reference blocks of the pictures referred to by the sub-blocks in the macro block using the upper left coordinate value and the size information of the reference block. 제 1 항에 있어서, 상기 (a) 단계는The method of claim 1, wherein step (a) 상기 각 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표 값은 그 서브 블록의 움직임 벡터로 구하는 것을 특징으로 하는 움직임 보상 방법.The upper left coordinate value of the reference block of the picture referenced by each sub block is obtained by using the motion vector of the sub block. 제 1 항에 있어서, 상기 (b) 단계는 The method of claim 1, wherein step (b) 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 한번에 페치하여 하나의 매크로 블록에 대한 움직임 보상을 수행하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 움직임 보상 방법.And performing motion compensation on one macro block by fetching a rectangular region union of the reference blocks of the pictures referred to by the sub-blocks in the macro block at one time. 제 1 항에 있어서, 상기 (b) 단계는The method of claim 1, wherein step (b) 상기 매크로블록의 움직임 보상시 상기 사각 영역이 이를 저장하는 메모리 버퍼의 사이즈보다 클때는 상기 사각 영역을 분할하여 페치하는 것을 특징으로 하는 움직임 보상 방법.And when the blind spot is larger than the size of a memory buffer for storing the macroblock, the blind spot is divided and fetched. 제 1 항에 있어서, 상기 (b) 단계는The method of claim 1, wherein step (b) 하기의 알고리즘을 적용하여 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 구하는 것을 특징으로 하는 움직임 보상 방법.The method of claim 1, wherein the rectangular region union of the reference blocks of the pictures referred to by the motion vectors in one macro block is obtained by applying the following algorithm. for (i=0; i<NumBlocks; i++) {for (i = 0; i <NumBlocks; i ++) { if (i==0) {if (i == 0) { RefPosUL.x = BlockPos[i].x;RefPosUL.x = BlockPos [i] .x; RefPosUL.y = BlockPos[i].y;RefPosUL.y = BlockPos [i] .y; RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1; RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1; } else {} else { if (BlockPos[i].x < RefPosUL.x) RefPosUL.x = BlockPos[i].x;if (BlockPos [i] .x <RefPosUL.x) RefPosUL.x = BlockPos [i] .x; if (BlockPos[i].y < RefPosUL.y) RefPosUL.y = BlockPos[i].y;if (BlockPos [i] .y <RefPosUL.y) RefPosUL.y = BlockPos [i] .y; if ((BlockPos[i].x + BlockSize[i].x - 1) > RefPosLR.x);if ((BlockPos [i] .x + BlockSize [i] .x-1)> RefPosLR.x); RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1; if ((BlockPos[i].y + BlockSize[i].y - 1) > RefPosLR.y);if ((BlockPos [i] .y + BlockSize [i] .y-1)> RefPosLR.y); RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1; }} }} NumBlocks : 매크로블록이 가지는 하위 서브 블록의 수 NumBlocks : Number of lower subblocks of macroblock RefPosUL.x RefPosUL.y : 하나의 매크로 블록 내 움직임 벡터들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합을 나타낸 좌상단 좌표 RefPosUL.x RefPosUL.y : Upper left coordinates representing the union of rectangular regions of reference blocks of pictures referred to by motion vectors in one macro block RefPosLR.x RefPosLR.y : 하나의 매크로 블록 내 움직임 벡터들이 참조하는픽쳐의 참조 블록들의 사각 영역 합집합을 나타낸 우하단 좌표 RefPosLR.x RefPosLR.y : Lower right coordinate indicating the union of the rectangular regions of the reference blocks of the pictures referred to by the motion vectors in one macro block BlockPos.x BlockPos.y : 하나의 매크로 블록 내 움직임 벡터들 중 하나의 움직임 벡터가 참조하는 픽쳐의 참조 블록의 좌상단 좌표 BlockPos.x BlockPos.y : Coordinates of the upper left corner of the reference block of the picture referenced by one of the motion vectors in one macro block BlockSize.x BlockSize.y : 하나의 매크로 블록 내 움직임 벡터들 중 하나의 움직임 벡터가 참조하는 픽쳐에서 읽어들일 참조 블록의 크기 BlockSize.x BlockSize.y : Size of the reference block to be read from the picture referenced by one of the motion vectors in one macro block 하나의 매크로 블록이 움직임 보상을 위해 적어도 한 개 이상의 서브 블록으로 분할된 디지털 영상의 움직임 보상 방법에 있어서, In the motion compensation method of a digital image in which one macro block is divided into at least one sub block for motion compensation, (a) 하나의 매크로 블록 내 각 서브 블록별로 그 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표값과 그 참조 블록의 크기를 구하는 단계;(a) obtaining a coordinate value of an upper left corner of a reference block of a picture referenced by the subblock and the size of the reference block for each subblock in one macroblock; (b) 상기 참조 블록의 좌상단 좌표값과 크기 정보를 이용하여 상기 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역의 합집합 부분을 구하는 단계; 및 obtaining a union of the rectangular regions of the reference blocks of the reference blocks of the pictures referred to by the sub-blocks in the macro block using the upper left coordinate values and the size information of the reference block; And (c) 상기 구한 사각 영역의 합집합 부분을 한번에 페치하여 하나의 매크로 블록에 대한 움직임 보상을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 하는 움직임 보상 방법.and (c) fetching the union of the obtained rectangular regions at one time to perform motion compensation for one macro block. 제 6 항에 있어서, 상기 (b) 단계는The method of claim 6, wherein step (b) 하기의 알고리즘을 적용하여 하나의 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합 부분을 구하는 것을 특징으로 하는 움직임 보상 방법.The method of claim 1, wherein the rectangular region union of the reference blocks of the pictures referred to by the sub-blocks in one macro block is obtained by applying the following algorithm. for (i=0; i<NumBlocks; i++) {for (i = 0; i <NumBlocks; i ++) { if (i==0) {if (i == 0) { RefPosUL.x = BlockPos[i].x;RefPosUL.x = BlockPos [i] .x; RefPosUL.y = BlockPos[i].y;RefPosUL.y = BlockPos [i] .y; RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1; RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1; } else {} else { if (BlockPos[i].x < RefPosUL.x) RefPosUL.x = BlockPos[i].x;if (BlockPos [i] .x <RefPosUL.x) RefPosUL.x = BlockPos [i] .x; if (BlockPos[i].y < RefPosUL.y) RefPosUL.y = BlockPos[i].y;if (BlockPos [i] .y <RefPosUL.y) RefPosUL.y = BlockPos [i] .y; if ((BlockPos[i].x + BlockSize[i].x - 1) > RefPosLR.x);if ((BlockPos [i] .x + BlockSize [i] .x-1)> RefPosLR.x); RefPosLR.x = BlockPos[i].x + BlockSize[i].x - 1;RefPosLR.x = BlockPos [i] .x + BlockSize [i] .x-1; if ((BlockPos[i].y + BlockSize[i].y - 1) > RefPosLR.y);if ((BlockPos [i] .y + BlockSize [i] .y-1)> RefPosLR.y); RefPosLR.y = BlockPos[i].y + BlockSize[i].y - 1;RefPosLR.y = BlockPos [i] .y + BlockSize [i] .y-1; }} }} NumBlocks : 매크로블록이 가지는 하위 서브 블록의 수 NumBlocks : Number of lower subblocks of macroblock RefPosUL.x RefPosUL.y : 하나의 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합을 나타낸 좌상단 좌표 RefPosUL.x RefPosUL.y : Upper left coordinates representing the union of rectangular regions of reference blocks of pictures referred to by sub blocks in one macro block RefPosLR.x RefPosLR.y : 하나의 매크로 블록 내 서브 블록들이 참조하는 픽쳐의 참조 블록들의 사각 영역 합집합을 나타낸 우하단 좌표 RefPosLR.x RefPosLR.y : Lower right coordinate indicating the union of the rectangular regions of the reference blocks of the pictures referred to by the sub blocks in one macro block BlockPos.x BlockPos.y : 하나의 매크로 블록 내 서브 블록 중 하나의 서브 블록이 참조하는 픽쳐의 참조 블록의 좌상단 좌표 BlockPos.x BlockPos.y : Coordinates of the upper left corner of the reference block of the picture referenced by one of the subblocks in one macroblock BlockSize.x BlockSize.y : 하나의 매크로 블록 내 서브 블록들 중 하나의 서브 블록이 참조하는 픽쳐에서 읽어들일 참조 블록의 크기 BlockSize.x BlockSize.y : Size of the reference block to be read from the picture referenced by one of the subblocks in one macroblock
KR1020050004560A 2005-01-18 2005-01-18 Motion compensation method KR100672376B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050004560A KR100672376B1 (en) 2005-01-18 2005-01-18 Motion compensation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050004560A KR100672376B1 (en) 2005-01-18 2005-01-18 Motion compensation method

Publications (2)

Publication Number Publication Date
KR20060083665A KR20060083665A (en) 2006-07-21
KR100672376B1 true KR100672376B1 (en) 2007-01-24

Family

ID=37173972

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050004560A KR100672376B1 (en) 2005-01-18 2005-01-18 Motion compensation method

Country Status (1)

Country Link
KR (1) KR100672376B1 (en)

Also Published As

Publication number Publication date
KR20060083665A (en) 2006-07-21

Similar Documents

Publication Publication Date Title
KR101227667B1 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US9877044B2 (en) Video encoder and operation method thereof
KR100843196B1 (en) Deblocking filter of H.264/AVC video decoder
US7876829B2 (en) Motion compensation image coding device and coding method
JP2022521515A (en) Methods, devices, and programs for cross-component filtering
KR20070111467A (en) Scratch pad for storing intermediate loop filter data
JP7465918B2 (en) Method and apparatus for video decoding performed by a decoder and method for video encoding performed by an encoder - Patents.com
WO2022104498A1 (en) Intra-frame prediction method, encoder, decoder and computer storage medium
JP3968712B2 (en) Motion prediction compensation apparatus and method
JP7124222B2 (en) Method and apparatus for color conversion in VVC
JP2010514300A (en) Method for decoding a block of a video image
US20080031335A1 (en) Motion Detection Device
KR20060002549A (en) Register array structure for effective edge filtering operation of deblocking filter
JP2007013298A (en) Image coding apparatus
EP1147671A1 (en) Method and apparatus for performing motion compensation in a texture mapping engine
JP2023513772A (en) Method, apparatus and computer program for video coding
JP5180887B2 (en) Encoding apparatus and method thereof
WO2022116824A1 (en) Video decoding method, video encoding method, related devices, and storage medium
KR100672376B1 (en) Motion compensation method
US20070153909A1 (en) Apparatus for image encoding and method thereof
JP5206070B2 (en) Decoding device and decoding method
JP2006166308A (en) Decoding apparatus and decoding method
JPH0846977A (en) Picture compression circuit
EP1585340A2 (en) Inverse prediction apparatus and decoding apparatus using the same
WO2023231008A1 (en) Encoding and decoding method, encoder, decoder and storage medium

Legal Events

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

Payment date: 20091230

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee