Each pixel of the cylindrical CURVACE sensor has a small output bias. When the sensor looks at a uniformly illuminated surface all pixels should have the same output value but instead there are slight deviations. This effect is especially problematic for gradient based optic flow methods since the image brightnes constancy assumption is violated.
Biased output from a cylindrical CURVACE sensor without any motion while observing a white wall.
To efficiently remove this bias we compute an average output value for each pixel by applying a low-pass filter to the pixel data. We then compute the bias as the difference between the average output and a reference value. This bias is finally subtracted from the current pixel data.
Theoretically the low-pass filter requires multiplication with a floating point value. However we can avoid floating point arithmetic by using only specific low-pass filter parameters that can be represented as 2-n. To preserve the data precission we store the low-pass filtered signal as a fixed point value with a scaling factor of 2n.
Let It be the value of a pixel at time t and Lt be the low-pass filtered signal which is computed as
Lt = Lt-1 - (Lt-1 >> n) + It
The unbiased pixel value Jt with respect to the reference value R is then given by
Jt = It - Lt>>n + R
continue with visual data transmission
back to Controller code overview
back to Readout board visualisation software