IP Library Granted Patent US 8,437,581
Granted Patent B2
US 8,437,581 · App. 13/406,613 · Granted May 7, 2013

Method and system for interpolating fractional video pixels

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,437,581
App. No.
13/406,613
Granted
May 7, 2013
Kind
B2
Abstract

A method and system for interpolating video pixels is described, in which the value of a first fractional pixel is calculated based on the values of the first set of integer pixels, while the value of a second fractional pixel is calculated based on the values of the second set of integer pixels. The first set of integer pixels is not equal to the second set of integer pixels. For example, the first and second set may contain different integer pixels and may contain different numbers of integer pixels.

Claims (36)

1. A method for interpolating a first fractional pixel FL, a half pixel H, and a second fractional pixel FR located between a first integer pixel L 0 and a second integer pixel R 0 along a pixel line, wherein the pixel line further includes a third integer pixel L 1 , a fourth integer pixel R 1 , a fifth integer pixel L 2 , a sixth integer pixel R 2 , a seventh integer pixel L 3 , an eighth integer pixel R 3 , a ninth integer pixel L 4 , a tenth integer pixel R 4 , an eleventh integer pixel L 5 , and a twelfth integer pixel R 5 , the method comprising:

selecting a first set of integer pixels along the pixel line, the first set consisting of the seventh integer pixel L 3 , the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eleventh integer pixel L 5 , the ninth integer pixel L 4 , the eighth integer pixel R 3 and the tenth integer pixel R 4 ;

selecting a second set of integer pixels along the pixel line, the second set consisting of the seventh integer pixel L 3 , the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eighth integer pixel R 3 , the eleventh integer pixel L 5 , the ninth integer pixel L 4 , the tenth integer pixel R 4 and the twelfth integer pixel R 5 ;

selecting a third set of integer pixels along the pixel line the third set consisting of the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eighth integer pixel R 3 , the ninth integer pixel L 4 , the seventh integer pixel L 3 , the tenth integer pixel R 4 and the twelfth integer pixel R 5 ,

wherein the first integer pixel L 0 and the second integer pixel R 0 are between the third integer pixel L 1 and the fourth integer pixel R 1 , the third integer pixel L 1 and the fourth integer pixel R 1 are between the fifth integer pixel L 2 and the sixth integer pixel R 2 , the fifth integer pixel L 2 and the sixth integer pixel R 2 are between the seventh integer pixel L 3 and the eighth integer pixel R 3 , the seventh integer pixel L 3 and the eighth integer pixel R 3 are between the ninth integer pixel L 4 and the tenth integer pixel R 4 , the ninth integer pixel L 4 and the tenth integer pixel R 4 are between the eleventh integer pixel L 5 and the twelfth integer pixel R 5 ;

calculating a value for the first fractional pixel FL based on values of the pixels of the first set;

calculating a value for the half pixel H based on values of the pixels in the second set;

calculating a value for the second fractional pixel FR based on values of the pixels in the third set,

wherein the steps of calculating a value for the first fractional pixel FL, the half pixel H, and the second fractional pixel FR comprise calculating FL, H and FR, respectively, based on:

FL=(FLW L5 *L 5 +FLW L4 *L 4 +FLW L3 *L 3 +FLW L2 *L 2 +FLW L1 *L 1 +FLW L0 *L 0 +FLW R0 *R 0 +FLW R1 *R 1 +FLW R2 *R 2 +FLW R3 *R 3 +FLW R4 *R 4 +FLRoundingOffset)>>FLRightShiftBits;

H=(HW L5 *L 5 +HW L4 *L 4 +HW L3 *L 3 +HW L2 *L 2 +HW L1 *L 1 +HW L0 *L 0 +HW R0 *R 0 +HW R1 *R 1 +HW R2 *R 2 +HW R3 *R 3 +HW R4 *R 4 +HW R5 *R 5 +HRoundingOffset)>>HRightShiftBits;

FR=(FRW L4 *L 4 +FRW L3 *L 3 +FRW L2 *L 2 +FRW L1 *L 1 +FRW L0 *L 0 +FRW R0 *R 0 +FRW R1 *R 1 +FRW R2 *R 2 +FRW R3 *R 3 +FRW R4 *R 4 +FRW R5 *R 5 +FRRoundingOffset)>>FRRightShiftBits;

