Sie sind auf Seite 1von 48

Tema 5

Ejemplos de Integracin de Medios Digitales: introduccin a la Visin por Computador

Integracin de Medios Digitales Escuela Tcnica Superior de Informtica Aplicada


Manuel Agust, Vicente Atienza
DISCA-UPV, curso 2009-2010

Objetivos

Conocer la representacin de una imagen en un


sistema basado en computador.

Formalizar el desarrollo del tratamiento de


imgenes para sistemas de caractersticas multimedia.

Conocer y experimentar las operaciones ms


elementales.

Conocer la disponibilidad de libreras al efecto.

ndice
1. Introduccin: revisin del medio 'imagen' 2. Visin por computador
1. Aplicaciones.

3. Anlisis de la imagen
1. Relacin entre pxels. 2. Histogramas.

4. Extraccin de informacin
1. Bordes. 2. Umbralizacin.

5. Cuestiones de implementacin
1. Libreras

2. Uso de OpenCV

Introduccin

La visin por computador (VxC) se refiere a la adquisicin y procesado de imgenes en formato digital de dos dimensiones mediante un computador. Aplicaciones

Industria: medidas sin contacto, inspeccin de produccin, biomtrica,


teledeteccin, ...

BD de imgenes: mdicos, diseadores, ... Realidad Aumentada (AR) / Realidad Virtual (RV) Formas de comunicacin y de interaccin: computacin
emocional y avatares.

Visin por computador

