Documente Academic
Documente Profesional
Documente Cultură
DEPROCESADODE
IMGENESBASADOSEN
ARQUITECTURAS
ORIENTADASASERVICIOS
BernardinoMarcosAsensio
12/09/2013
TEMA:
TTULO:
AUTOR:
TUTOR:
DEPARTAMENTO:
V B.
DIATEL
VOCAL SECRETARIO:
DIRECTOR:
Fecha de lectura:
Calificacin:
El Secretario,
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).
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
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.
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
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
Cdigo2.2:Simulacindelainstantnea
Elcdigoejecutadoenlacmarahayqueprobarlodeformaindependiente.Ladefinicin
delaetiquetaHOSTserealizaenelmakefileysepasacomoparmetroalcompiladorCFLAGS
pg.12
+= -
Captulo2:Descripcindelmarcodetrabajo
DHOST.
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
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.
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
pg.22
Captulo3:Procesamientodeimgenes
Comolosprocesosdeconversinaescaladegrisesyelvalorumbralsonmuyutilizados,
hayuncomandoquelosrealizadeformaconsecutivayeselquesehautilizadoenestepaso:
BW = im2bw(RGB, level)
Figura3.5Segmentacindelaimagendeprueba
Figura3.6EspaciodetrabajodeMatlabtraselprocesodesegmentacin
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
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
Figura3.17ModeloCliente
EnlafiguraanteriorsemuestraelModeloClientequeconsumelosserviciosdelModelo
ContadordeObjetos.Estemodeloseencargadelprimerpaso,leerlaimagendefichero.Sepasa
laimagenporelbloquecontadoryenelDisplaysevisualizaelnmerodeobjetosdetectados.
pg.30
Captulo3:Procesamientodeimgenes
Figura3.18ModelodelContadordeObjetos
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.
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,
/* 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 ();
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
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);
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.
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)
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
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
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:
Descubrimiento:Estemecanismopermitequeeldispositivoseanuncieenlaredlocalcon
mensajes de multidifusin. Los clientes pueden escuchar estos mensajes o enviar
mensajesparabuscardispositivosenlared.NormalizadoenelestndarWSDiscovery.
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.
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.
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
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
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>
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
Figura4.11Servidoralaesperadepeticiones
Figura4.12OperacindesdeDPWSExplorer
pg.58
Captulo4:ArquitecturasSOA
4.4.5
MONITORIZACINSOAP
Desde DPWS Explorer se puede realizar una monitorizacin de los mensajes SOAP
Figura4.13MonitorizacinSOAPdesdeDPWSExplorer
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
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
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
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.
Resetearestadsticas:Reinicialoscontadoresderesultadosestadsticos.
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.
pg.77
Captulo6:Casoprctico
6.2.4
DIAGRAMADECLASES
Figura6.5Diagramadeclases
pg.78
Captulo6:Casoprctico
6.2.5
DIAGRAMASDESECUENCIA
Figura6.6Diagramadesecuenciadeldisparo
Enestediagramasepuedeverlainteraccinentrelosdiferentescomponentescuandose
produceundisparoalcruzarlabotellaunadelasbarreras.SystemeslaplataformaLinuxprovista
enlacmara,getSnapshot()enlaprcticaserealizainvocandoauncomandoproporcionadopor
elfabricantequeconviertelaimagenJPEGprocedentedelsensorenlaimagenSnapshot.bmp
Figura6.7Diagramadesecuenciadelservicio
pg.79
Captulo6:Casoprctico
6.2.6
DEFINICINDELSERVICIO
AcontinuacinsemuestraladefinicindelservicioenWSDL:
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
-->
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>
<!--
-->
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.
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.
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