L2 Operazioni su buffer di memoria. Corso di Visione Artificiale A.A. 2016/2017
|
|
- Florindo Roberto
- 7 anni fa
- Visualizzazioni
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
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
DettagliManualistica 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
DettagliPrecisazione 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:
DettagliIndirizzi 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
DettagliQualsiasi 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
DettagliFormati 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,
DettagliCodifica 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
DettagliLa 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:
DettagliLaboratorio 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
DettagliLaboratorio 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
DettagliAppunti 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)
DettagliRappresentazione 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
DettagliEsercitazioni 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
DettagliTipi 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
DettagliIntroduzione 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
DettagliEsercitazione 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
DettagliFondamenti 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
DettagliEsame 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
DettagliLa 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:
DettagliSistemi 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
DettagliIntroduzione 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ì
DettagliStrutture 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
DettagliLaboratorio di Informatica
-- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci
DettagliCodifica 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
DettagliC: 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
DettagliINFORMATICA 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
DettagliIntroduzione 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
DettagliIl 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
DettagliMini-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
DettagliINFORMATICA 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
DettagliL2 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
DettagliFondamenti 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
DettagliProgrammazione 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
DettagliArray 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
DettagliLe 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
DettagliEsercizi 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
DettagliIntroduzione 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
DettagliUnità 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;
DettagliIntroduzione 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
DettagliCaratteri 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
DettagliInformatica 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
DettagliFondamenti 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
DettagliDIPARTIMENTO 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:
DettagliCostanti 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
DettagliIntroduzione 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
DettagliIngresso 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
DettagliCaratteri 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
DettagliGestione 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.
DettagliArray 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
DettagliAbbiamo 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
DettagliInformatica. 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
DettagliIstruzioni 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
DettagliCorso 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
DettagliI 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
Dettaglipuntatori 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:
DettagliI/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
DettagliTecnologie 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
DettagliQualsiasi 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.
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
DettagliUn 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
DettagliProgrammazione 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
DettagliDigitalizzazione 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
DettagliIntroduzione 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ì
DettagliLezione 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
DettagliTitolo 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
DettagliImage 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à
DettagliLa 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
DettagliCostruiamo 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
DettagliApprofondimento : 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
DettagliInformatica 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
Dettagli2) 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
DettagliLo 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
DettagliA.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
DettagliARRAY 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
DettagliLinguaggio 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
DettagliQuando è 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
DettagliIndirizzi 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
DettagliProgrammare 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
DettagliElementi 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
DettagliPuntatori. 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
DettagliPuntatori. 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
DettagliIntroduzione 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
DettagliDocumentazione 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
DettagliProcessamento 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
DettagliCODIFICA 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
DettagliProgramma 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
DettagliArray 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
DettagliIl 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;
DettagliLe 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
DettagliImpariamo 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
DettagliALGORITMI 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
DettagliPuntatori. 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