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?