Method and apparatus for digital image filtering with discrete filter kernels using graphics hardware
First Claim
1. A method for simultaneously convolving a plurality of digital image data points into output data distributed in multi-channel output targets, comprising:
- at least one processor implementing the following step of;
A. multiplying a plurality of imaging data points from at least a portion of an input matrix with corresponding filter values to produce components of a plurality of output data points simultaneously;
B. updating corresponding output targets with the components of the plurality of output data points from step (A), each output target having a plurality of channels; and
C. repeating steps (A) and (B) until the output targets contain output data corresponding with convolved imaging data points from the input matrix.
8 Assignments
0 Petitions
Accused Products
Abstract
The invention provides, in some aspects, methods and apparatus for signal and/or image processing which perform convolution-based filtering utilizing a graphics processing unit (GPU, also called “graphics card”) to compute multiple output pixels at once. This has the advantage of saving memory bandwidth, while leveraging the GPUs vector multiplication and dot product units during the calculation. Related aspects of the invention provide such methods and apparatus in which multiple output pixels are computed simultaneously by using render targets with more than one channel, e.g., an RGBA render target, or multiple render targets, or a combination thereof. By way of non-limiting example, methods and apparatus according to the invention implement convolution on a GPU by executing the steps of defining input image I(x,y) as input texture of size Nx×Ny; defining an RGBA render target (output) of size Nx/4×Ny; and, for each RGBA output pixel aggregating o(x,y) by (i) reading all input pixels I(x*4+i,y), with i=−4,0,4, and computing o(x,y) for the all four components of the output tuple.
101 Citations
29 Claims
-
1. A method for simultaneously convolving a plurality of digital image data points into output data distributed in multi-channel output targets, comprising:
- at least one processor implementing the following step of;
A. multiplying a plurality of imaging data points from at least a portion of an input matrix with corresponding filter values to produce components of a plurality of output data points simultaneously; B. updating corresponding output targets with the components of the plurality of output data points from step (A), each output target having a plurality of channels; and C. repeating steps (A) and (B) until the output targets contain output data corresponding with convolved imaging data points from the input matrix. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
- at least one processor implementing the following step of;
-
14. A method for convolving digital image data with filter values that are the product of dimensionally-separable functions into output data distributed in multi-channel output targets, comprising:
- at least one processor implementing the following step of;
convolving first values generated from a first dimensionally-separable filter function with at least a portion of an input matrix holding the digital image data to produce a first convolution output in a render target having a plurality of channels, the convolving being performed as one or more one-dimensional convolutions; and convolving second values generated from a second dimensionally-separable filter function with the first convolution output to produce a second convolution output, the convolving being performed as one or more one-dimensional convolutions. - View Dependent Claims (15, 16, 17, 18)
- at least one processor implementing the following step of;
-
19. A method for convolving digital image data with a one-dimensional filter having a constant value to produce output data distributed in multi-channel output targets, comprising:
- at least one processor implementing the following step of;
A. convolving a plurality of image data points located in a row or a column of an image matrix with the one-dimensional filter to produce a plurality of output values in a render target having a plurality of channels; and B. calculating a new plurality of output values for the render target from at least the previous plurality of output values, the new plurality of output values located adjacent to the image data points used to produce the previous plurality of output values. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
- at least one processor implementing the following step of;
Specification