imagej-ops icon indicating copy to clipboard operation
imagej-ops copied to clipboard

filter/addPoissonNoise hangs up with large pixel values

Open bthoughton opened this issue 3 years ago • 0 comments

Hello,

I have been working on a project for the NIH that uses pyimagej to run ImageJ ops from python. Yesterday I was working on developing a plugin which calls the filter-addpoissonnoise op. During testing I determined that the op would hang up seemingly doing nothing when the input images had large pixel values. I believe this problem can be summarized as a precision/underflow problem when very large lambda values (expected number of successes in a given interval) are introduced to the Knuth algorithm. This has been documented before in wiki's Generating Poisson-distributed random variables section. As lambda becomes large exp(-lambda) approaches 0 and becomes so small it is evaluated as exactly 0. This value is checked in a while loop against another value which is never less than 0: while p >= L: do stuff where L = 0 and p is never less than 0. Therefore the loop runs forever.

bthoughton avatar Feb 15 '22 17:02 bthoughton