Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Opencv2 Diappo PDF
Opencv2 Diappo PDF
Agosto 2007
Outline
1
OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
OpenCV contiene un gran numero de funcionalidades entre las mas cl asicas de procesamiento de im agenes : ltrados, derivaci on, operadores morfol ogicos. . . Recorrer la documentaci on para vericar si una funci on dada esta 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 im agenes 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
Im agenes integrales
Pueden revelarse muy u tiles para c alculos muy r apidos de sumas 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 ) ;
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 ) ;
Formas soportadas
CV SHAPE RECT CV SHAPE CROSS CV SHAPE ELLIPSE CV SHAPE CUSTOM
Operadores b asicos :
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);
Puntos de inter es
Todos los m etodos implementados son basados en la matriz de autocorrelaci on :
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
M etodo de Lucas-Kanade para el seguimiento de puntos de inter es (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 ; / non u 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 : comparaci on
Varias m etricas para histogramas :
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
M etodo cl asico de acumulaci on para la detecci on de objetos 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
Detecci on de caras
Un ejemplo que viene por default con OpenCV:
Outline
1
OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Calibraci on
Por el momento, viene implementado un metodo cl asico basado en motivo 3D (Tsai) para estimar parametros intrinsecos y extrinsecos. Ademas tiene las herramientas necesarias para usarla muy simplemente en casos planos (detecci on de motivos de tipo ajedrez)
Calibraci on
Funci on de calibraci on :
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 ) ;
Calibraci on
Correcci on de la distorsi on :
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 a epipolar
OpenCV y IPP
Outline
1
OpenCV : funcionalidades de procesamiento de im agenes 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 Detecci on de esquinas 1.8
OpenCV y IPP
IPP y OpenCV
Llamadas a funciones est an integradas a una gran parte de OpenCV Se decide en el tiempo de la ejecuci on si se usa o no IPP Para que se use, se necesita poner unas variables de entorno (de tal manera que las librer as de IPP est en en el path)
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 im agenes 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 autom aticamente (SWIG) Instalado autom aticamente (necesita SWIG) Memoria manejada autom aticamente
Python y OpenCV
No hay IplImage ac a, solo CvMat 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 im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks
Tricks
Uso de la memoria
La memoria esta manejada ` a la C: cuidado de bien liberar los 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 a de funciones s lo soportan.
Tricks
Alineaci on de datos
Para optimizar el tratamiento de los datos, es mejor alinear las lineas sobre 4 o 8 octetos (es autom atico con funciones de tipo create)