IP Library Granted Patent US 10,049,425
Granted Patent B2
US 10,049,425 · App. 15/162,326 · Granted Aug 14, 2018

Merging filters for a graphic processing unit

Inventor: Brian Cornell (Kenmore, WA)
Assignee: Google LLC
G06T1/20G06T7/408G06T2207/20024
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 10,049,425
App. No.
15/162,326
Granted
Aug 14, 2018
Kind
B2
Abstract

Techniques for merging multiple filters into a single GPU program is described. The system includes a filtering engine, which receives an input to apply a plurality of filters to a source image. The filtering engine identifies a first type of filter and a second type of filter from the input. The filtering engine identifies a supplemental transformation filter from the input, implements the supplemental transformation filter using a custom function to generate a color value at the source image and merges the first type of filter and the second type of filter based on the supplemental transformation filter. Finally, the filtering engine may apply the merged filter on the source image to generate a destination image.

Claims (47)

1. A computer-implemented method comprising:

receiving, using one or more computing devices, an input to apply a plurality of filters to a source image;

identifying, using the one or more computing devices, a first type of filter from the input;

identifying, using the one or more computing devices, a second type of filter from the input;

identifying, using the one or more computing devices, a supplemental transformation filter from the input, the supplemental transformation filter using a function to determine a color value in the source image;

merging, using the one or more computing devices, the first type of filter, the supplemental transformation filter, and the second type of filter to generate a merged filter, wherein the merged filter executes on the source image a reverse of the first type of filter to generate a first value, the supplemental transformation filter to process the first value using the function to generate a second value, and the second type of filter to process the first value and the second value to generate a third value for the destination image; and

applying, using the one or more computing devices, the merged filter on the source image to generate the destination image.

2. The computer-implemented method of claim 1 , wherein the second type of filter is a color transformation filter that maps a first color of a first pixel from the source image to a second color in the destination image.

3. The computer-implemented method of claim 1 , wherein the first type of filter is a coordinate transformation filter that maps at least one pixel location in the destination image to one or more different pixel locations in the source image.

4. The computer-implemented method of claim 1 further comprising:

determining, using the one or more computing devices, that the supplemental transformation filter is not identified in the received input;

inserting, using the one or more computing devices, a substitute supplemental transformation filter into the received input; and

merging, using the one or more computing devices, the first type of filter, the substitute supplemental transformation filter, and the second type of filter to generate the merged filter.

5. The computer-implemented method of claim 1 , wherein the second type of filter is applied on the source image in forward order of application in the merged filter.

6. The computer-implemented method of claim 1 , wherein the first type of filter is applied on the source image in reverse order of application in the merged filter.

7. The computer-implemented method of claim 1 , wherein the supplemental transformation filter is based on a fragment shader and runs in a single pass.

8. A computer program product comprising a non-transitory computer readable medium storing a computer readable program, wherein the computer readable program when executed on a computer causes the computer to perform operations comprising:

receiving an input to apply a plurality of filters to a source image;

identifying a first type of filter from the input;

identifying a second type of filter from the input;

identifying a supplemental transformation filter from the input, the supplemental transformation filter using a function to determine a color value in the source image;

merging the first type of filter, the supplemental transformation filter, and the second type of filter to generate a merged filter, wherein the merged filter executes on the source image a reverse of the first type of filter to generate a first value, the supplemental transformation filter to process the first value using the function to generate a second value, and the second type of filter to process the first value and the second value to generate a third value for the destination image; and

applying the merged filter on the source image to generate the destination image.

9. The computer program product of claim 8 , wherein the second type of filter is a color transformation filter that maps a first color of a first pixel from the source image to a second color in the destination image.

10. The computer program product of claim 8 , wherein the first type of filter is a coordinate transformation filter that maps at least one pixel location in a destination image to one or more different pixel locations in the source image.

11. The computer program product of claim 8 , wherein the operations further comprise:

determining that the supplemental transformation filter is not identified in the received input;

inserting a substitute supplemental transformation filter into the received input; and

merging the first type of filter, the substitute supplemental transformation filter, and the second type of filter to generate the merged filter.

12. The computer program product of claim 8 , wherein the first type of filter is applied on the source image in forward order of application in the merged filter.

13. The computer program product of claim 8 , wherein the second type of filter is applied on the source image in reverse order of application in the merged filter.

14. The computer program product of claim 8 , wherein the supplemental transformation filter is based on a fragment shader and runs in a single pass.

15. A system comprising:

one or more processors;

a user interface module stored on a memory and executable by the one or more processors, the user interface module configured to receive an input to apply a plurality of filters to a source image; and

a filtering engine stored on the memory and executable by the one or more processors, the filtering engine configured to:

identify a first type of filter from the input;

identify a second type of filter from the input;

identify a supplemental transformation filter from the input, the supplemental transformation filter using a function to determine a color value in the source image;

merge the first type of filter, the supplemental transformation filter, and the second type of filter to generate a merged filter, wherein the merged filter executes on the source image a reverse of the first type of filter to generate a first value, the supplemental transformation filter to process the first value using the function to generate a second value, and the second type of filter to process the first value and the second value to generate a third value for the destination image; and

apply the merged filter on the source image to generate the destination image.

16. The system of claim 15 , wherein the filtering engine comprises a color transformation module as the second type of filter for mapping a first color from the source image to a second color in the destination image.

17. The system of claim 15 , wherein the filtering engine comprises a coordinate transformation module as the first type of filter for mapping a first pixel location from the source image to a second pixel location in the destination image.

18. The system of claim 15 , wherein the filtering engine comprises a supplemental transformation module for determining whether the supplemental transformation filter is identified in the received input, responsive to determining that the supplemental transformation filter is not identified in the received input, inserting a substitute supplemental transformation filter into the received input, and merging the first type of filter, the substitute supplemental transformation filter, and the second type of filter to generate the merged filter.

19. The system of claim 15 , wherein the second type of filter is applied on the source image in forward order of application in the merged filter.

20. The system of claim 15 , wherein the first type of filter is applied on the source image in reverse order of application in the merged filter.

21. The system of claim 15 , wherein the supplemental transformation filter is based on a fragment shader and runs in a single pass.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2016
From: CORNELL, BRIAN
To: GOOGLE INC.
Reel/Frame 038870/0901 →
Continuity (1)
Related Publication 20170337657A1 · Nov 23, 2017
Cited By (5)
US 12,401,911 US 12,401,912 US 12,418,727 US 12,445,736 US 12,666,159