Deblurring algorithm to precede thresholding - speed over accuracy I'm writing an app that recognizes Sudoku puzzles from a camera input.  I'd like to remove camera blur from the images to improve recognition.  Here is an example image:



Since I'm processing a continuous camera feed, I'm concerned about speed, since slow algorithms will degrade my frame rate.  On the other hand, the technique doesn't have to be super-accurate, since I will be thresholding/binarizing the image afterwards.  The deblurring algorithm I use only needs to be accurate enough so that the digits will be clear after thresholding.  Here is what the image currently looks like after a segmented Otsu threshold (the threshold level is selected independently for each 3x3 grid of cells):



I'm looking to write an implementation that's compatible with OpenCV data structures.  This means that an off-the-shelf Matlab solution isn't an option.  However, I found the Matlab documentation on image deblurring to be quite helpful in understanding the general principles, as well as this site.  The Matlab functions are all computationally-intensive in any case, and I wasn't able to pick an estimated point-spread function (PSR) that gave good results.

What are your suggestions for a fast deblurring algorithm that allows features to be distinguished easily by a subsequent threshold?
You only need to find and report positions of nine specific symbols.  You can do this by computing correlations (done quickly by multiplying in Fourier space) with samples of the nine digits snipped from a typical puzzle image, blurred as it is.  All blurred '9' will look the same, and likewise all other digits.  I'm assuming puzzle images are taken with the same camera the same way.  

It might work better working on high-pass filtered versions of the input puzzle image and image snips, by subtracting from each a more-blurred copy.