Sunteți pe pagina 1din 105

PROVISINDESERVICIOS

DEPROCESADODE
IMGENESBASADOSEN
ARQUITECTURAS
ORIENTADASASERVICIOS

BernardinoMarcosAsensio
12/09/2013

PROYECTO FIN DE CARRERA


PLAN 2000
E.U.I.T. TELECOMUNICACIN

TEMA:

Arquitecturas SOA en sistemas empotrados

TTULO:

Provisin de servicios de procesado de imgenes basados en arquitecturas orientadas a


servicios (SOA)

AUTOR:

Bernardino Marcos Asensio

TUTOR:

Vicente Hernndez Daz

DEPARTAMENTO:

V B.

DIATEL

Miembros del Tribunal Calificador:


PRESIDENTE:
VOCAL:

Vicente Hernndez Daz

VOCAL SECRETARIO:
DIRECTOR:
Fecha de lectura:
Calificacin:

El Secretario,

RESUMEN DEL PROYECTO:


Con este proyecto se pretende crear un procedimiento general para la implantacin de aplicaciones de
procesado de imgenes en cmaras de video IP y la distribucin de dicha informacin mediante
Arquitecturas Orientadas a Servicios (SOA).
El objetivo principal es crear una aplicacin que se ejecute en una cmara de video IP y realice un
procesado bsico sobre las imgenes capturadas (deteccin de colores, formas y patrones) permitiendo
distribuir el resultado del procesado mediante las arquitecturas SOA descritas en la especificacin DPWS
(Device Profile for Web Services).
El estudio se va a centrar principalmente en la transformacin automtica de cdigo de procesado de
imgenes escrito en Matlab (archivos .m) a un cdigo C ANSI (archivos .c) que posteriormente se
compilar para la arquitectura del procesador de la cmara (arquitectura CRIS, similar a la RISC pero con
un conjunto reducido de instrucciones).

Resumen
Conesteproyectosepretendecrearunprocedimientogeneralparalaimplantacinde
aplicacionesdeprocesadodeimgenesencmarasdevideoIPyladistribucindedicha
informacinmedianteArquitecturasOrientadasaServicios(SOA).
ElobjetivoprincipalescrearunaaplicacinqueseejecuteenunacmaradevideoIPyrealice
unprocesadobsicosobrelasimgenescapturadas(deteccindecolores,formasypatrones)
permitiendodistribuirelresultadodelprocesadomediantelasarquitecturasSOAdescritasen
laespecificacinDPWS(DeviceProfileforWebServices).
Elestudiosevaacentrarprincipalmenteenlatransformacinautomticadecdigode
procesadodeimgenesescritoenMatlab(archivos.m)auncdigoCANSI(archivos.c)que
posteriormentesecompilarparalaarquitecturadelprocesadordelacmara(arquitectura
CRIS,similaralaRISCperoconunconjuntoreducidodeinstrucciones).

Abstract
Thisprojectaimstocreateageneralprocedurefortheimplementationofimageprocessing
applicationsinIPvideocamerasandthedistributionofsuchinformationthroughService
OrientedArchitectures(SOA).
ThemaingoalistocreateanapplicationthatrunsonIPvideocameraandcarryoutabasic
processingonthecapturedimages(colordetection,shapesandpatterns)allowingto
distributetheresultofprocessbySOAarchitecturesdescribedintheDPWSspecification
(DeviceProfileforWebServices).
Thestudywillfocusprimarilyontheautomatedtransformofimageprocessingcodewrittenin
Matlabfiles(.M)toANSICcodefiles(.C)whichisthencompiledtotheprocessorarchitecture
ofthecamera(CRISarchitecture,similartotheRISCbutwithareducedinstructionset).

Quiero agradecer a mi familia el


esfuerzo y dedicacin volcados sobre m todos
estosaos. Enespeciala mimadre que,en su
afn por darme siempre lo mejor, insisti en
que cursara estudios universitarios ya que ella
nunca tuvo opciones. Seguramente no estara
trabajandocmodamenteenunaoficinadeno
serporella.Descansaenpaz.

ProvisindeserviciosdeprocesadodeimgenesbasadosenArquitecturasOrientadasaServicios

NDICE
NDICE.....................................................................................................................................v
NDICEDEFIGURAS..............................................................................................................vii
1

INTRODUCCIN..............................................................................................................1
1.1

PLANTEAMIENTO...................................................................................................1

1.2

OBJETIVOSCONSEGUIDOS.....................................................................................3

DESCRIPCINDELMARCODETRABAJO........................................................................5
2.1

CMARASIP...........................................................................................................5

2.1.1 CMARASDIGITALES.........................................................................................5
2.1.2 SISTEMASDEVIGILANCIAIP..............................................................................6
2.1.3 REDIP................................................................................................................7
2.1.4 SELECCINDEUNACMARAPARAPRUEBAS..................................................8
2.1.5 ARQUITECTURADELACMARAIP...................................................................9
2.1.6 FIRMWARE......................................................................................................10
2.1.7 LINUXEMBEBIDO............................................................................................11
2.1.8 PLATAFORMADEAPLICACIONESDECMARASAXIS......................................13
2.2
3

PROBLEMASENCONTRADOS................................................................................15

PROCESAMIENTODEIMGENES.................................................................................17
3.1

INTRODUCCIN....................................................................................................17

3.2

DESARROLLODEUNALGORITMO........................................................................17

3.2.1 MATLAB...........................................................................................................18
3.2.2 SIMULINK.........................................................................................................30
3.3

GENERACINDECDIGODEPROCESADODEIMGENES..................................33

3.4

LIBRERIASDEPROCESAMIENTODEIMGENES...................................................35

3.4.1 OPENCV...........................................................................................................35
3.4.2 QDBMP............................................................................................................35
3.5
4

PROBLEMASENCONTRADOS................................................................................45

ARQUITECTURASSOA...................................................................................................47
4.1

INTRODUCCIN....................................................................................................47

4.2

DPWS....................................................................................................................48

ProvisindeserviciosdeprocesadodeimgenesbasadosenArquitecturasOrientadasaServicios
4.3

FRAMEWORKSPARADESARROLLODPWS...........................................................51

4.4

PROCESODEDESARROLLO...................................................................................51

4.4.1 DEFINICINDELDISPOSITIVO.........................................................................52
4.4.2 DEFINICINDELSERVICIO...............................................................................55
4.4.3 IMPLEMENTACINDELDISPOSITIVO..............................................................57
4.4.4 EJECUCINDELDISPOSITIVO..........................................................................58
4.4.5 MONITORIZACINSOAP.................................................................................59
4.5
5

PROBLEMASENCONTRADOS................................................................................60

MODELOSPROPUESTOS...............................................................................................61
5.1

DIFICULTADESTCNICAS......................................................................................61

5.2

DETECTORDEMOVIMIENTO................................................................................61

5.3

CONTADORDEPERSONAS....................................................................................65

5.4

SISTEMADECAPTURADECARAS.........................................................................67

5.5

COMPARADORDELVOLUMENDEPIXELES..........................................................71

CASOPRCTICO............................................................................................................73
6.1

USOPRCTICODELCOMPARADORDEVOLMENES..........................................73

6.1.1 CONTROLDELLENADODERECIPIENTES.........................................................73
6.1.2 MOTIVOSDELAELECCIN..............................................................................74
6.2

MODELODELSISTEMA.........................................................................................74

6.2.1 ESQUEMADEMONTAJE..................................................................................74
6.2.2 DIAGRAMADECASOSDEUSO........................................................................75
6.2.3 DIAGRAMADECOMPONENTES.......................................................................76
6.2.4 DIAGRAMADECLASES.....................................................................................78
6.2.5 DIAGRAMASDESECUENCIA............................................................................79
6.2.6 DEFINICINDELSERVICIO...............................................................................80
6.3

IMPLEMENTACINDELSISTEMA.........................................................................83

6.3.1 SOFTWAREENELCLIENTE...............................................................................83
6.3.2 SOFTWAREENLACMARAIP.........................................................................84
PRESUPUESTO.....................................................................................................................85
CONCLUSIONES...................................................................................................................87
GLOSARIO............................................................................................................................89
BIBLIOGRAFA......................................................................................................................91

vi

ProvisindeserviciosdeprocesadodeimgenesbasadosenArquitecturasOrientadasaServicios

NDICEDEFIGURAS
Figura1.1:EsquemadeunsistemadevigilanciaIP..............................................................2
Figura2.1:Esquemadeunconversoranalgicodigital........................................................5
Figura2.2:DiagramadeconversinRAW.............................................................................6
Figura2.3:PxelesformandounaimagenByNyotraenColor.............................................6
Figura2.4:SoftwaredegestindecmarasIP.....................................................................7
Figura2.7:CmaraAXIS210seleccionadaparapruebas.....................................................8
Figura2.8:ArquitecturadeunacmaraIP............................................................................9
Figura2.9:DiagramadebloquesdelmicrocontroladordelaCmaraIP...........................10
Figura2.10:PlataformadeaplicacionesdecmarasAXIS..................................................14
Figura2.11:AXISCrossLineDetection................................................................................14
Figura3.1Imagenoriginalparaprobarelcontadordeobjetos.........................................19
Figura3.2VistadelaimagencargadaenelespaciodetrabajodeMatlab........................19
Figura3.3Thresholdingdeunaimagenruidosa.................................................................20
Figura3.4ProcesodeThresholding....................................................................................21
Figura3.5Segmentacindelaimagendeprueba..............................................................23
Figura3.6EspaciodetrabajodeMatlabtraselprocesodesegmentacin.......................23
Figura3.7Rellenadodehuecosenlaimagendeprueba...................................................24
Figura3.8Erosindeuncuadradousandounaformacircular..........................................24
Figura3.9Matrizconformadediamanteparaelprocesodesuavizado...........................25
Figura3.10Suavizadodebordes.........................................................................................25
Figura3.11Filtradodeobjetospequeos...........................................................................26
Figura3.12Conectividaddepixeles....................................................................................26
Figura3.13Etiquetadodeunaimagen...............................................................................27
Figura3.14Imagenetiquetadaresultadodelproceso.......................................................28
Figura3.15Resultadodelprocesocontadordeobjetos....................................................28
Figura3.16Procesodeetiquetadocompleto.....................................................................29
Figura3.17ModeloCliente.................................................................................................30
Figura3.18ModelodelContadordeObjetos.....................................................................31
Figura3.19Inspeccionesduranteelproceso......................................................................31
Figura3.20Granosdearrozcontadosdeformamanual....................................................32
Figura3.21GeneracindecdigodesdeSimulink.............................................................33
Figura3.22MscaradelfiltroQuickEdge...........................................................................38
Figura3.23AplicacindelfiltroQuickEdge........................................................................39

vii

ProvisindeserviciosdeprocesadodeimgenesbasadosenArquitecturasOrientadasaServicios
Figura3.24Explicacindesobrescritura(0,0)....................................................................40
Figura3.25Deteccindecolorportolerancia....................................................................41
Figura3.26Deteccindecolorporproporcin..................................................................42
Figura3.27Comparativademtodosdedeteccindelcolor............................................43
Figura3.28ResultadoendepuracindelrecuentoBMP_FastCountColorProp.................44
Figura4.1ArquitecturadeServiciosWeb...........................................................................47
Figura4.2TorredeprotocolosDPWS.................................................................................48
Figura4.3ArquitecturaDPWS.............................................................................................50
Figura4.4DispositivodescubiertodesdeWindowsVista...................................................53
Figura4.5Accediendoalapginawebdeldispositivo.......................................................53
Figura4.6Pginawebdeldispositivo.................................................................................54
Figura4.7InformacindeldispositivodesdeDPWSExplorer............................................54
Figura4.8EstructuradelWSDL...........................................................................................55
Figura4.9InformacindelserviciodesdeDPWSExplorer.................................................56
Figura4.10GeneracindecdigomediantegSOAP...........................................................57
Figura4.11Servidoralaesperadepeticiones....................................................................58
Figura4.12OperacindesdeDPWSExplorer.....................................................................58
Figura4.13MonitorizacinSOAPdesdeDPWSExplorer....................................................59
Figura4.14DetalledelmensajeSOAPdelevento..............................................................59
Figura5.1MascaradeCambiosenladeteccindemovimiento........................................62
Figura5.2DeteccindemovimientoconMatlab(Resultado)............................................63
Figura5.3DeteccindemovimientoconMatlab(Cdigo1/2)..........................................63
Figura5.4DeteccindemovimientoconMatlab(Cdigo2/2)..........................................64
Figura5.5Instantneadeejemplodeunmuseo................................................................65
Figura5.6Problemasdurantelasegmentacin..................................................................65
Figura5.7Ejemploderesultadosdelcontadordepersonas..............................................66
Figura5.8Deteccindecaraporsegmentacindecolor...................................................67
Figura5.9Deteccinmedianteredesneuronales...............................................................68
Figura5.10Algoritmobsicoparadeteccindecarasmedianteredesneuronales..........68
Figura5.11EjemplodedeteccindepatronesdeSimulink...............................................69
Figura5.12Correlacindeunpatrncontralaimagendelacmaradelporttil(1/2)....70
Figura5.13Correlacindeunpatrncontralaimagendelacmaradelporttil(2/2)....70
Figura5.14Algoritmodesegmentacinporcolormedianteelsistemadeinecuaciones.71
Figura5.15Deteccindelcolorconsistemadeinecuaciones............................................72
Figura6.1Esquemadelcontroldelniveldellenado...........................................................73

viii

ProvisindeserviciosdeprocesadodeimgenesbasadosenArquitecturasOrientadasaServicios
Figura6.2Diagramadesecuenciaenlneadeproduccin.................................................74
Figura6.3Diagramadecasosdeuso..................................................................................75
Figura6.4Diagramadecomponentes................................................................................76
Figura6.5Diagramadeclases.............................................................................................78
Figura6.6Diagramadesecuenciadeldisparo....................................................................79
Figura6.7Diagramadesecuenciadelservicio....................................................................79
Figura6.8AplicacinSetup.................................................................................................83
Figura6.9Restauracindelbackupconelsoftwaredelacmara.....................................84

ix

Captulo1:Introduccin

1 INTRODUCCIN
El objeto del proyecto se encuadra en los Sistemas de Vigilancia IP, no restringiendo su
usonicamentealaseguridad,sinotambinenlainspeccinvisualdeprocesosindustriales.
La inspeccin visual consiste en el procesado de imgenes digitales para extraer cierta
informacin til de la secuencia de imgenes. Pertenece a una de las ramas de la Inteligencia
ArtificialllamadaVisinporComputador.
Actualmente la Visin por Computador en Sistemas de Vigilancia se realiza de forma
centralizadaencomputadorasdedicadas.Eninstalacionesmedianasyaserequieregranpotencia
declculoygeneraunconsumoconstantedelanchodebandadelareddebidoalatransmisin
continuadeunflujodevdeo.
Laideadeesteproyectoconsisteenincrustarunapartedelprocesoenlaarquitecturade
lasCmarasIPdotndolasdeciertainteligencia.Conestosepretendereducirelanchodebanda
consumido, transmitiendo slo la informacin extrada al procesar las imgenes dentro de la
cmaraIPydistribuiraslacargadelproceso.

1.1 PLANTEAMIENTO
ParaellosedesarrollancomponentesdeSoftwareEmbebidosenlasCmarasIPdeforma
que puedan extraer cierta informacin de las imgenes y realizar acciones acorde con la
informacinextradaotrasmitirdichainformacinmedianteArquitecturasSOA(ServiceOriented
Architecture)yasdelegarlatomadedecisionesenotrossistemas.
Paratomarconscienciadelproblematomamoscomoejemploelsistemadevigilanciade
un centro de exposiciones de 4 estancias, en el que hay una cmara por cada estancia. En la
siguientefigurasemuestraunesquemadeestetipodesistema.

pg.1

Captulo1:Introduccin

Figura1.1:EsquemadeunsistemadevigilanciaIP

Hayquerealizarunprocesosobrelasimgenesparacontabilizaralosvisitantesyrealizar
unaestadsticadelaasistenciaaeventosqueincluyaelintersmostradoencadaestancia.Este
procesonodebeimpactarenelsistemadevigilanciadeseguridad.
AlserunaredIPnotenemosdificultadenaadirunclientedevisualizacinmsacada
cmara. Un computador conectado en la red puede consumir la imagen de las 4 cmaras para
realizarelprocesodeformaindependiente.
UnasealdevideoVGA640x480conunaprofundidaddecolorde24bitssincompresin
a 30 cuadros por segundo ocupa un ancho de banda de 221,184 Mbit/s, sin tener en cuenta
cabeceras de informacin necesarias para el formato de imagen ni las necesarias para su
transmisin por la red. La velocidad habitual de una red LAN es de 100 Mbit/s, bajo estas
condicionesnosepuedetransmitirnisiquieraunadelas4sealesdevideo.
Esteproblemaseabordageneralmenteintroduciendoformatosdecompresindevideo,
reduciendolatasaderefresco,laresoluciny/olainformacindecolor.
UnasealdevideoVGA640x480aunavelocidadderefrescode30cuadrosporsegundo
codificadaconMPEG4conunacompresindel30%ocupaunanchodebandade603Kbit/s.Para
elejemplodelas4cmaras,elcomputadorclienterealizaunconsumode2,41Mbit/s.
Estaesunasolucinvlidacuandoelquevaaextraerlainformacinesunhumano,pero
cuando la imagen debe ser procesada por un computador surgen diversos problemas como el
aumento de la potencia de clculo requerida para interpretar la seal comprimida, el aumento
considerabledelruidodeimagenyperdidadelainformacindecolor.Estasaberracionesdela

pg.2

Captulo1:Introduccin
imagen obligan a introducir contramedidas en el algoritmo de visin por computador
aumentandonuevamentelapotenciadeclculorequerida.
Es ms razonable transmitir nicamente la informacin til 11:45, 28 personas, sala 3
envezdetransmitirtodalaimagenparaprocesarla.Paraellohayqueconsiderarlaslimitaciones
de hardware de las cmaras existentes en el mercado. Actualmente, las prestaciones de la
mayoradecmarasIPdelmercadopermitenllevaracabounprocesodeimgenesincorporando
hardwarededicado(DSPDigitalSignalProcessorycompresoresJPGyMPEG)aunavelocidad
msqueaceptable.

