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
7384307c
Commit
7384307c
authored
Dec 20, 2011
by
Jayke Meijer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Created reflection and moved Diffulcties and workload distrib. there.
parent
b87013e1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
25 deletions
+38
-25
docs/report.tex
docs/report.tex
+38
-25
No files found.
docs/report.tex
View file @
7384307c
...
@@ -63,10 +63,10 @@ results made us pick Python. We felt Python would not restrict us as much in
...
@@ -63,10 +63,10 @@ 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
assigning tasks to each member of the group. In addition, when using the
correct modules to handle images, Python can be decent in speed.
correct modules to handle images, Python can be decent in speed.
\section
{
Implementation
}
\section
{
Theory
}
Now we know what our program has to be capable of, we can start with the
Now we know what our program has to be capable of, we can start with the
implementations
.
defining what problems we have and how we want to solve these
.
\subsection
{
Extracting a letter
}
\subsection
{
Extracting a letter
}
...
@@ -294,11 +294,11 @@ bounds. The first to be checked is the pixel in the left
...
@@ -294,11 +294,11 @@ bounds. The first to be checked is the pixel in the left
bottom corner in the square 3 x 3, with coordinate
$
(
x
-
1
, y
-
1
)
$
with
$
g
_
c
$
bottom corner in the square 3 x 3, with coordinate
$
(
x
-
1
, y
-
1
)
$
with
$
g
_
c
$
as center pixel that has coordinates
$
(
x, y
)
$
. If the grayscale value of the
as center pixel that has coordinates
$
(
x, y
)
$
. If the grayscale value of the
neighbour in the left corner is greater than the grayscale
neighbour in the left corner is greater than the grayscale
value of the center pixel than return true. Bitshift the first bit with 7. The
value of the center pixel than return true. Bit
-
shift the first bit with 7. The
outcome is now 1000000. The second neighbour will be bitshifted with 6, and so
outcome is now 1000000. The second neighbour will be bit
-
shifted with 6, and so
on. Until we are at 0. The result is a binary pattern of the local point just
on. Until we are at 0. The result is a binary pattern of the local point just
evaluated.
evaluated.
Now only the edge pixels are a problem, but a simp
el
check if the location of
Now only the edge pixels are a problem, but a simp
le
check if the location of
the neighbour is still in the image can resolve this. We simply return false if
the neighbour is still in the image can resolve this. We simply return false if
it is.
it is.
...
@@ -306,10 +306,11 @@ it is.
...
@@ -306,10 +306,11 @@ it is.
After all the Local Binary Patterns are created for every pixel. This pattern
After all the Local Binary Patterns are created for every pixel. This pattern
is divided in to cells. The feature vector is the vector of concatenated
is divided in to cells. The feature vector is the vector of concatenated
histograms. These histograms are created for cells. These cells are created by
histograms. These histograms are created for cells. These cells are created by
dividing the
\textbf
{
pattern
}
in to cells and create a histogram of that. So multiple
dividing the
\textbf
{
pattern
}
in to cells and create a histogram of that. So
cells are related to one histogram. All the histograms are concatenated and
multiple cells are related to one histogram. All the histograms are
feeded to the SVM that will be discussed in the next section, Classification.
concatenated and fed to the SVM that will be discussed in the next section,
Classification. We did however find out that the use of several cells was not
increasing our performance, so we only have one histogram to feed to the SVM.
\subsection
{
Classification
}
\subsection
{
Classification
}
...
@@ -326,8 +327,8 @@ available. These parameters are:\\
...
@@ -326,8 +327,8 @@ available. These parameters are:\\
Parameter
&
Description
\\
Parameter
&
Description
\\
\hline
\hline
$
\sigma
$
&
The size of the Gaussian blur.
\\
$
\sigma
$
&
The size of the Gaussian blur.
\\
\emph
{
cell size
}
&
The size of a cell for which a histogram of LBP
s will
\emph
{
cell size
}
&
The size of a cell for which a histogram of LBP
's
be generated.
\\
will
be generated.
\\
\emph
{
Neighbourhood
}&
The neighbourhood to use for creating the LBP.
\\
\emph
{
Neighbourhood
}&
The neighbourhood to use for creating the LBP.
\\
$
\gamma
$
&
Parameter for the Radial kernel used in the SVM.
\\
$
\gamma
$
&
Parameter for the Radial kernel used in the SVM.
\\
$
c
$
&
The soft margin of the SVM. Allows how much training
$
c
$
&
The soft margin of the SVM. Allows how much training
...
@@ -357,7 +358,14 @@ the feature vectors will not have enough elements.\\
...
@@ -357,7 +358,14 @@ the feature vectors will not have enough elements.\\
In order to find this parameter, we used a trial-and-error technique on a few
In order to find this parameter, we used a trial-and-error technique on a few
cell sizes. During this testing, we discovered that a lot better score was
cell sizes. During this testing, we discovered that a lot better score was
reached when we take the histogram over the entire image, so with a single
reached when we take the histogram over the entire image, so with a single
cell. Therefore, we decided to work without cells.
cell. Therefore, we decided to work without cells.
\\
\\
The reason that using one cell works best is probably because the size of a
single character on a license plate in the provided dataset is very small.
That means that when dividing it into cells, these cells become simply too
small to have a really representative histogram. Therefore, the
concatenated histograms are then a list of only very small numbers, which
are not significant enough to allow for reliable classification.
\subsection
{
Parameter
\emph
{
Neighbourhood
}}
\subsection
{
Parameter
\emph
{
Neighbourhood
}}
...
@@ -402,7 +410,7 @@ measure the time used to classify a license plate, not the training of the
...
@@ -402,7 +410,7 @@ measure the time used to classify a license plate, not the training of the
dataset, since that can be done offline, and speed is not a primary necessity
dataset, since that can be done offline, and speed is not a primary necessity
there.
\\
there.
\\
\\
\\
The speed of a classification turned out to be
blablabla
.
The speed of a classification turned out to be
???
.
\subsection
{
Accuracy
}
\subsection
{
Accuracy
}
...
@@ -414,15 +422,25 @@ accuracy score we possibly can.\\
...
@@ -414,15 +422,25 @@ accuracy score we possibly can.\\
\url
{
http://en.wikipedia.org/wiki/Automatic
_
number
_
plate
_
recognition
}}
,
\url
{
http://en.wikipedia.org/wiki/Automatic
_
number
_
plate
_
recognition
}}
,
commercial license plate recognition software score about
$
90
\%
$
to
$
94
\%
$
,
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 ???.
\section
{
Conclusion
}
In the end it turns out that using Local Binary Patterns is a promising
technique for License Plate Recognition. It seems to be relatively unfased by
dirty licenseplates and different fonts on these plates.
\\
\\
The performance speedwise is ???
\section
{
Reflection
}
\section
{
Difficulties
}
\s
ubs
ection
{
Difficulties
}
During the implementation and testing of the program, we did encounter a
During the implementation and testing of the program, we did encounter a
number of difficulties. In this section we will state what these difficulties
number of difficulties. In this section we will state what these difficulties
were and whether we were able to find a proper solution for them.
were and whether we were able to find a proper solution for them.
\subsection*
{
Dataset
}
\subs
ubs
ection*
{
Dataset
}
We did experience a number of problems with the provided dataset. A number of
We did experience a number of problems with the provided dataset. A number of
these are problems to be expected in a real world problem, but which make
these are problems to be expected in a real world problem, but which make
...
@@ -440,14 +458,14 @@ are not properly classified. This is of course very problematic, both for
...
@@ -440,14 +458,14 @@ are not properly classified. This is of course very problematic, both for
training the SVM as for checking the performance. This meant we had to check
training the SVM as for checking the performance. This meant we had to check
each character whether its description was correct.
each character whether its description was correct.
\subsection*
{
SVM
}
\subs
ubs
ection*
{
SVM
}
We also had trouble with the SVM for Python. The standard Python SVM, libsvm,
We also had trouble with the SVM for Python. The standard Python SVM, libsvm,
had a poor documentation. There was no explanation what so ever on which
had a poor documentation. There was no explanation what so ever on which
parameter had to be what. This made it a lot harder for us to see what went
parameter had to be what. This made it a lot harder for us to see what went
wrong in the program.
wrong in the program.
\section
{
Workload distribution
}
\s
ubs
ection
{
Workload distribution
}
The first two weeks were team based. Basically the LBP algorithm could be
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.
implemented in the first hour, while some talked and someone did the typing.
...
@@ -455,7 +473,7 @@ Some additional 'basics' where created in similar fashion. This ensured that
...
@@ -455,7 +473,7 @@ 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
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.
implementation was most suited to be done by one individually or in a pair.
\subs
ection
{
Who did what
}
\subs
ubsection*
{
Who did what
}
Gijs created the basic classes we could use and helped the rest everyone by
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.
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
Tadde
\"
us and Jayke were mostly working on the SVM and all kinds of tests
...
@@ -467,16 +485,11 @@ plates. Upon completion all kinds of learning and data sets could be created.
...
@@ -467,16 +485,11 @@ plates. Upon completion all kinds of learning and data sets could be created.
%maar miss is dit hele ding wel overbodig Ik dacht dat Rein het zei tijdens
%maar miss is dit hele ding wel overbodig Ik dacht dat Rein het zei tijdens
%gesprek van ik wil weten hoe het ging enzo.
%gesprek van ik wil weten hoe het ging enzo.
\subs
ection
{
How it went
}
\subs
ubsection*
{
How it went
}
Sometimes one cannot hear the alarm bell and wake up properly. This however was
Sometimes one cannot hear the alarm bell and wake up properly. This however was
not a big problem as no one was afraid of staying at Science Park a bit longer
not a big problem as no one was afraid of staying at Science Park a bit longer
to help out. Further communication usually went through e-mails and replies
to help out. Further communication usually went through e-mails and replies
were instantaneous! A crew to remember.
were instantaneous! A crew to remember.
\section
{
Conclusion
}
Awesome
\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