Image Processing Toolbox. Imaging Digitale a.a. 2014/2015 Silvia Corchs

Documenti analoghi
Image Processing Toolbox. Imaging Digitale a.a. 2015/2016

Digital Imaging Esercitazione TTC 12/11/2015

Introduzione a Matlab. Imaging Digitale a.a. 2015/2016 Silvia Corchs

Introduzione a Matlab. Imaging Digitale a.a. 2014/2015 Silvia Corchs

Esercitazione 4: Filters

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio 4 Agosto L.3.1. Elaborazione delle Immagini in MATLAB

Introduzione a Matlab

Introduzione a Matlab

Elaborazioni nel dominio spaziale (1)

Operatori nel dominio dello spazio

L istogramma. Interazione & Multimedia 2

Elaborazioni nel dominio spaziale (1)

Operatori locali. Operatori locali. Q=f(P,w)

Laboratorio di Elaborazione di Dati, Segnali e Immagini Biomediche (Parte 6)

Trasformare e migliorare

Elementi di grafica raster

Operatori locali su immagini digitali

Telerilevamento e Modellistica Forestale

Le immagini sono array. I diversi elemen2 dell array descrivono i valori dei diversi pixel.

Introduzione a Matlab

Elaborazione di immagini. Trasformare e migliorare. Scopi dell elaborazione. Tipi di elaborazione

Elaborazione di immagini digitali: trasformare e migliorare

Introduzione a Matlab

Elaborazione dei dati

Elaborazioni nel dominio spaziale (2)

Filtraggio. Stefano Ferrari. Università degli Studi di Milano Tecniche di calcolo e sistemi operativi e informatica

Le immagini sono array. I diversi elemen2 dell array descrivono i valori dei diversi pixel.

Operatori locali su immagini digitali

Elaborazione di immagini. I filtri Digital Image Processing

Cenno al trattamento delle immagini digitali. Cartografia numerica e GIS Domenico Sguerso

Tecniche di enfatizzazione

Operatori locali. Analisi di basso livello

Elaborazione dei dati. pkt /9

Filtraggio spaziale Soluzioni

Trasformazioni di intensità Filtraggio spaziale. 31/03/2010 Francesca Pizzorni Ferrarese

Image Processing 2. Dispense del corso di Elaborazione di Immagini e Audio Digitali. Prof. Roberto Vezzani.

Dato un vettore di lunghezza N, questo può essere pensato come un elemento di uno spazio N dimensionale.

Equalizzazione di istogrammi

Filtering. Maschera di contrasto - Carica un immagine (16 o 48 bit): Lancia il comando Unsharp mask dal menu Processing:

Sharpening mediante filtraggio spaziale

Istogramma dei livelli di grigio

Operazioni sulle immagini digitali

ELABORAZIONE DELLE IMMAGINI:

Interpolazione di immagini

MATLAB - Introduzione. Antonino Polimeno

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Tecniche di restauro delle immagini digitali

Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione al MATLAB c Parte 1 Variabili ed array

Estrazione dei bordi

SEGMENTAZIONE DI IMMAGINI. Elaborazione dei Segnali Multimediali Raffaele Gaetano 06 Maggio 2014

Classificazione di immagini aeree. Annalisa Franco

Trasformazioni di Intensità e Filtraggio Spaziale

Le immagini digitali. Introduzione

Trasformazioni di Intensità e Filtraggio Spaziale

Laboratorio di Segnali e Sistemi A. A. 2009/ Lezione 5: Immagini

Soluzioni esercizi. 29) a 30) aliasing 31) e 32) d 33) a 34) c 35) a 36) c 37) a 38) a 39) b 40) c

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

Istogramma dei livelli di grigio

Corso di Multimedia A.A 2013/2014

Tecnologie informatiche per il suono e l immagine Esercitazioni Immagini Vincenzo Lombardo Aggiornato a.a. 2013/14

Metodi numerici con elementi di Programmazione A.A

L2 Elaborazione di immagini in C/C++

Video Parte 4a. Stabilizzazione. Multimedia

HISTOGRAM MATCHING Di Raimondo Graziano - Nicolosi Salvatore Multimedia A.A

Elaborazione di Segnali Multimediali a.a. 2017/2018. Segmentazione

F. Milotta Ph.D. Student

Elaborazione di immagini a colori Soluzioni

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

Immagini digitali. Annalisa Franco

Processamento delle immagini

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Elaborazione dei Segnali Multimediali a.a. 2009/2010. Segmentazione

Capitolo 3 TRASFORMAZIONI DI INTENSITA' E FILTRAGGIO SPAZIALE

Matlab: Script e Funzioni

Corso di laurea magistrale in Informatica Multimedia - Prof. F.Stanco. Segmentazione. A cura di Andrea Tambone

