KR100672376B1 - Motion compensation method - Google Patents
Motion compensation method Download PDFInfo
- 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
Links
Images
Classifications
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F03—MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
- F03B—MACHINES OR ENGINES FOR LIQUIDS
- F03B13/00—Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates
- F03B13/12—Adaptations 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/14—Adaptations 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/16—Adaptations 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/18—Adaptations 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/1845—Adaptations 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/1855—Adaptations 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/186—Adaptations 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B63—SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
- B63B—SHIPS OR OTHER WATERBORNE VESSELS; EQUIPMENT FOR SHIPPING
- B63B35/00—Vessels or similar floating structures specially adapted for specific purposes and not otherwise provided for
- B63B35/28—Barges or lighters
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F03—MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
- F03B—MACHINES OR ENGINES FOR LIQUIDS
- F03B13/00—Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates
- F03B13/12—Adaptations 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/14—Adaptations 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/16—Adaptations 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/18—Adaptations 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/1805—Adaptations 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/181—Adaptations 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/1815—Adaptations 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
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F03—MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
- F03B—MACHINES OR ENGINES FOR LIQUIDS
- F03B17/00—Other machines or engines
- F03B17/02—Other machines or engines using hydrostatic thrust
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F05—INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
- F05B—INDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
- F05B2220/00—Application
- F05B2220/30—Application in turbines
- F05B2220/32—Application in turbines in water turbines
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F05—INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
- F05B—INDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
- F05B2240/00—Components
- F05B2240/90—Mounting on supporting structures or systems
- F05B2240/93—Mounting on supporting structures or systems on a structure floating on a liquid surface
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E10/00—Energy generation through renewable energy sources
- Y02E10/20—Hydro energy
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E10/00—Energy generation through renewable energy sources
- Y02E10/30—Energy 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
도 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)
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) |
-
2005
- 2005-01-18 KR KR1020050004560A patent/KR100672376B1/en not_active IP Right Cessation
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 |