IP Library Granted Patent US 8,189,104
Granted Patent B2
US 8,189,104 · App. 11/687,080 · Granted May 29, 2012

Apparatus, method, and computer program product for detecting motion vector and for creating interpolation frame

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,189,104
App. No.
11/687,080
Granted
May 29, 2012
Kind
B2
Abstract

An apparatus for creating an interpolation frame includes a first computing unit that computes a first motion vector in relation to a first block in a first reference frame, a second extracting unit that extracts a second block in a second reference frame based on the first motion vector, a first calculating unit that calculates a correlation between the first block and the second block, a third extracting unit that extracts a third block that is shifted from the second block by a certain number of pixels, a second calculating unit that calculates a correlation between the first block and the third block, and a third computing unit that computes a motion vector for an interpolation block based on a most-highly correlated block-pair.

Claims (103)

1. An apparatus for creating an interpolation frame comprising:

a first extracting unit configured to extract a first block in relation to each of interpolation blocks from a first reference frame, the each of the interpolation blocks corresponding to a piece of an interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦n/2;

a first computing unit configured to compute a first motion vector in relation to each of the interpolation blocks, the first motion vector connecting an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

a second computing unit configured to compute a second motion vector that is obtained by multiplying the first motion vector by [−(n−k)/k];

a second extracting unit configured to extract a second block in relation to each of the interpolation blocks, the second block being an area in the second reference frame determined by the second motion vector;

a first calculating unit configured to calculate a correlation between the first block and the second block;

a third extracting unit configured to extract a third block in relation to the second block from an area that is distant from the second block by (n−k)/k; or less, the third block being located at a position shifted from a position of the second block by a certain number of pixels on the second reference frame;

a second calculating unit configured to calculate a correlation between the first block and the third block that is extracted in relation to the second block corresponding to the first block;

a first selecting unit configured to select a most-highly correlated block-pair in relation to each of the interpolation blocks, from among a first block pair of the first block and the second block and a second block pair of the first block and the third block, using a first calculation result obtained by the first calculating unit and a second calculation result obtained by the second calculating unit;

a third computing unit configured to compute a motion vector for the interpolation block based on the block pair selected by the first selecting unit; and

a motion compensation unit configured to perform motion compensation based on the motion vector computed by the third computing unit.

2. The apparatus according to claim 1 , wherein the first extracting unit is configured to extract all of the first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

the first calculating unit is configured to calculate correlations between all of the first blocks and second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

the third extracting unit is configured to extract all of the third blocks each of which is determined in relation to each of the first blocks, the third block being included in the third blocks and representing each of the third blocks;

the second calculating unit is configured to calculate correlations between all of the first blocks and the third blocks each of which is extracted in relation to the second block corresponding to the first block; and

the first selecting unit is configured to select a most-highly correlated block-pair by using all of correlation calculation results obtained by the first calculating unit and all of correlation calculation results obtained by the second calculating unit.

3. The apparatus according to claim 1 , wherein the first extracting unit is configured to extract all of the first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

the first calculating unit is configured to calculate correlations between all of the first blocks and second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

the apparatus further comprises a second selecting unit configured to select a most-highly correlated block-pair of the first block and the second block from at least one calculation result obtained by the first calculating unit;

the third extracting unit is configured to extract the third block that is determined in relation to the first block included in the block-pair selected by the second selecting unit;

the second calculating unit is configured to calculate a correlation between the first block included in the block-pair selected by the second selecting unit and the third block extracted by the third extracting unit; and

the first selecting unit is configured to select a most-highly correlated block-pair from the block-pair selected by the second selecting unit and a calculation result obtained by the second calculating unit.

4. The apparatus according to claim 1 , wherein the motion compensation unit is configured to perform the motion compensation with reference to at least one of the first reference frame and the second reference frame by using the motion vector computed by the third computing unit, in response to the first selecting unit selecting the most-highly correlated block-pair between the first block and the third block.

5. The apparatus according to claim 1 , wherein the motion compensation unit is configured to perform the motion compensation with reference to the first block and an area, on the second reference frame, that is determined by the motion vector computed by the third computing unit, in response to the first selecting unit selecting the most-highly correlated block-pair between the first block and the third block.

6. The apparatus according to claim 1 , wherein the motion compensation unit is configured to perform the motion compensation with reference to a first pixel in the first block and a second pixel in the third block, in response to the first selecting unit selecting the most-highly correlated block-pair between the first block and the third block.

7. An apparatus for detecting a motion vector, the apparatus comprising:

a first extracting unit configured to extract a first block in relation to each of interpolation blocks from a first reference frame, the each of the interpolation blocks corresponding to a piece of an interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦n/2;

a first computing unit configured to compute a first motion vector that connects an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

