Thanks for helping crackwitz.
Just confirmed that it is at the call to calcPSF - if I convertAndNormalize just the output from that call I get a black image, and the same if I convertAndNormalize() the output of calcWienerFilter()
i.e.
Mat psf = calcPSF( roi.size(), getPsfRadius() );
Mat done = convertAndNormalize(psf);
should the psf show up as a (more or less) white circle on a black background if it is displayed?