IP Library Granted Patent US 7,397,964
Granted Patent B2
US 7,397,964 · App. 10/876,039 · Granted Jul 8, 2008

Gaussian blur approximation suitable for GPU

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,397,964
App. No.
10/876,039
Granted
Jul 8, 2008
Kind
B2
Abstract

A Gaussian blur approximation is applied to an image by repeated down-sampling operations followed by an up-sample operation. By using a truncated Gaussian filter as the down-sample filter, the frequency spectrum removed during down-sampling operations closely approximates the frequency spectrum lost during a true Gaussian blur operation. While any “good” up-sample filter may be used, up-sampling via linear interpolation may be especially beneficial in systems having a dedicated graphics processing unit. One benefit of the described technique is that it is computationally less costly to implement than a Gaussian blur. Another benefit is that this computational benefit increases as the size of the blur increases—becoming significant even for small blurs. Yet another benefit of the invention is that a judicious selection of pixel address to convolve with the filter leads to substantially reduced number of texture lookups required to effect a convolution.

Claims (100)

1. A method to blur an image, comprising:

obtaining an image, said image having an original size;

receiving a blur-value indicating an amount to blur the image;

determining a number of times to down-sample the image with a truncated Gaussian filter having a variance, based on the blur-value;

down-sampling the image the determined number of times with the truncated Gaussian filter; and

up-sampling the down-sampled image to return it to approximately the original size.

2. The method of claim 1 , wherein the act of receiving a blur-value comprises receiving a user-specified blur-value.

3. The method of claim 1 , wherein the act of determining a number of times to down-sample comprises selecting a value for the variance (V) such that the following equation is satisfied

V

value

=

j

=

0

Vr

2

j

,

where

V value represents the blur-value, r represents a factor by which the image is reduced in size during each down-sample operation, and where j is an integer.

4. The method of claim 3 , wherein the value of r is a value between approximately 2 and 8.

5. The method of claim 1 , wherein the act of up-sampling comprises linearly interpolating the down-sampled image.

6. The method of claim 1 , wherein the act of up-sampling comprises using a sinc-function filter.

7. The method of claim 1 , wherein the truncated Gaussian filter is truncated at a value equal to ±nσ, where a represents the square-root of the variance and n is σ real number in a specified range.

8. The method of claim 7 , wherein the specified range is between approximately 1 and approximately 4.

9. The method of claim 1 , wherein the act of down-sampling is performed by a graphics processing unit.

10. The method of claim 9 , wherein the act of up-sampling is performed by the graphics processing unit.

11. The method of claim 1 , wherein the truncated Gaussian filter comprises a one-dimensional truncated Gaussian filter.

12. An image processing software application stored on a computer-readable medium comprising instructions for causing one or more programmable control devices to:

identify an image, the image having an original size;

specify a blur-value indicating an amount to blur the image;

determine a number of times to down-sample the image with a truncated Gaussian filter having a variance, based on the blur-value;

down-sample the image the determined number of times with the truncated Gaussian filter; and

up-sample the down-sampled image to return it to approximately its original size.

13. The image processing software application of claim 12 , wherein the instructions to down-sample comprise instructions to down-sample using a graphics processing unit.

14. The image processing software application of claim 13 , wherein the instructions to up-sample comprise instructions to use the graphics processing unit.

15. The image processing software application of claim 12 , wherein the truncated Gaussian filter comprises a one-dimensional truncated Gaussian filter.

16. A method to blur an image, comprising:

obtaining an image having an original size;

receiving a blur-value indicating an amount to blur the image;

determining a number of times to down-sample the image with a first truncated Gaussian filter having a first variance, based on the blur-value;

determining a second truncated Gaussian filter based on a second variance, the second variance being equal to the difference between the blur-value and the variance resulting from down-sampling the image the determined number of times;

down-sampling the image the determined number of times with the first truncated Gaussian filter to generate a first intermediate image;

convolving the first intermediate image with the second truncated Gaussian filter to generate a second intermediate image; and

up-sampling the second intermediate image to return it to a size approximately equal to the size of the image.

17. The method of claim 16 , wherein the act of receiving a blur-value comprises receiving a user-specified blur-value.

18. The method of claim 16 , wherein the act of determining a number of times to down-sample comprises selecting a value N, such that N is the largest value that satisfies the following equation

V

value

=

j

=

0

Vr

2

j

,

where

V value represents the blur-value, V represents the first variance, r represents a factor by which the image is reduced in size during each down-sample operation, and where j is an integer that runs from zero to N.

19. The method of claim 18 , wherein the value of r is a value between approximately 2 and 8.

20. The method of claim 16 , wherein the act of up-sampling comprises linearly interpolating the second intermediate image.

21. The method of claim 16 , wherein the act of up-sampling comprises convolving the second intermediate image with a sinc-function filter.

22. The method of claim 16 , wherein the first truncated Gaussian filter is truncated at a value equal to ±nσ, where a represents the square-root of the variance and n is a real number in a specified range.

23. The method of claim 22 , wherein the specified range is approximately 1 to 4.

24. The method of claim 16 , wherein the act of down-sampling is performed by a graphics processing unit.

25. The method of claim 24 , wherein the act of up-sampling is performed by the graphics processing unit.

26. The method of claim 16 , wherein the first and second truncated Gaussian filters comprise a one-dimensional truncated Gaussian filters.

27. An image processing software application stored on a computer-readable medium comprising instructions for causing one or more programmable control devices to:

obtain an image;

receive a blur-value indicating an amount to blur the image;

determine a number of times to down-sample the image with a first truncated Gaussian filter having a first variance, based on the blur-value;

determine a second truncated Gaussian filter based on a second variance, the second variance being equal to the difference between the blur-value and the variance resulting from down-sampling the image the determined number of times;

down-sample the image the determined number of times with the first truncated Gaussian filter to generate a first intermediate image;

convolve the first intermediate image with the second truncated Gaussian filter to generate a second intermediate image; and

up-sample the second intermediate image to return it to a size approximately equal to the size of the image.

28. The image processing software application of claim 27 , wherein the instructions to determine a number of times to down-sample comprises instructions to select a value N, such that N is the largest value that satisfies the following equation

V

value

=

j

=

0

Vr

2

j

,

where

V value represents the blur-value, V represents the first variance, r represents a factor by which the image is reduced in size during each down-sample operation, and where j is an integer that runs from zero to N.

29. The image processing software application of claim 27 , wherein the instructions to up-sample comprise instructions to linearly interpolate the second intermediate image.

30. The image processing software application of claim 27 , wherein the instructions to down-sample comprise instructions to use a graphics processing unit.

31. The image processing software application of claim 29 , wherein the instructions to up-sample comprise instructions to use the graphics processing unit.

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