1. Technical Field
The technical field relates to technology for detecting motion vector from image signals, and in particular, motion vector detecting devices that improve accuracy of detecting motion vectors.
2. Background
A conventional detector for detecting a motion vector from an image signal is configured based on the block-matching technique. The motion vector detecting device adopting the block-matching technique divides a target image into multiple blocks, and evaluates a degree of correlation between a target block to detect the movement and each of multiple candidate areas (candidate blocks) within a predetermined search area in previous and subsequent frames of a target image. Then, a candidate block with the highest degree of correlation is chosen from the candidate blocks. Displacement between this chosen candidate block and target block is set as a motion vector.
Another structure is also disclosed. An average motion vector detected in blocks in the horizontal direction, including the target block, or blocks in the vertical direction, including the target block, is used as one of the aforementioned candidate blocks. This structure improves a motion detecting performance.
Still another structure is disclosed. If the target block is a boundary block of the image, a representative value for motion vector detected in blocks in the horizontal direction, including the target block, or blocks in the vertical direction, including the target block, is assigned. This structure improves a motion detecting performance.
The above conventional structures are disclosed in Japanese Patent Unexamined Publication No. 2005-287047 and Japanese Patent Unexamined Publication No. 2005-287048.
However, the above motion vector detecting devices may not be able to effectively detect correct motion vectors that should be detected in detecting motion vectors from image signals. For example, in an image in which multiple objects move differently, such as an object and background moving in different directions, this problem tends to occur at a boundary area of moving object due to the presence of multiple movements.
A motion vector detecting device includes a motion vector estimator, a motion vector converter, a correlation calculator, and a motion vector determinator.
The motion vector estimator calculates an estimated motion vector that is a motion vector estimated for a reference block in a partial area of a display screen configuring an image signal, and a correlation value between an estimated block pointed by the estimated motion vector and the reference block.
The motion vector converter calculates a second reference block in response to a first estimated motion vector calculated by applying the motion vector estimator to the first reference block.
The correlation value calculator calculates a second correlation value that is a correlation value calculated by applying the motion vector estimator to the second reference block.
The motion vector determinator determines and outputs a motion vector of the second reference block based on at least one of:
Another motion vector detecting device includes a motion vector estimator, a representative motion vector generator, a motion vector converter, a correlation value calculator, and a motion vector determinator.
The motion vector estimator calculates an estimated motion vector that is a motion vector estimated for a reference block in a partial area of a display screen configuring an image signal, and a correlation value between an estimated block pointed by the estimated motion vector and the reference block.
The representative motion vector generator calculates a representative motion vector that represents the multiple estimated motion vectors based on the multiple estimated motion vectors and the correlation value.
The motion vector converter calculates a second reference block in response to a first representative motion vector calculated by applying the motion vector estimator and the representative vector generator to the first reference block.
The correlation value calculator obtains a second correlation value that is a correlation value calculated by applying the motion vector estimator to the second reference block.
The motion vector determinator determines and outputs a motion vector of the second reference block based on at least one of:
In view of aforementioned disadvantage of prior art, the exemplary embodiments enable the effective detection of highly-accurate motion vectors.
Exemplary embodiments are described below with reference to drawings. All numeric values in the description are given as examples and thus the exemplary embodiments are not limited to the given numeric values.
In
YUV converter 101 converts RGB signal 1001, which is an input image signal, to YUV signal 1002. More specifically, YUV converter 101 converts RGB signal 1001 defined by RGB color space to YUV signal 1002 defined by YUV color space. YUV signal 1002 is a signal configured with a luminance signal, Cb signal, and Cr signal. YUV converter 101 is inserted in order to maintain consistency between input RGB signal 1001 and a signal to be input to later processes. Accordingly, YUV converter 101 is not necessary if inputs to motion vector detecting device 100 and motion vector estimator 102 adopt a common signal format. In addition, conversion in this converter needs to be changed appropriately, depending on the combination of a signal input from outside to motion vector detecting device 100 and a signal needed in later processes.
Motion vector estimator 102 estimates a motion vector based on YUV signal 1002. A specific structure of motion vector estimator 102 is given in
Reference block determinator 202 sets and outputs reference block 221 in turn from divided blocks 211 so as to cover the entire area of frame image. Reference block 311 in
Candidate block determinator 203 determines candidates of estimated motion vector starting from reference block 221 output from reference block determinator 202, in a predetermined search area, and outputs multiple candidate blocks 231. Further description is given supposing that reference block 221 output from reference block determinator 202 is reference block 311 in
As one way of setting predetermined search areas 322 and 332, the entire frame of subsequent frame 320 and previous frame 330 may be set as the search area. In this case, all blocks 211 included in a frame image will be searched. This type of search is called the all-search system. The reliability of estimated motion vector calculated improves in the all-search system. Alternatively, only a part of frame image may be set as predetermined search areas 322 and 332. This is called the partial-search system. An amount of calculation may be relatively reduced in the partial-search system.
As shown in
Candidate block correlation value calculator 204 calculates a correlation value between reference block 221 and each candidate block 231 for all candidate blocks 231, respectively. This correlation value is the sum of absolute values of differences between corresponding pixels in reference block 221 and candidate block 231. Or, it is the sum of square values of differences between corresponding pixels in reference block 221 and candidate block 231. Calculation of this correlation value is not limited to the methods described above. Any method that outputs a smaller value as the degree of approximation between the blocks becomes larger is applicable.
In calculation of a difference value between pixels, each pixel is configured with Y signal, which is a luminance signal, Cb signal, and Cr signal if the signal adopts the YUV format. Accordingly, a difference in all signal components (Y, Cb, and Cr) may be calculated. In this method, however, the amount of calculation increases. To complete calculation faster, a correlation value only for luminance signal Y, which has a large influence on image, may be calculated. Since calculation for the Cb signal and Cr signal is omitted in this method, a correlation value can be calculated faster.
In the case shown in
Estimated motion vector determinator 205 determines a candidate block with the highest correlation from candidate blocks whose correlation values are calculated by candidate block correlation value calculator 204, as a destination block of reference block 311. The candidate block with the highest correlation means the candidate block with the smallest correlation value. The destination block of reference block 311 is also called an estimated block. Estimated motion vector determinator 205 outputs estimated motion vector 252, estimated motion vector correlation value 251, and reference position 253. Estimated motion vector 252 is a vector that starts from reference block 311 and ends at the estimated block. Estimated motion vector correlation value 251 is a correlation value between reference block 311 and the estimated block, which are pointed by this estimated motion vector 252. Reference position 253 is the position of reference block 311 on a frame.
Motion vector estimator 102 sets, in turn, each of all blocks divided by block divider 201 as a reference block. Then, motion vector estimator 102 calculates and outputs estimated motion vector 252, estimated motion vector correlation value 251, and reference position 253 for each reference block.
Next, motion vector converter 103 generates another motion vector by converting input estimated motion vector 352, based on estimated motion vector 252 calculated by motion vector estimator 102, and refers to a target block. This new motion vector is called converted vector 1031.
There are a several ways of converting the motion vector by motion vector converter 103. One of them is described below as an example.
For example, if the entire screen uniformly moves, or if a major subject composing the screen moves, a relatively large area of an image moves in the same way. In this case, blocks around reference block 311 have high chances of having a motion vector similar to that of reference block 311 in calculation of estimated motion vector 252 by motion vector estimator 102.
With regard to the movement of the image, the entire screen or a subject may move in the uniform direction. Taking this uniformity into consideration, a block positioned in substantially the same direction as an estimated motion vector estimated by motion vector estimator 102 in blocks around reference block 311 also has high chances of having a motion vector value similar to reference block 311.
Therefore, motion vector converter 103 executes conversion of motion vector 252, which is the output of motion vector estimator 102, mainly related to its direction.
Specific conversion that takes place in motion vector converter 103 includes calculation of a motion vector with almost the same size in a direction opposite to that of estimated motion vector 252, or to a motion vector with almost the same size in the same direction as that of the vector. In short, a vector with the same size in a direction substantially the same as or opposite to that of input estimated motion vector 252 is calculated.
If motion vector converter 103 converts to a motion vector with the same size in a direction opposite to that of input estimated motion vector 252, estimation is controlled to a forward direction of the movement of reference block 311. On the other hand, if motion vector converter 103 converts to a motion vector with the same size in the same direction to that of input estimated motion vector 252, estimation is controlled to a backward direction of the movement of reference block 311.
Another specific conversion by motion vector converter 103 is to add a vector with a predetermined size in substantially the same direction to input estimated motion vector 252. Alternatively, motion vector converter 103 may multiply the input motion vector by a predetermined multiplier.
A vector converted by motion vector converter 103 is called converted vector 1031. A block specified by this converted vector 1031 is called a target block. Motion vector converter 103 newly generates a combination of reference block 311, which becomes a starting point of converted vector 1031, and target block 530, which becomes a terminal point of converted vector 1031.
A control that takes place when vector converter 103 adds input estimated motion vectors 313 and 314 and a vector with a predetermined size and substantially the same or opposite direction, so as to change the estimated motion vector, is described next. In this case, a displacement distance between reference block 331 and target block 530 can be controlled to increase or decrease independently from the estimated motion vector detected in reference block 331.
A control that takes place when vector converter 103 multiplies the input estimated motion vector by a predetermined multiplier, so as to change the vector size, is described next. In this case, the displacement distance between reference block 331 and target block 530 can be controlled to increase or decrease subserviently relative to the estimated motion vector detected in reference block 331.
This estimated motion vector, which is the output of motion vector estimator 102, has horizontal and vertical components of image signal, and these components are finite values. Converted motion vector 1031, which is the output of motion vector converter 103, also has horizontal and vertical components of image signal, and these components are finite values.
This is described with reference to
Reference block 510 in the present frame corresponds to reference block 311 in
This target block 530 is a block with a high possibility of taking a motion vector similar to this reference block 510 around reference block 510.
Estimated block 520 is determined relative to reference block 510, and thus estimated motion vector 560 is defined. In addition, estimated block 540 of target block 530 is determined relative to target block 530, and thus estimated motion vector 580 of target block 530 is defined.
Target block 530 is not limited to one block relative to one reference block 510. For example, a block through which a vector starting from the position of reference block 510 on the screen and ending at the position of one target block passes can also be set as a target block. To describe this case,
In
In this case, reference block 610 may have the motion vector to multiple target blocks 630. Contrary, no target block may be assigned to all reference blocks. In this case, this reference block 610 has no destination to move to on the screen.
In the above description, converted motion vector 670 is a vector generated by adding a vector with a predetermined size in substantially the same direction as estimated motion vector 660 to estimated motion vector 660. Furthermore, the size of the vector to be added may be dynamically changed, based on characteristics of input image signal, such as a moving direction of the entire screen, motion magnitude, or a position where a clear boundary exists on the screen.
Also in the above description, converted motion vector 670 may also be a vector generated by multiplying estimated motion vector 660 by a predetermined multiplier. This may also be dynamically changed, based on characteristics of input image signal. In that case an appropriate motion vector is detectable by input image signal.
As shown in
If motion vector estimator 102 calculates the correlation value for each of all blocks composing a frame, the next becomes feasible: The correlation value calculator 104 can calculate the original correlation value for target block 530 by utilizing (obtaining) the calculation result from motion vector estimator 102 without repeating the same calculation.
Another method is that correlation value calculator 104 succeeds/retains the correlation values for all blocks calculated by motion vector estimator 102, and a correlation value for target block 530 may be selected from these correlation values.
Correlation value 251 in motion vector estimator 102 indicates a degree of correlation, i.e., a degree of relativeness, of blocks pointed by estimated motion vectors 560 and 660 that are detected in reference blocks 510 and 610. Correlation value 1041 in correlation value calculator 104 indicates a degree of correlation, i.e., a degree of relativeness, of blocks pointed by estimated motion vector 580 that is detected in target block 530. Smaller correlation values 251 and 1041 mean higher degree of correlation with a block pointed by the estimated motion vector. This shows correctness, i.e., the high reliability, of calculated estimated motion vector.
Next, motion vector determinator 105 receives estimated motion vector 560 and correlation value 251 that are calculated for reference block 510, and estimated motion vector 580 and correlation value 1041 that are calculated for target block 530. Motion vector determinator 105 determines the motion vector of target block 530 by using these correlation value 251 and correlation value 1041.
More specifically, motion vector determinator 105 compares reference block 510 and target block 530 using correlation value 251 for reference block 510 calculated by motion vector estimator 102 and correlation value 1041 for target block 530 calculated by correlation value calculator 104, or uses other threshold so as to determine the motion vector.
For example, if correlation value 251 (the correlation value for reference block 510) calculated by motion vector estimator 102 is smaller than correlation value 1041 (the correlation value for target block 530) calculated by correlation value calculator 104, estimated motion vector 560 of reference block 510 calculated by motion vector estimator 102 is determined as motion vector of target block 530.
Contrary, if correlation value 1041 for target block 530 is smaller than correlation value 251 for reference block 510, estimated motion vector 580 of target block 530 is determined to have a higher reliability, and thus estimated motion vector 580 is determined as the motion vector of target block 530.
If correlation value 251 for reference block 510 and correlation value 1041 for target block 530 are equal, or their difference is within a certain range, either vector previously specified is determined as a motion vector. Here, the certain range may be determined, for example, by the following calculation:
(Number of pixels configuring the block)×(Range of values that each pixel may have)×Allowance (%).
Another determination method is available. Correlation value 251 for reference block 510 is compared with a predetermined threshold value, and estimated motion vector 560 of reference block 510 is adopted if correlation value 251 is smaller than the threshold value. On the other hand, if correlation value 251 is equal to or greater than the threshold value, estimated motion vector 1041 of target block 530 is adopted. Based on this method, if correlation value 251 for reference block 510 is roughly large, although correlation value 251 for reference block 510 is smaller than correlation value 1041 for target block 530, the reliability of estimated motion vector 560 of reference block 530 is considered low, and estimated motion vector 580 of target block 530 is preferentially adopted.
Still another determination method is available. Correlation value 1041 for target block 530 is compared with a predetermined threshold value, and estimated motion vector 560 of reference block 510 is adopted if correlation value 1041 is larger than this threshold value. On the other hand, if correlation value 1041 is equal to or smaller than this threshold value, estimated motion vector 580 of target block 530 is adopted. In this method, the reliability of estimated motion vector 580 of target block 530 is considered high if correlation value 251 for reference block 510 is smaller than correlation value 1041 for target block 530 and correlation value 1041 for target block 530 is smaller than a certain threshold, and this estimated motion vector 580 is preferentially adopted.
Still another determination method is available. If correlation value 1041 for target block 530 is within a range determined by the minimum value and the maximum value, estimated motion vector 580 of target block 530 is adopted. On the other hand, if correlation value 1041 is not within this range, estimated motion vector 560 of reference block 510 is adopted. With this method, estimated motion vector 580 of target block 530, which is converted, can be preferentially adopted in a range that the reliability of correlation value 1041 for target block 530 is evaluated high.
In addition, a new vector may be calculated from these multiple vectors, instead of mere selection of estimated motion vector 560 of reference block 510 or estimated motion vector 580 of target block 530. For example, a new vector may be generated by adding each vector in proportion to a degree of reliability of the correlation value for each of multiple vectors.
As described above, the embodiment uses the estimated motion vector of the target block calculated also using a motion vector of other block, in addition to the estimated motion vector of the reference block. This enables the effective detection of highly-accurate motion vectors.
The aforementioned characteristics can be utilized for compression-coding of image signals whose movement is compensated using motion vectors, or generation of an interpolated image using motion vectors. Accordingly, the embodiment offers high-quality and highly-efficient processing for compression-coding of image signals whose movement is compensated, or generation of an interpolated image.
In the above description, motion vector estimator 102 and correlation value calculator 104 use the YUV signal as an input for estimating a motion vector. Furthermore, an image signal for HSV color space (hue, saturation, value ) may be input for estimating a motion vector using at least one of these components. In this case, a motion vector can be estimated using a change in components (hue, saturation, value and so on) that are difficult to be detected in luminance.
In the description, correlation value calculator 104 adopts a method of using correlation value 251 calculated by motion vector estimator 102. However, other methods are available. For example, correlation value calculator 104 may be used for re-calculation. In this case, a correlation value may be calculated using a calculation method different from that in motion vector estimator 102. If only a luminance signal is used for calculating the correlation value in motion vector estimator 102, correlation value calculator 104 may adopt a calculation method that uses all pixel components. This enables the detection of further highly-accurate motion vector because a correlation value is calculated using an index different from that used in motion vector estimator 102.
Reference blocks 311, 510, and 610 are collectively called the first reference block. Estimated blocks 520 and 620 are collectively called the first estimated block. Target blocks 530 and 630 are collectively called the second reference block. Estimated motion vectors 560 and 660 of the first reference block are collectively called the first estimated motion vector. Estimated motion vector 580 of the second reference block is collectively called the second estimated motion vector.
Next, the second exemplary embodiment is described.
There are image signals, such as for characters, that move in the horizontal direction at a predetermined vertical position on the screen, typically captions and tickers. There are also image signals, such as for characters, that move in the vertical direction at a predetermined horizontal position on the screen, typically credits in movies. In case of these image signals, it can be assumed that there is a high possibility that estimated motion vectors are the same or similar between the reference block and other blocks at the same vertical position on the screen; the reference block and other blocks at the same horizontal position on the screen; or the reference block and blocks around the reference block.
Therefore, representative motion vector generator 706 calculates the motion vector utilizing the above characteristic.
Representative motion vector generator 706 receives estimated motion vector 252 and its correlation value 251 calculated by motion vector estimator 102. Then, representative motion vector generator 706 executes statistical processing, typically average calculation, for motion vectors of the following multiple blocks. The multiple blocks include multiple blocks around reference block 311, multiple blocks at the same vertical position as reference block 311 on the screen, or a block at the same horizontal position as reference block 311 on the screen. Representative motion vector generator 706 generates representative motion vector 710 that indicates typical movement of these multiple blocks.
There are diverse ways of setting multiple blocks around reference block 311. For example, blocks adjacent to reference block 311, blocks within a predetermined distance (range) from a certain point, blocks at a certain distance from reference block 311, or all blocks in the same frame as reference block 311 are set.
Switching unit 801 determines whether or not to generate a representative motion vector based on, for example, whether or not the position of reference block 311 on the display screen is at a screen end. Since it is relatively difficult to calculate the motion vector at the screen end, the motion vector can be obtained by using representative motion vector 710 as a motion vector.
In addition, in case that whether or not to generate the representative motion vector is determined in more advanced way an image boundary is logically detected from the input image signal, and representative motion vector 710 can be used for calculating a motion vector near this boundary. Moreover, a display position of caption or ticker or a vertical flow of a string of characters (e.g. credits of a movie) is detected from the content of image signal, and representative motion vector 710 can be used for calculating a motion vector. Switching unit 801 needs to determine whether or not to generate the representative motion vector based on estimated motion vectors of multiple blocks. Accordingly, switching unit 801 may also be equipped with a buffer (memory area) for retaining multiple estimated motion vectors and their correlation values.
If representative motion vector generator 706 does not generate representative motion vector 710, these pieces of information received are output as they exist. In this case, motion vector detecting device 700 executes the same processes as that of motion vector detecting device 100 in the first exemplary embodiment.
If switching unit 801 determines to generate representative motion vector 710, input information is sent to representative motion vector calculator 802.
Representative motion vector calculator 802 specifies a range in which representative motion vector 710 is generated based on input information. This range is, for example, blocks in the same horizontal position, blocks in the same vertical position, or blocks around the reference block. Representative motion vector calculator 802 then generates representative motion vector 710, typically by averaging, from estimated motion vectors 252 within this specified range.
Through the above processing, representative motion vector generator 706 outputs representative motion vector 710.
In this way, representative motion vector 710 generated by representative motion vector generator 706 indicates the movement of an image in reference block 311 and blocks around reference block 311. This representative motion vector 710 is applicable to reference block 311 and blocks around reference block 311 as their motion vectors.
In addition, in the state that a part of the screen moves in the same way, such as captions and tickers, the next movement can be assumed, taking into account the uniformity of the direction of motion vectors. In other words, it can be assumed that blocks in the same direction as representative motion vector 710 starting from reference block 311, generated by representative motion vector generator 706, in blocks around reference block 311 take the same movement as this representative motion vector 710.
Representative motion vector 710 generated by representative motion vector generator 706 is output to motion vector converter 103 and motion vector determinator 705. Estimated motion vector 252 is converted by motion vector converter 103 in the same way as that in the first exemplary embodiment, and correlation value calculator 104 calculates correlation value 1041. Motion vector determinator 805 determines and outputs motion vector 7001, depending on representative motion vector 710 and converted motion vector.
Motion vector determinator 705 determines motion vector 7001 based on representative motion vector 710 from representative motion vector generator 706 and correlation value 1041 from motion vector converter 103 and correlation value calculator 104.
Unlike motion vector detecting device 100 in the first exemplary embodiment, motion vector detecting device 700 in the second exemplary embodiment receives only representative motion vector 710, and not correlation value, from representative motion vector generator 706. Accordingly, motion vector determinator 705 in motion vector detecting device 700 compares correlation value 1041 from correlation value calculator 104 and a predetermined threshold, and determines which vector to use as a motion vector. The threshold and correlation value 1041 are compared in the same way as that in the first exemplary embodiment, and thus its description is omitted here.
Other components in motion vector detecting device 700 are the same as those in motion vector detecting device 100 in the first exemplary embodiment and thus their description is also omitted here.
As described above, motion vectors can be calculated further accurately by adding representative motion vector generator 706 when there is a distinctive movement on the screen.
The motion vector detecting devices 100 and 700 are described in the first and second exemplary embodiments. However, such devices are not limited to these embodiments. The functions of such devices described above can be realized in the form of electronic circuits and electric circuits. Moreover, the devices may be realized in the form of an integrated circuit (an IC chip and semiconductor chip). Furthermore, the devices may be realized in the form of software running on a CPU.
Now, a motion vector detecting device of the present invention achieved in the form of software running on a CPU is described below.
In case the motion vector detecting device is realized in the form of software, an example of the hardware configuration executing the software is shown in
In
As described above, the devices are not limited to a hardware configuration such as a module that is a part of the function of devices including electric circuits or electronic circuits, a processor unit such as a motion vector detecting device for achieving the function, or an integrated circuit to which the function is built in. The devices are also realizable in the form of software running on an arithmetic device such as CPU, MPU, and DSP.
The above-described first, second, and third exemplary embodiments refer to the case of configuring input image signals in units of frame. However, the embodiments are not limited to this configuration. The embodiments are also applicable even if input image signals are configured in units of field. If the input image signal is configured in units of field, a predetermined search range set by motion vector estimator 102 includes at least one field that is before or after the field including reference block 311.
The exemplary embodiments are given to illustrate using examples, and thus all of the possible embodiments are not limited to the exemplary embodiments.
As described above, the embodiments enable the detection of motion vectors more accurately.
The embodiments are realizable in the form of a motion vector detecting circuit, motion vector detecting device, and integrated circuit or software that has these functions. Furthermore, the embodiments are applicable to coding technology of MPEG and H262 that digitally compresses images, and frame/field interpolation technology for display devices.
Number | Date | Country | Kind |
---|---|---|---|
2008-054416 | Mar 2008 | JP | national |
2008-054417 | Mar 2008 | JP | national |