Method and apparatus for digital image filtering with discrete filter kernels using graphics hardware
Inventors
Thieret, Scott A. • Stalling, Detlev • Westerhoff, Malte
Assignees
Interested in licensing this patent?
MTEC can help explore whether this patent might be available for licensing for your application.
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.
Core Innovation
The invention performs convolution of digital image data by simultaneously convolving a plurality of imaging data points into output data distributed in multi-channel output targets. A processor multiplies 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, and corresponding output targets are updated with the components until the output targets contain output data corresponding with convolved imaging data points from the input matrix.
The invention further supports convolution in which the filter values are the product of dimensionally-separable functions. First values generated from a first dimensionally-separable filter function are convolved 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, and second values generated from a second dimensionally-separable filter function are convolved with the first convolution output to produce a second convolution output.
In addition, the invention includes convolving digital image data with a one-dimensional filter having a constant value to produce output data distributed in multi-channel output targets. Image data points located in a row or a column of an image matrix are convolved with the one-dimensional filter to produce output values in a render target having a plurality of channels, and new output values are calculated from at least previous output values.
Claims Coverage
The document provides three independent methods covering simultaneous convolution into multi-channel output targets, separable convolution implemented as one-dimensional convolutions in two stages, and adjacent-output computation for constant 1D filters using row or column processing.
Simultaneously convolving digital image data into multi-channel output targets by multiplying input-matrix imaging data with corresponding filter values
Multiplying 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, updating corresponding multi-channel output targets with the components, and repeating until the output targets contain output data corresponding with convolved imaging data points from the input matrix.
Two-stage convolution using dimensionally-separable filter functions and one-dimensional convolutions
Convolving first values generated from a first dimensionally-separable filter function with at least a portion of an input matrix to produce a first convolution output in a render target having a plurality of channels 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, again as one or more one-dimensional convolutions.
Constant-value one-dimensional row/column convolution with adjacent new output value calculation
Convolving image data points located in a row or a column of an image matrix with a one-dimensional filter having a constant value to produce output values in a render target having a plurality of channels, and calculating a new plurality of output values from at least previous output values where the new output values are located adjacent to the image data points used to produce the previous plurality of output values.
Across the independent claims, the core coverage is convolution implemented by simultaneous multiplication with filter values into multi-channel output targets, separable filters applied in two convolution stages using one-dimensional convolutions, and constant-value 1D filters processed along rows or columns with adjacent new output values computed from previous output values.
Stated Advantages
Not explicitly described in patent.
Documented Applications
Not explicitly described in patent.
Interested in licensing this patent?