IP Library Granted Patent US 7,636,489
Granted Patent B2
US 7,636,489 · App. 10/826,596 · Granted Dec 22, 2009

Blur computation algorithm

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 7,636,489
App. No.
10/826,596
Granted
Dec 22, 2009
Kind
B2
Abstract

Disclosed herein is an improved blur computation algorithm. The proposed algorithm accomplishes a blur of an image using fragment programs on a GPU. Alternatively, the blur may be computed on a CPU through emulation or directly programmed. Modifications of the program are possible that accomplish motion blur, zoom blur, radial blur, and various other forms of blur that vary across an image computed for the purpose of simulating depth-of-field.

Claims (32)

1. A method of applying a blur to an image using a processor to perform the steps of:

defining a primary kernel to compute an output pixel as a weighted average of a plurality of pixels of the image wherein a spatial relationship between the output pixel and the plurality of pixels is determined by a step size of the primary kernel;

applying the primary kernel to each pixel of the image to produce an intermediate result;

increasing the step size of the primary kernel to create a higher order primary kernel and applying the higher order primary kernel to the intermediate result to produce a result image.

2. The method of claim 1 further comprising the steps of:

defining a secondary kernel to compute the output pixel as a weighted average of a plurality of pixels of the image wherein a spatial relationship between the output pixel and the plurality of pixels is determined by a step size of the secondary kernel and wherein the weighted average of the secondary kernel is different from the weighted average of the primary kernel;

applying the secondary kernel to each pixel of the result image to produce a second intermediate result.

3. The method of claim 2 further comprising:

determining a final result by interpolating between the result image and the second intermediate result.

4. The method of claim 2 further comprising:

applying the secondary kernel to each pixel of the second intermediate result to produce a third intermediate result; and

determining a final result by interpolating between the second intermediate result and the third intermediate result.

5. The method of claim 1 wherein the step size is further increased to create a successively higher order primary kernel and the successively higher order primary kernel is applied to a previous intermediate result to produce a next intermediate result until a predetermined step size limit is reached.

6. The method of any of claims 1 - 5 wherein the blur is a Gaussian blur computed by performing each step in a horizontal direction and in a vertical direction.

7. The method of any of claims 1 - 5 wherein the blur is a blur selected from the group consisting of: a motion blur, a zoom blur, a radial blur, and a spatially dependent blur.

8. The method of any of claims 1 - 5 wherein the steps are performed by a plurality of GPU fragment programs.

9. The method of any of claims 1 - 5 wherein the step size is computed proportional to a constant factor raised to a power determined by a current kernel application step number.

10. The method of claim 9 wherein the current kernel application step number is applied horizontally in even subpasses and vertically in odd subpasses.

11. A computer readable storage medium having embodied thereupon instructions executable by a computer to perform the following method steps:

defining a primary kernel to compute an output pixel as a weighted average of a plurality of pixels of the image wherein a spatial relationship between the output pixel and the plurality of pixels is determined by a step size of the primary kernel;

applying the primary kernel to each pixel of the image to produce an intermediate result;

increasing the step size of the primary kernel to create a higher order primary kernel and applying the higher order primary kernel to the intermediate result to produce a result image.

12. The computer readable storage medium of claim 11 , wherein the method steps executable by the computer further comprise:

defining a secondary kernel to compute an output pixel as a weighted average of a plurality of pixels of the image wherein a spatial relationship between the output pixel and the plurality of pixels is determined by a step size of the secondary kernel and wherein the weighted average of the secondary kernel is different from the weighted average of the primary kernel;

applying the secondary kernel to each pixel of the result image to produce a second intermediate result.

13. The computer readable storage medium of claim 12 , wherein the method steps executable by the computer further comprise:

determining a final result by interpolating between the result image and the second intermediate result.

14. The computer readable storage medium of claim 11 , wherein the method steps executable by the computer further comprise:

applying the secondary kernel to each pixel of the second intermediate result to produce a third intermediate result; and

determining a final result by interpolating between the second intermediate result and the third intermediate result.

15. The computer readable storage medium of any of claims 11 - 14 wherein the step size is computed proportional to a regular factor raised to a power determined by a current kernel application step number.

16. The computer readable storage medium of claim 15 wherein the step size is horizontal in even subpasses and vertical in odd subpasses.

Assignments (1)
CHANGE OF NAME Recorded May 11, 2007
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 019265/0961 →