Introduzione al MATLAB c Parte 2

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: lezione introduttiva

Filtraggio nel Dominio della Frequenza

Lezione 3: Elaborazione delle immagini (2)

Operazioni sulle immagini. Multimedia

Printer Driver. Questa guida descrive la configurazione del driver stampante per Windows 7, Windows Vista, Windows XP e Windows 2000.

Operazioni puntuali. Tipi di elaborazioni Operatori puntuali Look Up Table Istogramma

Elaborazioni nel dominio spaziale (1)

Elaborazione di immagini a colori

Elementi di MATLAB. Definizione di matrice

Printer Driver. Guida per la configurazione. Questa guida descrive come configurare il driver della stampante per Windows Vista e Windows XP.

TUTORIAL DI REGISTAX 6

Processamento di immagini

LL. MM. in Informatica e Fisica A.A Diagnostica per immagini. 8 Trattamento delle immagini mediche

PIXEL. Il valore quantizzato misurato da ciascun sensore diventa un. PICTURE ELEMENT = PIXEL dell immagine. Interazione & Multimedia

Elaborazione delle immagini

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Transcript:

Imaging Digitale a.a. 2014/2015 Silvia Corchs

Operazioni sulle immagini Lettura variabile=imread(nomefile) Scrittura imwrite(variabile,nomefile,parametri) Informazioni imfinfo(nomefile,parametri) Visualizzazione imshow(variabile) imagesc(variabile) imageview(variabile)

q=5 q=10 q=30 q=50

Le immagini sono viste come matrici di uint8 Immagini a colori sono matrici MxNx3 Immagini a livelli di grigio sono matrici MxN La maggior parte delle operazioni su matrici in MATLAB sono definite su double Necessario trasformare uint8 in double im2double trasforma tutte le matrici in double (tra 0 e 1). im2uint8 trasforma tutte le matrici (double) in uint8 (tra 0 e 255). Esistono diverse funzioni specifiche per le immagini imhist, imadd, imsubtract, imrotate, imresize,

>> R=im(:,:,1); Canale Red >> G=im(:,:,2); Canale Green im >> B=im(:,:,3); Canale Blue >> whos Name Size Bytes Class B 512x768 393216 uint8 G 512x768 393216 uint8 R 512x768 393216 uint8 im 512x768x3 1179648 uint8 Canale R Canale G Canale B

out(:,:,1)=g; out(:,:,2)=b; out(:,:,3)=r; % canale Red % canale Green % canale Blue originale out

im1 im2 gray=rgb2gray(im1) gray=rgb2gray(im2) 8

imadd(im,im2) imsubtract(im,im2) imlincomb(0.2,im1,0.8,im2); imlincomb(0.7,im1,0.3,im2); 9

Ridimensionamento delle immagini: imresize diverse modalità di scaling possibili: Nearest Il valore di destinazione è quello del pixel più vicino Bilineare Il valore di destinazione è determinato da una media pesata dei 4 più vicini Bicubico Il valore di destinazione è determinato da una media pesata dei 16 più vicini

>> out = imresize(immagine,m,metodo) L immagine di output ha dimensioni (n*m,m*m) Metodo= nearest, bilinear o bicubic >> out = imresize(immagine,[righe COLONNE],metodo) L immagine di output ha dimensioni (righe,colonne) Se le nuove dimensioni hanno rapporto diverso da quelle originali, l immagine è distorta Quando viene fatto un downscaling con i metodo bilinear o bicubic, viene prima eseguito di default un filtro di anti-aliasing di dimensione NxN >> out = imresize(immagine,[righe COLONNE],metodo,N) N=0 nessun filtro anti-aliasing

Sottocampionamento 128x128, M=1/4 64x64, M=1/8 out=imresize(im,m, nearest )

Ricampionamento a 512x512 dalla 256x256 Originale 512x512 512x512 512x512 im512=imresize(im256, nearest ) 512x512 im512=imresize(im256, bilinear ) Francesca Gasparini

Ricampionamento a 512x512 dalla 128x128 Originale 512x512 512x512 512x512 512x512 im512=imresize(im128, nearest ) im512=imresize(im128, bilinear ) Francesca Gasparini

Ricampionamento a 512x512 dalla 64x64 Originale 512x512 512x512 512x512 512x512 im512=imresize(im64, nearest ) im512=imresize(im64, bilinear ) Francesca Gasparini

Inversione scala di grigio: s L 1 r 0 r L 1 im gray=rgb2gray(im) neg = 255-gray Sogliatura >> out=gray; >> out(gray>100)=255; >> out(gray<100)=0; >> figure, imshow(out) 16

