La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Elaborazione delle Immagini Introduzione Elaborazione di Immagini Luigi Cinque

Presentazioni simili


Presentazione sul tema: "Elaborazione delle Immagini Introduzione Elaborazione di Immagini Luigi Cinque"— Transcript della presentazione:

1 Elaborazione delle Immagini Introduzione Elaborazione di Immagini Luigi Cinque cinque@di.uniroma1.it

2 Elaborazione delle Immagini Introduzione 2 Libri di testo  Possono essere consultati:  Rafael C. Gonzalez, Richard E. Woods: Digital Image Processing, 2nd, Prentice Hall, 2004.  Robert M. Haralick, Linda G. Shapiro: Computer amd Robot Vision, Vol I, Addiso Wesley, 1994.

3 Elaborazione delle Immagini Introduzione 3 Le immagini  Una immagine è una rappresentazione spaziale di un oggetto o di una scena bidimensionale o tridimensionale  Nel campo dell’elaborazione di immagini per immagine generalmente si intende la rappresentazione della scena stessa dopo il processo di digitalizzazione  Dal punto di vista di un programmatore una immagine è una matrice bidimensionale di valori omogenei

4 Elaborazione delle Immagini Introduzione 4 Sistema di acquisizione  La telecamera (in generale un sensore elettronico)  Memoria immagine (frame grabber)  Monitor  Calcolatore  Database  Attuatore Componenti di un sistema di acquisizione

5 Elaborazione delle Immagini Introduzione 5 A/D Memoria Immagine D/A Monitor Sistema di acquisizione Database Immagini risultati numerici comandi di controllo A/D: convertitore analogico/digitale D/A: convertitore digitale/analogico comandi di controllo

6 Elaborazione delle Immagini Introduzione 6 Il processo di acquisizione Scena Telecamera 2030222840272827 Segnale elettrico di una singola linea di scansione Segnale campionato Matrice risultante Segnale elettrico analogico

7 Elaborazione delle Immagini Introduzione 7 Il processo di digitalizzazione  Il segnale acquisito da una telecamera è tipicamente un segnale continuo che descrive l’intensità del segnale luminoso secondo una scansione per linee  La digitalizzazione trasforma un segnale continuo discretizzandolo sia nella dimensione spaziale, che in quella dei livelli di grigio (convertitore A/D)  Il segnale convertito viene memorizzato in una memoria immagine che funge da interfaccia tra l’elaboratore, il monitor e l’elemento di acquisizione  Tra la memoria immagine ed il monitor vi è un convertitore D/A

8 Elaborazione delle Immagini Introduzione 8 Risoluzione spaziale  La risoluzione spaziale è la più piccola dimensione dell’oggetto osservato che può essere discriminata  La cella di risoluzione è la più piccola area elementare associata ad un valore in una immagine digitale  Generalmente la cella elementare è un quadrato ma si possono anche avere celle rettangolari o esagonali

9 Elaborazione delle Immagini Introduzione 9 Risoluzione spaziale  Pixel (picture element) è descritto dalla posizione spaziale di una cella elementare (riga, colonna) e dal valore ad essa associato  Dimensioni comuni per immagini digitali sono 256x256, 1024x1024, 640x480

10 Elaborazione delle Immagini Introduzione 10 Risoluzione spaziale

11 Elaborazione delle Immagini Introduzione 11 Risoluzione nella scala di grigi  Una immagine binaria è una immagine in cui ogni pixel può assumere solo due valori: (0,1), (vero, falso), (oggetto, sfondo)  una immagine binaria utilizza solo un bit per pixel  Una immagine a toni di grigio è una immagine in cui ogni pixel assume valori in un intervallo più ampio  valori tipici sono [0, 63], [0, 255], [0, 1023], rispettivamente 6, 8, 10 bit per pixel  Un osservatore umano percepisce una scala continua di grigi osservando immagini memorizzate con 8 bit

12 Elaborazione delle Immagini Introduzione 12 Risoluzione nella scala dei grigi

13 Elaborazione delle Immagini Introduzione 13 Immagini a colori  Le immagini a colori nella loro forma più semplice sono costituiti da pixel che memorizzano 3 valori distinti (uno per la componente rossa, uno per la componente verde, il terzo per il blu)  Normalmente per ogni colore si utilizza un byte per cui sono rappresentabili 256x256x256 colori diversi (circa 16 milioni)

14 Elaborazione delle Immagini Introduzione 14 Immagini a colori  Spesso per limitare l’occupazione di memoria si utilizzano un numero limitato di colori, riuscendo quindi a memorizzare l’immagine con un minore numero di pixel (8, 4, 1)  In questo caso però l’immagine deve memorizzare anche la LUT dei colori

15 Elaborazione delle Immagini Introduzione 15 LUT dei colori valore pixel LUT R1G1B1 R2G2B2 R3G3B3 R4G4B4 R5G5B5 R6G6B6 R7G6B7 (R5, G5, B5) Valore effettivamente visualizzato

