L2 Operazioni su buffer di memoria. Corso di Visione Artificiale A.A. 2016/2017

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "L2 Operazioni su buffer di memoria. Corso di Visione Artificiale A.A. 2016/2017"

Transcript

1 L2 Operazioni su buffer di memoria Corso di Visione Artificiale A.A. 2016/2017

2 Argomenti Puntatori in C Primitive base di OpenCV AA 2016/2017 Visione Artificiale 2

3 Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria La memoria e organizzata in byte, quindi un puntatore contiene sempre l indirizzo di un singolo particolare byte Gli indirizzi di memoria sono a 32bit su architetture a 32bit, 64bit su quelle a 64bit AA 2016/2017 Visione Artificiale 3

4 Puntatori in C In genere i puntatori hanno un tipo. Ad esempio: char* puntatore ad un byte con segno unsigned char* puntatore ad un byte senza segno float* puntatore al primo byte di un gruppo (in genere 4) di byte che rappresenta un dato floating point AA 2016/2017 Visione Artificiale 4

5 Puntatori in C I puntatori possono puntare anche a codice oggetto, sono solo a dati (void)(*f)(int) f in questo cas e un puntatore ad una funzione senza parametri di ritorno e con un unico paramentro di input intero, passato per valore f(10); esegue la funzione puntata da f AA 2016/2017 Visione Artificiale 5

6 Puntatori in C Accesso e incremento dei puntatori: float data[2] = {3.14, 1.44}; float * f = data; equivalente a f=&data[0]; NON equivalente a &data *f == 3.14 == data[0] *(f+1) ==? In questo caso f viene incrementato di 4 indirizzi byte, cioe di un float *(f+1) == 1.44 == data[1] AA 2016/2017 Visione Artificiale 6

7 Puntatori in C Accesso e incremento dei puntatori: char * c = (char *)f; posso farlo, se so cosa sto facendo... *c == primo byte di 3.14 nella sua rappresentazione floating point *(c+1) ==? In questo caso f viene incrementato di 1 indirizzo byte, cioe di un char *(c+1) == secondo byte di 3.14 nella sua rappresentazione in floating point... AA 2016/2017 Visione Artificiale 7

8 Immagini - I Un immagine è una matrice di pixel. Il pixel codifica l informazione in formato numerico (processo di campionamento). I tipi di pixel differiscono per: numero di canali: es. mono(1), RGB(3), RGBA(4). quantità di bit per ogni canale. AA 2016/2017 Visione Artificiale 8

9 Immagini - II Tipicamente, per memorizzare i pixel di un immagine si usa un vettore lineare di pixel. Rappresentazione logica Rappresentazione fisica colonna 3 riga larghezza 6 indice nel vettore: riga*larghezza + colonna AA 2016/2017 Visione Artificiale 9

10 Accedere al buffer in OpenCV uchar * cv::mat::data Tramite il campo data e possibile accedere al buffer di memoria che contiene fisicamente i pixel dell immagine Contiene il puntatore al primo byte dell immagine, indipendentemente dal tipo di pixel AA 2016/2017 Visione Artificiale 10

11 Accedere al buffer in OpenCV uchar * cv::mat::ptr(int i) Tramite il metodo ptr() e possibile accedere alla locazione di memoria che contiene la i- esima riga dell immgine Restituisce il puntatore al primo byte della i- esima riga, indipendentemente dal tipo di pixel AA 2016/2017 Visione Artificiale 11

12 Righe, colonne, canali, byte M.rows M.cols M.channels() M.type M.elemSize M.elemSize1 numero di righe numero di colonne numero di canali tipo di immgine secondo OpenCV dimensione in byte di ogni pixel dimensione in byte di ogni canale ES. RGB8 M.channels() == 3 M.elemSize() == 3 M.elemSize1() == 1 M.type() == CV_8UC3 3 canali, un byte per canale

13 Tipi in OpenCV A Mapping of Type to Numbers in OpenCV C1 C2 C3 C4 CV_8U CV_8S CV_16U CV_16S CV_32S CV_32F CV_64F

14 Accedere al buffer in OpenCV T * cv::mat::ptr<t>(int i) Tramite il metodo template ptr() e possibile accedere alla locazione di memoria che contiene la i-esima riga dell immgine qualunque sia il formato del pixel Restituisce il puntatore al primo pixel della i- esima riga AA 2016/2017 Visione Artificiale 14