1.2 OBJETIVOSCONSEGUIDOS
Sehaconseguidorealizardeformaprcticalaincrustacindelcomponentedeprocesado
deimagenenlacmara.Muchosdelosobstculosencontradoshanresultadoserespecficosde
la plataforma software de la cmara seleccionada para las pruebas y prcticamente todos han
sidoatajadosconunasolucinalternativa.
La gran mayora de libreras de procesado de imgenes y visin por computador estn
escritasenlenguajeC++perolalibreraestndardeCpresenteenlacmara,lalibrerauClibcno
permite su compilacin y presenta una incompatibilidad con los caracteres de 16 bit (tipos
wchar_t) impidiendo la distribucin de la informacin con arquitecturas SOA, siendo una parte
fundamental de la rama Telemtica. Este aspecto se aborda tericamente para facilitar futuros
trabajos sobre este campo de investigacin y ser reemplazado en la prctica por una solucin
bsica.
Lacmaraanivelhardwaretienelascapacidadessuficientespararealizarelcasodeuso
planteadocumpliendotodaslasexpectativasdelproyectoyporlotantolaideadelproyectoes
factible.

pg.3

Captulo2:Descripcindelmarcodetrabajo

2 DESCRIPCINDELMARCODETRABAJO
2.1 CMARASIP
LascmarasIPsoncmarasdigitalesqueutilizanlaredIPparatransportarsussealesde
imagenysonido,ademsdepoderrecibircomandosdecontrol.
Entremuchasdesusventajaspermiten:

2.1.1

VisualizarlaimagendesdecualquiersitiodelmundograciasaInternet.
Reducirlosgastosdeinstalacinyaquesepuedeutilizarlareddedatosdeledificio,ya
seacableadaoinalmbrica.
Ganarencalidadalserunasealdigital.
CMARASDIGITALES
Lascmarasdigitalesutilizanunsensordeimagenparatransformarlaluzrecibidaenuna

seal digital de unos y ceros. El sensor est compuesto de una parrilla de pequeos sensores
fotoelctricos(celdas)quegeneranunasealelctricaenfuncindelaluzrecibida(aligualque
los conos y bastones de la retina de los mamferos). Esta seal elctrica es muestreada y
convertida a digital mediante un convertidor analgico digital (ADC) como el de la Figura 2.1:
Esquemadeunconversoranalgicodigital.

Figura2.1:Esquemadeunconversoranalgicodigital

Existenvariostiposdesensoresperoparaelcasoquenoscompete,losdecolor,utilizan
unaparrillacuadradaconunamscarasuperpuestadefiltrosdeloscoloresprimariosrojo,verde
y azul. Al igual que en la retina hay mayor nmero de clulas sensibles al verde (bastones),
generalmenteseusaunamscara(25%rojo,25%azuly50%verde)denominadaFiltroBayeren
honorasuinventorBryceE.Bayer.Estamscarapermitesacrificarresolucinafavordeobtener
colorsinperderluminosidad.LaimagentalcomolaobtieneelsensorsedenominaRAW(crudo),
posteriormente un procesador de imagen interpola la informacin de cada canal de color para
estimar el valor de los pixeles tapados con el filtro de otro color. Adicionalmente estos
procesadores realizan otras funciones como el balance de blancos, filtro de ruido, compresin,
etc.;parafinalmenteobtenerunaimagenenunformatoespecifico,generalmenteJPEGoTIFF.
SepuedeverundiagramadeesteprocesoenlaFigura2.2:DiagramadeconversinRAW.

pg.5

Captulo2:Descripcindelmarcodetrabajo

Figura2.2:DiagramadeconversinRAW

La imagen final se caracteriza por tener una resolucin igual al nmero de pixeles
horizontales por el nmero de pixeles verticales. Se mide comercialmente en MegaPxeles (106
Pxeles).Unpixelesunelementodecoloruniforme,congrancantidaddepixelessepuedeformar
una imagen a modo de mosaico como muestra la figura 2.3. Los pixeles en color tienen
tonalidades para el rojo, verde y azul. Dependiendo del proceso de cuantificacin en el ADC se
obtienen diferentes niveles de color. El caso ms extendido es usar 8 bits por pixel (bpp) para
cadacanaldecolor.Paralasimgenesencolorseusaunaprofundidaddecolorde24bpp(8rojo
+8verde+8azul)aunqueestodependedelformatodeimagen.

2.1.2

Figura2.3:PxelesformandounaimagenByNyotraenColor

SISTEMASDEVIGILANCIAIP
LasredesEthernetsonindispensablesencualquieredificiodondesequierateneracceso

a Internet. Cualquier edificio con una red Ethernet donde se quiera instalar un sistema de
vigilancia lo tiene muy fcil gracias los Sistemas de Vigilancia IP. En cualquier lugar donde haya

pg.6

Captulo2:Descripcindelmarcodetrabajo
unatomadeEthernetsepuedeinstalarunacmaradevigilanciaylaimagensepuedevisualizary
grabar desde cualquier punto de la red o desde Internet. Adems hay cmaras capaces de
conectarsedeformainalmbricaaunpuntodeaccesoWiFidelareddeledificio.
LosgastosmaterialesdelsistemasereducenalosgastosdeadquisicindelascmarasIP.
Estetipodesistemasnocaptanruidodurantelatransmisinportratarsedesistemasdigitalesy
nonecesitanamplificadoresnirepetidorescomopuedenecesitarunsistemaCCTVclsico.
Cualquierordenadorconunnavegadorweboelsoftwaredegestinproporcionadopor
elfabricante(verFigura2.4:SoftwaredegestindecmarasIP)puedeaccederalaimagendelas
cmaras. Por supuesto se puede establecer unos niveles de acceso mediante contrasea y la
transmisinestcifradaconHTTPS.

Figura2.4:SoftwaredegestindecmarasIP

Aparte de la simple transmisin y grabacin del video algunas cmaras IP ofrecen la


posibilidaddelanzaralarmasenfuncindelaactividadvisualizada,mandarcorreoselectrnicos,
tomarfotografasysubirlasaundirectorioFTP,ocultarunazonadelaimagen,etc.
Una funcin muy til y ventajosa es la capacidad de iniciar la grabacin nicamente
cuandosedetectamovimientoenunaovariasregionesdelaimagen.
El objetivo de este proyecto es desarrollar una nueva funcin sobre la actividad
visualizadautilizandoalgoritmosdeprocesamientodeimgenes.
2.1.3

REDIP
GraciasalaredIPunacompaapuedecontrolarlaseguridaddevariosemplazamientos

endistintaspartesdelmundodesdeunasedecentralsindemasiadascomplicaciones.Alestarla
red Ethernet de los edificios conectada a Internet mediante un router se puede realizar la
configuracinNATparateneraccesoalasdiferentescmarasdeledificiodesdecualquierparte

pg.7

Captulo2:Descripcindelmarcodetrabajo
delmundo.LaslimitacionesvendrnenfuncindelavelocidaddeconexinaInternetquetengan
losedificios.
Existen en el mercado servicios de grabacin externos que se benefician de la
conectividad IP para guardar las grabaciones de forma remota. Este tipo de servicios aade
seguridad adicional al mantener alejado el material de grabacin del edificio cuya seguridad se
veacomprometida,porejemploenunincendioelsistemadegrabacinpuederesultardaado.
2.1.4

SELECCINDEUNACMARAPARAPRUEBAS
Durante el desarrollo del presente Proyecto de Fin de Carrera se ha trabajado con

cmaras IP del fabricante AXIS Communications por disponer de un firmware Linux embebido y
proporcionar herramientas para el desarrollo tanto de programas de control, externos a la
cmara,comodeprogramasembebidosenlapropiacmara.
Concretamente se ha trabajado con laCmara IP AXIS 210 por ser de las econmicas la
quemayorescapacidadeshardwareofrece.

Figura2.5:CmaraAXIS210seleccionadaparapruebas

Caractersticasdelproducto
LascmarasAXIS210/211estnbasadasenelchipdecompresinAXISARTPEC2.
Ambosmodelossoportanlassiguientescaractersticas:

SoportesimultneodesecuenciasMotionJPEGyMPEG4paralaoptimizacindeimagen
yanchodebanda.

Deteccin de movimiento integrada, con buffer de pre y post alarma. Que se puede
utilizarparainiciarlagrabacincuandoseproduceactividadenlaimagendevideo.

Grabacionesprogramadasendeterminadosmomentos.

FiltradodedireccionesIPyproteccinconcontraseasmultinivel.

Entrada y salida de seales digitales de alarma, que pueden conectarse con diversos
dispositivosexternoscomosensoresdeaperturadepuertasycampanasdealarma.

pg.8

Captulo2:Descripcindelmarcodetrabajo

Mltiplesresolucionesdevideo.

Accesosimultaneodehasta20espectadorescuandoseusaMotionJPEG.Elnmerode
espectadores es ilimitado cuando se utiliza multicast MPEG4, pero cada espectador
necesita una licencia MPEG4. Se incluye una licencia con el producto, pero se pueden
adquirirlicenciasadicionales.

Sepuedenconfigurarhasta3areasdeprivacidadenlascualesnosemuestralaimagen.

Elservidorintegradopermiteelaccesocompletoatravsdeunnavegadorwebestndar.

La herramienta de creacin de scripts integrada le permite la creacin de aplicaciones


bsicas.Paraunafuncionalidadavanzada,sepuedeaccederalacmaraatravsdelAPI
AXISHTTP.
LascaractersticasadicionalesparalaAXIS211sonlassiguientes:

LaAXIS 211tiene un IrisDC dedistancia focal variable, que regula automticamentela


cantidaddeluzqueentraenlacmara.Elenfoqueylaprofundidaddecamposeajustan
manualmenteconlaayudadeunasmanecillasmontadasenelobjetivo.

2.1.5

SepuedealimentarusandoPoEconformeestndarIEEE802.3af.
ARQUITECTURADELACMARAIP
UnacmaraIPsepuededescribircomounacmarayunordenadorcombinados.Tienen

unchipdecompresin,unsistemaoperativo,unservidorwebinterno,unservidorFTP,uncliente
FTP,clienteemail,controldealarmasymuchoms.

Figura2.6:ArquitecturadeunacmaraIP

Comoseobservaeneldiagramalaescenaseproyectasobreelsensordeimagengraciasa
unjuegodelentes,lasealdelsensor,encrudo,esinterpretadaporelprocesadordeImageny

pg.9

Captulo2:Descripcindelmarcodetrabajo
luego se le aplican los correspondientes algoritmos de compresin, la imagen procesada se
transmiteusandolainterfazEthernet.Todoelloestgobernadoporelprocesadordelacmara.
La cmara seleccionada tiene un microcontrolador ETRAX 100LX de 32bit basado en el
ETRAX100conelaadidodeunaunidaddemanejodememoria(MMU)quelepermitefuncionar
con Linux, de ah el prefijo LX. A continuacin se muestra un diagrama de bloques de la
arquitecturadelmicrocontrolador.

Figura2.7:DiagramadebloquesdelmicrocontroladordelaCmaraIP

El microcontrolador lleva un procesador RISC de 100 MIPS, una cache unificada de


instruccionesydatosde8Kb,Puertosdeentrada/salidacontroladosporDMAyuncontroladorde
FastEthernet.ElprocesadordelETRAX100LXesunprocesadorRISCde32bitconinstrucciones
de 16bit que cumple con el conjunto reducido de instrucciones (CRIS) de Axis. Funciona a una
frecuenciade100MHz,dandounrendimientopicode100MIPS.
LacmaraAxis210vieneequipadacon4MBdememoriaFlash,16MBdememoriaRAM
deloscuales1,2MBseutilizanparalosbufferdelasalarmas.
2.1.6

FIRMWARE
El software que ejecuta la cmara (firmware), puede ser actualizado de una manera

sencilladesdelapropiainterfazwebdelacmara.Elfabricantepublicaactualizacionesperidicas
delfirmwareparaaadirnuevasfuncionalidadesycorregirerroresencontrados.Enelcasodelas
cmarasAXISelfabricanteproporcionalasutilidadesyelkitdedesarrollodesoftware(SDK)para
quecualquierapuedarealizarampliacionesdesoftwaresobrelacmara.

pg.10

Captulo2:Descripcindelmarcodetrabajo
El fabricante AXIS ha seleccionado el sistema operativo Linux como base para sus
desarrollos sobre la cmara. Ha seleccionado Linux por la existencia de numerosas libreras de
cdigoabiertoparaintegrarensusproductos.Acontinuacinseanalizanlaspiezasdesoftware
disponiblesenelFirmwaredelfabricantedelascmaras.
2.1.7

LINUXEMBEBIDO
LascmarasAXISllevanunadistribucinLinuxdeversinigualosuperiorala2.4conuna

libreraestndardeCdereducidotamaodenominadauClibc(microClib)yconlaShelldash.La
AXIS210concretamentellevalaversin2.6.
Axisponeadisposicindelpblicounsubconjuntodelentornodedesarrolloutilizadopor
elfabricante,esteentornodedesarrollonoincluyeelsoftwareespecficodelosproductos,pero
sirve como base para realizar el desarrollo de aplicaciones empotradas. Existen variasversiones
delentornodedesarrollodesoftware(SDK),pararealizarelpresenteproyectosehautilizadola
versin2.20conalgunasmodificacionesdelaconfiguracinquesecomentarnmsadelante.
Ellistadocompletodelasaplicacionesdisponiblesenladistribucinsepuedeobteneren
la referencia [4]. Por mencionar algunas: tiene el servidor web boa con soporte para CGI, el
cojuntodeutilidadesbusybox,lareducidashellPOSIXdash,elasistenteparadepuracinremota
gdbserver, encriptacin de sockets con openSSL, el cliente FTP sftpclient, el cliente SMTP
smtpclient,eleditordeficherosdetextovawebeditcgi,elservidortelnetutelnetd,elservidor
FTPvftpd,etctera.
2.1.7.1 DESARROLLODEAPLICACIONESEMPOTRADAS
PrimerohayquemencionarquenosepuededesarrollarsobreWindowsusandocygwin
porquevariaspiezasdelSDKasumenqueseestusandoGNU/Linux.Poresosehautilizadouna
maquinavirtualconUbuntupreinstaladodondesehainstaladoelcompiladorfacilitadoporAXIS
yelentornodedesarrolloSDKv2.20.
Laarquitecturadelacmara(CRIS)esdistintaqueladelentornodedesarrolloutilizado
(x86) por lo tanto hay que realizar compilaciones cruzadas del cdigo, lo que dificulta en cierta
medida las pruebas. La arquitectura CRIS es soportada por el compilador gcc. La versin del
compilador gcc distribuido por Axis (v1.64) es el nico sobre el que se puede obtener soporte
oficialporpartedeAXISCommunications.Seinstalapordefectoenlaruta/usr/local/cris.
Realmente consiste en dos compiladores uno para crisv10 (diseos basados en ETRAX
100LX) y uno para crisv32 (diseos basados en ETRAX FS). El script gcc-cris ayuda a llamar al
compilador apropiado teniendo en consideracin la librera estndar de C seleccionada. Para la
cmara AXIS 210 es necesario compilar usando el compilador cris-axis-linux-gnuuclibc. Esto

pg.11

Captulo2:Descripcindelmarcodetrabajo
significaquelacmaratienelalibrerauclibcyesopresentaunaseriedeinconvenientesquese
relatarnenlaseccindeproblemasencontrados.
Para realizar el Hola Mundo resulta til consultar la referencia [5]. El siguiente paso
lgicoesprepararunmakefile,paraelloconvieneconsultarlareferencia[6].
Alterarelfirmwarepuedetraerconsecuenciascatastrficas,sobretodoporqueenelsdk
no se incluye todo el cdigo que va en la cmara. Por otro lado la memoria flash de la cmara
tiene una vida limitada a 100.000 escrituras. Para pruebas se recomienda transferir los ficheros
por Telnet y usar la particin montada en la memoria RAM (/tmp) teniendo en cuenta que al
apagarlacmaraseborraelcontenidodelaRAM.
Laspruebasdecompilacincruzadaexigenmontarunentornodesimulacinencdigo,
dado que la mquina virtual de desarrollo no tiene cmara para obtener una imagen, ni un led
bicolor para encenderlo, apagarlo o cambiarlo de color. Para ello se han utilizado macros del
compiladorparadistinguireldestinodelacompilacin, hostparalamquinavirtualy cris-axislinux-gnuuclibc para la cmara. Tambin se han montado dos scripts de compilacin uno para

cadadestinoqueinvocanalmakefilecondistintosparmetroscompilarycompilar_host.
#! /bin/sh
echo "Cargando variables de entorno"
. ../../devboard-R2_20/init_env
. ./init_env
echo "Definiendo el target cris-axis-linux-gnuuclibc"
make cris-axis-linux-gnuuclibc
echo "Limpiando compilacion anterior (Rebuild)"
make clean
echo "Ejecutando make"
make
echo "Instalando librerias en /lib"
cp *.so ../lib
echo "Proceso terminado"

Cdigo2.1:Scriptdecompilacinparalacmara

En el caso de la imagen, se han obtenido unas cuantas imgenes para pruebas de la


propia cmara. Se han tomado las instantneas y se han descargado va ftp para tenerlas en el
mismo formato. En el proceso de compilacin se sustituye el comando de tomar la instantnea
porunmensajesacadoporconsola.Acontinuacinseexponelamacroutilizadaparasimulacin.
#ifndef HOST
//take a snapshot
system("/bin/bitmap 2 bmp > snapshot.bmp");
#else
//always the same snapshot
printf("Simulating to take a snapshot\n");
#endif

Cdigo2.2:Simulacindelainstantnea

Elcdigoejecutadoenlacmarahayqueprobarlodeformaindependiente.Ladefinicin
delaetiquetaHOSTserealizaenelmakefileysepasacomoparmetroalcompiladorCFLAGS

pg.12

+= -

Captulo2:Descripcindelmarcodetrabajo

DHOST.

El SDK define el target en el fichero .target-makefrag para poder consultarlo en los

diversos makefiles del rbol de directorios para decidir si se aade o no la etiqueta HOST. A
continuacinsepuedeobservarunodelosmakefilesutilizados.
AXIS_USABLE_LIBS = GLIBC UCLIBC
include $(AXIS_TOP_DIR)/tools/build/rules/common.mak
CFLAGS
+= -fPIC -I../QDBMP
LDFLAGS
+= -fPIC -shared -L../QDBMP
LDLIBS
= -lqdbmp
NOMBRE_LIB = libIQCC.so.1.0.0
SONAME
= libIQCC.so.1.0
ifeq ($(strip $(AXIS_TARGET_OS)),host)
CFLAGS += -DHOST
endif
all: $(NOMBRE_LIB)
$(NOMBRE_LIB): QualityComponent.o
$(CC) -Wl,-soname,$(SONAME) $(LDFLAGS) $(LDLIBS) -o $@ $^
ln -s $(NOMBRE_LIB) libIQCC.so
ldconfig -vn ./
#$(PROGS): $(OBJS)
#
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
#install: $(PROGS)
#
$(INSTALL) -d $(INSTDIR)
#
$(INSTALL) -m $(INSTMODE) -o $(INSTOWNER) -g $(INSTGROUP) $(PROGS) $(INSTDIR)
clean:
rm -f *.o core libIQCC.so*

