I have recently ordered a Samyang 500 mm/f6.3 mirror lens on eBay, for about £80, largely out of curiosity -- at the very least, it will be an interesting toy and I can always sell it.

Mirror lenses are frequently criticised for many things, but predominantly a perceived lack of sharpness and their 'doughnut' bokeh. This question features an excellent explanation of why central aperture obstructions mask out spatial frequencies and reduce sharpness.

My question is simple -- for a mirror lens, we [or Samyang] know the geometry of the lens pretty exactly, and hence its point spread function. I realise that knowledge of the position for all items in the photograph is required to "correct" for the bokeh (if you wanted to), but I have naïvely thought that we'd be able to work out the PSF analytically or numerically, and then improve contrast by deconvolving images obtained by it.

While I wait for my lens to arrive in the post (I've got more than a week to go!), I've quickly explored this idea using Kamen Kunchev's (Creative Commons licensed) pigeon picture I found on flickr:

Pigeon mirror lens

I've then estimated the aperture for the camera:

Annulus aperture

Computed its corresponding point spread function (shown in magnitude on a funny semi-log axis to make the structure visible):

PSF for an annular ring

...and used it to perform a maximium-liklihood based, regularised blind deconvolution to obtain the following 'sharpened pigeon':

Deconvolved pigeon

Now, to my mind, this looks a bit weird. Contrast has definitely been improved, but it isn't entire the step change that one might perhaps naively expect. I've played around with adjusting the filter size -- which obviously makes a huge difference -- and I think it's probably the case that my PSF isn't entirely accurate. Of course, artistically the original is a lot better, and I suspect it always will be, but it strikes me as perhaps odd that we're unable to correct for a known property of the imaging system. What am I doing wrong?

Are there documented examples where people have tried this before? As catadiatropic imaging systems have been used in telescopes for literally centuries, I expect that there's a relatively simple way to up the "contrast" on these interesting devices.

(What happens if you just increase the intensity of the other regions of the image's k-space?)

EDIT: Perhaps I'm just getting my estimate of the aperture wrong. Below is another attempt with a smaller annulus and a smaller obstruction. Are there any Lightroom plugins that let one easily play with these sorts of things, out of curiosity?

Pigeon deconvolved

  • \$\begingroup\$ I'm not clear on what the question really is since any photograph can be 'helped' in photoshop. \$\endgroup\$
    – user50888
    Jul 22, 2017 at 16:53
  • \$\begingroup\$ Though obviously not photos that were never due to the logistics around size and weight of a conventional telephoto and the beefy tripod that goes with it. \$\endgroup\$
    – user50888
    Jul 22, 2017 at 16:53
  • \$\begingroup\$ You're right -- I should add words like "improve sharpness". Also, none of the above was done in photoshop! Will reword... \$\endgroup\$
    – Landak
    Jul 22, 2017 at 17:01
  • 1
    \$\begingroup\$ I think the donut shape IS the point spread function you want, but I also am not really able to make it work. This is what I tried in Mathematica Manipulate[ Show[ImageAdd[ ImageSubtract[ ImageDeconvolve[dove // ImageAdjust, #, Method -> "RichardsonLucy"], ImageMultiply[dove, o]] // ImageAdjust, dove], # // Image // ImageAdjust] &@ ArrayPad[GaussianMatrix[ g]*(DiskMatrix[g] - ArrayPad[DiskMatrix[hole], (g - hole)]), 1], {{g, 14}, 2, 40, 1}, {{hole, 8}, 1, 20, 1}, {o, 0, 20}] \$\endgroup\$
    – Ruud3.1415
    Nov 12, 2017 at 15:09
  • \$\begingroup\$ Wait a second, I was thinking about the PSF of the out of focus parts (i.e. BOKEH) \$\endgroup\$
    – Ruud3.1415
    Nov 15, 2017 at 16:33

2 Answers 2


for a mirror lens, we [or Samyang] know the geometry of the lens pretty exactly, and hence its point spread function.

The first part of this sentence does not naturally give rise to the second. Consider, for example, that most lenses have circular apertures (at least when wide open). Do the images from them all look the same? They do not, and the reason they do not is because they are aberrated. The mirror lens is no different.

Your second image, of the donut, is only a piece of what is often referred to as the generalized pupil function. That function is P(x,y) = A(x,y)*e^(-i*phi(x,y)) - you drew A, and have no knowledge a priori of phi. Your blind deconvolution algorithm, depending how it is constructed, may try to reconstruct phi. In that case, you really can compute the PSF and successfully remove its influence from the image.

However, there are two more issues. Your PSF array and pupil array are the same size, and the pupil extends over the entire array. This forces you into an aliased regime, where Q < 2, and your PSF is not faithful. You need to pad your pupil first before taking its Fourier transform.

the abs in your PSF also implies that the original PSF array is complex. The electromagnetic field in the image plane is complex, the PSF for this type of system is not. People either use the terminology of field PSF and intensity PSF, or coherent and incoherent PSF to distinguish the two. You seem to be modeling the field PSF, when you need the intensity PSF. Take the mod squared of the (properly padded) fourier transform of the generalized pupil function to get the intensity PSF.

If you have that, then yes, you can remove it from the image with no qualms of any sort, only a loss of SNR / increase of noise.

The defocused PSFs will need to be modeled independently, and that is more complicated.

  • \$\begingroup\$ Regarding the PSF the asker posted - it also looks horribly aliased to start with, even forgetting about the padding. Would it make a difference if it had a softer edge? \$\endgroup\$ Dec 8, 2017 at 6:16
  • \$\begingroup\$ The boundary of the pupil mask is probably a bit aliased, but it doesn't look that bad. Embedding it in a bunch of zeros to satisfy at least Q>2 will get rid of the aliasing in the PSF that arises from the thing you're FFTing having edges near the array boundary. \$\endgroup\$ Dec 8, 2017 at 6:20

You actually can have such functionnalities (including your UI) directly in photoshop through the matlab plugin: https://helpx.adobe.com/photoshop/using/photoshop-matlab.html

Few remarks:

  • Sharing code and filters would really help.
  • Your filters look a bit coarse and pixelized.
  • I'm not sure you should use the same (de)convolution filter for the whole image, since you have zones with different focus.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.