15 Esempio #1 Immagine come array semplice di unsigned char for(int i =0;i<M.rows*M.cols*M.elemSize();++i) M.data[i] = i; M.rows numero di righe M.cols numero di colonne M.elemSize dimensione in byte di ogni elemento AA 2016/2017 Visione Artificiale 15

16 Esempio #2 Immagine come array di pixel a 3 canali di 1 byte ciascuno, RGB ad esempio for(int i =0;i<M.rows*M.cols;i+=M.elemSize()) { M.data[i] = i; //B M.data[i+M.elemSize1()] = i + 1; //G M.data[i+M.elemSize1()+M.elemSize1()] = i + 2; //R } M.rows numero di righe M.cols numero di colonne M.elemSize dimensione in byte di ogni pixel (3 nel caso RGB) M.elemSize1 dimensione in byte di ogni canale (1 nel caso RGB) AA 2016/2017 Visione Artificiale 16

17 Esempio #4 Accesso riga/colonna per immagine a 3 canali di 1 byte ciascuno, RGB ad esempio for(int v =0;v<M.rows;++v) { for(int u=0;u<m.cols;++u) { M.data[ (u + v*m.cols)*3] = u; //B M.data[ (u + v*m.cols)*3 + 1] = u+1; //G M.data[ (u + v*m.cols)*3 + 2] = u+2; //R } } M.rows M.cols numero di righe numero di colonne AA 2016/2017 Visione Artificiale 17

18 Esempio #5 Accesso riga/colonna per immagine a multi-canale di 1 byte ciascuno for(int v =0;v<M.rows;++v) { for(int u=0;u<m.cols;++u) { for(int k=0;k<m.channels();++k) M.data[ (u + v*m.cols)*m.channels() + k] = u + k; } } M.rows M.cols numero di righe numero di colonne M.channels() numero di canali AA 2016/2017 Visione Artificiale 18

19 Esercizio #1 Utilizzando OpenCvPlayer caricate l imagine di Lena e stampate a console il valore dei canali R G B tramite cout: - prima in sequenza - poi andando a capo dopo ogni riga dell immagine Nota: in OpenCV l ordine dei canali e BGR AA 2016/2017 Visione Artificiale 19

20 Esercizio #2 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un downsample 2X: - una nuova immagine di dimensioni w/2 e h/2 ottenuta prendendo una riga si ed una no, una colonna si ed una no nell immagine originale AA 2016/2017 Visione Artificiale 20

21 Esercizio #3 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un downsample 2X delle sole righe: - una nuova immagine di dimensioni w e h/2 ottenuta prendendo una riga si ed una no dell immagine originale AA 2016/2017 Visione Artificiale 21

22 Esercizio #4 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un downsample 2X delle sole colonne: - una nuova immagine di dimensioni w/2 e h ottenuta prendendo una colonna si ed una no dell immagine originale AA 2016/2017 Visione Artificiale 22

23 Esercizio #5 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un flip orizzontale: - creare una nuova immagine di dimensioni w e h ottenuta invertendo l ordine delle colonne dell immagine originale AA 2016/2017 Visione Artificiale 23

24 Esercizio #6 Utilizzando OpenCvPlayer caricate l imagine di Lena e fare un flip verticale: - creare una nuova immagine di dimensioni w e h ottenuta invertendo l ordine delle righe dell immagine originale AA 2016/2017 Visione Artificiale 24

25 Esercizio #7 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un Crop semplice al centro: - Si tratta di estrarre una sottoparte dell'immagine e metterla in un altra della dimensione giusta corrispondente - Ad esempio, estraiamo una patch dell'immagine corrente grande 1/4 dell'originale, centrata nel centro dell'immagine AA 2016/2017 Visione Artificiale 25

26 Esercizio #7bis Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un Crop generico: - Generalizziamo il caso precedente, con ampiezza e posizione del cropping configurabili - Definiamo una regione di cropping con 4 valori: - riga e colonna dell'estremo in alto a sinistra (top left) - larghezza - Altezza - Si tratta sempre di estrarre una sottoparte dell'immagine e metterla in un altra della dimensione giusta corrispondente AA 2016/2017 Visione Artificiale 26

27 Esercizio #7bis Proviamo un crop random: posizione top-left casuale, dimensione casuale nel range 0- width/2 e 0-height/2 Esempio: int u_tl = rand()%width+1, v_tl=rand()%height+1; width_crop = (rand()%width)/2+1; height_crop = (rand()%height)/2+1; Occhio a non uscire dall immagine, mettere i controlli necessari... AA 2016/2017 Visione Artificiale 27