16 Elaborazione delle Immagini Introduzione 16 Immagini a colori Immagine originale Immagine a 256 colori Immagine a 16 colori Immagine a 8 colori

17 Elaborazione delle Immagini Introduzione 17 Immagini a colori Immagine originale Immagine dei rossi Immagine dei verdi Immagine dei blu

18 Elaborazione delle Immagini Introduzione 18 Modelli di colore  I modelli di colore sono in genere relativi all’applicazione  RGB - monitor  CMYK – cyan, magenta, yellow, black – stampanti

19 Elaborazione delle Immagini Introduzione 19 Modelli di colore  YIQ – luminance, inphase, quadrature – tv color  HIS – hue, saturation, intensity  HSV - hue, saturation, value

20 Elaborazione delle Immagini Introduzione 20 Altri modelli per il colore  YUV  YIQ

21 Elaborazione delle Immagini Introduzione 21 Altri modelli per il colore  HSV  H è il colore dominante -0° rosso, 120° verde, 240° blu  S (saturazione – cioè intensità di colore) -0 è un tono di grigio

22 Elaborazione delle Immagini Introduzione 22 HSV H S V Rosso Giallo Verde Ciano BluMagenta 0°: 255, 0, 0 60°: 255, 255, 0 120°: 0, 255, 0 180°: 0, 255, 255 240°: 0, 0, 255 300°: 255, 0, 255 Bianco Bianco: H indefinito, 255, 255, 255

23 Elaborazione delle Immagini Introduzione 23 Altri modelli per il colore  rgb  r = R/(R+G+B)  g = G/(R+G+B)  b = B/(R+G+B)  È una rappresentazione normalizzata rispetto all’intensità luminosa (r+g+b=1)

24 Elaborazione delle Immagini Introduzione 24 Immagini bitmap (bmp) typedef struct { short magic; /* "BM" */ long file_dim; /* dimensione file */ long l0; /* 0 */ long header_dim; /* dimensione header */ long l40; /* 40 */ long xsize; /* numero colonne */ long ysize; /* numero righe */ short nchan; /* 1 */ short zsize; /* 1-4-8-24 */ long compression; /* 0 -> non compresso */ long data_dim; /* dimensione dati */ long xppi; long yppi; long colors; /* dimensione lut */ long colors1; } bmp_header; Struttura del file: intestazione, lut dei colori utilizzati dati dell’immagine per righe (le righe devono essere di dimensione multipla di 4 byte)

25 Elaborazione delle Immagini Introduzione 25 Immagini portable gray map (pgm) Struttura del file: prima riga “P5” un numero arbitrario (anche 0) di righe di commento che iniziano con “#” una riga contenente numero di colonne e numero di righe un numero arbitrario (anche 0) di righe di commento che iniziano con “#” una riga contenente il valore massimo del range (normalmente 255) i dati dell’immagine (1 byte per pixel)

26 Elaborazione delle Immagini Introduzione 26 Immagini portable pixel map (ppm) Struttura del file: prima riga “P6” un numero arbitrario (anche 0) di righe di commento che iniziano con “#” una riga contenente numero di colonne e numero di righe un numero arbitrario (anche 0) di righe di commento che iniziano con “#” una riga contenente il valore massimo del range (normalmente 255) i dati dell’immagine (3 byte per pixel, terne RGB: valore per il colore rosso, verde, blu)

27 Elaborazione delle Immagini Introduzione 27 Immagini gif Permettono di memorizzare immagini con al più 256 colori diversi Iniziano con “GIF89a” Segue un header con le informazioni sulla struttura dell’immagine (righe, colonne, numero di colori, …) Una tabella di lut con le terne corrispondenti ai colori utilizzati i dati dell’immagine (logicamente 1 byte per pixel) in formato compresso

28 Elaborazione delle Immagini Introduzione 28 Immagini gif  Immagine “ppm” circa 290 Kb  Immagine “gif” circa 53 Kb  N.B.  a partire dalla “gif” è possibile riottenere l’immagine “ppm” di partenza  Non si ha perdita di informazione

29 Elaborazione delle Immagini Introduzione 29 Immagini jpg  Si scompone l’immagine a colori in blocchi di 16x16 pixel, si fa una analisi in frequenza del blocco e si eliminano le alte frequenze (che l’occhio umano non percepisce bene)  Se le immagini devono essere utilizzate da un osservatore umano il risultato è generalmente ottimo: buon aspetto e pochi dati da trasmettere/memorizzare

30 Elaborazione delle Immagini Introduzione 30 Immagini jpg  Immagine “ppm” circa 290 Kb  Immagine “jpg” circa 25 Kb non  N.B.  a partire dalla “jpg” non è possibile riottenere l’immagine “ppm” di partenza  Si ha perdita di informazione  Il grado di compressione (ma quindi anche la perdita di informazione) è un parametro del processo di trasformazione

