Manually transfered from JuliaImages/Images.jl#882. The following contents are originally posted by @roflmaostc. This seems only an ImageMagick issue, using PNGFiles/ImageIO work arounds it.
Hey,
I observed a bug for which I didn't find an explanation so far. I wrote a Poisson noise function which adds noise to the image. If I inspect the final images with imshow, all seems to be fine.
However, only for the parameter value nphot=3, nphot=5 and nphot=15, if I save the image (or inspect them directly with colorview) these images are scaled and shifted to the left. On the right part, there are some artifacts
I cropped the images so that only intensities between 0 and 1 are possible.
Not working: nphot=3, nphot=5, nphot=15
One working example: nphot=10
Here is the full code example:
using Images, TestImages, PoissonRandom, ImageView
function my_poisson(img; nphot=100)
nphot = float(nphot)
max_intens = maximum(img)
#scale image to maximum number of photons and apply poisson noise
img_noisy = map(x -> pois_rand(x / max_intens * nphot), img)
#rescale to initial intensity
img_noisy = img_noisy ./ nphot .* max_intens
#crop intensity
img_noisy = map(x -> max(0.0, x), img_noisy)
img_noisy = map(x -> min(1.0, x), img_noisy)
return img_noisy
end
img = testimage("cameraman")
#i=3, i=5 and i=15 cause strange output
for i=1:15
img_poiss = my_poisson(img, nphot=i)
img_poiss_view = colorview(Gray, img_poiss)
save(string("test", i, ".png"), img_poiss_view)
end
#this part works totally fine
img_poiss = my_poisson(img, nphot=15)
img_poiss_view = colorview(Gray, img_poiss)
imshow(img_poiss_view)
Edit: with different image size, the parameter, where the result is weird, changes.
Manually transfered from JuliaImages/Images.jl#882. The following contents are originally posted by @roflmaostc. This seems only an ImageMagick issue, using PNGFiles/ImageIO work arounds it.
Hey,
I observed a bug for which I didn't find an explanation so far. I wrote a Poisson noise function which adds noise to the image. If I inspect the final images with imshow, all seems to be fine.
However, only for the parameter value
nphot=3,nphot=5andnphot=15, if I save the image (or inspect them directly with colorview) these images are scaled and shifted to the left. On the right part, there are some artifactsI cropped the images so that only intensities between 0 and 1 are possible.
Not working: nphot=3, nphot=5, nphot=15
One working example: nphot=10
Here is the full code example:
Edit: with different image size, the parameter, where the result is weird, changes.