Una Introduzione a OpenCV
|
|
- Niccoletta Bianchini
- 8 anni fa
- Visualizzazioni
Transcript
1 Una a OpenCV Prof. Michele Scarpiniti Dipartimento di Ingegneria dell Informazione, Elettronica e Telecomunicazioni Sapienza Università di Roma michele.scarpiniti@uniroma1.it Roma, 27 Aprile 2012 M. Scarpiniti Una a OpenCV 1 / 53
2 1 2 Gestione delle matrici L Istogramma M. Scarpiniti Una a OpenCV 2 / 53
3 M. Scarpiniti Una a OpenCV 3 / 53
4 L obiettivo di queste slides è di introdurre ed illustrare il funzionamento di un utile e potente framework per la gestione dei dispositivi video, noto come OpenCV. OpenCV è una libreria open-source, scritta in C, per lo streaming video real-time ovvero la computer vision e gira sotto Windows, Linux e Mac OS X. Maggiori informazioni possono essere reperite al link da cui è anche possibile scaricare l intero codice in C++. M. Scarpiniti Una a OpenCV 4 / 53
5 : la computer vision La computer vision è una trasformazione dei dati provenienti da una fotocamera o videocamera verso una decisione o una loro nuova rappresentazione. Una tale trasformazione può essere effettuata per uno scopo qualsiasi. E anche possibile inserire nei dati, alcune informazioni riguardanti il contesto in cui si opera. M. Scarpiniti Una a OpenCV 5 / 53
6 : storia di OpenCV Il framework OpenCV nasce da una iniziativa dell Intel, mentre lavorava su miglioramenti delle loro CPU per applicazioni intensive, ad esempio ray-tracing in tempo reale e proiezione 3D. Uno degli addetti della Intel, aveva notato che in motle Università, tra cui il MIT Media Lab, avevano messo su un infrastruttura per la computer vision, il cui codice era passato da studente a studente. A tal proposito si decise di iniziare a progettare, a partire da questo codice, un framework per la computer vision per i processori Intel. Il primo avvio di tale progetto, con la collaborazione di un team Intel russo, fu nel La prima release ufficiale di OpenCV risalve, invece, al Nel 2011 è stata rilasciata la versione 2.2.0, che supporta anche Android. Ora è disponibile la release 3.0. M. Scarpiniti Una a OpenCV 6 / 53
7 OpenCV e le IPP Per velocizzare OpenCV è possibile utilizzare la libreria IPP (Intel Performance Primitives). Infatti OpenCV è basato, internamente, su tali librerie in quanto molti programmatori Intel ne fanno un forte uso. Le IPP sono delle librerie altamente ottimizzate, che agiscono direttamente a livello delle micro-istruzioni del processore, evitando qualsiasi perdita di tempo. Se le IPP sono installate, OpenCV le rileverà in automatico e le includerà al momento della compilazione, per ottimizzare al massimo il codice. Così se, ad esempio è richiesto il calcolo di una FFT, verrà utilizzata la funzione definita nelle IPP anzichè quella nativa di OpenCV. Per verificare se le IPP sono installate e determinare la release di OpenCV in uso, si può utilizzare il seguente codice char* libraries; char* modules; cvgetmoduleinfo(0, &libraries, &modules); printf( Libraries: %s/nmodules: %s/n, libraries, modules); M. Scarpiniti Una a OpenCV 7 / 53
8 Installare OpenCV Dopo aver scaricato e configurato (ad esempio attraverso l utilizzo del software CMake ( OpenCV è possibile aprire con Microsoft Visual C++ il relativo file di soluzione e compilare il tutto. Il risultato della compilazione è una serie di librerie, che dovranno essere incluse nel codice che verrà scritto. Le relative librerie dinamiche *.dll, andranno distribuite insieme al programma compilato. Nella cartella bin verranno compilati, inoltre, i numerosi esempi inclusi nel framework, attraverso i quali è possibile scrivere facilmente un elevato numero di applicazioni. Nella cartella docs è invece possibile consultare un abbondante documentazione in formato html oppure in formato pdf. E anche reperibile una documentazione Wiki, all indirizzo M. Scarpiniti Una a OpenCV 8 / 53
9 Struttura di OpenCV La struttura di OpenCV consta delle seguenti 6 parti: 1 CXCORE: contiene la definizione di tutte le strutture dati e le funzioni per gestire immagini e video. 2 CV: contiene tutte le funzioni per il processamento e l analisi delle immagini, la calibrazione e il tracking. 3 ML (Machine Learning): contiene molte funzioni sul Machine Learning e il pattern recognition, quali il clustering e la classificazione. 4 HighGUI: contiene le definizioni delle interfacce utenti (GUI). 5 CVCAM: contiene le interfacce per le webcam. 6 CVAUX: contiene algoritmi sperimentali per scopi diversi, ad esempio: segmentazione, sottrazione del background, modelli HMM, ecc. M. Scarpiniti Una a OpenCV 9 / 53
10 Struttura di OpenCV La struttura di OpenCV precedente può essere riassunta nella schematizzazione seguente. CV MLL HighGUI CXCORE CVCAM CVAUX M. Scarpiniti Una a OpenCV 10 / 53
11 Aprire una foto con OpenCV Per aprire una foto, è possibile utilizzare il seguente codice: #include highgui.h int main(int argc, char** argv) { IplImage* img = cvloadimage(argv[1]); cvnamedwindow( Esempio1, CV_WINDOW_AUTOSIZE); cvshowimage( Esempio1, img); cvwaitkey(0); cvreleaseimage(&img); cvdestroywindow( Esempio1 ); } Tutte le funzioni utilizzate in questo script, sono definite nel file di header highgui.h. M. Scarpiniti Una a OpenCV 11 / 53
12 Aprire una foto con OpenCV La funzione chiave del precedente script è IplImage* img = cvloadimage( nome ); che legge una stringa e carica in una matrice img, di tipo IplImage, tutti i pixel dell immagine. Tale funzione determina in automatico il tipo di file e alloca la memoria necessaria per contenere l immagine (numero di righe, di colonne e di colori). I formati supportati sono: BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS e TIFF. Tale funzione restituisce il puntatore alla struttura allocata, che contiene, oltre ai dati, anche le informazioni relative dell immagine. M. Scarpiniti Una a OpenCV 12 / 53
13 Aprire una foto con OpenCV Per visualizzare la foto è necessario creare una finestra in cui collocarla. A tal proposito, si utilizza la funzione cvnamedwindow( Esempio1, CV_WINDOW_AUTOSIZE); che crea la finestra e la nomina come Esempio1. Il secondo argomento (CV WINDOW AUTOSIZE) determina le dimensioni della figura. In questo caso, la finestra sarà adattata alle dimensioni dell immagini. Al contrario è possibile inserire il valore 0: in questo caso la finestra ha una dimensione standard e l immagine sarà scalata alle dimensioni della finestra. Per visualizzara l immagine img nella finestra Esempio1, si utilizza quindi, la funzione cvshowimage( Esempio1, img); Ovviamente la finestra Esempio1 deve essere create precedentemente la chiamata di cvshowimage(). M. Scarpiniti Una a OpenCV 13 / 53
14 Aprire una foto con OpenCV Per mettere in attesa il programma fino a che non si prema un tasto, si utilizza il comando cvwaitkey(0); L argomento 0 (o un numero negativo) significa che si aspetta la pressione di un tasto. Al contrario, se si inserisce un numero positivo, il programma apsetta, in millisecondi, il tempo indicato. Quando viene premuto il tasto, bisogna rilasciare la memoria occupata e porre il puntatore all immagine img a NULL. Queste operazioni sono eseguite dal comando cvreleaseimage(&img); Infine bisogna distruggere la finestra creata, e deallocare la memoria eventualmente occupata, utilizzando cvdestroywindow( Esempio1 ); M. Scarpiniti Una a OpenCV 14 / 53
15 Creare e salvare una foto con OpenCV Per creare uno spazio di memoria che contenga un immagine, è possibile utilizzare il comando seguente: IplImage* image = cvcreateimage(cvsize size, int depth, int channels ); Viene restituito un puntatore ad una strutture di tipo IplImage. Viene richiesto, al contrario, la dimensione dell immagine in size (come larghezza - altezza), in numero di bit (in depth) e il numero di canali per pixel in channels (1, 2, 3, o 4). Per salvare un immagine, si utilizza invece int cvsaveimage(char* filename, CvArr* image); che prende in ingresso il nome del file e il puntatore all immagine da salvare. Restituisce 1 se il salvataggio è andato a buon fine, 0 altrimenti. M. Scarpiniti Una a OpenCV 15 / 53
16 Aprire un video con OpenCV Per aprire un video, è possibile utilizzare il seguente codice: #include highgui.h int main(int argc, char** argv) { cvnamedwindow( Esempio2, CV_WINDOW_AUTOSIZE); CvCapture* capture = cvcreatefilecapture(argv[1]); IplImage* frame; while(1) { frame = cvqueryframe(capture); if (!frame) break; cvshowimage( Esempio2, frame); char c = cvwaitkey(33); if (c == 27) break; } cvreleasecapture(&capture); cvdestroywindow( Esempio2 ); } M. Scarpiniti Una a OpenCV 16 / 53
17 Aprire un video con OpenCV Anche qui si crea un finestra attraverso la funzione cvnamedwindow(). La funzione principale, quella che carica il file video, è la seguente CvCapture* capture = cvcreatefilecapture( nome_video ); Tale funzione carica un file video di tipo AVI e restituisce un puntatore capture a idonea struttura CvCapture. Tale puntatore è quindi passato alla funzione frame = cvqueryframe(capture); che restituisce il frame corrente del video in un immagine, descritta dal puntatore frame alla struttura IplImage. Tale frame è quindi visualizzato come immagine cvshowimage( Esempio2, frame); M. Scarpiniti Una a OpenCV 17 / 53
18 Aprire un video con OpenCV Ogni 33 ms (cvwaitkey(33)) viene letto un nuovo frame e visualizzato, ripetendo all infinito il ciclo while(1) char c = cvwait(33); Si esce dal ciclo quando viene letto il carattere con codice ASCII pari a 27, ovvero il tasto Esc. Viene quindi rilasciata la memoria attraverso il comando cvreleasecapture(&capture); e infine distrutta la finestra con cvdestroywindow( Esempio2 ); M. Scarpiniti Una a OpenCV 18 / 53
19 Leggere da WebCam con OpenCV Vediamo il codice per ottenere le immagini da una webcam. #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { cvnamedwindow( "Esempio3", CV_WINDOW_AUTOSIZE ); CvCapture* capture; if (argc==1) { capture = cvcreatecameracapture( 0 ); } else { capture = cvcreatefilecapture( argv[1] ); } assert( capture!= NULL ); IplImage* frame; M. Scarpiniti Una a OpenCV 19 / 53
20 Leggere da WebCam con OpenCV } while(1) { frame = cvqueryframe(capture); if(!frame ) break; cvshowimage( Esempio3, frame); char c = cvwaitkey(10); if( c == 27 ) break; } cvreleasecapture(&capture); cvdestroywindow( Esempio3 ); Dopo aver al solito creato una finestra con cvnamedwindow(), si crea un puntatore capture alla struttura dati CvCapture. Il video da webcam viene creato attraverso la funzione capture = cvcreatecameracapture( 0 ); M. Scarpiniti Una a OpenCV 20 / 53
21 Leggere da WebCam con OpenCV Se, al contrario, al programma precedente passo il nome di un file, viene letto il video con quel nome. Il resto del programma è identico al caso del filmato. Ogni 10 ms (cvwaitkey(10)) viene letto un frame dal puntatore capture, con frame = cvqueryframe(capture); e quindi mostrato nella finestra cvshowimage( "Esempio3", frame ); Infine, quando viene premuto il tasto Esc (codice ASCII 27), viene rilasciata la memoria (cvreleasecapture(&capture)) e distrutta la finestra (cvdestroywindow( Esempio3 )). M. Scarpiniti Una a OpenCV 21 / 53
22 Scrivere un file video con OpenCV Nella presente slide, si cercherà di descrivere un codice per la scrittura su file AVI. #include "cv.h" #include "highgui.h" #include <stdio.h> int main( int argc, char* argv[] ) { cvnamedwindow( Esempio4, CV_WINDOW_AUTOSIZE); cvnamedwindow( Log_Polar, CV_WINDOW_AUTOSIZE); CvCapture* capture = cvcreatefilecapture( argv[1] ); if (!capture){ return -1; } IplImage* bgr_frame = cvqueryframe(capture); double fps = cvgetcaptureproperty(capture, CV_CAP_PROP_FPS); CvSize size = cvsize( (int)cvgetcaptureproperty( capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvgetcaptureproperty( capture, CV_CAP_PROP_FRAME_HEIGHT) ); M. Scarpiniti Una a OpenCV 22 / 53
23 Scrivere un file video con OpenCV CvVideoWriter* writer = cvcreatevideowriter( argv[2], CV_FOURCC( D, X, V, 0 ), fps, size ); IplImage* logpolar_frame = cvcreateimage( size, IPL_DEPTH_8U, 3 ); while( (bgr_frame = cvqueryframe(capture))!= NULL ) { cvshowimage( Esempio4, bgr_frame ); cvlogpolar( bgr_frame, logpolar_frame, cvpoint2d32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS ); cvshowimage( Log_Polar, logpolar_frame ); M. Scarpiniti Una a OpenCV 23 / 53
24 Scrivere un file video con OpenCV cvwritetoavi( writer, logpolar_frame ); char c = cvwaitkey(10); if( c == 27 ) break; } cvreleasevideowriter( &writer ); cvreleaseimage( &bgr_frame ); cvreleaseimage( &logpolar_frame ); cvreleasecapture( &capture ); cvdestroywindow( Esempio4 ); cvdestroywindow( Log_Polar ); Il codice precedente carica e visualizza (nella finestra Esempio4 ) un video letto da file AVI. Contemporaneamente questo video verrà convertito in un formato logaritmico-polare, visualizzato nella finestra Log Polar e scritto su file, sempre di tipo AVI. M. Scarpiniti Una a OpenCV 24 / 53
25 Scrivere un file video con OpenCV La funzione chiave del programma precedente è la seguente CvVideoWriter* writer = cvcreatevideowriter( argv[2], CV_FOURCC( D, X, V, 0 ), fps, size ); che restituisce un puntatore writer alla struttura CvVideoWriter. Tale funzione accetta 4 parametri in ingresso: 1 il nome del file da scrivere (letto da linea di comando) argv[2]; 2 il codec video con cui sarà compresso lo stream CV FOURCC(); 3 il numero di frames per secondo fps; 4 la dimensionalità delle immagini (3 = a colori) size. M. Scarpiniti Una a OpenCV 25 / 53
26 Scrivere un file video con OpenCV: i codec OpenCV supporta i seguenti tipi di codec video: Codici Descrizione CV FOURCC( P, I, M, 1 ) CV FOURCC( M, J, P, G ) CV FOURCC( M, P, 4, 2 ) CV FOURCC( D, I, V, 3 ) CV FOURCC( D, I, V, X ) CV FOURCC( D, X, V, 0 ) CV FOURCC( X, V, I, D ) CV FOURCC( U, 2, 6, 3 ) CV FOURCC( I, 2, 6, 3 ) CV FOURCC( H, 2, 6, 4 ) CV FOURCC( F, L, V, 1 ) MPEG-1 codec motion-jpeg codec MPEG-4.2 codec MPEG-4.3 codec MPEG-4 codec (Dvix) DVix vers 5 codec Xvid codec H263 codec H263I codec H264 codec FLV1 codec M. Scarpiniti Una a OpenCV 26 / 53
27 Scrivere un file video con OpenCV La trasformazione logaritmico-polare dell immagine avviene attraverso il comando: cvlogpolar( bgr_frame, logpolar_frame, cvpoint2d32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS ); I primi due argomenti (bgr frame e logpolar frame) sono le immagini di origine e destinazione della trasformazione logaritmico-polare, descritta dalle seguenti trasformazioni: (x, y) (log r, θ), in cui r = (x x c ) 2 + (y y c ) 2 e θ = arctan y yc x x c e (x c, y c ) è il punto centrale dell immagine di partenza. Le coordinate di tale punto vengono passate alla precedente funzione come terzo parametro. Il quarto parametro è un fattore di scala che seleziona la regione di interesse nella visualizzazione del nuovo dominio. Infine il quinto parametro seleziona il metodi di interpolazione utilizzato. M. Scarpiniti Una a OpenCV 27 / 53
28 Scrivere un file video con OpenCV A questo punto il frame appena trasformato viene salvato nella struttura puntata da writer, attraverso cvwritetoavi( writer, logpolar_frame ); Dopo la scrittura di tutti i frame, viene distrutto il puntatore alla struttura video, tramite cvreleasevideowriter(&writer); Infine viene rilasciata la memoria e distrutte le finestre: cvreleaseimage( &bgr_frame ); cvreleaseimage( &logpolar_frame ); cvreleasecapture( &capture ); cvdestroywindow( Esempio4 ); cvdestroywindow( Log_Polar ); M. Scarpiniti Una a OpenCV 28 / 53
29 Gestione delle matrici L Istogramma M. Scarpiniti Una a OpenCV 29 / 53
30 I tipi elementari Gestione delle matrici L Istogramma OpenCV utilizza le matrici per memorizzare immagini e frame. All interno di tali strutture troviamo i tipi elementari di punto, dimensione, rettangolo, che vengono definiti come descritto nella seguente tabella. Struttura Contenuto Descrizione CvPoint int x, y Punto in un immagine CvPoint2D32f float x, y Punto in R 2 CvPoint3D32f flaot x, y, z Punto in R 3 CvSize int width, height Dimensioni di un immagine CvRect int x, y, width, height Porzione di un immagine CvScalar double val[4] Valore RGBA Così se si vuole disegnare un rettangolo (cvrectangle()) nell immagine puntata da myimg, utilizzero la chiamata cvrectangle( myimg, cvpoint(5,10), cvpoint(20,30), cvscalar(255,255,255) ); M. Scarpiniti Una a OpenCV 30 / 53
31 La struttura CvMat Gestione delle matrici L Istogramma La struttura fondamentale è la CvMat, che può essere definita come typedef struct CvMat { int type; int step; int* refcount; // per uso interno union { uchar* ptr; short* s; int* i; float* fl; double* db; } data; union { int rows; int height; }; union { int cols; int width; }; } CvMat; M. Scarpiniti Una a OpenCV 31 / 53
32 La struttura CvMat Gestione delle matrici L Istogramma Per creare un elemento di tipo CvMat è possibile eseguire il comando: cvmat* cvcreatemat(int rows, int cols, int type); E comunque possibile creare solamente l header o i dati di una struttura CvMat: cvcreatematheader(int rows, int cols, int type); cvcreatedata(int rows, int cols, int type); o clonare una matrice mat2 = cvclonemat(cvmat* mat1); Infine, per deallocare la memoria, si utilizza cvreleasemat(cvmat** mat); M. Scarpiniti Una a OpenCV 32 / 53
33 La struttura IplImage Gestione delle matrici L Istogramma La struttura dati fondamentale per gestire le immagini è la IplImage, definita come segue: typedef struct _IplImage { int nsize; int ID; int nchannels; int alphachannel; int depth; char colormodel[4]; char channelseq[4]; int dataorder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskroi; void* imageid; struct _IplTileInfo* tileinfo; int imagesize; char* imagedata; int widthstep; int BorderMode[4]; int BorderConst[4]; char* imagedataorigin; } IplImage; M. Scarpiniti Una a OpenCV 33 / 53
34 La struttura IplImage Gestione delle matrici L Istogramma Il valore del numero di bit, descritti dalla variabile depth, può assumere una delle seguenti alternative Macro Tipo di pixel IPL DEPTH 8U IPL DEPTH 8S IPL DEPTH 16S IPL DEPTH 32S IPL DEPTH 32F IPL DEPTH 64F intero unsigned a 8 bit intero signed a 8 bit intero signed a 16 bit intero signed a 32 bit float singola precisione a 32 bit float doppia precisione a 64 bit M. Scarpiniti Una a OpenCV 34 / 53
35 Operazioni sulle immagini Gestione delle matrici L Istogramma Sulle immagini, che sono rappresentate da matrici in OpenCV è possibile utilizzare un insieme di oltre cento funzioni predefinite, che permettono di sommare, sottrare, ruotare, determinare quantità statistiche, norme, ecc. L utilizzo di tali funzioni è abbastanza immediato. Per maggiori informazioni a riguardo, si rimanda alla guida di OpenCV, nonché a [1] e [2]. Vengono poi messe a disposizione alcune funzioni per disegnare figure più o meno elementari su una determinata finestra contenete un immagine. Ad esempio: linee, cerchi, ellissi, poligoni e testo. Anche queste funzioni sono di utilizzo abbastanza immediato. Nel seguito vedremo alcune funzioni molto utili nelle applicazioni. M. Scarpiniti Una a OpenCV 35 / 53
36 Operazioni sulle immagini: il resize Gestione delle matrici L Istogramma E possibile operare un operazione di resize su una determinata immagine, attraverso la funzione void cvresize( const CvArr* src, cvarr* dst, int interpolation = CV_INTER_LINEAR ); Nella precedente funzione src è l immagine originaria mentre dst è la nuova struttura di dimensioni opportune che conterrà l immagine con le nuove dimensioni. Poichè i pixel dell immagine originale dovranno essere interpolati, è possibile stabilire il metodo di interpolazione attraverso il terzo parametro interpolation, le cui opzioni sono descritte nella seguente tabella: Interpolazione Metodo Descrizione CV INTER NN Pixel più vicino Il nuovo pixel assume il valore del pixel più vici CV INTER LINEAR Bilineare Interpolazione bilineare CV INTER AREA Media su un area Il pixel è sostituito con la media dell area coper CV INTER CUBIC Bicubica Interpolazione bicubica M. Scarpiniti Una a OpenCV 36 / 53
37 Gestione delle matrici L Istogramma Operazioni sulle immagini: la convoluzione Essenziale per il filtraggio di immagini è l operazione di convoluzione bidimensionale, ottenuta attraverso la funzione void cvfilter2d( const CvArr* src, cvarr* dst, const CvMat* kernel, cvpoint anchor = cvpoint(-1,-1) ); Nella precedente funzione src è l immagine originaria mentre dst è la nuova struttura di dimensioni opportune che conterrà l immagine filtrata. kernal è una matrice contenente la risposta impulsiva del filtro. Il quarto parametro, anchor, è opzionale è indica il punto in cui centrare il filtro bidimensionale. L opzione di default è il centro della matrice kernel. M. Scarpiniti Una a OpenCV 37 / 53
38 Operazioni sulle immagini: la DFT E possibile valuare la DFT bidimensionale I (k x, k y ) = attraverso la funzione N x 1 N y 1 n x =0 n y =0 I (n x, n y ) exp void cvdft( const CvArr* src, cvarr* dst, int flags int nonzero_rows = 0 ); Gestione delle matrici L Istogramma ( 2πj ) ( k xn x exp 2πj ) k y n y, N x N y Nella precedente funzione src è l immagine originaria mentre dst è la nuova struttura di dimensioni opportune che conterrà l immagine in frequenza. flags è un parametro che seleziona la trasformata diretta (CV DXT FORWARD) e inversa (CV DXT INVERSE). L ultimo parametro, nonzero rows, serve per gestire lo zero padding. Utilizzando la precedente funzione è possibile implementare la convoluzione tra due immagine come prodotto delle relative DFT. M. Scarpiniti Una a OpenCV 38 / 53
39 L istogramma di un immagine Gestione delle matrici L Istogramma Poiché moltissimi algoritmi di image processing si basano sul concetto di istogramma, diviene essenziale saper lavorare con questi ultimi in OpenCV. La struttura che contiene l istogramma è definita come segue typedef struct CvHistogram { int type; CvArr* bins; float thresh[cv_max_dim][2]; // for uniform histograms float** thresh2; // for nonuniform histograms CvMatND mat; // embedded matrix for array hist } CvHistogram; Nella precedente struttura, type indica il tipo di istogramma, ovvero se mono-dimensionale o multi-dimensionale; bins contiene i bin dell istogramma. Le matrici thresh e thresh2 sono le soglie utilizzate per creare l istogramma, nel caso uniforme e non uniforme, rispettivamente. Infine, mat contiene i valori dell istogramma. M. Scarpiniti Una a OpenCV 39 / 53
40 L istogramma di un immagine Gestione delle matrici L Istogramma Dopo aver definita la struttura CvHistogram è possibile creare un istogramma attraverso CvHistogram* cvcreatehist( int dims, int* sizes, int type, float** ranges = NULL, int uniform = 1 ); Nella precedente funzione, dims indica il numero di dimensioni dell istogramma. sizes è un vettore di interi lungo quanto il numero di dimensioni, che indicano il numero di bin da assegnare a ciascuna dimensione. type indica il tipo di istogramma, ovvero se multidimensionale (CV HIST ARRAY) o di tipo sparso (CV HIST SPARSE). La variabile ranges denota i limiti dell istogramma, mentre la variabile booleana uniform indica se stiamo utilizzando un istogramma uniforme (valore positivo) oppure no (valore 0). M. Scarpiniti Una a OpenCV 40 / 53
41 Manipolare un istogramma Gestione delle matrici L Istogramma Esistono alcune utili funzioni che consentono di manipolare un istogramma, precedentemente creato. Precisamente cvnormalizehist( CvHistogram* hist, double factor ); che consente di normalizzare un istogramma di un fattore factor; cvthreshhist( CvHistogram* hist, double thresh ); che consente di applicare una soglia thresh; void cvcopyhist( const CvHistogram* src, CvHistogram** dst ); permette di copiare un istogramma contenuto in src nella nuova variabile dst. void cvgetminmaxhistvalue( const CvHistogram* hist, float* min_value, float* max_value, int* min_idx = NULL, int* max_idx = NULL ); consente di ottenere il valore minimo min value e il valore massimo max value di un istogramma hist. Le variabili min idx e max idx servono nel caso di istogrammi multi-dimensionali. M. Scarpiniti Una a OpenCV 41 / 53
42 Manipolare un istogramma Gestione delle matrici L Istogramma E ancora: void cvcalchist( IplImage** image, CvHistogram* hist, int accumulate = 0, const CvArr* mask = NULL ); consente di calcolare automaticamente l istogramma hist di una immagine image. Il parametro accumulate, se non zero, consente di mantenere in memoria l istogramma. mask consente di escludere alcuni pixel dal calcolo dell istogramma. void cvequalizehist( const CvArr* src, CvArr* dst ); consente di equalizzare un immagine miglirandone il contrasto, in modo tale che l immagine risultante dst abbia un istogramma più piatto dell immagine di partenza src. M. Scarpiniti Una a OpenCV 42 / 53
43 Manipolare un istogramma Gestione delle matrici L Istogramma Infine, è fondamentale la seguente funzione void cvcomparehist( const CvHistogram* hist1, const CvHistogram* hist2, int method ); che consente di paragonare due istogrammi. La variabile method descrive la particolare distanza utilizzata per paragonare i due istogrammi. I possibili valori sono riassunti nella seguente tabella Metodo Descrizione Espressione CV COMP CORREL Correlazione d corr (H 1, H 2 ) = i (H 1(i) m H1 )(H 2 (i) m H2 ) i (H 1(i) m H1 ) 2 (H 2 (i) m H2 ) 2 (H 1 (i) H 2 (i)) 2 H 1 (i)+h 2 (i) CV COMP CHISQR Chi-Quadro d chi (H 1, H 2 ) = i CV COMP INTERSECT Intersezione d int (H 1, H 2 ) = i min (H 1(i), H 2 (i)) CV COMP BHATTACHARYYA Battacharria d Bhatt (H 1, H 2 ) = 1 i H1 (i)h 2 (i) i H 1(i) i H 2(i) M. Scarpiniti Una a OpenCV 43 / 53
44 Back Projection Gestione delle matrici L Istogramma Con Back Projection si intende una tecnica con la quale si cerca di capire quanto alcuni pixel di un immagine o alcune aree di un immagine abbiano un istogramma simile ad un istogramma di riferimento. Il primo scopo è raggiunto attraverso la funzione void cvcalcbackproject( IplImage** image, CvArr* back_project, const CvHistogram* hist ); in cui image è l immagine da analizzare, back project contiene i valori dell istogramma dell immagine image e hist contiene l istogramma di riferimento. M. Scarpiniti Una a OpenCV 44 / 53
45 Back Projection Gestione delle matrici L Istogramma Nel secondo caso, siamo interessati ad una regione di pixel, che magari appartengono ad un oggetto noto. Infatti, applicando una finestra mobile ad una data immagine, è possibile determinare in quali posizione l istogramma della finestra è simile a quello di riferimento: in questi casi, infatti, è altamente possibile che la regione di analisi appartiene all oggetto cercato. Tale funzione è definita come segue: void cvcalcbackprojectpatch( IplImage** image, CvArr* dst, CvSize patch_size, CvHistogram* hist, int method, float factor ); in cui image è l immagine da analizzare, dst conterrà l istogramma valutato, patch size è l ampiezza della finestra mobile, hist è l istogramma di riferimento, method è il metodo con cui è valutata la distanza tra i due istogramma e, infine, factor è il fattore di normalizzazione. M. Scarpiniti Una a OpenCV 45 / 53
46 Template Matching Gestione delle matrici L Istogramma Una tecnica simile alla Back Projection, ma non basata sull istogramma, è il Template Matching. Essa è basata sul far scorrere una piccola immagine target su un altra immagine da analizzare, al fine di capire se il target sia contenuta o meno nell immagine data. La funzione che implementa tale operazione è void cvmatchtemplate( const CvArr* image, const CvArr* templ, CvArr* result, int method ); in cui image è l immagine da analizzare, templ è l immagine target, result è l immagine risultato e method rappresenta l algoritmo di calcolo dell immagine risultante, elencato nella seguente tabella (con relativa versione normalizzata). Metodo Descrizione Metodo Normalizzato CV TM SQDIFF Metodo della differenza quadratica CV TM SQDIFF NORMED CV TM CCORR Metodo della correlazione CV TM CCORR NORMED CV TM CCOEFF Metodo del coefficiente di correlazione CV TM CCOEFF NORMED M. Scarpiniti Una a OpenCV 46 / 53
47 La calibrazione Gestione delle matrici L Istogramma Un passo fondamentale affinchè il tutto funzioni correttamente, nel caso di utilizzo una web-camera, è la procedura di calibrazione. In pratica la calibrazione è effettuata identificando prima i bordi di una scacchiera che viene mostrata alla camera e quindi invocando una funzione per la calibrazione. M. Scarpiniti Una a OpenCV 47 / 53
48 La calibrazione Gestione delle matrici L Istogramma Le due funzioni precedenti sono, rispettivamente: int cvfindchessboardcorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count = NULL, int flags = CV_CALIB_CB_ADAPTIVE_THRESH ); void cvcalibrationcamera2( CvMat* object_points, CvMat* image_points, int* point_counts, CvSize image_size, CvMat* intrinsic_matrix, CvMat* distorsion_coeffs, CvMat* rotation_vectors = NULL, CvMat* translation_vectors = NULL, int flags = 0 ); Si rimanda a [1] per il significato di tutti i parametri. M. Scarpiniti Una a OpenCV 48 / 53
49 Il Machine Learning Gestione delle matrici L Istogramma OpenCV mette a disposizione una libreria per il Machine Learning, in cui sono contenuti molti algoritmi utili nelle applicazioni. Di seguito sono elencati gli algoritmi messi a disposizione: Mahalanobis; K-means; Bayes Classifier; Binary decision trees; Boosting; Random trees; Haar Classifier; Face detector; Expectation Maximization (EM); K-nearest neighbors; Multilayer Perceptron (MLP); Support Vector Machines (SVM). Di seguito esamineremo in dettaglio un paio di algoritmi significativi. M. Scarpiniti Una a OpenCV 49 / 53
50 Il K-means Gestione delle matrici L Istogramma L algoritmo K-means si applica attraverso la seguente funzione void cvkmeans2( const CvArr* samples, int cluster_count, CvArr* labels, CvTermCriteria termcrit ); in cui samples è un array multidimensionale su cui applicare il K-means, cluster count è il numero di cluster, labels è un array contenete l indice del cluster relativo e termcrit è il criterio di stop utilizzato. M. Scarpiniti Una a OpenCV 50 / 53
51 Il Face Detector Gestione delle matrici L Istogramma OpenCV mette a disposizione un potente algoritmo di face detection, basato su un classificatore di Haar e proposto da Viola & Jones. Tutte le caratteristiche sono state precedentemente apprese e salvatein un file distribuito con OpenCV. La funzione per invocare il face detector è la seguente CvSeq* cvhaardetectobjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemstorage* storage, double scale_factor = 1.1, int min_neighbors = 3, int flags = 0, CvSize min_size = cvsize(0,0) ); in cui image è l immagine a scala di grigi i cui cercare le facce, cascade contiene le caratteristiche del classificatore, storage è un buffur utilizzato dall algoritmo, scale factor è un fattore di scale che indica quanto elevato è il salto tra una scala e la successiva, min neighbors indica il numero di detection contemporanee affinché venga stabilito che effettivamente ci sia una faccia. flags permette di eliminare alcune ragioni dell immagine dalla ricerca e, infine, min size indica la dimensione più piccola in cui effettuare la ricerca. M. Scarpiniti Una a OpenCV 51 / 53
52 Il Face Detector Gestione delle matrici L Istogramma A questo punto è possibile disegnare un rettangolo o un cerchio intorno alla faccia o alle faccie individuate dalla funzione cvhaardetectobjects(), per avere una rappresentazione grafica intuitiva del numero effettivo di faccie individuate. M. Scarpiniti Una a OpenCV 52 / 53
53 Bibliografia Gestione delle matrici L Istogramma G. Bradski, A. Kaehler. Learnin OpenCV: Computer Vision with the OpenCV Library. O Reilly, R. Laganière. OpenCV 2 Computer Vision - Application Programming Cookbook. PACKT Publishing,2011. H. Schildt. La Guida completa C. McGraw Hill, P. Viola and M. J. Jones. Rapid Object Detecting Using a Boosted cascade of Simple Features. IEEE CVPR, P. Viola and M. J. Jones. Robust Real-time Face Detection. International journal of Computer Vision, Vol. 57, pp , M. Scarpiniti Una a OpenCV 53 / 53
Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14. Cantarella Danilo. OpenCV Android
Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14 Cantarella Danilo Introduzione OpenCV (Open Source Computer Vision Library) è una libreria disponibile per
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliDefinire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
DettagliGUIDA ALLA PROGRAMMAZIONE GRAFICA IN C
GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliGUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL
GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliRICONOSCIMENTO DI TARGHE AUTOMOBILISTICHE
PROGETTO DEL CORSO DI VISIONE E PERCEZIONE PARTE 2 RICONOSCIMENTO DI TARGHE AUTOMOBILISTICHE Scopo del progetto Il progetto ha come obiettivo quello di riconoscere il testo di una targa automobilistica
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliCosa è un foglio elettronico
Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti
DettagliIstruzioni per l uso della Guida. Icone utilizzate in questa Guida. Istruzioni per l uso della Guida. Software di backup LaCie Guida per l utente
Istruzioni per l uso della Guida Istruzioni per l uso della Guida Sulla barra degli strumenti: Pagina precedente / Pagina successiva Passa alla pagina Indice / Passa alla pagina Precauzioni Stampa Ottimizzate
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliBreve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
DettagliEsercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)
Sommario Esercitazione 05 Angelo Di Iorio (Paolo Marinelli)! Packet Filtering ICMP! Descrizione esercitazione! Applicazioni utili: " Firewall: wipfw - netfilter " Packet sniffer: wireshark!"#!$#!%&'$(%)*+,')#$-!"#!$#!%&'$(%)*+,')#$-
DettagliGuida Software GestioneSpiaggia.it
Caratteristiche Guida Software GestioneSpiaggia.it 1. Gestione prenotazioni articoli (ombrellone, cabina, ecc ) ed attrezzature (sdraio, lettino ecc ) 2. Visualizzazione grafica degli affitti sia giornaliera
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliIl web server Apache Lezione n. 3. Introduzione
Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliEsercizio 1. Esercizio 1
Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli scontrini emessi. In particolare, tramite una struttura dati di nome scontrino, il registratore di cassa tiene
DettagliInformatica grafica e Multimedialità. 4 Immagini grafiche
Immagini raster e vettoriali Le immagini grafiche si distinguono in due classi differenti: immagini raster e immagini vettoriali. Le immagini raster, dette anche pittoriche o pixel-oriented, dividono l
DettagliView Mobile User s Guide
View Mobile User s Guide 1 - Descrizione del software Il software è stato realizzato per essere utilizzato su telefoni cellulari con supporto per le applicazioni Java. Tramite il software è possibile collegarsi
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
DettagliINFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
DettagliFondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliWindows. Cos è I componenti principali Le funzioni essenziali. www.vincenzocalabro.it 1
Windows Cos è I componenti principali Le funzioni essenziali www.vincenzocalabro.it 1 Cos è Windows è un sistema operativo, ovvero un insieme di software che consente di eseguire le operazioni basilari
DettagliINDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...
MANCA COPERTINA INDICE IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO... 12 I marchi registrati sono proprietà dei rispettivi detentori. Bologna
DettagliFrerEnergy: PROGRAMMA PER LA SUPERVISIONE DEI CONSUMI DI ENERGIA ELETTRICA
FrerEnergy: PROGRAMMA PER LA SUPERVISIONE DEI CONSUMI DI ENERGIA ELETTRICA Descrizione Generale E un programma di supervisione in grado di comunicare, visualizzare, memorizzare e stampare i consumi dell
DettagliRegistratori di Cassa
modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice
DettagliFogli Elettronici: MS Excel
Fogli Elettronici: MS Excel Informatica - A.A. 2010/2011 - Excel 7.0 Foglio Elettronico Un foglio elettronico (o spreadsheet) è un software applicativo nato dall esigenza di: organizzare insiemi di dati
DettagliPULSANTI E PAGINE Sommario PULSANTI E PAGINE...1
Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6
DettagliIl software ideale per la gestione delle prenotazioni GUIDA UTENTE
Il software ideale per la gestione delle prenotazioni GUIDA UTENTE Presentazione... 2 Installazione... 3 Prima esecuzione... 6 Registrazione del programma... 8 Inserimento Immobile... 9 Inserimento proprietario...
DettagliINTRODUZIONE A EXCEL ESERCITAZIONE I
1 INTRODUZIONE A EXCEL ESERCITAZIONE I Corso di Idrologia e Infrastrutture Idrauliche Prof. Roberto Guercio Cos è Excel 2 Foglio di calcolo o foglio elettronico è formato da: righe e colonne visualizzate
DettagliPowerPoint 2007 Le funzioni
PowerPoint 2007 Le funzioni Introduzione Cos è un ipertesto L' ipertesto è un testo organizzato in link, o collegamenti ad altre parti del testo e/o altri testi, in modo da consentire all utente di scegliere
DettagliPlate Locator Riconoscimento Automatico di Targhe
Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
Dettagli. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi
Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliMANUALE EDICOLA 04.05
MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra
DettagliUniversità di L Aquila Facoltà di Biotecnologie Agro-alimentari
RIFERIMENTI Università di L Aquila Facoltà di Biotecnologie Agro-alimentari Esame di Laboratorio di informatica e statistica Parte 3 (versione 1.0) Il riferimento permette di identificare univocamente
DettagliDati importati/esportati
Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database
Dettagli11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0
11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliWG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15
WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione
Dettagli(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)
(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliAppunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005
Appunti sugli Elaboratori di Testo D. Gubiani Università degli Studi G.D Annunzio di Chieti-Pescara 19 Luglio 2005 1 Cos è un elaboratore di testo? 2 3 Cos è un elaboratore di testo? Cos è un elaboratore
DettagliEsercizi di programmazione in C
Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal
DettagliGian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliSistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate
MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento
DettagliChe cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo
Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato
DettagliObiettivi d esame PHP Developer Fundamentals on MySQL Environment
Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliCapitolo 3 Guida operativa del programma TQ Sistema
Capitolo 3 Guida operativa del programma TQ Sistema Panoramica delle funzionalità Questa guida contiene le informazioni necessarie per utilizzare il pacchetto TQ Sistema in modo veloce ed efficiente, mediante
DettagliCostruzione del layout in gino cms
Costruzione del layout in gino cms Autore: Marco Guidotti - marco.guidotti(at)otto.to.it Versione: 1.0 Data: 2013-06-17 Layout Nell area amministrativa di gino l applicazione Layout permette di gestire
DettagliLibrerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video
Video Librerie digitali Gestione di video Ogni filmato è composto da più parti Video Audio Gestito come visto in precedenza Trascrizione del testo, identificazione di informazioni di interesse Testo Utile
DettagliIl menu File contiene tutti i comandi relativi alle seguenti operazioni:
1 - FILE FIGURA 1.1 Il menu File contiene tutti i comandi relativi alle seguenti operazioni: - apertura e salvataggio di disegni nuovi ed esistenti; - spedizione di disegni tramite email; - collegamento
DettagliSPECIFICHE E LIMITI DI EXCEL
SPECIFICHE E LIMITI DI EXCEL Un "FOGLIO DI CALCOLO" è un oggetto di un programma per computer costituito da un insieme di celle, organizzate in righe e colonne, atte a memorizzare dati ed effettuare operazioni
DettagliOSSIF WEB. Manuale query builder
OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI
DettagliGestione ed analisi di base dati nell epidemiologia. delle malattie infettive
Università degli Studi di Torino - Facoltà di Medicina Veterinaria Laboratorio di epidemiologia delle malattie infettive Scuola Specializzazione in Sanità Animale, Allevamento e Produzioni Zootecniche
DettagliFPf per Windows 3.1. Guida all uso
FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete
DettagliManuale Utente Albo Pretorio GA
Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate
DettagliGHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.
*+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliEsempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante
Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda
DettagliI Codici Documento consentono di classificare le informazioni e di organizzare in modo logico l archiviazione dei file.
Archivia Modulo per l acquisizione, l archiviazione e la consultazione di informazioni Il modulo Archivia permette l acquisizione, l archiviazione e la consultazione di informazioni (siano esse un immagine,
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliEsercizi di JavaScript
Esercizi di JavaScript JavaScript JavaScript é un linguaggio di programmazione interpretato e leggero, creato dalla Netscape. E' presente a patire da Netscape 2 in tutti i browser ed é dunque il linguaggio
DettagliA tal fine il presente documento si compone di tre distinte sezioni:
Guida on-line all adempimento Questa guida vuole essere un supporto per le pubbliche amministrazioni, nella compilazione e nella successiva pubblicazione dei dati riguardanti i dirigenti sui siti istituzionali
DettagliSTRUMENTI DI PRESENTAZIONE MODULO 6
STRUMENTI DI PRESENTAZIONE MODULO 6 2012 A COSA SERVE POWER POINT? IL PROGRAMMA NASCE PER LA CREAZIONE DI PRESENTAZIONI BASATE SU DIAPOSITIVE (O LUCIDI) O MEGLIO PER PRESENTARE INFORMAZIONI IN MODO EFFICACE
DettagliDirezione Centrale per le Politiche dell Immigrazione e dell Asilo
Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Sistema inoltro telematico domande di nulla osta, ricongiungimento e conversioni Manuale utente Versione 2 Data creazione 02/11/2007 12.14.00
DettagliIL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE
IL SISTEMA OPERATIVO Insieme di programmi che opera al di sopra della macchina fisica, mascherandone le caratteristiche e fornendo agli utenti funzionalità di alto livello. PROGRAMMI UTENTE INTERPRETE
DettagliIntroduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma
Introduzione Macro macro istruzione Sequenza di comandi memorizzati programma Scopo: eseguire più volte una sequenza di operazioni che a mano sarebbero noiose e ripetitive, se non proibitive Le macro Le
DettagliEsame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie
Facoltà di Scienze Motorie CHE COS È UN FOGLIO ELETTRONICO Una tabella che contiene parole e numeri che possono essere elaborati applicando formule matematiche e funzioni statistiche. Esame di Informatica
DettagliGUIDA UTENTE BILLIARDS COUNTER (Vers. 1.2.0)
------------------------------------------------- GUIDA UTENTE BILLIARDS COUNTER (Vers. 1.2.0) GUIDA UTENTE BILLIARDS COUNTER (Vers. 1.2.0)... 1 Installazione Billiards Counter... 2 Primo avvio e configurazione
DettagliPORTALE CLIENTI Manuale utente
PORTALE CLIENTI Manuale utente Sommario 1. Accesso al portale 2. Home Page e login 3. Area riservata 4. Pagina dettaglio procedura 5. Pagina dettaglio programma 6. Installazione dei programmi Sistema operativo
DettagliSoftware standard Alpi Label Ver. 2.2.0.0
Pag. 1 di 16 Manuale utente Software standard Alpi Label Ver. 2.2.0.0 Pag. 2 di 16 1 SOMMARIO Sommario 1 Sommario... 2 2 Specifiche Tecniche... 3 3 Maschera Principale... 4 4 Funzioni menù... 7 Pag. 3
DettagliTale attività non è descritta in questa dispensa
Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa
DettagliScuola Digitale. Manuale utente. Copyright 2014, Axios Italia
Scuola Digitale Manuale utente Copyright 2014, Axios Italia 1 SOMMARIO SOMMARIO... 2 Accesso al pannello di controllo di Scuola Digitale... 3 Amministrazione trasparente... 4 Premessa... 4 Codice HTML
Dettagli2.2.2.1 Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.
Uso del computer e gestione dei file 57 2.2.2.1 Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento. All interno
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliOTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files
DettagliEXCEL FUNZIONI PRINCIPALI
EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
Dettagli[FINANZAECOMUNICAZIONE / VADEMECUM]
2011 Finanza e Comunicazione [FINANZAECOMUNICAZIONE / VADEMECUM] [PANNELLO DI CONTROLLO SCRIVERE UN ARTICOLO PUBBLICARE MEDIA CREARE UNA GALLERIA FOTOGRAFICA MODIFICHE SUCCESSIVE CAMBIARE PASSWORD SALVARE,
DettagliFunzioni matlab per la gestione dei file. Informatica B Prof. Morzenti
Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla
DettagliISTRUZIONI PER L INSTALLAZIONE DEL PROGRAMMA PER L INVIO AUTOMATICO DELLE FATTURE VIA E-MAIL
ISTRUZIONI PER L INSTALLAZIONE DEL PROGRAMMA PER L INVIO AUTOMATICO DELLE FATTURE VIA E-MAIL Sommario Configurazione computer... 2 Sistemi operativi a 32 bit... 2 Windows XP... 2 Windows Vista... 2 Windows
DettagliExcel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci
Excel avanzato I nomi marco.falda@unipd.it Gli indirizzi e le formule possono essere sostituiti da nomi documentazione astrazione Si creano tramite Inserisci Nome Definisci Vengono raccolti nell area riferimento
DettagliManuale per l utilizzo dell applicazione Client per il controllo remoto di apparecchiature da laboratorio
Manuale per l utilizzo dell applicazione Client per il controllo remoto di apparecchiature da laboratorio Dopo il collegamento alla Home Page del laboratorio di teledidattica è possibile scaricare il file
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliBreve guida introduttiva ad Orario Grafico LITE 1.27
Introduzione Breve guida introduttiva ad Orario Grafico LITE.7 Orario Grafico è un potente software sviluppato da Giorgio Stagni in grado di produrre sia grafici orari tematici (per tipo di materiale,
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
Dettagli