Cdigo2.3:Makefiledelcomponentedecalidad

Este makefile est preparado para generar la librera dinmica libIQCC.so que a su vez
utiliza la librera dinmica qdbmp.so. Al usar libreras dinmicas se pueden actualizar fragmentos
del cdigo sin tener que recompilar todo. Para realizar este makefile se ha consultado la
referencia[8].
2.1.8

PLATAFORMADEAPLICACIONESDECMARASAXIS
Existen nuevas cmaras AXIS que disponen de un sistema sencillo de extensin de la

funcionalidad. La Plataforma de aplicaciones para cmaras AXIS permite el desarrollo de


aplicacionesdetercerosquesepuedendescargareinstalarencmarasderedycodificadoresde
vdeo de Axis. Este sistema apareci mientras se realizaba el proyecto, en caso contrario, se
hubieraintentadoabordarmedianteestasolucin.

pg.13

Captulo2:Descripcindelmarcodetrabajo

Figura2.8:PlataformadeaplicacionesdecmarasAXIS

Laplataformagestionaunsistemadeinstalacinyunsistemadelicencias.Porejemplo,
una aplicacin disponible es la AXIS Cross Line Detection. Es sencilla pero verstil, permite
establecer una alarma cuando un objeto cruza una o varias lneas definidas sobre la propia
imagen.Aqusemuestranunoscuantoscasosdeusodelaaplicacin.

Figura2.9:AXISCrossLineDetection

pg.14

Captulo2:Descripcindelmarcodetrabajo

2.2 PROBLEMASENCONTRADOS
La instalacin del entorno de desarrollo no ha sido trivial. Han surgido por
incompatibilidadesentrelasversionesdelaslibrerasinstaladasenlacmaraylasdisponiblesen
elentornodedesarrollo.LaltimaversindelSDK,lav2.20nopermitecompilarporquetieneuna
versin superior de la uclibc. Al intentar instalar la versin anterior del SDK, la v2.10, presenta
problemasdeinstalacin.
Esta dificultad se soluciona editando los ficheros de configuracin de la instalacin del
SDK2.20 paraqueutilicenlalibrera uclibcenlaversinrequerida0.9.2715.Lalibrera deFTP
tambin hay que bajarla a la versin 1.0.1. Durante la instalacin se descargan e instalan las
librerasespecificadasenlosficherosdeconfiguracin/configure-files/common/common-tag*.
Uno de los grandes problemas del proyecto derivados del uso de la librera uclibc es la
inviabilidad de compilar cdigo escrito en C++ llevando a descartar numerosas libreras de
procesado de imagen por estar escritas en C++. Aunque seguramente se hubieran tenido que
descartarporlaslimitacionesdeespacioenlacmara.
Aparte del SDK hay que instalar algunas libreras auxiliares que no estn claramente
especificadas,sevandescubriendoabasedeerroresdeinstalacin.

pg.15

Captulo3:Procesamientodeimgenes

3 PROCESAMIENTODEIMGENES
Enesteapartadoseexplicacmosediseaymaterializaunalgoritmodeprocesamiento
deimgenes.Seexplicanunaseriedepasoscomunesenlosalgoritmosdeprocesadoycmose
ajustanduranteeldiseo.Tambinseexplicacmogenerarcdigoapartirdelosdiseosycmo
usarlibrerasyaexistentes.

3.1 INTRODUCCIN
Cuando se habla de procesado de imgenes se hace referencia a imgenes digitales.
Independientemente del formato de los archivos se pueden dividir en 2 casos generales,
imgenesestticasysecuenciasdevideo.Enelcasodelasimgenesestticaslainformacinest
almacenadaenunamatrizbidimensionaldepixeles,comosemostrenelcaptuloanterior,yel
caso del video no es nada ms que una secuencia de imgenes estticas llamadas frames o
cuadros,formandounamatriztridimensionaldepixeles.Ladiferenciaimportanteesqueciertos
algoritmosdeprocesadoutilizaninformacindedistintoscuadrosyesosuponeunaventajacon
respectoalasimgenesestticas.Porejemplo,losalgoritmosdecompresindevideoreducenel
tamao del archivo gracias a que pueden hacer referencia a variaciones con respecto a frames
anteriores.
El procesado de imgenes no es otra cosa que la transformacin de esas matrices de
pixeleseninformacintildeformaautomtica.Puedetransformarseunaimagenenotra,una
secuencia de imgenes en una sola imagen y la salida no tiene por qu ser una nueva imagen.
Siendogeneralistas,seextraennuevosdatos.
El algoritmo de procesado se encarga de hacer dicha transformacin. Consiste en una
secuenciadeoperacionesmatemticasquesellevanacabosobrelamatrizdeentrada.

3.2 DESARROLLODEUNALGORITMO
Dado que un algoritmo de procesado de imgenes es una secuencia de operaciones
matemticas lo ms lgico para disear un algoritmo es usar software especializado en
matemticas.Este tipodeprogramasestnoptimizadosparaeltrabajoconmatrices.De hecho
todosonmatrices,unsolonmeroesunamatriz1x1,unasecuenciadesonidoesunamatriz1xN,
unaimagenesunamatrizMxN.
Existennumerososprogramasdeclculomatemtico,algunosdelmundolibrecomoGNU
OctaveoScilab,algunossondepagocomoMathematicaoMatlab.Paraconocerunacomparativa
consultarlareferencia[9].
SehaempleadoMatlabporserunaherramientamuyextendidayhabersidoutilizadacon
anterioridadenotrasasignaturasdelatitulacin.

pg.17

Captulo3:Procesamientodeimgenes
3.2.1

MATLAB
La ayuda incluida en Matlab es una completa base de datos del conocimiento. Se han

utilizado varios fragmentos del cdigo disponible en la ayuda para la realizacin de varios
estudios.Acontinuacinsemuestranvariosprocesoselementalesquealcombinarlospermiten
realizarunprocesodemayorcomplejidad.Seexplicaunalgoritmocompletoyseprofundizaen
susprocesoselementales.
3.2.1.1 Contadordeobjetos
Se ha buscado un algoritmo que pueda ofrecer una informacin numrica para ser
consumida como un servicio. Contar los objetos presentes en una imagen, bajo determinadas
condiciones,esunprocesosencillo.
Esinteresantecontarelnmerodepersonaspresentesenunaestanciadeunmuseopor
ejemploparaconocerlasreasdemayorinters,recolocacindelmaterialexpuesto,registrodel
nivel de aforo, etc. En procesos industriales se puede usar para realizar un control de calidad y
verificarautomticamentequeunpaquetecontieneelnmeroindicadodepiezas.
Lospasosarealizarenestealgoritmosonlossiguientes:
Paso1:Lecturadelfichero
Enestepasosecargaenmemorialaimagenaprocesar.
Paso2:Conversinamapadebits
Separarlosobjetosdelfondo.Aprovechandoelcontrastedelaimagen.
Paso3:Rellenarhuecos
Recuperapixelesinterioresqueformanpartedelobjetoynosehanreconocido.
Paso4:Suavizadodebordes
Redondeararistasenlaimagenparasuavizarelcontornodelosobjetos.
Paso5:Filtradoportamao
Eliminarvirutaspequeas.
Paso6:Etiquetadoyconteo
Contabilizarbloquesdepixeles.

pg.18

Captulo3:Procesamientodeimgenes
Unavezrepasadoslospasosquehayquerealizar,sedetallanacontinuacin:
Paso1:Lecturadelfichero
Lalecturadelficheroenmatlabserealizaconelsiguientecomandoquerecibelarutaen
discodelficheroycrealamatrizcorrespondienteenelespaciodetrabajo.
I = imread(fichero);

Laimagenledasealmacenaenunarraytridimensional,encadadimensinsecodificael
niveldeintensidaddecadapixelcorrespondientealostrescanalesdecolorRGB.

Figura3.1Imagenoriginalparaprobarelcontadordeobjetos

Figura3.2VistadelaimagencargadaenelespaciodetrabajodeMatlab

Enelespaciodetrabajo,laimagentieneunasdimensiones235x316y3canalesdecolor.
La intensidad en cada canal est codificada con enteros sin signo de 8 bits (uint8) que van del
valor0al255.0paraelmnimodeintensidady255paraelmximo.
Paso2:Conversinamapadebits
Para ello se utiliza un proceso elemental llamado segmentacin que consiste en
separar/segmentar los diferentes objetos presentes en una imagen utilizando diferentes
caractersticas de la imagen. El proceso ms sencillo de segmentacin utiliza el contraste del
objeto con respecto al fondo, si existe cierto grado de contraste es fcil aislar el objeto con un
simpleprocesodeThresholding.

pg.19

Captulo3:Procesamientodeimgenes
Thresholding/valorumbral:
Proceso que trabaja sobre una imagen en escala de grises asignando el valor 1 a los
pixelesdelaimagensisuperanciertoumbraldeintensidady0encasocontrario,resultandoen
unaimagenbinaria.

Figura3.3Thresholdingdeunaimagenruidosa

Esteprocesoelementaltienevariosusos,enlaimagendeejemploseutilizaparaeliminar
el ruido en una imagen de alto contraste. De igual manera es utilizado en procesos de
reconocimientodetextoescaneadoofotografiado,lecturamedianteimagendecdigosdebarras
ocdigosbidimensionales.

pg.20

Captulo3:Procesamientodeimgenes

Figura3.4ProcesodeThresholding

Sepuedeobservarenelhistogramadelaimagenquelamayoradeintensidadessesitan
en el negro y en el blanco, debido a que es una imagen con un alto contraste. Cortando en el
umbral52seseparaelobjetodelfondoblancocomosepuedeverenlaimagenprocesada.
En Matlab este proceso se realiza mediante un operador de comparacin que trabaja
sobrecadapixeldelamatrizImagenOriginaldejandoelresultadodelaoperacinenotramatriz
ImagenProcesada:
ImagenProcesada = ImagenOriginal > Umbral; /%intensidades mayores que umbral pasan a 1

SirequiereserprogramarloenChayquerecorrerlaimagenoriginalalcompleto,pixela
pixelaplicandoeloperadorlgicodelasiguientemanera:
for (int i=0; i<ImagenOriginal.Width; i++)
for (int j=0; j<ImagenOriginal.Height; j++)
ImagenDestino[i][j] = (ImagenOriginal[i][j] > Umbral);

pg.21

Captulo3:Procesamientodeimgenes
Conversinaescaladegrises:
Muchosprocesos,comoelanterior,trabajansobreimgenesenescaladegrises.Existeel
procesodeconversinRGBaBWquetrabajasobrelos3canalesdecolorcalculandosuapariencia
entonalidadesdegris.
El proceso se basa en la visin de los humanos, los animales tienen diferentes
sensibilidadesacadacolor,dehechoexistennumerosasenfermedadesdelavisincromtica.En
generalseutilizaunaformulanormalizadasegnITUR[13]pararealizarlaconversin.Consiste
enunamediaponderadaqueasignaunpesoacadacomponentedecolor.Elpesoasignadoest
relacionadoconlasensibilidaddelasclulasdelojoadichaslongitudesdeonda.

DY2 = INT [ 0.299 DR2 + 0.587 DG2 + 0.114 DB2 ]


Y = 0.299*R + 0.587*G + 0.114*B

EnMatlabserealizadichaconversinconelcomando:
I = rgb2gray(RGB)

Acontinuacinsevenlasimplementacionesdelcomandoconbucleysinbucle:
GIm=uint8(zeros(size(Im,1),size(Im,2)));
for i=1:size(Im,1)
for j=1:size(Im,2)
GIm(i,j)=0.299*Im(i,j,1)+0.587*Im(i,j,2)+0.114*Im(i,j,3);
end
end

GIm=0.299*Im(:,:,1)+0.587*Im(:,:,2)+0.114*Im(:,:,3); %Conversin sin bucle

pg.22

Captulo3:Procesamientodeimgenes
Comolosprocesosdeconversinaescaladegrisesyelvalorumbralsonmuyutilizados,
hayuncomandoquelosrealizadeformaconsecutivayeselquesehautilizadoenestepaso:
BW = im2bw(RGB, level)

Figura3.5Segmentacindelaimagendeprueba

Figura3.6EspaciodetrabajodeMatlabtraselprocesodesegmentacin

En el espacio de trabajo la imagen BW tiene las mismas dimensiones que la imagen


originalperohaperdidoloscanalesdecolores,omejordichoahorasolotieneunoytambinha
perdido la gama de intensidades quedando una imagen binaria (logical) 1 y 0. Donde 0 es el
mnimodeintensidady1elmximo.Aestetipodeimagenselellamamapadebitsporquecada
pixelestcodificadoconunnicobitdeinformacin.

pg.23