28 Esercizio #8 Utilizzando OpenCvPlayer caricate l imagine di Lena e fate un Padding generico: - Si tratta di circondare l'immagine orginale con una cornice SIMMETRICA e CONTIGUA di pixel aggiuntivi. - Puo' essere visto come il complementare del cropping, dove riduco la dimensione dell'immagine. - Ad esempio, partendo da un'immagine di 640x480 e volendo effettuare un padding di 6 pixel, avremo alla fine un'immagine di 646x L'immagine originale si trovara' al centro di quella nuova, circondata da una cornice di 3 pixel //su ogni lato. AA 2016/2017 Visione Artificiale 28

29 Esercizio #9 Utilizzando OpenCvPlayer caricate l imagine di Lena e scambiate l ordine dei canali di colore: - Ad esempio R->G G->B B->R - Dovreste ottenere un immagine con colori sbagliati AA 2016/2017 Visione Artificiale 29

30 Esercizio #10 Utilizzando OpenCvPlayer caricate l imagine di Lena e separate i canali di colore in tre differenti immagini: - Ogni immagine sara della stessa dimensione di quella originale, ma conterra un solo colore - Provate ad usare immagini di destinazione sia RGB che Mono AA 2016/2017 Visione Artificiale 30

31 Esercizio #11 Utilizzando OpenCvPlayer caricate le immagini nella cartella bayer fornita, contenente immagini a colori codificate secondo il pattern di Bayer GBRG AA 2016/2017 Visione Artificiale 31

32 Esercizio #11 Provate a fare una demosaicatura di tipo DOWNSAMPLE 2X: - l immagine di uscita sara di dimensioni w/2 h/2 a toni di grigio (CV_8U) - Ogni 4 pixel GBRG dell immagine originale estraete un tono di grigio pari alla media dei canali G da inserire nell immagine di output - I pattern non si sovrappongono, vi spostate quindi di 4 in 4 nell immagine originale AA 2016/2017 Visione Artificiale 32

33 Esercizio #12 Provate a fare una demosaicatura di tipo LUMINANCE: - l immagine di uscita sara di dimensioni w h a toni di grigio (CV_8U) - Ogni 4 pixel GBRG dell immagine originale estraete un tono di grigio nel seguente modo: - R* G* B* G = media dei canali G del pattern preso in considerazione - I pattern si sovrappongono, quindi vi spostate pixel per pixel nell immagine originale (sliding window) - ATTENZIONE: in questo modo i pattern cambiano... AA 2016/2017 Visione Artificiale 33

34 Esercizio #13 Provate a fare una demosaicatura di tipo SIMPLE: - l immagine di uscita sara di dimensioni w h a colori (CV_8UC3) - Ogni 4 pixel GBRG dell immagine originale estraete 3 canali di colore nel sequente modo: - R = canale rosso del pattern - G = media dei canali G del pattern - B = canale blu del pattern - I pattern si sovrappongono, quindi vi spostate pixel per pixel nell immagine originale (sliding window) - ATTENZIONE: in questo modo i pattern cambiano... AA 2016/2017 Visione Artificiale 34

Manualistica 01 Variabili e costanti

Manualistica 01 Variabili e costanti Programmazione e Laboratorio di Programmazione Manualistica 01 Variabili e costanti Programmazione e Laboratorio di Programmazione: Variabili e costanti 1 Definizione di una variabile Sintassi: tipo_variabile

Dettagli

Manualistica 1 Variabili e costanti

Manualistica 1 Variabili e costanti Programmazione e Laboratorio di Programmazione Manualistica 1 Variabili e costanti Programmazione e Laboratorio di Programmazione: Variabili e costanti 1 Definizione di una variabile Sintassi: tipo_variabile

Dettagli

Precisazione sui tipi in ANSi C

Precisazione sui tipi in ANSi C Precisazione sui tipi in ANSi C Tipi primitivi del C Un tipo è costituito da un insieme di valori ed un insieme di operazioni su questi valori. Classificazione dei tipi primitivi del C scalari aritmetici:

Dettagli

Indirizzi e valori. Qualcuno afferma di avere bisogno di pane. Due possibili risposte: Fornisco l indirizzo di un panificio. Fornisco delle pagnotte

