SlideShare a Scribd company logo
 
Why read license plates? Is this challenging? Probably if solution is to be versatile… Introduction
Many methods Connected Component Analysis Kwaśnicka, Wawrzyniak [2002] Filtering, Edge Finding, Adaptive Threshold Enyedi, Konyha, Fazekas [2006] Sliding Windows, Histogram Kaushik, Chae, Jo [2009] Machine Learning, Binarization & Extension Chen, Yuille [2004] Machine Learning, Gradient-Based Escalera et al.  Lit. Review
Localize license plate(s) Binarize license plate Extract license plate text Transform text to flat orientation Perform OCR on text Post-process OCR output Methodology
Many solutions assume near-horizontal license plate Chosen approach: Localize by training on text fragments Idea:  Be greedy in identifying possible license plate text, and discard non-license plate text during post-processing  Methodology
What is “license plate text”? Characteristics: Colour Intensity Distribution Entropy Energy Others… 1. Localization
First Attempt: Train on large blocks Failed Characteristics too varied to make good judgments on 1. Localization
Second Attempt: Train on small blocks Success! (well… mostly) Some amount of false positives from reflections, grilles, etc 1. Localization Positive Negative (for white-on-black) ?
Classification AdaBoost : Combines multiple weak classifiers linearly Our eventual classifier: Colour Number of regions in binarized edge thumbnail Size distribution of regions 1. Localization (31 regions) (2nd 0.87 times 1 st ) (7 regions) (2nd 0.50 times 1 st ) (1 region)
Matching back to the input image… Pre-process image by increasing contrast, sharpening to try and reduce blur* Recursively partition image into  quadrants Each  quadrant  is resized to a small  thumbnail Each  thumbnail  is checked against classifier, and judged to be either TEXT or NONTEXT 1. Localization *Possible blur removal approach:  http://cs.nyu.edu/~fergus/research/deblur.html
Example Result 1 1. Localization
Example Result 2 1. Localization
Example Result 3 1. Localization
So how do we actually localize? “ Intelligent guessing” Connected region (of same granularity) 1. Localization
2. K-means clustering (used K=2, multiple iterations) 1. Localization
How many candidate regions do we get? Usually, around 10 to 50 More if no license plates are found at the default scale, and we have to subdivide the image further 1. Localization
1. Localization (35 candidate regions for this example)
Why go to all this trouble? For each candidate region, we have to attempt to extract text Therefore, the localization procedure cuts down tremendously on the amount of processing needed A brute force search would otherwise yield astronomical numbers of candidate regions, due to the sheer number of combinations 1. Localization
We resize each candidate region to around 40000 pixels, and  convert it to black and white Thankfully, this is relatively simple since a license plate is supposed to have high contrast between the plate colour and letter colour We simply convert to grayscale, quantize the image to two colours, and normalize it 2. Binarization
We create an edge image (high contrast, remember) (also works whatever the license plate colour) We flood fill and keep only regions within certain dimensions relative to the edge image 3. Extraction
We expect at most some skew of the license plate (no complex nonlinear distortions) Eliminate remaining blobs unlikely to be characters 4. Transformation Too far Too short
Study the character blobs to predict whether the license plate has one or two lines Draw lines between all midpoints and see if there is a line that is close enough to all other midpoints (Justified by linearity of characters) 4. Transformation min_d_max = 68.5 px min_d_max = 2.11 px
Map the corners to a standard template long rectangle if one-lined, and fat rectangle if two-lined (a simple homography, as in Lab 3) 4. Transformation
We used Google  Tesseract  as suggested Unfortunately, the raw results were not as good as expected Possible explanation: License plate fonts are in general distinct from normal text font, which caused poor performance Possible solution: Train Tesseract exclusively on license plate fonts 5. OCR produces “ SGZ 35BBG ”
Standard Singapore license plates consist of two or three letters, then one to four digits, and one final letter The final letter is a checksum for the other characters 6. Post-processing
The formula is*: Let the license plate have the format [S] AB CDEF  X Then, we take the value V = ((A*9)+(B*4)+(C*5)+(D*4)+(E*3)+(F*2)) mod 19 We can then determine X as follows: It is therefore very easy to check if an OCR output is a valid license plate number 6. Post-processing *Formula from:  http://gangasudhan.com/blog/2008/07/nric-fin-number-suffix-checker.html   B C D E G H J K L M P R S T U X Y Z A X 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 V
Given the accuracy (or lack thereof) of OCR when it comes to license plate fonts, it might be worthwhile to use this knowledge to repair poor OCR output We note that OCR performance seems to be better on letters than on digits in general Idea:  If exactly one of the digits is misinterpreted as a letter, we can use the other characters (including the checksum) to correct it, since there are only ten possibilities for a digit This is less useful once two or more digits are misinterpreted… 6. Post-processing
We used Perl (with ImageMagick) for most of the coding Test system is an Intel Core 2 Duo 3GHz CPU running Windows, with 3GB of RAM Runtime for Localization: ~2 or 3 minutes for standard granularity (6 levels of recursion) Runtime for Binarization, Extraction: Varies; a few seconds per candidate region Runtime for Transformation: Varies; ~10 seconds per candidate region Runtime for OCR, Post-processing: negligible Total expected runtime: 5-10 minutes Implementation
A framework for a robust license plate recognition program has been implemented It has the following properties: Scale-invariant Deals with  moderate skew Deals with  multiple license plates Possibly corrects erroneous reads Future challenges: Characters that run into each other More sophisticated blur removal Increase speed by reimplementation in a faster programming language Conclusion
Questions?

