Information Technology Reference
In-Depth Information
the filter can be used to remove correlated noise (both spatially as across color
channels) from video sequences.
The outline of this paper is as follows: on Section 2, we first review some
basic GPGPU programming concepts. Next, we develop an ecient NLMeans
algorithm for a GPU and its extension to deal with noise which is correlated
across color channels. In Section 3 we give experimental results our method.
Finally, Section 4 concludes this paper.
2
An Ecient NLMeans Algorithm for a GPU
In this Section, we will explain the algorithmic improvements that we made to
the NLMeans filter in order to e ciently run the algorithm on a GPU. As already
mentioned, many approaches and/or programming language extensions exist for
GPGPU programming. Because the GPU technology is quickly evolving, we will
present a description of the algorithm that is quite general and that does not
rely on specific GPU technology choices. This way, the algorithms we present can
still be useful in the future, when newer GPU architectures become available.
2.1 General GPGPU Concepts
One core element in GPGPU techniques is the so-called kernel function. A kernel
function is a function that evaluates the output pixel intensities for a specific
position in the output image (or even multiple output images) and that takes
as input both the position (
) in the video sequence, and a number of input
images (which we will denote as
p
U ( i K ). A GPGPU program can then be
considered to be a cascade of kernel functions
U ( i )
1
, ...,
f ( I ) f ( I− 1) ◦···◦ f (1) applied to
a set of input images. Mathematically, the evaluation of one such kernel function
(which we will call a pass ) can be expressed as:
U ( i +1)
1
( p )= f ( i )
U ( i )
1
U ( i +1)
K
, ...,
( p )
(3)
,..., U ( i K
where the kernel function takes as input the output images of the previous
pass,
( i )
1
( i K and subsequently computes the inputs for the next pass,
U
, ...,
U
U ( i +1)
1
f ( i ) maps a spatio-
temporal coordinate ( p ) onto a three-dimensional RGB color vector.
Now, porting an algorithm to the GPU comes down to converting the algo-
rithm into a finite, preferably low number of passes as defined in (3) and with
fairly simple functions
U ( i +1)
K
, ...,
. More specifically, the kernel function
f ( i ) :
( p )= f (1)
U (1)
1
U (2)
1
U (2)
K
, ...,
( p ) ,
,..., U (1)
K
( p )= f (2)
U (2)
1
U (3)
1
U (3)
K
, ...,
( p ) ,
,..., U (2)
K
.
.
U ( I +1)
1
( p )= f ( I )
U ( I )
1
U ( I +1)
K
, ...,
( p ) .
(4)
U ( I )
K
,...,
 
Search WWH ::




Custom Search