Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Agosto 2007
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
OpenCV contiene un gran numero de funcionalidades entre las mas clsicas de procesamiento de imgenes : ltrados, derivacin, a a o operadores morfolgicos. . . o Recorrer la documentacin para vericar si una funcin dada esta o o implementada o no.
Image Processing
Gradients, Edges and Corners Sampling, Interpolation and Geometrical Transforms Morphological Operations Filters and Color Conversion Pyramids and the Applications Image Segmentation, Connected Components and Contour Retrieval Image and Contour Moments Special Image Transforms Histograms Matching
, J.B. Hayet OpenCV parte 2, Agosto 2007 4 / 64
Structural Analysis
Accumulation of Background Statistics Motion Templates Object Tracking Optical Flow Estimators
Pattern Recognition
Object Detection
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Con el code de la forma siguiente CV ESPA12ESPA2, donde ESPA1 y ESPA2 pueden ser entre : BGR, RGB, XYZ, YCrCb, HSV
Umbral
Umbral :
double c v T h r e s h o l d ( const CvArr s r c , CvArr d s t , double t h r e s h o l d , double m a x v a l , i n t t h r e s h t y p e ) ;
Filtros
v o i d c v F i l t e r 2 D ( const CvArr s r c , CvArr d s t , const CvMat k e r n e l , C v P o i n t a n c h o r=c v P o i n t ( 1 , 1));
Ejemplo de uso:
CvMat k e r n e l = c v C r e a t e M a t ( 1 1 , 1 1 , CV 32F ) ; cvSet ( kernel , c v S c a l a r ( 1 . / ( k e r n e l >rows k e r n e l >c o l s ) ) ) ; c v F i l t e r 2 D (A , B , k e r n e l , c v P o i n t ( k e r n e l >c o l s / 2 , k e r n e l >rows / 2 ) ) ;
Filtros : smoothing
Filtros : smoothing
Derivadas y bordos
Sobel, Canny
v o i d c v S o b e l ( const CvArr s r c , CvArr d s t , int xorder , int yorder , i n t a p e r t u r e s i z e =3); v o i d cvCanny ( const CvArr image , CvArr e d g e s , double t h r e s h o l d 1 , double t h r e s h o l d 2 , i n t a p e r t u r e s i z e =3);
Derivadas y bordos
Derivadas y bordos
Laplaciano
Imgenes integrales a
Pueden revelarse muy utiles para clculos muy rpidos de sumas a a sobre ventanas (las Haar wavelets por ejemplo).
v o i d c v I n t e g r a l ( const CvArr image , CvArr sum , CvArr sqsum=NULL , CvArr t i l t e d s u m=NULL ) ;
Pirmides gausianas a
Up-sampling :
v o i d cvPyrUp ( const CvArr s r c , CvArr d s t , i n t f i l t e r =CV GAUSSIAN 5x5 ) ;
Pirmides gausianas a
Morfolog matemtica a a
Flexibilidad en la denicin del elemento estructurante o
IplConvKernel cvCreateStructuringElementEx ( i n t c o l s , i n t rows , i n t anchx , i n t anchy , i n t shape , i n t v a l u e s=NULL ) ; c v R e l e a s e S t r u c t u r i n g E l e m e n t ( I p l C o n v K e r n e l e l ) ;
Morfolog matemtica a a
Formas soportadas
CV SHAPE RECT CV SHAPE CROSS CV SHAPE ELLIPSE CV SHAPE CUSTOM
Morfolog matemtica a a
Operadores bsicos : a
v o i d c v E r o d e ( const CvArr s r c , CvArr d s t , I p l C o n v K e r n e l e l e m e n t=NULL , i n t i t e r a t i o n s =1); v o i d c v D i l a t e ( const CvArr s r c , CvArr d s t , I p l C o n v K e r n e l e l e m e n t=NULL , i n t i t e r a t i o n s =1);
Morfolog matemtica a a
Puntos de inters e
Todos los mtodos implementados son basados en la matriz de e autocorrelacin : o
v o i d c v C o r n e r M i n E i g e n V a l ( const CvArr img , CvArr e i g , i n t b l o c k s i z e , i n t a p s i z e =3); v o i d c v C o r n e r H a r r i s ( const CvArr image , CvArr d s t , i n t b l o c k s i z e , i n t a p s i z e =3, double k =0.04 ) ; v o i d c v F i n d C o r n e r S u b P i x ( const CvArr img , CvPoint2D32f c o r n e r s , i n t count , C v S i z e win , C v S i z e z e r o z o n e , CvTermCriteria c r i t e r i a ) ;
LK tracking
Mtodo de Lucas-Kanade para el seguimiento de puntos de inters e e (funciona bien para puntos de tipo esquinas, detectados por los operadores vistos antes)
v o i d c v C a l c O p t i c a l F l o w L K ( const CvArr p r e v , const CvArr c u r r , CvSize win size , CvArr v e l x , CvArr v e l y ) ;
LK tracking
Histogramas
t y p e d e f s t r u c t CvHis t ogram { int type ; CvArr b i n s ; float t h r e s h [ CV MAX DIM ] [ 2 ] ; / u n i f o r m h i s t . / f l o a t t h r e s h 2 ; / nonu n i f o r m h i s t . / CvMatND mat ; / m a t r i x h e a d e r f o r a r r a y h i s t . / } Cv His togram ;
Histogramas
Cv His t ogram c v C r e a t e H i s t ( i n t dims , i n t s i z e s , i n t type , f l o a t r a n g e s=NULL , i n t u n i f o r m=1 ) ; v o i d c v R e l e a s e H i s t ( Cv His to gram h i s t ) ; v o i d c v N o r m a l i z e H i s t ( CvH is tog ram h i s t , double f a c t o r v o i d c v C a l c H i s t ( I p l I m a g e image , Cv His to gram h i s t , i n t a c c u m u l a t e =0, const CvArr mask=N #d e f i n e c v Q u e r y H i s t V a l u e 1 D ( h i s t , i d x 0 ) \ c vGetReal1D ( ( h i s t )>b i n s , ( i d x 0 ) ) #d e f i n e c v Q u e r y H i s t V a l u e 2 D ( h i s t , i d x 0 , i d x 1 ) \ c vGetReal2D ( ( h i s t )>b i n s , ( i d x 0 ) , ( i d x 1 ) ) #d e f i n e c v Q u e r y H i s t V a l u e 3 D ( h i s t , i d x 0 , i d x 1 , i d x 2 ) c vGetReal3D ( ( h i s t )>b i n s , ( i d x 0 ) , ( i d x 1 ) , ( i d x 2 )
, J.B. Hayet OpenCV parte 2, Agosto 2007 30 / 64
Histogramas : ejemplo
Histogramas : comparacin o
Varias mtricas para histogramas : e
double c v C o m p a r e H i s t ( const Cv His t ogram h i s t 1 , const Cv His t ogram h i s t 2 , i n t method ) ; CV COMP CORREL CV COMP CHISQR CV COMP INTERSECT CV COMP BHATTACHARYYA
Transformada de Hough
Mtodo clsico de acumulacin para la deteccin de objetos e a o o parametrizados :
CvSeq c v H o u g h L i n e s 2 ( CvArr img , v o i d l i n e s t o r a g e , i n t method , double rho , double t h e t a , int thresh , double p a r 1 =0, double p a r 2 =0); CvSeq c v H o u g h C i r c l e s ( CvArr img , v o i d c i r c s t o r a g e , i n t method , double dp , double m i n d i s t , double p a r 1 =100 , double p a r 2 =100 , i n t m i n r a d i u s =0, i n t m a x r a d i u s =0);
, J.B. Hayet OpenCV parte 2, Agosto 2007 33 / 64
Deteccin de caras o
Un ejemplo que viene por default con OpenCV:
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Calibracin o
Por el momento, viene implementado un metodo clsico basado en a motivo 3D (Tsai) para estimar parametros intrinsecos y extrinsecos. Ademas tiene las herramientas necesarias para usarla muy simplemente en casos planos (deteccin de motivos de tipo ajedrez) o
Calibracin o
Funcin de calibracin : o o
v o i d c v C a l i b r a t e C a m e r a 2 ( const CvMat o b j e c t p o i n t s , const CvMat i m a g e p o i n t s , const CvMat p o i n t c o u n t s , CvSize image size , CvMat i n t r i n s i c m a t r i x , CvMat d i s t o r t i o n c o e f f s , CvMat r o t v e c t o r s=NULL , CvMat t r a n s v e c t o r s=NULL , i n t f l a g s =0 ) ;
Calibracin o
Correccin de la distorsin : o o
v o i d c v U n d i s t o r t 2 ( const CvArr s r c , CvArr d s t , const CvMat i n t r i n s i c m a t r i x , const CvMat d i s t o r t i o n c o e f f s ) ;
La estructura CvPOSITObject contiene los puntos 3D del objeto sobre el cual nos localizamos.
Geometr epipolar a
OpenCV y IPP
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
OpenCV y IPP
IPP
IPP (Integrated Performance Primitives) es una parte de las bibliotecas de computo desarrolladas por Intel para aprovechar de las caracter sticas mas avanzadas de sus procesadores (SIMD) Provee funciones soportando el multi-core, y muy bien optimizadas Soporte 64 bits
OpenCV y IPP
Funcionalidad SIMD (single instruction, multiple data) : registros de 64 o 128 bits. Un registro de 128 bits puede contener 4 int, 4 oat Intel: MMX y luego SSE (Streaming SIMD extension) En general, adaptado a toda clase de problemas vectorizables (muchos tratamientos locales independientes Cuidado al alineamiento de los datos
OpenCV y IPP
IPP: Scope
OpenCV y IPP
Ejemplo
I p p S t a t u s ippiRGBToGray <mod>( const Ipp <d a t a t y p e > pSrc , i n t s r c S t e p , Ipp <d a t a t y p e > pDst , i n t d s t S t e p , I p p i S i z e r o i S i z e ) ;
Valores de mod: 8u C3C1R 16 u C3C1R 16 s C3C1R 32 f C3C1R 8u AC4C1R 16 u AC4C1R 16 s AC4C1R 32 f AC4C1R
OpenCV y IPP
Tipo de funcionalidad Incremento de velocidad Piramides gausianas 3 Morfolog a 3 7 Convolucion linear 2 8 Conversion color 1 3 Deteccin de esquinas o 1.8
OpenCV y IPP
IPP y OpenCV
Llamadas a funciones estn integradas a una gran parte de a OpenCV Se decide en el tiempo de la ejecucin si se usa o no IPP o Para que se use, se necesita poner unas variables de entorno (de tal manera que las librer de IPP estn en el path) as e
OpenCV y IPP
IPP y OpenCV
Vericar que s se usa IPP:
const char p l u g i n i n f o= 0 ; c v G e t M o d u l e I n f o (0 , 0 ,& p l u g i n i n f o ) ; i p p i s u s e d= ( p l u g i n i n f o != 0 ) && s t r s t r ( p l u g i n i n f o , ipp )!=0;
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Python y OpenCV
Uso de Python ideal para prototipos, preparar demos Wrappers generados automticamente (SWIG) a Instalado automticamente (necesita SWIG) a Memoria manejada automticamente a
Python y OpenCV
No hay IplImage ac, solo CvMat a Iteratores
x = c v C r e a t e M a t (m, n , t y p e ) f o r row i n x : # row i s same a s t h a t r e t u r n e d by cvGetRow
o:
for col in x . colrange ( ) : # c o l i s same a s t h a t r e t u r n e d by c v G e t C o l
Python y OpenCV
Python y OpenCV
Tricks
Outline
1
OpenCV : funcionalidades de procesamiento de imgenes a OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Tricks
Uso de la memoria
La memoria esta manejada ` la C: cuidado de bien liberar los a espacios reservados por las funciones de tipo Create o Clone.
cvReleaseImage cvReleaseMat ...
Tricks
Checar en la documentacion si la funcion que se usa soporta un procesamiento en sitio (dst=src). Una mayor de funciones s lo a soportan.
Tricks
Alineacin de datos o
Para optimizar el tratamiento de los datos, es mejor alinear las lineas sobre 4 o 8 octetos (es automtico con funciones de tipo create) a