31 Elaborazione delle Immagini Introduzione 31 Immagini a colori e Java  Java normalmente utilizza un int per trattare immagini: il byte meno significativo per la componente blu, poi la verde, quindi la rossa  Il byte più significativo (componente alfa) è il grado di trasparenza del pixel (255 pixel opaco, 0 pixel trasparente cioè invisibile)

32 Elaborazione delle Immagini Introduzione 32 Immagini a colori e Java  Dato il valore (V) di un pixel per ottenere le singole componenti normalmente si procede:  R = (V >> 16) & 255;// R = (V/0x10000) & 255  G = (V >> 8) & 255;  B = (V) & 255;  In modo analogo l’operazione inversa  V = (R<<16) | (G<<8) | (B) | 0xff000000;  L’ultimo termine è necessario per avere un pixel opaco  ovviamente si deve avere: 0  R,G,B  255)

33 Elaborazione delle Immagini Introduzione 33 Immagini a toni di grigio  Un immagine a toni di grigio è una immagine in cui le tre componenti sono uguali  Un metodo intuitivo per operare la trasformazione  grigio è G = (R+G+B)/3  Dato che l’occhio ha una sensibilità diversa per I diversi colori si preferisce una media pesata  Una scelta frequente è G = 0.299*R + 0.587*G + 0.114*B

34 Elaborazione delle Immagini Introduzione 34 Istogramma  La prima elaborazione che vediamo è l’istogramma  L’operazione di calcolo dell’istogramma è il conteggio del numero di volte che ogni valore è presente nell’immagine  Il risultato è perciò un vettore di interi  Dal punto di vista della programmazione significa scandire l’intera immagine e per ogni pixel incrementare un elemento opportuno del vettore -Istogramma[ immagine[i][j] ]++

35 Elaborazione delle Immagini Introduzione 35 Istogramma

36 Elaborazione delle Immagini Introduzione 36 Un primo programma import java.awt.*; import java.awt.image.*; import java.applet.Applet; public class IstogrammaApplet extends Applet { private Image image; private ImageCanvas imageCanvas; private Panel panel; private TextArea text; public void init() { String image_file = getParameter("IMAGEFILE"); image = getImage(getDocumentBase(), image_file); while(image.getWidth(this)<0); Dimension imageSize = new Dimension( image.getWidth(this), image.getHeight(this)); imageCanvas = new ImageCanvas(image, imageSize); int[] pixels = ImageCanvas.grabImage(image, imageSize); panel = new Panel(new GridLayout(1,2,10,10)); text = new TextArea(20,5); panel.add(imageCanvas); panel.add(text); add(panel); text.setText((new Istogramma(pixels)).toString()); }

37 Elaborazione delle Immagini Introduzione 37 Un primo programma class Istogramma { private int histo[] = new int[256]; public String toString() { String text = ""; for(int i=0; i<256; i++) { text += i+" "+histo[i]+'\n'; } return text; } public Istogramma(int[] rgb) { for(int i=0; i<rgb.length; i++) { int tmp = (int) ( (((rgb[i] & 0xff0000)>>16) * 0.299) + (((rgb[i] & 0x00ff00)>>8 ) * 0.587) + (((rgb[i] & 0x0000ff) ) * 0.114) ); histo[tmp]++; } public int getValueAt(int index) { return histo[index]; }

38 Elaborazione delle Immagini Introduzione 38 Un primo programma public class ImageCanvas extends Canvas { static final int MIN_WIDTH = 64; static final int MIN_HEIGHT = 64; private Image image; private Dimension size; public ImageCanvas(Image img, Dimension dim) { super(); image = img; size = dim; } public Dimension getMinimumSize() { return new Dimension(MIN_WIDTH, MIN_HEIGHT); } public Dimension getPreferredSize() { return new Dimension(size); } public void paint(Graphics g) { g.drawImage(image, 0, 0, getBackground(), this); }

39 Elaborazione delle Immagini Introduzione 39 Un primo programma static public int[] grabImage(Image image, Dimension size) { int[] data = new int[size.width * size.height]; PixelGrabber pg = new PixelGrabber( image, 0, 0, size.width, size.height, data, 0, size.width); try { pg.grabPixels(); } catch (InterruptedException e) { System.err.println( "ImageSampler: interrupted while grabbing pixels"); return null; } if ((pg.status() & ImageObserver.ABORT) != 0) { System.err.println( "ImageSampler: pixel grab aborted or errored"); return null; } return data; }

40 Elaborazione delle Immagini Introduzione 40 Un primo programma Istogramma Istogramma <applet name="IstogrammaApplet" code="IstogrammaApplet.class" width="800" height="500" alt="If you had a java-enabled browser, you would see an applet here." >

41 Elaborazione delle Immagini Introduzione 41 Un primo programma


Scaricare ppt "Elaborazione delle Immagini Introduzione Elaborazione di Immagini Luigi Cinque"

Presentazioni simili


Annunci Google