Differences between cupy and non-cupy PSF deconvolution
@larrymanley has pointed out that there are some differences between the PSF deconvolved images depending on whether the calculation is done with cupy or pure numpy or @markcheung's RL CUDA implementation:
I tried the deconvolution code using cupy. It seems to leave a trace of that central diffraction pattern all over the image. See attached images. I just did a quick map.peek with vmin=0/vmax=8000 and saved a zoom of one area so the fields of view are slightly different.
original - no processing aiapsf171 - image generated with cupy nocupy171 - image generated without cupy rlcuda171 - image generated with Mark Cheung's Richardson-Lucy CUDA implementation
The image generated without cupy still shows some spurious noise as compared to that generated with Mark's code.
I checked the min/max/mean of the generated PSF for 171, they are slightly different for cupy vs. non-cupy:
type | cupy | non-cupy |
---|---|---|
min | 4.447624509859933e-24 | 2.027823754174342e-24 |
max | 0.641652124483507 | 0.641652124483507 (same) |
mean | 5.960464477541576e-08 | 5.960464477541568e-08 |
I also timed the non-cupy deconvolution - it ran in ~25 seconds. I realize that IDL and numpy are different implementations, but based on the speed of my old computer compared to my current one, I'm thinking the non-accelerated deconvolution should take at least 4-5 minutes.
Some images showing the differences: