IP Library Granted Patent US 9,007,391
Granted Patent B2
US 9,007,391 · App. 13/646,769 · Granted Apr 14, 2015

Image color correction for an image by a graphical processing unit looking up color corrections in a lookup table

Inventor: James Paul Ritts (Atherton, CA)
Assignee: Google Technology Holdings LLC
H04N9/735G09G5/026G09G5/06G09G5/363G09G2340/06
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 9,007,391
App. No.
13/646,769
Granted
Apr 14, 2015
Kind
B2
Abstract

A method for providing a LUT for changing color components of pixels of an image includes generating N two-dimensional slices from a three-dimensional LUT. The N two-dimensional slices are arranged in order from a first two-dimensional slice to an N th two-dimensional slice. The method includes generating N upsampled slices corresponding to the N two-dimensional slices. The N upsampled slices are arranged in order from a first upsampled slice to an N th upsampled slice. The method includes forming a first group of slices comprising the N upsampled slices, and forming a second group of slices comprising a second two-dimensional slice of the N two-dimensional slices through the N th two-dimensional slice and a copy of the N th two-dimensional slice. The method includes storing the first group of slices and the second group of slices, respectively, in a zero level of a mip map and a first level of the mip map.

Claims (48)

1. A method for providing a lookup table (LUT) for changing color components of pixels of an image, the method comprising:

generating, via a computing device, an integer number, the integer number greater than or equal to one, of two-dimensional slices from a three-dimensional LUT, wherein the integer number of two-dimensional slices are arranged in order from a first two-dimensional slice to a last-numbered two-dimensional slice of the integer number of two-dimensional slices;

generating, via the computing device, another integer number, the other integer number greater or equal to one, of upsampled slices corresponding to the integer number of two-dimensional slices, wherein the other integer number of upsampled slices are arranged in order from a first upsampled slice to a last-numbered upsampled slice of the other integer number of upsampled slices;

forming, via the computing device, a first group of slices comprising the other integer number of upsampled slices;

forming, via the computing device, a second group of slices comprising a second two-dimensional slice of the integer number of two-dimensional slices through the last-numbered two-dimensional slice and a copy of the last-numbered two-dimensional slice; and

storing, via the computing device, the first group of slices and the second group of slices, respectively, in a zero level of a mip map and a first level of the mip map.

2. The method of claim 1 , wherein the first upsampled slice through the last-numbered upsampled slice correspond respectively to the first two-dimensional slice through the last-numbered two-dimensional slice.

3. The method of claim 1 , wherein the copy of the last-numbered two-dimensional slice is at an end of the second group of slices.

4. The method of claim 1 , wherein a size of the second group of slices is half a size of the first group of slices.

5. The method of claim 1 , wherein the first group of slices has a full scale for one color component, and the second group of slices has a portion of the full scale for the one color component.

6. The method of claim 1 , further comprising transferring the mip map to a graphical processing unit (GPU), wherein the GPU is configured to perform color changes for received colors components of the pixels via color-coordinate lookups in the first and the second group of slices to generate changed color components for the pixels.

7. The method of claim 1 , further comprising applying a smoothing filter to color components of the upsampled slices to decrease differences between color components from color-coordinate lookups in the first group of slices and the second group of slices.

8. The method of claim 1 , wherein each of the integer number of two-dimensional slices includes a two-dimensional array of pixels having a first axis for a first color and a second axis for a second color component.

9. A method for changing colors of pixels of an image, the method comprising:

receiving, via a computing device, input color coordinates for input colors of the pixels, wherein the input color coordinates are for a first color component, a second color component, and a third color component;

performing, via a graphical processing unit (GPU) of the computing device, color coordinate lookups for the input color coordinates in a lookup table that is included in the GPU, wherein the lookup table includes:

a first group of slices comprising an integer number, the integer number greater than or equal to one, of upsampled slices arranged in order from a first upsampled slice to a last-numbered upsampled slice of the upsampled slices, wherein

the integer number of upsampled slices correspond to another integer number, the other integer number greater or equal to one, of two-dimensional slices generated from a three-dimensional LUT, and

the other integer number of two-dimensional slices are arranged in order from a first two-dimensional slice to a last-numbered two-dimensional slice of the other integer number of two-dimensional slices, and

