Posts

Showing posts with the label OpenCV

ANPR Week 15( Day 71-75): ANPR Code Implementation - II

Last week, most of the code implementation was completed.  Errors and any kinks that occurred were ironed out. Special stress was given to the plate recognition part. GUI implementation was also tried but some issues have crept up. If no possible solution arises,the idea will be dropped. 

ANPR Week 14 (Day 66-70) : ANPR Code Implementation - I

This week using the Mastering OpenCV book, I tried to implement the ANPR algorithm in code form. The plate localization part was stressed this week. Some parts of code are not explained in detail in book. Have to go through code once more to gain better understanding. 

ANPR Week 13 (Day 61-65): ANPR Algorithm

This week was used in understanding the ANPR algorithm and its different components and steps. There are seven primary algorithms that the software requires for identifying a license plate: Plate localization – responsible for finding and isolating the plate on the picture. Plate orientation and sizing – compensates for the skew of the plate and adjusts the dimensions to the required size. Normalization – adjusts the brightness and contrast of the image. Character segmentation – finds the individual characters on the plates. Optical character recognition. Syntactical/Geometrical analysis – check characters and positions against country-specific rules. The averaging of the recognised value over multiple fields/images to produce a more reliable or confident result. Especially since any single image may contain a reflected light flare, be partially obscured or other temporary effect.

ANPR Week 11 (Day 51-55): Training SVM

Most of the week was spent in gathering the images to train SVM, but still I was unable to gather the required number of images. It was quite an interesting week in terms of facing from angry owners to disgruntled guards. Finally I've decided to use the older XML file as it works pretty well with the given specifications. 

ANPR Week 10 (Day 46-50): Extracting Lines, Contours and Components

This week was devoted in learning how to extract lines, contours and components of images. Day 46: Detecting Image Contours with the Canny Operator Day 47:  Detecting Lines in Images with the Hough Transform Day 48: Fitting a Line to a Set of Points Day 49:  Extracting the Components & Contours Day 50: Computing Components & Shape Descriptors

ANPR Week 9 (Day 41-45): Transforming and filtering images

This week using morphological operations, image transformations were done and use of filters on them. Day 41: Opening and Closing Images using Morphological Filters Day 42: Detecting edges and corners using morphological filters Day 43: Filtering Images using Low-pass Filters Day 44: Filtering Images using a Median Filter Day 45: Applying Directional Filters to Detect Edges

ANPR Week 8 (Day 36-40): Counting the pixels with histograms

This week was spent on learning how to count pixels using histograms. Day 36: Computing the Image histogram Day 37: Equalizing the image histogram Day 38: Backprojecting a Histogram to Detect Specific Image Content Day 39: Using the Meanshift Algorithm to Find an Object Day 40: Retrieving Similar Images using Histogram Comparison

ANPR Week 7 (Day 31-35): Processing Images with Classes

This week we learnt how to process images with classes. It helps in revisiting some important concepts of C++ as well. Day 26 - 28: Using strategy pattern in Algorithm Deesign Day 29 - 30: Converting colour spaces. 

ANPR Week 6 (Day 26-30): Manipulating the Pixels

This week we have learnt to manipulate pixels in images. Day 26: Accessing pixel values Day 27:Scanning an image with pointers and iterators Day 28: Writing efficient image scanning loops Day 29: Performing simple image arithmetic Day 30: Defining regions of interest

ANPR Week 5 ( Day 21-25): Playing with Images

For next 7 weeks, we will learn the basics of OpenCV and how to use it to develop applications. For a CS student like me, what matters more than theoretical knowledge is practical knowledge. People with theoretical knowledge are dimes a dozen while those with practical knowledge and innovative ideas are one in a million. The best source  to learn OpenCV for beginners is :  http://www.laganiere.name/opencvCookbook/ This week we have done following tasks: Day 21: Installing OpenCV2 Library on Windows Day 22: Setting up Visual Studio and windows. Day 23: Creating First OpenCv Project Day 24: Loading, displaying and saving images Day 25:Working with Qt 

ANPR Day 20: ANN - Challenges

The major challenge in training ANN is the large dataset required to get more accurate results. More and more unique images are required  for each character. Also all of these images should be normalized and have same size,i.e., 10 x 10 pixels. To get this dataset we have to use the segmented characters produced by SVM - the Ouroboro problem. No clear solution to this problem has been found. 

ANPR Day 19: Training Data Requirements

Today, training data requirements for ANN were identified. It will require more than 20 images for each character. In our case, we will need to gather data for  set of 26 characters (10 numbers + 26 alphabets).

ANPR Day 17: ANN - How will it be used?

Today, the role of ANN in our system was analysed. The main role of ANN in our system was understood which is to recognise different characters present on the number plate. 

ANPR Day 16: What is ANN?

Artificial Neural Network an it s major aspects were understood today. In computer science and related fields, artificial neural networks are computational models inspired by animals' central nervous systems (in particular the brain) that are capable of machine learning and pattern recognition. They are usually presented as systems of interconnected "neurons" that can compute values from inputs by feeding information through the network. For example, in a neural network for handwriting recognition, a set of input neurons may be activated by the pixels of an input image representing a letter or digit. The activations of these neurons are then passed on, weighted and transformed by some function determined by the network's designer, to other neurons, etc., until finally an output neuron is activated that determines which character was read. In layman terms, it is used to identify the unique signature between different classes which falls  under same category.

ANPR Day 15: SVM - Challenges

Today, challenges to to train such a large SVM classifier were identified. A lot of training data is required to train SVM. Under given timeline, such a large dataset may not be collected in time. This is the major challenge in training SVM. 

ANPR Day 14: Training Data Requirements

Today, training data requirements were identified to train SVM. It requires 75 plate and 35 non-plate images. If these requirements are not, earlier data stored in training file (XML) will be used. 

ANPR Day 13 - SVM:How does it work?

The mathematical aspects and its working process was better understood. As well as how to implement  it in the code was also researched. 

ANPR Day 12- SVM: How will it be used?

Today, we got to understand what function it will perform in our proposed system. Support vector machine (SVM) algorithm will be used to classify number plate and non-number plate images. 

ANPR Day 11: What is SVM?

In  machine learning ,  support vector machines  ( SVMs , also  support vector networks ) are  supervised learning  models with associated learning  algorithms  that analyze data and recognize patterns, used for  classification  and  regression analysis .  Given a set of training examples, each marked as belonging to one of two categories, an SVM training algorithm builds a model that assigns new examples into one category or the other, making it a non-probabilistic binary linear classifier.  An SVM model is a representation of the examples as points in space, mapped so that the examples of the separate categories are divided by a clear gap that is as wide as possible. New examples are then mapped into that same space and predicted to belong to a category based on which side of the gap they fall on. In layman terms, SVM is used to differentiate between two different classes of training data.  

ANPR Day 10: Pattern Recognition using Statistical Machine Learning Library

For plate localization and character recognition, pattern recognition algorithms are used to teach machine to identify different patterns. This can be achieved using OpenCV's Statistical Machine Learning Library. Today, we have learnt about them and selected two such pattern recognition algorithms that will be used in this project, i.e., SVM and ANN. These algorithms will be discussed in next two weeks.