Tuesday 16 September 2008

COCR, markov-chains and QED*

Although ray-tracing is fun :) it is not my only CUDA project at the moment. The first one I did was entitled "cocr"  - I really have to come up with a better naming convention...  It was my cuda competition entry and was a bit of a rushed job only having obtained a cuda capable graphics card a few days before the deadline.

I've held off posting many details of it here until judging was finished. But as there doesnt seem to be any news I think I can safely assume it didn't place anywhere (pity as the prizes were rather yummy for a developer).  Cocr is an implementation of a very simple template matching ocr system.

The cuda implementation allows for exceptionally fast image manipulation, cleaning and segmentation before being presented to the template based ocr system.  Traditional cpu based ocr systems are very slow, especially in the image rotation, cleaning etc departments and although cocr is by no means a complete ocr package it is orders of magnitude faster than the various cpu based ones I've tried. With a bit more work and an additional of a neural network ocr it could easily become a system able to do greater than realtime ocr'ing.  Neural networks are extremely well suited to GPU implementations due to their inherit parallelism. I will post more snippets and modules of the system here over the coming weeks.

This brings me rather nicely to the subject of markov-chains. Hidden markov-chains are used in many fields but have particular application in this context to ocr'ing and speech recognition. I am not currently aware of any gpu/cuda based implementations of these (please drop me a note if you see any) so they will form another ongoing project.

* well maybe not...  But what with all the LHC hype it made you look :p

1 comment:

  1. Just in case someone wants to toy with something markov-like:
    http://antonalexeev.hop.ru/markov/ :)