analisi di immagini e dati biologici intensity transformations 58 l3-1

58
Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Upload: felisa-bucci

Post on 01-May-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Analisi di Immagini e Dati Biologici

Intensity Transformations

58L3-1

Page 2: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Analisi di Base

Assumiamo che le nostre immagini siano Immagini di intensità di luminosità (grayscale) Rappresentate da

Interi senza segno [0...255] (uint8) Oppure virgola mobile doppia precisione (double) [0...1]

Page 3: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Conversione a grayscale

Octave/Matlab usano la funzione rgb2gray → rgb2gray accetta come argomento una matrice

RGB (NxMx3) → Il risultato preserva la rappresentazione binaria

(uint8->uint8 etc.) → Il risultato è una matrice NxM dove per ogni pixel la

terna (R,G,B) è sostituito da un unico valore di luminosità rappresentato dalla luminanza di quel colore ottenuta con la funzione rgb2ntsc

La luminanza è definita da una formula che tiene in considerazione la struttura del nostro sistema percettivo

Y = 0.299*R+0.587*G+0.114*B

Page 4: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Conversione a 'double'

→ mat2gray: accetta una matrice come argomento Esegue una redifinizione di scala e rappresentazione

binaria restituisce una matrice di identica dimensione con

rappresentazione binaria 'double' i valori di intensità sono compresi nell'intervallo [0...1] La funzione accetta un secondo argomento per

immagini che hanno un range non standard e lo prende come riferimento

Se l'argomento è una matrice RGB (NxMx3) mat2gray opera indipendentemente su ciascun piano di colore

Page 5: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Caratterizzazione di Base della Qualità: istogrammi

L'istogramma Metodo basilare di caratterizzazione di un'immagine L'istogramma mostra la distribuzione all'interno del

range di luminosità dello strumento dei valori dei pixel Applicazione:

Esposizione: per immagini fotografiche l'istogramma permette di capire se l'immagine sarà sovraesposta o sottoesposta

Contrasto: analisi, correzione Analisi della dinamica

Page 6: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Histograms

L'istogramma si calcola percorrendo tutti i pixel e contando quanti pixel hanno un determinato valore

Page 7: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

La somma dei valori dell'istogramma (integrale) è NxM (=numero di pixel dell'immagine)

Semplice da calcolare per immagini uint8

Per immagini in con bit depth 16 o superiore si ricorre al binning

Page 8: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

L'istogramma non è l'equivalente di un impronta digitale di un immagine

Immagini completamente diverse possono avere istogrammi simili

Si può costruire ad arte immagini con identico istogramma

Page 9: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Problemi con l'esposizione: Settori di un istogramma inutilizzati, altri con frequenza

di valori troppo alta Soprattutto per i valori di luminosità elevata

l'istogramma rileva problemi di sovraesposizione

Page 10: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Page 11: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Imagine Histogram Contrasto

Range effettivamente usato dei valori di un immagine Differenza tra valore massimo e valore minimo

dell'intensità

Page 12: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Page 13: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Dinamica di un immagine (Dynamic Range) La dinamica di un'immagine è data dal numero di valori

di pixel distinti usati nell'immagine Maggiore è la dinamica allora maggiore...

La capacità di risoluzione di differenze (in linea di principio) La capacità di miglioramento della qualità in caso di difetti di

esposizione o mancanza di contrasto La possibilità di preservare qualità dell'immagine anche dopo

compressione o altre elaborazioni

Page 14: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Contrasto vs. Dinamica Il contrasto può essere modificato alterando

opportunamente i valori dei pixel La dinamica è una caratteristica costitutiva di

un'immagine Il miglioramento della dinamica richiede tecniche di

manipolazione che introducono 'nuovi' valori di pixel

Page 15: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Alterazione della Dinamica

Page 16: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

Saturazione La saturazione avviene quando i valori di pixel agli

estremi della dinamica della fotocamera sono eccessivamente popolati

Inevitabile se il range di luminosità della scena/oggetto sono più grandi della dinamica del sensore

Page 17: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram: alterazioni L'istogramma è un metodo semplice per rivelare

alterazioni dovute a processing Effetto dell'espansione/riduzione del contrasto

Page 18: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram: alterazioni

Alterazioni legate alla compressione Esempio: immagine compressa dopo essere stata

salvata in un file GIF

Page 19: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram: alterazioni

Alterazione dovute a compressione Esempio: immagine 'semplice' alterata dalla

compressione interna al formato JPEG

Page 20: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Image Histogram

La funzione imhist di Octave/Matlab

octave:5> img=imread('cameraman.tif'); octave:6> imshow(img)octave:7> clfoctave:8> imhist (img)