More Related Content

PPTX
License Plate recognition
PDF
License plate recognition
PPTX
Automatic no. plate recognition
PPTX
Number plate recognition using matlab
PPTX
car number plate detection using matlab image & video processing
PPTX
Number plate recognition system using matlab.
PPTX
Automatic vehicle license plate detection using VEDA
PDF
Ay36304310
License Plate recognition
License plate recognition
Automatic no. plate recognition
Number plate recognition using matlab
car number plate detection using matlab image & video processing
Number plate recognition system using matlab.
Automatic vehicle license plate detection using VEDA
Ay36304310

What's hot (20)

PPTX
AUTOMATIC CAR LICENSE PLATE RECOGNITION USING VEDA
PPT
License Plate Recognition
PDF
IRJET- Automatic Number Plate Recognition System in Real Time
PDF
License plate recognition.
PPTX
Automatic number plate recognition using matlab
PDF
License Plate Recognition using Morphological Operation.
PDF
Optical Character Recognition
PDF
ieee_my_proj
PPTX
Automatic Car Number Plate Detection and Recognition using MATLAB
PPT
ANPR based Security System Using ALR
PDF
Bangla Optical Digits Recognition using Edge Detection Method
PDF
Real-Time Multiple License Plate Recognition System
PPT
Ala Stolpnik's Standard Model talk
PPTX
Traffic sign detection via graph based ranking and segmentation
PPTX
Vehicle number plate recognition using matlab
PDF
Help the Genetic Algorithm to Minimize the Urban Traffic on Intersections
PDF
PDF
Free-scale Magnification for Single-Pixel-Width Alphabetic Typeface Characters
PDF
Self-Directing Text Detection and Removal from Images with Smoothing
PDF
The automatic license plate recognition(alpr)
AUTOMATIC CAR LICENSE PLATE RECOGNITION USING VEDA
License Plate Recognition
IRJET- Automatic Number Plate Recognition System in Real Time
License plate recognition.
Automatic number plate recognition using matlab
License Plate Recognition using Morphological Operation.
Optical Character Recognition
ieee_my_proj
Automatic Car Number Plate Detection and Recognition using MATLAB
ANPR based Security System Using ALR
Bangla Optical Digits Recognition using Edge Detection Method
Real-Time Multiple License Plate Recognition System
Ala Stolpnik's Standard Model talk
Traffic sign detection via graph based ranking and segmentation
Vehicle number plate recognition using matlab
Help the Genetic Algorithm to Minimize the Urban Traffic on Intersections
Free-scale Magnification for Single-Pixel-Width Alphabetic Typeface Characters
Self-Directing Text Detection and Removal from Images with Smoothing
The automatic license plate recognition(alpr)
Ad