wherein FLW L5 , FLW L4 , FLW L3 , FLW L2 , FLW L1 , FLW L0 , FLW R0 , FLW R1 , FLW R2 , FLW R3 , and FLW R4 are the weighting factors of L 5 , L 4 L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 and R 4 respectively, FLRoundingOffset is the rounding offset, and FLRightShiftBits is the number of right shift bits;

wherein HW L5 , HW L4 , HW L3 , HW L2 , HW L1 , HW L0 , HW R0 , HW R1 , HW R2 , HW R3 , HW R4 , and HW R5 are the weighting factors of L 5 , L 4 , L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 , R 4 and R 5 respectively, HRoundingOffset is the rounding offset, HRightShiftBits is the number of right shift bits; and

wherein FRW L4 , FRW L3 , FRW L2 , FRW L1 , FRW L0 , FRW R0 , FRW R1 , FRW R2 , FRW R3 , FRW R4 and FRW R5 are the weighting factors of L 4 , L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 , R 4 and R 5 respectively, FRRoundingOffset is the rounding offset, FRRightShiftBits is the number of right shift bits.

2. The method of claim 1 ,

wherein HW L5 =HW R5 , HW L4 =HW R4 , HW L3 =HW R3 , HW L2 =HW R2 , HW L1 =HW R1 , and HW L0 =HW R0 , and wherein FLW L5 =FRW R5 , FLW L4 =FRW R4 , FLW L3 =FRW R3 , FLW L2 =FRW R2 , FLW L1 =FRW R1 , FLW L0 =FRW R0 , FLW R0 =FRW L0 , FLW R1 =FRW L1 , FLW R2 =FRW L2 , FLW R3 =FRW L3 , FLW R4 =FRW L4 .

3. A video processing system, the system comprising:

a processor that executes instructions for performing steps comprising:

reading a pixel line comprising a first integer pixel L 0 , a second integer pixel R 0 , a third integer pixel L 1 , a fourth integer pixel R 1 , a fifth integer pixel L 2 , a sixth integer pixel R 2 , a seventh integer pixel L 3 , an eighth integer pixel R 3 , a ninth integer pixel L 4 , tenth integer pixel R 4 , eleventh integer pixel L 5 , and twelfth integer pixel R 5 ,

selecting a first set of integer pixels along the pixel line, the first set consisting of the seventh integer pixel L 3 , the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eleventh integer pixel L 5 , the ninth integer pixel L 4 , the eighth integer pixel R 3 and the tenth integer pixel R 4 ;

selecting a second set of integer pixels along the pixel line, the second set consisting of the seventh integer pixel L 3 , the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eighth integer pixel R 3 , the eleventh integer pixel L 5 , the ninth integer pixel L 4 , the tenth integer pixel R 4 and the twelfth integer pixel R 5 ;

selecting a third set of integer pixels along the pixel line the third set consisting of the fifth integer pixel L 2 , the third integer pixel L 1 , the first integer pixel L 0 , the second integer pixel R 0 , the fourth integer pixel R 1 , the sixth integer pixel R 2 , the eighth integer pixel R 3 the ninth integer pixel L 4 , the seventh integer pixel L 3 , the tenth integer pixel R 4 and the twelfth integer pixel R 5 ,

wherein the first integer pixel L 0 and the second integer pixel R 0 are between the third integer pixel L 1 and the fourth integer pixel R 1 , the third integer pixel L 1 and the fourth integer pixel R 1 are between the fifth integer pixel L 2 and the sixth integer pixel R 2 , the fifth integer pixel L 2 and the sixth integer pixel R 2 are between the seventh integer pixel L 3 and the eighth integer pixel R 3 , the seventh integer pixel L 3 and the eighth integer pixel R 3 are between the ninth integer pixel L 4 and the tenth integer pixel R 4 , and the ninth integer pixel L 4 and the tenth integer pixel R 4 are between the eleventh integer pixel L 5 and the twelfth integer pixel R 5 ;