a second group of slices comprising a second two-dimensional slice of the other integer number of two-dimensional slices through the last-numbered two-dimensional slice, and a copy of the last-numbered two-dimensional slice; and

outputting, from the GPU changed color components for the pixels based on the color coordinate lookups in the lookup table.

10. The method of claim 9 , wherein the first upsampled slice through the last-numbered upsampled slice in the first group of slices correspond respectively to a second two-dimensional slice through the copy of the last-numbered two-dimensional slice in the second group of slices.

11. The method of claim 9 , wherein the copy of the last-numbered two-dimensional slice is at an end of the second group of slices.

12. The method of claim 9 , wherein a size of the second group of slices is half a size of the first group of slices.

13. The method of claim 9 , further comprising:

scaling, via the computing device, a first input color coordinate of the input color coordinates for the first color component to eliminate color clamping by the GPU for the first color component; and

scaling, via the computing device, a second input color coordinate of the input color coordinates for the second color component to eliminate color clamping by the GPU for the second color component.

14. The method of claim 9 , wherein the first group of upsampled slices and the second group of slices are stored in the GPU as a zero level slice and a first level slice, respectively, of a mip map.

15. A non-transitory computer-readable storage medium comprising instructions for providing a lookup table (LUT) for changing color components of pixels of an image, wherein the instructions, when executed, are for controlling a computing device to be configured for:

generating an integer number, the integer number greater or equal to one, of two-dimensional slices from a three-dimensional LUT, wherein the integer number of two-dimensional slices are arranged in order from a first two-dimensional slice to a last-numbered two-dimensional slice of the integer number of two-dimensional slices;

generating another integer number, the other integer number greater or equal to one, of upsampled slices corresponding to the integer number of two-dimensional slices, wherein the other integer number of upsampled slices are arranged in order from a first upsampled slice to a last-numbered upsampled slice of the other integer number of upsampled slices;

forming a first group of slices comprising the other integer number of upsampled slices;

forming a second group of slices comprising a second two-dimensional slice of the integer number of two-dimensional slices through the last-numbered two-dimensional slice and a copy of the last-numbered two-dimensional slice; and

storing the first group of slices and the second group of slices, respectively, in a zero level of a mip map and a first level of the mip map.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the first upsampled slice through the last-numbered upsampled slice correspond respectively to the first two-dimensional slice through the last-numbered two-dimensional slice.

17. The non-transitory computer-readable storage medium of claim 15 , wherein a size of the second group of slices is half a size of the first group of slices.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the first group of slices has a full scale for one color component, and the second group of slices has a portion of the full scale for the one color component.

19. A non-transitory computer-readable storage medium comprising instructions for changing color components of pixels of an image, wherein the instructions, when executed, are for controlling a computing device to be configured for:

receiving input color coordinates for input color components of the pixels, wherein the input color coordinates are for a first color component, a second color component, and a third color component;

performing color coordinate lookups for the input color coordinates in a lookup table that is included in a graphical processing unit (GPU), wherein the lookup table includes:

a first group of slices comprising an integer number, the integer number greater or equal to one, of upsampled slices arranged in order from a first upsampled slice to a last-numbered upsampled slice of the integer number of upsampled slices, wherein

the integer number of upsampled slices correspond to another integer number, the other integer number greater or equal to one, of two-dimensional slices generated from a three-dimensional LUT, and

the other integer number of two-dimensional slices are arranged in order from a first two-dimensional slice to a last-numbered two-dimensional slice of the other integer number of two-dimensional slices, and

a second group of slices comprising a second two-dimensional slice of the other integer number of two-dimensional slices through the last-numbered two-dimensional slice, and a copy of the last-numbered two-dimensional slice; and

outputting from the GPU changed color components for the pixels based on the color coordinate lookups in the lookup table.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the instructions, when executed, are for further controlling the computing device to be configured for:

scaling a first input color coordinate of the input color coordinates for the first color component to eliminate color clamping by the GPU for the first color component; and

scaling a second input color coordinate of the input color coordinates for the second color component to eliminate color clamping by the GPU for the second color component.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034462/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2012
From: RITTS, JAMES PAUL
To: MOTOROLA MOBILITY LLC
Reel/Frame 029088/0717 →
Continuity (1)
Related Publication 20140098120A1 · Apr 10, 2014