Sfoglia il codice sorgente

Jayke zijn mail gemerded, aantal aanpassingen

Gijs van der Voort 14 anni fa
parent
commit
ed5d351a37
1 ha cambiato i file con 71 aggiunte e 52 eliminazioni
  1. 71 52
      docs/plan.tex

+ 71 - 52
docs/plan.tex

@@ -1,6 +1,6 @@
 \documentclass[a4paper]{article}
 
-\title{Teaching a computer to learn, find and read licence plates}
+\title{Using local binary patterns to read license plates in photographs}
 \date{November 17th, 2011}
 
 % Paragraph indentation
@@ -11,35 +11,41 @@
 \maketitle
 
 \section*{Project members}
-Gijs van der Voort\\Richard Torenvliet\\Jayke Meijer\\Tadde\"us Kroes\\Fabi\'en Tesselaar
+Gijs van der Voort\\
+Richard Torenvliet\\
+Jayke Meijer\\
+Tadde\"us Kroes\\
+Fabi\'en Tesselaar
 
 \tableofcontents
 \setcounter{secnumdepth}{1}
 
-\section{Introduction}
+\section{Problem description}
 
-Licence plates are used all over the world. The plates are, usually, attached to the front and rear
-of a motorised vehicle and used for identifying this vehicle. Every
-country can have more or less its own version of a licence plate, but all these systems do not 
-differ greatly. We will be focusing on the Dutch system for licence plates.
+license plates are used for uniquely identifying motorized vehicles and are 
+made to be read by humans from great distances and in all kinds of weather 
+conditions.
 
-\section{Problem Description}
+Reading license plates with a computer is much more difficult. Our dataset
+contains photographs from license plates from all sorts of angles and distance. 
+Meaning that not only do we have to implement a method to read the actual 
+characters, but also have to determine the location of the license plate and its
+transformation due to different angles.
 
-License plates are used for identification and thus made to recognize from great
-distances and still be seen in many weather conditions. Our learning set of photos contains
-'' ik weet niet precies wat voor camera ''. The angle in which these pictures are taken or the angle 
-of the approaching vehicles are always different and some licence plates are a bit dirty,
-but for a human they are still pretty easy to identify. A computer or perhaps a small
-chipset will need to be thoroughly practiced. In short our program must be able to
-do the following:
+We will focus our research in reading the transformed characters of the 
+lisence plate, on which we know where the letters are located. This is because
+Microsoft recently published a new and effective method to find the location of 
+text in an image.
+
+In short our program must be able to do the following:
 
 \begin{enumerate}
-\item Find the location of the license plate.
-\item Use perspective transformations to obtain an upfront view.
+\item Use perspective transformation to obtain an upfront view of license plate.
 \item Reduce noise where possible.
-\item Find the locations of each letter and extract it.
-\item Apply a Local Binary Pattern algorithm on each letter.
-\item Match the found patterns with results from the learning set and return the best match for each letter.
+\item Extract each character using the location points in the info file.
+\item Transform character to a normal form. 
+\item Create a local binary pattern histogram vector.
+\item Match the found vector with the learning set.
 \end{enumerate}
 
 \section{Solution}
@@ -47,55 +53,68 @@ do the following:
 Now that we know the problem we can start with stating our solution. This will
 come in a few steps as well.
 
-\subsection{Localizing the plate}
-
-The photos are of very high contrast. Most of the time only the lights of a vehicle
-are visible in addition to the license plate. We can first crop the image until
-it finds brighter pixel values in a row or column. Then we can apply ''?? weet niet hoor'' local histogram
-matching to find out whether we have a light or license plate.
-
-\subsection{Transformations}
+\subsection{Transformation}
 
-Once the locations of the four corner points of the license plate have been
-found, a simple perspective transformation will be sufficient to transform and
-resize the plate to a normalized format.
+A simple perspective transformation will be sufficient to transform and resize 
+the plate to a normalized format. Corners of license plates can be found in the
+data files.
 
 \subsection{Reducing noise}
 
-Weet niet precies hoe, maar van die kleine rondjes / vlekjes / stipjes moeten
-we wel een beetje weghalen want die maken het wel een beetje lelijk
-
-Taddeus: Ik brainstorm hier een beetje...:
-
 Small amounts of noise will probably be suppressed by usage of a Gaussian
-filter. A real problem occurs in very dirty licence plates, where branches and
+filter. A real problem occurs in very dirty license plates, where branches and
 dirt over a letter could radically change the local binary pattern. A question
 we can ask ourselves here, is whether we want to concentrate ourselves on
-these exceptional cases. By law, license plates have to be readable.
-Therefore, we will first direct our attention at getting a higher score in the
-'regular' test set before addressing these cases.
+these exceptional cases. By law, license plates have to be readable. Therefore, 
+we will first direct our attention at getting a higher score in the 'regular' 
+test set before addressing these cases. Looking at how LBP work, there is a good 
+change that our features are, to a certain degree, indifferent to noise on the 
+plates.
 
 \subsection{Extracting a letter}
 
-De karakteristiek bepalen van het dash/streepje (-) dan heb je in elk geval al
-drie groepen met maar 1 of 2 letters (ws 2). Hier kun je volgens mij dan wel 
-makkelijk zoeken op een overgang van letter naar andere letter omdat er stuk
-white-space tussenzit
+Because we are already given the locations of the characters, we only need to 
+transform those locations using the same perspective transform used to to
+create a front facing license plate.
 
-\subsection{Local binary patterns}
+\begin{enumerate}
+\item Crop the image in such a way that the character precisely fits the image.
+\item Scale the image to a standard height.
+\item Extend the image on either the left or right side to a certain width. 
+\end{enumerate}
+
+The resulting image will always have the same size, the character contained will
+always be of the same height, and the character will alway be positioned at 
+either the left of right side of the image.
 
-Hier moet een vrij groot verhaal omdat dit ons belangrijkste algoritme moet zijn
+\subsection{Local binary patterns}
 
-+ not sure if it will work out :o
+Once we have separate digits and characters, we intend to use Local Binary 
+Patterns to determine what character or digit we are dealing with. Local Binary 
+Patters are a way to classify a texture, because it can create a histogram which
+describes the distribution of line directions in the image. Since letters on a 
+license plate are mainly build up of straight lines and simple curves, it should 
+theoretically be possible to identify these using Local Binary Patterns.
 
-\subsection{Matching the database}
+This will actually be the first thing we implement, since it is not known if it 
+will give the desired results. Our first goal is therefore a proof of concept 
+that using LBP's is a good way to determine which character we are dealing with.
 
-Als we al die histogrammen opslaan, hoe gaan we dat slim met elkaar vergelijken
-(of naja sneller dan brute force)
+Important to note is that by now, we have transformed this letter to a standard 
+size, which eliminates the need to normalize the histograms generated by the 
+algorithm.
 
+Once we have a Local Binary Pattern of the character, we use a Support Vector 
+Machine to determine what letter we are dealing with. For this, the feature 
+vector of the image will be a concatenation of the histograms of the cells in 
+the image.
 
-\section{Conclusion}
+\subsection{Matching the database}
 
-This will be fun.
+In order to determine what character we are dealing with, we use a SVM, as said 
+before. To prevent us from having to teach this SVM each time we start the 
+program, we are going to save the SVM to a pickle object, which packs an object 
+in Python to a certain data format, so it can be unpacked somewhere else, or, in 
+our case, when executing the program to identify a character.
 
 \end{document}