For my final project at university, I'm developing a vehicle license plate detection application. I consider myself an intermediate programmer, however my mathematics knowledge lacks anything above secondary school, which makes producing the right formulas harder than it probably should be.
I've spend a good amount of time looking up academic papers such as:
- Detecting Vehicle License Plates in Images
- Robust License Plate Detection using Image Saliency
- Local Enhancement of Car Image for License Plate Detection
When it comes to the math, I'm lost. Due to this testing various graphic images proved productive, for example:
However this approach only worked to that particular image, and if the techniques were applied to different images, I'm sure a poorer conversion would occur. I've read about a formula called the
bottom hat morphology transform, which does the following:
Basically, the trans- formation keeps all the dark details of the picture, and eliminates everything else (including bigger dark regions and light regions).
I can't find much information on this, however the image within the documentation near the end of the report shows its effectiveness.
- Developing in C#
- Confining the project to UK registration plates only
- I can choose the images to convert as a demonstration
I need advice on what transformation techniques I should focus on developing, and what algorithms can help me.
EDIT: New information present on Continued - Vehicle License Plate Detection
There are a number of approaches you can take but the first strategy that pops into mind is to:
- Discovery/research: Identify the set of colors and fonts that you may need to identify. If your sample picture is representative of most British plates then your job is made easier. E.g. Simple, singular font and black lettering on a white background
- Code: Attempt to identify a rectangular region of an image where the colors are predominantly white and black. This is not a terribly math-heavy problem and it should give you the license plate region to concentrate on.
- Code: Do some clean up on your subregion such conversion to pure black and white (monochrome) and perhaps scaling/shifting into a nice, tight rectangle.
- Use API: Next employ an existing OCR (optical character recognition) algorithm on your sub-selected image region so see if you can read the text.
Like I said, this is one strategy of many but it comes to mind as one requiring the least amount of heavy math... that is if you can find an OCR implementation that will work for you.