Istogramma: imhist Visualizza l istogramma di una immagine intensità imshow(rgb2gray(immagine)) imhist(rgb2gray(immagine))

Immagine ben contrastata

Immagini poco contrastate

Gamma correction: out c. input c 0, 0 1 250 0.04 espansione della dinamica per bassi valori di r, compressione della dinamica per alti valori di r. 200 0.1 0.2 0.4 150 1 espansione della dinamica per alti valori di r, compressione della dinamica per bassi valori di r. 100 50 1 2.5 5 10 0 0 50 100 150 200 250

>> gray=rgb2gray(immagine); >> graynorm=im2double(gray); % è in [0,1] >> graynew=im2uint8(graynorm.^0.5); 0.5

>> gray=rgb2gray(immagine); >> graynorm=im2double(gray); % è in [0,1] >> graynew=im2uint8(graynorm.^1.7); 1.7

Applicare la gamma su tutti i canali di una immagine RGB function [out]=applygamma(in,gamma) %supponiamo di avere in input immagini a 3 canali c1=im2double(in(:,:,1)); c2=im2double(in(:,:,2)); c3=im2double(in(:,:,3)); c1=c1.^gamma; c2=c2.^gamma; c3=c3.^gamma; >> applygamma(im,1.7) out(:,:,1)=im2uint8(c1); out(:,:,2)=im2uint8(c2); out(:,:,3)=im2uint8(c3);

Equalizzazione dell istogramma: idealmente produce una immagine con istogramma piatto, cioè con livelli di grigio uniformemente distribuiti sui pixel. dark bright Low-contrast High contrast

Contrast enhancement >> J=histeq(im); >> figure, subplot(2,2,1) imshow(im); >> hold on >> subplot(2,2,2), imhist(im); >> subplot(2,2,3), imshow(j); >> subplot(2,2,4), imhist(j); im 1500 imhist(im) 1000 500 0 0 50 100 150 200 250 J=histeq(im) 2000 1500 imhist(j) 1000 500 0 0 50 100 150 200 250

Contrast stretching J = imadjust(im) >> J = imadjust(im); l'1% dei dati è saturato alle basse ed alte intensità. >> J = imadjust(im,[low_in; high_in],[low_out; high_out],gamma); [low_in; high_in]: range dei livelli di grigio dell immagine in ingresso [low_out; high_out]: range dei livelli di grigio immagine di uscita. Valori di default: sono [0 1]. gamma descrive la curva di saturazione. Default: gamma = 1

Contrast stretching Per le immagini a colori, low_in e high_in sono vettori di tre elementi: >> J = imadjust (im, [0.2 0.3 0; 0.6 0.7 1], []);

Filtraggio Image Processing Toolbox Elaborazioni locali: coinvolge i vicini di un pixel. Vengono utilizzati i filtri spaziali o le maschere di convoluzione. Maschera lineare: R è il valore calcolato rispetto al pixel centrale z5. Coinvolge gli otto vicini rispetto ai parametri di maschera w1,w9. R w z w z 1 1 2 2... z 1 z 2 z 3 z 4 z 5 z 6 z 7 z 8 z 9 w 9 z 9 9 i 1 w i z i maschera w 1 w 2 w 3 w 4 w 5 w 6 Esempio di maschere non lineare: w 7 w 8 w 9 R1=max{zk k=1,2,.,9} R2=min{zk k=1,2,.,9}

Creare filtri lineari: fspecial: h = fspecial (tipo, parametri); 'average': filtro medio; 'disk': filtro medio circolare; 'gaussian': filtro passa-basso gaussiano; 'laplacian': approssimazione dell'operatore Laplaciano; 'log': Laplaciano del filtro gaussiano; 'motion': approsimazione di un movimento della fotocamera; 'prewitt': Prewitt horizontal edge-emphasizing filter 'sobel': Sobel horizontal edge-emphasizing filter 'unsharp': filtro per l'enhancement del contrasto.

Dopo avere creato una maschera di filtraggio spaziale con la funzione fspecial si filtra l immagine con questa maschera, utilizando la funzione imfilter: >> h = fspecial( tipo ); >> out = imfilter(im,h); im >> h=fspecial('average',[5 5]) h = 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 out >> out=imfilter(im,h);

Filtro Gaussiano Image Processing Toolbox h = fspecial('gaussian',hsize,sigma) returns a rotationally symmetric Gaussian lowpass filter of size HSIZE with standard deviation SIGMA (positive). HSIZE can be a vector specifying the number of rows and columns in H or a scalar, in which case H is a square matrix. The default HSIZE is [3 3], the default SIGMA is 0.5. N=2*fix(2.5*sigma)+1 2*fix(2.5*0.5)+1 2*fix(1.25)+1=3 H = 0.0113 0.0838 0.0113 0.0838 0.6193 0.0838 0.0113 0.0838 0.0113 sum(h(:))=1