a second computing unit configured to compute a second motion vector that is obtained by multiplying the first motion vector by[−(n−k)/k];

a second extracting unit configured to extract a second block that is an area in the second reference frame determined by the second motion vector;

a first calculating unit configured to calculate a correlation between the first block and the second block;

a third extracting unit configured to extract a third block that is obtained by shifting the second block by a distance per pixel in the second reference frame, from an area that is distant from the second block by (n−k)/k; or less;

a second calculating unit configured to calculate a correlation between the first block and the third block;

a first selecting unit configured to select a most-highly correlated block-pair from among a first calculation result obtained by the first calculating unit and a second calculation result obtained by the second calculating unit; and

a third computing unit configured to compute a motion vector for a block pair based on the block-pair selected by the first selecting unit.

8. A method of creating an interpolation frame, the method comprising:

extracting a first block in relation to each of interpolation blocks from a first reference frame by using a first extracting unit, the each of the interpolation blocks corresponding to a piece of an interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦n/2;

computing a first motion vector in relation to each of the interpolation blocks by using a first computing unit, the first motion vector connecting an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

computing a second motion vector obtained by multiplying the first motion vector by [−(n−k)/k] by using a second computing unit;

extracting a second block in relation to each of the interpolation blocks by using a second extracting unit, the second block being an area in the second reference frame determined by the second motion vector;

calculating a first correlation between the first block and the second block by using a first calculating unit;

extracting a third block in relation to the second block from an area that is distant from the second block by (n−k)/k or less by using a third extracting unit, the third block being located at a position shifted from a position of the second block by a number of pixels on the second reference frame;

calculating a second correlation between the first block and the third block that is extracted in relation to the second block corresponding to the first block by using a second calculating unit;

selecting a most-highly correlated block-pair in relation to each of the interpolation blocks by using a first selecting unit, from among a first block pair of the first block and the second block and a second block pair of the first block and the third block, using a first calculation result obtained by the first calculating unit and a second calculation result obtained by the second calculating unit;

computing a motion vector for the interpolation block by using a third computing unit based on the most-highly correlated block-pair selected by the first selecting unit; and

performing motion compensation by using a motion compensation unit based on the motion vector computed by the third computing unit.

9. The method according to claim 8 , further comprising:

extracting all of first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

calculating first correlations between all of the first blocks and second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

extracting all of third blocks each of which is determined in relation to each of the first blocks, the third block being included in the third blocks and representing each of the third blocks;

calculating second correlations between all of the first blocks and the third blocks each of which is extracted in relation to the second block corresponding to the first block; and

selecting a most-highly correlated block-pair by using at least one first calculation result of the first correlations between the first blocks and the second blocks and at least one second calculation result of the second correlations between the first blocks and the third blocks.

10. The method according to claim 8 , further comprising:

extracting all of first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

calculating correlations between all of the first blocks and second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

selecting a most-highly correlated block-pair of the first block and the second block from at least one calculation result;

extracting the third block that is determined in relation to the first block included in the most-highly correlated block-pair of the first block and the second block;

calculating a correlation between the first block included in the most-highly correlated block-pair, of the first block and the second block, and the third block; and

selecting a most-highly correlated block-pair from among the most-highly correlated block-pair of the first block and the second block, and a calculation result of the correlation between the first block and the third block.

11. A method of detecting a motion vector, the method comprising:

extracting a first block in relation to each of interpolation blocks from a first reference frame, the each of the interpolation blocks corresponding to a piece of an interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦n/2;

computing a first motion vector in relation to each of the interpolation blocks, the first motion vector connecting an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

computing a second motion vector that is obtained by multiplying the first motion vector by [−(n−k)/k];

extracting a second block in relation to each of the interpolation blocks, the second block being an area in the second reference frame determined by the second motion vector;

calculating a first correlation between the first block and the second block;

extracting a third block in relation to the second block, from an area that is distant from the second block by (n−k)/k or less, the third block being located at a position shifted from a position of the second block by a number of pixels on the second reference frame;

calculating a second correlation between the first block and the third block that is extracted in relation to the second block corresponding to the first block;

selecting a most-highly correlated block-pair in relation to each of the interpolation blocks, from among a first block pair of the first block and the second block and a second block pair of the first block and the third block, using a first correlation calculation result between the first block and the second block and a second correlation calculation result between the first block and the third block; and

computing a motion vector for the interpolation block based on the most-highly correlated block pair.

12. A computer program product having a computer-readable medium including programmed instructions for performing interpolation frame creation, wherein the instructions, in response to execution, cause a computer to perform:

extracting a first block in relation to each of interpolation blocks from a first reference frame, the each of the interpolation blocks corresponding to a piece of an interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦/2;

computing a first motion vector in relation to each of the interpolation blocks, the first motion vector connecting an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

