Sei sulla pagina 1di 64

Introduccion al uso de OpenCV (2)

Dr. J.B. Hayet


EN MATEMATICAS CENTRO DE INVESTIGACION

Agosto 2007

, J.B. Hayet OpenCV parte 2, Agosto 2007 1 / 64

Outline
1

OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks

, J.B. Hayet OpenCV parte 2, Agosto 2007 2 / 64

Procesamiento de im agenes con OpenCV

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.

, J.B. Hayet OpenCV parte 2, Agosto 2007 3 / 64

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

Contour Processing Computational Geometry Planar Subdivisions

, J.B. Hayet OpenCV parte 2, Agosto 2007 5 / 64

Motion Analysis and Object Tracking

Accumulation of Background Statistics Motion Templates Object Tracking Optical Flow Estimators

, J.B. Hayet OpenCV parte 2, Agosto 2007 6 / 64

Pattern Recognition

Object Detection

, J.B. Hayet OpenCV parte 2, Agosto 2007 7 / 64

Camera Calibration and 3D Reconstruction

Camera Calibration Pose Estimation Epipolar Geometry

, J.B. Hayet OpenCV parte 2, Agosto 2007 8 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Outline
1

OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks

, J.B. Hayet OpenCV parte 2, Agosto 2007 9 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Conversi on entre espacios de color

v o i d c v C v t C o l o r ( const CvArr s r c , CvArr d s t , i n t code ) ;

Con el code de la forma siguiente CV ESPA12ESPA2, donde ESPA1 y ESPA2 pueden ser entre : BGR, RGB, XYZ, YCrCb, HSV

, J.B. Hayet OpenCV parte 2, Agosto 2007 10 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 11 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ) ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 12 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Filtros : smoothing

Una funci on de smoothing mas especializada que cvFilter2D :


v o i d cvSmooth ( const CvArr s r c , CvArr d s t , i n t s m o o t h t y p e=CV GAUSSIAN , i n t param1 =3, i n t param2 =0, double param3 =0, double param4=0 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 13 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Filtros : smoothing

Tipos de ltraje con cvSmooth:


# # # # # CV BLUR NO SCALE CV BLUR ( s i m p l e b l u r ) CV GAUSSIAN ( g a u s s i a n b l u r ) CV MEDIAN ( median b l u r ) CV BILATERAL

, J.B. Hayet OpenCV parte 2, Agosto 2007 14 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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);

, J.B. Hayet OpenCV parte 2, Agosto 2007 15 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Derivadas y bordos

, J.B. Hayet OpenCV parte 2, Agosto 2007 16 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Derivadas y bordos

, J.B. Hayet OpenCV parte 2, Agosto 2007 17 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Laplaciano

, J.B. Hayet OpenCV parte 2, Agosto 2007 18 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 19 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Pir amides gausianas

Muy u tiles para razonamiento multi-escala : Down-sampling y ltrado gausiano :


v o i d cvPyrDown ( const CvArr s r c , CvArr d s t , i n t f i l t e r =CV GAUSSIAN 5x5 ) ;

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 20 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Pir amides gausianas

, J.B. Hayet OpenCV parte 2, Agosto 2007 21 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Morfolog a matem atica


Flexibilidad en la denici on del elemento estructurante
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 ) ;

Elemento no necesariamente sim etrico (anchor)

, J.B. Hayet OpenCV parte 2, Agosto 2007 22 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Morfolog a matem atica

Formas soportadas
CV SHAPE RECT CV SHAPE CROSS CV SHAPE ELLIPSE CV SHAPE CUSTOM

En caso de CUSTOM, se usan los valores del arreglo values

, J.B. Hayet OpenCV parte 2, Agosto 2007 23 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Morfolog a matem atica

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);

, J.B. Hayet OpenCV parte 2, Agosto 2007 24 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Morfolog a matem atica

, J.B. Hayet OpenCV parte 2, Agosto 2007 25 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 26 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 27 / 64

OpenCV : funcionalidades de procesamiento de im agenes

LK tracking

, J.B. Hayet OpenCV parte 2, Agosto 2007 28 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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 ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 29 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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

OpenCV : funcionalidades de procesamiento de im agenes

Histogramas : ejemplo

, J.B. Hayet OpenCV parte 2, Agosto 2007 31 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 32 / 64

OpenCV : funcionalidades de procesamiento de im agenes

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

OpenCV : funcionalidades de procesamiento de im agenes

Transformada de Hough : lineas rectas

, J.B. Hayet OpenCV parte 2, Agosto 2007 34 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Transformada de Hough : c rculos

, J.B. Hayet OpenCV parte 2, Agosto 2007 35 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Detecci on de caras
Un ejemplo que viene por default con OpenCV:

, J.B. Hayet OpenCV parte 2, Agosto 2007 36 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Ada-boost con Haar wavelets

, J.B. Hayet OpenCV parte 2, Agosto 2007 37 / 64

OpenCV : funcionalidades de procesamiento de im agenes

Ada-boost con Haar wavelets