VxC
E&T"ACCIN
Etapa de preprocesado (+sico,o-.a / percepcin0 Estad.stica!! E& T"A CCI' N D E L$ S $ ()ET$ S D E LA IM A G EN

Etapa de se- entacin !

Etapa de reconoci iento auto 1tico (Estad.sticos!

Se- entacin

T"A N S#$ "M A CI$ N ES % #ILT"A D $ DE IM G EN ES

CA LCU L$ D E CA "A CTE"*STICA S % "EC$ N $ CIM IEN T$

Estad.stica

(A SE DE C$ N CIM IEN T$ S

Inte,i-encia

A D Q U ISICI N DE IM G EN ES D IG ITA LES

IN TE"+"ETA CI N D E LA ESCEN A

Etapa de obtencin de datos de entrada (Instru entacin!

Etapa de sa,ida (Inte,i-en-ia A rti2icia,!

Introduccin

Revisin del medio 'imagen'

Las imgenes digitales son matrices de nmeros, reales o complejos, representados por un nmero finito de bits.

Introduccin

Revisin del medio 'imagen'


Resolucin espacial --> I(x,y) Cuantizacin --> I(x,y) [0, L] (L+1 valores)

Introduccin

Revisin del medio 'imagen'


Resolucin espacial --> I(x,y) Cuantizacin --> I(x,y) [0, L] (L+1 valores) Percepcin e ilusiones

Visin por computador

Representacin o modelado de imgenes

Modelos: descripcin de una imagen


Dependencia de aplicacin/percepcin

Imgenes estticas Mapa de bits: valores de luminancia Operadores locales --> Relacin entre pxels Operadores globales --> Estadsticos Vectoriales: objetos 345 336 347 Secuencia de imgenes

88 54 394 3:; 364 ;7 84 85 << 95 363 7: 95 << 95 95 95 95 95 95 9: 95 95 9: 9: 95 ;3 ;3 95 95 93 9: 95 ;5 3:4 3<9 364 << 94 :9 78 56 3;; 464 3;7 54 99 9: 34; <8 3<; 468 357 78 7; 56 ;7 ;3 466 468 439 ;3 77 7: <9 339 463 465 468 366 ;4 78 3:6 357 357 468 468 3:< 3:< 399 387 359 357 357 355 339 3:9 398 39: 3;7 3;7 37; 37; 337 363 333 344 344 36: 344 347

Anlisis de la imagen

Relaciones entre los puntos de la imagen

Descripciones a partir de los valores de los puntos, considerados:


Aislados Vecindad

Distribucin de una caracterstica de los


puntos de la imagen

Caracterizaciones debidas a variables estadsticas:


Globales Locales: texturas

Relaciones entre los puntos de la imagen

Anlisis de la imagen

Espacialmente
Aislados

Remapear los valores asociados a cada punto v = f(u) / u,v [0, L] Ejemplos: Negativo: dst(x,y) = L - fte(x,y) 0 fte(x,y) < a a fte(x,y) b

0 Umbralizar: dst(x,y) = { L

Vecindad

Anlisis de la imagen

Relaciones entre los puntos de la imagen

Espacialmente
Aislados Vecindad

pi-1,j pi,j-1 pi,j pi+1,j+1 pi-1,-1j


P i,j-1

pi,j+1

Generar nueva informacin No precisamente informacin de color Cuntos? 4-conectados y 8-conectados

pi-1,j pi,j pi+1,j

pi-1,j+1
P i,j+ 1

Operacin: convolucin Operador: mscara o filtro

Pi+1,j-1

pi+1,j+1

Relaciones entre los puntos de la imagen


Aislados Vecindad

Extraccin de informacin

Modo de aplicacin: operacin


Convolucin dst(x,y) = k l (a(k,l) * fte(x-k, y-l)) ; (k,l) W 2te Pesos: a(k,l) (gnralm., 1) es la aportacin de cada punto vecino: promediado. a 6 06 Operacin de filtrado:

dst

a603 a604 a303 a1,2 a304 a404

Decidir la mscara

a306 a2,0

Aplicacin

Extraccin de informacin

Relaciones entre los puntos de la


imagen

> =

= 3 =

> >

Aplicacin: escalado
Descripcin: ampliacin por interpolacin Algoritmo:

?Inicia,i@acinA

# Funcin de convolucin funcion convolucion(mascara, imgFte, x, y, imgDst) para i = 0 hasta nFilasMascara para = 0 hasta n!olsMascara imgDst(x,y) += mascara(i, ) " imgFte(x#i, y# ) fpara fpara ffuncion

# $plicar convolucin para i = % hasta nFilas & % para = % hata n!ols '% convolucion( mascara, F, i, , D) fpara fpara

Extraccin de informacin

Relaciones entre los puntos de la imagen

Aplicacin:
Escalado: ampliacin por interpolacin Deteccin de

Puntos

B3 B3

B3 8 B3

B3 -1 B3 B3 4 -1 B3 4 B3 B3 2 B3 B3 B3 -1 4 4 4 B3 -1 B3

Lneas Horizontales Verticales Diagonales?, ...

-1

Extraccin de informacin

Relaciones entre los puntos de la imagen

Aplicacin:
Escalado: ampliacin por interpolacin Deteccin de puntos, lneas, ... Extraccin de bordes

a606 a603 a306 a303 a2,0 a304 > = = 3 = 6 B3

a604 a1,2 a404 > > C3 6

3 6

6 B3 6 6 6 3 1 3

Roberts

B3

B3 6 3 B3 0 3

B3 0 3 B3 B4 -1

B3 B3 -1 6 6 6

Prewitt

6 1 B3 B4 6 4

3 2 3

Sobel

6 1

Anlisis de la imagen

Distribucin de una caracterstica de los puntos


de la imagen

De la frecuencia de aparicin de los niveles de gris (o de color). En funcin de la dimensin


Escalares

Medias, covarianzas, ... Histograma Funcin de distribucin de probabilidad de los niveles de gris En valor absoluto: entre 0 y MxN En porcentaje: normalizar entre 0 .. 1

Vectoriales

Distribucin de una caracterstica de los


puntos de la imagen

Extraccin de informacin

Caracterizaciones globales Operadores estadsticos: el Histograma


De niveles de gris: 6 3 4 DDD L B 3 h(k) = nmero de puntos de la imagen que cumplen I(x,y) = k con k [0, L-1] h~

Extraccin de informacin

Distribucin de una caracterstica de los puntos de


la imagen

Operador: estadsticos

Aplicacin: segmentacin <-- umbralizacin


Determinar un valor umbral (T) que separe las clases de objetos presentes en la imagen 0 si fte(x,y) < T dst(x,y) = { 1 si fte(x,y) <= T A partir de aqu:

Etiquetado Deteccin del centro de masas Caracterizacin de los objetos Rectngulo, ejes, elongacin, ...

Cuestiones de implementacin

Libreras

NetPBM [http://netpbm.sourceforge.net/] ImageMagick Studio: convert, montage, display, animate, ... [http://www.wizards.dupont.com/cristy/ImageMagick.html] Open Computer Vision Library (OpenCV) [http://sourceforge.net/projects/opencvlibrary] Intel (IPL) [http://www.intel.com/research/mrl/research/opencv/ ]

ARToolkit [http://www.hitl.washington.edu/artoolkit/]

Desarrollo propio sobre OpenCV

Cuestiones de implementacin (II)


Esquema

Sobre la imagen ya corregida:


Se busca el objeto de inters (el punto de lser proyectado).

Caractersticas
Multiplataforma Tiempo real Parametrizable por el usuario

Se generan los eventos correspondientes en el sistema.

Ms detalles en presentacin externa

Desarrollo propio sobre ARToolkit

Cuestiones de implementacin (III)


Esquema

Caractersticas
Multiplataforma Tiempo real Parametrizable por el usuario
Ms detalles en presentacin externa

Cuestiones de implementacin (IV)

Ejemplos de Integracin de Medios


Digitales

Introduccin a la Visin por Computador (VxC) OpenCV

Objetivos
Conocer la representacin de una imagen en OpenCV. Exponer las operaciones ms elementales en OpenCV. Proponer que se experimente con ellas

OpenCV
1. Introduccin 2. Ejemplos

Definicin de una imagen Acceso a las componentes Primitivas de dibujo Imgenes y ficheros Procesar una secuencia Histogramas Procesamientos puntuales Procesos de vecindad Otros ejemplos

OpenCV: introduccin

Open Computer Vision Library http://sourceforge.net/projects/opencvlibrary/ OpenCV Wiki

http://opencv.willowgarage.com/

Biblioteca de cdigo abierto para tareas de VxC. Originalmente : Intel. Publicada bajo licencia BSD. Multiplataforma. C/C++ Mdulos

OpenCV: introduccin (y II)


Open Computer Vision Library Mdulos cv: funciones bsicas

cxCore: estructuras de datos (memoria y disco), lgebra (vectores y matrices), primitivas grficas, XML cvReference: procesado de imgenes, movimiento, reconocimiento de patrones, calibracin. cvAux: estreo, morphing, HighGui: ventanas, E/S (usuario, fichero, vdeo) ML: machine learning

OpenCV: definicin de una imagen


t/pede2 struct EIp,I a-e F int nSi@eG DDD int nChannelsG DDD int depthG DDD int widthG int heightG HI i a-e MidtK in piLe,s IH HI i a-e Kei-Kt in piLe,s IH HI piLe, deptK in bits IH HI Most o2 $penCJ 2unctions support 3040: or 9 cKanne,s IH HI si@eo2(Ip,I a-e! IH

struct EIp,"$I IroiGHI i a-e "$ID i2 NULL0 tKe MKo,e i a-e is se,ected IH DDD cKar Ii a-eDataG HI pointer to a,i-ned i a-e data IH int MidtKStepG HI si@e o2 a,i-ned i a-e roM in b/tes IH N O IplImageG

OpenCV: acceso a las componentes


!"efine f#$%& '()ola* OpenCV en gris+' IplImage ,imgOrg#ris* ... imgOrg#ris - cvCreateImage.cv&i/e.012L3* 0L45*IPL_DEPTH_8U* 657 ... IncializarImgGris( imgOrg#ris ); cvName !in "#. f#$%&* CV8W%9:OW80;4O&%<3 57 cv$%"#Image. f#$%&* imgOrg#ris 57 cv&"ve!in "#. f#$%&* =* = 57 int inciali/ar%mg#ris. IplImage ,imgOrg 5 ... for . ? - =7 ? @ imgOrg)*#i t%7 ?AA 5 cv'eleaseImage. >imgOrg#ris 57 cvDestr"(!in "#. f#ris 57 for . y - =7 y @ imgOrg)*%eig%t7 yAA 5 B color:st.valC=D - ?7 cv$et+D.imgOrg* y* ?* color:st57 E

OpenCV: acceso a las componentes (II)


!"efine f$#F '()ola* OpenCV en color+'
...

IplImage ,imgOrg$#F* ... imgOrg$#F - cvCreateImage.cv&i/e.012L3* 0L45*IPL_DEPTH_8U* G57 ... inciali/ar%mg$#F. imgOrg$#F 57 int inciali/ar%mg$#F. IplImage ,imgOrg 5 Cv$calar color:st7

cvName !in "#. f$#F* CV8W%9:OW80;4O&%<3 ... 57 cv$%"#Image. f$#F* imgOrg$#F 57 cv&"ve!in "#. f$#F* 012L3AG=* = 57 for . ? - =7 ? @ imgOrgHIwi"th7 ?AA 5 for . y - =7 y @ imgOrgHIheight7 yAA 5 B cv'eleaseImage. >imgOrg$#F 57 cvDestr"(!in "#. f$#F 57 color:st.valC$D - ."ouble5y7 color:st.valC#D - ."ouble5?7 color:st.valCFD - ."ouble5..yA?5 J .int5L57 Cv$et+D. imgOrg* y* ?* color:st 57 E // Kin "e ' for . y - =7 y @ imgOrgHIheight7 yAA 5' E// Kin "e ifHelse . imgOrgHInChannels +- G5

OpenCV: acceso a las componentes (y III)

OpenCV: primitivas de dibujo


IplImage ,image7 fila = (int)( image->height / 3 ); columna = (int)( image->width / 4 ); cvLine(image, cvPoint(0,0), cvPoint(columna, fila), C,_'G-.=*LMM*=5, thickness, line_type, shift ); cv'ectangle. image* cvP"int.columna* fila5* cvP"int.L,columna* L,fila5* C,_'G-.LMM*=*=5* thickness* line8type* shift57 cvCircle. image* cvP"int.6==* 6==5* 6=* C,_'G-.LMM*=*=5* C,_.ILLED* line8type* shift 57 cvEllipse. image* cvP"int.L,columna* fila5* a?es* angle* start8angle* en"8angle* C,_'G-.=*=*LMM5* C,_.ILLED* line8type* shift 57

CvInit."nt. >font*C,_./NT_HE'$HE0_$I&PLE1* h&cale*v&cale* italic&cale* lineWi"th* N57 CvP2tTe3t. image*'2ulsa una tecla para acabar'* cv2oint.columna* fila 5* >font* C,_'G-.LMM*=*LMM557 Cv$%"#Image. nomKinestra* image 57

OpenCV: primitivas de dibujo (y II)

OpenCV: imgenes y ficheros


IplImage ,imgOrg* ,"stCGD7 imgOrg = cvLoadImage( nomFOrg, CV_LOAD_IMAGE_UNCHANGED);

"stC=D - cvCreateImage. cvGet$ize.imgOrg5*IPL_DEPTH_8U* 657 "stC6D - cvCreateImage. cvGet$ize.imgOrg5*IPL_DEPTH_8U* 657 "stCLD - cvCreateImage. cvGet$ize.imgOrg5*IPL_DEPTH_8U* 657 cv$plit( imgOrg* "stC=D* "stC6D* "stCLD* 9;LL 57

cvSaveImage( nomFDst, dst[0] ); cv$%"#Image. nomKinestra* image 57

cv'eleaseImage. >"stC=D 57 ... cv'eleaseImage. >imgOrg 57

OpenCV: imgenes y ficheros (y II)

Uso de la cmara
IplImage ,imgOrg* ,img:st7 CvCapt2re, vi"eoOrg7

OpenCV: procesar una secuencia

vi"eoOrg - cvCreateCameraCapt2re. .argc I 6O atoi.argvC6D5 : C,_C4P_4N05 57 imgOrg - cv52er(.rame. vi"eoOrg 57 img:st - cvCreateImage. cv$ize.imgOrg)*#i t%* imgOrg)*%eig%t5* imgOrg)* ept%* imgOrg)*nC%annels 57

while. bContinuar 5 B imgOrg - cv52er(.rame. vi"eoOrg 57 cv.lip. imgOrg* img:st* mo"o 57 E// "e while. bContinuar 5

cv'eleaseCapt2re. >vi"eoOrg 57 cv'eleaseImage. >img:st 57

Uso de la cmara

OpenCV: procesar una secuencia (II)

OpenCV: procesar una secuencia (III)

Desde vdeo

CvCapt2re ,vi"eoOrg7 Cv,i e"!riter ,vi"eo:st7

vi"eoOrg - cvCreate.ileCapt2re. nomVi"eoOrg 57 img - cv52er(.rame.vi"eoOrg57 vi"eo:st - cvCreate,i e"!riter. nomVi"eo:est* C,_./U'CC.P%P*PQP*PLP*P=P5* fps* cv$ize.img)*#i t%* img)*%eig%t5* img)*nC%annels 57 CV8KO;$CC.P2P*P%P*P1P*P6P5 CV8KO;$CC.P1P*PRP*P2P*P#P5 MPEG-1 codec motion-jpeg codec (does not work well) CV8KO;$CC.P1P* P2P* PQP* PLP5 MPEG-4.2 codec CV8KO;$CC.P:P* P%P* PVP* PGP5 MPEG-4.3 codec CV8KO;$CC.P:P* P%P* PVP* PSP5 MPEG-4 codec CV8KO;$CC.P;P* PLP* PTP* PGP5 H263 codec CV8KO;$CC.P%P* PLP* PTP* PGP5 H263 codec CV8KO;$CC.PKP* PLP* PVP* P6P5 !"#1 codec CV8KO;$CC.P:P* P%P* PFP* P P5 $G% &'i (iles CV8KO;$CC.P%P* PUP* P;P* PVP5 )ncompressed *+#, 4-2-. c/rom& s)0s&mpled.

while. .img - cv52er(.rame.vi"eoOrg55 +- 9;LL 5 cv!rite.rame. vi"eo:st* vi"eoOrg 57

cv'elease,i e"!riter. >vi"eo:st 57 cv'eleaseImage. >img 57 cv'eleaseCapt2re. >vi"eoOrg 57

OpenCV: histogramas
type"ef struct Cv)istogram B int CvHist"gram ,hist7 int %ist_size 6 7; float ma?)istograma - =7 ... type7 Cv0rr, bins7 float threshCCV810S8:%1DCLD7 /, for uniform histograms ,/ float,, threshL7 /, for nonHuniform histograms ,/ Cv1at9: mat7 /, embe""e" matri? hea"er for array histograms ,/

ECvHist"gram7 hist - calcular)istograma. imagen* >hist8si/e 57 CvHist"gram ,calcular)istograma. IplImage ,imagen* int ,hist8si/e5 ... B float range8=CD-B=*LMTE7 float, rangesCD - B range8= E7 float *f; f = cvGetHistValue_1D(hist, i); *f = cvQueryHistValue_1D(hist,i) / maxHistograma; } CvHist"gram ,hist7 hist - cvCreateHist.6* hist8si/e* C,_HI$T_4''40* ranges* 657 cvCalcHist. >imagen* hist* =* 9;LL 57 return hist7 E

for. i - =7 i @ hist8si/e7 iAA 5 {

OpenCV: histogramas

Negativo

OpenCV: procesamientos puntuales

?
Imgenes binarias: umbralizacin

Convolucin
IplImage ,src7 Cv&at ,filtro7 ...

Procesos de vecindad

voi" Op8K%L4$OG?G. IplImage, imgOrg* IplImage ,img:st 5

float kernelCGDCGD- B=* =* =* =* 6* =* =* =* =E7

src - cvCreateImage. cv$ize.imgOrg)*#i t%*imgOrg)*%eig%t5* IPL_DEPTH_8U* 6 57 cvCvtC"l"r. imgOrg* src* CV8F#$L#$0U 57

img:st - cvCreateImage. cv$ize.imgOrg)*#i t%*imgOrg)*%eig%t5* IPL_DEPTH_8U* 6 57 ... filtro - cvCreate&at. nKiles* nCols* C,_8+.C9 57 cv$etData. filtro* kernel* filtroHIstep57 cv.ilter+D. src* img:st* filtro* cvP"int.H6*H65 57 ... cv'elease&at. >filtro 57 E // Op8K%L4$OG?G

Convolucin Ejemplos de uso de una mscara


float kernel_0[3][3]= {0, 0, 0, 0, 1, 0, 0, 0, 0};

Procesos de vecindad (II)

? ?

float kernel_1[3][3]= {1, 1, 1,

1, 1, 1, 1, 1, 1};

Combinaciones de mscaras: Sobel


voi" sobel. IplImage, imgOrg* IplImage ,img:st 5 B IplImage ,"f8"?* ,"f8"y* ,"est8"?* ,"est8"y* ,src7 ...

Procesos de vecindad (III)

src - cvCreateImage. cv$ize.imgOrg)*#i t%*imgOrg)*%eig%t5* IPL_DEPTH_8U* 6 57 cvCvtC"l"r. imgOrg* src* C,_-G'+G'40 57

//create temp images "f8"? - cvCreateImage.cvGet$ize.src5*IPL_DEPTH_9:$*657 "f8"y - cvCreateImage.cvGet$ize.src5*IPL_DEPTH_9:$*657

// use sobel to fin" "erivatives cv$";el. src* "f8"?* 6* =* G57 cv$";el. src* "f8"y* =* 6* G57 CContinuaD

Combinaciones de mscaras: Sobel


voi" sobel. %pl%mage, imgOrg* %pl%mage ,img:st 5 B //Convert signe" to unsigne" N cvC"nvert$cale4;s. "f8"? * "est8"?* 6* =57 cvC"nvert$cale4;s. "f8"y * "est8"y* 6* =57 ... img:st - cvCreateImage. cvGet$ize.src5* IPL_DEPTH_8U* 6 57 cv4 ... cv'eleaseImage. >"f8"? 57 ... E // Ki "e sobel . "est8"?* "est8"y* img:st* 9;LL 57

Procesos de vecindad (IV)

CContinuaciVnD

Convolucin Ejemplos de uso de una mscara

Procesos de vecindad (y V)

Combinaciones de mscaras: Sobel

Otros ejemplos

Example applications of the OpenCV library


Human-Computer Interaction (HCI) Object Identification, Segmentation and Recognition Face Recognition Gesture Recognition Camera and Motion Tracking, Ego Motion, Motion Understanding Structure From Motion (SFM) Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.

Otros ejemplos

Bsqueda
de patrones

Bibliografa y referencias
OpenCV Wiki

http://opencv.willowgarage.com/wiki/Welcome/Introduction Getting Started, FAQ, Tutorials, ...

Learning OpenCV: Computer Vision with the OpenCV Library

Gary Bradski, Adrian Kaehler y Kaehler Adrian. O'Reilly Media; 1st edition (September 24, 2008)

Curso de doctorado de Visin por Computador. Grupo de VxC, DISCA, 1996-2003. A. K. Jain, Fundamentals of Digital Image Processing, Prentice Hall, 1989. Daro Maravall, "Reconocimiento de formas y Visin artificial", ra-ma, 1993. Pginas de otras asignaturas, personales, blogs,

Das könnte Ihnen auch gefallen