Captulo
o3:Procesam
mientodeim
mgenes
Rellenarhueecos
Paso3:R
E
Elprocesod
derellenado dehuecosn
noesdemassiadocrticoparaelcon
ntadordeob
bjetos,
peroalm
medirelvolu
umendeuno
objetosepuedeperdervvolumenporrloshuecos.
E
EnMaltabse
erealizautilizandoesteccomando:
BW = imf
fill(BW, 'ho
oles');

Figura3
3.7Rellenadod
dehuecosenla
aimagendepru
ueba

T
Trasestepas
solosojosdelpolloform
manpartedelobjeto.
Paso4:SSuavizadod
debordes
E
Este
paso es crtico parra el contad
dor de objettos, puesto que elimina las virutas de la
imagenq
que,denoh
hacerlo,secu
uentancomo
oobjetospeq
queosfalseeandolamed
dida.Elproce
esose
conoceccomoErosin.
E
Erode/eros
sin:
P
Proceso
quee trabaja so
obre una im
magen binaria aplicando una operacin morfolgica,
cambiap
pixelesblanccospornegro
ossisecump
pledetermin
nadacondici
nenunaveentanadepixxeles.

Figura3.8Erosindeuncuadradousan
ndounaformacircular

S
Serealizaco
nelsiguienttecomando:

pg.24
4

Captulo3:Procesamientodeimgenes
seD = strel('diamond',1); %forma utilizada
BW = imerode(BW,seD);

Utilizaunaventanaenformadediamantederadio1:

Figura3.9Matrizconformadediamanteparaelprocesodesuavizado

Figura3.10Suavizadodebordes

Al hacer el suavizado se desgastan los bordes, incluidos los interiores, de no haber


realizado el rellenado algunos objetos pueden llegar a fragmentarse. Se observa cmo han
desaparecidolasvirutasdelaparteinferior.
Paso5:Filtradoportamao
Aun realizando todos los procesos anteriores, todava es posible que queden virutas
demasiadograndesyconesteprocesoserealizauntamizadoportamaos.
Serealizaconelsiguientecomando:
BW = bwareaopen(BW, minPixels);

En la imagen de ejemplo no han quedado fragmentos lo suficientemente grandes para


queestecomandohagasuefecto.MuestroelejemploqueapareceenlaayudadeMatlab.

pg.25

Captulo
o3:Procesam
mientodeim
mgenes

Figura3.11Filttradodeobjeto
ospequeos

E
Enestaimag
gendemuesstrasepuedeevercomollasletraspeq
queashan desaparecidotras
hacerelfiltradoportamao.
Paso6:EEtiquetadoyyconteo
U vez refinada la imaagen se procede a su etiquetado
Una
e
q asigna aa cada bloque de
que
pixelescconectadosu
unidentificad
dor.
C
Conectividad
ddepixeles::
P
Para
determ
minar si dos pxeles form
man parte de
el mismo blo
oque se definen dos tip
pos de
conectivvidad: 4Con
nectados y 8Conectados. Estos criterios
c
se utilizan en varios pro
ocesos
elementtales,comoeeletiquetado
o.

Figura3.12C
Conectividadd
depixeles

pg.26
6

Captulo3:Procesamientodeimgenes
Labelling/Etiquetado:
Proceso que trabaja sobre una imagen binaria y como resultado obtiene una imagen
indexada.Enlaquecadabloquedepxelesconectadostieneunidentificadorincremental.

Figura3.13Etiquetadodeunaimagen

Enlafiguraanteriorseveendetalleelprocesodeetiquetado,enlamatrizetiquetada(b)
sepuedeverelidentificadorincrementalqueseasignaacadabloquedepixeles.Paravisualizarla
imagenindexadaresultadoseaplicaunapaletadecolores.
EnMatlabeletiquetadoserealizaconelsiguientecomando:
L=bwlabel(BW,8); %etiquetado

pg.27

Captulo3:Procesamientodeimgenes

Resultadodelproceso:
Elprocesodecontarlosobjetosconcluyealcalcularelmximovalordelasetiquetasyas
obtenerelvalorbuscado.
objetos = max(max(L)); %conteo (VALOR BUSCADO)

Figura3.14Imagenetiquetadaresultadodelproceso

Larespuestaqueseobtieneenlaimagendepruebaes3objetos.

Figura3.15Resultadodelprocesocontadordeobjetos

En este caso ha habido suerte, se puede ver como durante el proceso han surgido
problemasconelreflejodelapelotadegomaporelhechodeestarpegadoalrollodepapelyno
ofrecerdemasiadocontrasteconelfondo.

pg.28

Captulo3:Procesamientodeimgenes
A continuacin se muestra un ejemplo de la ayuda de Matlab donde se puede apreciar
conmayorclaridadlautilidaddelprocesodecontarobjetos:

Figura3.16Procesodeetiquetadocompleto

Como se muestra en la figura 3.16 se puede utilizar para el control de calidad de los
granosdearroz,dehecholacalidaddelarrozestdefinidoporelporcentajedegranosqueno
estnrotos.Soloquedaporidentificarlosgranosrotosrealizandounprocesoposterior.
Conclusiones:
ElentornodedesarrolloMatlabesmuyavanzadoyselograelcontrolabsolutodetodoel
proceso resultando ser un entorno excelente para el diseo de algoritmos de procesado de
imgenes a parte de las otras ramas que abarca el producto. La ayuda del producto es muy
amplia,especficaytieneunacomunidadactivaquelosoporta.

pg.29

Captulo3:Procesamientodeimgenes
3.2.2

SIMULINK
Simulink es un entorno de diagramas de bloque para la simulacin multidominio y el

diseo basado en modelos. Admite el diseo y la simulacin a nivel de sistema, la generacin


automtica de cdigo y la prueba y verificacin continuas de los sistemas embebidos. Este
entornopermitealingenierocentrarseenlaingenierayasevitarlosproblemasderivadosdela
programacin. Se parece mucho a los entornos de simulacin de circuitos, estilo Electronic
Workbench.
PararevisarrpidamenteesteentornodedesarrolloquevieneemparejadoconMatlabse
vaaexplicarelprocesodelcontadordeobjetosvistoenlaseccindeMatlab.
3.2.2.1 Contadordeobjetos
Estossonlospasosarealizarenestealgoritmo:
Paso1:Lecturadelfichero
Enestepasosecargaenmemorialaimagenaprocesar.
Paso2:Conversinamapadebits
Separarlosobjetosdelfondo.Aprovechandoelcontrastedelaimagen.
Paso3:Rellenarhuecos
Recuperapixelesinterioresqueformanpartedelobjetoynosehanreconocido.
Paso4:Suavizadodebordes
Redondeararistasenlaimagenparasuavizarelcontornodelosobjetos.
Paso5:Filtradoportamao
Eliminarvirutaspequeas.
Paso6:Etiquetadoyconteo
Contabilizarbloquesdepixeles.
EnMatlabsehaagrupadolafuncionalidadrequeridadentrodeunafuncinparapoderla
reutilizar, en Simulink se agrupa en un bloque funcional (modelo) que recibe en su entrada la
imagenyextraeensusalidaelnmerodeobjetos.

Figura3.17ModeloCliente

EnlafiguraanteriorsemuestraelModeloClientequeconsumelosserviciosdelModelo
ContadordeObjetos.Estemodeloseencargadelprimerpaso,leerlaimagendefichero.Sepasa
laimagenporelbloquecontadoryenelDisplaysevisualizaelnmerodeobjetosdetectados.

pg.30

Captulo3:Procesamientodeimgenes

Figura3.18ModelodelContadordeObjetos

Esto es lo que contiene el Modelo del Contador de Objetos, es ligeramente diferente a


comoseimplementenMatlab.Laconversinamapadebitsserealizaen3bloques,unfiltro
mediana para eliminar el ruido de imagen, un contraste automtico para aprovechar todo el
margendinmicodelaimagenyelumbralautomtico.Enesteprocesofaltaelpasoderellenado
dehuecosyseejecutadirectamentelaerosinyeletiquetado.Enesteejemplosehautilizado
unaimagenunpocomsdifcilquetieneagregadoungradientedeluminosidad.Sehaninsertado
visualizadoresparairviendolosresultadosintermedios.

Figura3.19Inspeccionesduranteelproceso

Se puede observar como la imagen utilizada afecta al contador cuando los granos no
ofrecensuficientecontrasteconelfondo.

pg.31

Captulo3:Procesamientodeimgenes
Enlasiguienteimagenseharealizadoelconteodeformamanualyseresaltanlosfallos
quesepuedenencontrarenestetipodeproceso,tantoautomticocomomanual.Losgranos16
y 17, 44 y 45 estn demasiado juntos y se pueden confundir con un nico objeto. Debajo del
grano20semehaescapadounoytrasesteelprocesoelresultadoobtenidoesde96,tardando
variosminutos.

Figura3.20Granosdearrozcontadosdeformamanual

Ni los humanos ni las maquinas son infalibles. En todo proceso de medicin, tanto
automtico como manual, se deben considerar los umbrales de error. Los umbrales de error
deben ser un requisito definido antes de comenzar con el diseo de un algoritmo de
procesamientodeimgenes.
Conclusiones:
SobreelentornodedesarrolloSimulinksepuededecirqueestremendamenteavanzado,
aunque es complicado lograr el control absoluto de todo el proceso. Al ser un entorno visual
permitecentrarseeneldiseodealgoritmosyevitatenerqueadentrarseenelcdigo.Laayuda
del producto es extensa y tiene una comunidad activa que lo soporta. El inconveniente de los
entornosvisualesesquesepierdebastantetiemporecolocandoelementosyavecesseaglomera
resultandoininteligible.

pg.32

Captulo3:Procesamientodeimgenes

3.3 GENERACINDECDIGODEPROCESADODEIMGENES
Unavezconcluidoeldiseo,tantodesdeMatlabcomodesdeSimulinksepuedegenerar
cdigo ejecutable. Matlab tiene el Matlab Compiler que permite generar libreras de enlazado
dinmico (.dll en Windows y .so en Linux) y ejecutables. El inconveniente es que para este
proyecto es necesario realizar la compilacin cruzada y no se ha podido realizar, aparte que
requiere tener instalado en el sistema destino un entorno de ejecucin (MCR) que ocupa casi
tantocomoMatlab.SepuedegenerarcdigoCusandoelRealTimeWorkshopdesdeSimulinky
sepuedeconfigurarelentornodecompilacinparahacercompilacincruzada.Seoptporusar
estaalternativayporesoserealizelmodeloenSimulink.
Veamoseldiagramadelageneracindelcdigo:

Figura3.21GeneracindecdigodesdeSimulink

ParafamiliarizarseconRealTimeWorkshopesrecomendableseguireltutorialFirstLook
atGeneratedCodedeladocumentacindereferencia[12].Elcdigosehageneradosiguiendo
lospasosdescritosendichotutorial.

pg.33

Captulo3:Procesamientodeimgenes
El cdigo generado est perfectamente documentado tanto con comentarios en lnea
comoenlapginashtmldedocumentacinquesegeneranconjuntamente.
A continuacin se muestra el cdigo del bloque Erosin que se ejecuta como un paso
intermediodentrodelafuncinContador_output:
/* S-Function (svipmorphop): '<Root>/Erosion' */
idxMaxVal = 0;
i = 0;
for (m = 0; m < 240; m++) {
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
}
for (i_0 = 0; i_0 < 316; i_0++) {
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
memcpy((void *)(&Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal]), (void *)
(&Contador_B.Autothreshold[i]), 235U * sizeof(boolean_T));
idxMaxVal += 235;
i += 235;
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
}
for (i_0 = 317; i_0 < 321; i_0++) {
for (m = 0; m < 240; m++) {
Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal] = true;
idxMaxVal++;
}
}
idxMaxVal = 0;
i = 0;
for (i_0 = 0; i_0 < 316; i_0++) {
for (m = 0; m < 235; m++) {
Contador_B.Erosion[i] = true;
for (maxVal = 0; maxVal < Contador_DWork.Erosion_NUMNONZ_DW; maxVal++) {
if (!Contador_DWork.Erosion_ONE_PAD_IMG_DW[idxMaxVal +
Contador_DWork.Erosion_ERODE_OFF_DW[maxVal]]) {
Contador_B.Erosion[i] = false;
maxVal = Contador_DWork.Erosion_NUMNONZ_DW;
}
}
idxMaxVal++;
i++;
}
idxMaxVal += 5;
}

Enlacabeceradelmodelocontador(Contador.h)seencuentranlospuntosdeentrada:
/* Model entry point functions */
extern void Contador_initialize(boolean_T firstTime);
extern void Contador_output(int_T tid);
extern void Contador_update(int_T tid);
extern void Contador_terminate(void);

pg.34

Captulo3:Procesamientodeimgenes
Conclusiones:
El cdigo generado no cumple con los requisitos del caso abordado. Es un programa en
tiemporeallistoparaejecutarsedeformacontinuaenelsistemaembebido.Enelcasoabordado
se requiere una ejecucin bajo demanda. La alternativa consiste en implementar el proceso
diseadoconMatlaboSimulinkutilizandolibrerasdeprocesamientodeimgenes.

3.4 LIBRERIASDEPROCESAMIENTODEIMGENES
Hay cientos de libreras para realizar procesamiento de imgenes, ver referencia [14],
muchas de ellas estn especializadas en tareas concretas y en cambio otras tratan asuntos
generales. Las hay con licencias propietarias y de cdigo abierto. Una de las ms famosas de
cdigoabiertoesOpenCV,fueutilizadaenelsistemadevisindelvehculonotripuladoStanley
delaUniversidaddeStanford,elganadorenelao2005delGrandesafoDARPA.
Sehananalizadovariaslibrerasdeprocesadodeimgenesdecdigoabierto:
Camellia,cips2ed,IPL98,OpenCVyQDBMP
SalvoQDBMPtodashandadonumerososproblemasdecompilacinoeranincompatibles
conelsoftwaredelacmaraporestarescritasenC++,solomencionarOpenCVporsualtogrado
deaceptacin.
3.4.1

OPENCV
OpenCV es una biblioteca libre de visin artificial inicialmente desarrollada por Intel.

Desde su primera versin se ha utilizado en infinidad de aplicaciones. Desde sistemas de


seguridad con deteccin de movimiento, hasta aplicativos de control de procesos donde se
requiere reconocimiento de objetos. Esta gran aceptacin se debe a que su publicacin con
licencia BSD. Se permite su uso libre para propsitos comerciales y de investigacin con las
condicionesenellaexpresadas.
OpenCV est escrita en cdigo C y C++ optimizados y es multiplataforma, existiendo
versionesparaGNU/Linux,MacOSXyWindows.Contienemsde500funcionesqueabarcanuna
gran gama de reas en el proceso de visin, como reconocimiento de objetos (reconocimiento
facial),calibracindecmaras,visinestreayvisinrobtica.
No se ha podido utilizar esta librera por problemas de espacio y relacionados con la
compilacin cruzada de C++ y la librera estndar de C presente en la cmara (uClibc). Se
detallarnalfinaldelcaptulo.
3.4.2

QDBMP
Parasalvarlasrestriccionesdeespacioenlacmarasehaoptadoporutilizarunalibrera

reducidacapazdeleerelformatoBMPempleadoenlasinstantneasdelacmara.

pg.35

Captulo3:Procesamientodeimgenes
QDBMP, ver referencia [15], es una librera de C minimalista y multiplataforma para el
manejo de imgenes BMP. La librera es extremadamente ligera, consiste nicamente en dos
pequeos ficheros y solo tiene dependencias con la librera estndar de C. Est concebida para
proporcionar capacidades bsicas demanejo de imgenes a pequeas aplicaciones utilizando el
ampliamenteusadoformatoBMP.Eslibreydecdigoabierto,distribuidabajolalicenciaMIT.
LalibrerasoportalassiguientesvariantesdelformatoBMP:

32BPP(BitsPorPixel)sincompresin(losvaloresalphaseignoran)

24BPPsincompresin

8BPPsincompresin(colorindexado)
Comosehadescritoenelapartado2.2.1laprofundidadde colormsutilizadaeslade

24bpp(8bitsporcadacanaldecolorRGB),conestaprofundidaddecolorsepuedenrepresentar
255nivelesdeintensidadencadacolorproduciendountotalde16.581.375colores.
Veamoslosmtodosoriginalesdelalibrera:
/* Construction/destruction */
BMP*
BMP_Create ( UINT width, UINT height, USHORT depth );
void
BMP_Free
( BMP* bmp );
/* I/O */
BMP*
BMP_ReadFile ( const char* filename );
void
BMP_WriteFile ( BMP* bmp, const char* filename );
/* Meta info */
UINT
BMP_GetWidth ( BMP* bmp );
UINT
BMP_GetHeight ( BMP* bmp );
USHORT BMP_GetDepth ( BMP* bmp );
/* Pixel access */
void
BMP_GetPixelRGB
void
BMP_SetPixelRGB
void
BMP_GetPixelIndex
void
BMP_SetPixelIndex

(
(
(
(

BMP*
BMP*
BMP*
BMP*

bmp,
bmp,
bmp,
bmp,

UINT
UINT
UINT
UINT

x,
x,
x,
x,

UINT
UINT
UINT
UINT

y,
y,
y,
y,

UCHAR* r, UCHAR* g, UCHAR* b );


UCHAR r, UCHAR g, UCHAR b );
UCHAR* val );
UCHAR val );

/* Palette handling */
void BMP_GetPaletteColor ( BMP* bmp, UCHAR paleteIndex, UCHAR* r, UCHAR* g, UCHAR* b );
void BMP_SetPaletteColor ( BMP* bmp, UCHAR paleteIndex, UCHAR r, UCHAR g, UCHAR b );
/* Error handling */
BMP_STATUS BMP_GetError ();
const char* BMP_GetErrorDescription ();

El cdigo de la librera tiene un estilo de programacin Orientada a Objetos que ha


resultado ser bastante didctico y claro. Ofrece un mtodo para obtener los colores RGB de un
pixelsegnsuscoordenadasXY.

pg.36

Captulo3:Procesamientodeimgenes
Analicemosdichomtodo:
/**************************************************************
Populates the arguments with the specified pixel's RGB
values.
**************************************************************/
void BMP_GetPixelRGB( BMP* bmp, UINT x, UINT y, UCHAR* r, UCHAR* g, UCHAR* b )
{
UCHAR* pixel;
UINT
bytes_per_row;
UCHAR bytes_per_pixel;
if ( bmp == NULL || x < 0 || x >= bmp->Header.Width || y < 0 || y >= bmp->Header.Height )
{
BMP_LAST_ERROR_CODE = BMP_INVALID_ARGUMENT;
}
else
{
BMP_LAST_ERROR_CODE = BMP_OK;
bytes_per_pixel = bmp->Header.BitsPerPixel >> 3;
/* Row's size is rounded up to the next multiple of 4 bytes */
bytes_per_row = bmp->Header.ImageDataSize / bmp->Header.Height;
/* Calculate the location of the relevant pixel (rows are flipped) */
pixel = bmp->Data + ( ( bmp->Header.Height - y - 1 ) * bytes_per_row
bytes_per_pixel );

/* In indexed color mode the pixel's value is an index within the palette */
if ( bmp->Header.BitsPerPixel == 8 )
{
pixel = bmp->Palette + *pixel * 4;
}
/*
if
if
if

Note: colors are stored


( r )
*r = *( pixel +
( g )
*g = *( pixel +
( b )
*b = *( pixel +

in BGR order */
2 );
1 );
0 );

}
}

Hacer un procesado usando este mtodo puede resultar altamente ineficiente debido a
losclculosredundantesqueserepitenalaccederacadapixel.Sehaoptadoporextenderesta
libreraconlasfuncionesrequeridas.
3.4.2.1 EXTENSINREALIZADAAQDBMP
LalibreraQDBMPsehaextendidoparacumplirconelcasoprcticoqueseplanteaenel
captulo 6. A efectos introductorios solo hay que saber que es requisito contar el nmero de
pxelesquetienenuncolordeterminadoenlaimagencapturadaporlacmara.
La extensin realizada a QDBMP se considera de bajo nivel por haber tenido que
combinarlosalgoritmosdeprocesadoconlalgicadelformatoBMPysehatenidoencuentael
entornodeejecucin,acambiosehaganadovelocidaddeejecucinysehanahorradorecursos.
Teniendoencuentaquelaimagenesunficherotemporalyqueenlacmaraseguarda
en un ramdisk, ya est en memoria, no tiene mucho sentido crear un mtodo para extraer el
array de pixeles a otra regin de memoria. Hay que destacar que la imagen capturada en la
cmaraocupa900MBycopiarlospixelesesunatareacostosaentiempoyrecursos.Ensulugar

pg.37

Captulo3:Procesamientodeimgenes
se ha implementado el procesado sobre el propio formato BMP, con las implicaciones que eso
tiene,porejemplolasfilasdelaimagenestninvertidasyelcolorestalmacenadoenordenBGR.
El gran ahorro de recursos y aumento de velocidad se ha conseguido dejando el resultado del
algoritmoenelmismoespaciodememoria(enalgunoscasos).
No son tcnicas de programacin recomendadas pero resultan un mal necesario, hubo
que medir los tiempos para optimizar el proceso porque tardaba demasiado. La misma imagen
procesada en la mquina virtual tarda 60ms, en la cmara tarda 37.684ms, 37 segundos! Tras
unaseriedemejorassehaquedadoen150ms,251vecesmsrpido!
Mtodosagregados:
/* Converts RGB to grayscale (Y = 0.299*R + 0.587*G + 0.114*B) */
BMP* BMP_ConvertToGray ( BMP* source );
/* Apply Quick Edge mask filter */
void BMP_QuickEdge ( BMP* bmp );
/* Color detection and count */
BMP* BMP_DetectColor ( BMP* source, UCHAR r, UCHAR g, UCHAR b, UCHAR threshold );
BMP* BMP_DetectColorProp ( BMP* source, UCHAR r, UCHAR g, UCHAR b, UCHAR threshold );
UINT BMP_CountColorProp ( BMP* source, UCHAR r, UCHAR g, UCHAR b,
UCHAR threshold, UINT stop, UCHAR average, UCHAR velocity );
UINT BMP_FastCountColorProp ( BMP* source, UCHAR r, UCHAR g, UCHAR b, UCHAR threshold);
UINT BMP_VVCountColorProp
( BMP* source, UCHAR r, UCHAR g, UCHAR b, UCHAR threshold);

BMP_ConvertToGray: Convierte la imagen origen a escala de grises usando los coeficientes


definidosporelITUR,creaelresultadoenunnuevoespaciodememoria.Lonotableenesta
funcin es que cuando trabaja con una imagen indexada solo es necesario trabajar con la
paletadecolores.Elresultadosiemprequedacomoimagenindexada.Hayquerecordarque
casi todos los algoritmos de procesado de imgenes trabajan sobre imgenes en escala de
grisesporesoestafuncinesimportante.

BMP_QuickEdge: Aplica un filtro de mascara (kernel de combolucin) sobre una imagen en


escaladegrises.ConcretamenteutilizaelfiltroQuickEdge.Estefiltroencuentralosbordesde
los objetos en una sola pasada del kernel de combolucin al contrario que otros filtros que
requieren de4a8pasadascondiferenteskernels.Trabajaenmemoriasobrelaimagen.Es
decir,transformalaimagensincrearunanueva.ElKerneldecombolucineselsiguiente:

Figura3.22MscaradelfiltroQuickEdge

pg.38

Captulo3:Procesamientodeimgenes
Lanicareseaaestefiltroapareceenlareferencia[19]ydice:
Thequickmaskissonamedbecauseitcandetectedgesinalleightdirectionsinoneconvolution.
Thishasobviousspeedadvantages...Theresultsofthequickmaskareasgoodastheothermasks,andit
operatesinoneeighththetime.

Esteeselresultadodeaplicarelalgoritmo:

Figura3.23AplicacindelfiltroQuickEdge

Este filtro localiza los bordes de los objetos. Los filtros de deteccin de bordes tienen
muchas aplicaciones en el campo de la visin por computador. Este filtro en concreto emplea
menos tiempo en su ejecucin. Adems, se ha implementado la combolucin sobre la propia
imagen para reducir a la mitad la memoria requerida. Los detalles de esta implementacin se
describenenelsiguientediagrama.

pg.39

Captulo3:Procesamientodeimgenes

Figura3.24Explicacindesobrescritura(0,0)

En la figura anterior se ve como se sobrescribe la posicin (0,0) con el dato del primer
clculoalaplicarelkerneldecombolucin.Alprocesartodalaimagenintroduceunatranslacin
(1,1)sobrelaimagen.Enelresultadonoseapreciaperohayquetenerlopresentesiserealizan
procesosacontinuacin.