Page 21: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Istogramma da Immagine di microscopia AF

L'istogramma di un immagine può dipendere dal tipo di tecnica usata per la raccolta di informazioni

Page 22: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Istogramma da Immagine di microscopia AF

Istogramma logaritmico

img=imread('afpict.tiff');[counts,x]=imhist(img);stem(x,log10(counts))

Page 23: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Point Operation

Ogni valore di pixel viene trasformato secondo una legge che dipende dal valore del pixel stesso dalle coordinate del pixel (legge non-omogenea)

L'effettiva forma della trasformazione può dipendere dal primo o entrambi i criteri

Page 24: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Point Operation

Inversione di un immagine Nell'inversione di un immagine ogni valore di pixel viene

trasformato nel suo 'complementare' Per eseguire correttamente l'operazione si deve

conoscere amax che dipende dal formato interno (double, unit8, unit16)

Il package octave-image ha la funzione imcomplement

Page 25: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Inversione della luminosità

Codice octaveoctave:14> clfoctave:15> imread('cameraman.tif')octave:16> imshow(img)octave:18> class(img)ans = uint8octave:19> invimg=255-img;octave:20> imshow(invimg)

Page 26: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Inversione della luminosità

Il nostro occhio non ha sensibilità costante alle differenze a tutte le luminosità La capacità di discriminazione dell'occhio umano è più alta

quando le intensità sono più basse

Page 27: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Alterazione della luminosità/contrasto

Usando le operazione scalare-matrice Moltiplicazione: modifica del contrasto perchè cambia in

modo diverso valori di pixel diversi Addizione: modifica della luminosità perché 'sposta' tutti

i pixel dello stesso valore Se applicate usando la formula algebrica si deve tenere

conto dei limiti imposti dalla rappresentazione

Page 28: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione luminosità

Limiti specifici dei valori di intensità di un pixel imposti dalla rappresentazione interna

Le operazioni di moltiplicazione e addizione di uno scalare in generale non garantiscono il rispetto di questi limiti Octave forza gli elementi di variabili e matrici uint8 ad

essere all'interno del range [0...255] Sulle matrici di intensità in formato double invece i

vincoli all'interno dell'intervallo [0,1] devono essere forzati

Page 29: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Luminosità

Esercizio: codice per manipolazione della luminosità di un'immagine Strategia: percorrere tutti i pixel e applicare a ciascuno

di essi la trasformazione di intensità Approccio: usare due cicli for...endfor annidati

Un ciclo per l'indice di riga Un ciclo per l'indice di colonna

I cicli for...endfor definiscono un blocco di linee di codice che devono essere eseguite N volte

Page 30: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

% leggiamo l'immagine dal file

img=imread('afmicro.tiff');

% convertiamo l'immagine in un immagine grayscale

imggr=rgb2gray(img);

% questa operazione modifica la classe di imggr da uint8 a double

imggr=mat2gray(imggr);

% fattore di alterazione dell'intensità

fattore= 1.2;

% creiamo una matrice di identica dimensione

imgnuova=zeros(size(imggr));

% Si procede con la modifica di ogni pixel verificando% che il risultato sia vincolato all'interno dell'intervallo% dei valori propri della rappresentazione di questa immagine (clamping)

[righe colonne] = size(imggr);for riga=1:righe for colonna=1:colonne nuovo_pixel = fattore * imggr(riga,colonna); if (nuovo_pixel > 1) nuovo_pixel = 1; endif

% se il fattore fosse negativo si dovrebbe verificare % anche il caso nuovo_pixel < 0 e imporre che sia uguale a zero. % In questo esempio senza pretese di generalità sappiamo che % fattore > 0

imgnuova(riga,colonna) = nuovo_pixel; endforendfor

Page 31: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Luminosità

Secondo approccio Applicare la formula a tutta la matrice dell'immagine Selezionare gli indici degli elementi che escono dal

range ammesso Assegnare ad essi il valore limite

Page 32: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione luminosità% leggiamo l'immagine dal file, la convertiamo in un immagine 'grayscale'% e quindi fissiamo il valore del fattore di alterazione dell'intensità% luminosa

img=imread('picts/afmicro.tiff');imggr=rgb2gray(img);

% questa operazione modifica la classe di imggr% da uint8 a double

imggr=mat2gray(imggr);fattore= 1.2;

imgnuova = fattore * imggr;

% immagine binaria dei pixel che eccedono i valori tra [0...1]

overshoots = imgnuova > 1;

% la sintassi di octave accetta una matrice binaria come argomento% delle parentesi di una matrice, eseguendo un assegnazione solo % agli elementi corrispondenti agli 1

imgnuova(overshoots) = 1;