computing a second motion vector that is obtained by multiplying the first motion vector by [−(n−k)/k];

extracting a second block in relation to each of the interpolation blocks, the second block being an area in the second reference frame determined by the second motion vector;

calculating a first correlation between the first block and the second block;

extracting a third block in relation to the second block from an area that is distant from the second block by (n−k)/k or less, the third block being located at a position shifted from a position of the second block by a number of pixels on the second reference frame;

calculating a second correlation between the first block and the third block that is extracted in relation to the second block corresponding to the first block;

selecting a most-highly correlated block-pair in relation to each of the interpolation blocks, from among a first block pair of the first block and the second block and a second block pair of the first block and the third block, using a first correlation calculation result between the first block and the second block and a second correlation calculation result between the first block and the third block;

computing a motion vector for the interpolation block based on the most-highly correlated block pair; and

performing motion compensation based on the motion vector.

13. The computer program product according to claim 12 , wherein the instructions cause the computer to further perform:

extracting all of first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

calculating first correlations between all of the first blocks and the second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

extracting all of third blocks each of which is determined in relation to each of the first blocks, the third block being included in the third blocks and representing each of the third blocks;

calculating second correlations between all of the first blocks and third blocks each of which is extracted in relation to the second block corresponding to the first block; and

selecting a most-highly correlated block-pair by using second at least one first calculation result of the first correlations between the first blocks and the second blocks and at least one second calculation result of the second correlations between the first blocks and the third blocks.

14. The computer program product according to claim 12 , wherein the instructions cause the computer to further perform:

extracting all of first blocks present in a search area on the first reference frame, the first block being included in the first blocks and representing each of the first blocks;

calculating correlations between all of the first blocks and the second blocks each of which corresponds to each of the first blocks, the second block being included in the second blocks and representing each of the second blocks;

selecting a most-highly correlated block-pair of the first block and the second block from at least one calculation result;

extracting the third block that is determined in relation to the first block included in the most-highly correlated block pair of the first block and the second block;

calculating a correlation between the first block included in the most-highly correlated block-pair, of the first block and the second block, and the third block; and

selecting a most-highly correlated block-pair from among the most-highly correlated block-pair of the first block and the second block, and a calculation result of the correlation between the first block and the third block.

15. A computer program product having a computer-readable medium including programmed instructions for detecting a motion vector, wherein the instructions, in response to execution, cause a computer to perform:

extracting a first block in relation to each of interpolation blocks from a first reference frame, the each of the interpolation blocks corresponding to a piece of interpolation frame being located between the first reference frame and a second reference frame having an inter-frame distance n therebetween, and a distance between the interpolation frame and the first reference frame being k, where k ≦n/2;

computing a first motion vector in relation to each of the interpolation blocks, the first motion vector connecting an interpolation block and the first block, the interpolation block being included in the interpolation blocks and representing each of the interpolation blocks;

computing a second motion vector that is obtained by multiplying the first motion vector by [−(n−k)/k];

extracting a second block in relation to each of the interpolation blocks, the second block being an area in the second reference frame determined by the second motion vector;

calculating a first correlation between the first block and the second block;

extracting a third block in relation to the second block, from an area that is distant from the second block by (n−k)/k or less, the third block being located at a position shifted from a position of the second block by a number of pixels on the second reference frame;

calculating a second correlation between the first block and the third block that is extracted in relation to the second block corresponding to the first block;

selecting a most-highly correlated block-pair in relation to each of the interpolation blocks, from among a first block pair of the first block and the second block and a second block pair of the first block and the third block, using a first correlation calculation result between the first block and the second block and a second correlation calculation result between the first block and the third block; and

computing a motion vector for the interpolation block based on the most-highly correlated block-pair.

Assignments (6)
CHANGE OF NAME Recorded Dec 3, 2021
From: MAXELL HOLDINGS, LTD.
To: MAXELL, LTD.
Reel/Frame 058666/0407 →
MERGER Recorded Nov 29, 2021
From: MAXELL, LTD.
To: MAXELL HOLDINGS, LTD.
Reel/Frame 058255/0579 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2021
From: HISENSE VISUAL TECHNOLOGY CO., LTD.
To: MAXELL, LTD.
Reel/Frame 056681/0441 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2020
From: TOSHIBA VISUAL SOLUTIONS CORPORATION
To: HISENSE VISUAL TECHNOLOGY CO., LTD.
Reel/Frame 051493/0333 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: KABUSHIKI KAISHA TOSHIBA
To: TOSHIBA VISUAL SOLUTIONS CORPORATION
Reel/Frame 046640/0626 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2007
From: OHWAKI, KAZUYASU; TAKEYAMA, YASUTOYO; ITOH, GOH; MISHIMA, NAO
To: KABUSHIKI KAISHA TOSHIBA
Reel/Frame 019339/0464 →