BMP_DetectColor: Detecta un color especificado con un margen de tolerancia (T). Tiene


problemas con los cambios de luminosidad. Crea una imagen con solo los pixeles
encontradossobrefondonegro.

pg.40

Captulo3:Procesamientodeimgenes

Figura3.25Deteccindecolorportolerancia

Equivale a un cubo de radio (T) sobre el color pedido en el espacio de colores RGB. El
mtodorealizaunpromediadodelcolor(sum{Color})deunvecindario3x3paraevitarruidos:
if (abs(sumRed
- r) < threshold &&
abs(sumGreen - g) < threshold &&
abs(sumBlue - b) < threshold)

BMP_DetectColorProp: Detecta un color especificado como una proporcin. El resultado es


unaimagenconlospixelesquecumplenelcriteriosobrefondonegro.
Tras analizar los problemas del mtodo anterior con las variaciones de luminosidad se

decididisearunmtododedeteccin.Paraquehayauncolordefinidodistintodelagamade
grises alguna de las componentes debe destacar sobre las otras. Los cambios de luminosidad
modificanlastrescomponentesporigual.Elcolorpedido(R=70,G=30,B=10)entodoelrangode
luminosidadequivalea(R=70+x,G=30+x,B=10+x)dondelaxeslaalteracindeluminosidadentre
lucesysombrasdelobjeto.Elmargendetoleranciapermiteligeroscambiosdecoloraligualque
elmtodoanterior.Bajoestoscriteriostenemosunsistemade3inecuaciones:
R - Margen < x + RojoCriterio < R + Margen
G - Margen < x + VerdeCriterio < G + Margen
B - Margen < x + AzulCriterio < B + Margen

pg.41

Captulo3:Procesamientodeimgenes
En su implementacin ni siquiera hay que resolver el sistema, basta con verificar que
tiene solucin. En cada inecuacin el color criterio pasa restando a ambos lados y las 6
condiciones que se deben cumplir se sacan por igualacin de cada lado con sus dos opuestos.
Tambintrabajasobreelcolorpromedio(sum{Color})deunvecindario3x3.
if (sumRed
sumRed
sumGreen
sumGreen
sumBlue
sumBlue

r
r
g
g
b
b

threshold
threshold
threshold
threshold
threshold
threshold

<
<
<
<
<
<

sumGreen
sumBlue
sumRed
sumBlue
sumRed
sumGreen

g
b
r
b
r
g

+
+
+
+
+
+

threshold &&
threshold &&
threshold &&
threshold &&
threshold &&
threshold)

Sepuedeverificardeotraformaaveriguandocualeselcolormenosintenso,restarlesu
intensidad a los otros 2 componentes y ver si cumplen el criterio. El sistema de inecuaciones
resultamsapropiadoaunqueesmsdifcildecomprender.
La forma del criterio en el espacio de colores RGB es casi igual de complejo. Es un
paraleleppedoqueapuntaenladireccindelcolorcriterio.Sevemejorconunejemploconcreto.

Figura3.26Deteccindecolorporproporcin

Esteejemplocorrespondesoloaunagamadeluminancia.Hayquetenerencuentaque
tambinsedetectanotrasgamascorrespondientesaloscambiosdecolordentrodelatolerancia.

pg.42

Captulo3:Procesamientodeimgenes
Acontinuacinsepuedeverunacomparativaentrelosdistintosmtodos:

Figura3.27Comparativademtodosdedeteccindelcolor

SepuedeapreciarenlaFigura3.27cmoelmtodoBMP_DetectColortienedificultades
con los brillos, prcticamente no encuentra el llavero y da algunos falsos positivos en la nariz,
oreja y mano derecha. El mtodo BMP_DetectColorProp lo hace bastante mejor aunque sigue
fallando en las sombras. De la mano derecha cuelga otro llavero rosa que ningn mtodo lo
confunde.

BMP_CountColorProp:Igualqueelanteriorperoahorasolodevuelveelnumerodepixeles
encontrados en lugar de crear una imagen con el resultado. Permite desactivar el filtro de
ruidos average 3x3. Esto acelera x9 la velocidad de procesado. Admite un parmetro
velocidadparasaltarpixelesyestimarelresultado.Admiteunparmetrostopparadetenerel
procesadocuandosealcanzalacantidadespecificadadepixelesencontrados.
Este mtodo contiene todas las opciones que permiten acelerar el procesado. Una

velocidad 3 hace que solo se procese uno de cada 3 pxeles en cada fila y una de cada 3 filas.
Utilizarlavelocidadsuperiora1produceresultadosestadsticosbasadosenlamuestra.Seasume
que, al cumplir el criterio un pixel, est rodeado en su vecindad NxN de pixeles que tambin
cumplenelcriterio.Porelloelresultadodecadacoincidenciasemultiplicaporelpesodelpixel.

pg.43

Captulo3:Procesamientodeimgenes
Para calcular el peso de cada pixel se utiliza la velocidad al cuadrado = V*V. Si se utiliza la
velocidad 3 junto con el filtro average 3x3 todos los pixeles de la imagen forman parte del
resultado.

BMP_VVCountColorProp:Igualqueelanteriorperoahoralavelocidadesvariable,aumenta

cuando no encuentra pixeles (hasta un lmite) y disminuye cuando encuentra. No realiza


averagenidetieneelprocesoalllegaraunacantidad.

BMP_FastCountColorProp: Igual que el anterior pero se ha fijado una velocidad optimizada


quedabuenosresultadosparalasimgenesdelacmara.Altenerunavelocidadconstanteel
procesosiempretardalomismo.
ResultadosObtenidos:
En las pruebas realizadas el mejor de todos los procesos de recuento es el

BMP_FastCountColorProp por ser iscrono y devolver un nmero de pixeles muy bien


aproximadoalreal,ademsdenodependerdecambiosdeluminosidad.Paradepuracinseha
coloreadoelpixelcontadoincrementadolaintensidaddelacomponenteverdealmximo.Como
sabemos, el resultado del proceso no es la imagen en s, sino el nmero de pixeles del color
indicado.

Figura3.28ResultadoendepuracindelrecuentoBMP_FastCountColorProp

Conclusiones:
Procesar imgenes en un sistema embebido es lento. Al menos con la tecnologa
empleada solo se puede utilizar en casos muy concretos. Se pueden realizar procesos de visin
artificialbsicos.

pg.44

Captulo3:Procesamientodeimgenes

3.5 PROBLEMASENCONTRADOS
Eneldiseodealgoritmosdeprocesadosurgenbastantesdificultadestcnicas.Saltarse
un paso de rellenado de huecos puede originar problemas al realizar el suavizado porque se
desgastenlosbordes,incluidoslosinterioresyalgunosobjetospuedenllegarafragmentarse.Lo
msgraveesqueestosfallosnosedetectenhastaencontrarseconuncasoapropiado.Paraevitar
este problema hay que trabajar con una base de imgenes de prueba y otra de contraste. En
internetsepuedenencontrarcatlogosdeimgenesparapruebas.Ycomopartedelprocesode
diseo es imprescindible construirse una base robusta con suficientes casos positivos, casos
negativos,ocultamientos,diversoscoloresdepiel,personascongafas,conbarba,etc.Duranteel
proceso de diseo se puede caer en casos de overfitting, ajustando parmetros se realiza un
sobreajuste para cumplir con los casos de la base de entrenamiento, sobre todo si se trabaja
conredesneuronales.Paraevitarelproblemadelsobreajusteesnecesarioreservarunconjunto
deimgenesdepruebapararealizaruncontraste.
Es sorprendente lo fcil que vemos los humanos y lo difcil que es ensearle a una
mquinaarealizartareassimilares.Esnecesariodestacarlasdificultadesencontradasconlaluzy
loscolores.Laluzdeunabombillanoesblanca.Nisiquieralaluzdelsolesblanca.Lassombras
tampoco son negras, dependen de la luz ambiental. Si el cielo est despejado la sombra de un
objetoserdelcolorreflejadoporelcielo.Elajustedeblancosautomticoayudaenestoscasos.
Yaunqueparezcabroma,enlaoscuridadtodoslosgatossonpardos,sifaltailuminacinesmuy
difcil distinguir los colores. No todos los objetos tienen brillo mate, eso significa que reflejan
partedeloscoloresdelentorno,yaunquetengan brillomateirradiansucoloralosobjetosde
alrededor.Losobjetostransparentesylosdebrillometlicosonunmundoaparteconreferencia
alcolor.Unamesamarrnyanosertanmarrnsireflejaunaparedazul.
Ni los humanos ni las maquinas son infalibles, en todo proceso de medicin, tanto automtico
comomanual,sedebenconsiderarlosumbralesdeerrorenlafasedediseo.
El mundo de las aplicaciones embebidas tampoco es un camino de rosas. Ya se han destacado
algunos problemas en el captulo anterior con la librera uclibc versin 0.9.2715 presente en la
cmaraysuincompatibilidadentreversionesdelamisma.
En la generacin de cdigo con Matlab no se permite la compilacin cruzada y requiere un
entorno de ejecucin que ocupa casi como Matlab. En Simulink resulta difcil parametrizar los
bloquesydejartrazasdeejecucin.
Otra tarea laboriosa ha sido la depuracin de los algoritmos en la propia cmara. Es
necesario crear varios scripts y programas para ejecutar los procesos en la cmara sobre
imgenes precargadas y recuperar las imgenes resultado va ftp. La medicin de tiempos de
procesado se ha podido realizar utilizando la consola remota. Ha sido muy complejo tener que

pg.45

Captulo3:Procesamientodeimgenes
integrarelprocesadodeimagenconlalecturadelformatoBMPporproblemasderendimientoy
recursos.
Aunhabiendosorteadotodoslosobstculossiguesiendounprocesomuylento.Elcaso
prctico que se expone en el captulo 6 solo se puede implantar en un entorno productivo con
pocas exigencias de velocidad. Si se requiere velocidad extrema en un sistema embebido no se
puede estar pensando en reutilizar las cmaras de vigilancia. Para ese tipo de procesos mejor
hacerlo con un sistema FPGA dedicado, que por cierto se llevan muy bien con Simulink. Ver la
referencia[20].SilavelocidadnoesextremaperoelalgoritmoesmuycomplejousarOpenCVen
unservidordedicadocomolosvehculosnotripuladosdelGrandesafoDARPA.

pg.46

Captulo4:ArquitecturasSOA

4 ARQUITECTURASSOA
Enesteapartadoseexplicacmoexplotarlainformacingeneradatraselprocesamiento
deimgenesmedianteunservicioweb.Qutecnologasdeservicioswebhayparadispositivosde
recursoslimitadosycomogenerarlaestructuradecdigoparaimplementarunservicio.

4.1 INTRODUCCIN
La programacin orientada a objetos (OOP ObjectOriented Programming) introduce
unaseriedeconceptos,comolaabstraccinyelencapsulamiento.LaProgramacinBasadaen
Componentes(CBDComponentBasedDevelopment)estableceunmarcocontractualmediante
unlenguajededefinicindeinterfacesentrecomponentes.LaArquitectiraOrientadaaServicios
(SOAServiceOrientedArquitecture)esunparadigmatecnolgicoparaeldiseodeaplicaciones
basada en servicios. Bajo esta arquitectura las aplicaciones son colecciones estructuradas de
servicios individuales. De modo similar a como se construyen los circuitos impresos que
interconectancomponenteshardware.ElpropsitodeSOAespermitirlafcilcooperacinentre
ungrannmerodecomputadorasconectadasenred.
Hoy en da su implementacin ms extendida se basa en Servicios Web definidos
mediante el Lenguaje de Descripcin de Servicios Web (WSDL) y soportado por el Protocolo de
TransferenciadeHiperTexto(HTTP)atravsdelcualseintercambianmensajes(SOAP),peronoes
la nica implementacin posible. Esta implementacin permite sortear los problemas
encontrados con los Firewall en aplicaciones CORBA y as tener la capacidad de desarrollar
aplicacionesdistribuidasaescalamundialindependientesdelaplataforma.

Figura4.1ArquitecturadeServiciosWeb

pg.47

Captulo4:ArquitecturasSOA

4.2 DPWS
El problema de implementar Web Services en dispositivos con recursos limitados se
abordamediante(DPWSDevicesProfileforWebServices)quedefineeljuegoderestricciones
de implementacin mnimas para permitir el intercambio seguro de mensajes, descubrimiento,
descripcinyeventosenestosdispositivos.HasidollamadoelUSBdeEthernetporquepermite
conectarundispositivoalared,descubrirloyutilizarsusserviciosdesdecualquierotrodispositivo
conectadoalamismared.TieneunosobjetivossimilaresalUniversalPlugandPlay(UPnP)pero,
comoaadido,DPWSestcompletamentealineadoconlatecnologadeServiciosWebeincluye
numerosospuntosdeextensinpermitiendolaintegracinsinfisurasdeserviciosproporcionados
pordispositivosenaplicacionesempresariales.
ElestndarDPWSfuedesarrolladoparadotaralosdispositivosderecursoslimitadoscon
capacidadesdeservicioswebseguros.Ofreceintercambiosegurodemensajesconserviciosweb,
eldescubrimientodinmicoydescripcindeserviciosWeb,suscripcinyrecepcindeeventosde
unservicioWeb.

Figura4.2TorredeprotocolosDPWS

Como se muestra en la figura anterior, DPWS se basa en protocolos bien conocidos y


varias especificaciones de servicios Web. Emplea mecanismos de mensajera similares a la
arquitecturadeserviciosweb(WSA),conrestriccionesalacomplejidadyaltamaodelmensaje.
SeapoyaenlosprotocolosdecomunicacinIPpuntoapuntoymultidifusin,TCPyHTTP;Utiliza
SOAP sobre UDP, SOAP y XML Schema para el intercambio de mensajes. WSPolicy y WS
Addressingseencuentranenlapartesuperiordelacapademensajera.WSPolicyseutilizapara

pg.48

Captulo4:ArquitecturasSOA
intercambiar y negociar las polticas y los parmetros necesarios para el uso del servicio. WS
AddressingseparalacapademensajeraSOAPdesuestrechauninconHTTPcomosedefineen
laespecificacinSOAP.Seintroduceelconceptodeencabezadosdeinformacindemensajesy
referencias de punto final que hacen los usuarios del servicio, proveedores y mensajes
transmitidosseanidentificablesyenrutables.
DPWS define un rol de cliente que utiliza las caractersticas que se describen en los
siguientesprrafosyunroldedispositivoqueimplementadichascaractersticas:

Direccionamiento: DPWS asume que el dispositivo ha obtenido una direccin IP vlida


medianteDHCPoautoconfiguracinIPv6.NormalizadoenelestndarWSAddressing.

Descubrimiento:Estemecanismopermitequeeldispositivoseanuncieenlaredlocalcon
mensajes de multidifusin. Los clientes pueden escuchar estos mensajes o enviar
mensajesparabuscardispositivosenlared.NormalizadoenelestndarWSDiscovery.

Descripcin: Mecanismo que permite la descripcin dinmica de los metadatos del


dispositivocomolosserviciossuministrados,informacindeldispositivo,informacindel
modeloodescripcindelservicio.NormalizadoenelestndarWSMetadataExchange.

Control y Eventos: DPWS ofrece servicios con operaciones (similares a las operaciones
SOAP de servicios Web) y eventos que actan como operaciones inversas en las que el
intercambio de mensajes inicia en el dispositivo. Lleva asociado un mecanismo de
suscripcin a eventos. Para transportar datos binarios y otros formatos no XML, DPWS
incluyeelmecanismodeadjuntosMTOM.LoseventosestndescritosenelestndarWS
Eventing.

Presentacin: Es una va alternativa para obtener informacin sobre el dispositivo y


controlarlo.EsinformadocomopartedeladescripcindeldispositivocomounIRIHTTP
quepuedeusarseenunnavegadornormalycorriente.

Seguridad: DPWS define los conceptos de perfiles de seguridad. En la especificacin se


define uno de ellos. Como los requisitos de seguridad son muy dependientes de los
escenarios de aplicacin, el perfil de seguridad definido se orienta a la implementacin
simpleyligeramsqueacubrirmuchosdelosposiblesrequisitosdeseguridad.Constade
doscaractersticasprincipales:descubrimientoycanalesseguros.

Extensibilidad y composibilidad: Una de las grandes ventajas de DPWS es la natural


facilidaddeextensinycomposicindesuespecificacinylosserviciosweb.Losservicios
webdefinenmayormenteinterfacesymecanismosindependientesdelatecnologa.

pg.49

Captulo4:ArquitecturasSOA
LaespecificacinDPWSdefineunaarquitecturaquedistinguedostiposdeservicios:los
dispositivos y servicios alojados. Los dispositivos juegan una parte importante en el
descubrimiento y procedimientos de intercambio de metadatos. Los servicios alojados son
servicios web especficos de la aplicacin que proporcionan el comportamiento funcional del
dispositivo. Estos servicios confan en el dispositivo para cubrir la caracterstica del
descubrimiento. El despliegue de los servicios alojados en un dispositivo DPWS es el principal
mecanismodeextensibilidadproporcionadaporlaespecificacin.

Figura4.3ArquitecturaDPWS

Tododispositivoofrecelossiguientesserviciosintegrados:

Serviciosdedescubrimiento(WSDiscovery)

Serviciosdeintercambiodemetadatos(WSMetadataExchange)

Serviciosdepublicacinysuscripcinaeventos(WSEventing)
Estosserviciossirvendesoportealosserviciospropiosdelaaplicacin.

pg.50

Captulo4:ArquitecturasSOA

4.3 FRAMEWORKSPARADESARROLLODPWS
ParadesarrollarsoftwareDPWSsehanestudiadotresframeworks:

WS4D: WS4DgSOAP es una extensin del conocido toolkit de Web Services gSOAP, un
toolkitparaconstruirServiciosWebbasadosenSOAPdesarrolladoenC/C++porRobert
A. van Engelen. Est diseado para desarrollar servicios web de pequeo tamao y alto
rendimiento.

DPWSCore:EsunproyectodelainiciativaSOA4D.SOA4DForgeeselsitiodesoportepara
losdesarrolladoresyusuariosdelastecnologasSOA4D.SOA4D(ArquitecturaOrientadaa
ServiciosparaDispositivos)esunainiciativadecdigoabiertoconelobjetivodefomentar
un ecosistema para el desarrollo de componentes de software orientados a servicios
(mensajera SOAP y protocolos WS*, orquestacin de servicios...) adaptado a las
limitacionesespecficasdedispositivosintegrados.

DPWS Library: Es un conjunto de libreras del .NET Framework de Microsoft. Este


