Beruflich Dokumente
Kultur Dokumente
Objetivos
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
BD de imgenes: mdicos, diseadores, ... Realidad Aumentada (AR) / Realidad Virtual (RV) Formas de comunicacin y de interaccin: computacin
emocional y avatares.
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
Se- entacin
Estad.stica
(A SE DE C$ N CIM IEN T$ S
Inte,i-encia
IN TE"+"ETA CI N D E LA ESCEN A
Introduccin
Las imgenes digitales son matrices de nmeros, reales o complejos, representados por un nmero finito de bits.
Introduccin
Resolucin espacial --> I(x,y) Cuantizacin --> I(x,y) [0, L] (L+1 valores)
Introduccin
Resolucin espacial --> I(x,y) Cuantizacin --> I(x,y) [0, L] (L+1 valores) Percepcin e ilusiones
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
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
Espacialmente
Aislados Vecindad
pi,j+1
pi-1,j+1
P i,j+ 1
Pi+1,j-1
pi+1,j+1
Extraccin de informacin
dst
Decidir la mscara
a306 a2,0
Aplicacin
Extraccin de informacin
> =
= 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
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
-1
Extraccin de informacin
Aplicacin:
Escalado: ampliacin por interpolacin Deteccin de puntos, lneas, ... Extraccin de bordes
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
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
Extraccin de informacin
Extraccin de informacin
Operador: estadsticos
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/]
Caractersticas
Multiplataforma Tiempo real Parametrizable por el usuario
Caractersticas
Multiplataforma Tiempo real Parametrizable por el usuario
Ms detalles en presentacin externa
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
http://opencv.willowgarage.com/
Biblioteca de cdigo abierto para tareas de VxC. Originalmente : Intel. Publicada bajo licencia BSD. Multiplataforma. C/C++ Mdulos
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
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
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
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
"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
Uso de la cmara
IplImage ,imgOrg* ,img:st7 CvCapt2re, vi"eoOrg7
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
Uso de la cmara
Desde vdeo
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.
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
OpenCV: histogramas
Negativo
?
Imgenes binarias: umbralizacin
Convolucin
IplImage ,src7 Cv&at ,filtro7 ...
Procesos de vecindad
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
? ?
1, 1, 1, 1, 1, 1};
// use sobel to fin" "erivatives cv$";el. src* "f8"?* 6* =* G57 cv$";el. src* "f8"y* =* 6* G57 CContinuaD
CContinuaciVnD
Procesos de vecindad (y V)
Otros ejemplos
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
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,