La idea es hacer detecci on de objetos de una clase dada usando una cascada de clasicadores d ebiles (t picamente, por una de las Haar wavelets)
CvSeq c v H a a r D e t e c t O b j e c t s ( const CvArr image , CvHaarClassifierCascade c CvMemStorage s t o r a g e , double s c a l e f a c t o r =1.1 , i n t m i n n e i g h b o r s =3, i n t f l a g s =0, C v S i z e m i n s i z e=c v S i z e ( 0 , 0 )

, J.B. Hayet OpenCV parte 2, Agosto 2007 38 / 64

OpenCV : funcionalidades de geometr a

Outline
1

OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks

, J.B. Hayet OpenCV parte 2, Agosto 2007 39 / 64

OpenCV : funcionalidades de geometr a

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)

, J.B. Hayet OpenCV parte 2, Agosto 2007 40 / 64

OpenCV : funcionalidades de geometr a

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 41 / 64

OpenCV : funcionalidades de geometr a

Calibraci on

, J.B. Hayet OpenCV parte 2, Agosto 2007 42 / 64

OpenCV : funcionalidades de geometr a

Calibraci on: distorsi on radial y tangencial

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 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 43 / 64

OpenCV : funcionalidades de geometr a

Calibraci on : distorsi on radial y tangencial

, J.B. Hayet OpenCV parte 2, Agosto 2007 44 / 64

OpenCV : funcionalidades de geometr a

Calculo de transformaciones geom etricas


v o i d cvFindHomography ( const CvMat s r c p o i n t s , const CvMat d s t p o i n t s , CvMat homography ) ; i n t c v F i ndF undam en t a lM a t ( const CvMat p o i n t s 1 , const CvMat p o i n t s 2 , CvMat f u n d a m e n t a l m a t r i x , int method=CV FM RANSAC , double param1 =1. , double param2 =0.99 , CvMat s t a t u s=NULL ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 45 / 64

OpenCV : funcionalidades de geometr a

Estimaci on de la pose (c amara calibrada)

v o i d cvPOSIT ( CvPOSITObject p o s i t o b j e c t , CvPoint2D32f i m a g e p o i n t s , double f o c a l l e n g t h , CvTermCriteria c r i t e r i a , CvMatr32f r o t a t i o n m a t r i x , CvVect32f t r a n s l a t i o n v e c t o r ) ;

La estructura CvPOSITObject contiene los puntos 3D del objeto sobre el cual nos localizamos.

, J.B. Hayet OpenCV parte 2, Agosto 2007 46 / 64

OpenCV : funcionalidades de geometr a

Geometr a epipolar

Lineas epipolares correspondientes de unos puntos 2D


void cvComputeCorrespondEpilines ( const CvMat p o i n t s , i n t which image , const CvMat f u n d a m e n t a l m a t r i x , CvMat c o r r e s p o n d e n t l i n e s ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 47 / 64

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 48 / 64

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 49 / 64

OpenCV y IPP

IPP : d onde esta la magia ?

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 50 / 64

OpenCV y IPP

IPP: Scope

Video encoding/decoding Procesamiento de imagenes Vectores y matrices Procesamiento del hablar

Audio decoding/encoding Vision JPEG/JPEG2000 Rendido

Compresi on de datos Procesamiento se nal Criptograa ... de

, J.B. Hayet OpenCV parte 2, Agosto 2007 51 / 64

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 52 / 64

OpenCV y IPP

Cuanto se mejoran las performancias

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 53 / 64

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)

, J.B. Hayet OpenCV parte 2, Agosto 2007 54 / 64

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;

Apagar el uso de IPP y ponerlo otra vez:


cvUseOptimized ( 0 ) ; . . . cvUseOptimized ( 1 ) ;

, J.B. Hayet OpenCV parte 2, Agosto 2007 55 / 64

Usando scripts : los wrappers Python

Outline
1

OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks

, J.B. Hayet OpenCV parte 2, Agosto 2007 56 / 64

Usando scripts : los wrappers Python

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 57 / 64

Usando scripts : los wrappers Python

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

, J.B. Hayet OpenCV parte 2, Agosto 2007 58 / 64

Usando scripts : los wrappers Python

Python y OpenCV

Aceso por el operador [], notaciones a la Matlab


col = x [: , i ] s l i c e = x [0:10 , 0:10] elem1 = x [ i , j ] elem2 = x [ i ] [ j ] x [: , :] = 1 x [0:10 , i ] = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]

, J.B. Hayet OpenCV parte 2, Agosto 2007 59 / 64

Usando scripts : los wrappers Python

Python y OpenCV

Informaci on muy u til en cuanto a la interfase Python : http://opencvlibrary.sourceforge.net/PythonInterface

, J.B. Hayet OpenCV parte 2, Agosto 2007 60 / 64

Tricks

Outline
1

OpenCV : funcionalidades de procesamiento de im agenes OpenCV : funcionalidades de geometr a OpenCV y IPP Usando scripts : los wrappers Python Tricks

, J.B. Hayet OpenCV parte 2, Agosto 2007 61 / 64

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 ...

, J.B. Hayet OpenCV parte 2, Agosto 2007 62 / 64

Tricks

Soporte de funciones en sitio

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.

, J.B. Hayet OpenCV parte 2, Agosto 2007 63 / 64

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)

, J.B. Hayet OpenCV parte 2, Agosto 2007 64 / 64

Potrebbero piacerti anche