>> h1= fspecial('gaussian,[5 5],1); >> out1=imfilter(im,h1); >> h2 = fspecial('gaussian', [15 15], 3); >> out2=imfilter(im,h2); out1 im out2

Sharpening: Image Processing Toolbox >> f=fspecial('unsharp') f = -0.1667-0.6667-0.1667-0.6667 4.3333-0.6667-0.1667-0.6667-0.1667 0.5 1 1.5 2 2.5 4 3.5 3 2.5 2 1.5 1 >> imagesc(f); >> colorbar; >> out=imfilter(im,f); im 3 3.5 0.5 1 1.5 2 2.5 3 3.5 out 0.5 0-0.5

>> f=fspecial('laplacian') f = 0.1667 0.6667 0.1667 0.6667-3.3333 0.6667 0.1667 0.6667 0.1667 >> out=imfilter(im,f); >> figure, imshow(out) im out

Filtri speciali: Edge >> out=edge(rgb2gray(im),'sobel'); Canny Laplacian of Gaussian

Filtri non lineari: Image Processing Toolbox medfilt2 Filtro mediano ordfilt2 Filtro ad ordinamento statistico ordfilt2(im,5,ones(3,3)) Filtro mediano (su 3x3) ordfilt2(im,1,ones(3,3)) Filtro di minimo (su 3x3) ordfilt2(im,9,ones(3,3)) Filtro di massimo (su 3x3) Il filtro mediano per ciascuna finestra di dimensione nxn dell immagine, ordina i pixel in essa contenuti e ne seleziona il valore mediano, che viene sostituito alla posizione corrente.

im mediano differenza

ordfilt2(im,9,ones(3,3)) im max ordfilt2(im,1,ones(3,3)) min

Esercizio 4 Creare una funzione showhist che data una immagine a livelli di grigio, la visualizza in un finestra con il suo istogramma. imshow, subplot, imhist, bar/plot Introduzione a MATLAB - Image Processing Toolbox 39

Esercizio 5 Caricate l immagine aerial.jpg, trasformatela a livelli di grigio e visualizzatene l istogramma con la funzione creata showhist.m Osservate e commentate l istogramma Modificate il contrasto dell immagine usando la funzione imadjust. Questa funzione rimappa linearmente il range di valori dell immagine in un nuovo range Guardando l istogramma dell immagine originale scegliete opportunamente gli intervalli di valori da rimappare per incrementare i dettagli osservabili. Introduzione a MATLAB - Image Processing Toolbox 40

Esercizio 6 Modificate il contrasto dell immagine usando la funzione histeq di MATLAB. Questa funzione rimappa i valori dell immagine tramite equalizzazione dell istogramma Visualizzate l istogramma dell immagine equalizzata Osservate e commentate l istogramma Confrontate tra loro gli istogrammi delle due immagine modificate Introduzione a MATLAB - Image Processing Toolbox 41

Esercizio 7 Modificate il contrasto dell immagine usando il metodo della gamma correction Ricordate che l immagine deve avere valori compresi tra 0 e 1. Determinate un valore opportuno di e correggete l immagine Visualizzate l istogramma dell immagine corretta Osservate e commentate l istogramma Confrontate tra loro gli istogrammi delle tre immagine modificate Introduzione a MATLAB - Image Processing Toolbox 42

Esercizio 8 Recuperate i comandi dell esercizio precedente e metteteli in un file di script. Eseguite l esercizio precedente per le seguenti immagini: pyramids.jpg, isola.jpg mercpulci.jpg Quale delle 3 metodologie di correzione del contrasto funziona meglio per ciascune delle tre immagini? Perche? Introduzione a MATLAB - Image Processing Toolbox 43

Esercizio 9 Aiutandovi con l help, create dei filtri spaziali con fspecial Testate l effetto di alcuni dei filtri creati caricando delle immagini a scelta Quale filtro è più indicato per elaborare le seguenti immagini? - Castle.gif - Castle2.gif - Casaneve.jpg Introduzione a MATLAB - Image Processing Toolbox 44

Esercizio 10 Un esempio di filtro non lineare è il filtro mediano medfilt2 Testate il filtro mediano sulle seguenti due immagini: Tree1.tif Tree2.tif In quale delle due immagini il filtro funziona meglio? Provate ad aplicare più volte un filtro mediano 3x3. Che considerazioni potete fare sul risultato?

Esercizio 11 Usare la funzione edge che applica diverse metodologie per creare un immagine binaria degli edge (vedere help) 1. Sobel 2. Prewitt 3. Roberts 4. Log 5. Canny Testate alcune metodologie sull immagine rat.jpg confrontando i resultati