calculating a value for a first fractional pixel FL located between the first integer pixel L 0 and the second integer pixel R 0 based on values of the pixels of the first set;

calculating a value for a half pixel H located between the first integer pixel L 0 and the second integer pixel R 0 based on values of the pixels in the second set;

calculating a value for a second fractional pixel FR located between the first integer pixel L 0 and the second integer pixel R 0 based on values of the pixels in the third set,

wherein the steps of calculating a value for the first fractional pixel FL, the half pixel H, and the second fractional pixel FR comprise calculating FL, H and FR, respectively, based on:

FL=(FLW L5 *L 5 +FLW L4 *L 4 +FLW L3 *L 3 +FLW L2 *L 2 +FLW L1 *L 1 +FLW L0 *L 0 +FLW R0 *R 0 +FLW R1 *R 1 +FLW R2 *R 2 +FLW R3 *R 3 +FLW R4 *R 4 +FLRoundingOffset)>>FLRightShiftBits;

H=(HW L5 *L 5 +HW L4 *L 4 +HW L3 *L 3 +HW L2 *L 2 +HW L1 *L 1 +HW L0 *L 0 +HW R0 *R 0 +HW R1 *R 1 +HW R2 *R 2 +HW R3 *R 3 +HW R4 *R 4 +HW R5 *R 5 +HRoundingOffset)>>HRightShiftBits;

FR=(FRW L4 *L 4 +FRW L3 *L 3 +FRW L2 *L 2 +FRW L1 *L 1 +FRW L0 *L 0 +FRW R0 *R 0 +FRW R1 *R 1 +FRW R2 *R 2 +FRW R3 *R 3 +FRW R4 *R 4 +FRW R5 *R 5 +FRRoundingOffset)>>FRRightShiftBits;

wherein FLW L5 , FLW L4 , FLW L3 , FLW L2 , FLW L1 , FLW L0 , FLW R1 , FLW R , FLW R2 , FLW R3 , and FLW R4 are the weighting factors of L 5 , L 4 , L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 and R 4 respectively, FLRoundingOffset is the rounding offset, and FLRightShiftBits is the number of right shift bits;

wherein HW L5 , HW L4 , HW L3 , HW L2 , HW L1 , HW L0 , HW R0 , HW R1 , HW R2 , HW R3 , HW R4 , and HW R5 are the weighting factors of L 5 , L 4 , L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 , R 4 and R 5 respectively, HRoundingOffset is the rounding offset, HRightShiftBits is the number of right shift bits; and

wherein FRW L4 , FRW L3 , FRW L2 , FRW L1 , FRW L0 , FRW R0 , FRW R , FRW R2 , FRW R3 , FRW R4 and FRW R5 are the weighting factors of L 4 , L 3 , L 2 , L 1 , L 0 , R 0 , R 1 , R 2 , R 3 , R 4 and R 5 respectively, FRRoundingOffset is the rounding offset, FRRightShiftBits is the number of right shift bits.

4. The system of claim 3 ,

wherein HW L5 =HW R5 , HW L4 =HW R4 , HW L3 =HW R3 , HW L2 =HW R2 , HW L1 =HW R1 , and HW L0 =HW R0 , and wherein FLW L5 =FRW R5 , FLW L4 =FRW R4 , FLW L3 =FRW R3 , FLW L2 =FRW R2 , FLW L1 =FRW R1 , FLW L0 =FRW R0 , FLW R0 =FRW L0 , FLW R1 =FRW L1 , FLW R2 =FRW L2 , FLW R3 =FRW L3 , FLW R4 =FRW L4 .

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034280/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2014
From: LOU, JIAN; BAYLON, DAVID M.; MINOO, KOOHYAR; PANUSOPONE, KRIT
To: GENERAL INSTRUMENT CORPORATION
Reel/Frame 033781/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2014
From: GENERAL INSTRUMENT CORPORATION
To: GENERAL INSTRUMENT HOLDINGS, INC.
Reel/Frame 033781/0067 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2014
From: GENERAL INSTRUMENT HOLDINGS, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 033781/0151 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT CORPORATION
To: GENERAL INSTRUMENT HOLDINGS, INC.
Reel/Frame 030764/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT HOLDINGS, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 030866/0113 →