Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
licenseplates
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Taddeüs Kroes
licenseplates
Commits
093ff345
Commit
093ff345
authored
Nov 18, 2011
by
Taddeüs Kroes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Spell- and sentence-checked plan.tex.
parent
fb42b7ee
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
52 deletions
+60
-52
.gitignore
.gitignore
+1
-0
docs/plan.tex
docs/plan.tex
+59
-52
No files found.
.gitignore
View file @
093ff345
...
@@ -6,3 +6,4 @@
...
@@ -6,3 +6,4 @@
*.log
*.log
*.synctex.gz
*.synctex.gz
*.toc
*.toc
*.out
docs/plan.tex
View file @
093ff345
\documentclass
[a4paper]
{
article
}
\documentclass
[a4paper]
{
article
}
\usepackage
{
hyperref
}
\title
{
Using local binary patterns to read license plates in photographs
}
\title
{
Using local binary patterns to read license plates in photographs
}
\date
{
November 17th, 2011
}
\date
{
November 17th, 2011
}
...
@@ -22,30 +24,31 @@ Fabi\'en Tesselaar
...
@@ -22,30 +24,31 @@ Fabi\'en Tesselaar
\section
{
Problem description
}
\section
{
Problem description
}
license plates are used for uniquely identifying motorized vehicles and are
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
made to be read by humans from great distances and in all kinds of weather
conditions.
conditions.
Reading license plates with a computer is much more difficult. Our dataset
Reading license plates with a computer is much more difficult. Our dataset
contains photographs
from license plates from all sorts of angles and distance.
contains photographs
of license plates from various angles and distances. This
Meaning that not only do we have to implement a method to read the actual
means 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
characters, but also have to determine the location of the license plate and
transformation due to different angles.
its
transformation due to different angles.
We will focus our research
in reading the transformed characters of the
We will focus our research
on reading the transformed characters on the
li
sence plate, on
which we know where the letters are located. This is because
li
cense plate, of
which we know where the letters are located. This is because
Microsoft recently published a new and effective method to find the location of
Microsoft recently published a new and effective method to find the location of
text in an image.
text in an image.
In short our program must be able to do the following:
In short our program must be able to do the following:
\begin{enumerate}
\begin{enumerate}
\item
Use perspective transformation to obtain an upfront view of license plate.
\item
Use perspective transformation to obtain an upfront view of license
\item
Reduce noise where possible.
plate.
\item
Extract each character using the location points in the info file.
\item
Reduce noise where possible.
\item
Transform character to a normal form.
\item
Extract each character using the location points in the info file.
\item
Create a local binary pattern histogram vector.
\item
Transform character to a normal form.
\item
Match the found vector with the learning set.
\item
Create a local binary pattern histogram vector.
\item
Match the found vector with a learning set.
\end{enumerate}
\end{enumerate}
\section
{
Solution
}
\section
{
Solution
}
...
@@ -55,66 +58,70 @@ come in a few steps as well.
...
@@ -55,66 +58,70 @@ come in a few steps as well.
\subsection
{
Transformation
}
\subsection
{
Transformation
}
A simple perspective transformation will be sufficient to transform and resize
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
the plate to a normalized format.
The corner positions of license plates
in the
data
files
.
data
set are supplied together with the dataset
.
\subsection
{
Reducing noise
}
\subsection
{
Reducing noise
}
Small amounts of noise will probably be suppressed by usage of a Gaussian
Small amounts of noise will probably be suppressed by usage of a Gaussian
filter. A real problem occurs in very dirty license 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
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
we can ask ourselves here, is whether we want to concentrate ourselves on these
these exceptional cases. By law, license plates have to be readable. Therefore,
exceptional cases. By law, license plates have to be readable. Therefore, we
we will first direct our attention at getting a higher score in the 'regular'
will first direct our attention at getting a higher score in the 'regular' test
test set before addressing these cases. Looking at how LBP work, there is a good
set before addressing these cases. Considered the fact that the LBP algorithm
change that our features are, to a certain degree, indifferent to noise on the
divides a letter into a lot of cells, there is a good change that a great
plates.
number of cells will still match the learning set, and thus still return the
correct character as a best match. Therefore, we expect the algorithm to be
very robust when dealing with noisy images.
\subsection
{
Extracting a letter
}
\subsection
{
Extracting a letter
}
Because we are already given the locations of the characters, we only need to
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
transform those locations using the same perspective transform
ation used
to
create a front facing license plate.
create a front facing license plate.
\begin{enumerate}
\begin{enumerate}
\item
Crop the image in such a way that the character precisely fits the image.
\item
Crop the image in such a way that the character precisely fits the
\item
Scale the image to a standard height.
image.
\item
Extend the image on either the left or right side to a certain width.
\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}
\end{enumerate}
The resulting image will always have the same size, the character contained
will
The resulting image will always have the same size, the character contained
always be of the same height, and the character will alway be positioned at
will always be of the same height, and the character will alway be positioned
either the left of right side of the image.
at
either the left of right side of the image.
\subsection
{
Local binary patterns
}
\subsection
{
Local binary patterns
}
Once we have separate digits and characters, we intend to use Local Binary
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
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
Patters are a way to classify a texture, because it can create a histogram
describes the distribution of line directions in the image. Since letters on a
which describes the distribution of line directions in the image. Since letters
license plate are mainly build up of straight lines and simple curves, it should
on a license plate are mainly build up of straight lines and simple curves, it
theoretically be possible to identify these using Local Binary Patterns.
should
theoretically be possible to identify these using Local Binary Patterns.
This will actually be the first thing we implement, since it is not known if it
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
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.
that using LBP's is a good way to determine which character we are dealing
with.
Important to note is that by now, we have transformed this letter to a standard
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
size, which eliminates the need to normalize the histograms generated by the
algorithm.
algorithm.
Once we have a Local Binary Pattern of the character, we use a Support Vector
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
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
vector of the image will be a concatenation of the histograms of the cells in
the image.
the image.
\subsection
{
Matching the database
}
\subsection
{
Matching the database
}
In order to
determine what character we are dealing with, we use a SVM, as said
In order to
recognize what character we are dealing with, we use a Support
before. To prevent us from having to teach this SVM each time we start the
Vector Machine. The SVM can be trained with a subsection of the given dataset
program, we are going to save the SVM to a pickle object, which packs an object
called the ''Learning set''. Once trained, the entire classifier can be saved
in Python to a certain data format, so it can be unpacked somewhere else, or, in
as a Pickle object
\footnote
{
See
our case, when executing the program to identify a character
.
\url
{
http://docs.python.org/library/pickle.html
}}
for later usage
.
\end{document}
\end{document}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment