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
4733cd46
Commit
4733cd46
authored
Dec 19, 2011
by
Richard Torenvliet
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:taddeus/licenseplates
parents
04c5baa7
6788fda4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
17 deletions
+54
-17
docs/verslag.tex
docs/verslag.tex
+53
-16
src/ClassifierTest.py
src/ClassifierTest.py
+1
-1
No files found.
docs/verslag.tex
View file @
4733cd46
...
@@ -21,6 +21,7 @@ Tadde\"us Kroes\\
...
@@ -21,6 +21,7 @@ Tadde\"us Kroes\\
Fabi
\'
en Tesselaar
Fabi
\'
en Tesselaar
\tableofcontents
\tableofcontents
\setcounter
{
secnumdepth
}{
1
}
\setcounter
{
secnumdepth
}{
1
}
\section
{
Problem description
}
\section
{
Problem description
}
...
@@ -32,13 +33,9 @@ conditions.
...
@@ -32,13 +33,9 @@ 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 of license plates from various angles and distances. This
contains photographs of license plates from various angles and distances. This
means 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
characters, but given the location of the license plate and each individual
its transformation due to different angles.
character, we must make sure we transform each character to a standard form.
This has to be done or else the local binary patterns will never match!
We will focus our research on reading the transformed characters on the
license 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
text in an image.
Determining what character we are looking at will be done by using Local Binary
Determining what character we are looking at will be done by using Local Binary
Patterns. The main goal of our research is finding out how effective LBP's are
Patterns. The main goal of our research is finding out how effective LBP's are
...
@@ -47,19 +44,31 @@ in classifying characters on a license plate.
...
@@ -47,19 +44,31 @@ in classifying characters on a license plate.
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
\item
Use
a
perspective transformation to obtain an upfront view of license
plate.
plate.
\item
Reduce noise where possible.
\item
Reduce noise where possible to ensure maximum readability.
\item
Extract each character using the location points in the info file.
\item
Extracting characters using the location points in the xml file.
\item
Transform character to a normal form.
\item
Transforming a character to a normal form.
\item
Create a local binary pattern histogram vector.
\item
Creating a local binary pattern histogram vector.
\item
Match the found vector with a learning set.
\item
Matching the found vector with a learning set.
\item
And finally it has to check results with a real data set.
\end{enumerate}
\end{enumerate}
\section
{
Solutions
}
\section
{
Language of choice
}
The actual purpose of this project is to check if LBP is capable of recognizing
license plate characters. We knew the LBP implementation would be pretty simple.
Thus an advantage had to be its speed compared with other license plate
recognition implementations, but the uncertainity of whether we could get some
results made us pick Python. We felt Python would not restrict us as much in
assigning tasks to each member of the group. In addition, when using the correct
modules to handle images, Python can be decent in speed.
\section
{
Implementation
}
Now we know what our program has to be capable of, we can start with the
implementations.
Now that the problem is defined, the next step is stating our basic solutions.
This will come in a few steps as well.
\subsection
{
Transformation
}
\subsection
{
Transformation
}
...
@@ -343,8 +352,36 @@ commercial license plate recognition software score about $90\%$ to $94\%$,
...
@@ -343,8 +352,36 @@ commercial license plate recognition software score about $90\%$ to $94\%$,
under optimal conditions and with modern equipment. Our program scores an
under optimal conditions and with modern equipment. Our program scores an
average of blablabla.
average of blablabla.
\section
{
Workload distribution
}
The first two weeks were team based. Basically the LBP algorithm could be
implemented in the first hour, while some talked and someone did the typing.
Some additional 'basics' where created in similar fashion. This ensured that
every team member was up-to-date and could start figuring out which part of the
implementation was most suited to be done by one individually or in a pair.
\subsection
{
Who did what
}
Gijs created the basic classes we could use and helped the rest everyone by
keeping track of what required to be finished and whom was working on what.
Tadde
\"
us and Jayke were mostly working on the SVM and all kinds of tests
whether the histograms were mathing and alike. Fabi
\"
en created the functions
to read and parse the given xml files with information about the license plates.
Upon completion all kinds of learning and data sets could be created.
%Richard je moet even toevoegen wat je hebt gedaan :P:P
%maar miss is dit hele ding wel overbodig. Ik dacht dat Rein het zei tijdens gesprek van ik wil weten
%hoe het ging enzo
\subsection
{
How it went
}
Sometimes one cannot hear the alarm bell and wake up properly. This however was
not a big problem as no one was affraid of staying at Science Park a bit longer
to help out. Further communication usually went through e-mails and replies
were instantaneous! A crew to remember.
\section
{
Conclusion
}
\section
{
Conclusion
}
Awesome
\end{document}
\end{document}
src/ClassifierTest.py
View file @
4733cd46
...
@@ -43,7 +43,7 @@ dump(test_set, file('test_set', 'w+'))
...
@@ -43,7 +43,7 @@ dump(test_set, file('test_set', 'w+'))
learning_set
=
load
(
file
(
'learning_set'
,
'r'
))
learning_set
=
load
(
file
(
'learning_set'
,
'r'
))
# Train the classifier with the learning set
# Train the classifier with the learning set
classifier
=
Classifier
(
c
=
30
)
classifier
=
Classifier
(
c
=
30
,
gamma
=
1
)
classifier
.
train
(
learning_set
)
classifier
.
train
(
learning_set
)
classifier
.
save
(
'classifier'
)
classifier
.
save
(
'classifier'
)
#----------------------------------------------------------------
#----------------------------------------------------------------
...
...
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