Viewers also liked (18)

PPTX
Automatic Number Plate Recognition (ANPR)
DOC
Automatic number plate recognition
PPTX
Vehicle Number Plate Recognition System
PPT
Automatic number plate recognition
PPTX
automatic number plate recognition
PPT
AUTOMATIC LICENSE PLATE RECOGNITION SYSTEM FOR INDIAN VEHICLE IDENTIFICATION ...
PDF
LICENSE NUMBER PLATE RECOGNITION SYSTEM USING ANDROID APP
PDF
Matlab titles
PDF
Thesis Licenseplaterecognitionincomplexscenes Fulldocument
PDF
Smart License Plate Recognition System based on Image Processing
PPT
car plate recognition
PDF
Iaetsd an efficient way of detecting a numbers in car
PDF
Final Thesis Presentation Licenseplaterecognitionincomplexscenes
PPTX
Vehicle access control using anpr
PPTX
Automatic Number Plate Recognition(ANPR) System Project
PPTX
Automatic number-plate-recognition
PDF
Automatic license plate recognition system for indian vehicle identification ...
PPT
Character recognition from number plate written in assamese language
Automatic Number Plate Recognition (ANPR)
Automatic number plate recognition
Vehicle Number Plate Recognition System
Automatic number plate recognition
automatic number plate recognition
AUTOMATIC LICENSE PLATE RECOGNITION SYSTEM FOR INDIAN VEHICLE IDENTIFICATION ...
LICENSE NUMBER PLATE RECOGNITION SYSTEM USING ANDROID APP
Matlab titles
Thesis Licenseplaterecognitionincomplexscenes Fulldocument
Smart License Plate Recognition System based on Image Processing
car plate recognition
Iaetsd an efficient way of detecting a numbers in car
Final Thesis Presentation Licenseplaterecognitionincomplexscenes
Vehicle access control using anpr
Automatic Number Plate Recognition(ANPR) System Project
Automatic number-plate-recognition
Automatic license plate recognition system for indian vehicle identification ...
Character recognition from number plate written in assamese language
Ad

Similar to License Plate Recognition (20)

PPTX
Presentation for top (Hotel Review).pptx
PDF
Driving Moore's Law with Python-Powered Machine Learning: An Insider's Perspe...
PPTX
Symbolic Execution And KLEE
PPTX
고급컴파일러구성론_개레_230303.pptx
PPTX
OCR using Tesseract
PPTX
OCR using Tesseract
PDF
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
PDF
Streaming Punctuation: A Novel Punctuation Technique Leveraging Bidirectional...
PDF
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
PDF
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
PPTX
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
PPT
Script Identification Using MATLAB
PDF
Hardware Implementations of RS Decoding Algorithm for Multi-Gb/s Communicatio...
PPTX
Support Vector Machine (SVM) Based Classifier For Khmer Printed Character-set...
PDF
QuadIron An open source library for number theoretic transform-based erasure ...
PPTX
Trans coder
PPTX
Improving Code Quality Through Effective Review Process
DOCX
Assignment-1-NF.docx
PPTX
Next-generation sequencing format and visualization with ngs.plot
PPTX
Rust presentation convergeconf
Presentation for top (Hotel Review).pptx
Driving Moore's Law with Python-Powered Machine Learning: An Insider's Perspe...
Symbolic Execution And KLEE
고급컴파일러구성론_개레_230303.pptx
OCR using Tesseract
OCR using Tesseract
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
Streaming Punctuation: A Novel Punctuation Technique Leveraging Bidirectional...
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
STREAMING PUNCTUATION: A NOVEL PUNCTUATION TECHNIQUE LEVERAGING BIDIRECTIONAL...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
Script Identification Using MATLAB
Hardware Implementations of RS Decoding Algorithm for Multi-Gb/s Communicatio...
Support Vector Machine (SVM) Based Classifier For Khmer Printed Character-set...
QuadIron An open source library for number theoretic transform-based erasure ...
Trans coder
Improving Code Quality Through Effective Review Process
Assignment-1-NF.docx
Next-generation sequencing format and visualization with ngs.plot
Rust presentation convergeconf