Indirizzi e valori. Qualcuno afferma di avere bisogno di pane. Due possibili risposte: Fornisco l indirizzo di un panificio. Fornisco delle pagnotte Puntatori Indirizzi e valori Qualcuno afferma di avere bisogno di pane Due possibili risposte: Fornisco delle pagnotte Fornisco l indirizzo di un panificio Passo un valore Passo un riferimento Indirizzi

Dettagli

Qualsiasi programma in C++ segue lo schema: Variabili

Qualsiasi programma in C++ segue lo schema: Variabili Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Formati e compressioni

Formati e compressioni Sistemi Multimediali Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Formati e compressioni Anche se in memoria le immagini vengono quasi sempre memorizzate come una sequenza di colori RGB,

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Informatica B Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore L informazione nel calcolatore q Il calcolatore

Dettagli

La codifica delle immagini

La codifica delle immagini Lettere e numeri non costituiscono le uniche informazioni utilizzate dagli elaboratori ma si stanno diffondendo sempre di più applicazioni che utilizzano ed elaborano anche altri tipi di informazione:

Dettagli

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly Scrivere il codice ARM che implementi le specifiche richieste e quindi verificarne il comportamento usando il simulatore

Dettagli

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly Scrivere il codice ARM che implementi le specifiche richieste e quindi verificarne il comportamento usando il simulatore

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Rappresentazione di immagini

Rappresentazione di immagini Rappresentazione di immagini Il modo più immediato per rappresentare un'immagine è quello di considerarla suddivisa in un reticolo di punti detti pixel. Maggiore è il numero di pixel per unità di lunghezza

Dettagli

Esercitazioni di Informatica (CIV)

Esercitazioni di Informatica (CIV) Esercitazioni di Informatica (CIV) e Temi d esame Andrea Romanoni e-mail: andrea.romanoni@polimi.it website: http://home.deib.polimi.it/romanoni/ 10 dicembre 2015 Compilare il codice La sequenza di azioni

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Input/Output e Interi Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2018/2019 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 19 TUTOR Angelo Feraudo Email: angelo.feraudo2@unibo.it

Dettagli

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 Lezione 4 ARCHITETTURA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono

Dettagli

La codifica delle immagini

La codifica delle immagini Lettere e numeri non costituiscono le uniche informazioni utilizzate dagli elaboratori ma si stanno diffondendo sempre di più applicazioni che utilizzano ed elaborano anche altri tipi di informazione:

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni Università degli Studi di Messina Policlinico G. Martino - Sistemi di Elaborazione delle Informazioni A.A. 26/27 Università degli Studi di Messina Policlinico G. Martino - Sistemi di Elaborazione delle

Dettagli

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 1 Elementi Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso C Mercoledì 19 Giovedì

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica -- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci

Dettagli

Codifica in memoria. Laboratorio di Calcolo A 53

Codifica in memoria. Laboratorio di Calcolo A 53 Codifica in memoria Le variabili di un linguaggio evoluto sono porzioni della memoria che contengono i dati dell utente, scritti in una qualche rappresentazione binaria. I formati possibili sono: Interi

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C DESCRIZIONE GENERALE In questa esperienza il C verrà utilizzato per elaborare immagini

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione al C Lez. 4. Allocazione Dinamica della memoria Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria

Dettagli

Il linguaggio C. Puntatori e Array

Il linguaggio C. Puntatori e Array Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si

Dettagli

Mini-dispensa sui puntatori in C

Mini-dispensa sui puntatori in C Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile

Dettagli

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti Puntatori I puntatori sono delle variabili che contengono l

Dettagli

L2 Elaborazione di immagini in C/C++

L2 Elaborazione di immagini in C/C++ L2 Elaborazione di immagini in C/C++ Corso di Visione Artificiale Ing. Luca Mazzei AA 2009/2010 Visione Artificiale 2 Formato immagini Utilizziamo il formato PGM PPM P4 = PBM P5 = PGM P6 = PPM P5 320 240

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare

Dettagli

Array e puntatori in C

Array e puntatori in C Array e puntatori in C Diapositive adattate dalle omonime create dalla Dottoressa di Ricerca Giovanna Melideo per il corso di Laboratorio di Algoritmi e Strutture Dati 10/05/2005 LP2-04/05 - Appunti di

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I Novembre 06 Esercizio Valutazione espressioni con puntatori Valutare e definire il tipo delle seguenti espressioni. Inserire le parentesi per sotolineare l ordine della valutazione

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

Introduzione al C++ Parte 2