Page 33: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Trasformazione Logaritmica

Più interessante la trasformazione logaritmica

Iout=C*ln(1+a*Iin(u,v))

Regioni a luminosità più bassa acquistano dinamica a scapito delle regioni più luminose

La costante a determina la curvatura

La costante C determina la normalizzazione in base al valore massimo di I(u,v)

Page 34: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Trasformazione Logaritmica

Page 35: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Trasformazione Esponenziale

Iout=C*((1+a)Iin(u,v) -1)

Regioni a luminosità più alta acquistano dinamica a scapito delle regioni meno luminose

Page 36: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Trasformazione Esponenziale

Page 37: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Thresholding

Selezione di regioni di un immagine in base ad un valore di soglia (threshold) di luminosità Determinazione 'manuale': composizione di una

immagine binaria a partire da un confronto tra la matrice dell'immagine e un valore di soglia

La soglia determina cosa è da considerare sfondo (background) oppure oggetto

Determinazione in base a vari criteri tramite la funzione graythresh

Page 38: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Thresholding: Otsu method

Default per graythresh Assumiamo che l'istogramma abbia un solo massimo Ogni valore di intensità definisce 2 regioni

dell'istogramma La soglia calcolata con il metodo di Otsu è il valore di

intensità che massimizza la varianza interclasse (e minimizza la varianza intraclasse)

Page 39: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Thresholding con il Metodo di Otsu

im = imread('rice.png');im = mat2gray(im);level = graythresh(im);imb = im2bw(im,level);imshow(imb)

Page 40: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Thresholding: confronto di vari metodi Confronto tra immagine originaria e thresholding con

Otsu Intermodes Intermeans MaxEntropy

Page 41: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modifica del Contrasto

Page 42: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modifica automatica del Contrasto

Il valori dei pixel vengono modificati in modo che il contrasto occupi tutto il range di valori disponibili

Idealmente il valore amin

dovrebbe essere riportato a 0, mentre il valore a

maxdovrebbe essere riportato a 255

per un immagine uint8 con una legge di proporzionalità

Page 43: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modifica Automatica Contrasto

Page 44: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modifica Automatica del Contrasto

Page 45: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modifica del Contrasto

La formula di modifica automatica è sensibile singoli pixel troppo luminosi o troppo scuri Si prende quindi una frazione di tutti i pixel e si fa in

modo che essa venga saturata entro 2 limiti ragionevoli di valore dell'intensità

Si applica su una distribuzione così modificata la trasformazione proporzionale del contrasto

Page 46: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modified Auto-Contrast

Page 47: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modified Auto-Contrast

img=imread(...);imgadj=imadjust(img);

La funzione imadjust 'satura' l'1% dei pixel ad entrambe le code della distribuzione ed mappa il resto dell'immagine sull'intervallo [0...1]. L'immagine deve essere quindi rappresentata con questa scala e in formato double

Page 48: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Modified Auto-Contrast

Page 49: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Histogram equalization

Confronto accurato di immagini analoghe Ricalcolare istogrammi in modo che sia paragonabili

Analoga struttura Stesso contrasto

Varie tecniche a disposizione Equalizzazione: riportare ad un andamento dato

Uniforme Iperbolica

Specificazione: imporre l'istogramma di una immagine data

Page 50: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Equalizzazione

Strategia: si parte dal presupposto che una immagine di buona qualità ha un istogramma con una distribuizione (quasi) uniforme la distribuizione dei pixel non essendo continua non è

possibile realizzare una distribuzione realmente Si usa una soluzione approssimata dove l'istogramma

finale ha una distribuzione quasi uniforme solo “in media”

Page 51: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Equalizzazione Uniforme

Page 52: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Equalizzazione Uniforme

Page 53: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Equalizzazione Uniforme

Function File: J = histeq (I, n)

Histogram equalization of a gray-scale image. The histogram contains n bins, which defaults to 64.

I: Image in double format, with values from 0.0 to 1.0

J: Returned image, in double format as well See also: imhist

Package: image

Page 54: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Contrasto: altri approcci

Histogram specification L'istogramma di

un immagine è rimodulato in modo che abbia un andamento dato

Gli istogrammi cumulativi servono a rimappare i valori

Page 55: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Contrasto: altri approcci

Imposizione dell'istogramma (cumulativo) secondo un andamento linare a tratti

Page 56: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Contrasto: altri approcci

Page 57: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Contrasto: altri approcci

Page 58: Analisi di Immagini e Dati Biologici Intensity Transformations 58 L3-1

Manipolazione Contrasto: altri approcci

Aggiustamento secondo un istogramma dato: l'istogramma della funzione originale viene collocato all'interno della funzione cumulativa di un istogramma dato