CarVac / librtprocess

A project to make RawTherapee's processing algorithms more readily available.
Other
51 stars 23 forks source link

RCD is non deterministic #77

Open Vincent-FA opened 4 months ago

Vincent-FA commented 4 months ago

Hello, we have noticed a few years ago in Siril that RCD was not always giving the same result from the same input image, with sometimes one or two pixels changing values. Now I was trying to make some photometry work with a debayered image and the unit test don't always give the same results, which becomes a real problem.

It doesn't seem to happen with small images, but my test images can be around 2000 pixels by 1000, 16 bits unsigned, converted to float as usual. Siril disabled OpenMP for librtprocess. I tried replacing mallocs by callocs and initializing arrays on the stack, the result is the same. Valgrind detects an uninitialized value in the result buffer (Conditional jump or move depends on uninitialised value(s)).

The pixels that change value are always 10 rows from the bottom and red, and it was also seen once with a blue pixel 10 columns from the right. Example coordinates of pixels with changing values in a set of 6 images (seen by subtracting two): (1251, 9), (1487, 9), (149, 9). Would you be able to look at this?