Recently uploaded (20)

PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Getting Started with Data Integration: FME Form 101
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
PDF
STKI Israel Market Study 2025 version august
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
TLE Review Electricity (Electricity).pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPT
What is a Computer? Input Devices /output devices
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Modernising the Digital Integration Hub
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Enhancing emotion recognition model for a student engagement use case through...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Getting Started with Data Integration: FME Form 101
Hindi spoken digit analysis for native and non-native speakers
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
STKI Israel Market Study 2025 version august
A novel scalable deep ensemble learning framework for big data classification...
DP Operators-handbook-extract for the Mautical Institute
Web App vs Mobile App What Should You Build First.pdf
A comparative study of natural language inference in Swahili using monolingua...
TLE Review Electricity (Electricity).pptx
observCloud-Native Containerability and monitoring.pptx
Programs and apps: productivity, graphics, security and other tools
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Getting started with AI Agents and Multi-Agent Systems
NewMind AI Weekly Chronicles – August ’25 Week III
What is a Computer? Input Devices /output devices
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Modernising the Digital Integration Hub
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf

License Plate Recognition

  • 1.  
  • 2. Why read license plates? Is this challenging? Probably if solution is to be versatile… Introduction
  • 3. Many methods Connected Component Analysis Kwaśnicka, Wawrzyniak [2002] Filtering, Edge Finding, Adaptive Threshold Enyedi, Konyha, Fazekas [2006] Sliding Windows, Histogram Kaushik, Chae, Jo [2009] Machine Learning, Binarization & Extension Chen, Yuille [2004] Machine Learning, Gradient-Based Escalera et al. Lit. Review
  • 4. Localize license plate(s) Binarize license plate Extract license plate text Transform text to flat orientation Perform OCR on text Post-process OCR output Methodology
  • 5. Many solutions assume near-horizontal license plate Chosen approach: Localize by training on text fragments Idea: Be greedy in identifying possible license plate text, and discard non-license plate text during post-processing Methodology
  • 6. What is “license plate text”? Characteristics: Colour Intensity Distribution Entropy Energy Others… 1. Localization
  • 7. First Attempt: Train on large blocks Failed Characteristics too varied to make good judgments on 1. Localization
  • 8. Second Attempt: Train on small blocks Success! (well… mostly) Some amount of false positives from reflections, grilles, etc 1. Localization Positive Negative (for white-on-black) ?
  • 9. Classification AdaBoost : Combines multiple weak classifiers linearly Our eventual classifier: Colour Number of regions in binarized edge thumbnail Size distribution of regions 1. Localization (31 regions) (2nd 0.87 times 1 st ) (7 regions) (2nd 0.50 times 1 st ) (1 region)
  • 10. Matching back to the input image… Pre-process image by increasing contrast, sharpening to try and reduce blur* Recursively partition image into quadrants Each quadrant is resized to a small thumbnail Each thumbnail is checked against classifier, and judged to be either TEXT or NONTEXT 1. Localization *Possible blur removal approach: http://cs.nyu.edu/~fergus/research/deblur.html
  • 11. Example Result 1 1. Localization
  • 12. Example Result 2 1. Localization
  • 13. Example Result 3 1. Localization
  • 14. So how do we actually localize? “ Intelligent guessing” Connected region (of same granularity) 1. Localization
  • 15. 2. K-means clustering (used K=2, multiple iterations) 1. Localization
  • 16. How many candidate regions do we get? Usually, around 10 to 50 More if no license plates are found at the default scale, and we have to subdivide the image further 1. Localization
  • 17. 1. Localization (35 candidate regions for this example)
  • 18. Why go to all this trouble? For each candidate region, we have to attempt to extract text Therefore, the localization procedure cuts down tremendously on the amount of processing needed A brute force search would otherwise yield astronomical numbers of candidate regions, due to the sheer number of combinations 1. Localization
  • 19. We resize each candidate region to around 40000 pixels, and convert it to black and white Thankfully, this is relatively simple since a license plate is supposed to have high contrast between the plate colour and letter colour We simply convert to grayscale, quantize the image to two colours, and normalize it 2. Binarization
  • 20. We create an edge image (high contrast, remember) (also works whatever the license plate colour) We flood fill and keep only regions within certain dimensions relative to the edge image 3. Extraction
  • 21. We expect at most some skew of the license plate (no complex nonlinear distortions) Eliminate remaining blobs unlikely to be characters 4. Transformation Too far Too short
  • 22. Study the character blobs to predict whether the license plate has one or two lines Draw lines between all midpoints and see if there is a line that is close enough to all other midpoints (Justified by linearity of characters) 4. Transformation min_d_max = 68.5 px min_d_max = 2.11 px
  • 23. Map the corners to a standard template long rectangle if one-lined, and fat rectangle if two-lined (a simple homography, as in Lab 3) 4. Transformation
  • 24. We used Google Tesseract as suggested Unfortunately, the raw results were not as good as expected Possible explanation: License plate fonts are in general distinct from normal text font, which caused poor performance Possible solution: Train Tesseract exclusively on license plate fonts 5. OCR produces “ SGZ 35BBG ”
  • 25. Standard Singapore license plates consist of two or three letters, then one to four digits, and one final letter The final letter is a checksum for the other characters 6. Post-processing
  • 26. The formula is*: Let the license plate have the format [S] AB CDEF X Then, we take the value V = ((A*9)+(B*4)+(C*5)+(D*4)+(E*3)+(F*2)) mod 19 We can then determine X as follows: It is therefore very easy to check if an OCR output is a valid license plate number 6. Post-processing *Formula from: http://gangasudhan.com/blog/2008/07/nric-fin-number-suffix-checker.html B C D E G H J K L M P R S T U X Y Z A X 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 V
  • 27. Given the accuracy (or lack thereof) of OCR when it comes to license plate fonts, it might be worthwhile to use this knowledge to repair poor OCR output We note that OCR performance seems to be better on letters than on digits in general Idea: If exactly one of the digits is misinterpreted as a letter, we can use the other characters (including the checksum) to correct it, since there are only ten possibilities for a digit This is less useful once two or more digits are misinterpreted… 6. Post-processing
  • 28. We used Perl (with ImageMagick) for most of the coding Test system is an Intel Core 2 Duo 3GHz CPU running Windows, with 3GB of RAM Runtime for Localization: ~2 or 3 minutes for standard granularity (6 levels of recursion) Runtime for Binarization, Extraction: Varies; a few seconds per candidate region Runtime for Transformation: Varies; ~10 seconds per candidate region Runtime for OCR, Post-processing: negligible Total expected runtime: 5-10 minutes Implementation
  • 29. A framework for a robust license plate recognition program has been implemented It has the following properties: Scale-invariant Deals with moderate skew Deals with multiple license plates Possibly corrects erroneous reads Future challenges: Characters that run into each other More sophisticated blur removal Increase speed by reimplementation in a faster programming language Conclusion