Framework est enfocado al desarrollo para dispositivos de recursos limitados. Las
libreras MFWsStack.dll and MFDpwsDevice.dll proporcionan la funcionalidad de
alojamientodeserviciosparaundispositivo.LalibreraMFDpwsClient.dllproporcionala
funcionalidadparainvocarservicioswebendispositivos.

4.4 PROCESODEDESARROLLO
ElprocesogeneralparadesarrollarconDPWSconstadelossiguientesapartados:

Definicindelosmetadatosdeldispositivoydelservicio

Implementacindeldispositivo

Ejecucindeldispositivo

Implementacindelcliente

Ejecucindelcliente
Sepuedendarcuatroescenariosdedesarrollo:

Servicioydispositivo:Solosedesarrollanserviciosalojadosenundispositivo.

Cliente:Solosedesarrollaelcliente.

PeertoPeer:Sedesarrollaunservicioquehacedeclienteparaotroservicio.

Asncronoyeventos:Sedesarrollaundispositivo(actuandocomouncliente)ouncliente
puroquenecesitarecibirmensajesasncronosdelosproveedoresdeservicios.
Segnelcasohabrpartedeservidorenelclientey/opartedeclienteenelservidor.

pg.51

Captulo4:ArquitecturasSOA
4.4.1

DEFINICINDELDISPOSITIVO
DPWSpermitedefinirladescripcindeldispositivoentiempodeejecucinconfunciones

delaAPIWS4DgSOAP.Aunqueesmejoralternativadefinirladescripcinentiempodedesarrollo
yusarelgeneradordecdigoWS4DgSOAPparaintegrarladescripcineneldispositivo.
En los ejemplos de DPWSCore y WS4DgSOAP se utilizan ejemplos de dispositivos
domoticos, como por ejemplo un aire acondicionado o la luz de la cocina. Aqu se muestra la
definicindeldispositivoparaelaireacondicionado:
<?xml version="1.0" encoding="ISO-8859-1"?>
<wsm:Metadata xmlns:wsm="http://schemas.xmlsoap.org/ws/2004/09/mex"
xmlns:acs1="http://www.ws4d.org/axis2/tutorial/AirConditioner"
xmlns:aces1="http://www.ws4d.org/axis2/tutorial/AirConditionerEvent"
xmlns:wdp="http://schemas.xmlsoap.org/ws/2006/02/devprof"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsd="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsm:MetadataSection Dialect="http://schemas.xmlsoap.org/ws/2006/02/devprof/Relationship">
<wdp:Relationship Type="http://schemas.xmlsoap.org/ws/2006/02/devprof/host">
<wdp:Host>
<wdp:Types>acs1:AirConditioner</wdp:Types>
<wdp:ServiceId>DPWS-HostingService</wdp:ServiceId>
</wdp:Host>
<wdp:Hosted>
<wdp:Types>acs1:AirConditionerInterface</wdp:Types>
<wdp:ServiceId>AirConditioner</wdp:ServiceId>
<Name>AirConditioner</Name>
</wdp:Hosted>
</wdp:Relationship>
</wsm:MetadataSection>
<wsm:MetadataSection Dialect="http://schemas.xmlsoap.org/ws/2006/02/devprof/ThisModel">
<wdp:ThisModel>
<wdp:Manufacturer lang="de">Universitt Rostock</wdp:Manufacturer>
<wdp:Manufacturer lang="en">University of Rostock</wdp:Manufacturer>
<wdp:ManufacturerUrl>http://www.uni-rostock.de</wdp:ManufacturerUrl>
<wdp:ModelName lang="de">Klimaanlagendienst</wdp:ModelName>
<wdp:ModelName lang="en">AirConditioner Service</wdp:ModelName>
<wdp:ModelNumber>1.0</wdp:ModelNumber>
<wdp:ModelUrl>http://www.uni-rostock.de</wdp:ModelUrl>
</wdp:ThisModel>
</wsm:MetadataSection>
<wsm:MetadataSection Dialect="http://schemas.xmlsoap.org/ws/2006/02/devprof/ThisDevice">
<wdp:ThisDevice>
<wdp:FriendlyName lang="de">Klimaanlagendienst</wdp:FriendlyName>
<wdp:FriendlyName lang="en">AirConditioner Service</wdp:FriendlyName>
<wdp:FirmwareVersion>Version 0.1</wdp:FirmwareVersion>
<wdp:SerialNumber>234d5e4f-c23f-4d91-84ba-1f159284b37a</wdp:SerialNumber>
</wdp:ThisDevice>
</wsm:MetadataSection>
</wsm:Metadata>

Ladescripcindeldispositivotiene3partes:Relationship,ThisModelyThisDevice.Estos
datos son accesibles desde los ordenadores conectados a la misma red. En Windows Vista se
pueden ver los dispositivos entrando en Red. En Windows 7 est agrupado en el men
DispositivoseImpresoras.

pg.52

Captulo4:ArquitecturasSOA
SemuestraladeteccindesdeWindowsVistaenlasiguientefigura:

Figura4.4DispositivodescubiertodesdeWindowsVista

En las propiedades aparecen los detalles del dispositivo: fabricante, modelo, n de


modelo,pginawebdeldispositivo.
NOTA:Eldispositivonoeselmismoqueelxmldeladefinicinanterior.
Elpropiodispositivopuedetenerunapginaweb:

Figura4.5Accediendoalapginawebdeldispositivo

Es muy habitual encontrarse routers con esta funcionalidad. Tambin se puede acceder
desdelaventanadepropiedadeshaciendoclicenelvnculo.

pg.53

Captulo4:ArquitecturasSOA
Yestaeslawebdeldispositivoluzdelacocina:

Figura4.6Pginawebdeldispositivo

DesdelautilidadDPWSExplorertambinseexaminanlosdetallesdeldispositivo:

Figura4.7InformacindeldispositivodesdeDPWSExplorer

En la figura anterior se ven los dos dispositivos mencionados: Kitchen light y


AirConditioner. Cabe destacar que estos dispositivos estaban ejecutndose en una mquina
virtualyfuerondetectadosdesdelamaquinaanfitrinporestarcompartiendolared.

pg.54

Captulo4:ArquitecturasSOA
4.4.2

DEFINICINDELSERVICIO
LamaneradesignadaparadefinirunainterfazdeservicioesmedianteWSDL.

Figura4.8EstructuradelWSDL

UnaherramientatilparacreararchivosWSDLeselcomponenteWSDLEditordelWeb
ToolsPlatform(WTP)deEclipse.AcontinuacinseexponeelWSDLdelservicioSwitchPowerdel
dispositivoKitchenLight:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="Lighting"
targetNamespace="http://www.soa4d.org/DPWS/Samples/Lights"
xmlns:tns="http://www.soa4d.org/DPWS/Samples/Lights"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:documentation>
A simple light control service with one port types:
1. A simple power ON/OFF port type.
</wsdl:documentation>
<!-- TYPES -->
<wsdl:types>
<xsd:schema targetNamespace="http://www.soa4d.org/DPWS/Samples/Lights"
elementFormDefault="qualified"
xmlns:tns="http://www.soa4d.org/DPWS/Samples/Lights">
<xsd:simpleType name="PowerState">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="ON" />
<xsd:enumeration value="OFF" />
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="Power" type="tns:PowerState" />
</xsd:schema>
</wsdl:types>

<!-- MESSAGES -->

pg.55

Captulo4:ArquitecturasSOA

<wsdl:message name="SwitchMsg">
<wsdl:part name="SwitchBody" element="tns:Power" />
</wsdl:message>
<wsdl:message name="GetStatusReqMsg" />
<wsdl:message name="GetStatusRespMsg">
<wsdl:part name="StatusBody" element="tns:Power" />
</wsdl:message>
<!-- PORT TYPES -->
<wsdl:portType name="SwitchPower">
<wsdl:documentation>This port type defines operations for setting the power binary
mode (ON/OFF) of a light device.</wsdl:documentation>
<wsdl:operation name="Switch">
<wsdl:documentation>Requests the device to switch off or on its power
state.</wsdl:documentation>
<wsdl:input message="tns:SwitchMsg" />
</wsdl:operation>
<wsdl:operation name="GetStatus">
<wsdl:documentation>Requests the device to return the value of its power
state.</wsdl:documentation>
<wsdl:input message="tns:GetStatusReqMsg" />
<wsdl:output message="tns:GetStatusRespMsg" />
</wsdl:operation>
</wsdl:portType>
<!-- BINDINGS -->
<wsdl:binding name="SwitchPower" type="tns:SwitchPower">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Switch">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="GetStatus">
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!-- Services (Not used by the toolkit) -->
<wsdl:service name="Lighting">
<wsdl:port name="SwitchPower" binding="tns:SwitchPower">
<soap:address location="" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Figura4.9InformacindelserviciodesdeDPWSExplorer

pg.56

Captulo4:ArquitecturasSOA
4.4.3

IMPLEMENTACINDELDISPOSITIVO
Una vez definido el WSDL se utilizan herramientas de generacin de cdigo que nos

preparanunskeletonparaintroducirlalgicadelservidoryunstubparaintroducirlalgicadel
cliente.WS4DyDPWSCoreutilizangSOAPparagenerarelcdigoapartirdelWSDL.

Figura4.10GeneracindecdigomediantegSOAP

Paragenerarelcdigodelaireacondicionadoseutilizaestecomando:
wsdl2h -c -n acs AirConditioner.wsdl -o acs.gsoap

Nota: ver el manual de WS4DgSOAP para mejores referencias. Hay que hacer operaciones
manualessobreelficherogeneradoantesdeejecutarelsiguientecomando.
Estecomandogeneraunficheroacs.gsoapqueseutilizaenelsiguientecomando:
soapcpp2 2ucn pws d gen acs.gsoap

Unavezejecutadosestoscomandosquedageneradoelcdigopararellenarconlalgica
del servicio. Tanto en el manual de WS4D como en el de DPWSCore realizan este proceso al
detalle.Esrecomendableleerlosdosporquesecomplementanmuybien.

pg.57

Captulo4:ArquitecturasSOA
4.4.4

EJECUCINDELDISPOSITIVO
Alejecutarelcdigo,comoesunservidor,sequedaescuchandoenunpuertoTCP.Como

se ha visto en la figura 4.3 tambin escucha un puerto UDP a la espera de mensajes de


multidifusin.

Figura4.11Servidoralaesperadepeticiones

En DPWS Explorer se pueden invocar acciones. En la siguiente figura se manda un


comandoparaajustarlatemperaturaa22gradosenelaireacondicionado:

Figura4.12OperacindesdeDPWSExplorer

pg.58

Captulo4:ArquitecturasSOA
4.4.5

MONITORIZACINSOAP
Desde DPWS Explorer se puede realizar una monitorizacin de los mensajes SOAP

intercambiados con los dispositivos. Se ven los mensajes de descubrimiento, solicitudes de


operaciones,respuestadeoperaciones,suscripcinaeventos,eventos,etc

Figura4.13MonitorizacinSOAPdesdeDPWSExplorer

A continuacin se visualiza el detalle del evento previo a alcanzar la temperatura


solicitadade22grados.CabenotarqueladireccinesIncomingyesdetipoRequest:

Figura4.14DetalledelmensajeSOAPdelevento

pg.59

Captulo4:ArquitecturasSOA

4.5 PROBLEMASENCONTRADOS
Conelejemplodelaluzdecocina,KitchenLight,deWS4Delproblemaencontradoesque
no expone las operaciones, se puede ver en la figura 4.9 como aparece el servicio
MySwitchPowerServiceperonotieneoperacionescolgando.Estedispositivosisedetectadesde
Windows.
Air Conditioner de DPWSCore no es detectado por Windows. Como en DPWS Explorer
aparecenloscomandos,seharealizadolacompilacincruzadadeesteejemplo.Losrespectivos
clientesdeejemplofuncionanparalosdosframeworks.
Para realizar la compilacin de Air Conditioner fue necesario bajar de versin el
DPWSCore a la 2.2.0. Aun as aparece un error con los tipos wchar_t. Tras revisar una
comparativa[22]entrelaslibrerasestndardeCGlibcyuClibcsepuedeobservarquelalibrera
estndar que utiliza la cmara solo soporta UTF8 y opcionalmente ISO8859*, es decir, no
soporta los caracteres de 16 bit. Algunas referencias recomiendan actualizar el compilador cris
gccparasolucionarelproblemaperoestoponeenriesgoelrestodelproyectoynosehahecho.
Sepuedencargarlasdoslibrerasestndarenlacmaraperodesconozcoelimpactoque
puedetenerenlosprogramasyacompiladosenlacmaraysedescartestaopcin.
Con el framework de Microsoft, DPWS Library, hay que implementar la capa de
abstraccindehardwareHALquedandodescartadaporcomplejidad.
PorestosmotivosnosehapodidocontinuarconlaimplementacinDPWSenlacmara.
DecaraalapresentacinsevaaremplazarporunservicioRESTparaalmenosexponerlosdatos
comounservicio.

pg.60

Captulo5:Modelospropuestos

5 MODELOSPROPUESTOS
En esta seccin se muestran unos casos de uso seleccionados para usar los diferentes
tipos de servicios DPWS que se pueden ofrecer desde una cmara IP. Primero se repasan las
limitacionesdeestetipodesistemas.

5.1 DIFICULTADESTCNICAS
En los anteriores captulos se han visto muchas limitaciones para implementar
aplicacionesdevisinartificialsobrelascmarasIP.Fundamentalmentehansidolimitacionesdel
hardwaredelacmaraylimitacionesdelosalgoritmosdeprocesado.
LaslimitacionesenlascmarasIPhansidoprincipalmentelimitacionesdeespacioparael
softwareycapacidaddeproceso.Sedescartlaposibilidaddeusarlasencontroldecalidadenla
industria cuando se exigen velocidades extremas. Hemos visto que se pueden implementar
aplicacionesdebajavelocidadigualmentevaliosas.
EnlaspruebasrealizadasdurantelarealizacindelpresenteProyectosehanconseguido
velocidades de 150ms por imagen que es bastante elevada, son 900MB/150ms = 6MB/s
realizandounprocesadobsico.Seestimarunaimagenporminutoparaprocesosmscomplejos.
Severuncasodeusoenelquelacmarasolorealizaunpreprocesadodelasimgenesylas
envaaunservidorparaseranalizadasenprofundidad.Noesnecesarioconstruirtodoelsistema
enlapropiacmara.

5.2 DETECTORDEMOVIMIENTO
SeusaelmodeloimplementadoenMatlabparadetectarmovimientoypublicarelevento
medianteDPWS.Tambinsemencionarlafuncionalidaddedeteccindemovimientoyaincluida
enlacmaraseleccionadaparalaspruebas.
ElalgoritmodedeteccindemovimientoresultafcildeimplementarenMatlab.Trabaja
conunasecuenciadeimgenesy,ensuformasimple,consisteendetectarlasdiferenciasdeuna
imagenconlaanterior.Laoperacinesmuysencilla:
ImagenDeCambios = abs(ImagenAnterior ImagenActual)

Setrabajaenescaladegrises,esdecirlaluminosidaddecadapixelescomparadaconla
luminosidaddelpixelhomlogoenlaimagenanterior.Siresultaniguales,consideramosqueno
hay movimiento y su diferencia es 0. Si algn objeto se mueve introduce una variacin en los
pxeles que invade y otra en los que abandona. Se suele emplear un margen de error para
asegurarse que la variacin es suficiente. Esta operacin lgica ImagenDeCambios>25 realiza el
procesodevalorumbral(Thresholding)queseexpusoenelcaptulo3.

pg.61

Captulo5:Modelospropuestos

Figura5.1MascaradeCambiosenladeteccindemovimiento

En la anterior imagen aparezco movindome hacia la izquierda y desde luego no es la


imagenesperada.Sepuedepensarquedeberaaparecertodalasiluetacompletamarcadacomo
uncambio.Alserlacamisetadeunnicocolorlanicadiferenciaqueexisteestenloscambios
de luminosidad y aunque est en movimiento no supera el lmite establecido, por eso todo el
troncoapareceennegro.
Unaformamscomplejaderealizarelprocesoconsisteentomarunaimagendelfondoy
compararconlaimagenactual,estopuederesultarinclusopeor.Pensemosenlaentradadeun
supermercado. Se puede tomar una imagen antes de abrir las puertas e ir comparando con el
restodeimgenesdelda.Amediamaanaelsoliluminarlaescenaaumentandoenlaimagenel
contrasteyseacabaronlosclculos,todohavariado.Sinoesunacosa,esotra,directamenteno
sepuedeconsiderarningunaimagencomoelfondo.Loquesesuelehacerescalcularelfondo.
Sevaaconsiderarquealgoquesequedequietoduranteciertotiempopasaaformarpartedel
fondo.Porejemplo,duranteeldasemontaunstanddepublicidad.
Paraelclculoserealizaunamediaponderadaentrelaimagenactualyelfondoanterior.
La imagen actual se va a considerar como un porcentaje del fondo. El porcentaje elegido
dependerdecmoderpidoserequierequealgoestticoformepartedelfondo.
slowBackground = current * 0.05 + 0.95 * slowBackground;
fastBackground = current * 0.85 + 0.15 * fastBackground;

Elcasolentotienemuchamemoria,elpasodeunobjetodejaunaestelaquepermanece
muchotiempocomouncambio.Enelcasorpidounobjetoquesequedaquietoenseguidapasa
aconsiderarseelfondo,habrqueencontrarelequilibrioenfuncindelaaplicacin.Paraeste
casoelfondorpidohadadobuenosresultados.

pg.62

Captulo5:Modelospropuestos

Figura5.2DeteccindemovimientoconMatlab(Resultado)

Para las pruebas se ha usado la cmara web integrada en el porttil. Para conseguir
accesoalaimagenhayquerealizarunainicializacinquesemuestraenelcdigocompletoque
vieneacontinuacin:

Figura5.3DeteccindemovimientoconMatlab(Cdigo1/2)

pg.63

Captulo5:Modelospropuestos
La primera parte inicializa las variables antes de entrar en el bucle principal, la segunda
parte,serepitedurante5segundosmostrandolafiguraconlosresultadosdecadaimagen.

Figura5.4DeteccindemovimientoconMatlab(Cdigo2/2)

