To simulate the lens blur, you'll have to pay special attention to the bokeh effect. To create the bokeh effect, you'll have to use a binary kernel blurring method (like disc blur where you average all the pixel in around the current pixel in a dish shape). Also you'll need to gamma correct the image so that the dark parts become really dark so that only the bright speckles creates the bokeh. You can then blur the image again without gamma correction and get the max of both.
Pseudo-code:
gammaCorrectedImage = image ^ 3 // Or whatever power works for you.
bokeh = discBlur(gammaCorrectedImage)
bokeh = cubeRoot(bokeh) // To get back the original gamma.
blurImage = discBlur(image)
finalImage = max(bokeh, blurImage)
I got a close enough result:
![enter image description here]()