Introduzione al C++ Parte 2 Introduzione al C++ Parte 2 Sommario Le differenze fra C e C++ il qualificatore const i namespace gli stream Evitare modifiche accidentali Il qualificatore const indica che la variabile non può più essere

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Informatica ed Elementi di Informatica Medica

Informatica ed Elementi di Informatica Medica Titolo presentazione sottotitolo Informatica ed Elementi di Informatica Medica A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Info Logistiche Contatti: gianenrico.conti@mail.polimi.it

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Input/Output, Variabili, Tipi e Stringhe Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2017/2018 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 26 TUTOR Angelo Feraudo

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 20 Aprile 2016 Come rappresento un pixel? Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B:

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

Dettagli

Ingresso ed Uscita in C. Informatica 1 / 15

Ingresso ed Uscita in C. Informatica 1 / 15 Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Array n-dimensionali e tipi di dati strutturati

Array n-dimensionali e tipi di dati strutturati Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 8 Aprile 2016 Logistica Laboratori Lunedì (3.30pm 6pm) EG7 (No portatili e basta) L26.1.3

Dettagli

Abbiamo visto come la codifica di testi sia (relativamente semplice) Con le immagini la questione è più complessa

Abbiamo visto come la codifica di testi sia (relativamente semplice) Con le immagini la questione è più complessa Codifica delle immagini Abbiamo visto come la codifica di testi sia (relativamente semplice) Un testo è una sequenza di simboli Ogni simbolo è codificato con un numero Ed ecco che il testo è trasformato

Dettagli

Informatica. Comunicazione & DAMS A.A. 2015/16. Dr.ssa Valeria Fionda

Informatica. Comunicazione & DAMS A.A. 2015/16. Dr.ssa Valeria Fionda Informatica Comunicazione & DAMS A.A. 2015/16 Dr.ssa Valeria Fionda Informatica - Com&DAMS A.A. 2015/2016 Sistemi di numerazione I sistemi di numerazione servono a rappresentare i numeri grazie a un insieme

Dettagli

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 9 Lezione 9 1 Il linguaggio C Istruzioni di input/output Arrays La funzione printf() La funzione printf() consente di mostrare sullo standard output (normalmente

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

puntatori Lab. Calc. AA 2006/07 1

puntatori Lab. Calc. AA 2006/07 1 puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:

Dettagli

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una

Dettagli

Tecnologie Multimediali a.a. 2016/2017. Docente: DOTT.SSA VALERIA FIONDA

Tecnologie Multimediali a.a. 2016/2017. Docente: DOTT.SSA VALERIA FIONDA Tecnologie Multimediali a.a. 2016/2017 Docente: DOTT.SSA VALERIA FIONDA Rappresentazione digitale delle immagini Sistema binario Il computer "capisce" solo 2 stati: passacorrente (1) non passa corrente

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

&v restituisce l indirizzo della zona di memoria allocata per v.

&v restituisce l indirizzo della zona di memoria allocata per v. Puntatori Sia v una variabile di tipo T. Al momento della creazione della variabile v il sistema alloca memoria sufficiente a contenere i valori appartenenti al tipo T. &v restituisce l indirizzo della

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Digitalizzazione delle immagini

Digitalizzazione delle immagini Digitalizzazione delle immagini Informazione multimediale Lettere e numeri non costituiscono le uniche informazioni utilizzate dai computer ma sempre più applicazioni utilizzano ed elaborano anche altri

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano.venturini@isti.cnr.it URL del corso http://www.cli.di.unipi.it/doku/doku.php/informatica/all-b/start Lezioni - Lunedì 16-18 Aula M - Martedì

Dettagli

Lezione 12: Allocazione Dinamica della Memoria

Lezione 12: Allocazione Dinamica della Memoria Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott.

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott. Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Dettagli

Image Elaboration. Image Processing

Image Elaboration. Image Processing Image Elaboration Immagine digitale Un immagine digitale può essere rappresentata come una matrice con un prefissato numero di righe e colonne che ne determinano la risoluzione (campionamento). L'unità

Dettagli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore Introduzione q Il calcolatore usa internamente

Dettagli

Costruiamo un'immagine o qualcosa di simile.

Costruiamo un'immagine o qualcosa di simile. Costruiamo un'immagine...... o qualcosa di simile. Se consideriamo la C che si trova in fondo a destra, ci accorgiamo che un'immagine non è altro che una tabella di valori. Nel caso in cui si consideri

Dettagli

Approfondimento : printf

Approfondimento : printf Approfondimento : printf La funzione printf : stampa su standard input (video) dati complessi ha un formato articolato, molto potente ma spesso poco chiaro ha un numero di opzioni utili e poco conosciute

Dettagli

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010 Informatica 7 appunti dalle lezioni del 20 e 22/10/2010 Tipi di dato Nelle celle di memoria di un calcolatore ci sono solo 0 e 1, fisicamente realizzati tramite due diversi livelli di tensione elettrica

Dettagli

2) La O di ROM sta per a) Only b) Operation c) Object d) nessuna delle precedenti