En la imagen del resultado se pueden apreciar algunos pixeles sueltos que superan el
umbral,estasvariacionessonproducidasporelruidodelaimagen.
En escenas a la intemperie, adems del ruido de imagen, se presentan otros
inconvenientes: el viento mueve las ramas de los rboles, pueden aparecer bolsas, papeles y
pjarosvolando,ademsdeotrosanimalessueltos.Estorequiereintroducirunnuevoumbralen
la deteccin, el volumen de los objetos, el nmero de pixeles agrupados que se encuentran en
movimiento. Para evitar a los rboles se introducen las ventanas de inclusin y exclusin de la
deteccin del movimiento, cosa que resulta muy til en entornos de oficina para iniciar la
grabacinenelmomentoqueunobjetoentraosaledeunadelasventanasdefinidas.Lacmara
Axis utilizada en este proyecto trae de serie un algoritmo de deteccin del movimiento que
incluyelacomplejidaddelasventanas,eltamaodelosobjetosylapersistenciadelosobjetos.
PoresonosevaaestudiarmsenprofundidadestealgoritmoenMatlab.
Como se ha descrito al principio de este apartado la deteccin del movimiento es fcil
peroamedidaqueseavanzaenelestudiosedescubrennumerosaspeculiaridades.Eshabitual

pg.64

Captulo5:Modelospropuestos
que aparezcan muchas peculiaridades en las aplicaciones de visin por computador. Hay
procesos que para nosotros son extremadamente simples pero cuando se quieren implementar
hay que contar con un elevado riesgo tcnico. Puede tener una complejidad escondida que
imposibilitelarealizacindeunproyectoconlosmediosmaterialesdisponiblesenlaactualidad.
En el captulo 4 se ha mostrado que hay un tipo de servicio que son los eventos, Web
ServicesEventing(WSEventing).Enestecasolaaplicacincliente,unaaplicacindevigilancia,se
suscribealeventoDetectadomovimientoqueproporcionanlascmarasdevigilancia.

5.3 CONTADORDEPERSONAS
Enelapartado3.2.1.1seviolaimplementacindelcontadordeobjetosenMatlab.Yse
realiz un avance sobre su posible uso para controlar el aforo en las estancias de un museo.
Veamosesaideaenmayordetalle.

Figura5.5Instantneadeejemplodeunmuseo

Enestaimagenseobservaunaescenatpicadeunmuseodesdeelpuntodevistadeuna
cmaradevigilancia.Unodelosprimeropasosessegmentarlaimagenrealizandolaconversina
mapadebitsmedianteelvalorumbral.

Figura5.6Problemasdurantelasegmentacin

En la anterior imagen se pueden ver casi todos los problemas de este mtodo de
segmentacin, aparecen objetos fragmentados y virutas pequeas (b.3); tambin aparecen

pg.65

Captulo5:Modelospropuestos
objetos pequeos (b.2) y posibles huecos (1). No todo objeto ofrece contraste con respecto al
fondo.
Tambinpuedeocurrirlocontrario,quedosobjetosestnencontactoyseanprocesados
como el mismo objeto. Dependiendo del grado de precisin requerido puede ser suficiente. Se
puede realizar el promedio del nmero de objetos y con bastante seguridad los fragmentos se
compensarn con las uniones. Se puede hacer el promedio entre el recuento ofrecido para
diferentes valores umbral. Los procesos de rellenado de huecos, la erosin y el filtrado por
tamaoeliminalosfragmentospequeos.
Hayquepensarenelresultadodelprocesocomolasealdeunsensor,dehechoesun
sensordeimagen.Losvaloresledosestnsujetosaruidoysedebenpromediarypostprocesar.
Noesrazonablequeenlasaladeunmuseoentreunfotogramayelsiguientehayanaparecido25
personasnuevasyacontinuacinseesfumen.

Figura5.7Ejemploderesultadosdelcontadordepersonas

Si el nivel de ruido es suficientemente bajo como para dejar ver el patrn de asistencia
subyacenteesperfectamentevlido.
Comosehavistoantes,noesnecesarioquelacmaraestprocesandocontinuamente
las imgenes capturadas. Se puede implementar un servicio Contar Personas para ejecutar el
procesobajodemanda.
En el captulo 2, la figura 2.11 muestra una alternativa para contar las personas que
acceden a un recinto (Cross Line Detector). Se puede llegar a implementar el mismo servicio
utilizandolosdatosregistradospordichoalgoritmo.Conladiferenciadequelacmaradebeestar
enfocandoalaccesoypuedesermsprcticoenfocaratodalasala,porotroladosisecontrolan
losaccesosnoesnecesarioponerunacmaraentodaslassalas.

pg.66

Captulo5:Modelospropuestos

5.4 SISTEMADECAPTURADECARAS
Existenvariosalgoritmosparadetectarcarasquevandesdelasegmentacinporcoloral
reconocimiento de caras mediante redes neuronales. Una vez encontrada la cara se puede
identificaralapersonamedianteunabasededatosdecarasyunprocesodeclasificacin.

Figura5.8Deteccindecaraporsegmentacindecolor

El problema con la segmentacin de color es evidente, las manos son del mismo color,
aunquesepuedenfiltrarportamaotodavaquedaelproblemadedefiniruncolorparalapiel,
fcilmente se puede terminar con un algoritmo discriminante por color de piel. No es
precisamenteelmejoralgoritmoperoesaceptablecomosolucinbsica.

pg.67

Captulo5:Modelospropuestos

Figura5.9Deteccinmedianteredesneuronales

Eneldiagramaanteriorsevenlospasosdadosenelsistemadedeteccindecarasbasado
en redes neuronales implementado por Henry A. Rowley en la referencia [21]. Es un sistema
bastante complejo que detecta caras incluso giradas, sin mirar al frente, con contrastes de
iluminacin,gafas,barba,etc.

Figura5.10Algoritmobsicoparadeteccindecarasmedianteredesneuronales

Todo proceso de deteccin tiene 4 casos ampliamente conocidos: positivos, negativos,


falsospositivosyfalsosnegativos.Enelcasodeladeteccindecarassalendelcruceentreelvalor
realyelvalordetectado.Sidetectaunacaradondenolahayesunfalsopositivo,siunacaranoes
detectada es un falso negativo. Para el modelo propuesto no importa tener una mayor tasa de
falsospositivosacostadequenoseescapeningnfalsonegativo.Espreferibletenercarasque

pg.68

Captulo5:Modelospropuestos
no son a que se escapen caras. El cliente realizar un procesado adicional sobre las caras
detectadasparabuscarcoincidenciascontraunabasededatos.
EstemodelosepuedeexplotarmedianteuneventoCaracapturadaadiferenciaqueel
detectordemovimientoesteservicioenvacomoadjuntoelrecortedelaregindelacaracomo
partedeunmensajeMIME.Laimagenpuedetransmitirsesincompresinparamejorarlacalidad.

Elclientedelserviciodeberealizarunadeteccindepatronessobrelascarasrecibidas
desdelacmaraparaidentificaralossujetos.Paraelloserealizaunacorrelacincruzada.

Figura5.11EjemplodedeteccindepatronesdeSimulink

EnelejemplodedeteccindepatronesdeSimulinkserealizalabsquedadeunaimagen
objetivo(Target)sobrelaimagenbajopruebas(IUT).Enlaparteinferiorizquierdasevelamatriz
resultadodelacorrelacincruzada.Sevisualizaconunapaletadecolores(hot)quenospermite
verfcilmentelaspartescalientesenblancoamarillocorrespondientesalasimilituddeesa
reginconlaimagenobjetivo.Sefijaunumbraldedeteccin(Threshold),enlaimagenaparece
conelvalor0.99comoentradaalbloquededeteccin.Tambinsepuedeseleccionarentredos
mtodosdecorrelacin,espacialyenfrecuencia.
Como parte de la investigacin y para que se vea ms claro todo el proceso, romp el
modeloensuspartesbsicasquedndomeconelmtododecorrelacinespacial.

pg.69

Captulo
o5:Modelospropuestos

