Escola Tècnica Supe io d’Enginye ia In o mà ica
Uni e si a Poli ècnica de València
Diseño e implemen ación de múl iples
in e aces pa a el con ol emo o de un
ehículo y del sis ema de isión emba cado
T abajo Fin de G ado
G ado en Ingenie ía In o má ica
Au o : Viachesla B ydko
Tu o : Juan Vicen e Capella He nández
2014-2015
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
2
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
3
Resumen
En el abajo adjun o se p esen a un p oyec o de diseño e implemen ación de un
sis ema au oma izado de econocimien o de ma ículas de ehículos con olado
emo amen e. Dicho sis ema iene como obje i os p incipales la localización y el
econocimien o de un ehículo con o me a su placa de ma ícula en un espacio amplio,
además de dispone de o as uncionalidades adicionales, como la igilancia, po
ejemplo. El p oceso de econocimien o se ealiza median e una pla a o ma mó il,
con olada emo amen e, con capacidad de isión po o denado y ansmisión de
ideo en iempo eal al pues o de con ol.
Pa a la comodidad del usua io, se o ecen dis in as o mas de con ola la conducción
de la pla a o ma, que pueden se usadas en dis in as condiciones del e eno o según
las p e e encias pe sonales del ope ado . Dichas opciones son compues as po los
siguien es pe i é icos de en ada: con ol po mando, basado en mo imien os y basado
en con ol ác il. En el p ime caso se a a de un con olado de ideojuegos y los dos
siguien es son p o is os po un elé ono in eligen e.
Las señales de con ol se ansmi en al sis ema ins alado a bo do del ehículo, que
ealiza es unciones: el en ío del ideo cap u ado po la cáma a mon ada en el
ehículo al ope ado en iempo eal, econocimien o de ma ículas y een ío de señales
de con ol ecibidas al con olado empo ado enca gado de mo e el ehículo.
En el apa ado ha dwa e, el ehículo es o mado po un chasis de un coche de
adiocon ol con una placa compu ado a (Raspbe y Pi 2) con los siguien es pe i é icos
conec ados: módulo WiFi, que p opo ciona conec i idad, una cáma a conec ada al
pue o CSI que se enca ga de ansmi i el ideo cap u ado, o a cáma a conec ada al
pue o USB que se enca ga del econocimien o de ma ículas y, inalmen e, un
mic ocon olado (A duino), que se enca ga de con ola el mo o eléc ico p opulso y
el se omecanismo que si e pa a con ola la di ección. Todo el sis ema es alimen ado
po dos ba e ías de ion-li io que cons i uyen es uen es de ene gía independien es que
alimen an po sepa ado a los componen es que más ene gía equie en: Raspbe y Pi y
sus pe i é icos, el mo o p incipal y el se omecanismo.
Es e ha dwa e es gobe nado po una se ie de p og amas que se ejecu an en la p opia
placa compu ado a, el mic ocon olado conec ado a es a y un o denado conec ado a
la misma ed. Es os p og amas in e cambian mensajes pa a ansmi i in o mación y
no i ica dis in os cambios de es ado en el que se encuen a el sis ema.
Palab as cla e: Raspbe y Pi, A duino, mó il, iempo eal, isión po o denado .
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
4
Abs ac
The ollowing wo k p esen s a design and implemen a ion o an au oma ed sys em wi h
op ical ehicle license pla e ecogni ion and emo e ope a ion capabili ies. The
objec i es o his sys em a e loca ion and ecogni ion o ehicles in wide spaces, as well
as o e ing o he ea u es, such as su eillance, o example. The op ical ecogni ion is
pe o med by a emo ely con olled mobile pla o m wi h compu e ision capabili ies
and li e ideo s eaming o he ope a o sc een.
Se e al con ol op ions a e o e ed o use con enience, which may be use ul in
di e en en i onmen s o could being chosed acco ding o use ´s pe sonal p e e ences.
These op ions a e composed by he ollowing inpu pe iphe als: con olle -based,
mo ion-based and ouch-based con ols. In i s case he pe iphe al is a high
pe o mance gamepad and la e op ions a e p o ided h ough so wa e execu ed on a
sma phone.
The con ol signals a e ansmi ed o he sys em ins alled on boa d o a ehicle, which
pe o ms h ee unc ions: eal- ime li e s eaming o he ideo cap u ed by he came a
moun ed on op o he ehicle o he use , op ical license pla e ecogni ion and
o wa ding o con ol signals o he embedded mic ocon olle , which is esponsible o
he mo emen o he ehicle.
The ha dwa e pa o he p ojec is composed by he adio-con olled ca chassis wi h a
single-boa d compu e (Raspbe y Pi 2) wi h he ollowing pe iphe als: WiFi module,
o communica ions, main came a connec ed o he CSI po o ideo s eaming,
seconda y came a connec ed o he USB po o he license pla e ecogni ion and a
mic ocon olle (A duino) which is used o con ol he elec ic mo o , which p opels
he ehicle and he se omo o , which p o ides he ehicle wi h s ee ing. The sys em is
powe ed by wo ion-li hium ba e ies, which o m h ee independen ene gy sou ces
used by he mos ene ge ically demanding componen s: Raspbe y Pi and i s
pe iphe als, he main elec ic mo o and he se omo o .
The ha dwa e is con olled by a se o p og ams which un on he main compu ing
boa d, connec ed mic ocon olle and a compu e connec ed o he same ne wo k as
he Raspbe y Pi. This p og ams exchange messages in o de o ansmi in o ma ion
and no i y each o he abou he cu en sys em s a e.
Keywo ds: Real- ime, compu e ision, Raspbe y Pi, op ical ecogni ion, A duino.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
5
Tabla de con enidos
1. In oducción ................................................................................................................. 7
Mo i ación…………………………………………………………………………………………………..7
Obje i os………………..……………………..…………………………………………….……………..8
Obje i os Pe sonales…………………..…………………………………..…………………….….…..8
2. Tecnologías elacionadas .............................................................................................. 9
Raspbe y Pi 2………….…..…………………………….…………………….…….…………….……..9
A duino………………………………………………………………………..……………………..…….12
Mando PC / Xbox 360………………………….……………………………………………………….14
Q ……………………………………………………………………..……………….……………………..14
OpenCV………………………………………………………………..…………………………………..15
Py hon………………………………………………………………..……………………………………. 16
And oid………………………………………………………………..……………………………………16
3. Sis ema p opues o ....................................................................................................... 17
Raspbe y Pi……………………………………………………………..………..………………………17
Pe i é icos de Raspbe y Pi…………………………………………..………………………………..21
A duino……………………………………………..……………………………………………………..24
Pe i é icos A duino……………………………..………………………………………………………24
Alimen ación……………………………..………………………………………………………………26
Chasis……………………………..………………………………………………………………………..27
So wa e……………………………..…………………………………………………………………….28
So wa e de esc i o io……………………………..……………………………………………………29
So wa e And oid……………………………..…………………………………………………………33
So wa e embebido……………………………..……………………………………………………….34
So wa e Raspbe y Pi……………………………..………………………………………………..…34
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
6
So wa e A duino……………………………..…………………………………………………………36
Reconocimien o de ma ículas (ANPR) ..………………………………………………………….37
Ob ención de la o o del ehículo..………………………………………………………………....37
P ime a solución..…………………………………………………………………………………….…38
Segmen ación de la imagen pa a la ob ención de la ma icula..………………………….....38
Reconocimien o de la ma ícula……………………………………………………………………...41
Reconocimien o óp ico de ca ac e es……………………………………………………………....42
Conclusiones y análisis de es a posible solución………………………………………….…..…42
Segunda solución………………………………………………………………………………….……..42
Pa es………………………………………………………………………………………………..….…..43
Inicialización…………………………………………………………………………………………..….44
Ob ención de la imagen……………………………………………………………………………..….45
Segmen ación……………………………………………………………………………………….….…45
OCR………………………………………………………………………………………………………...46
4. Análisis y conclusiones .............................................................................................. 49
5. Bibliog a ía ............................................................................................................... 50
Anexo I – JNI .................................................................................................................... 51
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
7
1. In oducción
A con inuación se expone el p oceso y el esul ado del diseño e implemen ación de un
sis ema combinado, capaz de ealiza ope aciones a con ol emo o con el especial
én asis en la usabilidad y la e icacia. El esul ado es la combinación de dis in as
ecnologías capaces de unciona al unísono, in e cambiando da os, cumpliendo con los
obje i os y educiendo las limi aciones que puedan asocia se a su uso. Al mismo
iempo, se ha hecho un especial hincapié en la expe iencia del usua io, o eciéndole la
posibilidad de elegi en e múl iples opciones disponibles y pe mi iéndole un con ol
o al sob e el sis ema en iempo eal.
Mo i ación
Es e p oyec o combina dos uncionalidades básicas: el econocimien o óp ico de
ma ículas y la mo ilidad del sis ema, siendo con olado po dis in os pe i é icos de
en ada. Las á eas donde se pueden aplica es a combinación de ca ac e ís icas son
a iadas y con dis in os obje i os. Se pueden dis ingui al menos es aplicaciones
donde una solución como la p opues a puede encon a su uso.
1. En p ime luga se encuen an los con oles de apa camien o. En una zona azul
un con olado de la ORA puede ecu i a un sis ema mó il de econocimien o
de ma ículas con olado emo amen e pa a comp oba la alidez de los icke s
de cada ehículo en ez de comp oba los a mano p esencialmen e.
2. En segundo luga , es e sis ema puede p opo ciona a los igilan es de los
pa kings p i ados se icios de igilancia y con ol de accesos, g acias a su al a
mo ilidad y la capacidad de ansmisión de ideo en iempo eal.
3. Po úl imo, los cue pos de segu idad pueden hace uso de un sis ema simila
pa a encon a ehículos buscados, los que incumplan la no ma i a igen e o a
i ula es de los mismos. Es o puede se posible g acias a la in eg ación con los
se icios elemá icos o ecidos po la DGT que pe mi en a los agen es accede al
egis o de ehículos nacional pa a comp oba da os como, po ejemplo, la
caducidad de la ITV, el segu o obliga o io, el es ado del ehículo (secues ado o
dado de baja) así como de los da os del i ula (nomb e, domicilio). Dichos
se icios se llaman ATEX y son usados en exclusi a po la Policía, Gua dia Ci il
y los ayun amien os, en e o os o ganismos.
En caso de do a a la pla a o ma de una capacidad de hace uso de se icios desc i os
a iba su e icacia c ece sus ancialmen e, ya sea usada como es ación mó il o ija.
Cualquie a de las aplicaciones desc i as iene su ámbi o en un con ex o, pe o además,
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
8
es os pueden combina se en e sí, e incluso añadi se capacidades nue as con o me los
eque imien os exis en es.
Obje i os
Es e p oyec o iene como inalidad o ece una solución in eg ada, capaz de lle a a
cabo múl iples ope aciones simul áneamen e de una o ma aspa en e al usua io
e icazmen e. Una o ma de cumpli con es a máxima, es o ece al a mo ilidad, g an
au onomía, ele ada elocidad de a amien o de imágenes y educidas la encia de
ansmisión de ideo y cos e o al de la pla a o ma. En caso de alla en cualquie a de
los obje i os an e io es odo el sis ema deja de se usable y en ez de se una solución
iable, se con ie e en un p oduc o poco ú il.
El obje i o p incipal del sis ema es el econocimien o óp ico de ma ículas, al a a se
de un p oblema complejo desde un pun o de is a compu acional, pe o que al mismo
iempo o ece a los usua ios dis u a de unas capacidades de a amien o de imágenes
aplicado a su en o no labo al, que les pueda pe mi i ealiza sus a eas más ápida y
cómodamen e. Como apoyo a la pla a o ma y con al de acili a a los usua ios su
abajo en caso de que la pla a o ma no sea usable, ambién se conside a la opción de
ins ala el so wa e esponsable del econocimien o de ma ículas en un elé ono
in eligen e con sis ema ope a i o And oid. De es a o ma el ac o limi an e asociado al
uso del sis ema se educe, al ope a con una solución au ónoma de econocimien o
óp ico de ma ículas.
El obje i o secunda io es la posibilidad de ope a la pla a o ma a con ol emo o, pues
uniendo es a capacidad a la an e io , el p oduc o esul an e puede ealiza muchas más
ope aciones en más con ex os ope a i os, además de en oca se a dis in os g upos de
usua ios.
Obje i os pe sonales
A ni el pe sonal, los obje i os pe seguidos son, sob e odo, aplica los conocimien os
adqui idos a los la go de los años de o mación en es a escuela, y compensando con
in es igación, uso de documen ación y abajo la al a de conocimien os especí icos
sob e dis in as ecnologías, ales como OpenCV o mecanismos usados pa a la
comunicación en e JVM y lib e ías dinámicas na i as esc i as en C++.
Adicionalmen e, la implemen ación del sis ema p opues o se lle a a cabo en dis in as
pla a o mas: mó iles (And oid), embebidas (A duino), compu acionalmen e educidas
(Raspbe y Pi) y de esc i o io. Además se hace uso de dis in os lenguajes de
p og amación en la sui e de so wa e que maneja el ha dwa e an e io , ales como
C++, Ja a, Py hon, P ocessing y Bash.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
9
El desa ollo de un p oyec o an comple o como es e, que aúna dis in as ecnologías,
an o a ni el ha dwa e como so wa e, ep esen ando la necesidad de supe a
limi aciones y p oblemas que se encuen an en el camino y el hecho de supe a los
sa is ac o iamen e no hace más que sub aya la solidez de la o mación ecibida.
2. Tecnologías elacionadas
A con inuación se nomb an las ecnologías más ele an es usadas en el p oyec o. Es as
se componen de componen es ha dwa e y so wa e. En es a sección se discu en los
mo i os de su elección y las ca ac e ís icas des acables de los mismos.
Raspbe y Pi 2
Como pa e lógica p incipal, enca gada de p ocesa los da os, hace uso de las
comunicaciones y con ola indi ec amen e los pe i é icos de bajo ni el (mo o y
se omecanismo) se u iliza una placa compu ado a (o SBC) Raspbe y Pi 2.
Figu a 1: Raspbe y Pi 2 Modelo B+
Es a elección es á mo i ada po el hecho de que es a unidad cumple con las siguien es
ca ac e ís icas: bajo cos e, can idad de so wa e disponible, al o olumen de
documen ación disponible, bajo consumo ene gé ico, amaño y peso educidos,
desa ollo cons an e y muchos apo es po pa e una comunidad de desa ollado es
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
16
módulos con iene es uc u as de da os, unciones y algo i mos ela i os a un es echo
ma gen de especialización indicado po el nomb e del p opio modulo.
Py hon
Al a a se de una dis ibución Linux, comple amen e compa ible con odos los
eposi o ios Debian a mh , El o k del mismo pa a Raspbe y Pi, Raspbian incluye la
pla a o ma Ja a en su e sión JVM 1.8 de O acle. Es o pe mi e ejecu a odo ipo de
so wa e que pueda se compilado pa a la JVM (Ja a, Jy hon, G oo y, Scala u o os).
Du an e el p oceso de diseño se conside ó usa Ja a como so wa e enca gado de
ecibi da os de con ol y es ablece la conexión se ie con A duino y, inalmen e en ia
al usua io las ma iculas econocidas. T as un b e e análisis de es e ipo de solución, el
uso de Ja a se deshecho en a o de Py hon.
El mo i o p incipal es la complejidad a la ho a de es ablece la conexión se ie. La
implemen ación del un ime de Ja a, JVM, no iene un mecanismo pa a al in, po lo
que se usa una lib e ía ex e na, llamada TxRx. El hecho de usa una lib e ía ex e na no
ep esen a un p oblema en sí, pe o en es e caso la limi ación iene dada po la
implemen ación de comunicación se ie a ni el del sis ema ope a i o subyacen e, po lo
que la lib e ía TxRx o ece una solución hib ida: una lib e ía na i a pa a el SO y un
JAR, pa a expone las nue as uncionalidades a la pla a o ma Ja a. En caso de Py hon,
la comunicación se ie no iene mayo complejidad que decla a el pue o se ie p o is o
po el sis ema ope a i o, ab i lo y ealiza ope aciones de lec u a / esc i u a sob e el
mismo.
O a de las en ajas que o ece el uso de Py hon es la acilidad de abajo con
comunicaciones, pudiéndose es ablece ope aciones que se ealizan a a és de la ed
en pocas líneas de código.
Finalmen e, las ans o maciones de da os en Py hon ambién son muy sencillas de
ealiza . Ope aciones como pa sea JSON no equie en hace uso de lib e ías ex e nas,
como si es caso de Ja a y son muy comp ensibles.
And oid
Pa a la implemen ación de las in e aces de con ol ía so wa e en un disposi i o mó il
se decidió po usa una unidad con el sis ema ope a i o And oid. La elección de es a
pla a o ma iene mo i ada po su eno me popula idad en el me cado y debido a ello a
la can idad de in o mación y documen ación disponible.
Además, el lenguaje de p og amación p incipal del SDK de And oid es Ja a, po lo que
la lib e ía es ánda he eda oda la po encia de es a pla a o ma, ex endiéndose con
es uc u as de da os y cons ucciones p opias de desa ollos pa a disposi i os mó iles
implemen ados po Google. El hecho de usa Ja a iene mo i ado po la necesidad de
pode dispone de las aplicaciones p oducidas pa a e siones de And oid ejecu ados en
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
17
dis in os ipos de ha dwa e, ales como p ocesado es ARM, In el o MIPS. En las
e siones an e io es de And oid, es as aplicaciones se compilaban a by ecode, que
pos e io men e se ejecu aba en una máquina i ual especial, adap ada a un en o no de
ejecución de capacidades compu acionales y ene gé icas limi adas llamado Dal ik. En
las úl imas e siones de es e sis ema ope a i o, las aplicaciones se compilan AOT
du an e la ins alación, p escindiendo de es a o ma de la capa de so wa e in e media,
como lo ue Dal ik.
Finalmen e, usa Ja a como lenguaje de desa ollo pe mi e ap o echa la eno me
can idad de código y lib e ías de e ce os exis en es en In e ne . El uso de es os
ecu sos pe mi e educi el iempo de desa ollo y aumen a la calidad del código. El
ejemplo más popula lo cons i uye el uso de lib e ías Apache Commons de Apache
So wa e Founda ion pa a Ja a.
3. Sis ema p opues o
El sis ema p opues o es á compues o po dos pa es di e enciadas: ha dwa e y
so wa e. A con inuación se desc ibe la pa e ha dwa e y inalmen e, las
uncionalidades de la pa e so wa e se asocian con las capacidades de la pa e
ha dwa e.
Raspbe y Pi
La p epa ación de la placa lógica p incipal en el apa ado de ha dwa e no conlle a más
ope aciones que conec a sus pe i é icos a sus pue os co espondien es y conec a la a
su p opia uen e de alimen ación. En el apa ado de so wa e, sin emba go se equie e
ealiza una se ie de ope aciones en ocadas a mejo a el endimien o, es abilidad e
incluso, ealiza con igu aciones que puedan hace posible el despliegue del so wa e de
econocimien o óp ico de ma ículas.
1. El p ime paso es pasa de la e sión ac ual es able de Debian a una e sión más
nue a, aunque ines able y no disponible públicamen e. El mo i o p incipal de
es e cambio es la necesidad de pode dispone de la sui e de compilado es GCC
más mode na (4.9 con a 4.6 de la e sión an e io ). Es o es necesa io pa a
pode compila OpenCV con el módulo de ex o opcional, así como el p opio
p og ama, que hace uso de es as dependencias. El oolchain del compilado
GCC 4.6 de Raspbian basado en Debian 7 ‘Wheezy’ no ue capaz de compila el
código uen e de OpenCV, po lo que se u o que cambia a una e sión más
ecien e de Raspbian 8 ‘Jessie’ que incluye la e sión 4.9 con sopo e del
es ánda C++11 capaz de compila el paque e de so wa e dado. Adicionalmen e,
odos los paque es so wa e ins alados con la ins alación de Raspbian ‘Jessie’
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
18
son a mh , es deci diseñados pa a se usados con p ocesado es ARM 7,
capaces de saca pa ido a las ca ac e ís icas ha dwa e de es e ipo de
p ocesado es desc i os an e io men e (pa icula men e VFP). La e sión
an e io de Raspbian da sopo e a las dos gene aciones de la Raspbe y Pi y, po
an o, es compa ible con ambas sac i icando el endimien o o uso de
ca ac e ís icas exclusi as de ARM 7 en a o de la compa ibilidad.
2. Dado que Raspbe y Pi es un o denado de pocos ecu sos y la pa e de
econocimien o óp ico de ma ículas es un p oblema compu acionalmen e
exigen e, aumen ando la elocidad de p ocesamien o, ( ambién llamado
o e clock) se puede aumen a la elocidad del abajo del so wa e
p opo cionalmen e. Pa a pode ealiza el o e clock en una placa Raspbe y Pi
se equie e edi a el a chi o /boo /con ig. x in oduciendo alo es como
es os:
a m_ eq=1000
o e _ ol age=0
co e_ eq=500
sd am_ eq=483
es os es ablecen la ecuencia del p ocesado en 1000 MHz, ecuencia de la cache L2
en 500 MHz, ecuencia de la memo ia RAM en 483 MHz y no sube el ol aje al que
abaja el p ocesado . Unos alo es de o e clock más ag esi os equie en modi ica el
ol aje del p ocesado , lo que implica un mayo consumo y calen amien o, pe o en el
diseño p opues o es e paso no es necesa io. Los alo es mencionados con as an con
los alo es po de ec o de la Raspbe y Pi de 900, 250 y 450 MHz, espec i amen e,
p opo cionando un inc emen o de elocidad de cómpu o de en e 20% y 40%,
dependiendo de las ins ucciones ejecu adas. Es a subida de endimien o se debe a que
el mayo cambio es que se p oduce es en la elocidad de la cache L2.
3. El siguien e paso en la p epa ación de la Raspbe y Pi es la compilación de
OpenCV desde el código uen e del eposi o io o icial. Aunque Debian posee
paque es es ables disponibles pa a se ins alados, es os no pueden se usados al
no dispone de módulos necesa ios. Tal y como se explicó en el apa ado de
Tecnologías elacionados, la es uc u a de OpenCV es á o mada po módulos,
ales como co e, highgui, ea u es2d y muchos o os. En caso de ins ala la
e sión es able, se ob end á acceso a los módulos es ables. El so wa e de
econocimien o de ma ículas usado en es e p oyec o hace uso de un módulo
expe imen al, llamado ex que no o ma pa e de la dis ibución de OpenCV,
sino que se o ece en un eposi o io apa e llamado openc _con ib como
desa ollos apa e compa ibles y usables, pe o en es ado de p uebas y alidación
pa a pode o ma pa e de OpenCV en un u u o. Po es a azón, si se desea
dispone de las uncionalidades o ecidas po el modulo ex o se equie e
compila el código uen e de odos los módulos a usa (incluyendo o os
módulos, que son sus dependencias).
El p oceso de compilación es sencillo si se hace uso de la he amien a de edición
de a chi os de sc ip CMAKE, usados po OpenCV. Pa a pode compila bas a
con segui los siguien es pasos:
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
19
desca ga el código uen e de OpenCV en una ca pe a,
desca ga el código uen e de los módulos ex a en o a ca pe a,
ejecu a cmake-gui (he amien a de edición de sc ip s CMAKE)
indica le al p og ama la u a del código uen e de OpenCV
indica la u a de la ca pe a donde se a a compila
con igu a el sc ip indicando las opciones deseadas
gene a los sc ip s en la ca pe a de des ino
i a la ca pe a de des ino y ejecu a make –j4 && make ins all
Du an e el p oceso de con igu ación es necesa io ma ca o desma ca cie as
opciones impo an es, ales como la localización de la ca pe a con los módulos
opcionales, sopo e de lib e ías de e ce os, ales como CUDA u OpenCL. Una
con igu ación inco ec a puede esul a en un allo al compila o en caso de
comple a se, puede no ene la es abilidad deseada u o os p oblemas. El
p oceso de con igu ación es ilus ado en la siguien e imagen:
Figu a 4: Gene ación de make ile usando cmake-gui
Una de las opciones más impo an es a ma ca es el uso de capacidades NEON y
VFP 3 o ecidos po la CPU Co ex-A7 con mic o a qui ec u a ARM 7 de la
Raspbe y Pi 2. Sus en ajas es án explicadas en el apa ado an e io . Al
ma ca la, el build esul an e de OpenCV pod á saca odo el pa ido al o ecido
el ha dwa e.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
20
4. El úl imo paso en el p oceso de con igu ación es ins ala Code::Blocks, un IDE
open sou ce en ocado a desa ollos de so wa e en C++. Es e es á disponible en
los eposi o ios de Debian ‘Jessie’. Una ez ins alado, se p ocede a la c eación y
con igu ación del p oyec o pa a la habili a el uso de las lib e ías OpenCV
ecién compilado.
Figu a 5: Code::Blocks con p oyec o OpenCV
Es e p oceso no di ie e en exceso en e dis in os en o nos de desa ollo, pues
únicamen e se ha de indica al compilado y al linke la localización de la
ins alación de OpenCV, así como de o as dependencias, si las hubiese.
Cabe des aca que el compilado y el linke son p og amas di e en es. Ambos
o man pa e de la sui e de compilado es de GNU, GCC. El esponsable de
compila condigo C++ es g++, que es un d i e , enca gado de ejecu a el
p ep ocesado (un p og ama llamado cpp) pa a luego in oca el p opio
compilado , cc1plus, y, inalmen e el linke , llamado ld. El p oceso de
con igu ación necesa io es el siguien e:
Ejecu a pkg-con ig --libs --c lags openc pa a ob ene las u as
de ins alación de OpenCV. Aquellas ma cadas con –I indican las
localizaciones de includes, necesa ias pa a con igu a el compilado y el
indexado usado po el IDE.
A con inuación se p ocede a con igu a las u as de includes (o
de iniciones), indicando su localización, que, en la mayo ía de los casos
es /us /local/include/openc , /us /local/include/openc 2 y
/us /include. Nó ese la exis encia de la ca pe a openc y openc 2.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
21
Es o se debe a que, ac ualmen e la API de OpenCV sopo a de mane a
legada la e sión an e io , po lo que debido a cues iones de
compa ibilidad se o ecen las dos opciones.
El siguien e paso consis e en enlaza con las lib e ías bina ias de
OpenCV. Es e p oceso se ealiza indicando las lib e ías dinámicas a usa ,
como /us /local/lib/libopenc _co e.so, po ejemplo y
/us /local/lib/libopenc _*.so pa a el es o.
Finalmen e, se indican los lags (u opciones) especí icos al compilado .
Dado que Debian ‘Jessie’ o ece GCC en su e sión 4.9, es e sopo a
múl iples a qui ec u as u opciones de compilación especí icas, capaces
de ap o echa al máximo las capacidades del ha dwa e subyacen e. En
es e caso, las opciones ex a son es: 1) –O3 - gene ación de código con
máxima op imización 2) –mcpu=co ex-a7 - op imización de código
pa a la a qui ec u a Co ex-A7 3) –m pu=neon- p 4 – op imización
que habili a el uso de capacidades SIMD y el uso del cop ocesado de
cálculo de núme os de coma lo an e.
Pe i é icos de Raspbe y Pi
La placa p ocesado a p incipal del ehículo dispone de es pe i é icos, sin con a con
el mic ocon olado A duino que no se conside a como pe i é ico a pesa de es a
conec ado po USB, pues es e ejecu a su p opio so wa e y posee una alimen ación
sepa ada. Los pe i é icos son módulo WiFi, cáma a CSI y cáma a USB.
1. El módulo WiFi es una unidad Edimax EW-7811Un con chipse Real ek
RTL8188CUS.
Figu a 6: Edimax EW-7811UN
Las especi icaciones écnicas indican la complicidad con los es ánda es IEEE
802.11 b/g/n y elocidades de ansmisión de has a 150 Mbps en la banda de
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
22
2.4 GHz, así como sopo e de WPA, WPA2 y WPS. Se a a de un componen e
muy compac o y de consumo ene gé ico educido a cos a de elocidades de
ansmisión mode adas y adio de uncionamien o limi ado. Lo des acable de
es a in e az de ed es su popula idad en la comunidad de usua ios de
Raspbe y Pi al se una de las p ime as a je as WiFi USB compa ibles OOB
(ou o box), es deci , sin necesidad de ins alación de d i e s o de ealización de
con igu aciones de algún ipo con la p ime a gene ación de las placas Raspbe y
Pi.
2. El segundo pe i é ico usado es un módulo cáma a con in e az CSI-2 (o Came a
Se ial In e ace).
Figu a 7: Módulo cáma a de Raspbe y Pi
Se a a de una unidad ab icada exclusi amen e pa a la Raspbe y Pi. Su
aplicación en es e p oyec o es la cap u a y pos e io en ió de ideo en iempo
eal. En é minos de diseño, la decisión de usa es a solución iene dada po
una se ie de ac o es ales como:
Tamaño muy educido – 25 mm x 20 mm x 9 mm y 3 g de peso
El uso de la in e az CSI-2 es implemen ado como un socke ZIF 15 y
o ece una conexión se ie di ec a en e el módulo de la cáma a y la CPU
de la Raspbe y Pi. Al se una conexión dedicada, el ancho de banda
exis en e es de unos 800 Mbps po canal, siendo 1 Gbps el lími e eó ico.
La implemen ación usada po es e módulo hace uso de dos canales
o eciendo así un ancho de banda o al ap oximado de 2 Gbps que
pe mi e abaja con ideo con esoluciones de has a 1920 x 1080
pixeles y 30 ames po segundo.
El senso CMOS OmniVision OV5647 o ece una esolución máxima de
5 megapíxeles (QSXGA) y o ece dis in os modos de ansmisión de
ideo: desde QSXGA (2592 x 1944) a 15 ps has a QVGA (320 x 240) a
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
23
120 ps usando el o ma o RAW H.264 acele ado po ha dwa e, usando
el DSP de VideoCo e IV de la Raspbe y Pi.
Disponibilidad de so wa e que o ma pa e de la dis ibución Raspbian
capaz de maneja el s eaming de ideo, en e o as ca ac e ís icas
(como imágenes o cambios de ajus es de cáma a, ales como o ma os de
imagen, e ec os, modos de exposición u o os), así como disponibilidad
de APIs pa a desa ollo de p og amas capaces de in e ac ua con el
módulo de cáma a.
3. El e ce pe i é ico de la Raspbe y Pi es o a cáma a usada pa a el
econocimien o de ma ículas y conec ada median e USB.
Figu a 8: C ea i e Li e! Cam Sync HD
Se a a de una unidad C ea i e Li e! Cam Sync HD con un senso CMOS que
o ece una esolución máxima de 1280 x 720 píxeles con capacidad de
ansmi i ideo a es a esolución a 30 ps. Las ca ac e ís icas más des acables
que han mo i ado la elección de es e pe i é ico son la compa ibilidad OOB (no
se equie e ca ga ningún modulo del ke nel) con la Raspbe y Pi, o al sopo e
de V4L2 y bajo consumo. Las dos úl imas ca ac e ís icas son especialmen e
impo an es.
En p ime caso, la compa ibilidad con V4L2, que es una API y d i e
que se ejecu an en modo ke nel del SO, pe mi iendo a las aplicaciones
accede a las capacidades de la cáma a usando una API es ánda . En es e
p oyec o V4L2 es usado po OpenCV pa a accede a la cáma a y ob ene
ames de la misma. Todo disposi i o compa ible con el modo V4L2
apa ece como /de / ideo0 al ejecu a el comando 4l2-c l --lis -
de ices, que además, cambiando los a gumen os po --c
<op ion>=< alue> pe mi e el compo amien o del disposi i o o e los
modos de uncionamien o sopo ados.
La segunda ca ac e ís ica es ele an e debido a que los pue os USB de
la Raspbe y Pi es án limi ados en é minos de co ien e máxima
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
24
suminis ada a los pe i é icos conec ados. En ocasiones es a limi ación
equie e usa un concen ado (o hub) USB con alimen ación ex e na
pa a supli la al a de co ien e. Es o es necesa io en caso de conec a
pe i é icos con una al a demanda ene gé ica, como puede se una
webcam. En caso de es e pe i é ico, el uso de es a écnica no es necesa ia
al dispone és e de un consumo educido.
A duino
La placa A duino se conec a a la Raspbe y Pi median e una conexión USB, la cual
p o ee una comunicación se ie ull-duplex ía UART ( ambién llamado TTL Se ial).
Es e ipo de conexión pe mi e ansmi i un bi as o o a una elocidad p ede inida
que oscila en e 9600 bps y 115200 bps. A pesa de que an o Raspbe y Pi como
A duino ienen pines dedicados a comunicaciones TTL, es os no son compa ibles en e
sí, debido a que la p ime a hace uso de TTL 3 3 y la úl ima de TTL 5 . La conexión
USB, sin emba go si pe mi e la conexión di ec a, al implemen a TTL 5 . En la placa
A duino la capacidad de hace uso de TTL a a és de USB es o ecida g acias al chip
FTDI, que es un ha dwa e especí ico diseñado pa a con e i ansmisiones se ie TTL a
señales USB, pues la CPU de A duino no es capaz de ealiza ales ope aciones.
Pe i é icos A duino
Los componen es conec ados a la placa A duino son dos:
1. Puen e H dual, basado en el chip L298N. El modelo usado es mos ado en la
imagen siguien e:
Figu a 9: Puen e H dual basado en el chip L298N
Es e componen e es un con e ido de po encia que pe mi e gi a un mo o de
co ien e con inua en ambos sen idos. Su inclusión es necesa ia debido a que
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
25
A duino es capaz de p opo ciona únicamen e 5 V y 40 mA po pin, alo es
insu icien es pa a mo e un mo o . Po an o el puen e H se enca ga de
con ola la ensión y co ien e muy supe io es a los que pueda o ece el
mic ocon olado po medio de una señal en iada po es e. De es a o ma se
puede con ola el mo o de una o ma p ecisa po medio de señales PWM
(Pulse Wid h Modula ion o Modulación po Ancho de Pulsos). El con ol del
puen e H es lle ado a cabo po es pines de la placa A duino. El es ado del
p ime pin (ni el al o o bajo) indica al ci cui o la di ección del gi o del mo o , el
alo del segundo pin (0 - 255), indica el ciclo del abajo de la señal PWM,
con olando la elocidad de gi o del mismo y el es ado del e ce pin ac i a o
desac i a el eno. Po úl imo, lo des acable de es e ci cui o son las capacidades
eléc icas o ecidas po el chip L298N: ango de ol aje de en ada de en e
ap ox. 5 V ~ 35 V, co ien e máxima admi ida de 2 A po canal y una po encia
máxima de 25 W.
2. El segundo componen e usado es un se omo o enca gado de la di ección del
ehículo. Se a a de un Se o analógico OEM de amaño es ánda , bajo cos e y
que posee ca ac e ís icas básicas que cumplen con su come ido.
Figu a 10: Se o es ánda
El conjun o de es as ca ac e ís icas ienen dadas po el hecho de que es a
unidad posee un mo o de baja po encia y los eng anajes de nylon, lo que limi a
el es ue zo de o sión o ecido. Po o o lado los alo es de p ecisión, elocidad
y el cen ado cumplen con los mínimos necesa ios pa a las necesidades de es e
p oyec o. En é minos de conexiones, es e componen e se conec a a un pin
PWM de A duino, que se enca ga de es ablece el ángulo de gi o del mismo. La
alimen ación es p o is a po una ba e ía auxilia dedicada, capaz de
p opo ciona has a 5 V y has a 1 A de co ien e.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
32
La in e az g á ica del usua io mues a a ias en anas, sepa ando la en ana de ideo
de la de con oles, pe mi iendo así al usua io elegi su disposición y amaño de o ma
independien e. En la siguien e imagen se puede e el de alle de la GUI, la consola de
debug y de la p ueba de la encia de ansmisión de ídeo.
Figu a 16: De alle de la GUI de so wa e de esc i o io
La en ana p incipal de la aplicación mues a dos ba as e icales y una ho izon al.
Es os elemen os mues an el es ado en el que se encuen a el mando. Las ba as
e icales co esponden a acele ado y el eno, espec i amen e, mien as que la ba a
ho izon al co esponde a la di ección. El panel llamado “Compensación de di ección”
si e pa a ajus a de o ma ina la di ección del ehículo en caso de des ío hacia
izquie da o de echa. Pulsando los bo ones L o R del mando una o a ias eces, la
di ección se cen a en el alo deseado (+1, +2 o más pa a la de echa y -1, -2 o menos
pa a la izquie da). De es a o ma se puede compensa el cen ado inco ec o de la
di ección del ehículo dinámicamen e en cualquie momen o.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
33
So wa e And oid
La aplicación que se ejecu a en un disposi i o And oid iene como inalidad o ece una
se ie de con oles al e na i os omando el inpu de la manipulación del p opio
disposi i o po pa e del usua io. Pa a log a lo, se sigue el mismo p incipio que en la
aplicación de esc i o io, con la única di e encia que los alo es de en ada leídos no
p o ienen del mando, sino del acele óme o o de la posición del dedo en la pan alla.
Apa e de es e de alle, el uncionamien o de la aplicación es muy simila : se p ocede a
a anca un hilo que ob iene los da os de uno de los dos ipos de en ada pa a luego
se ializa lo en un JSON con el mismo o ma o que la aplicación de esc i o io
("[{"o se ": 0,"s ee ing": 88," h o le": 257}]") y a con inuación en ia lo
al ehículo. Las in e aces de la aplicación mó il son las siguien es:
Figu a 17: Pan alla p incipal de la aplicación mó il
La pan alla p incipal pe mi e elegi en e el ipo de con ol deseado.
Figu a 18: Pan alla del con ol basado en mo imien o mues a los da os en iempo eal
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
34
Po úl imo, el con ol ác il mues a al usua io el á ea de en ada y los alo es
ob enidos.
Figu a 19: Pan alla de con ol ác il con el can as y los alo es leídos
Al igual que en la aplicación de esc i o io, los alo es leídos de dis in as uen es de
en ada no se co esponden con alo es deseados, po lo que se con ie en median e
una unción de con e sión lineal de un ango de alo es a o o. Po ejemplo, en caso de
los alo es leídos del acele óme o, es os an desde -255 a 255 pa a ambos ejes,
mien as que en caso del con ol ác il los alo es se ienen que calcula con o me la
posición del oque den o del cí culo espec o al ancho y al o de la pan alla.
So wa e embebido
La pa e del so wa e embebido co esponde a una se ie de p og amas que se ejecu an
en el p opio ehículo. Todos se ejecu an en la Raspbe y Pi, excep o uno que es
ejecu ado po la placa A duino.
So wa e Raspbe y Pi
Raspbe y Pi ealiza las siguien es ope aciones: 1) ecepción de comandos de con ol y
su een ió a A duino 2) econocimien o de ma ículas y el en ío de esul ados al
sis ema de esc i o io y 3) en ío del s eam de ideo al sis ema de esc i o io. A
con inuación es as ope aciones se analizan en de alle y se asocian al so wa e que los
lle a a cabo.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
35
1. La ecepción de los comandos de con ol y su een ío al pue o se ie
co espondien e a A duino se lle a a cabo po un sc ip Py hon que ealiza las
siguien es ope aciones:
- C ea una ins ancia del socke UDP escuchando en el pue o deseado
- C ea una ins ancia del pue o se ie en el disposi i o ‘/de / yUSB0’
- Ejecu a un bucle in ini o
- Pa sea el con enido de cada da ag ama ecibido como un JSON
- Ob ene los elemen os del JSON (s ee ing, h o le, o se )
- Fo ma el S ing con es os alo es en el o ma o acep ado po A duino
- Esc ibi el S ing o mado en la ins ancia del pue o se ie
- Vol e a ejecu a pa a la p óxima i e ación del bucle
2. El econocimien o de ma ículas se lle a a cabo po la aplicación Op ica ,
compilada na i amen e y cuyo uncionamien o se desc ibe en de alle en el
apa ado co espondien e. Pa a el en ío de los esul ados, Op ica es ablece un
pipe a o o sc ip Py hon que lee los esul ados desde la salida es ánda y los
en ía al sis ema de esc i o io esc ibiéndolos sob e la ins ancia de un socke (con
di ección IP el pue o del sis ema de esc i o io como des ino) en cada i e ación
de un bucle in ini o.
3. Po úl imo, el en ío de ideo en iempo eal se ealiza edi igiendo la salida del
p og ama aspi id a ne ca con la di ección IP y el pue o del sis ema de
esc i o io. Conc e amen e, el comando usado es el siguien e: “ aspi id –
999999 –o - -n –w 640 –h 480 – ps 20 | nc %IP_DESTINO% 5001”.
Es e mé odo pe mi e el en ío de ideo de una mane a muy e icien e debido a
dos mo i os:
- El en ío del s eam de ideo a a és de ne ca elimina el o e head exis en e
en p o ocolos de s eaming ales como RTP o RTSP al en ia se los da os
empaque ados en una ama UDP. Como pun o nega i o, no hay muchos
ep oduc o es de ideo capaces de ep oduci ideo aw desde la salida
es ánda .
- aspi id es un p og ama que o ma pa e de la dis ibución Raspbian y ha
sido diseñado pa a unciona exclusi amen e con las Raspbe y Pi y sus
módulos cáma a dedicados. Debido a es o, es capaz de ap o echa las API
de bajo ni el OpenMAX IL pa a saca pa ido al ha dwa e de p ocesado
mul imedia de la Raspbe y Pi, VideoCo e 4, que codi ica el s eam de ideo
de la cáma a al o ma o H.264 po ha dwa e de una o ma muy e icien e.
Es a ope ación es posible en las dos gene aciones de la placa, al compa i
ambas la misma GPU. La siguien e imagen indica la a qui ec u a so wa e
de acceso al ha dwa e mul imedia:
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
36
Figu a 20: VideoCo e 4 APIs
So wa e A duino
La placa A duino ealiza las siguien es ope aciones:
1. Ab i la conexión se ie con la elocidad adecuada (la misma que la Raspbe y
Pi), de lo con a io los da os ecibidos se án co up os e ilegibles.
2. Decla a e inicializa los pines a usa (3 pines pa a con ola el mo o DC
usando el puen e H y un pin pa a con ola el Se o). Todos los pines son
OUTPUT
3. En a en el bucle p incipal del p og ama
4. En cada i e ación del bucle espe a al S ing de comandos a a és del pue o
se ie.
5. En caso de ecibi el S ing en an e y si és e es e bien o mado
(% alo %s,% alo % , s y ienen de s ee ing y h o le), ob ene los alo es de
las a iables ecién llegadas.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
37
6. Pa a el alo del mo o ( h o le): es ablece la di ección de gi o (hacia delan e o
a ás), qui a el eno, esc ibi el alo de la elocidad deseada en el pin
co espondien e.
7. Pa a el alo de la di ección (s ee ing): gi a el se o a la posición adecuada,
indicada po el alo de la a iable.
8. Rese ea el S ing ecibido.
9. Repe i el p oceso con la p óxima i e ación del bucle.
Reconocimien o de ma ículas (ANPR)
En es e apa ado se desc ibe el diseño e implemen ación del p oyec o de
econocimien o au oma izado de ma ículas de au omó il usando disposi i os mó iles
o embebidos. La he amien a usada es la lib e ía OpenCV que posee una licencia BSD.
Pa a el diseño inicial se u ilizó un p oyec o Visual S udio 2013 enlazado con las
lib e ías dinámicas de OpenCV. Es e en o no de abajo demos ó se más p opicio
pa a un desa ollo y p o o ipado ápidos al no ene es icciones como el que sí
pueden llega a ene un desa ollo pa a un disposi i o mó il o de p es aciones
educidas. Dicho es o, la p ime a implemen ación del sis ema lo cons i uye una
aplicación de esc i o io. Pos e io men e, se ealiza la po abilidad a un sis ema
Raspbe y Pi y And oid man eniendo el mismo código, esponsable de los p ocesos de
a amien o de imagen, como ejecu able en caso de la Raspbe y Pi y como lib e ía
dinámica na i a en caso de And oid.
Dada la complejidad del p oblema abo dado, la solución no podía se única. De hecho
exis e una mul i ud de posibles soluciones. La di e encia en e las mismas las pueden
dic a las mé icas del uncionamien o del p oduc o inal. A con inuación se desc iben
pasos básicos del uncionamien o del p og ama p opues o po [2] (aunque se
compa en cie os pasos que sí son comunes a o as posibles soluciones) y además cada
uno de ellos se á desc i o en de alle.
Ob ención de la o o del ehículo
És a se puede ob ene de una imagen es á ica o ex ae de un ame del p e iew de una
cáma a. El p ime caso es muy di ec o y es usado en la Raspbe y pi, pues en es e caso
es la solución habi ual, mien as el segundo caso, en ocado a disposi i os And oid,
pe mi e elegi en e usa la implemen ación de una cáma a del sis ema con el que se
abaja (and oid.ha dwa e.Came a) u op a po una clase en ol o io de la misma
p o is a po OpenCV (o g.openc .and oid.Ja aCame aView). Pa a es a aplicación se
op ó po la úl ima, dado que es a solución pe mi e ob ene las imágenes en una
es uc u a de da os Ma , que es usada po OpenCV a lo la go de odo el p oceso.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
38
P ime a solución
Segmen ación de la imagen pa a ob ención de la ma icula
Una ez ob enida la imagen inicial, se p ocede a ex ae el polígono de in e és, que,
idealmen e, es la ma icula sin los elemen os que la odean (ma cos, símbolos) pues
es os pueden di icul a la dis inción en e ca ac e es que o man la misma y uido
exis en e (como, po ejemplo, somb as, suciedad, impe ecciones, en e o os). Dado
que es e paso implica muchas ope aciones, a con inuación solo se desc ibi án las más
impo an es. Es e paso sí admi e dis in os diseños, ales como: clasi icación usando
SVM (Suppo Vec o Machine), ex acción de ca ac e ís icas usando cascadas de
Haa , econocimien o de pa ones y econocimien o de con o nos. Debido a la ela i a
simplicidad y apidez de diseño e implemen ación en la p ime a e sión del p og ama
se op ó po la úl ima opción.
La idea consis e en de ec a un polígono ce ado de colo uni o me que cumpla cie as
ca ac e ís icas ( elación de aspec o 52cm / 11cm, colo de ondo uni o me,
de e minados amaños máximos y mínimos y una al a densidad de líneas e icales).
Las ope aciones son como siguen:
Con e sión a escala de g ises y sua izado
Fil o Sobel
Ope ación de umb al adap able
Ope ación mo ológica de cie e
De ección de con o nos
G á icamen e, es as ope aciones se ep esen an de la siguien e o ma y o den:
Figu a 21: Fil o Sobel
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
39
El il o Sobel se u iliza pa a halla los bo des e icales y la p ime a de i ada
ho izon al. La de i ada es la unción ma emá ica que en OpenCV se de ine como:
oid Sobel(Inpu A ay s c, Ou pu A ay ds , in ddep h, in xo de ,
in yo de , in ksize=3, double scale=1, double del a=0, in
bo de Type=BORDER_DEFAULT);
Figu a 22: Umb al adap able
Median e el uso del umb al adap able se ob iene una imagen bina ia con un
alo de umb al ob enido a a és del mé odo O su. Es e algo i mo equie e una
imagen de 8 bi s como en ada y de uel e el alo de umb al como esul ado.
Su uso es el siguien e:
Ma img_ h eshold;
Th eshold (img_sobel, img_ h eshold, 0, 255, CV_THRESH_OTSU +
CV_THRESH_BINARY);
Finalmen e, aplicando la ope ación mo ológica de cie e, se puede elimina los
espacios acíos en e cada bo de e ical y conec a los egiones que con ienen
un núme o ele ado de bo des e icales. En es e paso se puede ob ene las
egiones que pueden con ene una ma ícula.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
40
Figu a 23: Ope ación mo ológica de cie e
Figu a 24: De ección de con o nos
Una ez inalizado el paso de de ección de con o nos se ob ienen candida os de
con ene la ma ícula. En la imagen de a iba se puede obse a que de los es
con o nos de ec ados, dos son e óneos. Pa a desca a los, odos los candida os se
eco an y se a an po sepa ado. Los con o nos ob enidos son los siguien es:
Figu a 25: Con o no e óneo nº1
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
41
Figu a 26: Con o no e óneo nº2
Figu a 27: Con o no a p io i co ec o
Reconocimien o de la ma icula
Una ez ob enidos los polígonos candida os se puede p ocede di ec amen e al
siguien e paso e in oca el p og ama OCR (Tesse ac ) pa a cada uno de los polígonos
pa a és e de uel a el S ing que compone la ma ícula espe ando un esul ado pa a el
polígono co ec o y ninguno pa a polígonos e óneos. Sin emba go es a opción no es
ace ada, pues el OCR siemp e in en a ob ene un ex o de la imagen y en caso de que
és a no es é bien o mada, el ex o esul an e se á comple amen e e óneo. Incluso
después de aplica la ope ación de umb al al polígono co ec o, el esul ado ob enido
del Tesse ac (OCR) puede que es é po debajo del 50% de ca ac e es econocidos.
Como se puede obse a en la imagen de abajo, la banca ización pone de mani ies o las
impe ecciones exis en es en la imagen. Es e hecho ae la necesidad de econoce los
ca ac e es que o man la ma ícula y econs ui la imagen basándose en los mismos.
Pa a ello se oma como base un ec ángulo comple amen e neg o que ac ua á de ondo.
A con inuación se p ocede a de ec a con o nos en el p opio polígono. Una ez
inalizado el p oceso pa a odos los polígonos se compa an los esul ados, se il an los
con o nos que incumplen la condición de se posibles ca ac e es (po elación de
aspec o, amaños, á eas) y as compa a el núme o de con o nos co ec os pa a cada
polígono se desechan los que incumplan esas condiciones. Finalmen e se p ocede a uni
el ondo base con los ca ac e es de ec ados, p e iamen e aplicándoles cie os il os,
quedando la imagen bina izada y con poco uido y de o maciones.
Figu a 28: Con o no bina izado median e una ope ación de umb al
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
48
3. con inuación se hace uso de dis in as he amien as disponibles, cuya inalidad
es acili a el p oceso de gene ación de un nue o a chi o de en enamien o. La
p ime a es jTessBoxEdi o , que oma como en ada una imagen TIFF ( o ma o
na i o de Tesse ac ) y gene a un box ile. Se a a de un a chi o que con iene el
ipo y la posición de un ca ác e en la imagen de en enamien o. Po ejemplo, la
5ª ila con iene ca ac e es 4, po lo que las en adas del box ile se án:
4 20 1474 35 1500 0
4 50 1471 65 1500 0
4 80 1474 95 1500 0
Figu a 37: jTessBoxEdi o edi ando box ile
4. El paso inal del p oceso de en enamien o ha sido simpli icado eno memen e
g acias a conjun os de sc ip s que o man pa e de Se ak Tesse ac T aine . Pa a
ob ene el a chi o de en enamien o esul an e bas a con usa la imagen de
en enamien o y el box ile como pa áme os de en ada de Se ak.
5. Finalmen e se ob iene un compac o (y po ello ápido de ca ga ) a chi o de
en enamien o que puede llega a aumen a signi ica i amen e la asa de
econocimien os exi osos, siemp e y cuando el en enamien o se haya ealizado
de o ma co ec a.
Las imágenes de en enamien o pueden o ma a chi os mul ipágina TIFF, cada una
con su box ile co espondien e y de es a o ma p oduci a chi os de en enamien o
o ien ados a múl iples uen es o lenguajes, siemp e y cuando sean a iaciones de la
misma amilia.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
49
4. Análisis y conclusiones
Una ez e minada la implemen ación de es e p oyec o, llegó la ho a de e alua lo en un
en o no eal y compa a , al menos, cie as ca ac e ís icas que compa e con o o ipo de
implemen aciones de econocimien o de ma ículas, dejando de lado la capacidad de
se mó il, pues es a únicamen e esul a ú il en un sis ema obus o y con iable. Aunque
ac ualmen e se a a de un ema que despie a g an in e és en e muchos sec o es
p o esionales in e esados, la o e a isible al público sigue siendo baja. Es deci , a pesa
de exis i cie o núme o de emp esas dedicadas a o ece un so wa e de ca ac e ís icas
simila es, es as o ecen las licencias a los in e esados o comp ado es bajo NDA (non-
disclosu e ag eemen ). Es deci , la emp esa que usa la ecnología en cues ión no iene
de echo a comen a o enseña las uncionalidades o capacidades del mismo. Es o hace
la compa a i as di ec as muy di íciles, pues no se a a de un so wa e disponible pa a
un público amplio.
Sin emba go, en el me cado exis e una aplicación And oid come cial cuyas capacidades
son bien conocidas y anunciadas po la emp esa que la desa olla. De hecho la e sión
demo de es a aplicación si ió como inspi ación pa a la implemen ación del mo o de
econocimien o de ma ículas de es e p oyec o. Se a a de una aplicación híb ida,
capaz de unciona en cualquie ipo de disposi i o And oid mínimamen e mode no y
cuya elocidad y p ecisión a la ho a de econoce ma iculas de odas los o ma os
posibles ( odas las eu opeas y muchas ex acomuni a ias) hacen de es a aplicación el
líde en es e segmen o. Quizás los pun os más in e esan es sean los hechos de que los
ingenie os de ás de es e p oyec o no hacen uso de OpenCV (sino de una se ie de
algo i mos p opios), además del p escindi de Tesse ac (in o mación ob enida
desensamblando las lib e ías na i as del p oyec o).
En caso de compa a i a di ec a en e Op ica y Ma ix Pocke [5], las á eas donde gana
el úl imo es en la dis ancia de econocimien o exi oso de la ma ícula. Op ica equie e
que la ma icula ocupe una pa e signi ica i a de la pan alla pa a p oduci una
segmen ación acep able, mien as que Ma ix Pocke puede segmen a una ma ícula a
a ios me os de dis ancia muy ápidamen e. O a di e encia en e las aplicaciones, es
la capacidad de econoce ma iculas ex anje as. El mo o OCR de Op ica , Tesse ac ,
ha sido en enado con ca ac e es de ma ículas nacionales, mien as que Ma ix Pocke
p escinde de un mo o OCR y lo sus i uye po un algo i mo de pa e n-ma ching de
ca ac e es que o man la ma icula sob e la imagen ob enida, po lo que su endimien o
y p ecisión a la ho a de aplica el econocimien o de ca ac e es a pa i del segmen o
ob enido es muy supe io .
Sin emba go, Op ica es un p oyec o muy ecien e y aun en es ado de desa ollo ac i o.
En un u u o, as es udia los allos exis en es y co egi la implemen ación y los
algo i mos de segmen ación y subsegmen acion, así como usando un a chi o de
en enamien o adecuado, es posible que el endimien o se ace que mucho al líde del
me cado ac ual.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
50
5. Bibliog a ía
[1] Lenguaje DRAKON - h p://d akon-edi o .sou ce o ge.ne /language.h ml
[2] Mas e ing OpenCV wi h P ac ical Compu e Vision P ojec s, Daniel Lélis Baggio,
Da id Millán Esc i á, Pack Publishing, 2012 – Chap e 5 Numbe Pla e Recogni ion
Using SVM and Neu al Ne wo ks
[3] Openc 3 de - Scene Tex De ec ion - Class-speci ic Ex emal Regions o Scene
Tex De ec ion h p://docs.openc .o g/3.0-be a/modules/ ex /doc/e il e .h ml
[4] Real-Time Scene Tex Localiza ion and Recogni ion, Lukas Neumann, Ji i Ma as
Cen e o Machine Pe cep ion, Depa men o Cybe ne ics, Czech Technical
Uni e si y, P ague, Czech Republic, 2012
[5] Ma ix Pocke And oid - h p://www.anp .hu/ma ix_pocke _and oid/
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
51
Anexo I – JNI
JNI es el mecanismo que pe mi e la comunicación en e Ja a y C++. Pa a pode usa lo
se equie en las siguien es pa es:
1. Lib e ía dinámica con sus mé odos expues os ya compilada e incluida en
el p oyec o.
2. Las lib e ías se ienen que ca ga en el o den especi ico espec o a sus
dependencias
3. Los mé odos a usa son ma cados con la palab a cla e "na i e"
La siguien e clase mues a que las lib e ías na i as se ca gan desde un con ex o es á ico
y los p o o ipos de los mé odos na i os únicamen e se decla an.
public class Na i eW appe implemen s Na i e {
s a ic {
Sys em.loadLib a y("lep ");
Sys em.loadLib a y(" ess");
Sys em.loadLib a y("openc _ja a");
Sys em.loadLib a y("op ica ");
}
public na i e S ing e u nPla e(long ma Add );
public na i e boolean ini Engine();
}
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
52
A con inuación se desc ibe como se ins ancia la clase Na i eW appe
public in e ace Na i e {
S ing e u nPla e(long ma Add G );
boolean ini Engine();
public s a ic class Fac o y {
s a ic Na i eW appe ins ance;
public synch onized s a ic Na i e c ea e(){
i (ins ance == null){
ins ance = new Na i eW appe ();
}
e u n ins ance;
}
}
}
Se ins ancia:
p i a e Na i e na i ePa ;
...
i (na i ePa == null){
na i ePa = Na i e.Fac o y.c ea e();
}
Se llama a mé odo na i o pasándole un alo :
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
53
S ing ma icula = na i ePa . e u nPla e( ameAdd .longValue());
Pa a pode c ea una lib e ía na i a hay que c ea los mé odos a los que se quie a
llama . Nó ese que los nomb es ienen que se los mismos que en Ja a, Po ejemplo al
mé odo de abajo no se le pasa ningún pa áme o y es e de uel e un boolean.
jboolean ini Engine(JNIEn * en , jobjec hiz){
...
e u n ue;
}
A es e mé odo se le pasa un long y se de uel e un S ing
js ing e u nPla e(JNIEn * en , jobjec hiz, jlong alue) {
...
e u n en ->NewS ingUTF("s ");
}
A con inuación se p ocede a expone los mé odos na i os pa a que es os puedan se
llamados desde Ja a. Es o se hace c eando un a ay de ipo JNINa i eMe hod que
iene que con ene los siguien es elemen os:
1. nomb e del mé odo
2. signa u a del mé odo
3. ( oid* nomb e del mé odo)
Bajo la signa u a del mé odo se en ienden los pa áme os que se le pasan al mé odo y
que es e de uel e, Po ejemplo, (J)LJa a/lang/S ing; quie e deci que el mé odo oma
como pa áme o un long ( ep esen ado como (J)) y de uel e un S ing ( ep esen ado
como LJa a/lang/S ing). O o ejemplo es ini Engine que no oma ningún pa áme o y
de uel e un boolean ( ep esen ado cono Z).
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
54
s a ic JNINa i eMe hod exposedMe hods[] = {
{" e u nPla e","(J)Lja a/lang/S ing;",( oid*) e u nPla e},
{"ini Engine","()Z",( oid*)ini Engine}
};
Pa a pode egis a los mé odos expues os, se u iliza el siguien e mé odo, que es
llamado cuando la lib e ía es ca gada, En él se ienen que indica la clase ja a que
decla a los mé odos na i os (la misma que la de a iba) y el a ay que con iene los
nomb es y signa u as.
jin JNI_OnLoad(Ja aVM* m, oid* ese ed)
{
JNIEn * en ;
i ( m->Ge En ( ein e p e _cas < oid**>(&en ), JNI_VERSION_1_6) !=
JNI_OK) {
e u n JNI_ERR;
}
jclass clazz = en ->FindClass("es/sdci/op ica /Na i eW appe ");
i (clazz==NULL){
e u n JNI_ERR;
}
en ->Regis e Na i es(clazz, exposedMe hods, sizeo (exposedMe hods) /
sizeo (JNINa i eMe hod));
en ->Dele eLocalRe (clazz);
e u n JNI_VERSION_1_6;
}