2) La O di ROM sta per a) Only b) Operation c) Object d) nessuna delle precedenti Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 23/07/2015/ Foglio delle domande/ VERSIONE 1 Matricola Cognome Nome 1) L architettura della maggior parte dei calcolatori di oggi è stata concepita

Dettagli

Lo stile 1 corrisponde all'arte moderna neoplastica. Per esempio: Lo stile 2 corrisponde a paesaggi impressionistici. Per esempio:

Lo stile 1 corrisponde all'arte moderna neoplastica. Per esempio: Lo stile 2 corrisponde a paesaggi impressionistici. Per esempio: 6-13 July 2013 Brisbane, Australia Italian 1.0 L'esame di storia dell'arte si sta avvicinando, ma ultimamente a scuola hai passato molto più tempo sull'informatica che sull'arte! Non ti resta che scrivere

Dettagli

A.A. 2018/2019. AlgoBuild: Introduzione agli Array FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. AlgoBuild: Introduzione agli Array FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 AlgoBuild: Introduzione agli Array Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Caratteristiche Principali Un array è una variabile in cui è possibile memorizzare

Dettagli

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Array Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Il C supporta questo uso attraverso il tipo di dati array (o vettore): int

Dettagli

Indirizzi e puntatori

Indirizzi e puntatori Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Richiami sulle variabili Una variabile è costituita da una o più locazioni di memoria (a

Dettagli

Programmare con MATLAB c Parte 5 Cicli: for e while

Programmare con MATLAB c Parte 5 Cicli: for e while Programmare con MATLAB c Parte 5 Cicli: for e while Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 La notazione due punti 2 Ciclo: for 3 Ciclo con controllo: while

Dettagli

Elementi di grafica raster

Elementi di grafica raster Elementi di grafica raster Segnali mono-bidimensionali Segnale: variazione di una grandezza fisica rispetto al tempo e/o allo spazio cioè Valore della grandezza ad ogni istante di tempo (spazio) Un segnale

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Introduzione al C. Lez. 1 Elementi

Introduzione al C. Lez. 1 Elementi Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing

Dettagli

Documentazione Metodi v0.6

Documentazione Metodi v0.6 Documentazione Metodi v0.6 1/5 Metodi di Base: graidle( [string title,[float mass,[float mnvs ] ] ] ) Descrizione: Metodo Costruttore; Parametri: string title : Titolo del Grafico (opzionale); float mass

Dettagli

Processamento delle immagini

Processamento delle immagini Processamento delle immagini Docente: Domenico Daniele Bloisi Novembre 2017 Esercizio 1 Utilizzare il linguaggio di programmazione Python e la libreria OpenCV per visualizzare sullo schermo il logo ASL

Dettagli

CODIFICA IMMAGINI IN BIANCO E NERO

CODIFICA IMMAGINI IN BIANCO E NERO Rappresentazione delle immagini Anche le immagini possono essere codificate mediante una sequenza di 0 e 1., questa operazione si chiama digitalizzazione. La prima cosa da fare è dividere l immagine in

Dettagli

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Il concetto di FILE FILE: sequenza di byte conosciuta nel computer

Dettagli

Array n-dimensionali e tipi di dati strutturati

Array n-dimensionali e tipi di dati strutturati Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 5 Novembre 2013 Info di servizio Demo 1mo compitino In LM5 @ 12pm - venerdì 8 Nov In

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Impariamo a programmare in. Lezione 7

Impariamo a programmare in. Lezione 7 Impariamo a programmare in Ancora Stringhe Sequenze di escape Proviamo a stampare una stringa che contiene delle virgolette Hello, World! // NON FUNZIONA! System.out.println("Hello, "World"!"); Il compilatore

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

Puntatori. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Puntatori. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Puntatori Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Puntatori I processori organizzano la memoria in N celle di dimensione fissata

Dettagli