Figura5
5.12Correlacin
ndeunpatrn
ncontralaimaggendelacmaradelporttil((1/2)

E
Enestaprim
meraparteseerealizalaccorrelacincruzadaen2 dimensioneesentrelaim
magen
procedentedelacmarausbinttegradaeneelporttilyu
unaimagen patrn,por ejemplounaafoto
moslocalesy severificassisuperanellvalor
deunaccara.Enlaseegundaparteselocalizanlosmxim
umbral. En esecaso
osegenera un marcoveerdesobrelaaimagen capturada en ellugar don
ndese
hanenco
ontradolasccoincidenciass.

Figura5
5.13Correlacin
ndeunpatrn
ncontralaimaggendelacmaradelporttil((2/2)

pg.70
0

Captulo5:Modelospropuestos

5.5 COMPARADORDELVOLUMENDEPIXELES
Esunatcnicadefotogrametradiferencial,esdecir,enbaseaunaimagendereferencia
semideelnmerodepixelesquetienenuncolorseleccionado.Concretamentesemideunvalor
mximo, uno mnimo y se determina que el nmero de pixeles entre esas medidas es un valor
aceptable.Sepuedeusarparaobteneralgunasmedidasdimensionales,largo,anchoyenalgunos
casosconcretoselvolumendelosobjetos.Esteeselmodeloqueseutilizarparadefinirelcaso
prctico en el captulo 6. Consiste en medir el volumen de un lquido de color dentro de una
botellatransparentecomopartedeuncontroldecalidadmedianteinspeccinvisual.
Elprocesoconsisteenidentificarlospixelescondeterminadocoloryparaelloseutiliza
segmentacin por color. Durante las pruebas se obtuvieron resultados no deseados y para
mejorarelprocesosehadiseadounalgoritmoespecficoquecumplemuybienconestatarea.
Ladescripcindelalgoritmosedetallaenelpunto3.4.2.1,mtodoBMP_FastCountColorProp.

Figura5.14Algoritmodesegmentacinporcolormedianteelsistemadeinecuaciones

Estecriteriofuncionamuybienconlaslucesysombraspresentesenlosobjetosperono
sepuedeutilizarparadetectarcoloresenlagamadegrises.

pg.71

Captulo
o5:Modelospropuestos

Figura5.1
15Deteccinde
elcolorconsisttemadeinecuaaciones

P
Para
determ
minar si un color
c
cumplee el criterio, el sistema de inecuacciones debe tener
solucin, es decir, se
s verifican todas
t
las condiciones 2 a 2. Los avgg son promeediados 3x3 en la
medidadelascompo
onentesdeccolor.
E resultado
El
o del mtod
do BMP_FasstCountColorrProp devueelve el nm
mero estimad
do de
pixeles que
q tienen ese color. Este
E
mtodo
o es llamado
o desde un componente que agrup
pa las
estadstiicas de com
mparacin co
ontra los nivveles mximo y mnimo
o definidos ccomo parte de la
configurracin. Este componentee es el que ofrece el se
ervicio de EEstadsticas de Comparaacin
arrojand
do como ressultado un pequeo reesumen con el nmero
o de objetoss que superran el
mximo,,nmerodeeobjetosporrdebajodel umbralmnimoynmerodeobjeto
osqueestn entre
losmrggenes.
A agrupar un
Al
u servicio de
d estadsticcas se agregga toda la reesponsabilidaad del contrrol de
calidadaalacmara.Inclusosepu
uedehacerp
paraquelap
propiacmarraactiveunrrelydescarrtelos
objetoscconmedicionesfueradeelosmrgenes.
C
Conclusiones
s:
R
Resulta
fcil proponer servicios paara impleme
entar en lass cmaras. Pueden serr bajo
demandaomediantteeventos.SSepuedenp
publicarresu
ultadosparcialesrepartieendolacapaacidad
declcu
uloentreelcclienteylaccmara.Seo
optimizaelconsumode anchodebaandayenalggunos
casos see puede tran
nsmitir solo la informacin necesaria sin necesidad de com
mpresin y con
c la
consecuenteganancciaencalidad
d.

pg.72
2

Cap
ptulo6:Caso
oprctico

6 CASOPR
C
RCTICO
Enestaseeccinsedesscribealdetalleelalgoritmoimplem
mentadoparaalademostraacin.

6.1 USOPR
CTICODELCOMPA
ARADORDEVOLMENES
Enelcaptuloanterio
orsehavisto
ounmodelopropuestop
paramedireelvolumend
depxeles
queo
ocupaunobjjetoenlaim
magenyaseestablecerun
narelacineentreunamedidafsica. Sehabl
de su uso para medir el volumen
v
dee un lquido
o con un color definid
do en un re
ecipiente
transsparente.
6.1.1
1

CONTRO
OLDELLENADODERE
ECIPIENTES
S
Enesteccasoprctico
osevaautillizarparaco
ontrolarelniveldellenad
dodeunab
botellade

aceiteeenunaaplicacindeccontroldecaalidadindusttrial.Laimaggenaprocessaresunab
botellade
aceiteesobreunacintatransportadorayu
unfondoblan
ncocomosemuestraenesteesquem
ma:

Fiigura6.1Esque
emadelcontroldelniveldellenado

d color amaarilloverdosso ocupa un nmero


Como se puede ver en la imageen el rea de
deterrminadodep
pxelesquessepuedemeedir.Silabotellatuvieraunnivelinferiorelreaadecolor
secontabilizacon
nmenornm
merodepxelesyviceverrsa.
Silaboteellaestuvieraaligeramenteedesplazadaaenlacintanoinfluyeeenlamedida,,perolas
condicionesdeiluminacinyylavelocidad
ddelabotelllapuedenaafectarnegattivamentepo
oresoes
mendable uttilizar una ilu
uminacin artificial y qu
ue la botella lleve una veelocidad red
ducida. El
recom
proceesodeconfigguracinsed
deberealizarrenlasmism
mascondicion
nes.

pg.73
p

Captulo6:Casoprctico
6.1.2

MOTIVOSDELAELECCIN
El detector de movimiento ya viene incorporado en la cmara, tanto el contador de

personas como el sistema de captura de caras tienen algoritmos complejos para ser
implementadossinlaayudadelibrerasdeprocesadodeimgenes.Paraevitarcomplicacionesen
laimplementacinelalgoritmomssimpleeraelcomparadordevolmenes.

6.2 MODELODELSISTEMA
En esta seccin se realiza la descripcin completa del sistema. Desde el montaje a la
explotacindelservicio.Sedescribetambinelsoftwarenecesarioylascomunicaciones.
6.2.1

ESQUEMADEMONTAJE

Figura6.2Diagramadesecuenciaenlneadeproduccin

Paramontarestesistemaenunentornoproductivohayqueseguirestospasos:
1. Preparar un slot de un metro para insertar el punto de control en la lnea de
produccin tras el rellenado y cierre de las botellas. Colocar una carcasa opaca
rodeandolalneadetransporte.Ensuinteriorcolocarunafuentedeluzdifusayun
fondoblancoenunodeloslaterales.
2. En el otro lateral de la carcasa colocar la cmara IP. Suministrarle alimentacin y
conexinporredEthernet.Opcionalmentesepuedeusarelpuertodecontrolderels
delapropiacmaraparaactivarelmecanismodeexpulsindelalnea.Laimagende
la cmara debe ser similar a la figura 6.1, no importa que se visualice la botella al
completo,bastaconquesevealapartesuperiordondeestnlosnivelesdellenado.
3. Lasbotellasdebenatravesarestepuntodecontroldeunaenunaydebenrealizarloa
velocidad reducida. Durante el proceso de configuracin deben darse las mismas
condiciones.

pg.74

Captulo6:Casoprctico
4. En el centro de control se utilizar una computadora como cliente del servicio. Esta
computadoradebetenerconexinalaredlocal.Laconfiguracindelsistemasolohay
quehacerlaunavez,sepuederealizardesdeestamismacomputadora.
5. Preparar 2 botellas modelo con los niveles mximo y mnimo. El tcnico utilizar la
aplicacinsetupparacapturarlasimgenesyseleccionarelcolor.
6. Preparar 3 botellas modelo con un nivel inferior al mnimo, un nivel intermedio y
superioralmximo.Las5botellasseusarnparahacerunasecuenciadeverificacin.
7. Traslasecuenciadeverificacinsereseteanlasestadsticasysedaporconcluidala
puestaapunto.
6.2.2

DIAGRAMADECASOSDEUSO

Figura6.3Diagramadecasosdeuso

Laaplicacinclientepuederealizar4operacionesbsicas:

Verificarnivel:Permiterealizarmedidasindependientes.

Obtener estadsticas: Recupera los resultados estadsticos desde el ltimo


restablecimientodeestadsticas.

Resetearestadsticas:Reinicialoscontadoresderesultadosestadsticos.

Detener: Detiene el servicio de forma ordenada. Almacena las estadsticas de


formapermanenteenelsistemadeficheros.

pg.75

Captulo6:Casoprctico
6.2.3

DIAGRAMADECOMPONENTES

Figura6.4Diagramadecomponentes

ElCentrodeControlnecesitadoscomponentessoftware:

AplicacinSetup:Utilidadquepermitealoperadorvisualizarlasinstantneasde
la cmara y seleccionar sobre ellas los casos mximo y mnimo. Transfiere a la
cmaraelficheroconlaconfiguracinporFTP.

AplicacinCliente:Aplicacindesarrolladaportercerosquetomaelroldecliente
contraelcomponenteIQCC.Lacomunicacinentreestoscomponentesserealiza
mediante Web Services SOAP y la interfaz del servicio es la descrita por el
diagramadecasosdeusoanterior.

pg.76

Captulo6:Casoprctico
EnlaCmaraIPseencuentran4paquetesdesoftware:

Disparo:Estepaquetedeprogramaseselencargadodeejecutarelprocesadode
imagen cuando se detecta un cruce de barrera. GPIO gestiona la barrera por
infrarrojos leyendo el puerto externo de la cmara a la espera de una seal de
circuito cerrado. Barrier Status, implementado en el script toogle, presenta una
interfaz web y por lnea de comandos que permite activar o desactivar la
deteccindemovimiento(barreravirtual).Triggercomponentequecentralizalas
llamadasproducidasporloseventosdecrucedebarreraeinvocaalcomponente
decalidadIQCC.utaskcomponentedelsistemaLinuxqueseutilizaparainicializar
laconfiguracindeloseventoscuandosereinicialacmara.

Procesado: Este paquete consta del componente Image Quality Control


Component(IQCC)querealizaelcontrolestadstico.UtilizalalibreraQDBMPque
es la encargada de realizar el procesamiento de la imagen capturada
Snapshot.bmp.

Servicio: IQCC WS es el Web Service de IQCC que proporciona los resultados


estadsticoscomopartedelservicio.

pg.77

Captulo6:Casoprctico
6.2.4

DIAGRAMADECLASES

Figura6.5Diagramadeclases

Este diagrama es una representacin conceptual del paquete de procesado. Al estar


implementado en C no resulta trivial su representacin en UML. QDBMP hace las funciones de
claseBMPylasfuncionesdeprocesadodelalibreracomosedescribien3.4.2.1.IQCCllevael
controldelasestadsticasyseencargadealmacenarlasdeformapersistenteendisco,escapaz
detraducirelnmerodepixelesaunresultadoutilizandolaconfiguracinDetect.configenviada
porlaaplicacinsetup.IQCCWSproporcionaelserviciocomoWebServiceSOAP.
Nota:TodoslosmtodosypropiedadesdeQDBMPaparecenenelcdigoprecedidosporBMP_
yenIQCCvanprecedidosporIQCC_.Sehaneliminadodeldiagramaparamayorclaridad.

pg.78

Captulo6:Casoprctico
6.2.5

DIAGRAMASDESECUENCIA

Figura6.6Diagramadesecuenciadeldisparo

Enestediagramasepuedeverlainteraccinentrelosdiferentescomponentescuandose
produceundisparoalcruzarlabotellaunadelasbarreras.SystemeslaplataformaLinuxprovista
enlacmara,getSnapshot()enlaprcticaserealizainvocandoauncomandoproporcionadopor
elfabricantequeconviertelaimagenJPEGprocedentedelsensorenlaimagenSnapshot.bmp

Figura6.7Diagramadesecuenciadelservicio

Aqu se ve la interaccin entre los componentes cuando se invoca el Web Service. La


aplicacinclientesecomunicamedianteSOAPconelcomponenteIQCCWS.

pg.79

Captulo6:Casoprctico
6.2.6

DEFINICINDELSERVICIO
AcontinuacinsemuestraladefinicindelservicioenWSDL:

<?xml version="1.0" encoding="utf-8"?>


<wsdl:definitions
name="IQCC"
targetNamespace="http://www.euitt.upm.es/DPWS/IPCam/Quality"
xmlns:tns="http://www.euitt.upm.es/DPWS/IPCam/Quality"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:documentation>
IQCC - Image Quality Control Component
</wsdl:documentation>
<!--

TYPES

-->

<wsdl:types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.euitt.upm.es/">
<xsd:element name="IQCC_CheckLevel">
<xsd:complexType />
</xsd:element>
<xsd:element name="IQCC_CheckLevelResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element
minOccurs="1"
maxOccurs="1"
name="IQCC_CheckLevelResult"
type="tns:IQCC_CHECK_RESULT" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="IQCC_CHECK_RESULT">
<xsd:restriction base="s:string">
<xsd:enumeration value="IQCC_CHECK_OK" />
<xsd:enumeration value="IQCC_CHECK_MAX" />
<xsd:enumeration value="IQCC_CHECK_MIN" />
<xsd:enumeration value="IQCC_CHECK_ERROR" />
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="IQCC_GetStats">
<xsd:complexType />
</xsd:element>
<xsd:element name="IQCC_GetStatsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element
minOccurs="0"
maxOccurs="1"
name="IQCC_GetStatsResult"
type="tns:IQCC_STATS_REPORT" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="IQCC_STATS_REPORT">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="Total" type="s:unsignedLong" />
<xsd:element minOccurs="1" maxOccurs="1" name="Ok" type="s:unsignedLong" />
<xsd:element minOccurs="1" maxOccurs="1" name="Max" type="s:unsignedLong" />
<xsd:element minOccurs="1" maxOccurs="1" name="Min" type="s:unsignedLong" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="IQCC_ResetStats">
<xsd:complexType />
</xsd:element>
<xsd:element name="IQCC_ResetStatsResponse">
<xsd:complexType />
</xsd:element>
</xsd:schema>
</wsdl:types>
<!--

MESSAGES

-->

<wsdl:message name="IQCC_CheckLevelSoapIn">
<wsdl:part name="parameters" element="tns:IQCC_CheckLevel" />
</wsdl:message>
<wsdl:message name="IQCC_CheckLevelSoapOut">
<wsdl:part name="parameters" element="tns:IQCC_CheckLevelResponse" />
</wsdl:message>

pg.80

Captulo6:Casoprctico
<wsdl:message name="IQCC_GetStatsSoapIn">
<wsdl:part name="parameters" element="tns:IQCC_GetStats" />
</wsdl:message>
<wsdl:message name="IQCC_GetStatsSoapOut">
<wsdl:part name="parameters" element="tns:IQCC_GetStatsResponse" />
</wsdl:message>
<wsdl:message name="IQCC_ResetStatsSoapIn">
<wsdl:part name="parameters" element="tns:IQCC_ResetStats" />
</wsdl:message>
<wsdl:message name="IQCC_ResetStatsSoapOut">
<wsdl:part name="parameters" element="tns:IQCC_ResetStatsResponse" />
</wsdl:message>
<!--

PORT TYPES

-->

<wsdl:portType name="IQCCSoap">
<wsdl:operation name="IQCC_CheckLevel">
<wsdl:input message="tns:IQCC_CheckLevelSoapIn" />
<wsdl:output message="tns:IQCC_CheckLevelSoapOut" />
</wsdl:operation>
<wsdl:operation name="IQCC_GetStats">
<wsdl:input message="tns:IQCC_GetStatsSoapIn" />
<wsdl:output message="tns:IQCC_GetStatsSoapOut" />
</wsdl:operation>
<wsdl:operation name="IQCC_ResetStats">
<wsdl:input message="tns:IQCC_ResetStatsSoapIn" />
<wsdl:output message="tns:IQCC_ResetStatsSoapOut" />
</wsdl:operation>
</wsdl:portType>
<!--

BINDINGS

-->

<wsdl:binding name="IQCCSoap" type="tns:IQCCSoap">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="IQCC_CheckLevel">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_CheckLevel" style="document"
/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="IQCC_GetStats">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_GetStats"

style="document"

/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="IQCC_ResetStats">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_ResetStats" style="document"
/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!--

BINDINGS (SOAP 1.2)

-->

<wsdl:binding name="IQCCSoap12" type="tns:IQCCSoap">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="IQCC_CheckLevel">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_CheckLevel" style="document"
/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>

pg.81

Captulo6:Casoprctico
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="IQCC_GetStats">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_GetStats"

style="document"

/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="IQCC_ResetStats">
<soap:operation soapAction="http://www.euitt.upm.es/IQCC_ResetStats" style="document"
/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!--

Services

-->

<wsdl:service name="IQCC">
<wsdl:port name="IQCCSoap" binding="tns:IQCCSoap">
<soap:address location="http://localhost:50019/IQCC.asmx" />
</wsdl:port>
<wsdl:port name="IQCCSoap12" binding="tns:IQCCSoap12">
<soap:address location="http://localhost:50019/IQCC.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

pg.82

Captulo6:Casoprctico

6.3 IMPLEMENTACINDELSISTEMA
Enesteapartadosemuestrandetallesdelainstalacinyconfiguracindelsistema.
6.3.1

SOFTWAREENELCLIENTE
Como se ha expuesto en el diagrama de componentes el centro de control utiliza dos

piezasdesoftware,laaplicacinclientedelservicioquedebenimplementarterceraspartespara
integrarloconelsoftwaredecontroldelacompaaylaaplicacinsetupqueseproporcionacon
elsistema.

Figura6.8AplicacinSetup

En la figura anterior se observa un caso en el que se ha utilizado agua con una ligera
coloracinysehailuminadodeficientementeapropsitoparaverlaeficaciadelalgoritmo.Enla
parte inferior aparece la sobra de la botella y es capaz de distinguirla cuando est fuera de la
botella.Lapartedesombraqueseveatravsdelabotellaynoperjudicaladeteccin.

pg.83

Captulo6:Casoprctico
6.3.2

SOFTWAREENLACMARAIP
LainstalacindesoftwareenlacmaraIPsepuederealizarfcilmenterestaurandoun

backupenunacmaranueva.Estaoperacinserealizadesdelainterfazdemantenimientodela
cmaraenhttp://192.168.1.55/admin/maintenance.shtml

Figura6.9Restauracindelbackupconelsoftwaredelacmara

Elbackupproporcionadocontienetodoslosscripts,configuracionesylibrerasinstaladas
en la cmara. Es aconsejable realizarlo sobre una cmara nueva para no perder otras
configuracionespersonalizadas.
Conclusiones:
Comosehacomentadoenlasconclusionesdelcaptulo3,estecasoprcticoserestringe
aentornosproductivosconbajasexigenciasdevelocidad.Hayquerecordarqueestemodelofue
seleccionado por simplicidad y no por su potencia. La cmara a nivel hardware tiene las
capacidadessuficientespararealizarelmodeloplanteadocumpliendotodaslasexpectativasdel
proyecto y por lo tanto la idea de introducir un procesado inteligente en la cmara resulta ser
factible.Citoalcaptulodeintroduccin:
Laideadeesteproyectoconsisteenincrustarunapartedelprocesoenlaarquitecturade
lasCmarasIPdotndolasdeciertainteligencia.Conestosepretendereducirelanchodebanda
consumidoydistribuirlacargadelproceso.

pg.84

Presupuesto

PRESUPUESTO
Acontinuacinsedetallaelpresupuestodeunsistemacomoeldelcasoprctico,bajoel
supuestodequenohayningunainfraestructuraderednidecontrol,queelsoftwareclientelo
desarrollarn terceras partes. Quedan excluidas las modificaciones requeridas en la lnea de
produccin.

Concepto

Unid.
DESPLIEGUEDEMEDIOS

CMARAIP

CmaraAXIS210

1
CABLEADODELARED

SwitchEthernet

1
Bobina100mCableRedFlexibleUTPCat.5e10/100
1
Manodeobra

4
CENTRODECONTROL

Equipodecontrol

1
EXPLOTACINDELSISTEMAEMPOTRADOENLASCMARASIP
ALGORITMODEPROCESADO
das horas
Tomaderequisitos
2
16
Diseo
12
96
Implementacin
20 160
SOFTWAREADICIONAL

ServidorDPWS
5
40
Pginawebintegrada
5
40

Preciou.

200

12
30
12

1.000

tasa(/h)
30
45
40

40
40

Importe

200

12
30
48

1.000

480
4.320
6.400

1.600
1.600

Subtotal
IVA21%
TOTAL

15.690
3.295
18.985

pg.85

Conclusiones

CONCLUSIONES
Independientementedelasdificultadesencontradas,laideadepoderdotaracmarasde
vigilancia de cierta inteligencia es muy interesante. Seguramente las cmaras terminen
evolucionandoparasoportarestetipodeaplicaciones.YaexisteelconceptodeSmartCamerasy
hay soluciones comerciales como la Plataforma de aplicaciones AXIS, en las que terceras partes
puedendesarrollarsusalgoritmosycomercializarlosfcilmente.
EstaragenialquelasaplicacionesdediseodesistemascomoSimulinktrabajaransobre
una capa de abstraccin del hardware y hubiese podido utilizar el cdigo generado. De hecho
estoy seguro que tambin se podra generar el cdigo para la explotacin mediante SOA desde
estediseadordesistemas.
Conectarundispositivoalaredypodermanipularlodesdecualquierordenadordeforma
integradagraciasaDPWStieneungranpotencial.Elpoderinterconectarvariosdispositivospara
hacer una aplicacin distribuida e inteligente y poder hacer que el mundo que nos rodea nos
facilitelavidaesuncaminomuyinteresante.
Avecesllevarlateoraalaprcticaesunabarrerainfranqueable.Laslimitacionesquese
puedenencontrarsondelomsvariopintas.Porejemplo,eltrabajoconloscoloresenalgoritmos
deprocesadodeimgenesesunmundollenoderetosysoloeslapuntadelicebergenelcampo
delavisinporcomputador.Lomsgraveesqueestosfallosnosedetectenhastaencontrarse
conuncasoapropiado.Comoseharecomendado,parasortearesteobstculohayquetrabajar
conunabasedeimgenesdepruebayotradecontraste.

EsrecomendableidentificarconqulibreraestndardeCsevaatrabajar.Respectoalas
compilacionescruzadasesmuchomejortrabajarconprocesadoresdegranpblicocomoARM,la
comunidaddesoporteesmuchomsgrande.Unconsejogeneralenesteaspectoesquesialgo
nocompilaintentarloconlaversinanterior.
Sobre el procesado de imgenes la recomendacin es que no hace falta procesar la
imagenalcompleto,aligualqueloshumanosnovemosbienenlareginperifricalasmquinas
notienenporquhacerlomejor.ParaestosedefinenunazonasdeintersllamadasROIRegion
ofinterest,quesepuedendefinirdeformaestticaocalcularlasconotroproceso.

pg.87

Glosario

GLOSARIO

Canales de imagen: La informacin de una imagen puede estar dividida o agrupada segn
determinados parmetros. Los canales ms habituales son RGB (Rojo, Verde, Azul), aunque
existenvariosespaciosdecolor.

Conversinaescaladegrises:Procesoquetrabajasobreunaimagenencoloraplicandouna
transformacinlinealparaextraerlaluminanciadelaimagen,elresultandoesunaimagensin
informacindecolorllamadablancoynegroomsespecfico,escaladegrises.

Imagenencolor:Unaimagenencolorestcompuestaporvariasimgenesquerepresentan
diferentesparmetrosdelcolor.

Imagenenescaladegrises:Selaconocecomoimagenenblancoynegro,perosiendoms
preciso es una imagen que tiene la intensidad de la luz codificada en un amplio rango de
valores,generalmentede0a255.CadacanalRGBdeunaimagenencolorsondeestetipo.

Thresholding:Procesoquetrabajasobreunaimagenenescaladegrisesasignandoelvalor1
a los pixeles de la imagen si superan cierto umbral de intensidad y 0 en caso contrario,
resultandoenunaimagenbinaria.

Vecindad / Conectados: Relacin entre 2 pixeles por su posicin y cercana. Hay dos casos,
vecindad por las aristas (4conectados) y vecindad por las esquinas (8conectados). Se dice
quedospixelesestnconectadossielpixelevaluadotieneelmismovalorquealgunodesus
vecinos.

Bloque/Blob:Enunaimagenbinaria,unconjuntodepixelesconectadosconelmismovalor.

Llenado: Proceso que trabaja sobre imgenes binarias de forma que completa los pixeles 1
aisladosdentrodeunbloque0paraeliminarelruidodentrodelosbloquesdepxeles.

Erosin:Procesodedesgastedelaimagenbinaria,eliminapequeaspartculasaisladas.

Etiquetado:Procesoqueasignaacadabloqueunidentificador.

Segmentacin:Procesoqueconsisteenseparar/segmentarlosdiferentesobjetospresentes
enunaimagenutilizandodiferentescaractersticasdelaimagen.

SOA: Service Oriented Arquitecture. Arquitectura orientada a servicios. Es un paradigma


tecnolgico para el diseo de aplicaciones basada en servicios. Bajo esta arquitectura las
aplicacionessoncoleccionesestructuradasdeserviciosindividuales.

SOA4D: Arquitectura Orientada a Servicios para Dispositivos es una iniciativa de cdigo


abierto con el objetivo de fomentar un ecosistema para el desarrollo de componentes de
software orientados a servicios (mensajera SOAP y protocolos WS*, orquestacin de
servicios...)adaptadoalaslimitacionesespecficasdedispositivosintegrados.

pg.89

Bibliografa

BIBLIOGRAFA
1.

AXISCommunicationsAB.IPSurveillanceguide.[enlnea]
http://www.axis.com/files/manuals/gd_ipsurv_design_32568_en_0807_lo.pdf

2.

AXISCommunicationsAB.AXISETRAX100LXDesignersReference(2006).[enlnea]
http://www.axis.com/files/tech_overview/etrax_100lx_des_ref060209.pdf

3.

AXISCommunicationsAB.AXISDeveloperWiki.[enlnea]
http://developer.axis.com/wiki/index.html

4.

AXISCommunicationsAB.AXISDeveloperWiki.Softwarelist.[enlnea]
http://developer.axis.com/wiki/doku.php?id=axis:swlist

5.

AXISCommunicationsAB.AXISDeveloperWiki.CompilingforCRISHOWTO.[enlnea]
http://developer.axis.com/wiki/doku.php?id=axis:compiling_for_cris_howto

6.

AXISCommunicationsAB.AXISDeveloperWiki.ApplicationsHOWTO.[enlnea]
http://developer.axis.com/wiki/doku.php?id=axis:apps_howto

7.

AXISCommunicationsAB.AXISDeveloperWebsite.
PlataformadeaplicacionesdecmarasAXIS.[enlnea]
http://www.axis.com/es/techsup/cam_servers/dev/application_platform/index.htm

8.

DavidVillaAlises.CreacindeLibrerasenGNU/Linux.[enlnea]
http://arco.esi.uclm.es/~david.villa/doc/repo/librerias/librerias.html

9.

WikimediaFoundation,Inc.Comparisonofnumericalanalysissoftware.[enlnea]
http://en.wikipedia.org/wiki/Comparison_of_numerical_analysis_software

10.

M.C.JosJaimeEsquedaElizondo.FundamentosdeProcesamientodeImgenes.[enlnea]
http://fcqi.tij.uabc.mx/usuarios/esqueda/cursoimagenes.pdf

11.

TheMathWorks,Inc.MATLABProductHelp.

12.

TheMathWorks,Inc.RealTimeWorkshopHelp.FirstLookatGeneratedCode.[enlnea]
http://www.mathworks.com/access/helpdesk/help/toolbox/rtw/gs/bp6h8dw1.html

13.

ITUR.BT.601-7. [en lnea]


http://www.itu.int/rec/RRECBT.6017201103I/en

14.

ComputerVisionOnline.Software.[enlnea]
http://www.computervisiononline.com/software

15.

ChaiBraudo.Quickn'DirtyBMPLibrary.[enlnea]
http://qdbmp.sourceforge.net/

pg.91

Bibliografa
16.

UniversittRostock.WS4DReferenceManual(2010).[enlnea]
http://trac.etechnik.unirostock.de/projects/ws4dgsoap/chrome/site/ws4dgsoaprefman
0.8.pdf

17.

Microsoft Corporation.

DPWSLibrary.[enlnea]

http://msdn.microsoft.com/enus/library/hh423016.aspx
18.

SOA4D.org.DPWSCoreUserGuide.[enlnea]
https://forge.soa4d.org/docman/view.php/8/45/DPWSCore+User+Guide.pdf

19.

Phillips,Dwayne.ImageProcessinginC(SecondEdition).[enlnea]2000
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.177.1793&rep=rep1&type=pdf

20.

Kisacanin,Branislav;Klsch,Mathias.TutorialonEmbeddedComputerVision.
IEEECVPR2006.17June2006.FollowupwebpageonEmbeddedComputerVision.[enlnea]
http://www.movesinstitute.org/~kolsch/pubs/EmbeddedCV_TutorialCVPR06.html

21.

A.Rowley,Henry.NeuralNetworkBasedFaceDetection
CarnegieMellonUniversity;May1999

22.

Kernel.org.GlibcvsuClibcDifferences.[enlnea]
https://www.kernel.org/pub/linux/libs/uclibc/Glibc_vs_uClibc_Differences.txt

pg.92

S-ar putea să vă placă și